Skip to content

Instantly share code, notes, and snippets.

@timelyportfolio
Last active December 3, 2016 15:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timelyportfolio/167c31b928ea5ac5bf61dcdf9b61b6f5 to your computer and use it in GitHub Desktop.
Save timelyportfolio/167c31b928ea5ac5bf61dcdf9b61b6f5 to your computer and use it in GitHub Desktop.
vue element components (tree) in R
license: mit
scrolling: yes

Just to make sure vueR gets equal treatment with reactR (see example) I thought I should post this quick example of using the very nice element components. vueR is still in its infancy, but I think I am starting to settle on a pattern. Vuejs actually seems to work better than React in my R toolchain/workflow.

example

bl.ock

code

library(htmltools)

#devtools::install_github("timelyportfolio/vueR")
library(vueR)

element <- htmlDependency(
  name = "element",
  version = "1.0.3",
  src = c(href="https://unpkg.com/element-ui/lib"),
  script = "index.js",
  stylesheet = "theme-default/index.css"
)


rhd <- treemap::random.hierarchical.data()
tl_tree <- tagList(
  tags$div(
    id = "app",
    tag(
      "el-tree",
      list(
        ":data" = "data",
        ":props" = "defaultProps",
        "@node-click" = "handleNodeClick"
      )
    )
  ),
  vue(
    list(
      el="#app",
      data = list(
        data = d3r::d3_nest(
          rhd,
          value_cols="x"
        ),
        defaultProps = list(
          'children' = 'children',
          'label' = 'id'
        )
      ),
      methods = list( handleNodeClick = htmlwidgets::JS("function(data){console.log(data)}" ) )
    )
  )
)

browsable(
  attachDependencies(
    tl_tree,
    list(
      element
    )
  )
)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<script src="data:application/x-javascript;base64,KGZ1bmN0aW9uKCkgew0KICAvLyBJZiB3aW5kb3cuSFRNTFdpZGdldHMgaXMgYWxyZWFkeSBkZWZpbmVkLCB0aGVuIHVzZSBpdDsgb3RoZXJ3aXNlIGNyZWF0ZSBhDQogIC8vIG5ldyBvYmplY3QuIFRoaXMgYWxsb3dzIHByZWNlZGluZyBjb2RlIHRvIHNldCBvcHRpb25zIHRoYXQgYWZmZWN0IHRoZQ0KICAvLyBpbml0aWFsaXphdGlvbiBwcm9jZXNzICh0aG91Z2ggbm9uZSBjdXJyZW50bHkgZXhpc3QpLg0KICB3aW5kb3cuSFRNTFdpZGdldHMgPSB3aW5kb3cuSFRNTFdpZGdldHMgfHwge307DQoNCiAgLy8gU2VlIGlmIHdlJ3JlIHJ1bm5pbmcgaW4gYSB2aWV3ZXIgcGFuZS4gSWYgbm90LCB3ZSdyZSBpbiBhIHdlYiBicm93c2VyLg0KICB2YXIgdmlld2VyTW9kZSA9IHdpbmRvdy5IVE1MV2lkZ2V0cy52aWV3ZXJNb2RlID0NCiAgICAgIC9cYnZpZXdlcl9wYW5lPTFcYi8udGVzdCh3aW5kb3cubG9jYXRpb24pOw0KDQogIC8vIFNlZSBpZiB3ZSdyZSBydW5uaW5nIGluIFNoaW55IG1vZGUuIElmIG5vdCwgaXQncyBhIHN0YXRpYyBkb2N1bWVudC4NCiAgLy8gTm90ZSB0aGF0IHN0YXRpYyB3aWRnZXRzIGNhbiBhcHBlYXIgaW4gYm90aCBTaGlueSBhbmQgc3RhdGljIG1vZGVzLCBidXQNCiAgLy8gb2J2aW91c2x5LCBTaGlueSB3aWRnZXRzIGNhbiBvbmx5IGFwcGVhciBpbiBTaGlueSBhcHBzL2RvY3VtZW50cy4NCiAgdmFyIHNoaW55TW9kZSA9IHdpbmRvdy5IVE1MV2lkZ2V0cy5zaGlueU1vZGUgPQ0KICAgICAgdHlwZW9mKHdpbmRvdy5TaGlueSkgIT09ICJ1bmRlZmluZWQiICYmICEhd2luZG93LlNoaW55Lm91dHB1dEJpbmRpbmdzOw0KDQogIC8vIFdlIGNhbid0IGNvdW50IG9uIGpRdWVyeSBiZWluZyBhdmFpbGFibGUsIHNvIHdlIGltcGxlbWVudCBvdXIgb3duDQogIC8vIHZlcnNpb24gaWYgbmVjZXNzYXJ5Lg0KICBmdW5jdGlvbiBxdWVyeVNlbGVjdG9yQWxsKHNjb3BlLCBzZWxlY3Rvcikgew0KICAgIGlmICh0eXBlb2YoalF1ZXJ5KSAhPT0gInVuZGVmaW5lZCIgJiYgc2NvcGUgaW5zdGFuY2VvZiBqUXVlcnkpIHsNCiAgICAgIHJldHVybiBzY29wZS5maW5kKHNlbGVjdG9yKTsNCiAgICB9DQogICAgaWYgKHNjb3BlLnF1ZXJ5U2VsZWN0b3JBbGwpIHsNCiAgICAgIHJldHVybiBzY29wZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsNCiAgICB9DQogIH0NCg0KICBmdW5jdGlvbiBhc0FycmF5KHZhbHVlKSB7DQogICAgaWYgKHZhbHVlID09PSBudWxsKQ0KICAgICAgcmV0dXJuIFtdOw0KICAgIGlmICgkLmlzQXJyYXkodmFsdWUpKQ0KICAgICAgcmV0dXJuIHZhbHVlOw0KICAgIHJldHVybiBbdmFsdWVdOw0KICB9DQoNCiAgLy8gSW1wbGVtZW50IGpRdWVyeSdzIGV4dGVuZA0KICBmdW5jdGlvbiBleHRlbmQodGFyZ2V0IC8qLCAuLi4gKi8pIHsNCiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7DQogICAgICByZXR1cm4gdGFyZ2V0Ow0KICAgIH0NCiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgew0KICAgICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsNCiAgICAgIGZvciAodmFyIHByb3AgaW4gc291cmNlKSB7DQogICAgICAgIGlmIChzb3VyY2UuaGFzT3duUHJvcGVydHkocHJvcCkpIHsNCiAgICAgICAgICB0YXJnZXRbcHJvcF0gPSBzb3VyY2VbcHJvcF07DQogICAgICAgIH0NCiAgICAgIH0NCiAgICB9DQogICAgcmV0dXJuIHRhcmdldDsNCiAgfQ0KDQogIC8vIElFOCBkb2Vzbid0IHN1cHBvcnQgQXJyYXkuZm9yRWFjaC4NCiAgZnVuY3Rpb24gZm9yRWFjaCh2YWx1ZXMsIGNhbGxiYWNrLCB0aGlzQXJnKSB7DQogICAgaWYgKHZhbHVlcy5mb3JFYWNoKSB7DQogICAgICB2YWx1ZXMuZm9yRWFjaChjYWxsYmFjaywgdGhpc0FyZyk7DQogICAgfSBlbHNlIHsNCiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7DQogICAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdmFsdWVzW2ldLCBpLCB2YWx1ZXMpOw0KICAgICAgfQ0KICAgIH0NCiAgfQ0KDQogIC8vIFJlcGxhY2VzIHRoZSBzcGVjaWZpZWQgbWV0aG9kIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiBmdW5jU291cmNlLg0KICAvLw0KICAvLyBOb3RlIHRoYXQgZnVuY1NvdXJjZSBzaG91bGQgbm90IEJFIHRoZSBuZXcgbWV0aG9kLCBpdCBzaG91bGQgYmUgYSBmdW5jdGlvbg0KICAvLyB0aGF0IFJFVFVSTlMgdGhlIG5ldyBtZXRob2QuIGZ1bmNTb3VyY2UgcmVjZWl2ZXMgYSBzaW5nbGUgYXJndW1lbnQgdGhhdCBpcw0KICAvLyB0aGUgb3ZlcnJpZGRlbiBtZXRob2QsIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSB0aGUgbmV3IG1ldGhvZC4gVGhlIG92ZXJyaWRkZW4NCiAgLy8gbWV0aG9kIGNhbiBiZSBjYWxsZWQgbGlrZSBhIHJlZ3VsYXIgZnVuY3Rpb24sIGl0IGhhcyB0aGUgdGFyZ2V0IHBlcm1hbmVudGx5DQogIC8vIGJvdW5kIHRvIGl0IHNvICJ0aGlzIiB3aWxsIHdvcmsgY29ycmVjdGx5Lg0KICBmdW5jdGlvbiBvdmVycmlkZU1ldGhvZCh0YXJnZXQsIG1ldGhvZE5hbWUsIGZ1bmNTb3VyY2UpIHsNCiAgICB2YXIgc3VwZXJGdW5jID0gdGFyZ2V0W21ldGhvZE5hbWVdIHx8IGZ1bmN0aW9uKCkge307DQogICAgdmFyIHN1cGVyRnVuY0JvdW5kID0gZnVuY3Rpb24oKSB7DQogICAgICByZXR1cm4gc3VwZXJGdW5jLmFwcGx5KHRhcmdldCwgYXJndW1lbnRzKTsNCiAgICB9Ow0KICAgIHRhcmdldFttZXRob2ROYW1lXSA9IGZ1bmNTb3VyY2Uoc3VwZXJGdW5jQm91bmQpOw0KICB9DQoNCiAgLy8gQWRkIGEgbWV0aG9kIHRvIGRlbGVnYXRvciB0aGF0LCB3aGVuIGludm9rZWQsIGNhbGxzDQogIC8vIGRlbGVnYXRlZS5tZXRob2ROYW1lLiBJZiB0aGVyZSBpcyBubyBzdWNoIG1ldGhvZCBvbg0KICAvLyB0aGUgZGVsZWdhdGVlLCBidXQgdGhlcmUgd2FzIG9uZSBvbiBkZWxlZ2F0b3IgYmVmb3JlDQogIC8vIGRlbGVnYXRlTWV0aG9kIHdhcyBjYWxsZWQsIHRoZW4gdGhlIG9yaWdpbmFsIHZlcnNpb24NCiAgLy8gaXMgaW52b2tlZCBpbnN0ZWFkLg0KICAvLyBGb3IgZXhhbXBsZToNCiAgLy8NCiAgLy8gdmFyIGEgPSB7DQogIC8vICAgbWV0aG9kMTogZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdhMScpOyB9DQogIC8vICAgbWV0aG9kMjogZnVuY3Rpb24oKSB7IGNvbnNvbGUubG9nKCdhMicpOyB9DQogIC8vIH07DQogIC8vIHZhciBiID0gew0KICAvLyAgIG1ldGhvZDE6IGZ1bmN0aW9uKCkgeyBjb25zb2xlLmxvZygnYjEnKTsgfQ0KICAvLyB9Ow0KICAvLyBkZWxlZ2F0ZU1ldGhvZChhLCBiLCAibWV0aG9kMSIpOw0KICAvLyBkZWxlZ2F0ZU1ldGhvZChhLCBiLCAibWV0aG9kMiIpOw0KICAvLyBhLm1ldGhvZDEoKTsNCiAgLy8gYS5tZXRob2QyKCk7DQogIC8vDQogIC8vIFRoZSBvdXRwdXQgd291bGQgYmUgImIxIiwgImEyIi4NCiAgZnVuY3Rpb24gZGVsZWdhdGVNZXRob2QoZGVsZWdhdG9yLCBkZWxlZ2F0ZWUsIG1ldGhvZE5hbWUpIHsNCiAgICB2YXIgaW5oZXJpdGVkID0gZGVsZWdhdG9yW21ldGhvZE5hbWVdOw0KICAgIGRlbGVnYXRvclttZXRob2ROYW1lXSA9IGZ1bmN0aW9uKCkgew0KICAgICAgdmFyIHRhcmdldCA9IGRlbGVnYXRlZTsNCiAgICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZWVbbWV0aG9kTmFtZV07DQoNCiAgICAgIC8vIFRoZSBtZXRob2QgZG9lc24ndCBleGlzdCBvbiB0aGUgZGVsZWdhdGVlLiBJbnN0ZWFkLA0KICAgICAgLy8gY2FsbCB0aGUgbWV0aG9kIG9uIHRoZSBkZWxlZ2F0b3IsIGlmIGl0IGV4aXN0cy4NCiAgICAgIGlmICghbWV0aG9kKSB7DQogICAgICAgIHRhcmdldCA9IGRlbGVnYXRvcjsNCiAgICAgICAgbWV0aG9kID0gaW5oZXJpdGVkOw0KICAgICAgfQ0KDQogICAgICBpZiAobWV0aG9kKSB7DQogICAgICAgIHJldHVybiBtZXRob2QuYXBwbHkodGFyZ2V0LCBhcmd1bWVudHMpOw0KICAgICAgfQ0KICAgIH07DQogIH0NCg0KICAvLyBJbXBsZW1lbnQgYSB2YWd1ZSBmYWNzaW1pbGllIG9mIGpRdWVyeSdzIGRhdGEgbWV0aG9kDQogIGZ1bmN0aW9uIGVsZW1lbnREYXRhKGVsLCBuYW1lLCB2YWx1ZSkgew0KICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09IDIpIHsNCiAgICAgIHJldHVybiBlbFsiaHRtbHdpZGdldF9kYXRhXyIgKyBuYW1lXTsNCiAgICB9IGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMykgew0KICAgICAgZWxbImh0bWx3aWRnZXRfZGF0YV8iICsgbmFtZV0gPSB2YWx1ZTsNCiAgICAgIHJldHVybiBlbDsNCiAgICB9IGVsc2Ugew0KICAgICAgdGhyb3cgbmV3IEVycm9yKCJXcm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBlbGVtZW50RGF0YTogIiArDQogICAgICAgIGFyZ3VtZW50cy5sZW5ndGgpOw0KICAgIH0NCiAgfQ0KDQogIC8vIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzQ0NjE3MC9lc2NhcGUtc3RyaW5nLWZvci11c2UtaW4tamF2YXNjcmlwdC1yZWdleA0KICBmdW5jdGlvbiBlc2NhcGVSZWdFeHAoc3RyKSB7DQogICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9bXC1cW1xdXC9ce1x9XChcKVwqXCtcP1wuXFxcXlwkXHxdL2csICJcXCQmIik7DQogIH0NCg0KICBmdW5jdGlvbiBoYXNDbGFzcyhlbCwgY2xhc3NOYW1lKSB7DQogICAgdmFyIHJlID0gbmV3IFJlZ0V4cCgiXFxiIiArIGVzY2FwZVJlZ0V4cChjbGFzc05hbWUpICsgIlxcYiIpOw0KICAgIHJldHVybiByZS50ZXN0KGVsLmNsYXNzTmFtZSk7DQogIH0NCg0KICAvLyBlbGVtZW50cyAtIGFycmF5IChvciBhcnJheS1saWtlIG9iamVjdCkgb2YgSFRNTCBlbGVtZW50cw0KICAvLyBjbGFzc05hbWUgLSBjbGFzcyBuYW1lIHRvIHRlc3QgZm9yDQogIC8vIGluY2x1ZGUgLSBpZiB0cnVlLCBvbmx5IHJldHVybiBlbGVtZW50cyB3aXRoIGdpdmVuIGNsYXNzTmFtZTsNCiAgLy8gICBpZiBmYWxzZSwgb25seSByZXR1cm4gZWxlbWVudHMgKndpdGhvdXQqIGdpdmVuIGNsYXNzTmFtZQ0KICBmdW5jdGlvbiBmaWx0ZXJCeUNsYXNzKGVsZW1lbnRzLCBjbGFzc05hbWUsIGluY2x1ZGUpIHsNCiAgICB2YXIgcmVzdWx0cyA9IFtdOw0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWxlbWVudHMubGVuZ3RoOyBpKyspIHsNCiAgICAgIGlmIChoYXNDbGFzcyhlbGVtZW50c1tpXSwgY2xhc3NOYW1lKSA9PSBpbmNsdWRlKQ0KICAgICAgICByZXN1bHRzLnB1c2goZWxlbWVudHNbaV0pOw0KICAgIH0NCiAgICByZXR1cm4gcmVzdWx0czsNCiAgfQ0KDQogIGZ1bmN0aW9uIG9uKG9iaiwgZXZlbnROYW1lLCBmdW5jKSB7DQogICAgaWYgKG9iai5hZGRFdmVudExpc3RlbmVyKSB7DQogICAgICBvYmouYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGZ1bmMsIGZhbHNlKTsNCiAgICB9IGVsc2UgaWYgKG9iai5hdHRhY2hFdmVudCkgew0KICAgICAgb2JqLmF0dGFjaEV2ZW50KGV2ZW50TmFtZSwgZnVuYyk7DQogICAgfQ0KICB9DQoNCiAgZnVuY3Rpb24gb2ZmKG9iaiwgZXZlbnROYW1lLCBmdW5jKSB7DQogICAgaWYgKG9iai5yZW1vdmVFdmVudExpc3RlbmVyKQ0KICAgICAgb2JqLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBmdW5jLCBmYWxzZSk7DQogICAgZWxzZSBpZiAob2JqLmRldGFjaEV2ZW50KSB7DQogICAgICBvYmouZGV0YWNoRXZlbnQoZXZlbnROYW1lLCBmdW5jKTsNCiAgICB9DQogIH0NCg0KICAvLyBUcmFuc2xhdGUgYXJyYXkgb2YgdmFsdWVzIHRvIHRvcC9yaWdodC9ib3R0b20vbGVmdCwgYXMgdXN1YWwgd2l0aA0KICAvLyB0aGUgInBhZGRpbmciIENTUyBwcm9wZXJ0eQ0KICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvcGFkZGluZw0KICBmdW5jdGlvbiB1bnBhY2tQYWRkaW5nKHZhbHVlKSB7DQogICAgaWYgKHR5cGVvZih2YWx1ZSkgPT09ICJudW1iZXIiKQ0KICAgICAgdmFsdWUgPSBbdmFsdWVdOw0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDEpIHsNCiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzBdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVswXX07DQogICAgfQ0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDIpIHsNCiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzBdLCBsZWZ0OiB2YWx1ZVsxXX07DQogICAgfQ0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDMpIHsNCiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVsxXX07DQogICAgfQ0KICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDQpIHsNCiAgICAgIHJldHVybiB7dG9wOiB2YWx1ZVswXSwgcmlnaHQ6IHZhbHVlWzFdLCBib3R0b206IHZhbHVlWzJdLCBsZWZ0OiB2YWx1ZVszXX07DQogICAgfQ0KICB9DQoNCiAgLy8gQ29udmVydCBhbiB1bnBhY2tlZCBwYWRkaW5nIG9iamVjdCB0byBhIENTUyB2YWx1ZQ0KICBmdW5jdGlvbiBwYWRkaW5nVG9Dc3MocGFkZGluZ09iaikgew0KICAgIHJldHVybiBwYWRkaW5nT2JqLnRvcCArICJweCAiICsgcGFkZGluZ09iai5yaWdodCArICJweCAiICsgcGFkZGluZ09iai5ib3R0b20gKyAicHggIiArIHBhZGRpbmdPYmoubGVmdCArICJweCI7DQogIH0NCg0KICAvLyBNYWtlcyBhIG51bWJlciBzdWl0YWJsZSBmb3IgQ1NTDQogIGZ1bmN0aW9uIHB4KHgpIHsNCiAgICBpZiAodHlwZW9mKHgpID09PSAibnVtYmVyIikNCiAgICAgIHJldHVybiB4ICsgInB4IjsNCiAgICBlbHNlDQogICAgICByZXR1cm4geDsNCiAgfQ0KDQogIC8vIFJldHJpZXZlcyBydW50aW1lIHdpZGdldCBzaXppbmcgaW5mb3JtYXRpb24gZm9yIGFuIGVsZW1lbnQuDQogIC8vIFRoZSByZXR1cm4gdmFsdWUgaXMgZWl0aGVyIG51bGwsIG9yIGFuIG9iamVjdCB3aXRoIGZpbGwsIHBhZGRpbmcsDQogIC8vIGRlZmF1bHRXaWR0aCwgZGVmYXVsdEhlaWdodCBmaWVsZHMuDQogIGZ1bmN0aW9uIHNpemluZ1BvbGljeShlbCkgew0KICAgIHZhciBzaXppbmdFbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoInNjcmlwdFtkYXRhLWZvcj0nIiArIGVsLmlkICsgIiddW3R5cGU9J2FwcGxpY2F0aW9uL2h0bWx3aWRnZXQtc2l6aW5nJ10iKTsNCiAgICBpZiAoIXNpemluZ0VsKQ0KICAgICAgcmV0dXJuIG51bGw7DQogICAgdmFyIHNwID0gSlNPTi5wYXJzZShzaXppbmdFbC50ZXh0Q29udGVudCB8fCBzaXppbmdFbC50ZXh0IHx8ICJ7fSIpOw0KICAgIGlmICh2aWV3ZXJNb2RlKSB7DQogICAgICByZXR1cm4gc3Audmlld2VyOw0KICAgIH0gZWxzZSB7DQogICAgICByZXR1cm4gc3AuYnJvd3NlcjsNCiAgICB9DQogIH0NCg0KICAvLyBAcGFyYW0gdGFza3MgQXJyYXkgb2Ygc3RyaW5ncyAob3IgZmFsc3kgdmFsdWUsIGluIHdoaWNoIGNhc2Ugbm8tb3ApLg0KICAvLyAgIEVhY2ggZWxlbWVudCBtdXN0IGJlIGEgdmFsaWQgSmF2YVNjcmlwdCBleHByZXNzaW9uIHRoYXQgeWllbGRzIGENCiAgLy8gICBmdW5jdGlvbi4gT3IsIGNhbiBiZSBhbiBhcnJheSBvZiBvYmplY3RzIHdpdGggImNvZGUiIGFuZCAiZGF0YSINCiAgLy8gICBwcm9wZXJ0aWVzOyBpbiB0aGlzIGNhc2UsIHRoZSAiY29kZSIgcHJvcGVydHkgc2hvdWxkIGJlIGEgc3RyaW5nDQogIC8vICAgb2YgSlMgdGhhdCdzIGFuIGV4cHIgdGhhdCB5aWVsZHMgYSBmdW5jdGlvbiwgYW5kICJkYXRhIiBzaG91bGQgYmUNCiAgLy8gICBhbiBvYmplY3QgdGhhdCB3aWxsIGJlIGFkZGVkIGFzIGFuIGFkZGl0aW9uYWwgYXJndW1lbnQgd2hlbiB0aGF0DQogIC8vICAgZnVuY3Rpb24gaXMgY2FsbGVkLg0KICAvLyBAcGFyYW0gdGFyZ2V0IFRoZSBvYmplY3QgdGhhdCB3aWxsIGJlICJ0aGlzIiBmb3IgZWFjaCBmdW5jdGlvbg0KICAvLyAgIGV4ZWN1dGlvbi4NCiAgLy8gQHBhcmFtIGFyZ3MgQXJyYXkgb2YgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb25zLiAoVGhlDQogIC8vICAgc2FtZSBhcmd1bWVudHMgd2lsbCBiZSBwYXNzZWQgdG8gYWxsIGZ1bmN0aW9ucy4pDQogIGZ1bmN0aW9uIGV2YWxBbmRSdW4odGFza3MsIHRhcmdldCwgYXJncykgew0KICAgIGlmICh0YXNrcykgew0KICAgICAgZm9yRWFjaCh0YXNrcywgZnVuY3Rpb24odGFzaykgew0KICAgICAgICB2YXIgdGhlc2VBcmdzID0gYXJnczsNCiAgICAgICAgaWYgKHR5cGVvZih0YXNrKSA9PT0gIm9iamVjdCIpIHsNCiAgICAgICAgICB0aGVzZUFyZ3MgPSB0aGVzZUFyZ3MuY29uY2F0KFt0YXNrLmRhdGFdKTsNCiAgICAgICAgICB0YXNrID0gdGFzay5jb2RlOw0KICAgICAgICB9DQogICAgICAgIHZhciB0YXNrRnVuYyA9IGV2YWwoIigiICsgdGFzayArICIpIik7DQogICAgICAgIGlmICh0eXBlb2YodGFza0Z1bmMpICE9PSAiZnVuY3Rpb24iKSB7DQogICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUYXNrIG11c3QgYmUgYSBmdW5jdGlvbiEgU291cmNlOlxuIiArIHRhc2spOw0KICAgICAgICB9DQogICAgICAgIHRhc2tGdW5jLmFwcGx5KHRhcmdldCwgdGhlc2VBcmdzKTsNCiAgICAgIH0pOw0KICAgIH0NCiAgfQ0KDQogIGZ1bmN0aW9uIGluaXRTaXppbmcoZWwpIHsNCiAgICB2YXIgc2l6aW5nID0gc2l6aW5nUG9saWN5KGVsKTsNCiAgICBpZiAoIXNpemluZykNCiAgICAgIHJldHVybjsNCg0KICAgIHZhciBjZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaHRtbHdpZGdldF9jb250YWluZXIiKTsNCiAgICBpZiAoIWNlbCkNCiAgICAgIHJldHVybjsNCg0KICAgIGlmICh0eXBlb2Yoc2l6aW5nLnBhZGRpbmcpICE9PSAidW5kZWZpbmVkIikgew0KICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5tYXJnaW4gPSAiMCI7DQogICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmcgPSBwYWRkaW5nVG9Dc3ModW5wYWNrUGFkZGluZyhzaXppbmcucGFkZGluZykpOw0KICAgIH0NCg0KICAgIGlmIChzaXppbmcuZmlsbCkgew0KICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyA9ICJoaWRkZW4iOw0KICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS53aWR0aCA9ICIxMDAlIjsNCiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuaGVpZ2h0ID0gIjEwMCUiOw0KICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLndpZHRoID0gIjEwMCUiOw0KICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmhlaWdodCA9ICIxMDAlIjsNCiAgICAgIGlmIChjZWwpIHsNCiAgICAgICAgY2VsLnN0eWxlLnBvc2l0aW9uID0gImFic29sdXRlIjsNCiAgICAgICAgdmFyIHBhZCA9IHVucGFja1BhZGRpbmcoc2l6aW5nLnBhZGRpbmcpOw0KICAgICAgICBjZWwuc3R5bGUudG9wID0gcGFkLnRvcCArICJweCI7DQogICAgICAgIGNlbC5zdHlsZS5yaWdodCA9IHBhZC5yaWdodCArICJweCI7DQogICAgICAgIGNlbC5zdHlsZS5ib3R0b20gPSBwYWQuYm90dG9tICsgInB4IjsNCiAgICAgICAgY2VsLnN0eWxlLmxlZnQgPSBwYWQubGVmdCArICJweCI7DQogICAgICAgIGVsLnN0eWxlLndpZHRoID0gIjEwMCUiOw0KICAgICAgICBlbC5zdHlsZS5oZWlnaHQgPSAiMTAwJSI7DQogICAgICB9DQoNCiAgICAgIHJldHVybiB7DQogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRXaWR0aDsgfSwNCiAgICAgICAgZ2V0SGVpZ2h0OiBmdW5jdGlvbigpIHsgcmV0dXJuIGNlbC5vZmZzZXRIZWlnaHQ7IH0NCiAgICAgIH07DQoNCiAgICB9IGVsc2Ugew0KICAgICAgZWwuc3R5bGUud2lkdGggPSBweChzaXppbmcud2lkdGgpOw0KICAgICAgZWwuc3R5bGUuaGVpZ2h0ID0gcHgoc2l6aW5nLmhlaWdodCk7DQoNCiAgICAgIHJldHVybiB7DQogICAgICAgIGdldFdpZHRoOiBmdW5jdGlvbigpIHsgcmV0dXJuIGVsLm9mZnNldFdpZHRoOyB9LA0KICAgICAgICBnZXRIZWlnaHQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gZWwub2Zmc2V0SGVpZ2h0OyB9DQogICAgICB9Ow0KICAgIH0NCiAgfQ0KDQogIC8vIERlZmF1bHQgaW1wbGVtZW50YXRpb25zIGZvciBtZXRob2RzDQogIHZhciBkZWZhdWx0cyA9IHsNCiAgICBmaW5kOiBmdW5jdGlvbihzY29wZSkgew0KICAgICAgcmV0dXJuIHF1ZXJ5U2VsZWN0b3JBbGwoc2NvcGUsICIuIiArIHRoaXMubmFtZSk7DQogICAgfSwNCiAgICByZW5kZXJFcnJvcjogZnVuY3Rpb24oZWwsIGVycikgew0KICAgICAgdmFyICRlbCA9ICQoZWwpOw0KDQogICAgICB0aGlzLmNsZWFyRXJyb3IoZWwpOw0KDQogICAgICAvLyBBZGQgYWxsIHRoZXNlIGVycm9yIGNsYXNzZXMsIGFzIFNoaW55IGRvZXMNCiAgICAgIHZhciBlcnJDbGFzcyA9ICJzaGlueS1vdXRwdXQtZXJyb3IiOw0KICAgICAgaWYgKGVyci50eXBlICE9PSBudWxsKSB7DQogICAgICAgIC8vIHVzZSB0aGUgY2xhc3NlcyBvZiB0aGUgZXJyb3IgY29uZGl0aW9uIGFzIENTUyBjbGFzcyBuYW1lcw0KICAgICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiAiICsgJC5tYXAoYXNBcnJheShlcnIudHlwZSksIGZ1bmN0aW9uKHR5cGUpIHsNCiAgICAgICAgICByZXR1cm4gZXJyQ2xhc3MgKyAiLSIgKyB0eXBlOw0KICAgICAgICB9KS5qb2luKCIgIik7DQogICAgICB9DQogICAgICBlcnJDbGFzcyA9IGVyckNsYXNzICsgIiBodG1sd2lkZ2V0cy1lcnJvciI7DQoNCiAgICAgIC8vIElzIGVsIGlubGluZSBvciBibG9jaz8gSWYgaW5saW5lIG9yIGlubGluZS1ibG9jaywganVzdCBkaXNwbGF5Om5vbmUgaXQNCiAgICAgIC8vIGFuZCBhZGQgYW4gaW5saW5lIGVycm9yLg0KICAgICAgdmFyIGRpc3BsYXkgPSAkZWwuY3NzKCJkaXNwbGF5Iik7DQogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBkaXNwbGF5KTsNCg0KICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7DQogICAgICAgICRlbC5oaWRlKCk7DQogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsNCiAgICAgICAgICB2YXIgZXJyb3JTcGFuID0gJCgiPHNwYW4+IikuYWRkQ2xhc3MoZXJyQ2xhc3MpOw0KICAgICAgICAgIGVycm9yU3Bhbi50ZXh0KGVyci5tZXNzYWdlKTsNCiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JTcGFuKTsNCiAgICAgICAgfQ0KICAgICAgfSBlbHNlIGlmIChkaXNwbGF5ID09PSAiYmxvY2siKSB7DQogICAgICAgIC8vIElmIGJsb2NrLCBhZGQgYW4gZXJyb3IganVzdCBhZnRlciB0aGUgZWwsIHNldCB2aXNpYmlsaXR5Om5vbmUgb24gdGhlDQogICAgICAgIC8vIGVsLCBhbmQgcG9zaXRpb24gdGhlIGVycm9yIHRvIGJlIG9uIHRvcCBvZiB0aGUgZWwuDQogICAgICAgIC8vIE1hcmsgaXQgd2l0aCBhIHVuaXF1ZSBJRCBhbmQgQ1NTIGNsYXNzIHNvIHdlIGNhbiByZW1vdmUgaXQgbGF0ZXIuDQogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7DQogICAgICAgIGlmIChlcnIubWVzc2FnZSAhPT0gIiIpIHsNCiAgICAgICAgICB2YXIgZXJyb3JEaXYgPSAkKCI8ZGl2PiIpLmFkZENsYXNzKGVyckNsYXNzKS5jc3MoInBvc2l0aW9uIiwgImFic29sdXRlIikNCiAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkNCiAgICAgICAgICAgIC5jc3MoImxlZnQiLCBlbC5vZmZzZXRMZWZ0KQ0KICAgICAgICAgICAgLy8gc2V0dGluZyB3aWR0aCBjYW4gcHVzaCBvdXQgdGhlIHBhZ2Ugc2l6ZSwgZm9yY2luZyBvdGhlcndpc2UNCiAgICAgICAgICAgIC8vIHVubmVjZXNzYXJ5IHNjcm9sbGJhcnMgdG8gYXBwZWFyIGFuZCBtYWtpbmcgaXQgaW1wb3NzaWJsZSBmb3INCiAgICAgICAgICAgIC8vIHRoZSBlbGVtZW50IHRvIHNocmluazsgc28gdXNlIG1heC13aWR0aCBpbnN0ZWFkDQogICAgICAgICAgICAuY3NzKCJtYXhXaWR0aCIsIGVsLm9mZnNldFdpZHRoKQ0KICAgICAgICAgICAgLmNzcygiaGVpZ2h0IiwgZWwub2Zmc2V0SGVpZ2h0KTsNCiAgICAgICAgICBlcnJvckRpdi50ZXh0KGVyci5tZXNzYWdlKTsNCiAgICAgICAgICAkZWwuYWZ0ZXIoZXJyb3JEaXYpOw0KDQogICAgICAgICAgLy8gUmVhbGx5IGR1bWIgd2F5IHRvIGtlZXAgdGhlIHNpemUvcG9zaXRpb24gb2YgdGhlIGVycm9yIGluIHN5bmMgd2l0aA0KICAgICAgICAgIC8vIHRoZSBwYXJlbnQgZWxlbWVudCBhcyB0aGUgd2luZG93IGlzIHJlc2l6ZWQgb3Igd2hhdGV2ZXIuDQogICAgICAgICAgdmFyIGludElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24oKSB7DQogICAgICAgICAgICBpZiAoIWVycm9yRGl2WzBdLnBhcmVudEVsZW1lbnQpIHsNCiAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRJZCk7DQogICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGVycm9yRGl2DQogICAgICAgICAgICAgIC5jc3MoInRvcCIsIGVsLm9mZnNldFRvcCkNCiAgICAgICAgICAgICAgLmNzcygibGVmdCIsIGVsLm9mZnNldExlZnQpDQogICAgICAgICAgICAgIC5jc3MoIm1heFdpZHRoIiwgZWwub2Zmc2V0V2lkdGgpDQogICAgICAgICAgICAgIC5jc3MoImhlaWdodCIsIGVsLm9mZnNldEhlaWdodCk7DQogICAgICAgICAgfSwgNTAwKTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0sDQogICAgY2xlYXJFcnJvcjogZnVuY3Rpb24oZWwpIHsNCiAgICAgIHZhciAkZWwgPSAkKGVsKTsNCiAgICAgIHZhciBkaXNwbGF5ID0gJGVsLmRhdGEoInJlc3RvcmUtZGlzcGxheS1tb2RlIik7DQogICAgICAkZWwuZGF0YSgicmVzdG9yZS1kaXNwbGF5LW1vZGUiLCBudWxsKTsNCg0KICAgICAgaWYgKGRpc3BsYXkgPT09ICJpbmxpbmUiIHx8IGRpc3BsYXkgPT09ICJpbmxpbmUtYmxvY2siKSB7DQogICAgICAgIGlmIChkaXNwbGF5KQ0KICAgICAgICAgICRlbC5jc3MoImRpc3BsYXkiLCBkaXNwbGF5KTsNCiAgICAgICAgJChlbC5uZXh0U2libGluZykuZmlsdGVyKCIuaHRtbHdpZGdldHMtZXJyb3IiKS5yZW1vdmUoKTsNCiAgICAgIH0gZWxzZSBpZiAoZGlzcGxheSA9PT0gImJsb2NrIil7DQogICAgICAgICRlbC5jc3MoInZpc2liaWxpdHkiLCAiaW5oZXJpdCIpOw0KICAgICAgICAkKGVsLm5leHRTaWJsaW5nKS5maWx0ZXIoIi5odG1sd2lkZ2V0cy1lcnJvciIpLnJlbW92ZSgpOw0KICAgICAgfQ0KICAgIH0sDQogICAgc2l6aW5nOiB7fQ0KICB9Ow0KDQogIC8vIENhbGxlZCBieSB3aWRnZXQgYmluZGluZ3MgdG8gcmVnaXN0ZXIgYSBuZXcgdHlwZSBvZiB3aWRnZXQuIFRoZSBkZWZpbml0aW9uDQogIC8vIG9iamVjdCBjYW4gY29udGFpbiB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6DQogIC8vIC0gbmFtZSAocmVxdWlyZWQpIC0gQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUgYmluZGluZyBuYW1lLCB3aGljaCB3aWxsIGJlDQogIC8vICAgdXNlZCBieSBkZWZhdWx0IGFzIHRoZSBDU1MgY2xhc3NuYW1lIHRvIGxvb2sgZm9yLg0KICAvLyAtIGluaXRpYWxpemUgKG9wdGlvbmFsKSAtIEEgZnVuY3Rpb24oZWwpIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSBwZXINCiAgLy8gICB3aWRnZXQgZWxlbWVudDsgaWYgYSB2YWx1ZSBpcyByZXR1cm5lZCwgaXQgd2lsbCBiZSBwYXNzZWQgYXMgdGhlIHRoaXJkDQogIC8vICAgdmFsdWUgdG8gcmVuZGVyVmFsdWUuDQogIC8vIC0gcmVuZGVyVmFsdWUgKHJlcXVpcmVkKSAtIEEgZnVuY3Rpb24oZWwsIGRhdGEsIGluaXRWYWx1ZSkgdGhhdCB3aWxsIGJlDQogIC8vICAgY2FsbGVkIHdpdGggZGF0YS4gU3RhdGljIGNvbnRleHRzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgb25jZSBwZXINCiAgLy8gICBlbGVtZW50OyBTaGlueSBhcHBzIHdpbGwgY2F1c2UgdGhpcyB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgcGVyDQogIC8vICAgZWxlbWVudCwgYXMgdGhlIGRhdGEgY2hhbmdlcy4NCiAgd2luZG93LkhUTUxXaWRnZXRzLndpZGdldCA9IGZ1bmN0aW9uKGRlZmluaXRpb24pIHsNCiAgICBpZiAoIWRlZmluaXRpb24ubmFtZSkgew0KICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgbmFtZSIpOw0KICAgIH0NCiAgICBpZiAoIWRlZmluaXRpb24udHlwZSkgew0KICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgdHlwZSIpOw0KICAgIH0NCiAgICAvLyBDdXJyZW50bHkgd2Ugb25seSBzdXBwb3J0IG91dHB1dCB3aWRnZXRzDQogICAgaWYgKGRlZmluaXRpb24udHlwZSAhPT0gIm91dHB1dCIpIHsNCiAgICAgIHRocm93IG5ldyBFcnJvcigiVW5yZWNvZ25pemVkIHdpZGdldCB0eXBlICciICsgZGVmaW5pdGlvbi50eXBlICsgIiciKTsNCiAgICB9DQogICAgLy8gVE9ETzogVmVyaWZ5IHRoYXQgLm5hbWUgaXMgYSB2YWxpZCBDU1MgY2xhc3NuYW1lDQoNCiAgICAvLyBTdXBwb3J0IG5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucy4gT2xkLXN0eWxlIGNsYXNzLWJvdW5kDQogICAgLy8gZGVmaW5pdGlvbnMgaGF2ZSBvbmUgd2lkZ2V0ICJvYmplY3QiIHBlciB3aWRnZXQgcGVyIHR5cGUvY2xhc3Mgb2YNCiAgICAvLyB3aWRnZXQ7IHRoZSByZW5kZXJWYWx1ZSBhbmQgcmVzaXplIG1ldGhvZHMgb24gc3VjaCB3aWRnZXQgb2JqZWN0cw0KICAgIC8vIHRha2UgZWwgYW5kIGluc3RhbmNlIGFyZ3VtZW50cywgYmVjYXVzZSB0aGUgd2lkZ2V0IG9iamVjdCBjYW4ndA0KICAgIC8vIHN0b3JlIHRoZW0uIE5ldy1zdHlsZSBpbnN0YW5jZS1ib3VuZCBkZWZpbml0aW9ucyBoYXZlIG9uZSB3aWRnZXQNCiAgICAvLyBvYmplY3QgcGVyIHdpZGdldCBpbnN0YW5jZTsgdGhlIGRlZmluaXRpb24gdGhhdCdzIHBhc3NlZCBpbiBkb2Vzbid0DQogICAgLy8gcHJvdmlkZSByZW5kZXJWYWx1ZSBvciByZXNpemUgbWV0aG9kcyBhdCBhbGwsIGp1c3QgdGhlIHNpbmdsZSBtZXRob2QNCiAgICAvLyAgIGZhY3RvcnkoZWwsIHdpZHRoLCBoZWlnaHQpDQogICAgLy8gd2hpY2ggcmV0dXJucyBhbiBvYmplY3QgdGhhdCBoYXMgcmVuZGVyVmFsdWUoeCkgYW5kIHJlc2l6ZSh3LCBoKS4NCiAgICAvLyBUaGlzIGVuYWJsZXMgYSBmYXIgbW9yZSBuYXR1cmFsIHByb2dyYW1taW5nIHN0eWxlIGZvciB0aGUgd2lkZ2V0DQogICAgLy8gYXV0aG9yLCB3aG8gY2FuIHN0b3JlIHBlci1pbnN0YW5jZSBzdGF0ZSB1c2luZyBlaXRoZXIgT08tc3R5bGUNCiAgICAvLyBpbnN0YW5jZSBmaWVsZHMgb3IgZnVuY3Rpb25hbC1zdHlsZSBjbG9zdXJlIHZhcmlhYmxlcyAoSSBndWVzcyB0aGlzDQogICAgLy8gaXMgaW4gY29udHJhc3QgdG8gd2hhdCBjYW4gb25seSBiZSBjYWxsZWQgQy1zdHlsZSBwc2V1ZG8tT08gd2hpY2ggaXMNCiAgICAvLyB3aGF0IHdlIHJlcXVpcmVkIGJlZm9yZSkuDQogICAgaWYgKGRlZmluaXRpb24uZmFjdG9yeSkgew0KICAgICAgZGVmaW5pdGlvbiA9IGNyZWF0ZUxlZ2FjeURlZmluaXRpb25BZGFwdGVyKGRlZmluaXRpb24pOw0KICAgIH0NCg0KICAgIGlmICghZGVmaW5pdGlvbi5yZW5kZXJWYWx1ZSkgew0KICAgICAgdGhyb3cgbmV3IEVycm9yKCJXaWRnZXQgbXVzdCBoYXZlIGEgcmVuZGVyVmFsdWUgZnVuY3Rpb24iKTsNCiAgICB9DQoNCiAgICAvLyBGb3Igc3RhdGljIHJlbmRlcmluZyAobm9uLVNoaW55KSwgdXNlIGEgc2ltcGxlIHdpZGdldCByZWdpc3RyYXRpb24NCiAgICAvLyBzY2hlbWUuIFdlIGFsc28gdXNlIHRoaXMgc2NoZW1lIGZvciBTaGlueSBhcHBzL2RvY3VtZW50cyB0aGF0IGFsc28NCiAgICAvLyBjb250YWluIHN0YXRpYyB3aWRnZXRzLg0KICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy53aWRnZXRzID0gd2luZG93LkhUTUxXaWRnZXRzLndpZGdldHMgfHwgW107DQogICAgLy8gTWVyZ2UgZGVmYXVsdHMgaW50byB0aGUgZGVmaW5pdGlvbjsgZG9uJ3QgbXV0YXRlIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uLg0KICAgIHZhciBzdGF0aWNCaW5kaW5nID0gZXh0ZW5kKHt9LCBkZWZhdWx0cywgZGVmaW5pdGlvbik7DQogICAgb3ZlcnJpZGVNZXRob2Qoc3RhdGljQmluZGluZywgImZpbmQiLCBmdW5jdGlvbihzdXBlcmZ1bmMpIHsNCiAgICAgIHJldHVybiBmdW5jdGlvbihzY29wZSkgew0KICAgICAgICB2YXIgcmVzdWx0cyA9IHN1cGVyZnVuYyhzY29wZSk7DQogICAgICAgIC8vIEZpbHRlciBvdXQgU2hpbnkgb3V0cHV0cywgd2Ugb25seSB3YW50IHRoZSBzdGF0aWMga2luZA0KICAgICAgICByZXR1cm4gZmlsdGVyQnlDbGFzcyhyZXN1bHRzLCAiaHRtbC13aWRnZXQtb3V0cHV0IiwgZmFsc2UpOw0KICAgICAgfTsNCiAgICB9KTsNCiAgICB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cy5wdXNoKHN0YXRpY0JpbmRpbmcpOw0KDQogICAgaWYgKHNoaW55TW9kZSkgew0KICAgICAgLy8gU2hpbnkgaXMgcnVubmluZy4gUmVnaXN0ZXIgdGhlIGRlZmluaXRpb24gd2l0aCBhbiBvdXRwdXQgYmluZGluZy4NCiAgICAgIC8vIFRoZSBkZWZpbml0aW9uIGl0c2VsZiB3aWxsIG5vdCBiZSB0aGUgb3V0cHV0IGJpbmRpbmcsIGluc3RlYWQNCiAgICAgIC8vIHdlIHdpbGwgbWFrZSBhbiBvdXRwdXQgYmluZGluZyBvYmplY3QgdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlDQogICAgICAvLyBkZWZpbml0aW9uLiBUaGlzIGlzIGJlY2F1c2Ugd2UgZm9vbGlzaGx5IHVzZWQgdGhlIHNhbWUgbWV0aG9kDQogICAgICAvLyBuYW1lIChyZW5kZXJWYWx1ZSkgZm9yIGh0bWx3aWRnZXRzIGRlZmluaXRpb24gYW5kIFNoaW55IGJpbmRpbmdzDQogICAgICAvLyBidXQgdGhleSBhY3R1YWxseSBoYXZlIHF1aXRlIGRpZmZlcmVudCBzZW1hbnRpY3MgKHRoZSBTaGlueQ0KICAgICAgLy8gYmluZGluZ3MgcmVjZWl2ZSBkYXRhIHRoYXQgaW5jbHVkZXMgbG90cyBvZiBtZXRhZGF0YSB0aGF0IGl0DQogICAgICAvLyBzdHJpcHMgb2ZmIGJlZm9yZSBjYWxsaW5nIGh0bWx3aWRnZXRzIHJlbmRlclZhbHVlKS4gV2UgY2FuJ3QNCiAgICAgIC8vIGp1c3QgaWdub3JlIHRoZSBkaWZmZXJlbmNlIGJlY2F1c2UgaW4gc29tZSB3aWRnZXRzIGl0J3MgaGVscGZ1bA0KICAgICAgLy8gdG8gY2FsbCB0aGlzLnJlbmRlclZhbHVlKCkgZnJvbSBpbnNpZGUgb2YgcmVzaXplKCksIGFuZCBpZg0KICAgICAgLy8gd2UncmUgbm90IGRlbGVnYXRpbmcsIHRoZW4gdGhhdCBjYWxsIHdpbGwgZ28gdG8gdGhlIFNoaW55DQogICAgICAvLyB2ZXJzaW9uIGluc3RlYWQgb2YgdGhlIGh0bWx3aWRnZXRzIHZlcnNpb24uDQoNCiAgICAgIC8vIE1lcmdlIGRlZmF1bHRzIHdpdGggZGVmaW5pdGlvbiwgd2l0aG91dCBtdXRhdGluZyBlaXRoZXIuDQogICAgICB2YXIgYmluZGluZ0RlZiA9IGV4dGVuZCh7fSwgZGVmYXVsdHMsIGRlZmluaXRpb24pOw0KDQogICAgICAvLyBUaGlzIG9iamVjdCB3aWxsIGJlIG91ciBhY3R1YWwgU2hpbnkgYmluZGluZy4NCiAgICAgIHZhciBzaGlueUJpbmRpbmcgPSBuZXcgU2hpbnkuT3V0cHV0QmluZGluZygpOw0KDQogICAgICAvLyBXaXRoIGEgZmV3IGV4Y2VwdGlvbnMsIHdlJ2xsIHdhbnQgdG8gc2ltcGx5IHVzZSB0aGUgYmluZGluZ0RlZidzDQogICAgICAvLyB2ZXJzaW9uIG9mIG1ldGhvZHMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLCBvdGhlcndpc2UgZmFsbCBiYWNrIHRvDQogICAgICAvLyBTaGlueSdzIGRlZmF1bHRzLiBOT1RFOiBJZiBTaGlueSdzIG91dHB1dCBiaW5kaW5ncyBnYWluIGFkZGl0aW9uYWwNCiAgICAgIC8vIG1ldGhvZHMgaW4gdGhlIGZ1dHVyZSwgYW5kIHdlIHdhbnQgdGhlbSB0byBiZSBvdmVycmlkZWFibGUgYnkNCiAgICAgIC8vIEhUTUxXaWRnZXQgYmluZGluZyBkZWZpbml0aW9ucywgdGhlbiB3ZSdsbCBuZWVkIHRvIGFkZCB0aGVtIHRvIHRoaXMNCiAgICAgIC8vIGxpc3QuDQogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJnZXRJZCIpOw0KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUNoYW5nZSIpOw0KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAib25WYWx1ZUVycm9yIik7DQogICAgICBkZWxlZ2F0ZU1ldGhvZChzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYsICJyZW5kZXJFcnJvciIpOw0KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAiY2xlYXJFcnJvciIpOw0KICAgICAgZGVsZWdhdGVNZXRob2Qoc2hpbnlCaW5kaW5nLCBiaW5kaW5nRGVmLCAic2hvd1Byb2dyZXNzIik7DQoNCiAgICAgIC8vIFRoZSBmaW5kLCByZW5kZXJWYWx1ZSwgYW5kIHJlc2l6ZSBhcmUgaGFuZGxlZCBkaWZmZXJlbnRseSwgYmVjYXVzZSB3ZQ0KICAgICAgLy8gd2FudCB0byBhY3R1YWxseSBkZWNvcmF0ZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGJpbmRpbmdEZWYgbWV0aG9kcy4NCg0KICAgICAgc2hpbnlCaW5kaW5nLmZpbmQgPSBmdW5jdGlvbihzY29wZSkgew0KICAgICAgICB2YXIgcmVzdWx0cyA9IGJpbmRpbmdEZWYuZmluZChzY29wZSk7DQoNCiAgICAgICAgLy8gT25seSByZXR1cm4gZWxlbWVudHMgdGhhdCBhcmUgU2hpbnkgb3V0cHV0cywgbm90IHN0YXRpYyBvbmVzDQogICAgICAgIHZhciBkeW5hbWljUmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKCIuaHRtbC13aWRnZXQtb3V0cHV0Iik7DQoNCiAgICAgICAgLy8gSXQncyBwb3NzaWJsZSB0aGF0IHdoYXRldmVyIGNhdXNlZCBTaGlueSB0byB0aGluayB0aGVyZSBtaWdodCBiZQ0KICAgICAgICAvLyBuZXcgZHluYW1pYyBvdXRwdXRzLCBhbHNvIGNhdXNlZCB0aGVyZSB0byBiZSBuZXcgc3RhdGljIG91dHB1dHMuDQogICAgICAgIC8vIFNpbmNlIHRoZXJlIG1pZ2h0IGJlIGxvdHMgb2YgZGlmZmVyZW50IGh0bWx3aWRnZXRzIGJpbmRpbmdzLCB3ZQ0KICAgICAgICAvLyBzY2hlZHVsZSBleGVjdXRpb24gZm9yIGxhdGVyLS1ubyBuZWVkIHRvIHN0YXRpY1JlbmRlciBtdWx0aXBsZQ0KICAgICAgICAvLyB0aW1lcy4NCiAgICAgICAgaWYgKHJlc3VsdHMubGVuZ3RoICE9PSBkeW5hbWljUmVzdWx0cy5sZW5ndGgpDQogICAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXIoKTsNCg0KICAgICAgICByZXR1cm4gZHluYW1pY1Jlc3VsdHM7DQogICAgICB9Ow0KDQogICAgICAvLyBXcmFwIHJlbmRlclZhbHVlIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiwgd2hpY2ggdW5mb3J0dW5hdGVseSBpc24ndA0KICAgICAgLy8gc3VwcG9ydGVkIG5hdGl2ZWx5IGJ5IFNoaW55IGF0IHRoZSB0aW1lIG9mIHRoaXMgd3JpdGluZy4NCg0KICAgICAgc2hpbnlCaW5kaW5nLnJlbmRlclZhbHVlID0gZnVuY3Rpb24oZWwsIGRhdGEpIHsNCiAgICAgICAgLy8gUmVzb2x2ZSBzdHJpbmdzIG1hcmtlZCBhcyBqYXZhc2NyaXB0IGxpdGVyYWxzIHRvIG9iamVjdHMNCiAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsNCiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGRhdGEuZXZhbHMgJiYgaSA8IGRhdGEuZXZhbHMubGVuZ3RoOyBpKyspIHsNCiAgICAgICAgICB3aW5kb3cuSFRNTFdpZGdldHMuZXZhbHVhdGVTdHJpbmdNZW1iZXIoZGF0YS54LCBkYXRhLmV2YWxzW2ldKTsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoIWJpbmRpbmdEZWYucmVuZGVyT25OdWxsVmFsdWUpIHsNCiAgICAgICAgICBpZiAoZGF0YS54ID09PSBudWxsKSB7DQogICAgICAgICAgICBlbC5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGVsLnN0eWxlLnZpc2liaWxpdHkgPSAiaW5oZXJpdCI7DQogICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmICghZWxlbWVudERhdGEoZWwsICJpbml0aWFsaXplZCIpKSB7DQogICAgICAgICAgaW5pdFNpemluZyhlbCk7DQoNCiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRpYWxpemVkIiwgdHJ1ZSk7DQogICAgICAgICAgaWYgKGJpbmRpbmdEZWYuaW5pdGlhbGl6ZSkgew0KICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGJpbmRpbmdEZWYuaW5pdGlhbGl6ZShlbCwgZWwub2Zmc2V0V2lkdGgsDQogICAgICAgICAgICAgIGVsLm9mZnNldEhlaWdodCk7DQogICAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgcmVzdWx0KTsNCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgU2hpbnkucmVuZGVyRGVwZW5kZW5jaWVzKGRhdGEuZGVwcyk7DQogICAgICAgIGJpbmRpbmdEZWYucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgZWxlbWVudERhdGEoZWwsICJpbml0X3Jlc3VsdCIpKTsNCiAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiksIFtlbCwgZGF0YS54XSk7DQogICAgICB9Ow0KDQogICAgICAvLyBPbmx5IG92ZXJyaWRlIHJlc2l6ZSBpZiBiaW5kaW5nRGVmIGltcGxlbWVudHMgaXQNCiAgICAgIGlmIChiaW5kaW5nRGVmLnJlc2l6ZSkgew0KICAgICAgICBzaGlueUJpbmRpbmcucmVzaXplID0gZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQpIHsNCiAgICAgICAgICAvLyBTaGlueSBjYW4gY2FsbCByZXNpemUgYmVmb3JlIGluaXRpYWxpemUvcmVuZGVyVmFsdWUgaGF2ZSBiZWVuDQogICAgICAgICAgLy8gY2FsbGVkLCB3aGljaCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHdpZGdldHMuDQogICAgICAgICAgaWYgKGVsZW1lbnREYXRhKGVsLCAiaW5pdGlhbGl6ZWQiKSkgew0KICAgICAgICAgICAgYmluZGluZ0RlZi5yZXNpemUoZWwsIHdpZHRoLCBoZWlnaHQsIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKSk7DQogICAgICAgICAgfQ0KICAgICAgICB9Ow0KICAgICAgfQ0KDQogICAgICBTaGlueS5vdXRwdXRCaW5kaW5ncy5yZWdpc3RlcihzaGlueUJpbmRpbmcsIGJpbmRpbmdEZWYubmFtZSk7DQogICAgfQ0KICB9Ow0KDQogIHZhciBzY2hlZHVsZVN0YXRpY1JlbmRlclRpbWVySWQgPSBudWxsOw0KICBmdW5jdGlvbiBzY2hlZHVsZVN0YXRpY1JlbmRlcigpIHsNCiAgICBpZiAoIXNjaGVkdWxlU3RhdGljUmVuZGVyVGltZXJJZCkgew0KICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsNCiAgICAgICAgc2NoZWR1bGVTdGF0aWNSZW5kZXJUaW1lcklkID0gbnVsbDsNCiAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLnN0YXRpY1JlbmRlcigpOw0KICAgICAgfSwgMSk7DQogICAgfQ0KICB9DQoNCiAgLy8gUmVuZGVyIHN0YXRpYyB3aWRnZXRzIGFmdGVyIHRoZSBkb2N1bWVudCBmaW5pc2hlcyBsb2FkaW5nDQogIC8vIFN0YXRpY2FsbHkgcmVuZGVyIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBvZiB0aGlzIHdpZGdldCdzIGNsYXNzDQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIgPSBmdW5jdGlvbigpIHsNCiAgICB2YXIgYmluZGluZ3MgPSB3aW5kb3cuSFRNTFdpZGdldHMud2lkZ2V0cyB8fCBbXTsNCiAgICBmb3JFYWNoKGJpbmRpbmdzLCBmdW5jdGlvbihiaW5kaW5nKSB7DQogICAgICB2YXIgbWF0Y2hlcyA9IGJpbmRpbmcuZmluZChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpOw0KICAgICAgZm9yRWFjaChtYXRjaGVzLCBmdW5jdGlvbihlbCkgew0KICAgICAgICB2YXIgc2l6ZU9iaiA9IGluaXRTaXppbmcoZWwsIGJpbmRpbmcpOw0KDQogICAgICAgIGlmIChoYXNDbGFzcyhlbCwgImh0bWwtd2lkZ2V0LXN0YXRpYy1ib3VuZCIpKQ0KICAgICAgICAgIHJldHVybjsNCiAgICAgICAgZWwuY2xhc3NOYW1lID0gZWwuY2xhc3NOYW1lICsgIiBodG1sLXdpZGdldC1zdGF0aWMtYm91bmQiOw0KDQogICAgICAgIHZhciBpbml0UmVzdWx0Ow0KICAgICAgICBpZiAoYmluZGluZy5pbml0aWFsaXplKSB7DQogICAgICAgICAgaW5pdFJlc3VsdCA9IGJpbmRpbmcuaW5pdGlhbGl6ZShlbCwNCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldFdpZHRoKCkgOiBlbC5vZmZzZXRXaWR0aCwNCiAgICAgICAgICAgIHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0DQogICAgICAgICAgKTsNCiAgICAgICAgICBlbGVtZW50RGF0YShlbCwgImluaXRfcmVzdWx0IiwgaW5pdFJlc3VsdCk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoYmluZGluZy5yZXNpemUpIHsNCiAgICAgICAgICB2YXIgbGFzdFNpemUgPSB7fTsNCiAgICAgICAgICB2YXIgcmVzaXplSGFuZGxlciA9IGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgIHZhciBzaXplID0gew0KICAgICAgICAgICAgICB3OiBzaXplT2JqID8gc2l6ZU9iai5nZXRXaWR0aCgpIDogZWwub2Zmc2V0V2lkdGgsDQogICAgICAgICAgICAgIGg6IHNpemVPYmogPyBzaXplT2JqLmdldEhlaWdodCgpIDogZWwub2Zmc2V0SGVpZ2h0DQogICAgICAgICAgICB9Ow0KICAgICAgICAgICAgaWYgKHNpemUudyA9PT0gMCAmJiBzaXplLmggPT09IDApDQogICAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgICAgIGlmIChzaXplLncgPT09IGxhc3RTaXplLncgJiYgc2l6ZS5oID09PSBsYXN0U2l6ZS5oKQ0KICAgICAgICAgICAgICByZXR1cm47DQogICAgICAgICAgICBsYXN0U2l6ZSA9IHNpemU7DQogICAgICAgICAgICBiaW5kaW5nLnJlc2l6ZShlbCwgc2l6ZS53LCBzaXplLmgsIGluaXRSZXN1bHQpOw0KICAgICAgICAgIH07DQoNCiAgICAgICAgICBvbih3aW5kb3csICJyZXNpemUiLCByZXNpemVIYW5kbGVyKTsNCg0KICAgICAgICAgIC8vIFRoaXMgaXMgbmVlZGVkIGZvciBjYXNlcyB3aGVyZSB3ZSdyZSBydW5uaW5nIGluIGEgU2hpbnkNCiAgICAgICAgICAvLyBhcHAsIGJ1dCB0aGUgd2lkZ2V0IGl0c2VsZiBpcyBub3QgYSBTaGlueSBvdXRwdXQsIGJ1dA0KICAgICAgICAgIC8vIHJhdGhlciBhIHNpbXBsZSBzdGF0aWMgd2lkZ2V0LiBPbmUgZXhhbXBsZSBvZiB0aGlzIGlzDQogICAgICAgICAgLy8gYW4gcm1hcmtkb3duIGRvY3VtZW50IHRoYXQgaGFzIHJ1bnRpbWU6c2hpbnkgYW5kIHdpZGdldA0KICAgICAgICAgIC8vIHRoYXQgaXNuJ3QgaW4gYSByZW5kZXIgZnVuY3Rpb24uIFNoaW55IG9ubHkga25vd3MgdG8NCiAgICAgICAgICAvLyBjYWxsIHJlc2l6ZSBoYW5kbGVycyBmb3IgU2hpbnkgb3V0cHV0cywgbm90IGZvciBzdGF0aWMNCiAgICAgICAgICAvLyB3aWRnZXRzLCBzbyB3ZSBkbyBpdCBvdXJzZWx2ZXMuDQogICAgICAgICAgaWYgKHdpbmRvdy5qUXVlcnkpIHsNCiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKA0KICAgICAgICAgICAgICAic2hvd24uaHRtbHdpZGdldHMgc2hvd24uYnMudGFiLmh0bWx3aWRnZXRzIHNob3duLmJzLmNvbGxhcHNlLmh0bWx3aWRnZXRzIiwNCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcg0KICAgICAgICAgICAgKTsNCiAgICAgICAgICAgIHdpbmRvdy5qUXVlcnkoZG9jdW1lbnQpLm9uKA0KICAgICAgICAgICAgICAiaGlkZGVuLmh0bWx3aWRnZXRzIGhpZGRlbi5icy50YWIuaHRtbHdpZGdldHMgaGlkZGVuLmJzLmNvbGxhcHNlLmh0bWx3aWRnZXRzIiwNCiAgICAgICAgICAgICAgcmVzaXplSGFuZGxlcg0KICAgICAgICAgICAgKTsNCiAgICAgICAgICB9DQoNCiAgICAgICAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIHNwZWNpZmljIGNhc2Ugb2YgaW9zbGlkZXMsIHdoaWNoDQogICAgICAgICAgLy8gZmxpcHMgc2xpZGVzIGJldHdlZW4gZGlzcGxheTpub25lIGFuZCBkaXNwbGF5OmJsb2NrLg0KICAgICAgICAgIC8vIElkZWFsbHkgd2Ugd291bGQgbm90IGhhdmUgdG8gaGF2ZSBpb3NsaWRlLXNwZWNpZmljIGNvZGUNCiAgICAgICAgICAvLyBoZXJlLCBidXQgcmF0aGVyIGhhdmUgaW9zbGlkZXMgcmFpc2UgYSBnZW5lcmljIGV2ZW50LA0KICAgICAgICAgIC8vIGJ1dCB0aGUgcm1hcmtkb3duIHBhY2thZ2UganVzdCB3ZW50IHRvIENSQU4gc28gdGhlDQogICAgICAgICAgLy8gd2luZG93IHRvIGdldHRpbmcgdGhhdCBmaXhlZCBtYXkgYmUgbG9uZy4NCiAgICAgICAgICBpZiAod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpIHsNCiAgICAgICAgICAgIC8vIEl0J3MgT0sgdG8gbGltaXQgdGhpcyB0byB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcg0KICAgICAgICAgICAgLy8gYnJvd3NlcnMgYmVjYXVzZSBpb3NsaWRlcyBpdHNlbGYgb25seSBzdXBwb3J0cw0KICAgICAgICAgICAgLy8gc3VjaCBicm93c2Vycy4NCiAgICAgICAgICAgIG9uKGRvY3VtZW50LCAic2xpZGVlbnRlciIsIHJlc2l6ZUhhbmRsZXIpOw0KICAgICAgICAgICAgb24oZG9jdW1lbnQsICJzbGlkZWxlYXZlIiwgcmVzaXplSGFuZGxlcik7DQogICAgICAgICAgfQ0KICAgICAgICB9DQoNCiAgICAgICAgdmFyIHNjcmlwdERhdGEgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJzY3JpcHRbZGF0YS1mb3I9JyIgKyBlbC5pZCArICInXVt0eXBlPSdhcHBsaWNhdGlvbi9qc29uJ10iKTsNCiAgICAgICAgaWYgKHNjcmlwdERhdGEpIHsNCiAgICAgICAgICB2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc2NyaXB0RGF0YS50ZXh0Q29udGVudCB8fCBzY3JpcHREYXRhLnRleHQpOw0KICAgICAgICAgIC8vIFJlc29sdmUgc3RyaW5ncyBtYXJrZWQgYXMgamF2YXNjcmlwdCBsaXRlcmFscyB0byBvYmplY3RzDQogICAgICAgICAgaWYgKCEoZGF0YS5ldmFscyBpbnN0YW5jZW9mIEFycmF5KSkgZGF0YS5ldmFscyA9IFtkYXRhLmV2YWxzXTsNCiAgICAgICAgICBmb3IgKHZhciBrID0gMDsgZGF0YS5ldmFscyAmJiBrIDwgZGF0YS5ldmFscy5sZW5ndGg7IGsrKykgew0KICAgICAgICAgICAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyKGRhdGEueCwgZGF0YS5ldmFsc1trXSk7DQogICAgICAgICAgfQ0KICAgICAgICAgIGJpbmRpbmcucmVuZGVyVmFsdWUoZWwsIGRhdGEueCwgaW5pdFJlc3VsdCk7DQogICAgICAgICAgZXZhbEFuZFJ1bihkYXRhLmpzSG9va3MucmVuZGVyLCBpbml0UmVzdWx0LCBbZWwsIGRhdGEueF0pOw0KICAgICAgICB9DQogICAgICB9KTsNCiAgICB9KTsNCg0KICAgIGludm9rZVBvc3RSZW5kZXJIYW5kbGVycygpOw0KICB9DQoNCiAgLy8gV2FpdCB1bnRpbCBhZnRlciB0aGUgZG9jdW1lbnQgaGFzIGxvYWRlZCB0byByZW5kZXIgdGhlIHdpZGdldHMuDQogIGlmIChkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKSB7DQogICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGZ1bmN0aW9uKCkgew0KICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsIGFyZ3VtZW50cy5jYWxsZWUsIGZhbHNlKTsNCiAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsNCiAgICB9LCBmYWxzZSk7DQogIH0gZWxzZSBpZiAoZG9jdW1lbnQuYXR0YWNoRXZlbnQpIHsNCiAgICBkb2N1bWVudC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgZnVuY3Rpb24oKSB7DQogICAgICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gImNvbXBsZXRlIikgew0KICAgICAgICBkb2N1bWVudC5kZXRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIiwgYXJndW1lbnRzLmNhbGxlZSk7DQogICAgICAgIHdpbmRvdy5IVE1MV2lkZ2V0cy5zdGF0aWNSZW5kZXIoKTsNCiAgICAgIH0NCiAgICB9KTsNCiAgfQ0KDQoNCiAgd2luZG93LkhUTUxXaWRnZXRzLmdldEF0dGFjaG1lbnRVcmwgPSBmdW5jdGlvbihkZXBuYW1lLCBrZXkpIHsNCiAgICAvLyBJZiBubyBrZXksIGRlZmF1bHQgdG8gdGhlIGZpcnN0IGl0ZW0NCiAgICBpZiAodHlwZW9mKGtleSkgPT09ICJ1bmRlZmluZWQiKQ0KICAgICAga2V5ID0gMTsNCg0KICAgIHZhciBsaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZGVwbmFtZSArICItIiArIGtleSArICItYXR0YWNobWVudCIpOw0KICAgIGlmICghbGluaykgew0KICAgICAgdGhyb3cgbmV3IEVycm9yKCJBdHRhY2htZW50ICIgKyBkZXBuYW1lICsgIi8iICsga2V5ICsgIiBub3QgZm91bmQgaW4gZG9jdW1lbnQiKTsNCiAgICB9DQogICAgcmV0dXJuIGxpbmsuZ2V0QXR0cmlidXRlKCJocmVmIik7DQogIH07DQoNCiAgd2luZG93LkhUTUxXaWRnZXRzLmRhdGFmcmFtZVRvRDMgPSBmdW5jdGlvbihkZikgew0KICAgIHZhciBuYW1lcyA9IFtdOw0KICAgIHZhciBsZW5ndGg7DQogICAgZm9yICh2YXIgbmFtZSBpbiBkZikgew0KICAgICAgICBpZiAoZGYuaGFzT3duUHJvcGVydHkobmFtZSkpDQogICAgICAgICAgICBuYW1lcy5wdXNoKG5hbWUpOw0KICAgICAgICBpZiAodHlwZW9mKGRmW25hbWVdKSAhPT0gIm9iamVjdCIgfHwgdHlwZW9mKGRmW25hbWVdLmxlbmd0aCkgPT09ICJ1bmRlZmluZWQiKSB7DQogICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkFsbCBmaWVsZHMgbXVzdCBiZSBhcnJheXMiKTsNCiAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YobGVuZ3RoKSAhPT0gInVuZGVmaW5lZCIgJiYgbGVuZ3RoICE9PSBkZltuYW1lXS5sZW5ndGgpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxsIGZpZWxkcyBtdXN0IGJlIGFycmF5cyBvZiB0aGUgc2FtZSBsZW5ndGgiKTsNCiAgICAgICAgfQ0KICAgICAgICBsZW5ndGggPSBkZltuYW1lXS5sZW5ndGg7DQogICAgfQ0KICAgIHZhciByZXN1bHRzID0gW107DQogICAgdmFyIGl0ZW07DQogICAgZm9yICh2YXIgcm93ID0gMDsgcm93IDwgbGVuZ3RoOyByb3crKykgew0KICAgICAgICBpdGVtID0ge307DQogICAgICAgIGZvciAodmFyIGNvbCA9IDA7IGNvbCA8IG5hbWVzLmxlbmd0aDsgY29sKyspIHsNCiAgICAgICAgICAgIGl0ZW1bbmFtZXNbY29sXV0gPSBkZltuYW1lc1tjb2xdXVtyb3ddOw0KICAgICAgICB9DQogICAgICAgIHJlc3VsdHMucHVzaChpdGVtKTsNCiAgICB9DQogICAgcmV0dXJuIHJlc3VsdHM7DQogIH07DQoNCiAgd2luZG93LkhUTUxXaWRnZXRzLnRyYW5zcG9zZUFycmF5MkQgPSBmdW5jdGlvbihhcnJheSkgew0KICAgICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFycmF5Ow0KICAgICAgdmFyIG5ld0FycmF5ID0gYXJyYXlbMF0ubWFwKGZ1bmN0aW9uKGNvbCwgaSkgew0KICAgICAgICAgIHJldHVybiBhcnJheS5tYXAoZnVuY3Rpb24ocm93KSB7DQogICAgICAgICAgICAgIHJldHVybiByb3dbaV0NCiAgICAgICAgICB9KQ0KICAgICAgfSk7DQogICAgICByZXR1cm4gbmV3QXJyYXk7DQogIH07DQogIC8vIFNwbGl0IHZhbHVlIGF0IHNwbGl0Q2hhciwgYnV0IGFsbG93IHNwbGl0Q2hhciB0byBiZSBlc2NhcGVkDQogIC8vIHVzaW5nIGVzY2FwZUNoYXIuIEFueSBvdGhlciBjaGFyYWN0ZXJzIGVzY2FwZWQgYnkgZXNjYXBlQ2hhcg0KICAvLyB3aWxsIGJlIGluY2x1ZGVkIGFzIHVzdWFsIChpbmNsdWRpbmcgZXNjYXBlQ2hhciBpdHNlbGYpLg0KICBmdW5jdGlvbiBzcGxpdFdpdGhFc2NhcGUodmFsdWUsIHNwbGl0Q2hhciwgZXNjYXBlQ2hhcikgew0KICAgIHZhciByZXN1bHRzID0gW107DQogICAgdmFyIGVzY2FwZU1vZGUgPSBmYWxzZTsNCiAgICB2YXIgY3VycmVudFJlc3VsdCA9ICIiOw0KICAgIGZvciAodmFyIHBvcyA9IDA7IHBvcyA8IHZhbHVlLmxlbmd0aDsgcG9zKyspIHsNCiAgICAgIGlmICghZXNjYXBlTW9kZSkgew0KICAgICAgICBpZiAodmFsdWVbcG9zXSA9PT0gc3BsaXRDaGFyKSB7DQogICAgICAgICAgcmVzdWx0cy5wdXNoKGN1cnJlbnRSZXN1bHQpOw0KICAgICAgICAgIGN1cnJlbnRSZXN1bHQgPSAiIjsNCiAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVtwb3NdID09PSBlc2NhcGVDaGFyKSB7DQogICAgICAgICAgZXNjYXBlTW9kZSA9IHRydWU7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgY3VycmVudFJlc3VsdCArPSB2YWx1ZVtwb3NdOw0KICAgICAgICB9DQogICAgICB9IGVsc2Ugew0KICAgICAgICBjdXJyZW50UmVzdWx0ICs9IHZhbHVlW3Bvc107DQogICAgICAgIGVzY2FwZU1vZGUgPSBmYWxzZTsNCiAgICAgIH0NCiAgICB9DQogICAgaWYgKGN1cnJlbnRSZXN1bHQgIT09ICIiKSB7DQogICAgICByZXN1bHRzLnB1c2goY3VycmVudFJlc3VsdCk7DQogICAgfQ0KICAgIHJldHVybiByZXN1bHRzOw0KICB9DQogIC8vIEZ1bmN0aW9uIGF1dGhvcmVkIGJ5IFlpaHVpL0pKIEFsbGFpcmUNCiAgd2luZG93LkhUTUxXaWRnZXRzLmV2YWx1YXRlU3RyaW5nTWVtYmVyID0gZnVuY3Rpb24obywgbWVtYmVyKSB7DQogICAgdmFyIHBhcnRzID0gc3BsaXRXaXRoRXNjYXBlKG1lbWJlciwgJy4nLCAnXFwnKTsNCiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHBhcnRzLmxlbmd0aDsgaSA8IGw7IGkrKykgew0KICAgICAgdmFyIHBhcnQgPSBwYXJ0c1tpXTsNCiAgICAgIC8vIHBhcnQgbWF5IGJlIGEgY2hhcmFjdGVyIG9yICdudW1lcmljJyBtZW1iZXIgbmFtZQ0KICAgICAgaWYgKG8gIT09IG51bGwgJiYgdHlwZW9mIG8gPT09ICJvYmplY3QiICYmIHBhcnQgaW4gbykgew0KICAgICAgICBpZiAoaSA9PSAobCAtIDEpKSB7IC8vIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaW5lIHRoZW4gZXZhbHVsYXRlDQogICAgICAgICAgaWYgKHR5cGVvZiBvW3BhcnRdID09PSAic3RyaW5nIikNCiAgICAgICAgICAgIG9bcGFydF0gPSBldmFsKCIoIiArIG9bcGFydF0gKyAiKSIpOw0KICAgICAgICB9IGVsc2UgeyAvLyBvdGhlcndpc2UgY29udGludWUgdG8gbmV4dCBlbWJlZGRlZCBvYmplY3QNCiAgICAgICAgICBvID0gb1twYXJ0XTsNCiAgICAgICAgfQ0KICAgICAgfQ0KICAgIH0NCiAgfTsNCg0KICAvLyBSZXRyaWV2ZSB0aGUgSFRNTFdpZGdldCBpbnN0YW5jZSAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlIG9mIGFuDQogIC8vIEhUTUxXaWRnZXQgYmluZGluZydzIGluaXRpYWxpemUoKSBvciBmYWN0b3J5KCkgZnVuY3Rpb24pDQogIC8vIGFzc29jaWF0ZWQgd2l0aCBhbiBlbGVtZW50LCBvciBudWxsIGlmIG5vbmUuDQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZSA9IGZ1bmN0aW9uKGVsKSB7DQogICAgcmV0dXJuIGVsZW1lbnREYXRhKGVsLCAiaW5pdF9yZXN1bHQiKTsNCiAgfTsNCg0KICAvLyBGaW5kcyB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaGVzIHRoZSBzZWxlY3RvciwNCiAgLy8gYW5kIHJldHVybnMgdGhlIEhUTUxXaWRnZXQgaW5zdGFuY2UgKGkuZS4gdGhlIHJldHVybiB2YWx1ZSBvZg0KICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQ0KICAvLyBhc3NvY2lhdGVkIHdpdGggdGhhdCBlbGVtZW50LCBpZiBhbnkuIElmIG5vIGVsZW1lbnQgbWF0Y2hlcyB0aGUNCiAgLy8gc2VsZWN0b3IsIG9yIHRoZSBmaXJzdCBtYXRjaGluZyBlbGVtZW50IGhhcyBubyBIVE1MV2lkZ2V0DQogIC8vIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCBpdCwgdGhlbiBudWxsIGlzIHJldHVybmVkLg0KICAvLw0KICAvLyBUaGUgc2NvcGUgYXJndW1lbnQgaXMgb3B0aW9uYWwsIGFuZCBkZWZhdWx0cyB0byB3aW5kb3cuZG9jdW1lbnQuDQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5maW5kID0gZnVuY3Rpb24oc2NvcGUsIHNlbGVjdG9yKSB7DQogICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT0gMSkgew0KICAgICAgc2VsZWN0b3IgPSBzY29wZTsNCiAgICAgIHNjb3BlID0gZG9jdW1lbnQ7DQogICAgfQ0KDQogICAgdmFyIGVsID0gc2NvcGUucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7DQogICAgaWYgKGVsID09PSBudWxsKSB7DQogICAgICByZXR1cm4gbnVsbDsNCiAgICB9IGVsc2Ugew0KICAgICAgcmV0dXJuIHdpbmRvdy5IVE1MV2lkZ2V0cy5nZXRJbnN0YW5jZShlbCk7DQogICAgfQ0KICB9Ow0KDQogIC8vIEZpbmRzIGFsbCBlbGVtZW50cyBpbiB0aGUgc2NvcGUgdGhhdCBtYXRjaCB0aGUgc2VsZWN0b3IsIGFuZA0KICAvLyByZXR1cm5zIHRoZSBIVE1MV2lkZ2V0IGluc3RhbmNlcyAoaS5lLiB0aGUgcmV0dXJuIHZhbHVlcyBvZg0KICAvLyBhbiBIVE1MV2lkZ2V0IGJpbmRpbmcncyBpbml0aWFsaXplKCkgb3IgZmFjdG9yeSgpIGZ1bmN0aW9uKQ0KICAvLyBhc3NvY2lhdGVkIHdpdGggdGhlIGVsZW1lbnRzLCBpbiBhbiBhcnJheS4gSWYgZWxlbWVudHMgdGhhdA0KICAvLyBtYXRjaCB0aGUgc2VsZWN0b3IgZG9uJ3QgaGF2ZSBhbiBhc3NvY2lhdGVkIEhUTUxXaWRnZXQNCiAgLy8gaW5zdGFuY2UsIHRoZSByZXR1cm5lZCBhcnJheSB3aWxsIGNvbnRhaW4gbnVsbHMuDQogIC8vDQogIC8vIFRoZSBzY29wZSBhcmd1bWVudCBpcyBvcHRpb25hbCwgYW5kIGRlZmF1bHRzIHRvIHdpbmRvdy5kb2N1bWVudC4NCiAgd2luZG93LkhUTUxXaWRnZXRzLmZpbmRBbGwgPSBmdW5jdGlvbihzY29wZSwgc2VsZWN0b3IpIHsNCiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PSAxKSB7DQogICAgICBzZWxlY3RvciA9IHNjb3BlOw0KICAgICAgc2NvcGUgPSBkb2N1bWVudDsNCiAgICB9DQoNCiAgICB2YXIgbm9kZXMgPSBzY29wZS5xdWVyeVNlbGVjdG9yQWxsKHNlbGVjdG9yKTsNCiAgICB2YXIgcmVzdWx0cyA9IFtdOw0KICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsNCiAgICAgIHJlc3VsdHMucHVzaCh3aW5kb3cuSFRNTFdpZGdldHMuZ2V0SW5zdGFuY2Uobm9kZXNbaV0pKTsNCiAgICB9DQogICAgcmV0dXJuIHJlc3VsdHM7DQogIH07DQoNCiAgdmFyIHBvc3RSZW5kZXJIYW5kbGVycyA9IFtdOw0KICBmdW5jdGlvbiBpbnZva2VQb3N0UmVuZGVySGFuZGxlcnMoKSB7DQogICAgd2hpbGUgKHBvc3RSZW5kZXJIYW5kbGVycy5sZW5ndGgpIHsNCiAgICAgIHZhciBoYW5kbGVyID0gcG9zdFJlbmRlckhhbmRsZXJzLnNoaWZ0KCk7DQogICAgICBpZiAoaGFuZGxlcikgew0KICAgICAgICBoYW5kbGVyKCk7DQogICAgICB9DQogICAgfQ0KICB9DQoNCiAgLy8gUmVnaXN0ZXIgdGhlIGdpdmVuIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGludm9rZWQgYWZ0ZXIgdGhlDQogIC8vIG5leHQgdGltZSBzdGF0aWMgd2lkZ2V0cyBhcmUgcmVuZGVyZWQuDQogIHdpbmRvdy5IVE1MV2lkZ2V0cy5hZGRQb3N0UmVuZGVySGFuZGxlciA9IGZ1bmN0aW9uKGNhbGxiYWNrKSB7DQogICAgcG9zdFJlbmRlckhhbmRsZXJzLnB1c2goY2FsbGJhY2spOw0KICB9Ow0KDQogIC8vIFRha2VzIGEgbmV3LXN0eWxlIGluc3RhbmNlLWJvdW5kIGRlZmluaXRpb24sIGFuZCByZXR1cm5zIGFuDQogIC8vIG9sZC1zdHlsZSBjbGFzcy1ib3VuZCBkZWZpbml0aW9uLiBUaGlzIHNhdmVzIHVzIGZyb20gaGF2aW5nDQogIC8vIHRvIHJld3JpdGUgYWxsIHRoZSBsb2dpYyBpbiB0aGlzIGZpbGUgdG8gYWNjb21vZGF0ZSBib3RoDQogIC8vIHR5cGVzIG9mIGRlZmluaXRpb25zLg0KICBmdW5jdGlvbiBjcmVhdGVMZWdhY3lEZWZpbml0aW9uQWRhcHRlcihkZWZuKSB7DQogICAgdmFyIHJlc3VsdCA9IHsNCiAgICAgIG5hbWU6IGRlZm4ubmFtZSwNCiAgICAgIHR5cGU6IGRlZm4udHlwZSwNCiAgICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKGVsLCB3aWR0aCwgaGVpZ2h0KSB7DQogICAgICAgIHJldHVybiBkZWZuLmZhY3RvcnkoZWwsIHdpZHRoLCBoZWlnaHQpOw0KICAgICAgfSwNCiAgICAgIHJlbmRlclZhbHVlOiBmdW5jdGlvbihlbCwgeCwgaW5zdGFuY2UpIHsNCiAgICAgICAgcmV0dXJuIGluc3RhbmNlLnJlbmRlclZhbHVlKHgpOw0KICAgICAgfSwNCiAgICAgIHJlc2l6ZTogZnVuY3Rpb24oZWwsIHdpZHRoLCBoZWlnaHQsIGluc3RhbmNlKSB7DQogICAgICAgIHJldHVybiBpbnN0YW5jZS5yZXNpemUod2lkdGgsIGhlaWdodCk7DQogICAgICB9DQogICAgfTsNCg0KICAgIGlmIChkZWZuLmZpbmQpDQogICAgICByZXN1bHQuZmluZCA9IGRlZm4uZmluZDsNCiAgICBpZiAoZGVmbi5yZW5kZXJFcnJvcikNCiAgICAgIHJlc3VsdC5yZW5kZXJFcnJvciA9IGRlZm4ucmVuZGVyRXJyb3I7DQogICAgaWYgKGRlZm4uY2xlYXJFcnJvcikNCiAgICAgIHJlc3VsdC5jbGVhckVycm9yID0gZGVmbi5jbGVhckVycm9yOw0KDQogICAgcmV0dXJuIHJlc3VsdDsNCiAgfQ0KfSkoKTsNCg0K"></script>
<script src="data:application/x-javascript;base64,SFRNTFdpZGdldHMud2lkZ2V0KHsNCg0KICBuYW1lOiAndnVlJywNCg0KICB0eXBlOiAnb3V0cHV0JywNCg0KICBmYWN0b3J5OiBmdW5jdGlvbihlbCwgd2lkdGgsIGhlaWdodCkgew0KDQogICAgdmFyIGluc3RhbmNlID0ge307DQoNCiAgICByZXR1cm4gew0KDQogICAgICByZW5kZXJWYWx1ZTogZnVuY3Rpb24oeCkgew0KICAgICAgICAvLyBpZiB4LmVsIGlzIHNwZWNpZmllZCB0aGVuIHVzZSBpdCBhbmQNCiAgICAgICAgLy8gICBoaWRlIG91ciBodG1sd2lkZ2V0IGNvbnRhaW5lcg0KICAgICAgICBpZih4LmVsKSB7DQogICAgICAgICAgZWwuc3R5bGUuZGlzcGxheSA9ICJub25lIjsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAvLyB4LmVsIG5vdCBzcGVjaWZpZWQgc28gdXNlIG91ciBodG1sd2lkZ2V0IGVsDQogICAgICAgICAgLy8gIGNvbnRhaW5lciBmb3Igb3VyIFZ1ZSBhcHAgYnV0IHRoaXMgd2lsbA0KICAgICAgICAgIC8vICB3aWxsIHByb2JhYmx5IG5vdCB3b3JrIGFzIGV4cGVjdGVkDQogICAgICAgICAgLy8gIHNpbmNlIHRoZSB0YWcgaXMganVzdCBhIGRpdg0KICAgICAgICAgIHguZWwgPSAiIyIgKyBlbC5pZDsNCiAgICAgICAgfQ0KDQogICAgICAgIHRoaXMuaW5zdGFuY2UgPSBuZXcgVnVlKHgpOw0KDQogICAgICB9LA0KDQogICAgICByZXNpemU6IGZ1bmN0aW9uKHdpZHRoLCBoZWlnaHQpIHsNCg0KICAgICAgICAvLyBmb3Igbm93IGlnbm9yZSByZXNpemUgaG9wZWZ1bGx5IHdpdGhvdXQNCiAgICAgICAgLy8gICBtdWNoIGNvbnNlcXVlbmNlDQoNCiAgICAgIH0sDQoNCiAgICAgIGluc3RhbmNlOiBpbnN0YW5jZQ0KDQogICAgfTsNCiAgfQ0KfSk7DQo="></script>
<script src="data:application/x-javascript;base64,LyohDQogKiBWdWUuanMgdjIuMS4zDQogKiAoYykgMjAxNC0yMDE2IEV2YW4gWW91DQogKiBSZWxlYXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuDQogKi8NCiFmdW5jdGlvbihlLHQpeyJvYmplY3QiPT10eXBlb2YgZXhwb3J0cyYmInVuZGVmaW5lZCIhPXR5cGVvZiBtb2R1bGU/bW9kdWxlLmV4cG9ydHM9dCgpOiJmdW5jdGlvbiI9PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQ/ZGVmaW5lKHQpOmUuVnVlPXQoKX0odGhpcyxmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBlKGUpe3JldHVybiBudWxsPT1lPyIiOiJvYmplY3QiPT10eXBlb2YgZT9KU09OLnN0cmluZ2lmeShlLG51bGwsMik6U3RyaW5nKGUpfWZ1bmN0aW9uIHQoZSl7dmFyIHQ9cGFyc2VGbG9hdChlLDEwKTtyZXR1cm4gdHx8MD09PXQ/dDplfWZ1bmN0aW9uIG4oZSx0KXtmb3IodmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKSxyPWUuc3BsaXQoIiwiKSxpPTA7aTxyLmxlbmd0aDtpKyspbltyW2ldXT0hMDtyZXR1cm4gdD9mdW5jdGlvbihlKXtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldfTpmdW5jdGlvbihlKXtyZXR1cm4gbltlXX19ZnVuY3Rpb24gcihlLHQpe2lmKGUubGVuZ3RoKXt2YXIgbj1lLmluZGV4T2YodCk7aWYobj4tMSlyZXR1cm4gZS5zcGxpY2UobiwxKX19ZnVuY3Rpb24gaShlLHQpe3JldHVybiBVci5jYWxsKGUsdCl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZX1mdW5jdGlvbiBhKGUpe3ZhciB0PU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGZ1bmN0aW9uKG4pe3ZhciByPXRbbl07cmV0dXJuIHJ8fCh0W25dPWUobikpfX1mdW5jdGlvbiBzKGUsdCl7ZnVuY3Rpb24gbihuKXt2YXIgcj1hcmd1bWVudHMubGVuZ3RoO3JldHVybiByP3I+MT9lLmFwcGx5KHQsYXJndW1lbnRzKTplLmNhbGwodCxuKTplLmNhbGwodCl9cmV0dXJuIG4uX2xlbmd0aD1lLmxlbmd0aCxufWZ1bmN0aW9uIGMoZSx0KXt0PXR8fDA7Zm9yKHZhciBuPWUubGVuZ3RoLXQscj1uZXcgQXJyYXkobik7bi0tOylyW25dPWVbbit0XTtyZXR1cm4gcn1mdW5jdGlvbiBsKGUsdCl7Zm9yKHZhciBuIGluIHQpZVtuXT10W25dO3JldHVybiBlfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGV9ZnVuY3Rpb24gZihlKXtyZXR1cm4gcXIuY2FsbChlKT09PVdyfWZ1bmN0aW9uIGQoZSl7Zm9yKHZhciB0PXt9LG49MDtuPGUubGVuZ3RoO24rKyllW25dJiZsKHQsZVtuXSk7cmV0dXJuIHR9ZnVuY3Rpb24gcCgpe31mdW5jdGlvbiB2KGUpe3JldHVybiBlLnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBlLmNvbmNhdCh0LnN0YXRpY0tleXN8fFtdKX0sW10pLmpvaW4oIiwiKX1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuIGU9PXR8fCEoIXUoZSl8fCF1KHQpKSYmSlNPTi5zdHJpbmdpZnkoZSk9PT1KU09OLnN0cmluZ2lmeSh0KX1mdW5jdGlvbiBtKGUsdCl7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspaWYoaChlW25dLHQpKXJldHVybiBuO3JldHVybi0xfWZ1bmN0aW9uIGcoZSl7dmFyIHQ9KGUrIiIpLmNoYXJDb2RlQXQoMCk7cmV0dXJuIDM2PT09dHx8OTU9PT10fWZ1bmN0aW9uIHkoZSx0LG4scil7T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxlOiEhcix3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9KX1mdW5jdGlvbiBfKGUpe2lmKCFHci50ZXN0KGUpKXt2YXIgdD1lLnNwbGl0KCIuIik7cmV0dXJuIGZ1bmN0aW9uKGUpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXtpZighZSlyZXR1cm47ZT1lW3Rbbl1dfXJldHVybiBlfX19ZnVuY3Rpb24gYihlKXtyZXR1cm4vbmF0aXZlIGNvZGUvLnRlc3QoZS50b1N0cmluZygpKX1mdW5jdGlvbiAkKGUpe2RpLnRhcmdldCYmcGkucHVzaChkaS50YXJnZXQpLGRpLnRhcmdldD1lfWZ1bmN0aW9uIHcoKXtkaS50YXJnZXQ9cGkucG9wKCl9ZnVuY3Rpb24geChlLHQpe2UuX19wcm90b19fPXR9ZnVuY3Rpb24gQyhlLHQsbil7Zm9yKHZhciByPTAsaT1uLmxlbmd0aDtyPGk7cisrKXt2YXIgbz1uW3JdO3koZSxvLHRbb10pfX1mdW5jdGlvbiBrKGUpe2lmKHUoZSkpe3ZhciB0O3JldHVybiBpKGUsIl9fb2JfXyIpJiZlLl9fb2JfXyBpbnN0YW5jZW9mIHlpP3Q9ZS5fX29iX186Z2kuc2hvdWxkQ29udmVydCYmIW9pKCkmJihBcnJheS5pc0FycmF5KGUpfHxmKGUpKSYmT2JqZWN0LmlzRXh0ZW5zaWJsZShlKSYmIWUuX2lzVnVlJiYodD1uZXcgeWkoZSkpLHR9fWZ1bmN0aW9uIEEoZSx0LG4scil7dmFyIGk9bmV3IGRpLG89T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlLHQpO2lmKCFvfHxvLmNvbmZpZ3VyYWJsZSE9PSExKXt2YXIgYT1vJiZvLmdldCxzPW8mJm8uc2V0LGM9ayhuKTtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVuY3Rpb24oKXt2YXIgdD1hP2EuY2FsbChlKTpuO3JldHVybiBkaS50YXJnZXQmJihpLmRlcGVuZCgpLGMmJmMuZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkodCkmJlQodCkpLHR9LHNldDpmdW5jdGlvbih0KXt2YXIgcj1hP2EuY2FsbChlKTpuO3Q9PT1yfHx0IT09dCYmciE9PXJ8fChzP3MuY2FsbChlLHQpOm49dCxjPWsodCksaS5ub3RpZnkoKSl9fSl9fWZ1bmN0aW9uIE8oZSx0LG4pe2lmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUubGVuZ3RoPU1hdGgubWF4KGUubGVuZ3RoLHQpLGUuc3BsaWNlKHQsMSxuKSxuO2lmKGkoZSx0KSlyZXR1cm4gdm9pZChlW3RdPW4pO3ZhciByPWUuX19vYl9fO2lmKCEoZS5faXNWdWV8fHImJnIudm1Db3VudCkpcmV0dXJuIHI/KEEoci52YWx1ZSx0LG4pLHIuZGVwLm5vdGlmeSgpLG4pOnZvaWQoZVt0XT1uKX1mdW5jdGlvbiBTKGUsdCl7dmFyIG49ZS5fX29iX187ZS5faXNWdWV8fG4mJm4udm1Db3VudHx8aShlLHQpJiYoZGVsZXRlIGVbdF0sbiYmbi5kZXAubm90aWZ5KCkpfWZ1bmN0aW9uIFQoZSl7Zm9yKHZhciB0PXZvaWQgMCxuPTAscj1lLmxlbmd0aDtuPHI7bisrKXQ9ZVtuXSx0JiZ0Ll9fb2JfXyYmdC5fX29iX18uZGVwLmRlcGVuZCgpLEFycmF5LmlzQXJyYXkodCkmJlQodCl9ZnVuY3Rpb24gaihlLHQpe2lmKCF0KXJldHVybiBlO2Zvcih2YXIgbixyLG8sYT1PYmplY3Qua2V5cyh0KSxzPTA7czxhLmxlbmd0aDtzKyspbj1hW3NdLHI9ZVtuXSxvPXRbbl0saShlLG4pP2YocikmJmYobykmJmoocixvKTpPKGUsbixvKTtyZXR1cm4gZX1mdW5jdGlvbiBFKGUsdCl7cmV0dXJuIHQ/ZT9lLmNvbmNhdCh0KTpBcnJheS5pc0FycmF5KHQpP3Q6W3RdOmV9ZnVuY3Rpb24gTihlLHQpe3ZhciBuPU9iamVjdC5jcmVhdGUoZXx8bnVsbCk7cmV0dXJuIHQ/bChuLHQpOm59ZnVuY3Rpb24gTChlKXt2YXIgdD1lLnByb3BzO2lmKHQpe3ZhciBuLHIsaSxvPXt9O2lmKEFycmF5LmlzQXJyYXkodCkpZm9yKG49dC5sZW5ndGg7bi0tOylyPXRbbl0sInN0cmluZyI9PXR5cGVvZiByJiYoaT1WcihyKSxvW2ldPXt0eXBlOm51bGx9KTtlbHNlIGlmKGYodCkpZm9yKHZhciBhIGluIHQpcj10W2FdLGk9VnIoYSksb1tpXT1mKHIpP3I6e3R5cGU6cn07ZS5wcm9wcz1vfX1mdW5jdGlvbiBEKGUpe3ZhciB0PWUuZGlyZWN0aXZlcztpZih0KWZvcih2YXIgbiBpbiB0KXt2YXIgcj10W25dOyJmdW5jdGlvbiI9PXR5cGVvZiByJiYodFtuXT17YmluZDpyLHVwZGF0ZTpyfSl9fWZ1bmN0aW9uIE0oZSx0LG4pe2Z1bmN0aW9uIHIocil7dmFyIGk9X2lbcl18fGJpO3Vbcl09aShlW3JdLHRbcl0sbixyKX1MKHQpLEQodCk7dmFyIG89dC5leHRlbmRzO2lmKG8mJihlPSJmdW5jdGlvbiI9PXR5cGVvZiBvP00oZSxvLm9wdGlvbnMsbik6TShlLG8sbikpLHQubWl4aW5zKWZvcih2YXIgYT0wLHM9dC5taXhpbnMubGVuZ3RoO2E8czthKyspe3ZhciBjPXQubWl4aW5zW2FdO2MucHJvdG90eXBlIGluc3RhbmNlb2YgUmUmJihjPWMub3B0aW9ucyksZT1NKGUsYyxuKX12YXIgbCx1PXt9O2ZvcihsIGluIGUpcihsKTtmb3IobCBpbiB0KWkoZSxsKXx8cihsKTtyZXR1cm4gdX1mdW5jdGlvbiBQKGUsdCxuLHIpe2lmKCJzdHJpbmciPT10eXBlb2Ygbil7dmFyIGk9ZVt0XSxvPWlbbl18fGlbVnIobildfHxpW3pyKFZyKG4pKV07cmV0dXJuIG99fWZ1bmN0aW9uIFIoZSx0LG4scil7dmFyIG89dFtlXSxhPSFpKG4sZSkscz1uW2VdO2lmKEIoby50eXBlKSYmKGEmJiFpKG8sImRlZmF1bHQiKT9zPSExOiIiIT09cyYmcyE9PUtyKGUpfHwocz0hMCkpLHZvaWQgMD09PXMpe3M9SShyLG8sZSk7dmFyIGM9Z2kuc2hvdWxkQ29udmVydDtnaS5zaG91bGRDb252ZXJ0PSEwLGsocyksZ2kuc2hvdWxkQ29udmVydD1jfXJldHVybiBzfWZ1bmN0aW9uIEkoZSx0LG4pe2lmKGkodCwiZGVmYXVsdCIpKXt2YXIgcj10LmRlZmF1bHQ7cmV0dXJuIHUociksZSYmZS4kb3B0aW9ucy5wcm9wc0RhdGEmJnZvaWQgMD09PWUuJG9wdGlvbnMucHJvcHNEYXRhW25dJiZ2b2lkIDAhPT1lW25dP2Vbbl06ImZ1bmN0aW9uIj09dHlwZW9mIHImJnQudHlwZSE9PUZ1bmN0aW9uP3IuY2FsbChlKTpyfX1mdW5jdGlvbiBGKGUpe3ZhciB0PWUmJmUudG9TdHJpbmcoKS5tYXRjaCgvXlxzKmZ1bmN0aW9uIChcdyspLyk7cmV0dXJuIHQmJnRbMV19ZnVuY3Rpb24gQihlKXtpZighQXJyYXkuaXNBcnJheShlKSlyZXR1cm4iQm9vbGVhbiI9PT1GKGUpO2Zvcih2YXIgdD0wLG49ZS5sZW5ndGg7dDxuO3QrKylpZigiQm9vbGVhbiI9PT1GKGVbdF0pKXJldHVybiEwO3JldHVybiExfWZ1bmN0aW9uIFUoKXt3aS5sZW5ndGg9MCx4aT17fSxDaT1raT0hMX1mdW5jdGlvbiBIKCl7Zm9yKGtpPSEwLHdpLnNvcnQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZS5pZC10LmlkfSksQWk9MDtBaTx3aS5sZW5ndGg7QWkrKyl7dmFyIGU9d2lbQWldLHQ9ZS5pZDt4aVt0XT1udWxsLGUucnVuKCl9YWkmJmxpLmRldnRvb2xzJiZhaS5lbWl0KCJmbHVzaCIpLFUoKX1mdW5jdGlvbiBWKGUpe3ZhciB0PWUuaWQ7aWYobnVsbD09eGlbdF0pe2lmKHhpW3RdPSEwLGtpKXtmb3IodmFyIG49d2kubGVuZ3RoLTE7bj49MCYmd2lbbl0uaWQ+ZS5pZDspbi0tO3dpLnNwbGljZShNYXRoLm1heChuLEFpKSsxLDAsZSl9ZWxzZSB3aS5wdXNoKGUpO0NpfHwoQ2k9ITAsc2koSCkpfX1mdW5jdGlvbiB6KGUpe1RpLmNsZWFyKCksSihlLFRpKX1mdW5jdGlvbiBKKGUsdCl7dmFyIG4scixpPUFycmF5LmlzQXJyYXkoZSk7aWYoKGl8fHUoZSkpJiZPYmplY3QuaXNFeHRlbnNpYmxlKGUpKXtpZihlLl9fb2JfXyl7dmFyIG89ZS5fX29iX18uZGVwLmlkO2lmKHQuaGFzKG8pKXJldHVybjt0LmFkZChvKX1pZihpKWZvcihuPWUubGVuZ3RoO24tLTspSihlW25dLHQpO2Vsc2UgZm9yKHI9T2JqZWN0LmtleXMoZSksbj1yLmxlbmd0aDtuLS07KUooZVtyW25dXSx0KX19ZnVuY3Rpb24gSyhlKXtlLl93YXRjaGVycz1bXSxxKGUpLFcoZSksWihlKSxZKGUpLFEoZSl9ZnVuY3Rpb24gcShlKXt2YXIgdD1lLiRvcHRpb25zLnByb3BzO2lmKHQpe3ZhciBuPWUuJG9wdGlvbnMucHJvcHNEYXRhfHx7fSxyPWUuJG9wdGlvbnMuX3Byb3BLZXlzPU9iamVjdC5rZXlzKHQpLGk9IWUuJHBhcmVudDtnaS5zaG91bGRDb252ZXJ0PWk7Zm9yKHZhciBvPWZ1bmN0aW9uKGkpe3ZhciBvPXJbaV07QShlLG8sUihvLHQsbixlKSl9LGE9MDthPHIubGVuZ3RoO2ErKylvKGEpO2dpLnNob3VsZENvbnZlcnQ9ITB9fWZ1bmN0aW9uIFcoZSl7dmFyIHQ9ZS4kb3B0aW9ucy5kYXRhO3Q9ZS5fZGF0YT0iZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwoZSk6dHx8e30sZih0KXx8KHQ9e30pO2Zvcih2YXIgbj1PYmplY3Qua2V5cyh0KSxyPWUuJG9wdGlvbnMucHJvcHMsbz1uLmxlbmd0aDtvLS07KXImJmkocixuW29dKXx8dGUoZSxuW29dKTtrKHQpLHQuX19vYl9fJiZ0Ll9fb2JfXy52bUNvdW50Kyt9ZnVuY3Rpb24gWihlKXt2YXIgdD1lLiRvcHRpb25zLmNvbXB1dGVkO2lmKHQpZm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07ImZ1bmN0aW9uIj09dHlwZW9mIHI/KGppLmdldD1HKHIsZSksamkuc2V0PXApOihqaS5nZXQ9ci5nZXQ/ci5jYWNoZSE9PSExP0coci5nZXQsZSk6cyhyLmdldCxlKTpwLGppLnNldD1yLnNldD9zKHIuc2V0LGUpOnApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLG4samkpfX1mdW5jdGlvbiBHKGUsdCl7dmFyIG49bmV3IFNpKHQsZSxwLHtsYXp5OiEwfSk7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG4uZGlydHkmJm4uZXZhbHVhdGUoKSxkaS50YXJnZXQmJm4uZGVwZW5kKCksbi52YWx1ZX19ZnVuY3Rpb24gWShlKXt2YXIgdD1lLiRvcHRpb25zLm1ldGhvZHM7aWYodClmb3IodmFyIG4gaW4gdCllW25dPW51bGw9PXRbbl0/cDpzKHRbbl0sZSl9ZnVuY3Rpb24gUShlKXt2YXIgdD1lLiRvcHRpb25zLndhdGNoO2lmKHQpZm9yKHZhciBuIGluIHQpe3ZhciByPXRbbl07aWYoQXJyYXkuaXNBcnJheShyKSlmb3IodmFyIGk9MDtpPHIubGVuZ3RoO2krKylYKGUsbixyW2ldKTtlbHNlIFgoZSxuLHIpfX1mdW5jdGlvbiBYKGUsdCxuKXt2YXIgcjtmKG4pJiYocj1uLG49bi5oYW5kbGVyKSwic3RyaW5nIj09dHlwZW9mIG4mJihuPWVbbl0pLGUuJHdhdGNoKHQsbixyKX1mdW5jdGlvbiBlZShlKXt2YXIgdD17fTt0LmdldD1mdW5jdGlvbigpe3JldHVybiB0aGlzLl9kYXRhfSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIiRkYXRhIix0KSxlLnByb3RvdHlwZS4kc2V0PU8sZS5wcm90b3R5cGUuJGRlbGV0ZT1TLGUucHJvdG90eXBlLiR3YXRjaD1mdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcztuPW58fHt9LG4udXNlcj0hMDt2YXIgaT1uZXcgU2kocixlLHQsbik7cmV0dXJuIG4uaW1tZWRpYXRlJiZ0LmNhbGwocixpLnZhbHVlKSxmdW5jdGlvbigpe2kudGVhcmRvd24oKX19fWZ1bmN0aW9uIHRlKGUsdCl7Zyh0KXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7Y29uZmlndXJhYmxlOiEwLGVudW1lcmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGUuX2RhdGFbdF19LHNldDpmdW5jdGlvbihuKXtlLl9kYXRhW3RdPW59fSl9ZnVuY3Rpb24gbmUoZSl7dmFyIHQ9bmV3IEVpKGUudGFnLGUuZGF0YSxlLmNoaWxkcmVuLGUudGV4dCxlLmVsbSxlLm5zLGUuY29udGV4dCxlLmNvbXBvbmVudE9wdGlvbnMpO3JldHVybiB0LmlzU3RhdGljPWUuaXNTdGF0aWMsdC5rZXk9ZS5rZXksdC5pc0Nsb25lZD0hMCx0fWZ1bmN0aW9uIHJlKGUpe2Zvcih2YXIgdD1uZXcgQXJyYXkoZS5sZW5ndGgpLG49MDtuPGUubGVuZ3RoO24rKyl0W25dPW5lKGVbbl0pO3JldHVybiB0fWZ1bmN0aW9uIGllKGUsdCxuLHIpe3IrPXQ7dmFyIGk9ZS5fX2luamVjdGVkfHwoZS5fX2luamVjdGVkPXt9KTtpZighaVtyXSl7aVtyXT0hMDt2YXIgbz1lW3RdO28/ZVt0XT1mdW5jdGlvbigpe28uYXBwbHkodGhpcyxhcmd1bWVudHMpLG4uYXBwbHkodGhpcyxhcmd1bWVudHMpfTplW3RdPW59fWZ1bmN0aW9uIG9lKGUsdCxuLHIsaSl7dmFyIG8sYSxzLGMsbCx1O2ZvcihvIGluIGUpaWYoYT1lW29dLHM9dFtvXSxhKWlmKHMpe2lmKGEhPT1zKWlmKEFycmF5LmlzQXJyYXkocykpe3MubGVuZ3RoPWEubGVuZ3RoO2Zvcih2YXIgZj0wO2Y8cy5sZW5ndGg7ZisrKXNbZl09YVtmXTtlW29dPXN9ZWxzZSBzLmZuPWEsZVtvXT1zfWVsc2UgdT0iISI9PT1vLmNoYXJBdCgwKSxsPXU/by5zbGljZSgxKTpvLEFycmF5LmlzQXJyYXkoYSk/bihsLGEuaW52b2tlcj1hZShhKSx1KTooYS5pbnZva2VyfHwoYz1hLGE9ZVtvXT17fSxhLmZuPWMsYS5pbnZva2VyPXNlKGEpKSxuKGwsYS5pbnZva2VyLHUpKTtlbHNlO2ZvcihvIGluIHQpZVtvXXx8KGw9IiEiPT09by5jaGFyQXQoMCk/by5zbGljZSgxKTpvLHIobCx0W29dLmludm9rZXIpKX1mdW5jdGlvbiBhZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7Zm9yKHZhciBuPWFyZ3VtZW50cyxyPTE9PT1hcmd1bWVudHMubGVuZ3RoLGk9MDtpPGUubGVuZ3RoO2krKylyP2VbaV0odCk6ZVtpXS5hcHBseShudWxsLG4pfX1mdW5jdGlvbiBzZShlKXtyZXR1cm4gZnVuY3Rpb24odCl7dmFyIG49MT09PWFyZ3VtZW50cy5sZW5ndGg7bj9lLmZuKHQpOmUuZm4uYXBwbHkobnVsbCxhcmd1bWVudHMpfX1mdW5jdGlvbiBjZShlLHQsbil7aWYobyhlKSlyZXR1cm5bbGUoZSldO2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgcj1bXSxpPTAsYT1lLmxlbmd0aDtpPGE7aSsrKXt2YXIgcz1lW2ldLGM9cltyLmxlbmd0aC0xXTtBcnJheS5pc0FycmF5KHMpP3IucHVzaC5hcHBseShyLGNlKHMsdCwobnx8IiIpKyJfIitpKSk6byhzKT9jJiZjLnRleHQ/Yy50ZXh0Kz1TdHJpbmcocyk6IiIhPT1zJiZyLnB1c2gobGUocykpOnMgaW5zdGFuY2VvZiBFaSYmKHMudGV4dCYmYyYmYy50ZXh0P2MuaXNDbG9uZWR8fChjLnRleHQrPXMudGV4dCk6KHQmJnVlKHMsdCkscy50YWcmJm51bGw9PXMua2V5JiZudWxsIT1uJiYocy5rZXk9Il9fdmxpc3QiK24rIl8iK2krIl9fIiksci5wdXNoKHMpKSl9cmV0dXJuIHJ9fWZ1bmN0aW9uIGxlKGUpe3JldHVybiBuZXcgRWkodm9pZCAwLHZvaWQgMCx2b2lkIDAsU3RyaW5nKGUpKX1mdW5jdGlvbiB1ZShlLHQpe2lmKGUudGFnJiYhZS5ucyYmKGUubnM9dCxlLmNoaWxkcmVuKSlmb3IodmFyIG49MCxyPWUuY2hpbGRyZW4ubGVuZ3RoO248cjtuKyspdWUoZS5jaGlsZHJlbltuXSx0KX1mdW5jdGlvbiBmZShlKXtyZXR1cm4gZSYmZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUmJmUuY29tcG9uZW50T3B0aW9uc30pWzBdfWZ1bmN0aW9uIGRlKGUpe3ZhciB0PWUuJG9wdGlvbnMsbj10LnBhcmVudDtpZihuJiYhdC5hYnN0cmFjdCl7Zm9yKDtuLiRvcHRpb25zLmFic3RyYWN0JiZuLiRwYXJlbnQ7KW49bi4kcGFyZW50O24uJGNoaWxkcmVuLnB1c2goZSl9ZS4kcGFyZW50PW4sZS4kcm9vdD1uP24uJHJvb3Q6ZSxlLiRjaGlsZHJlbj1bXSxlLiRyZWZzPXt9LGUuX3dhdGNoZXI9bnVsbCxlLl9pbmFjdGl2ZT0hMSxlLl9pc01vdW50ZWQ9ITEsZS5faXNEZXN0cm95ZWQ9ITEsZS5faXNCZWluZ0Rlc3Ryb3llZD0hMX1mdW5jdGlvbiBwZShlKXtlLnByb3RvdHlwZS5fbW91bnQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3JldHVybiBuLiRlbD1lLG4uJG9wdGlvbnMucmVuZGVyfHwobi4kb3B0aW9ucy5yZW5kZXI9TmkpLHZlKG4sImJlZm9yZU1vdW50Iiksbi5fd2F0Y2hlcj1uZXcgU2kobixmdW5jdGlvbigpe24uX3VwZGF0ZShuLl9yZW5kZXIoKSx0KX0scCksdD0hMSxudWxsPT1uLiR2bm9kZSYmKG4uX2lzTW91bnRlZD0hMCx2ZShuLCJtb3VudGVkIikpLG59LGUucHJvdG90eXBlLl91cGRhdGU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO24uX2lzTW91bnRlZCYmdmUobiwiYmVmb3JlVXBkYXRlIik7dmFyIHI9bi4kZWwsaT1MaTtMaT1uO3ZhciBvPW4uX3Zub2RlO24uX3Zub2RlPWUsbz9uLiRlbD1uLl9fcGF0Y2hfXyhvLGUpOm4uJGVsPW4uX19wYXRjaF9fKG4uJGVsLGUsdCksTGk9aSxyJiYoci5fX3Z1ZV9fPW51bGwpLG4uJGVsJiYobi4kZWwuX192dWVfXz1uKSxuLiR2bm9kZSYmbi4kcGFyZW50JiZuLiR2bm9kZT09PW4uJHBhcmVudC5fdm5vZGUmJihuLiRwYXJlbnQuJGVsPW4uJGVsKSxuLl9pc01vdW50ZWQmJnZlKG4sInVwZGF0ZWQiKX0sZS5wcm90b3R5cGUuX3VwZGF0ZUZyb21QYXJlbnQ9ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dGhpcyxvPSEoIWkuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuJiYhcik7aWYoaS4kb3B0aW9ucy5fcGFyZW50Vm5vZGU9bixpLiR2bm9kZT1uLGkuX3Zub2RlJiYoaS5fdm5vZGUucGFyZW50PW4pLGkuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuPXIsZSYmaS4kb3B0aW9ucy5wcm9wcyl7Z2kuc2hvdWxkQ29udmVydD0hMTtmb3IodmFyIGE9aS4kb3B0aW9ucy5fcHJvcEtleXN8fFtdLHM9MDtzPGEubGVuZ3RoO3MrKyl7dmFyIGM9YVtzXTtpW2NdPVIoYyxpLiRvcHRpb25zLnByb3BzLGUsaSl9Z2kuc2hvdWxkQ29udmVydD0hMCxpLiRvcHRpb25zLnByb3BzRGF0YT1lfWlmKHQpe3ZhciBsPWkuJG9wdGlvbnMuX3BhcmVudExpc3RlbmVycztpLiRvcHRpb25zLl9wYXJlbnRMaXN0ZW5lcnM9dCxpLl91cGRhdGVMaXN0ZW5lcnModCxsKX1vJiYoaS4kc2xvdHM9RWUocixpLl9yZW5kZXJDb250ZXh0KSxpLiRmb3JjZVVwZGF0ZSgpKX0sZS5wcm90b3R5cGUuJGZvcmNlVXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcztlLl93YXRjaGVyJiZlLl93YXRjaGVyLnVwZGF0ZSgpfSxlLnByb3RvdHlwZS4kZGVzdHJveT1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYoIWUuX2lzQmVpbmdEZXN0cm95ZWQpe3ZlKGUsImJlZm9yZURlc3Ryb3kiKSxlLl9pc0JlaW5nRGVzdHJveWVkPSEwO3ZhciB0PWUuJHBhcmVudDshdHx8dC5faXNCZWluZ0Rlc3Ryb3llZHx8ZS4kb3B0aW9ucy5hYnN0cmFjdHx8cih0LiRjaGlsZHJlbixlKSxlLl93YXRjaGVyJiZlLl93YXRjaGVyLnRlYXJkb3duKCk7Zm9yKHZhciBuPWUuX3dhdGNoZXJzLmxlbmd0aDtuLS07KWUuX3dhdGNoZXJzW25dLnRlYXJkb3duKCk7ZS5fZGF0YS5fX29iX18mJmUuX2RhdGEuX19vYl9fLnZtQ291bnQtLSxlLl9pc0Rlc3Ryb3llZD0hMCx2ZShlLCJkZXN0cm95ZWQiKSxlLiRvZmYoKSxlLiRlbCYmKGUuJGVsLl9fdnVlX189bnVsbCksZS5fX3BhdGNoX18oZS5fdm5vZGUsbnVsbCl9fX1mdW5jdGlvbiB2ZShlLHQpe3ZhciBuPWUuJG9wdGlvbnNbdF07aWYobilmb3IodmFyIHI9MCxpPW4ubGVuZ3RoO3I8aTtyKyspbltyXS5jYWxsKGUpO2UuJGVtaXQoImhvb2s6Iit0KX1mdW5jdGlvbiBoZShlLHQsbixyLGkpe2lmKGUpe3ZhciBvPW4uJG9wdGlvbnMuX2Jhc2U7aWYodShlKSYmKGU9by5leHRlbmQoZSkpLCJmdW5jdGlvbiI9PXR5cGVvZiBlKXtpZighZS5jaWQpaWYoZS5yZXNvbHZlZCllPWUucmVzb2x2ZWQ7ZWxzZSBpZihlPXdlKGUsbyxmdW5jdGlvbigpe24uJGZvcmNlVXBkYXRlKCl9KSwhZSlyZXR1cm47UGUoZSksdD10fHx7fTt2YXIgYT14ZSh0LGUpO2lmKGUub3B0aW9ucy5mdW5jdGlvbmFsKXJldHVybiBtZShlLGEsdCxuLHIpO3ZhciBzPXQub247dC5vbj10Lm5hdGl2ZU9uLGUub3B0aW9ucy5hYnN0cmFjdCYmKHQ9e30pLGtlKHQpO3ZhciBjPWUub3B0aW9ucy5uYW1lfHxpLGw9bmV3IEVpKCJ2dWUtY29tcG9uZW50LSIrZS5jaWQrKGM/Ii0iK2M6IiIpLHQsdm9pZCAwLHZvaWQgMCx2b2lkIDAsdm9pZCAwLG4se0N0b3I6ZSxwcm9wc0RhdGE6YSxsaXN0ZW5lcnM6cyx0YWc6aSxjaGlsZHJlbjpyfSk7cmV0dXJuIGx9fX1mdW5jdGlvbiBtZShlLHQsbixyLGkpe3ZhciBvPXt9LGE9ZS5vcHRpb25zLnByb3BzO2lmKGEpZm9yKHZhciBjIGluIGEpb1tjXT1SKGMsYSx0KTt2YXIgbD1lLm9wdGlvbnMucmVuZGVyLmNhbGwobnVsbCxzKE9lLHtfc2VsZjpPYmplY3QuY3JlYXRlKHIpfSkse3Byb3BzOm8sZGF0YTpuLHBhcmVudDpyLGNoaWxkcmVuOmNlKGkpLHNsb3RzOmZ1bmN0aW9uKCl7cmV0dXJuIEVlKGkscil9fSk7cmV0dXJuIGwgaW5zdGFuY2VvZiBFaSYmKGwuZnVuY3Rpb25hbENvbnRleHQ9cixuLnNsb3QmJigobC5kYXRhfHwobC5kYXRhPXt9KSkuc2xvdD1uLnNsb3QpKSxsfWZ1bmN0aW9uIGdlKGUsdCl7dmFyIG49ZS5jb21wb25lbnRPcHRpb25zLHI9e19pc0NvbXBvbmVudDohMCxwYXJlbnQ6dCxwcm9wc0RhdGE6bi5wcm9wc0RhdGEsX2NvbXBvbmVudFRhZzpuLnRhZyxfcGFyZW50Vm5vZGU6ZSxfcGFyZW50TGlzdGVuZXJzOm4ubGlzdGVuZXJzLF9yZW5kZXJDaGlsZHJlbjpuLmNoaWxkcmVufSxpPWUuZGF0YS5pbmxpbmVUZW1wbGF0ZTtyZXR1cm4gaSYmKHIucmVuZGVyPWkucmVuZGVyLHIuc3RhdGljUmVuZGVyRm5zPWkuc3RhdGljUmVuZGVyRm5zKSxuZXcgbi5DdG9yKHIpfWZ1bmN0aW9uIHllKGUsdCl7aWYoIWUuY2hpbGR8fGUuY2hpbGQuX2lzRGVzdHJveWVkKXt2YXIgbj1lLmNoaWxkPWdlKGUsTGkpO24uJG1vdW50KHQ/ZS5lbG06dm9pZCAwLHQpfWVsc2UgaWYoZS5kYXRhLmtlZXBBbGl2ZSl7dmFyIHI9ZTtfZShyLHIpfX1mdW5jdGlvbiBfZShlLHQpe3ZhciBuPXQuY29tcG9uZW50T3B0aW9ucyxyPXQuY2hpbGQ9ZS5jaGlsZDtyLl91cGRhdGVGcm9tUGFyZW50KG4ucHJvcHNEYXRhLG4ubGlzdGVuZXJzLHQsbi5jaGlsZHJlbil9ZnVuY3Rpb24gYmUoZSl7ZS5jaGlsZC5faXNNb3VudGVkfHwoZS5jaGlsZC5faXNNb3VudGVkPSEwLHZlKGUuY2hpbGQsIm1vdW50ZWQiKSksZS5kYXRhLmtlZXBBbGl2ZSYmKGUuY2hpbGQuX2luYWN0aXZlPSExLHZlKGUuY2hpbGQsImFjdGl2YXRlZCIpKX1mdW5jdGlvbiAkZShlKXtlLmNoaWxkLl9pc0Rlc3Ryb3llZHx8KGUuZGF0YS5rZWVwQWxpdmU/KGUuY2hpbGQuX2luYWN0aXZlPSEwLHZlKGUuY2hpbGQsImRlYWN0aXZhdGVkIikpOmUuY2hpbGQuJGRlc3Ryb3koKSl9ZnVuY3Rpb24gd2UoZSx0LG4pe2lmKCFlLnJlcXVlc3RlZCl7ZS5yZXF1ZXN0ZWQ9ITA7dmFyIHI9ZS5wZW5kaW5nQ2FsbGJhY2tzPVtuXSxpPSEwLG89ZnVuY3Rpb24obil7aWYodShuKSYmKG49dC5leHRlbmQobikpLGUucmVzb2x2ZWQ9biwhaSlmb3IodmFyIG89MCxhPXIubGVuZ3RoO288YTtvKyspcltvXShuKX0sYT1mdW5jdGlvbihlKXt9LHM9ZShvLGEpO3JldHVybiBzJiYiZnVuY3Rpb24iPT10eXBlb2Ygcy50aGVuJiYhZS5yZXNvbHZlZCYmcy50aGVuKG8sYSksaT0hMSxlLnJlc29sdmVkfWUucGVuZGluZ0NhbGxiYWNrcy5wdXNoKG4pfWZ1bmN0aW9uIHhlKGUsdCl7dmFyIG49dC5vcHRpb25zLnByb3BzO2lmKG4pe3ZhciByPXt9LGk9ZS5hdHRycyxvPWUucHJvcHMsYT1lLmRvbVByb3BzO2lmKGl8fG98fGEpZm9yKHZhciBzIGluIG4pe3ZhciBjPUtyKHMpO0NlKHIsbyxzLGMsITApfHxDZShyLGkscyxjKXx8Q2UocixhLHMsYyl9cmV0dXJuIHJ9fWZ1bmN0aW9uIENlKGUsdCxuLHIsbyl7aWYodCl7aWYoaSh0LG4pKXJldHVybiBlW25dPXRbbl0sb3x8ZGVsZXRlIHRbbl0sITA7aWYoaSh0LHIpKXJldHVybiBlW25dPXRbcl0sb3x8ZGVsZXRlIHRbcl0sITB9cmV0dXJuITF9ZnVuY3Rpb24ga2UoZSl7ZS5ob29rfHwoZS5ob29rPXt9KTtmb3IodmFyIHQ9MDt0PE1pLmxlbmd0aDt0Kyspe3ZhciBuPU1pW3RdLHI9ZS5ob29rW25dLGk9RGlbbl07ZS5ob29rW25dPXI/QWUoaSxyKTppfX1mdW5jdGlvbiBBZShlLHQpe3JldHVybiBmdW5jdGlvbihuLHIpe2UobixyKSx0KG4scil9fWZ1bmN0aW9uIE9lKGUsdCxuKXtyZXR1cm4gdCYmKEFycmF5LmlzQXJyYXkodCl8fCJvYmplY3QiIT10eXBlb2YgdCkmJihuPXQsdD12b2lkIDApLFNlKHRoaXMuX3NlbGYsZSx0LG4pfWZ1bmN0aW9uIFNlKGUsdCxuLHIpe2lmKCFufHwhbi5fX29iX18pe2lmKCF0KXJldHVybiBOaSgpO2lmKEFycmF5LmlzQXJyYXkocikmJiJmdW5jdGlvbiI9PXR5cGVvZiByWzBdJiYobj1ufHx7fSxuLnNjb3BlZFNsb3RzPXtkZWZhdWx0OnJbMF19LHIubGVuZ3RoPTApLCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIGksbz1saS5nZXRUYWdOYW1lc3BhY2UodCk7aWYobGkuaXNSZXNlcnZlZFRhZyh0KSlyZXR1cm4gbmV3IEVpKHQsbixjZShyLG8pLHZvaWQgMCx2b2lkIDAsbyxlKTtpZihpPVAoZS4kb3B0aW9ucywiY29tcG9uZW50cyIsdCkpcmV0dXJuIGhlKGksbixlLHIsdCk7dmFyIGE9ImZvcmVpZ25PYmplY3QiPT09dD8ieGh0bWwiOm87cmV0dXJuIG5ldyBFaSh0LG4sY2UocixhKSx2b2lkIDAsdm9pZCAwLG8sZSl9cmV0dXJuIGhlKHQsbixlLHIpfX1mdW5jdGlvbiBUZShlKXtlLiR2bm9kZT1udWxsLGUuX3Zub2RlPW51bGwsZS5fc3RhdGljVHJlZXM9bnVsbCxlLl9yZW5kZXJDb250ZXh0PWUuJG9wdGlvbnMuX3BhcmVudFZub2RlJiZlLiRvcHRpb25zLl9wYXJlbnRWbm9kZS5jb250ZXh0LGUuJHNsb3RzPUVlKGUuJG9wdGlvbnMuX3JlbmRlckNoaWxkcmVuLGUuX3JlbmRlckNvbnRleHQpLGUuJHNjb3BlZFNsb3RzPXt9LGUuJGNyZWF0ZUVsZW1lbnQ9cyhPZSxlKSxlLiRvcHRpb25zLmVsJiZlLiRtb3VudChlLiRvcHRpb25zLmVsKX1mdW5jdGlvbiBqZShuKXtmdW5jdGlvbiByKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0mJiJzdHJpbmciIT10eXBlb2YgZVtyXSYmaShlW3JdLHQrIl8iK3Isbik7ZWxzZSBpKGUsdCxuKX1mdW5jdGlvbiBpKGUsdCxuKXtlLmlzU3RhdGljPSEwLGUua2V5PXQsZS5pc09uY2U9bn1uLnByb3RvdHlwZS4kbmV4dFRpY2s9ZnVuY3Rpb24oZSl7cmV0dXJuIHNpKGUsdGhpcyl9LG4ucHJvdG90eXBlLl9yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9ZS4kb3B0aW9ucyxuPXQucmVuZGVyLHI9dC5zdGF0aWNSZW5kZXJGbnMsaT10Ll9wYXJlbnRWbm9kZTtpZihlLl9pc01vdW50ZWQpZm9yKHZhciBvIGluIGUuJHNsb3RzKWUuJHNsb3RzW29dPXJlKGUuJHNsb3RzW29dKTtpJiZpLmRhdGEuc2NvcGVkU2xvdHMmJihlLiRzY29wZWRTbG90cz1pLmRhdGEuc2NvcGVkU2xvdHMpLHImJiFlLl9zdGF0aWNUcmVlcyYmKGUuX3N0YXRpY1RyZWVzPVtdKSxlLiR2bm9kZT1pO3ZhciBhO3RyeXthPW4uY2FsbChlLl9yZW5kZXJQcm94eSxlLiRjcmVhdGVFbGVtZW50KX1jYXRjaCh0KXtpZihsaS5lcnJvckhhbmRsZXIpbGkuZXJyb3JIYW5kbGVyLmNhbGwobnVsbCx0LGUpO2Vsc2V7aWYob2koKSl0aHJvdyB0O2NvbnNvbGUuZXJyb3IodCl9YT1lLl92bm9kZX1yZXR1cm4gYSBpbnN0YW5jZW9mIEVpfHwoYT1OaSgpKSxhLnBhcmVudD1pLGF9LG4ucHJvdG90eXBlLl9oPU9lLG4ucHJvdG90eXBlLl9zPWUsbi5wcm90b3R5cGUuX249dCxuLnByb3RvdHlwZS5fZT1OaSxuLnByb3RvdHlwZS5fcT1oLG4ucHJvdG90eXBlLl9pPW0sbi5wcm90b3R5cGUuX209ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9zdGF0aWNUcmVlc1tlXTtyZXR1cm4gbiYmIXQ/QXJyYXkuaXNBcnJheShuKT9yZShuKTpuZShuKToobj10aGlzLl9zdGF0aWNUcmVlc1tlXT10aGlzLiRvcHRpb25zLnN0YXRpY1JlbmRlckZuc1tlXS5jYWxsKHRoaXMuX3JlbmRlclByb3h5KSxyKG4sIl9fc3RhdGljX18iK2UsITEpLG4pfSxuLnByb3RvdHlwZS5fbz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHIoZSwiX19vbmNlX18iK3QrKG4/Il8iK246IiIpLCEwKSxlfTt2YXIgbz1mdW5jdGlvbihlKXtyZXR1cm4gZX07bi5wcm90b3R5cGUuX2Y9ZnVuY3Rpb24oZSl7cmV0dXJuIFAodGhpcy4kb3B0aW9ucywiZmlsdGVycyIsZSwhMCl8fG99LG4ucHJvdG90eXBlLl9sPWZ1bmN0aW9uKGUsdCl7dmFyIG4scixpLG8sYTtpZihBcnJheS5pc0FycmF5KGUpKWZvcihuPW5ldyBBcnJheShlLmxlbmd0aCkscj0wLGk9ZS5sZW5ndGg7cjxpO3IrKyluW3JdPXQoZVtyXSxyKTtlbHNlIGlmKCJudW1iZXIiPT10eXBlb2YgZSlmb3Iobj1uZXcgQXJyYXkoZSkscj0wO3I8ZTtyKyspbltyXT10KHIrMSxyKTtlbHNlIGlmKHUoZSkpZm9yKG89T2JqZWN0LmtleXMoZSksbj1uZXcgQXJyYXkoby5sZW5ndGgpLHI9MCxpPW8ubGVuZ3RoO3I8aTtyKyspYT1vW3JdLG5bcl09dChlW2FdLGEscik7cmV0dXJuIG59LG4ucHJvdG90eXBlLl90PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLiRzY29wZWRTbG90c1tlXTtpZihyKXJldHVybiByKG58fHt9KXx8dDt2YXIgaT10aGlzLiRzbG90c1tlXTtyZXR1cm4gaXx8dH0sbi5wcm90b3R5cGUuX2I9ZnVuY3Rpb24oZSx0LG4scil7aWYobilpZih1KG4pKXtBcnJheS5pc0FycmF5KG4pJiYobj1kKG4pKTtmb3IodmFyIGkgaW4gbilpZigiY2xhc3MiPT09aXx8InN0eWxlIj09PWkpZVtpXT1uW2ldO2Vsc2V7dmFyIG89cnx8bGkubXVzdFVzZVByb3AodCxpKT9lLmRvbVByb3BzfHwoZS5kb21Qcm9wcz17fSk6ZS5hdHRyc3x8KGUuYXR0cnM9e30pO29baV09bltpXX19ZWxzZTtyZXR1cm4gZX0sbi5wcm90b3R5cGUuX2s9ZnVuY3Rpb24oZSl7cmV0dXJuIGxpLmtleUNvZGVzW2VdfX1mdW5jdGlvbiBFZShlLHQpe3ZhciBuPXt9O2lmKCFlKXJldHVybiBuO2Zvcih2YXIgcixpLG89Y2UoZSl8fFtdLGE9W10scz0wLGM9by5sZW5ndGg7czxjO3MrKylpZihpPW9bc10sKGkuY29udGV4dD09PXR8fGkuZnVuY3Rpb25hbENvbnRleHQ9PT10KSYmaS5kYXRhJiYocj1pLmRhdGEuc2xvdCkpe3ZhciBsPW5bcl18fChuW3JdPVtdKTsidGVtcGxhdGUiPT09aS50YWc/bC5wdXNoLmFwcGx5KGwsaS5jaGlsZHJlbik6bC5wdXNoKGkpfWVsc2UgYS5wdXNoKGkpO3JldHVybiBhLmxlbmd0aCYmKDEhPT1hLmxlbmd0aHx8IiAiIT09YVswXS50ZXh0JiYhYVswXS5pc0NvbW1lbnQpJiYobi5kZWZhdWx0PWEpLG59ZnVuY3Rpb24gTmUoZSl7ZS5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCk7dmFyIHQ9ZS4kb3B0aW9ucy5fcGFyZW50TGlzdGVuZXJzLG49cyhlLiRvbixlKSxyPXMoZS4kb2ZmLGUpO2UuX3VwZGF0ZUxpc3RlbmVycz1mdW5jdGlvbih0LGkpe29lKHQsaXx8e30sbixyLGUpfSx0JiZlLl91cGRhdGVMaXN0ZW5lcnModCl9ZnVuY3Rpb24gTGUoZSl7ZS5wcm90b3R5cGUuJG9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztyZXR1cm4obi5fZXZlbnRzW2VdfHwobi5fZXZlbnRzW2VdPVtdKSkucHVzaCh0KSxufSxlLnByb3RvdHlwZS4kb25jZT1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oKXtyLiRvZmYoZSxuKSx0LmFwcGx5KHIsYXJndW1lbnRzKX12YXIgcj10aGlzO3JldHVybiBuLmZuPXQsci4kb24oZSxuKSxyfSxlLnByb3RvdHlwZS4kb2ZmPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gbi5fZXZlbnRzPU9iamVjdC5jcmVhdGUobnVsbCksbjt2YXIgcj1uLl9ldmVudHNbZV07aWYoIXIpcmV0dXJuIG47aWYoMT09PWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIG4uX2V2ZW50c1tlXT1udWxsLG47Zm9yKHZhciBpLG89ci5sZW5ndGg7by0tOylpZihpPXJbb10saT09PXR8fGkuZm49PT10KXtyLnNwbGljZShvLDEpO2JyZWFrfXJldHVybiBufSxlLnByb3RvdHlwZS4kZW1pdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dC5fZXZlbnRzW2VdO2lmKG4pe249bi5sZW5ndGg+MT9jKG4pOm47Zm9yKHZhciByPWMoYXJndW1lbnRzLDEpLGk9MCxvPW4ubGVuZ3RoO2k8bztpKyspbltpXS5hcHBseSh0LHIpfXJldHVybiB0fX1mdW5jdGlvbiBEZShlKXtlLnByb3RvdHlwZS5faW5pdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3QuX3VpZD1QaSsrLHQuX2lzVnVlPSEwLGUmJmUuX2lzQ29tcG9uZW50P01lKHQsZSk6dC4kb3B0aW9ucz1NKFBlKHQuY29uc3RydWN0b3IpLGV8fHt9LHQpLHQuX3JlbmRlclByb3h5PXQsdC5fc2VsZj10LGRlKHQpLE5lKHQpLHZlKHQsImJlZm9yZUNyZWF0ZSIpLEsodCksdmUodCwiY3JlYXRlZCIpLFRlKHQpfX1mdW5jdGlvbiBNZShlLHQpe3ZhciBuPWUuJG9wdGlvbnM9T2JqZWN0LmNyZWF0ZShlLmNvbnN0cnVjdG9yLm9wdGlvbnMpO24ucGFyZW50PXQucGFyZW50LG4ucHJvcHNEYXRhPXQucHJvcHNEYXRhLG4uX3BhcmVudFZub2RlPXQuX3BhcmVudFZub2RlLG4uX3BhcmVudExpc3RlbmVycz10Ll9wYXJlbnRMaXN0ZW5lcnMsbi5fcmVuZGVyQ2hpbGRyZW49dC5fcmVuZGVyQ2hpbGRyZW4sbi5fY29tcG9uZW50VGFnPXQuX2NvbXBvbmVudFRhZyx0LnJlbmRlciYmKG4ucmVuZGVyPXQucmVuZGVyLG4uc3RhdGljUmVuZGVyRm5zPXQuc3RhdGljUmVuZGVyRm5zKX1mdW5jdGlvbiBQZShlKXt2YXIgdD1lLm9wdGlvbnM7aWYoZS5zdXBlcil7dmFyIG49ZS5zdXBlci5vcHRpb25zLHI9ZS5zdXBlck9wdGlvbnMsaT1lLmV4dGVuZE9wdGlvbnM7biE9PXImJihlLnN1cGVyT3B0aW9ucz1uLGkucmVuZGVyPXQucmVuZGVyLGkuc3RhdGljUmVuZGVyRm5zPXQuc3RhdGljUmVuZGVyRm5zLGkuX3Njb3BlSWQ9dC5fc2NvcGVJZCx0PWUub3B0aW9ucz1NKG4saSksdC5uYW1lJiYodC5jb21wb25lbnRzW3QubmFtZV09ZSkpfXJldHVybiB0fWZ1bmN0aW9uIFJlKGUpe3RoaXMuX2luaXQoZSl9ZnVuY3Rpb24gSWUoZSl7ZS51c2U9ZnVuY3Rpb24oZSl7aWYoIWUuaW5zdGFsbGVkKXt2YXIgdD1jKGFyZ3VtZW50cywxKTtyZXR1cm4gdC51bnNoaWZ0KHRoaXMpLCJmdW5jdGlvbiI9PXR5cGVvZiBlLmluc3RhbGw/ZS5pbnN0YWxsLmFwcGx5KGUsdCk6ZS5hcHBseShudWxsLHQpLGUuaW5zdGFsbGVkPSEwLHRoaXN9fX1mdW5jdGlvbiBGZShlKXtlLm1peGluPWZ1bmN0aW9uKGUpe3RoaXMub3B0aW9ucz1NKHRoaXMub3B0aW9ucyxlKX19ZnVuY3Rpb24gQmUoZSl7ZS5jaWQ9MDt2YXIgdD0xO2UuZXh0ZW5kPWZ1bmN0aW9uKGUpe2U9ZXx8e307dmFyIG49dGhpcyxyPW4uY2lkLGk9ZS5fQ3Rvcnx8KGUuX0N0b3I9e30pO2lmKGlbcl0pcmV0dXJuIGlbcl07dmFyIG89ZS5uYW1lfHxuLm9wdGlvbnMubmFtZSxhPWZ1bmN0aW9uKGUpe3RoaXMuX2luaXQoZSl9O3JldHVybiBhLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKG4ucHJvdG90eXBlKSxhLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1hLGEuY2lkPXQrKyxhLm9wdGlvbnM9TShuLm9wdGlvbnMsZSksYS5zdXBlcj1uLGEuZXh0ZW5kPW4uZXh0ZW5kLGEubWl4aW49bi5taXhpbixhLnVzZT1uLnVzZSxsaS5fYXNzZXRUeXBlcy5mb3JFYWNoKGZ1bmN0aW9uKGUpe2FbZV09bltlXX0pLG8mJihhLm9wdGlvbnMuY29tcG9uZW50c1tvXT1hKSxhLnN1cGVyT3B0aW9ucz1uLm9wdGlvbnMsYS5leHRlbmRPcHRpb25zPWUsaVtyXT1hLGF9fWZ1bmN0aW9uIFVlKGUpe2xpLl9hc3NldFR5cGVzLmZvckVhY2goZnVuY3Rpb24odCl7ZVt0XT1mdW5jdGlvbihlLG4pe3JldHVybiBuPygiY29tcG9uZW50Ij09PXQmJmYobikmJihuLm5hbWU9bi5uYW1lfHxlLG49dGhpcy5vcHRpb25zLl9iYXNlLmV4dGVuZChuKSksImRpcmVjdGl2ZSI9PT10JiYiZnVuY3Rpb24iPT10eXBlb2YgbiYmKG49e2JpbmQ6bix1cGRhdGU6bn0pLHRoaXMub3B0aW9uc1t0KyJzIl1bZV09bixuKTp0aGlzLm9wdGlvbnNbdCsicyJdW2VdfX0pfWZ1bmN0aW9uIEhlKGUsdCl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlP2Uuc3BsaXQoIiwiKS5pbmRleE9mKHQpPi0xOmUudGVzdCh0KX1mdW5jdGlvbiBWZShlKXt2YXIgdD17fTt0LmdldD1mdW5jdGlvbigpe3JldHVybiBsaX0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsImNvbmZpZyIsdCksZS51dGlsPSRpLGUuc2V0PU8sZS5kZWxldGU9UyxlLm5leHRUaWNrPXNpLGUub3B0aW9ucz1PYmplY3QuY3JlYXRlKG51bGwpLGxpLl9hc3NldFR5cGVzLmZvckVhY2goZnVuY3Rpb24odCl7ZS5vcHRpb25zW3QrInMiXT1PYmplY3QuY3JlYXRlKG51bGwpfSksZS5vcHRpb25zLl9iYXNlPWUsbChlLm9wdGlvbnMuY29tcG9uZW50cyxGaSksSWUoZSksRmUoZSksQmUoZSksVWUoZSl9ZnVuY3Rpb24gemUoZSl7Zm9yKHZhciB0PWUuZGF0YSxuPWUscj1lO3IuY2hpbGQ7KXI9ci5jaGlsZC5fdm5vZGUsci5kYXRhJiYodD1KZShyLmRhdGEsdCkpO2Zvcig7bj1uLnBhcmVudDspbi5kYXRhJiYodD1KZSh0LG4uZGF0YSkpO3JldHVybiBLZSh0KX1mdW5jdGlvbiBKZShlLHQpe3JldHVybntzdGF0aWNDbGFzczpxZShlLnN0YXRpY0NsYXNzLHQuc3RhdGljQ2xhc3MpLGNsYXNzOmUuY2xhc3M/W2UuY2xhc3MsdC5jbGFzc106dC5jbGFzc319ZnVuY3Rpb24gS2UoZSl7dmFyIHQ9ZS5jbGFzcyxuPWUuc3RhdGljQ2xhc3M7cmV0dXJuIG58fHQ/cWUobixXZSh0KSk6IiJ9ZnVuY3Rpb24gcWUoZSx0KXtyZXR1cm4gZT90P2UrIiAiK3Q6ZTp0fHwiIn1mdW5jdGlvbiBXZShlKXt2YXIgdD0iIjtpZighZSlyZXR1cm4gdDtpZigic3RyaW5nIj09dHlwZW9mIGUpcmV0dXJuIGU7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciBuLHI9MCxpPWUubGVuZ3RoO3I8aTtyKyspZVtyXSYmKG49V2UoZVtyXSkpJiYodCs9bisiICIpO3JldHVybiB0LnNsaWNlKDAsLTEpfWlmKHUoZSkpe2Zvcih2YXIgbyBpbiBlKWVbb10mJih0Kz1vKyIgIik7cmV0dXJuIHQuc2xpY2UoMCwtMSl9cmV0dXJuIHR9ZnVuY3Rpb24gWmUoZSl7cmV0dXJuIFhpKGUpPyJzdmciOiJtYXRoIj09PWU/Im1hdGgiOnZvaWQgMH1mdW5jdGlvbiBHZShlKXtpZighUXIpcmV0dXJuITA7aWYodG8oZSkpcmV0dXJuITE7aWYoZT1lLnRvTG93ZXJDYXNlKCksbnVsbCE9bm9bZV0pcmV0dXJuIG5vW2VdO3ZhciB0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZSk7cmV0dXJuIGUuaW5kZXhPZigiLSIpPi0xP25vW2VdPXQuY29uc3RydWN0b3I9PT13aW5kb3cuSFRNTFVua25vd25FbGVtZW50fHx0LmNvbnN0cnVjdG9yPT09d2luZG93LkhUTUxFbGVtZW50Om5vW2VdPS9IVE1MVW5rbm93bkVsZW1lbnQvLnRlc3QodC50b1N0cmluZygpKX1mdW5jdGlvbiBZZShlKXtpZigic3RyaW5nIj09dHlwZW9mIGUpe2lmKGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcihlKSwhZSlyZXR1cm4gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9cmV0dXJuIGV9ZnVuY3Rpb24gUWUoZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KGUpO3JldHVybiJzZWxlY3QiIT09ZT9uOih0LmRhdGEmJnQuZGF0YS5hdHRycyYmIm11bHRpcGxlImluIHQuZGF0YS5hdHRycyYmbi5zZXRBdHRyaWJ1dGUoIm11bHRpcGxlIiwibXVsdGlwbGUiKSxuKX1mdW5jdGlvbiBYZShlLHQpe3JldHVybiBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoV2lbZV0sdCl9ZnVuY3Rpb24gZXQoZSl7cmV0dXJuIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGUpfWZ1bmN0aW9uIHR0KGUpe3JldHVybiBkb2N1bWVudC5jcmVhdGVDb21tZW50KGUpfWZ1bmN0aW9uIG50KGUsdCxuKXtlLmluc2VydEJlZm9yZSh0LG4pfWZ1bmN0aW9uIHJ0KGUsdCl7ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiBpdChlLHQpe2UuYXBwZW5kQ2hpbGQodCl9ZnVuY3Rpb24gb3QoZSl7cmV0dXJuIGUucGFyZW50Tm9kZX1mdW5jdGlvbiBhdChlKXtyZXR1cm4gZS5uZXh0U2libGluZ31mdW5jdGlvbiBzdChlKXtyZXR1cm4gZS50YWdOYW1lfWZ1bmN0aW9uIGN0KGUsdCl7ZS50ZXh0Q29udGVudD10fWZ1bmN0aW9uIGx0KGUpe3JldHVybiBlLmNoaWxkTm9kZXN9ZnVuY3Rpb24gdXQoZSx0LG4pe2Uuc2V0QXR0cmlidXRlKHQsbil9ZnVuY3Rpb24gZnQoZSx0KXt2YXIgbj1lLmRhdGEucmVmO2lmKG4pe3ZhciBpPWUuY29udGV4dCxvPWUuY2hpbGR8fGUuZWxtLGE9aS4kcmVmczt0P0FycmF5LmlzQXJyYXkoYVtuXSk/cihhW25dLG8pOmFbbl09PT1vJiYoYVtuXT12b2lkIDApOmUuZGF0YS5yZWZJbkZvcj9BcnJheS5pc0FycmF5KGFbbl0pJiZhW25dLmluZGV4T2Yobyk8MD9hW25dLnB1c2gobyk6YVtuXT1bb106YVtuXT1vfX1mdW5jdGlvbiBkdChlKXtyZXR1cm4gbnVsbD09ZX1mdW5jdGlvbiBwdChlKXtyZXR1cm4gbnVsbCE9ZX1mdW5jdGlvbiB2dChlLHQpe3JldHVybiBlLmtleT09PXQua2V5JiZlLnRhZz09PXQudGFnJiZlLmlzQ29tbWVudD09PXQuaXNDb21tZW50JiYhZS5kYXRhPT0hdC5kYXRhfWZ1bmN0aW9uIGh0KGUsdCxuKXt2YXIgcixpLG89e307Zm9yKHI9dDtyPD1uOysrcilpPWVbcl0ua2V5LHB0KGkpJiYob1tpXT1yKTtyZXR1cm4gb31mdW5jdGlvbiBtdChlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBuZXcgRWkoeC50YWdOYW1lKGUpLnRvTG93ZXJDYXNlKCkse30sW10sdm9pZCAwLGUpfWZ1bmN0aW9uIG4oZSx0KXtmdW5jdGlvbiBuKCl7MD09PS0tbi5saXN0ZW5lcnMmJnIoZSl9cmV0dXJuIG4ubGlzdGVuZXJzPXQsbn1mdW5jdGlvbiByKGUpe3ZhciB0PXgucGFyZW50Tm9kZShlKTt0JiZ4LnJlbW92ZUNoaWxkKHQsZSl9ZnVuY3Rpb24gaShlLHQsbil7dmFyIHIsaT1lLmRhdGE7aWYoZS5pc1Jvb3RJbnNlcnQ9IW4scHQoaSkmJihwdChyPWkuaG9vaykmJnB0KHI9ci5pbml0KSYmcihlKSxwdChyPWUuY2hpbGQpKSlyZXR1cm4gbChlLHQpLGUuZWxtO3ZhciBvPWUuY2hpbGRyZW4scz1lLnRhZztyZXR1cm4gcHQocyk/KGUuZWxtPWUubnM/eC5jcmVhdGVFbGVtZW50TlMoZS5ucyxzKTp4LmNyZWF0ZUVsZW1lbnQocyxlKSx1KGUpLGEoZSxvLHQpLHB0KGkpJiZjKGUsdCkpOmUuaXNDb21tZW50P2UuZWxtPXguY3JlYXRlQ29tbWVudChlLnRleHQpOmUuZWxtPXguY3JlYXRlVGV4dE5vZGUoZS50ZXh0KSxlLmVsbX1mdW5jdGlvbiBhKGUsdCxuKXtpZihBcnJheS5pc0FycmF5KHQpKWZvcih2YXIgcj0wO3I8dC5sZW5ndGg7KytyKXguYXBwZW5kQ2hpbGQoZS5lbG0saSh0W3JdLG4sITApKTtlbHNlIG8oZS50ZXh0KSYmeC5hcHBlbmRDaGlsZChlLmVsbSx4LmNyZWF0ZVRleHROb2RlKGUudGV4dCkpfWZ1bmN0aW9uIHMoZSl7Zm9yKDtlLmNoaWxkOyllPWUuY2hpbGQuX3Zub2RlO3JldHVybiBwdChlLnRhZyl9ZnVuY3Rpb24gYyhlLHQpe2Zvcih2YXIgbj0wO248JC5jcmVhdGUubGVuZ3RoOysrbikkLmNyZWF0ZVtuXShvbyxlKTtfPWUuZGF0YS5ob29rLHB0KF8pJiYoXy5jcmVhdGUmJl8uY3JlYXRlKG9vLGUpLF8uaW5zZXJ0JiZ0LnB1c2goZSkpfWZ1bmN0aW9uIGwoZSx0KXtlLmRhdGEucGVuZGluZ0luc2VydCYmdC5wdXNoLmFwcGx5KHQsZS5kYXRhLnBlbmRpbmdJbnNlcnQpLGUuZWxtPWUuY2hpbGQuJGVsLHMoZSk/KGMoZSx0KSx1KGUpKTooZnQoZSksdC5wdXNoKGUpKX1mdW5jdGlvbiB1KGUpe3ZhciB0O3B0KHQ9ZS5jb250ZXh0KSYmcHQodD10LiRvcHRpb25zLl9zY29wZUlkKSYmeC5zZXRBdHRyaWJ1dGUoZS5lbG0sdCwiIikscHQodD1MaSkmJnQhPT1lLmNvbnRleHQmJnB0KHQ9dC4kb3B0aW9ucy5fc2NvcGVJZCkmJnguc2V0QXR0cmlidXRlKGUuZWxtLHQsIiIpfWZ1bmN0aW9uIGYoZSx0LG4scixvLGEpe2Zvcig7cjw9bzsrK3IpeC5pbnNlcnRCZWZvcmUoZSxpKG5bcl0sYSksdCl9ZnVuY3Rpb24gZChlKXt2YXIgdCxuLHI9ZS5kYXRhO2lmKHB0KHIpKWZvcihwdCh0PXIuaG9vaykmJnB0KHQ9dC5kZXN0cm95KSYmdChlKSx0PTA7dDwkLmRlc3Ryb3kubGVuZ3RoOysrdCkkLmRlc3Ryb3lbdF0oZSk7aWYocHQodD1lLmNoaWxkcmVuKSlmb3Iobj0wO248ZS5jaGlsZHJlbi5sZW5ndGg7KytuKWQoZS5jaGlsZHJlbltuXSl9ZnVuY3Rpb24gcChlLHQsbixyKXtmb3IoO248PXI7KytuKXt2YXIgaT10W25dO3B0KGkpJiYocHQoaS50YWcpPyh2KGkpLGQoaSkpOngucmVtb3ZlQ2hpbGQoZSxpLmVsbSkpfX1mdW5jdGlvbiB2KGUsdCl7aWYodHx8cHQoZS5kYXRhKSl7dmFyIGk9JC5yZW1vdmUubGVuZ3RoKzE7Zm9yKHQ/dC5saXN0ZW5lcnMrPWk6dD1uKGUuZWxtLGkpLHB0KF89ZS5jaGlsZCkmJnB0KF89Xy5fdm5vZGUpJiZwdChfLmRhdGEpJiZ2KF8sdCksXz0wO188JC5yZW1vdmUubGVuZ3RoOysrXykkLnJlbW92ZVtfXShlLHQpO3B0KF89ZS5kYXRhLmhvb2spJiZwdChfPV8ucmVtb3ZlKT9fKGUsdCk6dCgpfWVsc2UgcihlLmVsbSl9ZnVuY3Rpb24gaChlLHQsbixyLG8pe2Zvcih2YXIgYSxzLGMsbCx1PTAsZD0wLHY9dC5sZW5ndGgtMSxoPXRbMF0sZz10W3ZdLHk9bi5sZW5ndGgtMSxfPW5bMF0sYj1uW3ldLCQ9IW87dTw9diYmZDw9eTspZHQoaCk/aD10WysrdV06ZHQoZyk/Zz10Wy0tdl06dnQoaCxfKT8obShoLF8sciksaD10WysrdV0sXz1uWysrZF0pOnZ0KGcsYik/KG0oZyxiLHIpLGc9dFstLXZdLGI9blstLXldKTp2dChoLGIpPyhtKGgsYixyKSwkJiZ4Lmluc2VydEJlZm9yZShlLGguZWxtLHgubmV4dFNpYmxpbmcoZy5lbG0pKSxoPXRbKyt1XSxiPW5bLS15XSk6dnQoZyxfKT8obShnLF8sciksJCYmeC5pbnNlcnRCZWZvcmUoZSxnLmVsbSxoLmVsbSksZz10Wy0tdl0sXz1uWysrZF0pOihkdChhKSYmKGE9aHQodCx1LHYpKSxzPXB0KF8ua2V5KT9hW18ua2V5XTpudWxsLGR0KHMpPyh4Lmluc2VydEJlZm9yZShlLGkoXyxyKSxoLmVsbSksXz1uWysrZF0pOihjPXRbc10sYy50YWchPT1fLnRhZz8oeC5pbnNlcnRCZWZvcmUoZSxpKF8sciksaC5lbG0pLF89blsrK2RdKToobShjLF8sciksdFtzXT12b2lkIDAsJCYmeC5pbnNlcnRCZWZvcmUoZSxfLmVsbSxoLmVsbSksXz1uWysrZF0pKSk7dT52PyhsPWR0KG5beSsxXSk/bnVsbDpuW3krMV0uZWxtLGYoZSxsLG4sZCx5LHIpKTpkPnkmJnAoZSx0LHUsdil9ZnVuY3Rpb24gbShlLHQsbixyKXtpZihlIT09dCl7aWYodC5pc1N0YXRpYyYmZS5pc1N0YXRpYyYmdC5rZXk9PT1lLmtleSYmKHQuaXNDbG9uZWR8fHQuaXNPbmNlKSlyZXR1cm4gdC5lbG09ZS5lbG0sdm9pZCh0LmNoaWxkPWUuY2hpbGQpO3ZhciBpLG89dC5kYXRhLGE9cHQobyk7YSYmcHQoaT1vLmhvb2spJiZwdChpPWkucHJlcGF0Y2gpJiZpKGUsdCk7dmFyIGM9dC5lbG09ZS5lbG0sbD1lLmNoaWxkcmVuLHU9dC5jaGlsZHJlbjtpZihhJiZzKHQpKXtmb3IoaT0wO2k8JC51cGRhdGUubGVuZ3RoOysraSkkLnVwZGF0ZVtpXShlLHQpO3B0KGk9by5ob29rKSYmcHQoaT1pLnVwZGF0ZSkmJmkoZSx0KX1kdCh0LnRleHQpP3B0KGwpJiZwdCh1KT9sIT09dSYmaChjLGwsdSxuLHIpOnB0KHUpPyhwdChlLnRleHQpJiZ4LnNldFRleHRDb250ZW50KGMsIiIpLGYoYyxudWxsLHUsMCx1Lmxlbmd0aC0xLG4pKTpwdChsKT9wKGMsbCwwLGwubGVuZ3RoLTEpOnB0KGUudGV4dCkmJnguc2V0VGV4dENvbnRlbnQoYywiIik6ZS50ZXh0IT09dC50ZXh0JiZ4LnNldFRleHRDb250ZW50KGMsdC50ZXh0KSxhJiZwdChpPW8uaG9vaykmJnB0KGk9aS5wb3N0cGF0Y2gpJiZpKGUsdCl9fWZ1bmN0aW9uIGcoZSx0LG4pe2lmKG4mJmUucGFyZW50KWUucGFyZW50LmRhdGEucGVuZGluZ0luc2VydD10O2Vsc2UgZm9yKHZhciByPTA7cjx0Lmxlbmd0aDsrK3IpdFtyXS5kYXRhLmhvb2suaW5zZXJ0KHRbcl0pfWZ1bmN0aW9uIHkoZSx0LG4pe3QuZWxtPWU7dmFyIHI9dC50YWcsaT10LmRhdGEsbz10LmNoaWxkcmVuO2lmKHB0KGkpJiYocHQoXz1pLmhvb2spJiZwdChfPV8uaW5pdCkmJl8odCwhMCkscHQoXz10LmNoaWxkKSkpcmV0dXJuIGwodCxuKSwhMDtpZihwdChyKSl7aWYocHQobykpe3ZhciBzPXguY2hpbGROb2RlcyhlKTtpZihzLmxlbmd0aCl7dmFyIHU9ITA7aWYocy5sZW5ndGghPT1vLmxlbmd0aCl1PSExO2Vsc2UgZm9yKHZhciBmPTA7ZjxvLmxlbmd0aDtmKyspaWYoIXkoc1tmXSxvW2ZdLG4pKXt1PSExO2JyZWFrfWlmKCF1KXJldHVybiExfWVsc2UgYSh0LG8sbil9cHQoaSkmJmModCxuKX1yZXR1cm4hMH12YXIgXyxiLCQ9e30sdz1lLm1vZHVsZXMseD1lLm5vZGVPcHM7Zm9yKF89MDtfPGFvLmxlbmd0aDsrK18pZm9yKCRbYW9bX11dPVtdLGI9MDtiPHcubGVuZ3RoOysrYil2b2lkIDAhPT13W2JdW2FvW19dXSYmJFthb1tfXV0ucHVzaCh3W2JdW2FvW19dXSk7cmV0dXJuIGZ1bmN0aW9uKGUsbixyLG8pe2lmKCFuKXJldHVybiB2b2lkKGUmJmQoZSkpO3ZhciBhLGMsbD0hMSx1PVtdO2lmKGUpe3ZhciBmPXB0KGUubm9kZVR5cGUpO2lmKCFmJiZ2dChlLG4pKW0oZSxuLHUsbyk7ZWxzZXtpZihmKXtpZigxPT09ZS5ub2RlVHlwZSYmZS5oYXNBdHRyaWJ1dGUoInNlcnZlci1yZW5kZXJlZCIpJiYoZS5yZW1vdmVBdHRyaWJ1dGUoInNlcnZlci1yZW5kZXJlZCIpLHI9ITApLHImJnkoZSxuLHUpKXJldHVybiBnKG4sdSwhMCksZTtlPXQoZSl9aWYoYT1lLmVsbSxjPXgucGFyZW50Tm9kZShhKSxpKG4sdSksbi5wYXJlbnQpe2Zvcih2YXIgdj1uLnBhcmVudDt2Oyl2LmVsbT1uLmVsbSx2PXYucGFyZW50O2lmKHMobikpZm9yKHZhciBoPTA7aDwkLmNyZWF0ZS5sZW5ndGg7KytoKSQuY3JlYXRlW2hdKG9vLG4ucGFyZW50KX1udWxsIT09Yz8oeC5pbnNlcnRCZWZvcmUoYyxuLmVsbSx4Lm5leHRTaWJsaW5nKGEpKSxwKGMsW2VdLDAsMCkpOnB0KGUudGFnKSYmZChlKX19ZWxzZSBsPSEwLGkobix1KTtyZXR1cm4gZyhuLHUsbCksbi5lbG19fWZ1bmN0aW9uIGd0KGUsdCl7aWYoZS5kYXRhLmRpcmVjdGl2ZXN8fHQuZGF0YS5kaXJlY3RpdmVzKXt2YXIgbixyLGksbz1lPT09b28sYT15dChlLmRhdGEuZGlyZWN0aXZlcyxlLmNvbnRleHQpLHM9eXQodC5kYXRhLmRpcmVjdGl2ZXMsdC5jb250ZXh0KSxjPVtdLGw9W107Zm9yKG4gaW4gcylyPWFbbl0saT1zW25dLHI/KGkub2xkVmFsdWU9ci52YWx1ZSxidChpLCJ1cGRhdGUiLHQsZSksaS5kZWYmJmkuZGVmLmNvbXBvbmVudFVwZGF0ZWQmJmwucHVzaChpKSk6KGJ0KGksImJpbmQiLHQsZSksaS5kZWYmJmkuZGVmLmluc2VydGVkJiZjLnB1c2goaSkpO2lmKGMubGVuZ3RoKXt2YXIgdT1mdW5jdGlvbigpe2MuZm9yRWFjaChmdW5jdGlvbihuKXtidChuLCJpbnNlcnRlZCIsdCxlKX0pfTtvP2llKHQuZGF0YS5ob29rfHwodC5kYXRhLmhvb2s9e30pLCJpbnNlcnQiLHUsImRpci1pbnNlcnQiKTp1KCl9aWYobC5sZW5ndGgmJmllKHQuZGF0YS5ob29rfHwodC5kYXRhLmhvb2s9e30pLCJwb3N0cGF0Y2giLGZ1bmN0aW9uKCl7bC5mb3JFYWNoKGZ1bmN0aW9uKG4pe2J0KG4sImNvbXBvbmVudFVwZGF0ZWQiLHQsZSl9KX0sImRpci1wb3N0cGF0Y2giKSwhbylmb3IobiBpbiBhKXNbbl18fGJ0KGFbbl0sInVuYmluZCIsZSl9fWZ1bmN0aW9uIHl0KGUsdCl7dmFyIG49T2JqZWN0LmNyZWF0ZShudWxsKTtpZighZSlyZXR1cm4gbjt2YXIgcixpO2ZvcihyPTA7cjxlLmxlbmd0aDtyKyspaT1lW3JdLGkubW9kaWZpZXJzfHwoaS5tb2RpZmllcnM9Y28pLG5bX3QoaSldPWksaS5kZWY9UCh0LiRvcHRpb25zLCJkaXJlY3RpdmVzIixpLm5hbWUsITApO3JldHVybiBufWZ1bmN0aW9uIF90KGUpe3JldHVybiBlLnJhd05hbWV8fGUubmFtZSsiLiIrT2JqZWN0LmtleXMoZS5tb2RpZmllcnN8fHt9KS5qb2luKCIuIil9ZnVuY3Rpb24gYnQoZSx0LG4scil7dmFyIGk9ZS5kZWYmJmUuZGVmW3RdO2kmJmkobi5lbG0sZSxuLHIpfWZ1bmN0aW9uICR0KGUsdCl7aWYoZS5kYXRhLmF0dHJzfHx0LmRhdGEuYXR0cnMpe3ZhciBuLHIsaSxvPXQuZWxtLGE9ZS5kYXRhLmF0dHJzfHx7fSxzPXQuZGF0YS5hdHRyc3x8e307cy5fX29iX18mJihzPXQuZGF0YS5hdHRycz1sKHt9LHMpKTtmb3IobiBpbiBzKXI9c1tuXSxpPWFbbl0saSE9PXImJnd0KG8sbixyKTtmb3IobiBpbiBhKW51bGw9PXNbbl0mJihKaShuKT9vLnJlbW92ZUF0dHJpYnV0ZU5TKHppLEtpKG4pKTpIaShuKXx8by5yZW1vdmVBdHRyaWJ1dGUobikpfX1mdW5jdGlvbiB3dChlLHQsbil7VmkodCk/cWkobik/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRBdHRyaWJ1dGUodCx0KTpIaSh0KT9lLnNldEF0dHJpYnV0ZSh0LHFpKG4pfHwiZmFsc2UiPT09bj8iZmFsc2UiOiJ0cnVlIik6SmkodCk/cWkobik/ZS5yZW1vdmVBdHRyaWJ1dGVOUyh6aSxLaSh0KSk6ZS5zZXRBdHRyaWJ1dGVOUyh6aSx0LG4pOnFpKG4pP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQsbil9ZnVuY3Rpb24geHQoZSx0KXt2YXIgbj10LmVsbSxyPXQuZGF0YSxpPWUuZGF0YTtpZihyLnN0YXRpY0NsYXNzfHxyLmNsYXNzfHxpJiYoaS5zdGF0aWNDbGFzc3x8aS5jbGFzcykpe3ZhciBvPXplKHQpLGE9bi5fdHJhbnNpdGlvbkNsYXNzZXM7YSYmKG89cWUobyxXZShhKSkpLG8hPT1uLl9wcmV2Q2xhc3MmJihuLnNldEF0dHJpYnV0ZSgiY2xhc3MiLG8pLG4uX3ByZXZDbGFzcz1vKX19ZnVuY3Rpb24gQ3QoZSx0KXtpZihlLmRhdGEub258fHQuZGF0YS5vbil7dmFyIG49dC5kYXRhLm9ufHx7fSxyPWUuZGF0YS5vbnx8e30saT10LmVsbS5fdl9hZGR8fCh0LmVsbS5fdl9hZGQ9ZnVuY3Rpb24oZSxuLHIpe3QuZWxtLmFkZEV2ZW50TGlzdGVuZXIoZSxuLHIpfSksbz10LmVsbS5fdl9yZW1vdmV8fCh0LmVsbS5fdl9yZW1vdmU9ZnVuY3Rpb24oZSxuKXt0LmVsbS5yZW1vdmVFdmVudExpc3RlbmVyKGUsbil9KTtvZShuLHIsaSxvLHQuY29udGV4dCl9fWZ1bmN0aW9uIGt0KGUsdCl7aWYoZS5kYXRhLmRvbVByb3BzfHx0LmRhdGEuZG9tUHJvcHMpe3ZhciBuLHIsaT10LmVsbSxvPWUuZGF0YS5kb21Qcm9wc3x8e30sYT10LmRhdGEuZG9tUHJvcHN8fHt9O2EuX19vYl9fJiYoYT10LmRhdGEuZG9tUHJvcHM9bCh7fSxhKSk7Zm9yKG4gaW4gbyludWxsPT1hW25dJiYoaVtuXT0iIik7Zm9yKG4gaW4gYSlpZihyPWFbbl0sInRleHRDb250ZW50IiE9PW4mJiJpbm5lckhUTUwiIT09bnx8KHQuY2hpbGRyZW4mJih0LmNoaWxkcmVuLmxlbmd0aD0wKSxyIT09b1tuXSkpaWYoInZhbHVlIj09PW4pe2kuX3ZhbHVlPXI7dmFyIHM9bnVsbD09cj8iIjpTdHJpbmcocik7aS52YWx1ZT09PXN8fGkuY29tcG9zaW5nfHwoaS52YWx1ZT1zKX1lbHNlIGlbbl09cn19ZnVuY3Rpb24gQXQoZSl7dmFyIHQ9T3QoZS5zdHlsZSk7cmV0dXJuIGUuc3RhdGljU3R5bGU/bChlLnN0YXRpY1N0eWxlLHQpOnR9ZnVuY3Rpb24gT3QoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/ZChlKToic3RyaW5nIj09dHlwZW9mIGU/aG8oZSk6ZX1mdW5jdGlvbiBTdChlLHQpe3ZhciBuLHI9e307aWYodClmb3IodmFyIGk9ZTtpLmNoaWxkOylpPWkuY2hpbGQuX3Zub2RlLGkuZGF0YSYmKG49QXQoaS5kYXRhKSkmJmwocixuKTsobj1BdChlLmRhdGEpKSYmbChyLG4pO2Zvcih2YXIgbz1lO289by5wYXJlbnQ7KW8uZGF0YSYmKG49QXQoby5kYXRhKSkmJmwocixuKTtyZXR1cm4gcn1mdW5jdGlvbiBUdChlLHQpe3ZhciBuPXQuZGF0YSxyPWUuZGF0YTtpZihuLnN0YXRpY1N0eWxlfHxuLnN0eWxlfHxyLnN0YXRpY1N0eWxlfHxyLnN0eWxlKXt2YXIgaSxvLGE9dC5lbG0scz1lLmRhdGEuc3RhdGljU3R5bGUsYz1lLmRhdGEuc3R5bGV8fHt9LHU9c3x8YyxmPU90KHQuZGF0YS5zdHlsZSl8fHt9O3QuZGF0YS5zdHlsZT1mLl9fb2JfXz9sKHt9LGYpOmY7dmFyIGQ9U3QodCwhMCk7Zm9yKG8gaW4gdSludWxsPT1kW29dJiZnbyhhLG8sIiIpO2ZvcihvIGluIGQpaT1kW29dLGkhPT11W29dJiZnbyhhLG8sbnVsbD09aT8iIjppKX19ZnVuY3Rpb24ganQoZSx0KXtpZih0JiZ0LnRyaW0oKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4T2YoIiAiKT4tMT90LnNwbGl0KC9ccysvKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsYXNzTGlzdC5hZGQodCl9KTplLmNsYXNzTGlzdC5hZGQodCk7ZWxzZXt2YXIgbj0iICIrZS5nZXRBdHRyaWJ1dGUoImNsYXNzIikrIiAiO24uaW5kZXhPZigiICIrdCsiICIpPDAmJmUuc2V0QXR0cmlidXRlKCJjbGFzcyIsKG4rdCkudHJpbSgpKX19ZnVuY3Rpb24gRXQoZSx0KXtpZih0JiZ0LnRyaW0oKSlpZihlLmNsYXNzTGlzdCl0LmluZGV4T2YoIiAiKT4tMT90LnNwbGl0KC9ccysvKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3JldHVybiBlLmNsYXNzTGlzdC5yZW1vdmUodCl9KTplLmNsYXNzTGlzdC5yZW1vdmUodCk7ZWxzZXtmb3IodmFyIG49IiAiK2UuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKyIgIixyPSIgIit0KyIgIjtuLmluZGV4T2Yocik+PTA7KW49bi5yZXBsYWNlKHIsIiAiKTtlLnNldEF0dHJpYnV0ZSgiY2xhc3MiLG4udHJpbSgpKX19ZnVuY3Rpb24gTnQoZSl7U28oZnVuY3Rpb24oKXtTbyhlKX0pfWZ1bmN0aW9uIEx0KGUsdCl7KGUuX3RyYW5zaXRpb25DbGFzc2VzfHwoZS5fdHJhbnNpdGlvbkNsYXNzZXM9W10pKS5wdXNoKHQpLGp0KGUsdCl9ZnVuY3Rpb24gRHQoZSx0KXtlLl90cmFuc2l0aW9uQ2xhc3NlcyYmcihlLl90cmFuc2l0aW9uQ2xhc3Nlcyx0KSxFdChlLHQpfWZ1bmN0aW9uIE10KGUsdCxuKXt2YXIgcj1QdChlLHQpLGk9ci50eXBlLG89ci50aW1lb3V0LGE9ci5wcm9wQ291bnQ7aWYoIWkpcmV0dXJuIG4oKTt2YXIgcz1pPT09d28/a286T28sYz0wLGw9ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIocyx1KSxuKCl9LHU9ZnVuY3Rpb24odCl7dC50YXJnZXQ9PT1lJiYrK2M+PWEmJmwoKX07c2V0VGltZW91dChmdW5jdGlvbigpe2M8YSYmbCgpfSxvKzEpLGUuYWRkRXZlbnRMaXN0ZW5lcihzLHUpfWZ1bmN0aW9uIFB0KGUsdCl7dmFyIG4scj13aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlKSxpPXJbQ28rIkRlbGF5Il0uc3BsaXQoIiwgIiksbz1yW0NvKyJEdXJhdGlvbiJdLnNwbGl0KCIsICIpLGE9UnQoaSxvKSxzPXJbQW8rIkRlbGF5Il0uc3BsaXQoIiwgIiksYz1yW0FvKyJEdXJhdGlvbiJdLnNwbGl0KCIsICIpLGw9UnQocyxjKSx1PTAsZj0wO3Q9PT13bz9hPjAmJihuPXdvLHU9YSxmPW8ubGVuZ3RoKTp0PT09eG8/bD4wJiYobj14byx1PWwsZj1jLmxlbmd0aCk6KHU9TWF0aC5tYXgoYSxsKSxuPXU+MD9hPmw/d286eG86bnVsbCxmPW4/bj09PXdvP28ubGVuZ3RoOmMubGVuZ3RoOjApO3ZhciBkPW49PT13byYmVG8udGVzdChyW0NvKyJQcm9wZXJ0eSJdKTtyZXR1cm57dHlwZTpuLHRpbWVvdXQ6dSxwcm9wQ291bnQ6ZixoYXNUcmFuc2Zvcm06ZH19ZnVuY3Rpb24gUnQoZSx0KXtmb3IoO2UubGVuZ3RoPHQubGVuZ3RoOyllPWUuY29uY2F0KGUpO3JldHVybiBNYXRoLm1heC5hcHBseShudWxsLHQubWFwKGZ1bmN0aW9uKHQsbil7cmV0dXJuIEl0KHQpK0l0KGVbbl0pfSkpfWZ1bmN0aW9uIEl0KGUpe3JldHVybiAxZTMqTnVtYmVyKGUuc2xpY2UoMCwtMSkpfWZ1bmN0aW9uIEZ0KGUpe3ZhciB0PWUuZWxtO3QuX2xlYXZlQ2ImJih0Ll9sZWF2ZUNiLmNhbmNlbGxlZD0hMCx0Ll9sZWF2ZUNiKCkpO3ZhciBuPVV0KGUuZGF0YS50cmFuc2l0aW9uKTtpZihuJiYhdC5fZW50ZXJDYiYmMT09PXQubm9kZVR5cGUpe3ZhciByPW4uY3NzLGk9bi50eXBlLG89bi5lbnRlckNsYXNzLGE9bi5lbnRlckFjdGl2ZUNsYXNzLHM9bi5hcHBlYXJDbGFzcyxjPW4uYXBwZWFyQWN0aXZlQ2xhc3MsbD1uLmJlZm9yZUVudGVyLHU9bi5lbnRlcixmPW4uYWZ0ZXJFbnRlcixkPW4uZW50ZXJDYW5jZWxsZWQscD1uLmJlZm9yZUFwcGVhcix2PW4uYXBwZWFyLGg9bi5hZnRlckFwcGVhcixtPW4uYXBwZWFyQ2FuY2VsbGVkLGc9TGkuJHZub2RlLHk9ZyYmZy5wYXJlbnQ/Zy5wYXJlbnQuY29udGV4dDpMaSxfPSF5Ll9pc01vdW50ZWR8fCFlLmlzUm9vdEluc2VydDtpZighX3x8dnx8IiI9PT12KXt2YXIgYj1fP3M6bywkPV8/YzphLHc9Xz9wfHxsOmwseD1fJiYiZnVuY3Rpb24iPT10eXBlb2Ygdj92OnUsQz1fP2h8fGY6ZixrPV8/bXx8ZDpkLEE9ciE9PSExJiYhdGksTz14JiYoeC5fbGVuZ3RofHx4Lmxlbmd0aCk+MSxTPXQuX2VudGVyQ2I9SHQoZnVuY3Rpb24oKXtBJiZEdCh0LCQpLFMuY2FuY2VsbGVkPyhBJiZEdCh0LGIpLGsmJmsodCkpOkMmJkModCksdC5fZW50ZXJDYj1udWxsfSk7ZS5kYXRhLnNob3d8fGllKGUuZGF0YS5ob29rfHwoZS5kYXRhLmhvb2s9e30pLCJpbnNlcnQiLGZ1bmN0aW9uKCl7dmFyIG49dC5wYXJlbnROb2RlLHI9biYmbi5fcGVuZGluZyYmbi5fcGVuZGluZ1tlLmtleV07ciYmci50YWc9PT1lLnRhZyYmci5lbG0uX2xlYXZlQ2ImJnIuZWxtLl9sZWF2ZUNiKCkseCYmeCh0LFMpfSwidHJhbnNpdGlvbi1pbnNlcnQiKSx3JiZ3KHQpLEEmJihMdCh0LGIpLEx0KHQsJCksTnQoZnVuY3Rpb24oKXtEdCh0LGIpLFMuY2FuY2VsbGVkfHxPfHxNdCh0LGksUyl9KSksZS5kYXRhLnNob3cmJngmJngodCxTKSxBfHxPfHxTKCl9fX1mdW5jdGlvbiBCdChlLHQpe2Z1bmN0aW9uIG4oKXttLmNhbmNlbGxlZHx8KGUuZGF0YS5zaG93fHwoKHIucGFyZW50Tm9kZS5fcGVuZGluZ3x8KHIucGFyZW50Tm9kZS5fcGVuZGluZz17fSkpW2Uua2V5XT1lKSxsJiZsKHIpLHYmJihMdChyLHMpLEx0KHIsYyksTnQoZnVuY3Rpb24oKXtEdChyLHMpLG0uY2FuY2VsbGVkfHxofHxNdChyLGEsbSl9KSksdSYmdShyLG0pLHZ8fGh8fG0oKSl9dmFyIHI9ZS5lbG07ci5fZW50ZXJDYiYmKHIuX2VudGVyQ2IuY2FuY2VsbGVkPSEwLHIuX2VudGVyQ2IoKSk7dmFyIGk9VXQoZS5kYXRhLnRyYW5zaXRpb24pO2lmKCFpKXJldHVybiB0KCk7aWYoIXIuX2xlYXZlQ2ImJjE9PT1yLm5vZGVUeXBlKXt2YXIgbz1pLmNzcyxhPWkudHlwZSxzPWkubGVhdmVDbGFzcyxjPWkubGVhdmVBY3RpdmVDbGFzcyxsPWkuYmVmb3JlTGVhdmUsdT1pLmxlYXZlLGY9aS5hZnRlckxlYXZlLGQ9aS5sZWF2ZUNhbmNlbGxlZCxwPWkuZGVsYXlMZWF2ZSx2PW8hPT0hMSYmIXRpLGg9dSYmKHUuX2xlbmd0aHx8dS5sZW5ndGgpPjEsbT1yLl9sZWF2ZUNiPUh0KGZ1bmN0aW9uKCl7ci5wYXJlbnROb2RlJiZyLnBhcmVudE5vZGUuX3BlbmRpbmcmJihyLnBhcmVudE5vZGUuX3BlbmRpbmdbZS5rZXldPW51bGwpLHYmJkR0KHIsYyksbS5jYW5jZWxsZWQ/KHYmJkR0KHIscyksZCYmZChyKSk6KHQoKSxmJiZmKHIpKSxyLl9sZWF2ZUNiPW51bGx9KTtwP3Aobik6bigpfX1mdW5jdGlvbiBVdChlKXtpZihlKXtpZigib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciB0PXt9O3JldHVybiBlLmNzcyE9PSExJiZsKHQsam8oZS5uYW1lfHwidiIpKSwNCmwodCxlKSx0fXJldHVybiJzdHJpbmciPT10eXBlb2YgZT9qbyhlKTp2b2lkIDB9fWZ1bmN0aW9uIEh0KGUpe3ZhciB0PSExO3JldHVybiBmdW5jdGlvbigpe3R8fCh0PSEwLGUoKSl9fWZ1bmN0aW9uIFZ0KGUsdCxuKXt2YXIgcj10LnZhbHVlLGk9ZS5tdWx0aXBsZTtpZighaXx8QXJyYXkuaXNBcnJheShyKSl7Zm9yKHZhciBvLGEscz0wLGM9ZS5vcHRpb25zLmxlbmd0aDtzPGM7cysrKWlmKGE9ZS5vcHRpb25zW3NdLGkpbz1tKHIsSnQoYSkpPi0xLGEuc2VsZWN0ZWQhPT1vJiYoYS5zZWxlY3RlZD1vKTtlbHNlIGlmKGgoSnQoYSkscikpcmV0dXJuIHZvaWQoZS5zZWxlY3RlZEluZGV4IT09cyYmKGUuc2VsZWN0ZWRJbmRleD1zKSk7aXx8KGUuc2VsZWN0ZWRJbmRleD0tMSl9fWZ1bmN0aW9uIHp0KGUsdCl7Zm9yKHZhciBuPTAscj10Lmxlbmd0aDtuPHI7bisrKWlmKGgoSnQodFtuXSksZSkpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gSnQoZSl7cmV0dXJuIl92YWx1ZSJpbiBlP2UuX3ZhbHVlOmUudmFsdWV9ZnVuY3Rpb24gS3QoZSl7ZS50YXJnZXQuY29tcG9zaW5nPSEwfWZ1bmN0aW9uIHF0KGUpe2UudGFyZ2V0LmNvbXBvc2luZz0hMSxXdChlLnRhcmdldCwiaW5wdXQiKX1mdW5jdGlvbiBXdChlLHQpe3ZhciBuPWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJIVE1MRXZlbnRzIik7bi5pbml0RXZlbnQodCwhMCwhMCksZS5kaXNwYXRjaEV2ZW50KG4pfWZ1bmN0aW9uIFp0KGUpe3JldHVybiFlLmNoaWxkfHxlLmRhdGEmJmUuZGF0YS50cmFuc2l0aW9uP2U6WnQoZS5jaGlsZC5fdm5vZGUpfWZ1bmN0aW9uIEd0KGUpe3ZhciB0PWUmJmUuY29tcG9uZW50T3B0aW9ucztyZXR1cm4gdCYmdC5DdG9yLm9wdGlvbnMuYWJzdHJhY3Q/R3QoZmUodC5jaGlsZHJlbikpOmV9ZnVuY3Rpb24gWXQoZSl7dmFyIHQ9e30sbj1lLiRvcHRpb25zO2Zvcih2YXIgciBpbiBuLnByb3BzRGF0YSl0W3JdPWVbcl07dmFyIGk9bi5fcGFyZW50TGlzdGVuZXJzO2Zvcih2YXIgbyBpbiBpKXRbVnIobyldPWlbb10uZm47cmV0dXJuIHR9ZnVuY3Rpb24gUXQoZSx0KXtyZXR1cm4vXGQta2VlcC1hbGl2ZSQvLnRlc3QodC50YWcpP2UoImtlZXAtYWxpdmUiKTpudWxsfWZ1bmN0aW9uIFh0KGUpe2Zvcig7ZT1lLnBhcmVudDspaWYoZS5kYXRhLnRyYW5zaXRpb24pcmV0dXJuITB9ZnVuY3Rpb24gZW4oZSl7ZS5lbG0uX21vdmVDYiYmZS5lbG0uX21vdmVDYigpLGUuZWxtLl9lbnRlckNiJiZlLmVsbS5fZW50ZXJDYigpfWZ1bmN0aW9uIHRuKGUpe2UuZGF0YS5uZXdQb3M9ZS5lbG0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCl9ZnVuY3Rpb24gbm4oZSl7dmFyIHQ9ZS5kYXRhLnBvcyxuPWUuZGF0YS5uZXdQb3Mscj10LmxlZnQtbi5sZWZ0LGk9dC50b3Atbi50b3A7aWYocnx8aSl7ZS5kYXRhLm1vdmVkPSEwO3ZhciBvPWUuZWxtLnN0eWxlO28udHJhbnNmb3JtPW8uV2Via2l0VHJhbnNmb3JtPSJ0cmFuc2xhdGUoIityKyJweCwiK2krInB4KSIsby50cmFuc2l0aW9uRHVyYXRpb249IjBzIn19ZnVuY3Rpb24gcm4oZSx0KXt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gbi5pbm5lckhUTUw9JzxkaXYgYT0iJytlKyciPicsbi5pbm5lckhUTUwuaW5kZXhPZih0KT4wfWZ1bmN0aW9uIG9uKGUpe3JldHVybiBWbz1Wb3x8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksVm8uaW5uZXJIVE1MPWUsVm8udGV4dENvbnRlbnR9ZnVuY3Rpb24gYW4oZSx0KXtyZXR1cm4gdCYmKGU9ZS5yZXBsYWNlKERhLCJcbiIpKSxlLnJlcGxhY2UoTmEsIjwiKS5yZXBsYWNlKExhLCI+IikucmVwbGFjZShNYSwiJiIpLnJlcGxhY2UoUGEsJyInKX1mdW5jdGlvbiBzbihlLHQpe2Z1bmN0aW9uIG4odCl7Zis9dCxlPWUuc3Vic3RyaW5nKHQpfWZ1bmN0aW9uIHIoKXt2YXIgdD1lLm1hdGNoKFlvKTtpZih0KXt2YXIgcj17dGFnTmFtZTp0WzFdLGF0dHJzOltdLHN0YXJ0OmZ9O24odFswXS5sZW5ndGgpO2Zvcih2YXIgaSxvOyEoaT1lLm1hdGNoKFFvKSkmJihvPWUubWF0Y2goV28pKTspbihvWzBdLmxlbmd0aCksci5hdHRycy5wdXNoKG8pO2lmKGkpcmV0dXJuIHIudW5hcnlTbGFzaD1pWzFdLG4oaVswXS5sZW5ndGgpLHIuZW5kPWYscn19ZnVuY3Rpb24gaShlKXt2YXIgbj1lLnRhZ05hbWUscj1lLnVuYXJ5U2xhc2g7bCYmKCJwIj09PXMmJlFpKG4pJiZvKCIiLHMpLFlpKG4pJiZzPT09biYmbygiIixuKSk7Zm9yKHZhciBpPXUobil8fCJodG1sIj09PW4mJiJoZWFkIj09PXN8fCEhcixhPWUuYXR0cnMubGVuZ3RoLGY9bmV3IEFycmF5KGEpLGQ9MDtkPGE7ZCsrKXt2YXIgcD1lLmF0dHJzW2RdO3JhJiZwWzBdLmluZGV4T2YoJyIiJyk9PT0tMSYmKCIiPT09cFszXSYmZGVsZXRlIHBbM10sIiI9PT1wWzRdJiZkZWxldGUgcFs0XSwiIj09PXBbNV0mJmRlbGV0ZSBwWzVdKTt2YXIgdj1wWzNdfHxwWzRdfHxwWzVdfHwiIjtmW2RdPXtuYW1lOnBbMV0sdmFsdWU6YW4odix0LnNob3VsZERlY29kZU5ld2xpbmVzKX19aXx8KGMucHVzaCh7dGFnOm4sYXR0cnM6Zn0pLHM9bixyPSIiKSx0LnN0YXJ0JiZ0LnN0YXJ0KG4sZixpLGUuc3RhcnQsZS5lbmQpfWZ1bmN0aW9uIG8oZSxuLHIsaSl7dmFyIG87aWYobnVsbD09ciYmKHI9ZiksbnVsbD09aSYmKGk9Ziksbil7dmFyIGE9bi50b0xvd2VyQ2FzZSgpO2ZvcihvPWMubGVuZ3RoLTE7bz49MCYmY1tvXS50YWcudG9Mb3dlckNhc2UoKSE9PWE7by0tKTt9ZWxzZSBvPTA7aWYobz49MCl7Zm9yKHZhciBsPWMubGVuZ3RoLTE7bD49bztsLS0pdC5lbmQmJnQuZW5kKGNbbF0udGFnLHIsaSk7Yy5sZW5ndGg9byxzPW8mJmNbby0xXS50YWd9ZWxzZSJiciI9PT1uLnRvTG93ZXJDYXNlKCk/dC5zdGFydCYmdC5zdGFydChuLFtdLCEwLHIsaSk6InAiPT09bi50b0xvd2VyQ2FzZSgpJiYodC5zdGFydCYmdC5zdGFydChuLFtdLCExLHIsaSksdC5lbmQmJnQuZW5kKG4scixpKSl9Zm9yKHZhciBhLHMsYz1bXSxsPXQuZXhwZWN0SFRNTCx1PXQuaXNVbmFyeVRhZ3x8WnIsZj0wO2U7KXtpZihhPWUscyYmamEocyx0LnNmYyxjKSl7dmFyIGQ9cy50b0xvd2VyQ2FzZSgpLHA9RWFbZF18fChFYVtkXT1uZXcgUmVnRXhwKCIoW1xcc1xcU10qPykoPC8iK2QrIltePl0qPikiLCJpIikpLHY9MCxoPWUucmVwbGFjZShwLGZ1bmN0aW9uKGUsbixyKXtyZXR1cm4gdj1yLmxlbmd0aCwic2NyaXB0IiE9PWQmJiJzdHlsZSIhPT1kJiYibm9zY3JpcHQiIT09ZCYmKG49bi5yZXBsYWNlKC88IS0tKFtcc1xTXSo/KS0tPi9nLCIkMSIpLnJlcGxhY2UoLzwhXFtDREFUQVxbKFtcc1xTXSo/KV1dPi9nLCIkMSIpKSx0LmNoYXJzJiZ0LmNoYXJzKG4pLCIifSk7Zis9ZS5sZW5ndGgtaC5sZW5ndGgsZT1oLG8oIjwvIitkKyI+IixkLGYtdixmKX1lbHNle3ZhciBtPWUuaW5kZXhPZigiPCIpO2lmKDA9PT1tKXtpZih0YS50ZXN0KGUpKXt2YXIgZz1lLmluZGV4T2YoIi0tPiIpO2lmKGc+PTApe24oZyszKTtjb250aW51ZX19aWYobmEudGVzdChlKSl7dmFyIHk9ZS5pbmRleE9mKCJdPiIpO2lmKHk+PTApe24oeSsyKTtjb250aW51ZX19dmFyIF89ZS5tYXRjaChlYSk7aWYoXyl7bihfWzBdLmxlbmd0aCk7Y29udGludWV9dmFyIGI9ZS5tYXRjaChYbyk7aWYoYil7dmFyICQ9ZjtuKGJbMF0ubGVuZ3RoKSxvKGJbMF0sYlsxXSwkLGYpO2NvbnRpbnVlfXZhciB3PXIoKTtpZih3KXtpKHcpO2NvbnRpbnVlfX12YXIgeD12b2lkIDAsQz12b2lkIDAsaz12b2lkIDA7aWYobT4wKXtmb3IoQz1lLnNsaWNlKG0pOyEoWG8udGVzdChDKXx8WW8udGVzdChDKXx8dGEudGVzdChDKXx8bmEudGVzdChDKXx8KGs9Qy5pbmRleE9mKCI8IiwxKSxrPDApKTspbSs9ayxDPWUuc2xpY2UobSk7eD1lLnN1YnN0cmluZygwLG0pLG4obSl9bTwwJiYoeD1lLGU9IiIpLHQuY2hhcnMmJngmJnQuY2hhcnMoeCl9aWYoZT09PWEmJnQuY2hhcnMpe3QuY2hhcnMoZSk7YnJlYWt9fW8oKX1mdW5jdGlvbiBjbihlKXtmdW5jdGlvbiB0KCl7KGF8fChhPVtdKSkucHVzaChlLnNsaWNlKHYsaSkudHJpbSgpKSx2PWkrMX12YXIgbixyLGksbyxhLHM9ITEsYz0hMSxsPSExLHU9ITEsZj0wLGQ9MCxwPTAsdj0wO2ZvcihpPTA7aTxlLmxlbmd0aDtpKyspaWYocj1uLG49ZS5jaGFyQ29kZUF0KGkpLHMpMzk9PT1uJiY5MiE9PXImJihzPSExKTtlbHNlIGlmKGMpMzQ9PT1uJiY5MiE9PXImJihjPSExKTtlbHNlIGlmKGwpOTY9PT1uJiY5MiE9PXImJihsPSExKTtlbHNlIGlmKHUpNDc9PT1uJiY5MiE9PXImJih1PSExKTtlbHNlIGlmKDEyNCE9PW58fDEyND09PWUuY2hhckNvZGVBdChpKzEpfHwxMjQ9PT1lLmNoYXJDb2RlQXQoaS0xKXx8Znx8ZHx8cClzd2l0Y2gobil7Y2FzZSAzNDpjPSEwO2JyZWFrO2Nhc2UgMzk6cz0hMDticmVhaztjYXNlIDk2Omw9ITA7YnJlYWs7Y2FzZSA0Nzp1PSEwO2JyZWFrO2Nhc2UgNDA6cCsrO2JyZWFrO2Nhc2UgNDE6cC0tO2JyZWFrO2Nhc2UgOTE6ZCsrO2JyZWFrO2Nhc2UgOTM6ZC0tO2JyZWFrO2Nhc2UgMTIzOmYrKzticmVhaztjYXNlIDEyNTpmLS19ZWxzZSB2b2lkIDA9PT1vPyh2PWkrMSxvPWUuc2xpY2UoMCxpKS50cmltKCkpOnQoKTtpZih2b2lkIDA9PT1vP289ZS5zbGljZSgwLGkpLnRyaW0oKTowIT09diYmdCgpLGEpZm9yKGk9MDtpPGEubGVuZ3RoO2krKylvPWxuKG8sYVtpXSk7cmV0dXJuIG99ZnVuY3Rpb24gbG4oZSx0KXt2YXIgbj10LmluZGV4T2YoIigiKTtpZihuPDApcmV0dXJuJ19mKCInK3QrJyIpKCcrZSsiKSI7dmFyIHI9dC5zbGljZSgwLG4pLGk9dC5zbGljZShuKzEpO3JldHVybidfZigiJytyKyciKSgnK2UrIiwiK2l9ZnVuY3Rpb24gdW4oZSx0KXt2YXIgbj10P0ZhKHQpOlJhO2lmKG4udGVzdChlKSl7Zm9yKHZhciByLGksbz1bXSxhPW4ubGFzdEluZGV4PTA7cj1uLmV4ZWMoZSk7KXtpPXIuaW5kZXgsaT5hJiZvLnB1c2goSlNPTi5zdHJpbmdpZnkoZS5zbGljZShhLGkpKSk7dmFyIHM9Y24oclsxXS50cmltKCkpO28ucHVzaCgiX3MoIitzKyIpIiksYT1pK3JbMF0ubGVuZ3RofXJldHVybiBhPGUubGVuZ3RoJiZvLnB1c2goSlNPTi5zdHJpbmdpZnkoZS5zbGljZShhKSkpLG8uam9pbigiKyIpfX1mdW5jdGlvbiBmbihlKXtjb25zb2xlLmVycm9yKCJbVnVlIHBhcnNlcl06ICIrZSl9ZnVuY3Rpb24gZG4oZSx0KXtyZXR1cm4gZT9lLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZVt0XX0pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZX0pOltdfWZ1bmN0aW9uIHBuKGUsdCxuKXsoZS5wcm9wc3x8KGUucHJvcHM9W10pKS5wdXNoKHtuYW1lOnQsdmFsdWU6bn0pfWZ1bmN0aW9uIHZuKGUsdCxuKXsoZS5hdHRyc3x8KGUuYXR0cnM9W10pKS5wdXNoKHtuYW1lOnQsdmFsdWU6bn0pfWZ1bmN0aW9uIGhuKGUsdCxuLHIsaSxvKXsoZS5kaXJlY3RpdmVzfHwoZS5kaXJlY3RpdmVzPVtdKSkucHVzaCh7bmFtZTp0LHJhd05hbWU6bix2YWx1ZTpyLGFyZzppLG1vZGlmaWVyczpvfSl9ZnVuY3Rpb24gbW4oZSx0LG4scixpKXtyJiZyLmNhcHR1cmUmJihkZWxldGUgci5jYXB0dXJlLHQ9IiEiK3QpO3ZhciBvO3ImJnIubmF0aXZlPyhkZWxldGUgci5uYXRpdmUsbz1lLm5hdGl2ZUV2ZW50c3x8KGUubmF0aXZlRXZlbnRzPXt9KSk6bz1lLmV2ZW50c3x8KGUuZXZlbnRzPXt9KTt2YXIgYT17dmFsdWU6bixtb2RpZmllcnM6cn0scz1vW3RdO0FycmF5LmlzQXJyYXkocyk/aT9zLnVuc2hpZnQoYSk6cy5wdXNoKGEpOnM/b1t0XT1pP1thLHNdOltzLGFdOm9bdF09YX1mdW5jdGlvbiBnbihlLHQsbil7dmFyIHI9eW4oZSwiOiIrdCl8fHluKGUsInYtYmluZDoiK3QpO2lmKG51bGwhPXIpcmV0dXJuIGNuKHIpO2lmKG4hPT0hMSl7dmFyIGk9eW4oZSx0KTtpZihudWxsIT1pKXJldHVybiBKU09OLnN0cmluZ2lmeShpKX19ZnVuY3Rpb24geW4oZSx0KXt2YXIgbjtpZihudWxsIT0obj1lLmF0dHJzTWFwW3RdKSlmb3IodmFyIHI9ZS5hdHRyc0xpc3QsaT0wLG89ci5sZW5ndGg7aTxvO2krKylpZihyW2ldLm5hbWU9PT10KXtyLnNwbGljZShpLDEpO2JyZWFrfXJldHVybiBufWZ1bmN0aW9uIF9uKGUpe2lmKG9hPWUsaWE9b2EubGVuZ3RoLHNhPWNhPWxhPTAsZS5pbmRleE9mKCJbIik8MHx8ZS5sYXN0SW5kZXhPZigiXSIpPGlhLTEpcmV0dXJue2V4cDplLGlkeDpudWxsfTtmb3IoOyEkbigpOylhYT1ibigpLHduKGFhKT9DbihhYSk6OTE9PT1hYSYmeG4oYWEpO3JldHVybntleHA6ZS5zdWJzdHJpbmcoMCxjYSksaWR4OmUuc3Vic3RyaW5nKGNhKzEsbGEpfX1mdW5jdGlvbiBibigpe3JldHVybiBvYS5jaGFyQ29kZUF0KCsrc2EpfWZ1bmN0aW9uICRuKCl7cmV0dXJuIHNhPj1pYX1mdW5jdGlvbiB3bihlKXtyZXR1cm4gMzQ9PT1lfHwzOT09PWV9ZnVuY3Rpb24geG4oZSl7dmFyIHQ9MTtmb3IoY2E9c2E7ISRuKCk7KWlmKGU9Ym4oKSx3bihlKSlDbihlKTtlbHNlIGlmKDkxPT09ZSYmdCsrLDkzPT09ZSYmdC0tLDA9PT10KXtsYT1zYTticmVha319ZnVuY3Rpb24gQ24oZSl7Zm9yKHZhciB0PWU7ISRuKCkmJihlPWJuKCksZSE9PXQpOyk7fWZ1bmN0aW9uIGtuKGUsdCl7dWE9dC53YXJufHxmbixmYT10LmdldFRhZ05hbWVzcGFjZXx8WnIsZGE9dC5tdXN0VXNlUHJvcHx8WnIscGE9dC5pc1ByZVRhZ3x8WnIsdmE9ZG4odC5tb2R1bGVzLCJwcmVUcmFuc2Zvcm1Ob2RlIiksaGE9ZG4odC5tb2R1bGVzLCJ0cmFuc2Zvcm1Ob2RlIiksbWE9ZG4odC5tb2R1bGVzLCJwb3N0VHJhbnNmb3JtTm9kZSIpLGdhPXQuZGVsaW1pdGVyczt2YXIgbixyLGk9W10sbz10LnByZXNlcnZlV2hpdGVzcGFjZSE9PSExLGE9ITEscz0hMTtyZXR1cm4gc24oZSx7ZXhwZWN0SFRNTDp0LmV4cGVjdEhUTUwsaXNVbmFyeVRhZzp0LmlzVW5hcnlUYWcsc2hvdWxkRGVjb2RlTmV3bGluZXM6dC5zaG91bGREZWNvZGVOZXdsaW5lcyxzdGFydDpmdW5jdGlvbihlLG8sYyl7ZnVuY3Rpb24gbChlKXt9dmFyIHU9ciYmci5uc3x8ZmEoZSk7ZWkmJiJzdmciPT09dSYmKG89Vm4obykpO3ZhciBmPXt0eXBlOjEsdGFnOmUsYXR0cnNMaXN0Om8sYXR0cnNNYXA6Qm4obykscGFyZW50OnIsY2hpbGRyZW46W119O3UmJihmLm5zPXUpLEhuKGYpJiYhb2koKSYmKGYuZm9yYmlkZGVuPSEwKTtmb3IodmFyIGQ9MDtkPHZhLmxlbmd0aDtkKyspdmFbZF0oZix0KTtpZihhfHwoQW4oZiksZi5wcmUmJihhPSEwKSkscGEoZi50YWcpJiYocz0hMCksYSlPbihmKTtlbHNle2puKGYpLEVuKGYpLERuKGYpLFNuKGYpLGYucGxhaW49IWYua2V5JiYhby5sZW5ndGgsVG4oZiksTW4oZiksUG4oZik7Zm9yKHZhciBwPTA7cDxoYS5sZW5ndGg7cCsrKWhhW3BdKGYsdCk7Um4oZil9aWYobj9pLmxlbmd0aHx8bi5pZiYmKGYuZWxzZWlmfHxmLmVsc2UpJiYobChmKSxMbihuLHtleHA6Zi5lbHNlaWYsYmxvY2s6Zn0pKToobj1mLGwobikpLHImJiFmLmZvcmJpZGRlbilpZihmLmVsc2VpZnx8Zi5lbHNlKU5uKGYscik7ZWxzZSBpZihmLnNsb3RTY29wZSl7ci5wbGFpbj0hMTt2YXIgdj1mLnNsb3RUYXJnZXR8fCJkZWZhdWx0Ijsoci5zY29wZWRTbG90c3x8KHIuc2NvcGVkU2xvdHM9e30pKVt2XT1mfWVsc2Ugci5jaGlsZHJlbi5wdXNoKGYpLGYucGFyZW50PXI7Y3x8KHI9ZixpLnB1c2goZikpO2Zvcih2YXIgaD0wO2g8bWEubGVuZ3RoO2grKyltYVtoXShmLHQpfSxlbmQ6ZnVuY3Rpb24oKXt2YXIgZT1pW2kubGVuZ3RoLTFdLHQ9ZS5jaGlsZHJlbltlLmNoaWxkcmVuLmxlbmd0aC0xXTt0JiYzPT09dC50eXBlJiYiICI9PT10LnRleHQmJmUuY2hpbGRyZW4ucG9wKCksaS5sZW5ndGgtPTEscj1pW2kubGVuZ3RoLTFdLGUucHJlJiYoYT0hMSkscGEoZS50YWcpJiYocz0hMSl9LGNoYXJzOmZ1bmN0aW9uKGUpe2lmKHImJighZWl8fCJ0ZXh0YXJlYSIhPT1yLnRhZ3x8ci5hdHRyc01hcC5wbGFjZWhvbGRlciE9PWUpJiYoZT1zfHxlLnRyaW0oKT9xYShlKTpvJiZyLmNoaWxkcmVuLmxlbmd0aD8iICI6IiIpKXt2YXIgdDshYSYmIiAiIT09ZSYmKHQ9dW4oZSxnYSkpP3IuY2hpbGRyZW4ucHVzaCh7dHlwZToyLGV4cHJlc3Npb246dCx0ZXh0OmV9KTpyLmNoaWxkcmVuLnB1c2goe3R5cGU6Myx0ZXh0OmV9KX19fSksbn1mdW5jdGlvbiBBbihlKXtudWxsIT15bihlLCJ2LXByZSIpJiYoZS5wcmU9ITApfWZ1bmN0aW9uIE9uKGUpe3ZhciB0PWUuYXR0cnNMaXN0Lmxlbmd0aDtpZih0KWZvcih2YXIgbj1lLmF0dHJzPW5ldyBBcnJheSh0KSxyPTA7cjx0O3IrKyluW3JdPXtuYW1lOmUuYXR0cnNMaXN0W3JdLm5hbWUsdmFsdWU6SlNPTi5zdHJpbmdpZnkoZS5hdHRyc0xpc3Rbcl0udmFsdWUpfTtlbHNlIGUucHJlfHwoZS5wbGFpbj0hMCl9ZnVuY3Rpb24gU24oZSl7dmFyIHQ9Z24oZSwia2V5Iik7dCYmKGUua2V5PXQpfWZ1bmN0aW9uIFRuKGUpe3ZhciB0PWduKGUsInJlZiIpO3QmJihlLnJlZj10LGUucmVmSW5Gb3I9SW4oZSkpfWZ1bmN0aW9uIGpuKGUpe3ZhciB0O2lmKHQ9eW4oZSwidi1mb3IiKSl7dmFyIG49dC5tYXRjaChVYSk7aWYoIW4pcmV0dXJuO2UuZm9yPW5bMl0udHJpbSgpO3ZhciByPW5bMV0udHJpbSgpLGk9ci5tYXRjaChIYSk7aT8oZS5hbGlhcz1pWzFdLnRyaW0oKSxlLml0ZXJhdG9yMT1pWzJdLnRyaW0oKSxpWzNdJiYoZS5pdGVyYXRvcjI9aVszXS50cmltKCkpKTplLmFsaWFzPXJ9fWZ1bmN0aW9uIEVuKGUpe3ZhciB0PXluKGUsInYtaWYiKTtpZih0KWUuaWY9dCxMbihlLHtleHA6dCxibG9jazplfSk7ZWxzZXtudWxsIT15bihlLCJ2LWVsc2UiKSYmKGUuZWxzZT0hMCk7dmFyIG49eW4oZSwidi1lbHNlLWlmIik7biYmKGUuZWxzZWlmPW4pfX1mdW5jdGlvbiBObihlLHQpe3ZhciBuPVVuKHQuY2hpbGRyZW4pO24mJm4uaWYmJkxuKG4se2V4cDplLmVsc2VpZixibG9jazplfSl9ZnVuY3Rpb24gTG4oZSx0KXtlLmNvbmRpdGlvbnN8fChlLmNvbmRpdGlvbnM9W10pLGUuY29uZGl0aW9ucy5wdXNoKHQpfWZ1bmN0aW9uIERuKGUpe3ZhciB0PXluKGUsInYtb25jZSIpO251bGwhPXQmJihlLm9uY2U9ITApfWZ1bmN0aW9uIE1uKGUpe2lmKCJzbG90Ij09PWUudGFnKWUuc2xvdE5hbWU9Z24oZSwibmFtZSIpO2Vsc2V7dmFyIHQ9Z24oZSwic2xvdCIpO3QmJihlLnNsb3RUYXJnZXQ9JyIiJz09PXQ/JyJkZWZhdWx0Iic6dCksInRlbXBsYXRlIj09PWUudGFnJiYoZS5zbG90U2NvcGU9eW4oZSwic2NvcGUiKSl9fWZ1bmN0aW9uIFBuKGUpe3ZhciB0Oyh0PWduKGUsImlzIikpJiYoZS5jb21wb25lbnQ9dCksbnVsbCE9eW4oZSwiaW5saW5lLXRlbXBsYXRlIikmJihlLmlubGluZVRlbXBsYXRlPSEwKX1mdW5jdGlvbiBSbihlKXt2YXIgdCxuLHIsaSxvLGEscyxjLGw9ZS5hdHRyc0xpc3Q7Zm9yKHQ9MCxuPWwubGVuZ3RoO3Q8bjt0KyspaWYocj1pPWxbdF0ubmFtZSxvPWxbdF0udmFsdWUsQmEudGVzdChyKSlpZihlLmhhc0JpbmRpbmdzPSEwLHM9Rm4ocikscyYmKHI9ci5yZXBsYWNlKEthLCIiKSksVmEudGVzdChyKSlyPXIucmVwbGFjZShWYSwiIiksbz1jbihvKSxzJiYocy5wcm9wJiYoYz0hMCxyPVZyKHIpLCJpbm5lckh0bWwiPT09ciYmKHI9ImlubmVySFRNTCIpKSxzLmNhbWVsJiYocj1WcihyKSkpLGN8fGRhKGUudGFnLHIpP3BuKGUscixvKTp2bihlLHIsbyk7ZWxzZSBpZih6YS50ZXN0KHIpKXI9ci5yZXBsYWNlKHphLCIiKSxtbihlLHIsbyxzKTtlbHNle3I9ci5yZXBsYWNlKEJhLCIiKTt2YXIgdT1yLm1hdGNoKEphKTt1JiYoYT11WzFdKSYmKHI9ci5zbGljZSgwLC0oYS5sZW5ndGgrMSkpKSxobihlLHIsaSxvLGEscyl9ZWxzZSB2bihlLHIsSlNPTi5zdHJpbmdpZnkobykpfWZ1bmN0aW9uIEluKGUpe2Zvcih2YXIgdD1lO3Q7KXtpZih2b2lkIDAhPT10LmZvcilyZXR1cm4hMDt0PXQucGFyZW50fXJldHVybiExfWZ1bmN0aW9uIEZuKGUpe3ZhciB0PWUubWF0Y2goS2EpO2lmKHQpe3ZhciBuPXt9O3JldHVybiB0LmZvckVhY2goZnVuY3Rpb24oZSl7bltlLnNsaWNlKDEpXT0hMH0pLG59fWZ1bmN0aW9uIEJuKGUpe2Zvcih2YXIgdD17fSxuPTAscj1lLmxlbmd0aDtuPHI7bisrKXRbZVtuXS5uYW1lXT1lW25dLnZhbHVlO3JldHVybiB0fWZ1bmN0aW9uIFVuKGUpe2Zvcih2YXIgdD1lLmxlbmd0aDt0LS07KWlmKGVbdF0udGFnKXJldHVybiBlW3RdfWZ1bmN0aW9uIEhuKGUpe3JldHVybiJzdHlsZSI9PT1lLnRhZ3x8InNjcmlwdCI9PT1lLnRhZyYmKCFlLmF0dHJzTWFwLnR5cGV8fCJ0ZXh0L2phdmFzY3JpcHQiPT09ZS5hdHRyc01hcC50eXBlKX1mdW5jdGlvbiBWbihlKXtmb3IodmFyIHQ9W10sbj0wO248ZS5sZW5ndGg7bisrKXt2YXIgcj1lW25dO1dhLnRlc3Qoci5uYW1lKXx8KHIubmFtZT1yLm5hbWUucmVwbGFjZShaYSwiIiksdC5wdXNoKHIpKX1yZXR1cm4gdH1mdW5jdGlvbiB6bihlLHQpe2UmJih5YT1HYSh0LnN0YXRpY0tleXN8fCIiKSxfYT10LmlzUmVzZXJ2ZWRUYWd8fGZ1bmN0aW9uKCl7cmV0dXJuITF9LEtuKGUpLHFuKGUsITEpKX1mdW5jdGlvbiBKbihlKXtyZXR1cm4gbigidHlwZSx0YWcsYXR0cnNMaXN0LGF0dHJzTWFwLHBsYWluLHBhcmVudCxjaGlsZHJlbixhdHRycyIrKGU/IiwiK2U6IiIpKX1mdW5jdGlvbiBLbihlKXtpZihlLnN0YXRpYz1abihlKSwxPT09ZS50eXBlKXtpZighX2EoZS50YWcpJiYic2xvdCIhPT1lLnRhZyYmbnVsbD09ZS5hdHRyc01hcFsiaW5saW5lLXRlbXBsYXRlIl0pcmV0dXJuO2Zvcih2YXIgdD0wLG49ZS5jaGlsZHJlbi5sZW5ndGg7dDxuO3QrKyl7dmFyIHI9ZS5jaGlsZHJlblt0XTtLbihyKSxyLnN0YXRpY3x8KGUuc3RhdGljPSExKX19fWZ1bmN0aW9uIHFuKGUsdCl7aWYoMT09PWUudHlwZSl7aWYoKGUuc3RhdGljfHxlLm9uY2UpJiYoZS5zdGF0aWNJbkZvcj10KSxlLnN0YXRpYyYmZS5jaGlsZHJlbi5sZW5ndGgmJigxIT09ZS5jaGlsZHJlbi5sZW5ndGh8fDMhPT1lLmNoaWxkcmVuWzBdLnR5cGUpKXJldHVybiB2b2lkKGUuc3RhdGljUm9vdD0hMCk7aWYoZS5zdGF0aWNSb290PSExLGUuY2hpbGRyZW4pZm9yKHZhciBuPTAscj1lLmNoaWxkcmVuLmxlbmd0aDtuPHI7bisrKXFuKGUuY2hpbGRyZW5bbl0sdHx8ISFlLmZvcik7ZS5jb25kaXRpb25zJiZXbihlLmNvbmRpdGlvbnMsdCl9fWZ1bmN0aW9uIFduKGUsdCl7Zm9yKHZhciBuPTEscj1lLmxlbmd0aDtuPHI7bisrKXFuKGVbbl0uYmxvY2ssdCl9ZnVuY3Rpb24gWm4oZSl7cmV0dXJuIDIhPT1lLnR5cGUmJigzPT09ZS50eXBlfHwhKCFlLnByZSYmKGUuaGFzQmluZGluZ3N8fGUuaWZ8fGUuZm9yfHxCcihlLnRhZyl8fCFfYShlLnRhZyl8fEduKGUpfHwhT2JqZWN0LmtleXMoZSkuZXZlcnkoeWEpKSkpfWZ1bmN0aW9uIEduKGUpe2Zvcig7ZS5wYXJlbnQ7KXtpZihlPWUucGFyZW50LCJ0ZW1wbGF0ZSIhPT1lLnRhZylyZXR1cm4hMTtpZihlLmZvcilyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiBZbihlLHQpe3ZhciBuPXQ/Im5hdGl2ZU9uOnsiOiJvbjp7Ijtmb3IodmFyIHIgaW4gZSluKz0nIicrcisnIjonK1FuKHIsZVtyXSkrIiwiO3JldHVybiBuLnNsaWNlKDAsLTEpKyJ9In1mdW5jdGlvbiBRbihlLHQpe2lmKHQpe2lmKEFycmF5LmlzQXJyYXkodCkpcmV0dXJuIlsiK3QubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBRbihlLHQpfSkuam9pbigiLCIpKyJdIjtpZih0Lm1vZGlmaWVycyl7dmFyIG49IiIscj1bXSxpPXRzLnRlc3QoZSk7Zm9yKHZhciBvIGluIHQubW9kaWZpZXJzKWVzW29dP24rPWVzW29dOmkmJm5zW29dP24rPW5zW29dOnIucHVzaChvKTtyLmxlbmd0aCYmKG49WG4ocikrbik7dmFyIGE9UWEudGVzdCh0LnZhbHVlKT90LnZhbHVlKyIoJGV2ZW50KSI6dC52YWx1ZTtyZXR1cm4iZnVuY3Rpb24oJGV2ZW50KXsiK24rYSsifSJ9cmV0dXJuIFlhLnRlc3QodC52YWx1ZSl8fFFhLnRlc3QodC52YWx1ZSk/dC52YWx1ZToiZnVuY3Rpb24oJGV2ZW50KXsiK3QudmFsdWUrIn0ifXJldHVybiJmdW5jdGlvbigpe30ifWZ1bmN0aW9uIFhuKGUpe3ZhciB0PTE9PT1lLmxlbmd0aD9lcihlWzBdKTpBcnJheS5wcm90b3R5cGUuY29uY2F0LmFwcGx5KFtdLGUubWFwKGVyKSk7cmV0dXJuIEFycmF5LmlzQXJyYXkodCk/ImlmKCIrdC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIiRldmVudC5rZXlDb2RlIT09IitlfSkuam9pbigiJiYiKSsiKXJldHVybjsiOiJpZigkZXZlbnQua2V5Q29kZSE9PSIrdCsiKXJldHVybjsifWZ1bmN0aW9uIGVyKGUpe3JldHVybiBwYXJzZUludChlLDEwKXx8WGFbZV18fCJfaygiK0pTT04uc3RyaW5naWZ5KGUpKyIpIn1mdW5jdGlvbiB0cihlLHQpe2Uud3JhcERhdGE9ZnVuY3Rpb24obil7cmV0dXJuIl9iKCIrbisiLCciK2UudGFnKyInLCIrdC52YWx1ZSsodC5tb2RpZmllcnMmJnQubW9kaWZpZXJzLnByb3A/Iix0cnVlIjoiIikrIikifX1mdW5jdGlvbiBucihlLHQpe3ZhciBuPUNhLHI9Q2E9W10saT1rYTtrYT0wLEFhPXQsYmE9dC53YXJufHxmbiwkYT1kbih0Lm1vZHVsZXMsInRyYW5zZm9ybUNvZGUiKSx3YT1kbih0Lm1vZHVsZXMsImdlbkRhdGEiKSx4YT10LmRpcmVjdGl2ZXN8fHt9O3ZhciBvPWU/cnIoZSk6J19oKCJkaXYiKSc7cmV0dXJuIENhPW4sa2E9aSx7cmVuZGVyOiJ3aXRoKHRoaXMpe3JldHVybiAiK28rIn0iLHN0YXRpY1JlbmRlckZuczpyfX1mdW5jdGlvbiBycihlKXtpZihlLnN0YXRpY1Jvb3QmJiFlLnN0YXRpY1Byb2Nlc3NlZClyZXR1cm4gaXIoZSk7aWYoZS5vbmNlJiYhZS5vbmNlUHJvY2Vzc2VkKXJldHVybiBvcihlKTtpZihlLmZvciYmIWUuZm9yUHJvY2Vzc2VkKXJldHVybiBjcihlKTtpZihlLmlmJiYhZS5pZlByb2Nlc3NlZClyZXR1cm4gYXIoZSk7aWYoInRlbXBsYXRlIiE9PWUudGFnfHxlLnNsb3RUYXJnZXQpe2lmKCJzbG90Ij09PWUudGFnKXJldHVybiBncihlKTt2YXIgdDtpZihlLmNvbXBvbmVudCl0PXlyKGUuY29tcG9uZW50LGUpO2Vsc2V7dmFyIG49ZS5wbGFpbj92b2lkIDA6bHIoZSkscj1lLmlubGluZVRlbXBsYXRlP251bGw6dnIoZSk7dD0iX2goJyIrZS50YWcrIiciKyhuPyIsIituOiIiKSsocj8iLCIrcjoiIikrIikifWZvcih2YXIgaT0wO2k8JGEubGVuZ3RoO2krKyl0PSRhW2ldKGUsdCk7cmV0dXJuIHR9cmV0dXJuIHZyKGUpfHwidm9pZCAwIn1mdW5jdGlvbiBpcihlKXtyZXR1cm4gZS5zdGF0aWNQcm9jZXNzZWQ9ITAsQ2EucHVzaCgid2l0aCh0aGlzKXtyZXR1cm4gIitycihlKSsifSIpLCJfbSgiKyhDYS5sZW5ndGgtMSkrKGUuc3RhdGljSW5Gb3I/Iix0cnVlIjoiIikrIikifWZ1bmN0aW9uIG9yKGUpe2lmKGUub25jZVByb2Nlc3NlZD0hMCxlLmlmJiYhZS5pZlByb2Nlc3NlZClyZXR1cm4gYXIoZSk7aWYoZS5zdGF0aWNJbkZvcil7Zm9yKHZhciB0PSIiLG49ZS5wYXJlbnQ7bjspe2lmKG4uZm9yKXt0PW4ua2V5O2JyZWFrfW49bi5wYXJlbnR9cmV0dXJuIHQ/Il9vKCIrcnIoZSkrIiwiK2thKysgKyh0PyIsIit0OiIiKSsiKSI6cnIoZSl9cmV0dXJuIGlyKGUpfWZ1bmN0aW9uIGFyKGUpe3JldHVybiBlLmlmUHJvY2Vzc2VkPSEwLHNyKGUuY29uZGl0aW9ucyl9ZnVuY3Rpb24gc3IoZSl7ZnVuY3Rpb24gdChlKXtyZXR1cm4gZS5vbmNlP29yKGUpOnJyKGUpfWlmKCFlLmxlbmd0aClyZXR1cm4iX2UoKSI7dmFyIG49ZS5zaGlmdCgpO3JldHVybiBuLmV4cD8iKCIrbi5leHArIik/Iit0KG4uYmxvY2spKyI6IitzcihlKToiIit0KG4uYmxvY2spfWZ1bmN0aW9uIGNyKGUpe3ZhciB0PWUuZm9yLG49ZS5hbGlhcyxyPWUuaXRlcmF0b3IxPyIsIitlLml0ZXJhdG9yMToiIixpPWUuaXRlcmF0b3IyPyIsIitlLml0ZXJhdG9yMjoiIjtyZXR1cm4gZS5mb3JQcm9jZXNzZWQ9ITAsIl9sKCgiK3QrIiksZnVuY3Rpb24oIituK3IraSsiKXtyZXR1cm4gIitycihlKSsifSkifWZ1bmN0aW9uIGxyKGUpe3ZhciB0PSJ7IixuPXVyKGUpO24mJih0Kz1uKyIsIiksZS5rZXkmJih0Kz0ia2V5OiIrZS5rZXkrIiwiKSxlLnJlZiYmKHQrPSJyZWY6IitlLnJlZisiLCIpLGUucmVmSW5Gb3ImJih0Kz0icmVmSW5Gb3I6dHJ1ZSwiKSxlLmNvbXBvbmVudCYmKHQrPSd0YWc6IicrZS50YWcrJyIsJyk7Zm9yKHZhciByPTA7cjx3YS5sZW5ndGg7cisrKXQrPXdhW3JdKGUpO2lmKGUuYXR0cnMmJih0Kz0iYXR0cnM6eyIrX3IoZS5hdHRycykrIn0sIiksZS5wcm9wcyYmKHQrPSJkb21Qcm9wczp7IitfcihlLnByb3BzKSsifSwiKSxlLmV2ZW50cyYmKHQrPVluKGUuZXZlbnRzKSsiLCIpLGUubmF0aXZlRXZlbnRzJiYodCs9WW4oZS5uYXRpdmVFdmVudHMsITApKyIsIiksZS5zbG90VGFyZ2V0JiYodCs9InNsb3Q6IitlLnNsb3RUYXJnZXQrIiwiKSxlLnNjb3BlZFNsb3RzJiYodCs9ZHIoZS5zY29wZWRTbG90cykrIiwiKSxlLmlubGluZVRlbXBsYXRlKXt2YXIgaT1mcihlKTtpJiYodCs9aSsiLCIpfXJldHVybiB0PXQucmVwbGFjZSgvLCQvLCIiKSsifSIsZS53cmFwRGF0YSYmKHQ9ZS53cmFwRGF0YSh0KSksdH1mdW5jdGlvbiB1cihlKXt2YXIgdD1lLmRpcmVjdGl2ZXM7aWYodCl7dmFyIG4scixpLG8sYT0iZGlyZWN0aXZlczpbIixzPSExO2ZvcihuPTAscj10Lmxlbmd0aDtuPHI7bisrKXtpPXRbbl0sbz0hMDt2YXIgYz14YVtpLm5hbWVdfHxyc1tpLm5hbWVdO2MmJihvPSEhYyhlLGksYmEpKSxvJiYocz0hMCxhKz0ne25hbWU6IicraS5uYW1lKyciLHJhd05hbWU6IicraS5yYXdOYW1lKyciJysoaS52YWx1ZT8iLHZhbHVlOigiK2kudmFsdWUrIiksZXhwcmVzc2lvbjoiK0pTT04uc3RyaW5naWZ5KGkudmFsdWUpOiIiKSsoaS5hcmc/Jyxhcmc6IicraS5hcmcrJyInOiIiKSsoaS5tb2RpZmllcnM/Iixtb2RpZmllcnM6IitKU09OLnN0cmluZ2lmeShpLm1vZGlmaWVycyk6IiIpKyJ9LCIpfXJldHVybiBzP2Euc2xpY2UoMCwtMSkrIl0iOnZvaWQgMH19ZnVuY3Rpb24gZnIoZSl7dmFyIHQ9ZS5jaGlsZHJlblswXTtpZigxPT09dC50eXBlKXt2YXIgbj1ucih0LEFhKTtyZXR1cm4iaW5saW5lVGVtcGxhdGU6e3JlbmRlcjpmdW5jdGlvbigpeyIrbi5yZW5kZXIrIn0sc3RhdGljUmVuZGVyRm5zOlsiK24uc3RhdGljUmVuZGVyRm5zLm1hcChmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24oKXsiK2UrIn0ifSkuam9pbigiLCIpKyJdfSJ9fWZ1bmN0aW9uIGRyKGUpe3JldHVybiJzY29wZWRTbG90czp7IitPYmplY3Qua2V5cyhlKS5tYXAoZnVuY3Rpb24odCl7cmV0dXJuIHByKHQsZVt0XSl9KS5qb2luKCIsIikrIn0ifWZ1bmN0aW9uIHByKGUsdCl7cmV0dXJuIGUrIjpmdW5jdGlvbigiK1N0cmluZyh0LmF0dHJzTWFwLnNjb3BlKSsiKXtyZXR1cm4gIisoInRlbXBsYXRlIj09PXQudGFnP3ZyKHQpfHwidm9pZCAwIjpycih0KSkrIn0ifWZ1bmN0aW9uIHZyKGUpe2lmKGUuY2hpbGRyZW4ubGVuZ3RoKXJldHVybiJbIitlLmNoaWxkcmVuLm1hcChocikuam9pbigiLCIpKyJdIn1mdW5jdGlvbiBocihlKXtyZXR1cm4gMT09PWUudHlwZT9ycihlKTptcihlKX1mdW5jdGlvbiBtcihlKXtyZXR1cm4gMj09PWUudHlwZT9lLmV4cHJlc3Npb246YnIoSlNPTi5zdHJpbmdpZnkoZS50ZXh0KSl9ZnVuY3Rpb24gZ3IoZSl7dmFyIHQ9ZS5zbG90TmFtZXx8JyJkZWZhdWx0Iicsbj12cihlKTtyZXR1cm4iX3QoIit0KyhuPyIsIituOiIiKSsoZS5hdHRycz8obj8iIjoiLG51bGwiKSsiLHsiK2UuYXR0cnMubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBWcihlLm5hbWUpKyI6IitlLnZhbHVlfSkuam9pbigiLCIpKyJ9IjoiIikrIikifWZ1bmN0aW9uIHlyKGUsdCl7dmFyIG49dC5pbmxpbmVUZW1wbGF0ZT9udWxsOnZyKHQpO3JldHVybiJfaCgiK2UrIiwiK2xyKHQpKyhuPyIsIituOiIiKSsiKSJ9ZnVuY3Rpb24gX3IoZSl7Zm9yKHZhciB0PSIiLG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHI9ZVtuXTt0Kz0nIicrci5uYW1lKyciOicrYnIoci52YWx1ZSkrIiwifXJldHVybiB0LnNsaWNlKDAsLTEpfWZ1bmN0aW9uIGJyKGUpe3JldHVybiBlLnJlcGxhY2UoL1x1MjAyOC9nLCJcXHUyMDI4IikucmVwbGFjZSgvXHUyMDI5L2csIlxcdTIwMjkiKX1mdW5jdGlvbiAkcihlLHQpe3ZhciBuPWtuKGUudHJpbSgpLHQpO3puKG4sdCk7dmFyIHI9bnIobix0KTtyZXR1cm57YXN0Om4scmVuZGVyOnIucmVuZGVyLHN0YXRpY1JlbmRlckZuczpyLnN0YXRpY1JlbmRlckZuc319ZnVuY3Rpb24gd3IoZSx0KXt2YXIgbj0odC53YXJufHxmbix5bihlLCJjbGFzcyIpKTtuJiYoZS5zdGF0aWNDbGFzcz1KU09OLnN0cmluZ2lmeShuKSk7dmFyIHI9Z24oZSwiY2xhc3MiLCExKTtyJiYoZS5jbGFzc0JpbmRpbmc9cil9ZnVuY3Rpb24geHIoZSl7dmFyIHQ9IiI7cmV0dXJuIGUuc3RhdGljQ2xhc3MmJih0Kz0ic3RhdGljQ2xhc3M6IitlLnN0YXRpY0NsYXNzKyIsIiksZS5jbGFzc0JpbmRpbmcmJih0Kz0iY2xhc3M6IitlLmNsYXNzQmluZGluZysiLCIpLHR9ZnVuY3Rpb24gQ3IoZSx0KXt2YXIgbj0odC53YXJufHxmbix5bihlLCJzdHlsZSIpKTtuJiYoZS5zdGF0aWNTdHlsZT1KU09OLnN0cmluZ2lmeShobyhuKSkpO3ZhciByPWduKGUsInN0eWxlIiwhMSk7ciYmKGUuc3R5bGVCaW5kaW5nPXIpfWZ1bmN0aW9uIGtyKGUpe3ZhciB0PSIiO3JldHVybiBlLnN0YXRpY1N0eWxlJiYodCs9InN0YXRpY1N0eWxlOiIrZS5zdGF0aWNTdHlsZSsiLCIpLGUuc3R5bGVCaW5kaW5nJiYodCs9InN0eWxlOigiK2Uuc3R5bGVCaW5kaW5nKyIpLCIpLHR9ZnVuY3Rpb24gQXIoZSx0LG4pe09hPW47dmFyIHI9dC52YWx1ZSxpPXQubW9kaWZpZXJzLG89ZS50YWcsYT1lLmF0dHJzTWFwLnR5cGU7cmV0dXJuInNlbGVjdCI9PT1vP2pyKGUscixpKToiaW5wdXQiPT09byYmImNoZWNrYm94Ij09PWE/T3IoZSxyLGkpOiJpbnB1dCI9PT1vJiYicmFkaW8iPT09YT9TcihlLHIsaSk6VHIoZSxyLGkpLCEwfWZ1bmN0aW9uIE9yKGUsdCxuKXt2YXIgcj1uJiZuLm51bWJlcixpPWduKGUsInZhbHVlIil8fCJudWxsIixvPWduKGUsInRydWUtdmFsdWUiKXx8InRydWUiLGE9Z24oZSwiZmFsc2UtdmFsdWUiKXx8ImZhbHNlIjtwbihlLCJjaGVja2VkIiwiQXJyYXkuaXNBcnJheSgiK3QrIik/X2koIit0KyIsIitpKyIpPi0xOl9xKCIrdCsiLCIrbysiKSIpLG1uKGUsImNoYW5nZSIsInZhciAkJGE9Iit0KyIsJCRlbD0kZXZlbnQudGFyZ2V0LCQkYz0kJGVsLmNoZWNrZWQ/KCIrbysiKTooIithKyIpO2lmKEFycmF5LmlzQXJyYXkoJCRhKSl7dmFyICQkdj0iKyhyPyJfbigiK2krIikiOmkpKyIsJCRpPV9pKCQkYSwkJHYpO2lmKCQkYyl7JCRpPDAmJigiK3QrIj0kJGEuY29uY2F0KCQkdikpfWVsc2V7JCRpPi0xJiYoIit0KyI9JCRhLnNsaWNlKDAsJCRpKS5jb25jYXQoJCRhLnNsaWNlKCQkaSsxKSkpfX1lbHNleyIrdCsiPSQkY30iLG51bGwsITApfWZ1bmN0aW9uIFNyKGUsdCxuKXt2YXIgcj1uJiZuLm51bWJlcixpPWduKGUsInZhbHVlIil8fCJudWxsIjtpPXI/Il9uKCIraSsiKSI6aSxwbihlLCJjaGVja2VkIiwiX3EoIit0KyIsIitpKyIpIiksbW4oZSwiY2hhbmdlIixFcih0LGkpLG51bGwsITApfWZ1bmN0aW9uIFRyKGUsdCxuKXt2YXIgcj1lLmF0dHJzTWFwLnR5cGUsaT1ufHx7fSxvPWkubGF6eSxhPWkubnVtYmVyLHM9aS50cmltLGM9b3x8ZWkmJiJyYW5nZSI9PT1yPyJjaGFuZ2UiOiJpbnB1dCIsbD0hbyYmInJhbmdlIiE9PXIsdT0iaW5wdXQiPT09ZS50YWd8fCJ0ZXh0YXJlYSI9PT1lLnRhZyxmPXU/IiRldmVudC50YXJnZXQudmFsdWUiKyhzPyIudHJpbSgpIjoiIik6cz8iKHR5cGVvZiAkZXZlbnQgPT09ICdzdHJpbmcnID8gJGV2ZW50LnRyaW0oKSA6ICRldmVudCkiOiIkZXZlbnQiO2Y9YXx8Im51bWJlciI9PT1yPyJfbigiK2YrIikiOmY7dmFyIGQ9RXIodCxmKTt1JiZsJiYoZD0iaWYoJGV2ZW50LnRhcmdldC5jb21wb3NpbmcpcmV0dXJuOyIrZCkscG4oZSwidmFsdWUiLHU/Il9zKCIrdCsiKSI6IigiK3QrIikiKSxtbihlLGMsZCxudWxsLCEwKX1mdW5jdGlvbiBqcihlLHQsbil7dmFyIHI9biYmbi5udW1iZXIsaT0nQXJyYXkucHJvdG90eXBlLmZpbHRlci5jYWxsKCRldmVudC50YXJnZXQub3B0aW9ucyxmdW5jdGlvbihvKXtyZXR1cm4gby5zZWxlY3RlZH0pLm1hcChmdW5jdGlvbihvKXt2YXIgdmFsID0gIl92YWx1ZSIgaW4gbyA/IG8uX3ZhbHVlIDogby52YWx1ZTtyZXR1cm4gJysocj8iX24odmFsKSI6InZhbCIpKyJ9KSIrKG51bGw9PWUuYXR0cnNNYXAubXVsdGlwbGU/IlswXSI6IiIpLG89RXIodCxpKTttbihlLCJjaGFuZ2UiLG8sbnVsbCwhMCl9ZnVuY3Rpb24gRXIoZSx0KXt2YXIgbj1fbihlKTtyZXR1cm4gbnVsbD09PW4uaWR4P2UrIj0iK3Q6InZhciAkJGV4cCA9ICIrbi5leHArIiwgJCRpZHggPSAiK24uaWR4KyI7aWYgKCFBcnJheS5pc0FycmF5KCQkZXhwKSl7IitlKyI9Iit0KyJ9ZWxzZXskJGV4cC5zcGxpY2UoJCRpZHgsIDEsICIrdCsiKX0ifWZ1bmN0aW9uIE5yKGUsdCl7dC52YWx1ZSYmcG4oZSwidGV4dENvbnRlbnQiLCJfcygiK3QudmFsdWUrIikiKX1mdW5jdGlvbiBMcihlLHQpe3QudmFsdWUmJnBuKGUsImlubmVySFRNTCIsIl9zKCIrdC52YWx1ZSsiKSIpfWZ1bmN0aW9uIERyKGUsdCl7cmV0dXJuIHQ9dD9sKGwoe30sbHMpLHQpOmxzLCRyKGUsdCl9ZnVuY3Rpb24gTXIoZSx0LG4pe3ZhciByPSh0JiZ0Lndhcm58fHVpLHQmJnQuZGVsaW1pdGVycz9TdHJpbmcodC5kZWxpbWl0ZXJzKStlOmUpO2lmKGNzW3JdKXJldHVybiBjc1tyXTt2YXIgaT17fSxvPURyKGUsdCk7aS5yZW5kZXI9UHIoby5yZW5kZXIpO3ZhciBhPW8uc3RhdGljUmVuZGVyRm5zLmxlbmd0aDtpLnN0YXRpY1JlbmRlckZucz1uZXcgQXJyYXkoYSk7Zm9yKHZhciBzPTA7czxhO3MrKylpLnN0YXRpY1JlbmRlckZuc1tzXT1QcihvLnN0YXRpY1JlbmRlckZuc1tzXSk7cmV0dXJuIGNzW3JdPWl9ZnVuY3Rpb24gUHIoZSl7dHJ5e3JldHVybiBuZXcgRnVuY3Rpb24oZSl9Y2F0Y2goZSl7cmV0dXJuIHB9fWZ1bmN0aW9uIFJyKGUpe2lmKGUub3V0ZXJIVE1MKXJldHVybiBlLm91dGVySFRNTDt2YXIgdD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtyZXR1cm4gdC5hcHBlbmRDaGlsZChlLmNsb25lTm9kZSghMCkpLHQuaW5uZXJIVE1MfXZhciBJcixGcixCcj1uKCJzbG90LGNvbXBvbmVudCIsITApLFVyPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksSHI9Ly0oXHcpL2csVnI9YShmdW5jdGlvbihlKXtyZXR1cm4gZS5yZXBsYWNlKEhyLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQ/dC50b1VwcGVyQ2FzZSgpOiIifSl9KSx6cj1hKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSl9KSxKcj0vKFteLV0pKFtBLVpdKS9nLEtyPWEoZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZShKciwiJDEtJDIiKS5yZXBsYWNlKEpyLCIkMS0kMiIpLnRvTG93ZXJDYXNlKCl9KSxxcj1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLFdyPSJbb2JqZWN0IE9iamVjdF0iLFpyPWZ1bmN0aW9uKCl7cmV0dXJuITF9LEdyPS9bXlx3LiRdLyxZcj0iX19wcm90b19fImlue30sUXI9InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3cmJiJbb2JqZWN0IE9iamVjdF0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHdpbmRvdyksWHI9UXImJndpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCksZWk9WHImJi9tc2llfHRyaWRlbnQvLnRlc3QoWHIpLHRpPVhyJiZYci5pbmRleE9mKCJtc2llIDkuMCIpPjAsbmk9WHImJlhyLmluZGV4T2YoImVkZ2UvIik+MCxyaT1YciYmWHIuaW5kZXhPZigiYW5kcm9pZCIpPjAsaWk9WHImJi9pcGhvbmV8aXBhZHxpcG9kfGlvcy8udGVzdChYciksb2k9ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwPT09SXImJihJcj0hUXImJiJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsJiYic2VydmVyIj09PWdsb2JhbC5wcm9jZXNzLmVudi5WVUVfRU5WKSxJcn0sYWk9UXImJndpbmRvdy5fX1ZVRV9ERVZUT09MU19HTE9CQUxfSE9PS19fLHNpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe3I9ITE7dmFyIGU9bi5zbGljZSgwKTtuLmxlbmd0aD0wO2Zvcih2YXIgdD0wO3Q8ZS5sZW5ndGg7dCsrKWVbdF0oKX12YXIgdCxuPVtdLHI9ITE7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlJiZiKFByb21pc2UpKXt2YXIgaT1Qcm9taXNlLnJlc29sdmUoKTt0PWZ1bmN0aW9uKCl7aS50aGVuKGUpLGlpJiZzZXRUaW1lb3V0KHApfX1lbHNlIGlmKCJ1bmRlZmluZWQiPT10eXBlb2YgTXV0YXRpb25PYnNlcnZlcnx8IWIoTXV0YXRpb25PYnNlcnZlcikmJiJbb2JqZWN0IE11dGF0aW9uT2JzZXJ2ZXJDb25zdHJ1Y3Rvcl0iIT09TXV0YXRpb25PYnNlcnZlci50b1N0cmluZygpKXQ9ZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGUsMCl9O2Vsc2V7dmFyIG89MSxhPW5ldyBNdXRhdGlvbk9ic2VydmVyKGUpLHM9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoU3RyaW5nKG8pKTthLm9ic2VydmUocyx7Y2hhcmFjdGVyRGF0YTohMH0pLHQ9ZnVuY3Rpb24oKXtvPShvKzEpJTIscy5kYXRhPVN0cmluZyhvKX19cmV0dXJuIGZ1bmN0aW9uKGUsaSl7dmFyIG87aWYobi5wdXNoKGZ1bmN0aW9uKCl7ZSYmZS5jYWxsKGkpLG8mJm8oaSl9KSxyfHwocj0hMCx0KCkpLCFlJiYidW5kZWZpbmVkIiE9dHlwZW9mIFByb21pc2UpcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKGUpe289ZX0pfX0oKTtGcj0idW5kZWZpbmVkIiE9dHlwZW9mIFNldCYmYihTZXQpP1NldDpmdW5jdGlvbigpe2Z1bmN0aW9uIGUoKXt0aGlzLnNldD1PYmplY3QuY3JlYXRlKG51bGwpfXJldHVybiBlLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PXRoaXMuc2V0W2VdfSxlLnByb3RvdHlwZS5hZGQ9ZnVuY3Rpb24oZSl7dGhpcy5zZXRbZV09MX0sZS5wcm90b3R5cGUuY2xlYXI9ZnVuY3Rpb24oKXt0aGlzLnNldD1PYmplY3QuY3JlYXRlKG51bGwpfSxlfSgpO3ZhciBjaSxsaT17b3B0aW9uTWVyZ2VTdHJhdGVnaWVzOk9iamVjdC5jcmVhdGUobnVsbCksc2lsZW50OiExLGRldnRvb2xzOiExLGVycm9ySGFuZGxlcjpudWxsLGlnbm9yZWRFbGVtZW50czpudWxsLGtleUNvZGVzOk9iamVjdC5jcmVhdGUobnVsbCksaXNSZXNlcnZlZFRhZzpacixpc1Vua25vd25FbGVtZW50OlpyLGdldFRhZ05hbWVzcGFjZTpwLG11c3RVc2VQcm9wOlpyLF9hc3NldFR5cGVzOlsiY29tcG9uZW50IiwiZGlyZWN0aXZlIiwiZmlsdGVyIl0sX2xpZmVjeWNsZUhvb2tzOlsiYmVmb3JlQ3JlYXRlIiwiY3JlYXRlZCIsImJlZm9yZU1vdW50IiwibW91bnRlZCIsImJlZm9yZVVwZGF0ZSIsInVwZGF0ZWQiLCJiZWZvcmVEZXN0cm95IiwiZGVzdHJveWVkIiwiYWN0aXZhdGVkIiwiZGVhY3RpdmF0ZWQiXSxfbWF4VXBkYXRlQ291bnQ6MTAwfSx1aT1wLGZpPTAsZGk9ZnVuY3Rpb24oKXt0aGlzLmlkPWZpKyssdGhpcy5zdWJzPVtdfTtkaS5wcm90b3R5cGUuYWRkU3ViPWZ1bmN0aW9uKGUpe3RoaXMuc3Vicy5wdXNoKGUpfSxkaS5wcm90b3R5cGUucmVtb3ZlU3ViPWZ1bmN0aW9uKGUpe3IodGhpcy5zdWJzLGUpfSxkaS5wcm90b3R5cGUuZGVwZW5kPWZ1bmN0aW9uKCl7ZGkudGFyZ2V0JiZkaS50YXJnZXQuYWRkRGVwKHRoaXMpfSxkaS5wcm90b3R5cGUubm90aWZ5PWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuc3Vicy5zbGljZSgpLHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspZVt0XS51cGRhdGUoKX0sZGkudGFyZ2V0PW51bGw7dmFyIHBpPVtdLHZpPUFycmF5LnByb3RvdHlwZSxoaT1PYmplY3QuY3JlYXRlKHZpKTtbInB1c2giLCJwb3AiLCJzaGlmdCIsInVuc2hpZnQiLCJzcGxpY2UiLCJzb3J0IiwicmV2ZXJzZSJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9dmlbZV07eShoaSxlLGZ1bmN0aW9uKCl7Zm9yKHZhciBuPWFyZ3VtZW50cyxyPWFyZ3VtZW50cy5sZW5ndGgsaT1uZXcgQXJyYXkocik7ci0tOylpW3JdPW5bcl07dmFyIG8sYT10LmFwcGx5KHRoaXMsaSkscz10aGlzLl9fb2JfXztzd2l0Y2goZSl7Y2FzZSJwdXNoIjpvPWk7YnJlYWs7Y2FzZSJ1bnNoaWZ0IjpvPWk7YnJlYWs7Y2FzZSJzcGxpY2UiOm89aS5zbGljZSgyKX1yZXR1cm4gbyYmcy5vYnNlcnZlQXJyYXkobykscy5kZXAubm90aWZ5KCksYX0pfSk7dmFyIG1pPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhpKSxnaT17c2hvdWxkQ29udmVydDohMCxpc1NldHRpbmdQcm9wczohMX0seWk9ZnVuY3Rpb24oZSl7aWYodGhpcy52YWx1ZT1lLHRoaXMuZGVwPW5ldyBkaSx0aGlzLnZtQ291bnQ9MCx5KGUsIl9fb2JfXyIsdGhpcyksQXJyYXkuaXNBcnJheShlKSl7dmFyIHQ9WXI/eDpDO3QoZSxoaSxtaSksdGhpcy5vYnNlcnZlQXJyYXkoZSl9ZWxzZSB0aGlzLndhbGsoZSl9O3lpLnByb3RvdHlwZS53YWxrPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1PYmplY3Qua2V5cyhlKSxuPTA7bjx0Lmxlbmd0aDtuKyspQShlLHRbbl0sZVt0W25dXSl9LHlpLnByb3RvdHlwZS5vYnNlcnZlQXJyYXk9ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTAsbj1lLmxlbmd0aDt0PG47dCsrKWsoZVt0XSl9O3ZhciBfaT1saS5vcHRpb25NZXJnZVN0cmF0ZWdpZXM7X2kuZGF0YT1mdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/ZXx8dD9mdW5jdGlvbigpe3ZhciByPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3QuY2FsbChuKTp0LGk9ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZS5jYWxsKG4pOnZvaWQgMDtyZXR1cm4gcj9qKHIsaSk6aX06dm9pZCAwOnQ/ImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTplP2Z1bmN0aW9uKCl7cmV0dXJuIGoodC5jYWxsKHRoaXMpLGUuY2FsbCh0aGlzKSl9OnQ6ZX0sbGkuX2xpZmVjeWNsZUhvb2tzLmZvckVhY2goZnVuY3Rpb24oZSl7X2lbZV09RX0pLGxpLl9hc3NldFR5cGVzLmZvckVhY2goZnVuY3Rpb24oZSl7X2lbZSsicyJdPU59KSxfaS53YXRjaD1mdW5jdGlvbihlLHQpe2lmKCF0KXJldHVybiBlO2lmKCFlKXJldHVybiB0O3ZhciBuPXt9O2wobixlKTtmb3IodmFyIHIgaW4gdCl7dmFyIGk9bltyXSxvPXRbcl07aSYmIUFycmF5LmlzQXJyYXkoaSkmJihpPVtpXSksbltyXT1pP2kuY29uY2F0KG8pOltvXX1yZXR1cm4gbn0sX2kucHJvcHM9X2kubWV0aG9kcz1faS5jb21wdXRlZD1mdW5jdGlvbihlLHQpe2lmKCF0KXJldHVybiBlO2lmKCFlKXJldHVybiB0O3ZhciBuPU9iamVjdC5jcmVhdGUobnVsbCk7cmV0dXJuIGwobixlKSxsKG4sdCksbn07dmFyIGJpPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIHZvaWQgMD09PXQ/ZTp0fSwkaT1PYmplY3QuZnJlZXplKHtkZWZpbmVSZWFjdGl2ZTpBLF90b1N0cmluZzplLHRvTnVtYmVyOnQsbWFrZU1hcDpuLGlzQnVpbHRJblRhZzpCcixyZW1vdmU6cixoYXNPd246aSxpc1ByaW1pdGl2ZTpvLGNhY2hlZDphLGNhbWVsaXplOlZyLGNhcGl0YWxpemU6enIsaHlwaGVuYXRlOktyLGJpbmQ6cyx0b0FycmF5OmMsZXh0ZW5kOmwsaXNPYmplY3Q6dSxpc1BsYWluT2JqZWN0OmYsdG9PYmplY3Q6ZCxub29wOnAsbm86WnIsZ2VuU3RhdGljS2V5czp2LGxvb3NlRXF1YWw6aCxsb29zZUluZGV4T2Y6bSxpc1Jlc2VydmVkOmcsZGVmOnkscGFyc2VQYXRoOl8saGFzUHJvdG86WXIsaW5Ccm93c2VyOlFyLFVBOlhyLGlzSUU6ZWksaXNJRTk6dGksaXNFZGdlOm5pLGlzQW5kcm9pZDpyaSxpc0lPUzppaSxpc1NlcnZlclJlbmRlcmluZzpvaSxkZXZ0b29sczphaSxuZXh0VGljazpzaSxnZXQgX1NldCgpe3JldHVybiBGcn0sbWVyZ2VPcHRpb25zOk0scmVzb2x2ZUFzc2V0OlAsd2Fybjp1aSxmb3JtYXRDb21wb25lbnROYW1lOmNpLHZhbGlkYXRlUHJvcDpSfSksd2k9W10seGk9e30sQ2k9ITEsa2k9ITEsQWk9MCxPaT0wLFNpPWZ1bmN0aW9uKGUsdCxuLHIpe3ZvaWQgMD09PXImJihyPXt9KSx0aGlzLnZtPWUsZS5fd2F0Y2hlcnMucHVzaCh0aGlzKSx0aGlzLmRlZXA9ISFyLmRlZXAsdGhpcy51c2VyPSEhci51c2VyLHRoaXMubGF6eT0hIXIubGF6eSx0aGlzLnN5bmM9ISFyLnN5bmMsdGhpcy5leHByZXNzaW9uPXQudG9TdHJpbmcoKSx0aGlzLmNiPW4sdGhpcy5pZD0rK09pLHRoaXMuYWN0aXZlPSEwLHRoaXMuZGlydHk9dGhpcy5sYXp5LHRoaXMuZGVwcz1bXSx0aGlzLm5ld0RlcHM9W10sdGhpcy5kZXBJZHM9bmV3IEZyLHRoaXMubmV3RGVwSWRzPW5ldyBGciwiZnVuY3Rpb24iPT10eXBlb2YgdD90aGlzLmdldHRlcj10Oih0aGlzLmdldHRlcj1fKHQpLHRoaXMuZ2V0dGVyfHwodGhpcy5nZXR0ZXI9ZnVuY3Rpb24oKXt9KSksdGhpcy52YWx1ZT10aGlzLmxhenk/dm9pZCAwOnRoaXMuZ2V0KCl9O1NpLnByb3RvdHlwZS5nZXQ9ZnVuY3Rpb24oKXskKHRoaXMpO3ZhciBlPXRoaXMuZ2V0dGVyLmNhbGwodGhpcy52bSx0aGlzLnZtKTtyZXR1cm4gdGhpcy5kZWVwJiZ6KGUpLHcoKSx0aGlzLmNsZWFudXBEZXBzKCksZX0sU2kucHJvdG90eXBlLmFkZERlcD1mdW5jdGlvbihlKXt2YXIgdD1lLmlkO3RoaXMubmV3RGVwSWRzLmhhcyh0KXx8KHRoaXMubmV3RGVwSWRzLmFkZCh0KSx0aGlzLm5ld0RlcHMucHVzaChlKSx0aGlzLmRlcElkcy5oYXModCl8fGUuYWRkU3ViKHRoaXMpKX0sU2kucHJvdG90eXBlLmNsZWFudXBEZXBzPWZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMsdD10aGlzLmRlcHMubGVuZ3RoO3QtLTspe3ZhciBuPWUuZGVwc1t0XTtlLm5ld0RlcElkcy5oYXMobi5pZCl8fG4ucmVtb3ZlU3ViKGUpfXZhciByPXRoaXMuZGVwSWRzO3RoaXMuZGVwSWRzPXRoaXMubmV3RGVwSWRzLHRoaXMubmV3RGVwSWRzPXIsdGhpcy5uZXdEZXBJZHMuY2xlYXIoKSxyPXRoaXMuZGVwcyx0aGlzLmRlcHM9dGhpcy5uZXdEZXBzLHRoaXMubmV3RGVwcz1yLHRoaXMubmV3RGVwcy5sZW5ndGg9MH0sU2kucHJvdG90eXBlLnVwZGF0ZT1mdW5jdGlvbigpe3RoaXMubGF6eT90aGlzLmRpcnR5PSEwOnRoaXMuc3luYz90aGlzLnJ1bigpOlYodGhpcyl9LFNpLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24oKXtpZih0aGlzLmFjdGl2ZSl7dmFyIGU9dGhpcy5nZXQoKTtpZihlIT09dGhpcy52YWx1ZXx8dShlKXx8dGhpcy5kZWVwKXt2YXIgdD10aGlzLnZhbHVlO2lmKHRoaXMudmFsdWU9ZSx0aGlzLnVzZXIpdHJ5e3RoaXMuY2IuY2FsbCh0aGlzLnZtLGUsdCl9Y2F0Y2goZSl7aWYoIWxpLmVycm9ySGFuZGxlcil0aHJvdyBlO2xpLmVycm9ySGFuZGxlci5jYWxsKG51bGwsZSx0aGlzLnZtKX1lbHNlIHRoaXMuY2IuY2FsbCh0aGlzLnZtLGUsdCl9fX0sU2kucHJvdG90eXBlLmV2YWx1YXRlPWZ1bmN0aW9uKCl7dGhpcy52YWx1ZT10aGlzLmdldCgpLHRoaXMuZGlydHk9ITF9LFNpLnByb3RvdHlwZS5kZXBlbmQ9ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcyx0PXRoaXMuZGVwcy5sZW5ndGg7dC0tOyllLmRlcHNbdF0uZGVwZW5kKCl9LFNpLnByb3RvdHlwZS50ZWFyZG93bj1mdW5jdGlvbigpe3ZhciBlPXRoaXM7aWYodGhpcy5hY3RpdmUpe3RoaXMudm0uX2lzQmVpbmdEZXN0cm95ZWR8fHRoaXMudm0uX3ZGb3JSZW1vdmluZ3x8cih0aGlzLnZtLl93YXRjaGVycyx0aGlzKTtmb3IodmFyIHQ9dGhpcy5kZXBzLmxlbmd0aDt0LS07KWUuZGVwc1t0XS5yZW1vdmVTdWIoZSk7dGhpcy5hY3RpdmU9ITF9fTt2YXIgVGk9bmV3IEZyLGppPXtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCxnZXQ6cCxzZXQ6cH0sRWk9ZnVuY3Rpb24oZSx0LG4scixpLG8sYSxzKXt0aGlzLnRhZz1lLHRoaXMuZGF0YT10LHRoaXMuY2hpbGRyZW49bix0aGlzLnRleHQ9cix0aGlzLmVsbT1pLHRoaXMubnM9byx0aGlzLmNvbnRleHQ9YSx0aGlzLmZ1bmN0aW9uYWxDb250ZXh0PXZvaWQgMCx0aGlzLmtleT10JiZ0LmtleSx0aGlzLmNvbXBvbmVudE9wdGlvbnM9cyx0aGlzLmNoaWxkPXZvaWQgMCx0aGlzLnBhcmVudD12b2lkIDAsdGhpcy5yYXc9ITEsdGhpcy5pc1N0YXRpYz0hMSx0aGlzLmlzUm9vdEluc2VydD0hMCx0aGlzLmlzQ29tbWVudD0hMSx0aGlzLmlzQ2xvbmVkPSExLHRoaXMuaXNPbmNlPSExfSxOaT1mdW5jdGlvbigpe3ZhciBlPW5ldyBFaTtyZXR1cm4gZS50ZXh0PSIiLGUuaXNDb21tZW50PSEwLGV9LExpPW51bGwsRGk9e2luaXQ6eWUscHJlcGF0Y2g6X2UsaW5zZXJ0OmJlLGRlc3Ryb3k6JGV9LE1pPU9iamVjdC5rZXlzKERpKSxQaT0wO0RlKFJlKSxlZShSZSksTGUoUmUpLHBlKFJlKSxqZShSZSk7dmFyIFJpPVtTdHJpbmcsUmVnRXhwXSxJaT17bmFtZToia2VlcC1hbGl2ZSIsYWJzdHJhY3Q6ITAscHJvcHM6e2luY2x1ZGU6UmksZXhjbHVkZTpSaX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuY2FjaGU9T2JqZWN0LmNyZWF0ZShudWxsKX0scmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9ZmUodGhpcy4kc2xvdHMuZGVmYXVsdCk7aWYoZSYmZS5jb21wb25lbnRPcHRpb25zKXt2YXIgdD1lLmNvbXBvbmVudE9wdGlvbnMsbj10LkN0b3Iub3B0aW9ucy5uYW1lfHx0LnRhZztpZihuJiYodGhpcy5pbmNsdWRlJiYhSGUodGhpcy5pbmNsdWRlLG4pfHx0aGlzLmV4Y2x1ZGUmJkhlKHRoaXMuZXhjbHVkZSxuKSkpcmV0dXJuIGU7dmFyIHI9bnVsbD09ZS5rZXk/dC5DdG9yLmNpZCsodC50YWc/Ijo6Iit0LnRhZzoiIik6ZS5rZXk7dGhpcy5jYWNoZVtyXT9lLmNoaWxkPXRoaXMuY2FjaGVbcl0uY2hpbGQ6dGhpcy5jYWNoZVtyXT1lLGUuZGF0YS5rZWVwQWxpdmU9ITB9cmV0dXJuIGV9LGRlc3Ryb3llZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7Zm9yKHZhciB0IGluIHRoaXMuY2FjaGUpe3ZhciBuPWUuY2FjaGVbdF07dmUobi5jaGlsZCwiZGVhY3RpdmF0ZWQiKSxuLmNoaWxkLiRkZXN0cm95KCl9fX0sRmk9e0tlZXBBbGl2ZTpJaX07VmUoUmUpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZS5wcm90b3R5cGUsIiRpc1NlcnZlciIse2dldDpvaX0pLFJlLnZlcnNpb249IjIuMS4zIjt2YXIgQmksVWk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4idmFsdWUiPT09dCYmKCJpbnB1dCI9PT1lfHwidGV4dGFyZWEiPT09ZXx8Im9wdGlvbiI9PT1lKXx8InNlbGVjdGVkIj09PXQmJiJvcHRpb24iPT09ZXx8ImNoZWNrZWQiPT09dCYmImlucHV0Ij09PWV8fCJtdXRlZCI9PT10JiYidmlkZW8iPT09ZX0sSGk9bigiY29udGVudGVkaXRhYmxlLGRyYWdnYWJsZSxzcGVsbGNoZWNrIiksVmk9bigiYWxsb3dmdWxsc2NyZWVuLGFzeW5jLGF1dG9mb2N1cyxhdXRvcGxheSxjaGVja2VkLGNvbXBhY3QsY29udHJvbHMsZGVjbGFyZSxkZWZhdWx0LGRlZmF1bHRjaGVja2VkLGRlZmF1bHRtdXRlZCxkZWZhdWx0c2VsZWN0ZWQsZGVmZXIsZGlzYWJsZWQsZW5hYmxlZCxmb3Jtbm92YWxpZGF0ZSxoaWRkZW4saW5kZXRlcm1pbmF0ZSxpbmVydCxpc21hcCxpdGVtc2NvcGUsbG9vcCxtdWx0aXBsZSxtdXRlZCxub2hyZWYsbm9yZXNpemUsbm9zaGFkZSxub3ZhbGlkYXRlLG5vd3JhcCxvcGVuLHBhdXNlb25leGl0LHJlYWRvbmx5LHJlcXVpcmVkLHJldmVyc2VkLHNjb3BlZCxzZWFtbGVzcyxzZWxlY3RlZCxzb3J0YWJsZSx0cmFuc2xhdGUsdHJ1ZXNwZWVkLHR5cGVtdXN0bWF0Y2gsdmlzaWJsZSIpLHppPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIixKaT1mdW5jdGlvbihlKXtyZXR1cm4iOiI9PT1lLmNoYXJBdCg1KSYmInhsaW5rIj09PWUuc2xpY2UoMCw1KX0sS2k9ZnVuY3Rpb24oZSl7cmV0dXJuIEppKGUpP2Uuc2xpY2UoNixlLmxlbmd0aCk6IiJ9LHFpPWZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT1lfHxlPT09ITF9LFdpPXtzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIixtYXRoOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MIix4aHRtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCJ9LFppPW4oImh0bWwsYm9keSxiYXNlLGhlYWQsbGluayxtZXRhLHN0eWxlLHRpdGxlLGFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxmb290ZXIsaGVhZGVyLGgxLGgyLGgzLGg0LGg1LGg2LGhncm91cCxuYXYsc2VjdGlvbixkaXYsZGQsZGwsZHQsZmlnY2FwdGlvbixmaWd1cmUsaHIsaW1nLGxpLG1haW4sb2wscCxwcmUsdWwsYSxiLGFiYnIsYmRpLGJkbyxicixjaXRlLGNvZGUsZGF0YSxkZm4sZW0saSxrYmQsbWFyayxxLHJwLHJ0LHJ0YyxydWJ5LHMsc2FtcCxzbWFsbCxzcGFuLHN0cm9uZyxzdWIsc3VwLHRpbWUsdSx2YXIsd2JyLGFyZWEsYXVkaW8sbWFwLHRyYWNrLHZpZGVvLGVtYmVkLG9iamVjdCxwYXJhbSxzb3VyY2UsY2FudmFzLHNjcmlwdCxub3NjcmlwdCxkZWwsaW5zLGNhcHRpb24sY29sLGNvbGdyb3VwLHRhYmxlLHRoZWFkLHRib2R5LHRkLHRoLHRyLGJ1dHRvbixkYXRhbGlzdCxmaWVsZHNldCxmb3JtLGlucHV0LGxhYmVsLGxlZ2VuZCxtZXRlcixvcHRncm91cCxvcHRpb24sb3V0cHV0LHByb2dyZXNzLHNlbGVjdCx0ZXh0YXJlYSxkZXRhaWxzLGRpYWxvZyxtZW51LG1lbnVpdGVtLHN1bW1hcnksY29udGVudCxlbGVtZW50LHNoYWRvdyx0ZW1wbGF0ZSIpLEdpPW4oImFyZWEsYmFzZSxicixjb2wsZW1iZWQsZnJhbWUsaHIsaW1nLGlucHV0LGlzaW5kZXgsa2V5Z2VuLGxpbmssbWV0YSxwYXJhbSxzb3VyY2UsdHJhY2ssd2JyIiwhMCksWWk9bigiY29sZ3JvdXAsZGQsZHQsbGksb3B0aW9ucyxwLHRkLHRmb290LHRoLHRoZWFkLHRyLHNvdXJjZSIsITApLFFpPW4oImFkZHJlc3MsYXJ0aWNsZSxhc2lkZSxiYXNlLGJsb2NrcXVvdGUsYm9keSxjYXB0aW9uLGNvbCxjb2xncm91cCxkZCxkZXRhaWxzLGRpYWxvZyxkaXYsZGwsZHQsZmllbGRzZXQsZmlnY2FwdGlvbixmaWd1cmUsZm9vdGVyLGZvcm0saDEsaDIsaDMsaDQsaDUsaDYsaGVhZCxoZWFkZXIsaGdyb3VwLGhyLGh0bWwsbGVnZW5kLGxpLG1lbnVpdGVtLG1ldGEsb3B0Z3JvdXAsb3B0aW9uLHBhcmFtLHJwLHJ0LHNvdXJjZSxzdHlsZSxzdW1tYXJ5LHRib2R5LHRkLHRmb290LHRoLHRoZWFkLHRpdGxlLHRyLHRyYWNrIiwhMCksWGk9bigic3ZnLGFuaW1hdGUsY2lyY2xlLGNsaXBwYXRoLGN1cnNvcixkZWZzLGRlc2MsZWxsaXBzZSxmaWx0ZXIsZm9udCxmb250LWZhY2UsZyxnbHlwaCxpbWFnZSxsaW5lLG1hcmtlcixtYXNrLG1pc3NpbmctZ2x5cGgscGF0aCxwYXR0ZXJuLHBvbHlnb24scG9seWxpbmUscmVjdCxzd2l0Y2gsc3ltYm9sLHRleHQsdGV4dHBhdGgsdHNwYW4sdXNlLHZpZXciLCEwKSxlbz1mdW5jdGlvbihlKXtyZXR1cm4icHJlIj09PWV9LHRvPWZ1bmN0aW9uKGUpe3JldHVybiBaaShlKXx8WGkoZSl9LG5vPU9iamVjdC5jcmVhdGUobnVsbCkscm89T2JqZWN0LmZyZWV6ZSh7Y3JlYXRlRWxlbWVudDpRZSxjcmVhdGVFbGVtZW50TlM6WGUsY3JlYXRlVGV4dE5vZGU6ZXQsY3JlYXRlQ29tbWVudDp0dCxpbnNlcnRCZWZvcmU6bnQscmVtb3ZlQ2hpbGQ6cnQsYXBwZW5kQ2hpbGQ6aXQscGFyZW50Tm9kZTpvdCxuZXh0U2libGluZzphdCx0YWdOYW1lOnN0LHNldFRleHRDb250ZW50OmN0LGNoaWxkTm9kZXM6bHQsc2V0QXR0cmlidXRlOnV0fSksaW89e2NyZWF0ZTpmdW5jdGlvbihlLHQpe2Z0KHQpfSx1cGRhdGU6ZnVuY3Rpb24oZSx0KXtlLmRhdGEucmVmIT09dC5kYXRhLnJlZiYmKGZ0KGUsITApLGZ0KHQpKX0sZGVzdHJveTpmdW5jdGlvbihlKXtmdChlLCEwKX19LG9vPW5ldyBFaSgiIix7fSxbXSksYW89WyJjcmVhdGUiLCJ1cGRhdGUiLCJyZW1vdmUiLCJkZXN0cm95Il0sc289e2NyZWF0ZTpndCx1cGRhdGU6Z3QsZGVzdHJveTpmdW5jdGlvbihlKXtndChlLG9vKX19LGNvPU9iamVjdC5jcmVhdGUobnVsbCksbG89W2lvLHNvXSx1bz17Y3JlYXRlOiR0LHVwZGF0ZTokdH0sZm89e2NyZWF0ZTp4dCx1cGRhdGU6eHR9LHBvPXtjcmVhdGU6Q3QsdXBkYXRlOkN0fSx2bz17Y3JlYXRlOmt0LHVwZGF0ZTprdH0saG89YShmdW5jdGlvbihlKXt2YXIgdD17fSxuPWUuaW5kZXhPZigiYmFja2dyb3VuZCIpPj0wLHI9bj8vOyg/IVteKF0qXCkpL2c6IjsiLGk9bj8vOiguKykvOiI6IjtyZXR1cm4gZS5zcGxpdChyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBuPWUuc3BsaXQoaSk7bi5sZW5ndGg+MSYmKHRbblswXS50cmltKCldPW5bMV0udHJpbSgpKX19KSx0fSksbW89L14tLS8sZ289ZnVuY3Rpb24oZSx0LG4pe21vLnRlc3QodCk/ZS5zdHlsZS5zZXRQcm9wZXJ0eSh0LG4pOmUuc3R5bGVbX28odCldPW59LHlvPVsiV2Via2l0IiwiTW96IiwibXMiXSxfbz1hKGZ1bmN0aW9uKGUpe2lmKEJpPUJpfHxkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxlPVZyKGUpLCJmaWx0ZXIiIT09ZSYmZSBpbiBCaS5zdHlsZSlyZXR1cm4gZTtmb3IodmFyIHQ9ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49MDtuPHlvLmxlbmd0aDtuKyspe3ZhciByPXlvW25dK3Q7aWYociBpbiBCaS5zdHlsZSlyZXR1cm4gcn19KSxibz17Y3JlYXRlOlR0LHVwZGF0ZTpUdH0sJG89UXImJiF0aSx3bz0idHJhbnNpdGlvbiIseG89ImFuaW1hdGlvbiIsQ289InRyYW5zaXRpb24iLGtvPSJ0cmFuc2l0aW9uZW5kIixBbz0iYW5pbWF0aW9uIixPbz0iYW5pbWF0aW9uZW5kIjskbyYmKHZvaWQgMD09PXdpbmRvdy5vbnRyYW5zaXRpb25lbmQmJnZvaWQgMCE9PXdpbmRvdy5vbndlYmtpdHRyYW5zaXRpb25lbmQmJihDbz0iV2Via2l0VHJhbnNpdGlvbiIsa289IndlYmtpdFRyYW5zaXRpb25FbmQiKSx2b2lkIDA9PT13aW5kb3cub25hbmltYXRpb25lbmQmJnZvaWQgMCE9PXdpbmRvdy5vbndlYmtpdGFuaW1hdGlvbmVuZCYmKEFvPSJXZWJraXRBbmltYXRpb24iLE9vPSJ3ZWJraXRBbmltYXRpb25FbmQiKSk7dmFyIFNvPVFyJiZ3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lfHxzZXRUaW1lb3V0LFRvPS9cYih0cmFuc2Zvcm18YWxsKSgsfCQpLyxqbz1hKGZ1bmN0aW9uKGUpe3JldHVybntlbnRlckNsYXNzOmUrIi1lbnRlciIsbGVhdmVDbGFzczplKyItbGVhdmUiLGFwcGVhckNsYXNzOmUrIi1lbnRlciIsZW50ZXJBY3RpdmVDbGFzczplKyItZW50ZXItYWN0aXZlIixsZWF2ZUFjdGl2ZUNsYXNzOmUrIi1sZWF2ZS1hY3RpdmUiLGFwcGVhckFjdGl2ZUNsYXNzOmUrIi1lbnRlci1hY3RpdmUifX0pLEVvPVFyP3tjcmVhdGU6ZnVuY3Rpb24oZSx0KXt0LmRhdGEuc2hvd3x8RnQodCl9LHJlbW92ZTpmdW5jdGlvbihlLHQpe2UuZGF0YS5zaG93P3QoKTpCdChlLHQpfX06e30sTm89W3VvLGZvLHBvLHZvLGJvLEVvXSxMbz1Oby5jb25jYXQobG8pLERvPW10KHtub2RlT3BzOnJvLG1vZHVsZXM6TG99KTt0aSYmZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigic2VsZWN0aW9uY2hhbmdlIixmdW5jdGlvbigpe3ZhciBlPWRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7ZSYmZS52bW9kZWwmJld0KGUsImlucHV0Iil9KTt2YXIgTW89e2luc2VydGVkOmZ1bmN0aW9uKGUsdCxuKXtpZigic2VsZWN0Ij09PW4udGFnKXt2YXIgcj1mdW5jdGlvbigpe1Z0KGUsdCxuLmNvbnRleHQpfTtyKCksKGVpfHxuaSkmJnNldFRpbWVvdXQociwwKX1lbHNlInRleHRhcmVhIiE9PW4udGFnJiYidGV4dCIhPT1lLnR5cGV8fHQubW9kaWZpZXJzLmxhenl8fChyaXx8KGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25zdGFydCIsS3QpLGUuYWRkRXZlbnRMaXN0ZW5lcigiY29tcG9zaXRpb25lbmQiLHF0KSksdGkmJihlLnZtb2RlbD0hMCkpfSxjb21wb25lbnRVcGRhdGVkOmZ1bmN0aW9uKGUsdCxuKXtpZigic2VsZWN0Ij09PW4udGFnKXtWdChlLHQsbi5jb250ZXh0KTt2YXIgcj1lLm11bHRpcGxlP3QudmFsdWUuc29tZShmdW5jdGlvbih0KXtyZXR1cm4genQodCxlLm9wdGlvbnMpfSk6dC52YWx1ZSE9PXQub2xkVmFsdWUmJnp0KHQudmFsdWUsZS5vcHRpb25zKTtyJiZXdChlLCJjaGFuZ2UiKX19fSxQbz17YmluZDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZTtuPVp0KG4pO3ZhciBpPW4uZGF0YSYmbi5kYXRhLnRyYW5zaXRpb247ciYmaSYmIXRpJiZGdChuKTt2YXIgbz0ibm9uZSI9PT1lLnN0eWxlLmRpc3BsYXk/IiI6ZS5zdHlsZS5kaXNwbGF5O2Uuc3R5bGUuZGlzcGxheT1yP286Im5vbmUiLGUuX192T3JpZ2luYWxEaXNwbGF5PW99LHVwZGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9dC52YWx1ZSxpPXQub2xkVmFsdWU7aWYociE9PWkpe249WnQobik7dmFyIG89bi5kYXRhJiZuLmRhdGEudHJhbnNpdGlvbjtvJiYhdGk/cj8oRnQobiksZS5zdHlsZS5kaXNwbGF5PWUuX192T3JpZ2luYWxEaXNwbGF5KTpCdChuLGZ1bmN0aW9uKCl7ZS5zdHlsZS5kaXNwbGF5PSJub25lIn0pOmUuc3R5bGUuZGlzcGxheT1yP2UuX192T3JpZ2luYWxEaXNwbGF5OiJub25lIn19fSxSbz17bW9kZWw6TW8sc2hvdzpQb30sSW89e25hbWU6U3RyaW5nLGFwcGVhcjpCb29sZWFuLGNzczpCb29sZWFuLG1vZGU6U3RyaW5nLHR5cGU6U3RyaW5nLGVudGVyQ2xhc3M6U3RyaW5nLGxlYXZlQ2xhc3M6U3RyaW5nLGVudGVyQWN0aXZlQ2xhc3M6U3RyaW5nLGxlYXZlQWN0aXZlQ2xhc3M6U3RyaW5nLA0KYXBwZWFyQ2xhc3M6U3RyaW5nLGFwcGVhckFjdGl2ZUNsYXNzOlN0cmluZ30sRm89e25hbWU6InRyYW5zaXRpb24iLHByb3BzOklvLGFic3RyYWN0OiEwLHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy4kc2xvdHMuZGVmYXVsdDtpZihuJiYobj1uLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS50YWd9KSxuLmxlbmd0aCkpe3ZhciByPXRoaXMubW9kZSxpPW5bMF07aWYoWHQodGhpcy4kdm5vZGUpKXJldHVybiBpO3ZhciBvPUd0KGkpO2lmKCFvKXJldHVybiBpO2lmKHRoaXMuX2xlYXZpbmcpcmV0dXJuIFF0KGUsaSk7dmFyIGE9by5rZXk9bnVsbD09by5rZXl8fG8uaXNTdGF0aWM/Il9fdiIrKG8udGFnK3RoaXMuX3VpZCkrIl9fIjpvLmtleSxzPShvLmRhdGF8fChvLmRhdGE9e30pKS50cmFuc2l0aW9uPVl0KHRoaXMpLGM9dGhpcy5fdm5vZGUsdT1HdChjKTtpZihvLmRhdGEuZGlyZWN0aXZlcyYmby5kYXRhLmRpcmVjdGl2ZXMuc29tZShmdW5jdGlvbihlKXtyZXR1cm4ic2hvdyI9PT1lLm5hbWV9KSYmKG8uZGF0YS5zaG93PSEwKSx1JiZ1LmRhdGEmJnUua2V5IT09YSl7dmFyIGY9dS5kYXRhLnRyYW5zaXRpb249bCh7fSxzKTtpZigib3V0LWluIj09PXIpcmV0dXJuIHRoaXMuX2xlYXZpbmc9ITAsaWUoZiwiYWZ0ZXJMZWF2ZSIsZnVuY3Rpb24oKXt0Ll9sZWF2aW5nPSExLHQuJGZvcmNlVXBkYXRlKCl9LGEpLFF0KGUsaSk7aWYoImluLW91dCI9PT1yKXt2YXIgZCxwPWZ1bmN0aW9uKCl7ZCgpfTtpZShzLCJhZnRlckVudGVyIixwLGEpLGllKHMsImVudGVyQ2FuY2VsbGVkIixwLGEpLGllKGYsImRlbGF5TGVhdmUiLGZ1bmN0aW9uKGUpe2Q9ZX0sYSl9fXJldHVybiBpfX19LEJvPWwoe3RhZzpTdHJpbmcsbW92ZUNsYXNzOlN0cmluZ30sSW8pO2RlbGV0ZSBCby5tb2RlO3ZhciBVbz17cHJvcHM6Qm8scmVuZGVyOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRhZ3x8dGhpcy4kdm5vZGUuZGF0YS50YWd8fCJzcGFuIixuPU9iamVjdC5jcmVhdGUobnVsbCkscj10aGlzLnByZXZDaGlsZHJlbj10aGlzLmNoaWxkcmVuLGk9dGhpcy4kc2xvdHMuZGVmYXVsdHx8W10sbz10aGlzLmNoaWxkcmVuPVtdLGE9WXQodGhpcykscz0wO3M8aS5sZW5ndGg7cysrKXt2YXIgYz1pW3NdO2MudGFnJiZudWxsIT1jLmtleSYmMCE9PVN0cmluZyhjLmtleSkuaW5kZXhPZigiX192bGlzdCIpJiYoby5wdXNoKGMpLG5bYy5rZXldPWMsKGMuZGF0YXx8KGMuZGF0YT17fSkpLnRyYW5zaXRpb249YSl9aWYocil7Zm9yKHZhciBsPVtdLHU9W10sZj0wO2Y8ci5sZW5ndGg7ZisrKXt2YXIgZD1yW2ZdO2QuZGF0YS50cmFuc2l0aW9uPWEsZC5kYXRhLnBvcz1kLmVsbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxuW2Qua2V5XT9sLnB1c2goZCk6dS5wdXNoKGQpfXRoaXMua2VwdD1lKHQsbnVsbCxsKSx0aGlzLnJlbW92ZWQ9dX1yZXR1cm4gZSh0LG51bGwsbyl9LGJlZm9yZVVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuX19wYXRjaF9fKHRoaXMuX3Zub2RlLHRoaXMua2VwdCwhMSwhMCksdGhpcy5fdm5vZGU9dGhpcy5rZXB0fSx1cGRhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcmV2Q2hpbGRyZW4sdD10aGlzLm1vdmVDbGFzc3x8KHRoaXMubmFtZXx8InYiKSsiLW1vdmUiO2lmKGUubGVuZ3RoJiZ0aGlzLmhhc01vdmUoZVswXS5lbG0sdCkpe2UuZm9yRWFjaChlbiksZS5mb3JFYWNoKHRuKSxlLmZvckVhY2gobm4pO2RvY3VtZW50LmJvZHkub2Zmc2V0SGVpZ2h0O2UuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlLmRhdGEubW92ZWQpe3ZhciBuPWUuZWxtLHI9bi5zdHlsZTtMdChuLHQpLHIudHJhbnNmb3JtPXIuV2Via2l0VHJhbnNmb3JtPXIudHJhbnNpdGlvbkR1cmF0aW9uPSIiLG4uYWRkRXZlbnRMaXN0ZW5lcihrbyxuLl9tb3ZlQ2I9ZnVuY3Rpb24gZShyKXtyJiYhL3RyYW5zZm9ybSQvLnRlc3Qoci5wcm9wZXJ0eU5hbWUpfHwobi5yZW1vdmVFdmVudExpc3RlbmVyKGtvLGUpLG4uX21vdmVDYj1udWxsLER0KG4sdCkpfSl9fSl9fSxtZXRob2RzOntoYXNNb3ZlOmZ1bmN0aW9uKGUsdCl7aWYoISRvKXJldHVybiExO2lmKG51bGwhPXRoaXMuX2hhc01vdmUpcmV0dXJuIHRoaXMuX2hhc01vdmU7THQoZSx0KTt2YXIgbj1QdChlKTtyZXR1cm4gRHQoZSx0KSx0aGlzLl9oYXNNb3ZlPW4uaGFzVHJhbnNmb3JtfX19LEhvPXtUcmFuc2l0aW9uOkZvLFRyYW5zaXRpb25Hcm91cDpVb307UmUuY29uZmlnLmlzVW5rbm93bkVsZW1lbnQ9R2UsUmUuY29uZmlnLmlzUmVzZXJ2ZWRUYWc9dG8sUmUuY29uZmlnLmdldFRhZ05hbWVzcGFjZT1aZSxSZS5jb25maWcubXVzdFVzZVByb3A9VWksbChSZS5vcHRpb25zLmRpcmVjdGl2ZXMsUm8pLGwoUmUub3B0aW9ucy5jb21wb25lbnRzLEhvKSxSZS5wcm90b3R5cGUuX19wYXRjaF9fPVFyP0RvOnAsUmUucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe3JldHVybiBlPWUmJlFyP1llKGUpOnZvaWQgMCx0aGlzLl9tb3VudChlLHQpfSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bGkuZGV2dG9vbHMmJmFpJiZhaS5lbWl0KCJpbml0IixSZSl9LDApO3ZhciBWbyx6bz0hIVFyJiZybigiXG4iLCImIzEwOyIpLEpvPS8oW15ccyInPD5cLz1dKykvLEtvPS8oPzo9KS8scW89Wy8iKFteIl0qKSIrLy5zb3VyY2UsLycoW14nXSopJysvLnNvdXJjZSwvKFteXHMiJz08PmBdKykvLnNvdXJjZV0sV289bmV3IFJlZ0V4cCgiXlxccyoiK0pvLnNvdXJjZSsiKD86XFxzKigiK0tvLnNvdXJjZSsiKVxccyooPzoiK3FvLmpvaW4oInwiKSsiKSk/IiksWm89IlthLXpBLVpfXVtcXHdcXC1cXC5dKiIsR289IigoPzoiK1pvKyJcXDopPyIrWm8rIikiLFlvPW5ldyBSZWdFeHAoIl48IitHbyksUW89L15ccyooXC8/KT4vLFhvPW5ldyBSZWdFeHAoIl48XFwvIitHbysiW14+XSo+IiksZWE9L148IURPQ1RZUEUgW14+XSs+L2ksdGE9L148IS0tLyxuYT0vXjwhXFsvLHJhPSExOyJ4Ii5yZXBsYWNlKC94KC4pPy9nLGZ1bmN0aW9uKGUsdCl7cmE9IiI9PT10fSk7dmFyIGlhLG9hLGFhLHNhLGNhLGxhLHVhLGZhLGRhLHBhLHZhLGhhLG1hLGdhLHlhLF9hLGJhLCRhLHdhLHhhLENhLGthLEFhLE9hLFNhPW4oInNjcmlwdCxzdHlsZSIsITApLFRhPWZ1bmN0aW9uKGUpe3JldHVybiJsYW5nIj09PWUubmFtZSYmImh0bWwiIT09ZS52YWx1ZX0samE9ZnVuY3Rpb24oZSx0LG4pe3JldHVybiEhU2EoZSl8fCEoIXR8fDEhPT1uLmxlbmd0aCkmJiEoInRlbXBsYXRlIj09PWUmJiFuWzBdLmF0dHJzLnNvbWUoVGEpKX0sRWE9e30sTmE9LyZsdDsvZyxMYT0vJmd0Oy9nLERhPS8mIzEwOy9nLE1hPS8mYW1wOy9nLFBhPS8mcXVvdDsvZyxSYT0vXHtceygoPzoufFxuKSs/KVx9XH0vZyxJYT0vWy0uKis/XiR7fSgpfFtcXVwvXFxdL2csRmE9YShmdW5jdGlvbihlKXt2YXIgdD1lWzBdLnJlcGxhY2UoSWEsIlxcJCYiKSxuPWVbMV0ucmVwbGFjZShJYSwiXFwkJiIpO3JldHVybiBuZXcgUmVnRXhwKHQrIigoPzoufFxcbikrPykiK24sImciKX0pLEJhPS9edi18XkB8XjovLFVhPS8oLio/KVxzKyg/OmlufG9mKVxzKyguKikvLEhhPS9cKChce1tefV0qXH18W14sXSopLChbXixdKikoPzosKFteLF0qKSk/XCkvLFZhPS9eOnxedi1iaW5kOi8semE9L15AfF52LW9uOi8sSmE9LzooLiopJC8sS2E9L1wuW14uXSsvZyxxYT1hKG9uKSxXYT0vXnhtbG5zOk5TXGQrLyxaYT0vXk5TXGQrOi8sR2E9YShKbiksWWE9L15ccyooW1x3JF9dK3xcKFteKV0qP1wpKVxzKj0+fF5mdW5jdGlvblxzKlwoLyxRYT0vXlxzKltBLVphLXpfJF1bXHckXSooPzpcLltBLVphLXpfJF1bXHckXSp8XFsnLio/J118XFsiLio/Il18XFtcZCtdfFxbW0EtWmEtel8kXVtcdyRdKl0pKlxzKiQvLFhhPXtlc2M6MjcsdGFiOjksZW50ZXI6MTMsc3BhY2U6MzIsdXA6MzgsbGVmdDozNyxyaWdodDozOSxkb3duOjQwLGRlbGV0ZTpbOCw0Nl19LGVzPXtzdG9wOiIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IixwcmV2ZW50OiIkZXZlbnQucHJldmVudERlZmF1bHQoKTsiLHNlbGY6ImlmKCRldmVudC50YXJnZXQgIT09ICRldmVudC5jdXJyZW50VGFyZ2V0KXJldHVybjsifSx0cz0vXm1vdXNlfF5wb2ludGVyfF4oY2xpY2t8ZGJsY2xpY2t8Y29udGV4dG1lbnV8d2hlZWwpJC8sbnM9e2N0cmw6ImlmKCEkZXZlbnQuY3RybEtleSlyZXR1cm47IixzaGlmdDoiaWYoISRldmVudC5zaGlmdEtleSlyZXR1cm47IixhbHQ6ImlmKCEkZXZlbnQuYWx0S2V5KXJldHVybjsiLG1ldGE6ImlmKCEkZXZlbnQubWV0YUtleSlyZXR1cm47In0scnM9e2JpbmQ6dHIsY2xvYWs6cH0saXM9e3N0YXRpY0tleXM6WyJzdGF0aWNDbGFzcyJdLHRyYW5zZm9ybU5vZGU6d3IsZ2VuRGF0YTp4cn0sb3M9e3N0YXRpY0tleXM6WyJzdGF0aWNTdHlsZSJdLHRyYW5zZm9ybU5vZGU6Q3IsZ2VuRGF0YTprcn0sYXM9W2lzLG9zXSxzcz17bW9kZWw6QXIsdGV4dDpOcixodG1sOkxyfSxjcz1PYmplY3QuY3JlYXRlKG51bGwpLGxzPXtleHBlY3RIVE1MOiEwLG1vZHVsZXM6YXMsc3RhdGljS2V5czp2KGFzKSxkaXJlY3RpdmVzOnNzLGlzUmVzZXJ2ZWRUYWc6dG8saXNVbmFyeVRhZzpHaSxtdXN0VXNlUHJvcDpVaSxnZXRUYWdOYW1lc3BhY2U6WmUsaXNQcmVUYWc6ZW99LHVzPWEoZnVuY3Rpb24oZSl7dmFyIHQ9WWUoZSk7cmV0dXJuIHQmJnQuaW5uZXJIVE1MfSksZnM9UmUucHJvdG90eXBlLiRtb3VudDtyZXR1cm4gUmUucHJvdG90eXBlLiRtb3VudD1mdW5jdGlvbihlLHQpe2lmKGU9ZSYmWWUoZSksZT09PWRvY3VtZW50LmJvZHl8fGU9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpcmV0dXJuIHRoaXM7dmFyIG49dGhpcy4kb3B0aW9ucztpZighbi5yZW5kZXIpe3ZhciByPW4udGVtcGxhdGU7aWYocilpZigic3RyaW5nIj09dHlwZW9mIHIpIiMiPT09ci5jaGFyQXQoMCkmJihyPXVzKHIpKTtlbHNle2lmKCFyLm5vZGVUeXBlKXJldHVybiB0aGlzO3I9ci5pbm5lckhUTUx9ZWxzZSBlJiYocj1ScihlKSk7aWYocil7dmFyIGk9TXIocix7d2Fybjp1aSxzaG91bGREZWNvZGVOZXdsaW5lczp6byxkZWxpbWl0ZXJzOm4uZGVsaW1pdGVyc30sdGhpcyksbz1pLnJlbmRlcixhPWkuc3RhdGljUmVuZGVyRm5zO24ucmVuZGVyPW8sbi5zdGF0aWNSZW5kZXJGbnM9YX19cmV0dXJuIGZzLmNhbGwodGhpcyxlLHQpfSxSZS5jb21waWxlPU1yLFJlfSk7"></script>
<link href="data:text/css;charset=utf-8,%40charset%20%22UTF%2D8%22%3B%2Eel%2Dbreadcrumb%3Aafter%2C%2Eel%2Dbreadcrumb%3Abefore%2C%2Eel%2Dform%2Ditem%3Aafter%2C%2Eel%2Dform%2Ditem%3Abefore%2C%2Eel%2Dform%2Ditem%5F%5Fcontent%3Aafter%2C%2Eel%2Dform%2Ditem%5F%5Fcontent%3Abefore%7Bdisplay%3Atable%3Bcontent%3A%22%22%7D%2Eel%2Dradio%2C%2Eel%2Dradio%2Dbutton%5F%5Finner%2C%2Eel%2Dswitch%5F%5Flabel%7B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%7D%2Eel%2Dalert%2C%2Eel%2Ddialog%2C%2Eel%2Dnotification%2C%2Eel%2Dradio%5F%5Finner%2C%2Eel%2Dswitch%5F%5Fcore%7Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Dradio%2C%2Eel%2Dradio%5F%5Finput%2C%2Eel%2Dtable%20%2Eel%2Dtooltip%5F%5Frel%20%2Ecell%2C%2Eel%2Dtable%20th%2C%2Eel%2Dtable%20th%3Ediv%7Bwhite%2Dspace%3Anowrap%7D%2Eel%2Dpagination%2D%2Dsmall%20%2Earrow%2Edisabled%2C%2Eel%2Dtable%20td%2Eis%2Dhidden%3E%2A%2C%2Eel%2Dtable%20th%2Eis%2Dhidden%3E%2A%7Bvisibility%3Ahidden%7D%2Eel%2Dbreadcrumb%3Aafter%2C%2Eel%2Dbutton%2Dgroup%3Aafter%2C%2Eel%2Dform%2Ditem%3Aafter%2C%2Eel%2Dform%2Ditem%5F%5Fcontent%3Aafter%2C%2Eel%2Dmenu%3Aafter%2C%2Eel%2Drow%3Aafter%2C%2Eel%2Dslider%3Aafter%2C%2Eel%2Dtabs%5F%5Fheader%3Aafter%7Bclear%3Aboth%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%2Eis%2Dloading%20li%3Aafter%7Bdisplay%3Ainline%2Dblock%3Bcontent%3A%22%22%3Bheight%3A100%25%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dbutton%2Dgroup%3Aafter%2C%2Eel%2Dbutton%2Dgroup%3Abefore%7Bdisplay%3Atable%3Bcontent%3A%22%22%7D%40font%2Dface%7Bfont%2Dfamily%3Aelement%2Dicons%3Bsrc%3Aurl%28data%3Atext%2Fplain%3Bcharset%3Dutf%2D8%2CInvalid%2520URL%253A%2520%252Felement%252Dui%252Flib%252Ftheme%252Ddefault%252Ffonts%252Felement%252Dicons%252Eeot%253Ft%253D1472440741%29%3Bsrc%3Aurl%28data%3Atext%2Fplain%3Bcharset%3Dutf%2D8%2CInvalid%2520URL%253A%2520%252Felement%252Dui%252Flib%252Ftheme%252Ddefault%252Ffonts%252Felement%252Dicons%252Ewoff%253Ft%253D1472440741%29%20format%28%27woff%27%29%2Curl%28data%3Atext%2Fplain%3Bcharset%3Dutf%2D8%2CInvalid%2520URL%253A%2520%252Felement%252Dui%252Flib%252Ftheme%252Ddefault%252Ffonts%252Felement%252Dicons%252Ettf%253Ft%253D1472440741%29%20format%28%27truetype%27%29%2Curl%28data%3Atext%2Fplain%3Bcharset%3Dutf%2D8%2CInvalid%2520URL%253A%2520%252Felement%252Dui%252Flib%252Ftheme%252Ddefault%252Ffonts%252Felement%252Dicons%252Esvg%253Ft%253D1472440741%29%20format%28%27svg%27%29%3Bfont%2Dweight%3A400%3Bfont%2Dstyle%3Anormal%7D%5Bclass%2A%3D%22%20el%2Dicon%2D%22%5D%2C%5Bclass%5E%3Del%2Dicon%2D%5D%7Bfont%2Dfamily%3Aelement%2Dicons%21important%3Bspeak%3Anone%3Bfont%2Dstyle%3Anormal%3Bfont%2Dweight%3A400%3Bfont%2Dvariant%3Anormal%3Btext%2Dtransform%3Anone%3Bline%2Dheight%3A1%3Bvertical%2Dalign%3Abaseline%3Bdisplay%3Ainline%2Dblock%3B%2Dwebkit%2Dfont%2Dsmoothing%3Aantialiased%3B%2Dmoz%2Dosx%2Dfont%2Dsmoothing%3Agrayscale%7D%2Eel%2Dalert%5F%5Ficon%2C%2Eel%2Dradio%2Dbutton%5F%5Finner%2C%2Eel%2Dradio%5F%5Finput%2C%2Eel%2Dslider%5F%5Fbutton%2Dwrapper%20%2Eel%2Dtooltip%5F%5Frel%2C%2Eel%2Dslider%5F%5Frunway%2C%2Eel%2Dswitch%5F%5Fcore%2C%2Eel%2Dtable%20td%2C%2Eel%2Dtable%20th%7Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dicon%2Darrow%2Ddown%3Abefore%7Bcontent%3A%22%5Ce600%22%7D%2Eel%2Dicon%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce601%22%7D%2Eel%2Dicon%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce602%22%7D%2Eel%2Dicon%2Darrow%2Dup%3Abefore%7Bcontent%3A%22%5Ce603%22%7D%2Eel%2Dicon%2Dcaret%2Dbottom%3Abefore%7Bcontent%3A%22%5Ce604%22%7D%2Eel%2Dicon%2Dcaret%2Dleft%3Abefore%7Bcontent%3A%22%5Ce605%22%7D%2Eel%2Dicon%2Dcaret%2Dright%3Abefore%7Bcontent%3A%22%5Ce606%22%7D%2Eel%2Dicon%2Dcaret%2Dtop%3Abefore%7Bcontent%3A%22%5Ce607%22%7D%2Eel%2Dicon%2Dcheck%3Abefore%7Bcontent%3A%22%5Ce608%22%7D%2Eel%2Dicon%2Dcircle%2Dcheck%3Abefore%7Bcontent%3A%22%5Ce609%22%7D%2Eel%2Dicon%2Dcircle%2Dclose%3Abefore%7Bcontent%3A%22%5Ce60a%22%7D%2Eel%2Dicon%2Dcircle%2Dcross%3Abefore%7Bcontent%3A%22%5Ce60b%22%7D%2Eel%2Dicon%2Dclose%3Abefore%7Bcontent%3A%22%5Ce60c%22%7D%2Eel%2Dicon%2Dupload%3Abefore%7Bcontent%3A%22%5Ce60d%22%7D%2Eel%2Dicon%2Dd%2Darrow%2Dleft%3Abefore%7Bcontent%3A%22%5Ce60e%22%7D%2Eel%2Dicon%2Dd%2Darrow%2Dright%3Abefore%7Bcontent%3A%22%5Ce60f%22%7D%2Eel%2Dicon%2Dd%2Dcaret%3Abefore%7Bcontent%3A%22%5Ce610%22%7D%2Eel%2Dicon%2Ddate%3Abefore%7Bcontent%3A%22%5Ce611%22%7D%2Eel%2Dicon%2Ddelete%3Abefore%7Bcontent%3A%22%5Ce612%22%7D%2Eel%2Dicon%2Ddocument%3Abefore%7Bcontent%3A%22%5Ce613%22%7D%2Eel%2Dicon%2Dedit%3Abefore%7Bcontent%3A%22%5Ce614%22%7D%2Eel%2Dicon%2Dinformation%3Abefore%7Bcontent%3A%22%5Ce615%22%7D%2Eel%2Dicon%2Dloading%3Abefore%7Bcontent%3A%22%5Ce616%22%7D%2Eel%2Dicon%2Dmenu%3Abefore%7Bcontent%3A%22%5Ce617%22%7D%2Eel%2Dicon%2Dmessage%3Abefore%7Bcontent%3A%22%5Ce618%22%7D%2Eel%2Dicon%2Dminus%3Abefore%7Bcontent%3A%22%5Ce619%22%7D%2Eel%2Dicon%2Dmore%3Abefore%7Bcontent%3A%22%5Ce61a%22%7D%2Eel%2Dicon%2Dpicture%3Abefore%7Bcontent%3A%22%5Ce61b%22%7D%2Eel%2Dicon%2Dplus%3Abefore%7Bcontent%3A%22%5Ce61c%22%7D%2Eel%2Dicon%2Dsearch%3Abefore%7Bcontent%3A%22%5Ce61d%22%7D%2Eel%2Dicon%2Dsetting%3Abefore%7Bcontent%3A%22%5Ce61e%22%7D%2Eel%2Dicon%2Dshare%3Abefore%7Bcontent%3A%22%5Ce61f%22%7D%2Eel%2Dicon%2Dstar%2Doff%3Abefore%7Bcontent%3A%22%5Ce620%22%7D%2Eel%2Dicon%2Dstar%2Don%3Abefore%7Bcontent%3A%22%5Ce621%22%7D%2Eel%2Dicon%2Dtime%3Abefore%7Bcontent%3A%22%5Ce622%22%7D%2Eel%2Dicon%2Dwarning%3Abefore%7Bcontent%3A%22%5Ce623%22%7D%2Eel%2Dicon%2Ddelete2%3Abefore%7Bcontent%3A%22%5Ce624%22%7D%2Eel%2Dicon%2Dupload2%3Abefore%7Bcontent%3A%22%5Ce627%22%7D%2Eel%2Dicon%2Dview%3Abefore%7Bcontent%3A%22%5Ce626%22%7D%2Eel%2Dicon%2Dloading%7Banimation%3Arotating%201s%20linear%20infinite%7D%2Eel%2Dicon%2D%2Dright%7Bmargin%2Dleft%3A5px%7D%2Eel%2Dicon%2D%2Dleft%7Bmargin%2Dright%3A5px%7D%40keyframes%20rotating%7B0%25%7Btransform%3ArotateZ%280%29%7D100%25%7Btransform%3ArotateZ%28360deg%29%7D%7D%2Eel%2Dalert%7Bwidth%3A100%25%3Bpadding%3A8px%2016px%3Bmargin%3A0%3Bborder%2Dradius%3A4px%3Bposition%3Arelative%3Bbackground%2Dcolor%3A%23fff%3Boverflow%3Ahidden%3Bcolor%3A%23fff%3Bopacity%3A1%3Bdisplay%3Atable%3Btransition%3Aopacity%20%2E2s%7D%2Eel%2Dalert%20%2Eel%2Dalert%5F%5Fdescription%7Bcolor%3A%23fff%3Bfont%2Dsize%3A12px%3Bmargin%3A5px%200%200%7D%2Eel%2Dalert%2D%2Dsuccess%7Bbackground%2Dcolor%3A%2313ce66%7D%2Eel%2Dalert%2D%2Dinfo%7Bbackground%2Dcolor%3A%2350BFFF%7D%2Eel%2Dalert%2D%2Dwarning%7Bbackground%2Dcolor%3A%23f7ba2a%7D%2Eel%2Dalert%2D%2Derror%7Bbackground%2Dcolor%3A%23ff4949%7D%2Eel%2Dalert%5F%5Fcontent%7Bdisplay%3Atable%2Dcell%3Bpadding%3A0%208px%7D%2Eel%2Dalert%5F%5Ficon%7Bfont%2Dsize%3A16px%3Bwidth%3A16px%3Bdisplay%3Atable%2Dcell%3Bcolor%3A%23fff%7D%2Eel%2Dalert%5F%5Ficon%2Eis%2Dbig%7Bfont%2Dsize%3A28px%3Bwidth%3A28px%7D%2Eel%2Dalert%5F%5Ftitle%7Bfont%2Dsize%3A13px%3Bline%2Dheight%3A18px%7D%2Eel%2Dalert%5F%5Ftitle%2Eis%2Dbold%7Bfont%2Dweight%3A700%7D%2Eel%2Dalert%5F%5Fclosebtn%7Bfont%2Dsize%3A12px%3Bcolor%3A%23fff%3Bopacity%3A1%3Btop%3A12px%3Bright%3A15px%3Bposition%3Aabsolute%3Bcursor%3Apointer%7D%2Eel%2Dalert%2Dfade%2Denter%2C%2Eel%2Dalert%2Dfade%2Dleave%2Dactive%2C%2Eel%2Dnotification%2Dfade%2Dleave%2Dactive%2C%2Eel%2Dradio%5F%5Foriginal%2C%2Eel%2Dswitch%20%2Elabel%2Dfade%2Denter%2C%2Eel%2Dswitch%20%2Elabel%2Dfade%2Dleave%2Dactive%7Bopacity%3A0%7D%2Eel%2Dalert%5F%5Fclosebtn%2Eis%2Dcustomed%7Bfont%2Dstyle%3Anormal%3Bfont%2Dsize%3A13px%3Btop%3A9px%7D%2Eel%2Dnotification%7Bwidth%3A330px%3Bpadding%3A20px%3Bborder%2Dradius%3A2px%3Bposition%3Afixed%3Bright%3A16px%3Bbackground%2Dcolor%3A%23fff%3Bbox%2Dshadow%3A0%202px%204px%20rgba%280%2C0%2C0%2C%2E12%29%2C0%200%206px%20rgba%280%2C0%2C0%2C%2E04%29%3Btransition%3Aopacity%20%2E3s%2Ctransform%20%2E3s%2Cright%20%2E3s%2Ctop%20%2E4s%3Boverflow%3Ahidden%7D%2Eel%2Dnotification%20%2Eel%2Dicon%2Dcircle%2Dcheck%7Bcolor%3A%2313ce66%7D%2Eel%2Dnotification%20%2Eel%2Dicon%2Dcircle%2Dcross%7Bcolor%3A%23ff4949%7D%2Eel%2Dnotification%20%2Eel%2Dicon%2Dinformation%7Bcolor%3A%2350BFFF%7D%2Eel%2Dnotification%20%2Eel%2Dicon%2Dwarning%7Bcolor%3A%23f7ba2a%7D%2Eel%2Dnotification%5F%5Fgroup%20span%7Bfont%2Dsize%3A16px%3Bcolor%3A%231f2d3d%7D%2Eel%2Dnotification%5F%5Fgroup%20p%7Bfont%2Dsize%3A14px%3Bline%2Dheight%3A21px%3Bmargin%3A10px%200%200%3Bcolor%3A%238492a6%3Btext%2Dalign%3Ajustify%7D%2Eel%2Dnotification%5F%5Ficon%7Bwidth%3A40px%3Bheight%3A40px%3Bfont%2Dsize%3A40px%3Bfloat%3Aleft%3Bposition%3Arelative%3Btop%3A3px%7D%2Eel%2Ddialog%5F%5Fheaderbtn%2C%2Eel%2Dpagination%5F%5Frightwrapper%7Bfloat%3Aright%7D%2Eel%2Dnotification%5F%5FcloseBtn%7Btop%3A20px%3Bright%3A20px%3Bposition%3Aabsolute%3Bcursor%3Apointer%3Bcolor%3A%23C0CCDA%3Bfont%2Dsize%3A14px%7D%2Eel%2Dnotification%5F%5FcloseBtn%3Ahover%7Bcolor%3A%2399A9BF%7D%2Eel%2Dnotification%2Dfade%2Denter%7B%2Dms%2Dtransform%3AtranslateX%28100%25%29%3Btransform%3AtranslateX%28100%25%29%3Bright%3A0%7D%2Eel%2Dslider%3Aafter%2C%2Eel%2Dslider%3Abefore%7Bdisplay%3Atable%3Bcontent%3A%22%22%7D%2Eel%2Dslider%5F%5Frunway%7Bwidth%3A100%25%3Bheight%3A4px%3Bmargin%3A16px%200%3Bbackground%2Dcolor%3A%23e5e9f2%3Bborder%2Dradius%3A3px%3Bposition%3Arelative%3Bcursor%3Apointer%7D%2Eel%2Dslider%5F%5Frunway%2Eshow%2Dinput%7Bmargin%2Dright%3A160px%3Bwidth%3Aauto%7D%2Eel%2Dslider%5F%5Frunway%2Edisabled%7Bcursor%3Adefault%7D%2Eel%2Dslider%5F%5Frunway%2Edisabled%20%2Eel%2Dslider%5F%5Fbar%2C%2Eel%2Dslider%5F%5Frunway%2Edisabled%20%2Eel%2Dslider%5F%5Fbutton%7Bbackground%2Dcolor%3A%23C0CCDA%7D%2Eel%2Dslider%5F%5Frunway%2Edisabled%20%2Eel%2Dslider%5F%5Fbutton%2Dwrapper%2Edragging%2C%2Eel%2Dslider%5F%5Frunway%2Edisabled%20%2Eel%2Dslider%5F%5Fbutton%2Dwrapper%2Ehover%2C%2Eel%2Dslider%5F%5Frunway%2Edisabled%20%2Eel%2Dslider%5F%5Fbutton%2Dwrapper%3Ahover%7Bcursor%3Anot%2Dallowed%7D%2Eel%2Dslider%5F%5Frunway%2Edisabled%20%2Eel%2Dslider%5F%5Fbutton%2Edragging%2C%2Eel%2Dslider%5F%5Frunway%2Edisabled%20%2Eel%2Dslider%5F%5Fbutton%2Ehover%2C%2Eel%2Dslider%5F%5Frunway%2Edisabled%20%2Eel%2Dslider%5F%5Fbutton%3Ahover%7B%2Dms%2Dtransform%3Ascale%281%29%3Btransform%3Ascale%281%29%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dslider%5F%5Finput%7Bfloat%3Aright%3Bmargin%2Dtop%3A3px%7D%2Eel%2Dslider%5F%5Fbar%7Bheight%3A4px%3Bbackground%2Dcolor%3A%2320a0ff%3Bborder%2Dtop%2Dleft%2Dradius%3A3px%3Bborder%2Dbottom%2Dleft%2Dradius%3A3px%3Bposition%3Aabsolute%7D%2Eel%2Dslider%5F%5Fbutton%2Dwrapper%7Bwidth%3A36px%3Bheight%3A36px%3Bposition%3Aabsolute%3Bz%2Dindex%3A1001%3Btop%3A%2D16px%3B%2Dms%2Dtransform%3AtranslateX%28%2D50%25%29%3Btransform%3AtranslateX%28%2D50%25%29%3Bbackground%2Dcolor%3Atransparent%3Btext%2Dalign%3Acenter%7D%2Eel%2Dslider%5F%5Fbutton%2Dwrapper%20%2Eel%2Dtooltip%7Bline%2Dheight%3A1%3Bheight%3A100%25%3Bdisplay%3Ablock%7D%2Eel%2Dslider%5F%5Fbutton%2Dwrapper%20%2Eel%2Dtooltip%3A%3Aafter%7Bcontent%3A%27%27%3Bwidth%3A0%3Bheight%3A100%25%3Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dslider%5F%5Fbutton%2Dwrapper%2Ehover%2C%2Eel%2Dslider%5F%5Fbutton%2Dwrapper%3Ahover%7Bcursor%3A%2Dwebkit%2Dgrab%3Bcursor%3Agrab%7D%2Eel%2Dslider%5F%5Fbutton%2Dwrapper%2Edragging%7Bcursor%3A%2Dwebkit%2Dgrabbing%3Bcursor%3Agrabbing%7D%2Eel%2Dslider%5F%5Fbutton%7Bwidth%3A12px%3Bheight%3A12px%3Bbackground%2Dcolor%3A%2320a0ff%3Bborder%2Dradius%3A50%25%3Btransition%3A%2E2s%7D%2Eel%2Dslider%5F%5Fbutton%2Edragging%2C%2Eel%2Dslider%5F%5Fbutton%2Ehover%2C%2Eel%2Dslider%5F%5Fbutton%3Ahover%7B%2Dms%2Dtransform%3Ascale%281%2E5%29%3Btransform%3Ascale%281%2E5%29%3Bbackground%2Dcolor%3A%231d8ce0%7D%2Eel%2Dslider%5F%5Fbutton%2Ehover%2C%2Eel%2Dslider%5F%5Fbutton%3Ahover%7Bcursor%3A%2Dwebkit%2Dgrab%3Bcursor%3Agrab%7D%2Eel%2Dslider%5F%5Fbutton%2Edragging%7Bcursor%3A%2Dwebkit%2Dgrabbing%3Bcursor%3Agrabbing%7D%2Eel%2Dslider%5F%5Fstop%7Bposition%3Aabsolute%3Bwidth%3A4px%3Bheight%3A4px%3Bborder%2Dradius%3A100%25%3Bbackground%2Dcolor%3A%23C0CCDA%3B%2Dms%2Dtransform%3AtranslateX%28%2D50%25%29%3Btransform%3AtranslateX%28%2D50%25%29%7D%2Eel%2Dradio%2C%2Eel%2Dradio%5F%5Finner%2C%2Eel%2Dradio%5F%5Finput%7Bposition%3Arelative%3Bcursor%3Apointer%3Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dradio%7Bcolor%3A%231f2d3d%7D%2Eel%2Dradio%2B%2Eel%2Dradio%7Bmargin%2Dleft%3A15px%7D%2Eel%2Dradio%5F%5Finput%7Boutline%3A0%3Bline%2Dheight%3A1%7D%2Eel%2Dradio%5F%5Finner%7Bborder%3A1px%20solid%20%23C0CCDA%3Bwidth%3A18px%3Bheight%3A18px%3Bborder%2Dradius%3A50%25%3Bbackground%2Dcolor%3A%23fff%7D%2Eel%2Dradio%5F%5Finner%3Anot%28%2Eis%2Ddisabled%29%3Ahover%7Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dradio%5F%5Finner%3A%3Aafter%7Bwidth%3A6px%3Bheight%3A6px%3Bborder%2Dradius%3A50%25%3Bbackground%2Dcolor%3A%23fff%3Bcontent%3A%22%22%3Bposition%3Aabsolute%3Bleft%3A50%25%3Btop%3A50%25%3B%2Dms%2Dtransform%3Atranslate%28%2D50%25%2C%2D50%25%29%20scale%280%29%3Btransform%3Atranslate%28%2D50%25%2C%2D50%25%29%20scale%280%29%3Btransition%3Atransform%20%2E15s%20cubic%2Dbezier%28%2E71%2C%2D%2E46%2C%2E88%2C%2E6%29%7D%2Eel%2Dswitch%5F%5Fcore%2C%2Eel%2Dswitch%5F%5Flabel%7Bwidth%3A46px%3Bheight%3A22px%3Bcursor%3Apointer%7D%2Eel%2Dradio%5F%5Finner%2Eis%2Ddisabled%2Eis%2Dchecked%7Bbackground%2Dcolor%3A%23D3DCE6%3Bborder%2Dcolor%3A%23D3DCE6%7D%2Eel%2Dradio%5F%5Finner%2Eis%2Ddisabled%2Eis%2Dchecked%3A%3Aafter%7Bbackground%2Dcolor%3A%23fff%7D%2Eel%2Dradio%5F%5Finner%2Eis%2Dfocus%7Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dradio%5F%5Finner%2Eis%2Dchecked%7Bborder%2Dcolor%3A%2320a0ff%3Bbackground%3A%2320a0ff%7D%2Eel%2Dradio%5F%5Finner%2Eis%2Ddisabled%2C%2Eel%2Dradio%5F%5Finner%2Eis%2Ddisabled%3A%3Aafter%7Bbackground%2Dcolor%3A%23EFF2F7%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dradio%5F%5Finner%2Eis%2Dchecked%3A%3Aafter%7B%2Dms%2Dtransform%3Atranslate%28%2D50%25%2C%2D50%25%29%20scale%281%29%3Btransform%3Atranslate%28%2D50%25%2C%2D50%25%29%20scale%281%29%7D%2Eel%2Dradio%5F%5Finner%2Eis%2Ddisabled%7Bborder%2Dcolor%3A%23D3DCE6%7D%2Eel%2Dradio%5F%5Finner%2Eis%2Ddisabled%2B%2Eel%2Dradio%5F%5Flabel%7Bcursor%3Anot%2Dallowed%7D%2Eel%2Dradio%5F%5Foriginal%7Boutline%3A0%3Bposition%3Aabsolute%3Bz%2Dindex%3A%2D1%3Btop%3A0%3Bleft%3A0%3Bright%3A0%3Bbottom%3A0%3Bmargin%3A0%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%3Anot%28%3Alast%2Dchild%29%2C%2Eel%2Dradio%2Dbutton%3Anot%28%3Alast%2Dchild%29%7Bmargin%2Dright%3A%2D1px%7D%2Eel%2Dradio%5F%5Flabel%7Bfont%2Dsize%3A14px%3Bpadding%2Dleft%3A5px%7D%2Eel%2Dradio%2Dgroup%7Bdisplay%3Ainline%2Dblock%3Bfont%2Dsize%3A0%3Bline%2Dheight%3A1%7D%2Eel%2Dradio%2Dgroup%20%2Eel%2Dradio%7Bfont%2Dsize%3A14px%7D%2Eel%2Dradio%2Dbutton%7Bposition%3Arelative%3Boverflow%3Ahidden%3Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dradio%2Dbutton%3Afirst%2Dchild%20%2Eel%2Dradio%2Dbutton%5F%5Finner%7Bborder%2Dradius%3A4px%200%200%204px%7D%2Eel%2Dradio%2Dbutton%3Alast%2Dchild%20%2Eel%2Dradio%2Dbutton%5F%5Finner%7Bborder%2Dradius%3A0%204px%204px%200%7D%2Eel%2Dradio%2Dbutton%5F%5Finner%7Bdisplay%3Ainline%2Dblock%3Bline%2Dheight%3A1%3Bwhite%2Dspace%3Anowrap%3Bbackground%3A%23fff%3Bborder%3A1px%20solid%20%23C0CCDA%3Bcolor%3A%231F2D3D%3B%2Dwebkit%2Dappearance%3Anone%3Btext%2Dalign%3Acenter%3Bbox%2Dsizing%3Aborder%2Dbox%3Boutline%3A0%3Bmargin%3A0%3Bposition%3Arelative%3Bcursor%3Apointer%3Btransition%3Aall%20%2E3s%20cubic%2Dbezier%28%2E645%2C%2E045%2C%2E355%2C1%29%3Bpadding%3A10px%2015px%3Bfont%2Dsize%3A14px%3Bborder%2Dradius%3A0%7D%2Eel%2Dradio%2Dbutton%5F%5Finner%3Ahover%7Bcolor%3A%2320a0ff%7D%2Eel%2Dradio%2Dbutton%5F%5Finner%20%5Bclass%2A%3Del%2Dicon%2D%5D%7Bline%2Dheight%3A%2E9%7D%2Eel%2Dradio%2Dbutton%5F%5Finner%20%5Bclass%2A%3Del%2Dicon%2D%5D%2Bspan%7Bmargin%2Dleft%3A5px%7D%2Eel%2Dradio%2Dbutton%5F%5Forig%2Dradio%7Bopacity%3A0%3Boutline%3A0%3Bposition%3Aabsolute%3Bz%2Dindex%3A%2D1%3Bleft%3A%2D999px%7D%2Eel%2Dradio%2Dbutton%5F%5Forig%2Dradio%3Adisabled%2B%2Eel%2Dradio%2Dbutton%5F%5Finner%7Bcolor%3A%23C0CCDA%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dimage%3Anone%3Bbackground%2Dcolor%3A%23EFF2F7%3Bborder%2Dcolor%3A%23D3DCE6%7D%2Eel%2Dradio%2Dbutton%2D%2Dlarge%20%2Eel%2Dradio%2Dbutton%5F%5Finner%7Bpadding%3A11px%2019px%3Bfont%2Dsize%3A16px%3Bborder%2Dradius%3A0%7D%2Eel%2Dradio%2Dbutton%2D%2Dsmall%20%2Eel%2Dradio%2Dbutton%5F%5Finner%7Bpadding%3A7px%209px%3Bfont%2Dsize%3A12px%3Bborder%2Dradius%3A0%7D%2Eel%2Dradio%2Dbutton%2D%2Dmini%20%2Eel%2Dradio%2Dbutton%5F%5Finner%7Bpadding%3A4px%3Bfont%2Dsize%3A12px%3Bborder%2Dradius%3A0%7D%2Eel%2Dswitch%7Bdisplay%3Ainline%2Dblock%3Bposition%3Arelative%3Bfont%2Dsize%3A14px%3Bline%2Dheight%3A22px%7D%2Eel%2Dswitch%5F%5Flabel%2C%2Eel%2Dswitch%5F%5Flabel%20%2A%7Bposition%3Aabsolute%3Bdisplay%3Ainline%2Dblock%3Bfont%2Dsize%3A14px%7D%2Eel%2Dswitch%2Eis%2Ddisabled%20%2Eel%2Dswitch%5F%5Fcore%7Bborder%2Dcolor%3A%23E5E9F3%3Bbackground%3A%23E5E9F3%7D%2Eel%2Dswitch%2Eis%2Ddisabled%20%2Eel%2Dswitch%5F%5Fcore%20span%7Bbackground%2Dcolor%3A%23F9FAFC%7D%2Eel%2Dswitch%2Eis%2Ddisabled%20%2Eel%2Dswitch%5F%5Fcore%7E%2Eel%2Dswitch%5F%5Flabel%20%2A%7Bcolor%3A%23F9FAFC%7D%2Eel%2Dswitch%2Eis%2Ddisabled%20%2Eel%2Dswitch%5F%5Finput%3Achecked%2B%2Eel%2Dswitch%5F%5Fcore%7Bborder%2Dcolor%3A%23E5E9F3%3Bbackground%2Dcolor%3A%23E5E9F3%7D%2Eel%2Dswitch%2Eis%2Ddisabled%20%2Eel%2Dswitch%5F%5Fcore%2C%2Eel%2Dswitch%2Eis%2Ddisabled%20%2Eel%2Dswitch%5F%5Flabel%7Bcursor%3Anot%2Dallowed%7D%2Eel%2Dswitch%5F%5Flabel%7Btransition%3A%2E2s%3Bz%2Dindex%3A10%3Bleft%3A0%3Btop%3A0%3Buser%2Dselect%3Anone%7D%2Eel%2Dcheckbox%2C%2Eel%2Dpager%7B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%7D%2Eel%2Dswitch%5F%5Flabel%20%2A%7Bline%2Dheight%3A1%3Btop%3A4px%3Bcolor%3A%23fff%7D%2Eel%2Dswitch%5F%5Flabel%2D%2Dleft%20i%7Bleft%3A6px%7D%2Eel%2Dswitch%5F%5Flabel%2D%2Dright%20i%7Bright%3A6px%7D%2Eel%2Dswitch%5F%5Finput%7Bdisplay%3Anone%7D%2Eel%2Dswitch%5F%5Finput%3Achecked%2B%2Eel%2Dswitch%5F%5Fcore%7Bborder%2Dcolor%3A%2320a0ff%3Bbackground%2Dcolor%3A%2320a0ff%7D%2Eel%2Dswitch%5F%5Fcore%7Bmargin%3A0%3Bdisplay%3Ainline%2Dblock%3Bposition%3Arelative%3Bborder%3A1px%20solid%20%23C0CCDA%3Boutline%3A0%3Bborder%2Dradius%3A12px%3Bbackground%3A%23C0CCDA%3Btransition%3Aborder%2Dcolor%20%2E3s%2Cbackground%2Dcolor%20%2E3s%7D%2Eel%2Dswitch%5F%5Fcore%20%2Eel%2Dswitch%5F%5Fbutton%7Btop%3A0%3Bleft%3A0%3Bposition%3Aabsolute%3Bborder%2Dradius%3A100%25%3Btransition%3Atransform%20%2E3s%3Bwidth%3A16px%3Bheight%3A16px%3Bz%2Dindex%3A20%3Bbackground%2Dcolor%3A%23fff%7D%2Eel%2Dswitch%2D%2Dwide%20%2Eel%2Dswitch%5F%5Flabel%2Eel%2Dswitch%5F%5Flabel%2D%2Dleft%20span%7Bleft%3A10px%7D%2Eel%2Dswitch%2D%2Dwide%20%2Eel%2Dswitch%5F%5Flabel%2Eel%2Dswitch%5F%5Flabel%2D%2Dright%20span%7Bright%3A10px%7D%2Eel%2Ddropdown%7Bdisplay%3Ainline%2Dblock%3Bposition%3Arelative%3Bcolor%3A%23475669%3Bfont%2Dsize%3A14px%7D%2Eel%2Ddropdown%20%2Eel%2Dbutton%2Dgroup%2C%2Eel%2Dtable%20%2Eel%2Dtooltip%2C%2Eel%2Dtable%20%2Eel%2Dtooltip%5F%5Frel%7Bdisplay%3Ablock%7D%2Eel%2Ddropdown%20%2Eel%2Ddropdown%5F%5Fcaret%2Dbutton%7Bpadding%2Dright%3A5px%3Bpadding%2Dleft%3A5px%7D%2Eel%2Ddropdown%20%2Eel%2Ddropdown%5F%5Fcaret%2Dbutton%20%2Eel%2Ddropdown%5F%5Ficon%7Bpadding%2Dleft%3A0%7D%2Eel%2Ddropdown%5F%5Ficon%7Bfont%2Dsize%3A12px%3Bmargin%3A0%203px%7D%2Eel%2Ddropdown%2Dmenu%7Bmargin%3A5px%200%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23D3DCE6%3Bbox%2Dshadow%3A0%202px%204px%20rgba%280%2C0%2C0%2C%2E12%29%2C0%200%206px%20rgba%280%2C0%2C0%2C%2E12%29%3Bpadding%3A6px%200%3Bz%2Dindex%3A10%3Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bmin%2Dwidth%3A100px%7D%2Eel%2Ddropdown%2Dmenu%5F%5Fitem%7Blist%2Dstyle%3Anone%3Bline%2Dheight%3A36px%3Bpadding%3A0%2010px%3Bmargin%3A0%3Bcursor%3Apointer%7D%2Eel%2Ddropdown%2Dmenu%5F%5Fitem%3Anot%28%2Eis%2Ddisabled%29%3Ahover%7Bbackground%2Dcolor%3A%23e5e9f2%3Bcolor%3A%23475669%7D%2Eel%2Ddropdown%2Dmenu%5F%5Fitem%2Eis%2Ddisabled%7Bcursor%3Adefault%3Bcolor%3A%23c0ccda%3Bpointer%2Devents%3Anone%7D%2Eel%2Ddropdown%2Dmenu%5F%5Fitem%2D%2Ddivided%7Bposition%3Arelative%3Bmargin%2Dtop%3A6px%3Bborder%2Dtop%3A1px%20solid%20%23D3DCE6%7D%2Eel%2Ddropdown%2Dmenu%5F%5Fitem%2D%2Ddivided%3Abefore%7Bcontent%3A%27%27%3Bheight%3A6px%3Bdisplay%3Ablock%3Bmargin%3A0%20%2D10px%3Bbackground%2Dcolor%3A%23fff%7D%2Eel%2Dloading%2Dmask%7Bposition%3Aabsolute%3Bz%2Dindex%3A10000%3Bbackground%2Dcolor%3Argba%28255%2C255%2C255%2C%2E9%29%3Bmargin%3A0%3Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%7D%2Eel%2Dloading%2Dmask%2Eis%2Dfullscreen%7Bposition%3Afixed%7D%2Eel%2Dloading%2Dmask%2Eis%2Dfullscreen%20%2Eel%2Dloading%2Dspinner%7Bmargin%2Dtop%3A%2D25px%7D%2Eel%2Dloading%2Dmask%2Eis%2Dfullscreen%20%2Eel%2Dloading%2Dspinner%20%2Ecircular%7Bwidth%3A50px%7D%2Eel%2Dloading%2Dspinner%7Btop%3A50%25%3Bmargin%2Dtop%3A%2D21px%3Bwidth%3A100%25%3Btext%2Dalign%3Acenter%3Bposition%3Aabsolute%7D%2Eel%2Dloading%2Dspinner%20%2Eel%2Dloading%2Dtext%7Bcolor%3A%2320a0ff%3Bmargin%3A3px%200%3Bfont%2Dsize%3A14px%7D%2Eel%2Dloading%2Dspinner%20%2Ecircular%7Bwidth%3A42px%3Banimation%3Arotate%202s%20linear%20infinite%7D%2Eel%2Dloading%2Dspinner%20%2Epath%7Banimation%3Adash%201%2E5s%20ease%2Din%2Dout%20infinite%3Bstroke%2Ddasharray%3A1%2C100%3Bstroke%2Ddashoffset%3A0%3Bstroke%2Dwidth%3A2%3Bstroke%3A%2320a0ff%3Bstroke%2Dlinecap%3Around%7D%2Eel%2Ddialog%2C%2Eel%2Dmessage%7B%2Dms%2Dtransform%3AtranslateX%28%2D50%25%29%7D%40keyframes%20dash%7B0%25%7Bstroke%2Ddasharray%3A1%2C100%3Bstroke%2Ddashoffset%3A0%7D50%25%7Bstroke%2Ddasharray%3A45%2C100%3Bstroke%2Ddashoffset%3A%2D35px%7D100%25%7Bstroke%2Ddasharray%3A45%2C100%3Bstroke%2Ddashoffset%3A%2D124px%7D%7D%2Eel%2Ddialog%7Bposition%3Aabsolute%3Bleft%3A50%25%3Btransform%3AtranslateX%28%2D50%25%29%3Bbackground%3A%23fff%3Bborder%2Dradius%3A2px%3Bbox%2Dshadow%3A0%201px%203px%20rgba%280%2C0%2C0%2C%2E3%29%7D%2Eel%2Ddialog%2D%2Dtiny%7Bwidth%3A30%25%7D%2Eel%2Ddialog%2D%2Dsmall%7Bwidth%3A50%25%7D%2Eel%2Ddialog%2D%2Dlarge%7Bwidth%3A90%25%7D%2Eel%2Ddialog%2D%2Dfull%7Bwidth%3A100%25%3Btop%3A0%3Bheight%3A100%25%3Boverflow%3Aauto%7D%2Eel%2Ddialog%5F%5Fwrapper%7Btop%3A0%3Bright%3A0%3Bbottom%3A0%3Bleft%3A0%3Bposition%3Afixed%3Boverflow%3Aauto%3Bmargin%3A0%7D%2Eel%2Dtable%2C%2Eel%2Dtable%20td%2C%2Eel%2Dtable%20th%7Bbox%2Dsizing%3Aborder%2Dbox%3Bposition%3Arelative%7D%2Eel%2Ddialog%5F%5Fheader%7Bpadding%3A20px%2020px%200%7D%2Eel%2Ddialog%5F%5Fclose%7Bcursor%3Apointer%3Bcolor%3A%23C0CCDA%7D%2Eel%2Ddialog%5F%5Fclose%3Ahover%7Bcolor%3A%2320a0ff%7D%2Eel%2Ddialog%5F%5Ftitle%7Bline%2Dheight%3A1%3Bfont%2Dsize%3A16px%3Bfont%2Dweight%3A700%3Bcolor%3A%231f2d3d%7D%2Eel%2Ddialog%5F%5Fbody%7Bpadding%3A30px%2020px%3Bcolor%3A%23475669%3Bfont%2Dsize%3A14px%7D%2Eel%2Ddialog%5F%5Ffooter%7Bpadding%3A10px%2020px%2015px%3Btext%2Dalign%3Aright%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Edialog%2Dfade%2Denter%2Dactive%7Banimation%3Adialog%2Dfade%2Din%20%2E3s%7D%2Edialog%2Dfade%2Dleave%2Dactive%7Banimation%3Adialog%2Dfade%2Dout%20%2E3s%7D%40keyframes%20dialog%2Dfade%2Din%7B0%25%7Btransform%3Atranslate3d%280%2C%2D20px%2C0%29%3Bopacity%3A0%7D100%25%7Btransform%3Atranslate3d%280%2C0%2C0%29%3Bopacity%3A1%7D%7D%40keyframes%20dialog%2Dfade%2Dout%7B0%25%7Btransform%3Atranslate3d%280%2C0%2C0%29%3Bopacity%3A1%7D100%25%7Btransform%3Atranslate3d%280%2C%2D20px%2C0%29%3Bopacity%3A0%7D%7D%2Eel%2Dtable%7Boverflow%3Ahidden%3Bwidth%3A100%25%3Bmax%2Dwidth%3A100%25%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23e0e6ed%3Bfont%2Dsize%3A14px%3Bcolor%3A%231f2d3d%7D%2Eel%2Dtable%20td%2C%2Eel%2Dtable%20th%7Bheight%3A40px%3Bmin%2Dwidth%3A0%3Btext%2Doverflow%3Aellipsis%7D%2Eel%2Dtable%3A%3Aafter%2C%2Eel%2Dtable%3A%3Abefore%7Bcontent%3A%27%27%3Bposition%3Aabsolute%3Bbackground%2Dcolor%3A%23e0e6ed%3Bz%2Dindex%3A1%7D%2Eel%2Dtable%20td%2Eis%2Dright%2C%2Eel%2Dtable%20th%2Eis%2Dright%7Btext%2Dalign%3Aright%7D%2Eel%2Dtable%20td%2Eis%2Dleft%2C%2Eel%2Dtable%20th%2Eis%2Dleft%7Btext%2Dalign%3Aleft%7D%2Eel%2Dtable%20td%2Eis%2Dcenter%2C%2Eel%2Dtable%20th%2Eis%2Dcenter%7Btext%2Dalign%3Acenter%7D%2Eel%2Dtable%20td%2C%2Eel%2Dtable%20th%2Eis%2Dleaf%7Bborder%2Dbottom%3A1px%20solid%20%23e0e6ed%7D%2Eel%2Dtable%20td%2Egutter%2C%2Eel%2Dtable%20th%2Egutter%7Bwidth%3A15px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dbottom%2Dwidth%3A0%3Bpadding%3A0%7D%2Eel%2Dtable%20%2Ecell%2C%2Eel%2Dtable%20th%3Ediv%7Bpadding%2Dleft%3A18px%3Bpadding%2Dright%3A18px%3Bbox%2Dsizing%3Aborder%2Dbox%3Btext%2Doverflow%3Aellipsis%7D%2Eel%2Dtable%3A%3Abefore%7Bleft%3A0%3Bbottom%3A0%3Bwidth%3A100%25%3Bheight%3A1px%7D%2Eel%2Dtable%3A%3Aafter%7Btop%3A0%3Bright%3A0%3Bwidth%3A1px%3Bheight%3A100%25%7D%2Eel%2Dtable%20%2Ecaret%2Dwrapper%2C%2Eel%2Dtable%20th%3E%2Ecell%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dtable%20th%7Boverflow%3Ahidden%3Bbackground%2Dcolor%3A%23EFF2F7%3Btext%2Dalign%3Aleft%7D%2Eel%2Dtable%20th%3Ediv%7Bdisplay%3Ainline%2Dblock%3Bline%2Dheight%3A40px%3Boverflow%3Ahidden%7D%2Eel%2Dtable%20td%3Ediv%7Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Dtable%20th%2Erequired%3Ediv%3A%3Abefore%7Bdisplay%3Ainline%2Dblock%3Bcontent%3A%22%22%3Bwidth%3A8px%3Bheight%3A8px%3Bborder%2Dradius%3A50%25%3Bbackground%3A%23ff4d51%3Bmargin%2Dright%3A5px%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dtable%20th%3E%2Ecell%7Bword%2Dwrap%3Anormal%3Btext%2Doverflow%3Aellipsis%3Bline%2Dheight%3A20px%3Bwidth%3A100%25%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Dtable%20th%3E%2Ecell%2Ehighlight%7Bcolor%3A%2320a0ff%7D%2Eel%2Dtable%20%2Ecaret%2Dwrapper%7Bcursor%3Apointer%3Bmargin%2Dleft%3A5px%3Bmargin%2Dtop%3A%2D2px%3Bwidth%3A16px%3Bheight%3A34px%3Boverflow%3Avisible%3Boverflow%3Ainitial%7D%2Eel%2Dtable%20%2Ecell%2C%2Eel%2Dtable%5F%5Fheader%2Dwrapper%7Boverflow%3Ahidden%7D%2Eel%2Dtable%20%2Esort%2Dcaret%7Bdisplay%3Ainline%2Dblock%3Bwidth%3A0%3Bheight%3A0%3Bborder%3A0%3Bcontent%3A%22%22%3Bposition%3Aabsolute%3Bleft%3A3px%3Bz%2Dindex%3A2%7D%2Eel%2Dtable%20%2Esort%2Dcaret%2Eascending%2C%2Eel%2Dtable%20%2Esort%2Dcaret%2Edescending%7Bborder%2Dright%3A5px%20solid%20transparent%3Bborder%2Dleft%3A5px%20solid%20transparent%7D%2Eel%2Dtable%20%2Esort%2Dcaret%2Eascending%7Btop%3A11px%3Bborder%2Dtop%3Anone%3Bborder%2Dbottom%3A5px%20solid%20%2399a9bf%7D%2Eel%2Dtable%20%2Esort%2Dcaret%2Edescending%7Bbottom%3A11px%3Bborder%2Dtop%3A5px%20solid%20%2399a9bf%3Bborder%2Dbottom%3Anone%7D%2Eel%2Dtable%20%2Eascending%20%2Esort%2Dcaret%2Eascending%7Bborder%2Dbottom%2Dcolor%3A%23475669%7D%2Eel%2Dtable%20%2Edescending%20%2Esort%2Dcaret%2Edescending%7Bborder%2Dtop%2Dcolor%3A%23475669%7D%2Eel%2Dtable%20td%2Egutter%7Bwidth%3A0%7D%2Eel%2Dtable%20%2Ecell%7Bwhite%2Dspace%3Anormal%3Bword%2Dbreak%3Abreak%2Dall%3Bline%2Dheight%3A24px%7D%2Eel%2Dtable%20tr%20input%5Btype%3Dcheckbox%5D%7Bmargin%3A0%7D%2Eel%2Dtable%20tr%7Bbackground%2Dcolor%3A%23fff%7D%2Eel%2Dtable%20%2Ehidden%2Dcolumns%7Bvisibility%3Ahidden%3Bposition%3Aabsolute%3Bz%2Dindex%3A%2D1%7D%2Eel%2Dtable%5F%5Fempty%2Dblock%7Bposition%3Arelative%3Bmin%2Dheight%3A60px%3Btext%2Dalign%3Acenter%3Bwidth%3A100%25%3Bheight%3A100%25%7D%2Eel%2Dtable%5F%5Fempty%2Dtext%7Bposition%3Aabsolute%3Bleft%3A50%25%3Btop%3A50%25%3B%2Dms%2Dtransform%3Atranslate%28%2D50%25%2C%2D50%25%29%3Btransform%3Atranslate%28%2D50%25%2C%2D50%25%29%3Bcolor%3A%235e6d82%7D%2Eel%2Dtable%2D%2Dfit%7Bborder%2Dright%3A0%3Bborder%2Dbottom%3A0%7D%2Eel%2Dtable%2D%2Dfit%20td%2Egutter%2C%2Eel%2Dtable%2D%2Dfit%20th%2Egutter%7Bborder%2Dright%2Dwidth%3A1px%7D%2Eel%2Dtable%2D%2Dborder%20td%2C%2Eel%2Dtable%2D%2Dborder%20th%7Bborder%2Dright%3A1px%20solid%20%23e0e6ed%7D%2Eel%2Dtable%2D%2Dborder%20th%7Bborder%2Dbottom%3A1px%20solid%20%23e0e6ed%7D%2Eel%2Dtable%5F%5Ffixed%2C%2Eel%2Dtable%5F%5Ffixed%2Dright%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bbox%2Dshadow%3A1px%200%208px%20%23d3d4d6%3Boverflow%2Dx%3Ahidden%7D%2Eel%2Dtable%5F%5Ffixed%2Dright%3A%3Abefore%2C%2Eel%2Dtable%5F%5Ffixed%3A%3Abefore%7Bcontent%3A%27%27%3Bposition%3Aabsolute%3Bleft%3A0%3Bbottom%3A0%3Bwidth%3A100%25%3Bheight%3A1px%3Bbackground%2Dcolor%3A%23e0e6ed%3Bz%2Dindex%3A4%7D%2Eel%2Dtable%5F%5Ffixed%2Dheader%2Dwrapper%20thead%20div%2C%2Eel%2Dtable%5F%5Fheader%2Dwrapper%20thead%20div%7Bbackground%2Dcolor%3A%23EFF2F7%3Bcolor%3A%231f2d3d%7D%2Eel%2Dtable%5F%5Ffixed%2Dright%7Btop%3A0%3Bleft%3Aauto%3Bright%3A0%3Bbox%2Dshadow%3A%2D1px%200%208px%20%23d3d4d6%7D%2Eel%2Dtable%5F%5Ffixed%2Dright%20%2Eel%2Dtable%5F%5Ffixed%2Dbody%2Dwrapper%2C%2Eel%2Dtable%5F%5Ffixed%2Dright%20%2Eel%2Dtable%5F%5Ffixed%2Dheader%2Dwrapper%7Bleft%3Aauto%3Bright%3A0%7D%2Eel%2Dtable%5F%5Ffixed%2Dheader%2Dwrapper%7Bposition%3Aabsolute%3Bleft%3A0%3Btop%3A0%3Bz%2Dindex%3A3%7D%2Eel%2Dtable%5F%5Ffixed%2Dbody%2Dwrapper%7Bposition%3Aabsolute%3Bleft%3A0%3Btop%3A37px%3Boverflow%3Ahidden%3Bz%2Dindex%3A3%7D%2Eel%2Dtable%5F%5Fbody%2Dwrapper%2C%2Eel%2Dtable%5F%5Fheader%2Dwrapper%7Bwidth%3A100%25%7D%2Eel%2Dtable%5F%5Fbody%2C%2Eel%2Dtable%5F%5Fheader%7Btable%2Dlayout%3Afixed%7D%2Eel%2Dtable%5F%5Fbody%2Dwrapper%7Boverflow%3Aauto%3Bposition%3Arelative%7D%2Eel%2Dtable%2D%2Dstriped%20%2Eel%2Dtable%5F%5Fbody%20tr%3Anth%2Dchild%282n%29%20td%7Bbackground%3A%23FAFAFA%7D%2Eel%2Dtable%2D%2Dstriped%20%2Eel%2Dtable%5F%5Fbody%20tr%3Anth%2Dchild%282n%29%2Ecurrent%2Drow%20td%7Bbackground%3A%23EFF7FF%7D%2Eel%2Dtable%5F%5Fbody%20tr%2Ehover%2Drow%3Etd%7Bbackground%2Dcolor%3A%23eff2f7%7D%2Eel%2Dtable%5F%5Fbody%20tr%2Ecurrent%2Drow%3Etd%7Bbackground%3A%23eff7ff%7D%2Eel%2Dtable%5F%5Fcolumn%2Dresize%2Dproxy%7Bposition%3Aabsolute%3Bleft%3A200px%3Btop%3A0%3Bbottom%3A0%3Bwidth%3A0%3Bborder%2Dleft%3A1px%20solid%20%23e0e6ed%3Bz%2Dindex%3A10%7D%2Eel%2Dcheckbox%2C%2Eel%2Dcheckbox%5F%5Finner%2C%2Eel%2Dcheckbox%5F%5Finput%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dtable%5F%5Fcolumn%2Dfilter%2Dtrigger%7Bdisplay%3Ainline%2Dblock%3Bline%2Dheight%3A34px%3Bmargin%2Dleft%3A5px%3Bcursor%3Apointer%7D%2Eel%2Dtable%5F%5Fcolumn%2Dfilter%2Dtrigger%20i%7Bcolor%3A%2399a9bf%7D%2Eel%2Dtable%2D%2Denable%2Drow%2Dtransition%20%2Eel%2Dtable%5F%5Fbody%20td%7Btransition%3Abackground%2Dcolor%20%2E25s%20ease%7D%2Eel%2Dtable%2D%2Denable%2Drow%2Dhover%20tr%3Ahover%3Etd%7Bbackground%2Dcolor%3A%23eff2f7%7D%2Eel%2Dcheckbox%7Bcolor%3A%231f2d3d%3Bcursor%3Apointer%3Bwhite%2Dspace%3Anowrap%7D%2Eel%2Dcheckbox%2B%2Eel%2Dcheckbox%7Bmargin%2Dleft%3A15px%7D%2Eel%2Dcheckbox%5F%5Finput%7Bwhite%2Dspace%3Anowrap%3Bcursor%3Apointer%3Boutline%3A0%3Bline%2Dheight%3A1%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dcheckbox%5F%5Finner%7Bborder%3A1px%20solid%20%23C0CCDA%3Bborder%2Dradius%3A4px%3Bbox%2Dsizing%3Aborder%2Dbox%3Bwidth%3A18px%3Bheight%3A18px%3Bbackground%2Dcolor%3A%23fff%3Bz%2Dindex%3A1%3Btransition%3Aborder%2Dcolor%20%2E25s%20cubic%2Dbezier%28%2E71%2C%2D%2E46%2C%2E29%2C1%2E46%29%2Cbackground%2Dcolor%20%2E25s%20cubic%2Dbezier%28%2E71%2C%2D%2E46%2C%2E29%2C1%2E46%29%7D%2Eel%2Dcheckbox%5F%5Finner%3Anot%28%2Eis%2Ddisabled%29%3Ahover%7Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dcheckbox%5F%5Finner%3A%3Aafter%7Bbox%2Dsizing%3Acontent%2Dbox%3Bcontent%3A%22%22%3Bborder%3A2px%20solid%20%23fff%3Bborder%2Dleft%3A0%3Bborder%2Dtop%3A0%3Bheight%3A8px%3Bleft%3A5px%3Bposition%3Aabsolute%3Btop%3A1px%3B%2Dms%2Dtransform%3Arotate%2845deg%29%20scaleY%280%29%3Btransform%3Arotate%2845deg%29%20scaleY%280%29%3Bwidth%3A4px%3Btransition%3Atransform%20%2E15s%20cubic%2Dbezier%28%2E71%2C%2D%2E46%2C%2E88%2C%2E6%29%20%2E05s%3B%2Dms%2Dtransform%2Dorigin%3Acenter%3Btransform%2Dorigin%3Acenter%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Ddisabled%2Eis%2Dchecked%7Bbackground%2Dcolor%3A%23D3DCE6%3Bborder%2Dcolor%3A%23D3DCE6%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Ddisabled%2Eis%2Dchecked%3A%3Aafter%7Bborder%2Dcolor%3A%23fff%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Ddisabled%2Eis%2Dindeterminate%7Bbackground%2Dcolor%3A%23D3DCE6%3Bborder%2Dcolor%3A%23D3DCE6%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Ddisabled%2Eis%2Dindeterminate%3A%3Abefore%7Bborder%2Dcolor%3A%23fff%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Dindeterminate%7Bbackground%2Dcolor%3A%2320a0ff%3Bborder%2Dcolor%3A%232e90fe%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Dindeterminate%3A%3Abefore%7Bcontent%3A%27%27%3Bposition%3Aabsolute%3Bdisplay%3Ablock%3Bborder%3A1px%20solid%20%23fff%3Bmargin%2Dtop%3A%2D1px%3Bleft%3A3px%3Bright%3A3px%3Btop%3A50%25%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Dindeterminate%3A%3Aafter%7Bdisplay%3Anone%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Dfocus%7Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Dchecked%7Bbackground%2Dcolor%3A%2320a0ff%3Bborder%2Dcolor%3A%232e90fe%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Dchecked%3A%3Aafter%7B%2Dms%2Dtransform%3Arotate%2845deg%29%20scaleY%281%29%3Btransform%3Arotate%2845deg%29%20scaleY%281%29%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Ddisabled%7Bbackground%2Dcolor%3A%23EFF2F7%3Bborder%2Dcolor%3A%23D3DCE6%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Ddisabled%3A%3Aafter%7Bcursor%3Anot%2Dallowed%3Bborder%2Dcolor%3A%23EFF2F7%7D%2Eel%2Dcheckbox%5F%5Finner%2Eis%2Ddisabled%2B%2Eel%2Dcheckbox%5F%5Flabel%7Bcursor%3Anot%2Dallowed%7D%2Eel%2Dcheckbox%5F%5Foriginal%7Bopacity%3A0%3Boutline%3A0%3Bposition%3Aabsolute%3Bmargin%3A0%3Bleft%3A%2D999px%7D%2Eel%2Dcheckbox%5F%5Flabel%7Bfont%2Dsize%3A14px%3Bpadding%2Dleft%3A5px%7D%2Eel%2Dtable%2Dfilter%7Bborder%3A1px%20solid%20%23d3dce6%3Bborder%2Dradius%3A2px%3Bbackground%2Dcolor%3A%23fff%3Bbox%2Dshadow%3A0%202px%204px%20rgba%280%2C0%2C0%2C%2E12%29%2C0%200%206px%20rgba%280%2C0%2C0%2C%2E12%29%3Bbox%2Dsizing%3Aborder%2Dbox%3Bmargin%3A2px%200%7D%2Eel%2Dtable%2Dfilter%5F%5Flist%7Bpadding%3A5px%200%3Bmargin%3A0%3Blist%2Dstyle%3Anone%3Bmin%2Dwidth%3A100px%7D%2Eel%2Dtable%2Dfilter%5F%5Flist%2Ditem%7Bline%2Dheight%3A36px%3Bpadding%3A0%2010px%3Bcursor%3Apointer%3Bfont%2Dsize%3A14px%7D%2Eel%2Dtable%2Dfilter%5F%5Flist%2Ditem%3Ahover%7Bbackground%2Dcolor%3A%23e5e9f2%3Bcolor%3A%23475669%7D%2Eel%2Dtable%2Dfilter%5F%5Flist%2Ditem%2Eis%2Dactive%7Bbackground%2Dcolor%3A%2320a0ff%3Bcolor%3A%23fff%7D%2Eel%2Dtable%2Dfilter%5F%5Fcontent%7Bmin%2Dwidth%3A100px%7D%2Eel%2Dtable%2Dfilter%5F%5Fbottom%7Bborder%2Dtop%3A1px%20solid%20%23d3dce6%3Bpadding%3A8px%7D%2Eel%2Dtable%2Dfilter%5F%5Fbottom%20button%7Bbackground%3A0%200%3Bborder%3Anone%3Bcolor%3A%238492a6%3Bcursor%3Apointer%3Bfont%2Dsize%3A14px%3Bpadding%3A0%203px%7D%2Eel%2Dtable%2Dfilter%5F%5Fbottom%20button%3Ahover%7Bcolor%3A%2320a0ff%7D%2Eel%2Dtable%2Dfilter%5F%5Fbottom%20button%3Afocus%7Boutline%3A0%7D%2Eel%2Dtable%2Dfilter%5F%5Fbottom%20button%2Eis%2Ddisabled%7Bcolor%3A%23c0ccda%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dtable%2Dfilter%5F%5Fcheckbox%2Dgroup%7Bpadding%3A10px%7D%2Eel%2Dtable%2Dfilter%5F%5Fcheckbox%2Dgroup%20%2Eel%2Dcheckbox%7Bdisplay%3Ablock%3Bmargin%2Dbottom%3A8px%3Bmargin%2Dleft%3A5px%7D%2Eel%2Dtable%2Dfilter%5F%5Fcheckbox%2Dgroup%20%2Eel%2Dcheckbox%3Alast%2Dchild%7Bmargin%2Dbottom%3A0%7D%2Eel%2Dselect%2Ddropdown%7Bposition%3Aabsolute%3Bz%2Dindex%3A1001%3Bborder%3A1px%20solid%20%23d3dce6%3Bborder%2Dradius%3A2px%3Bbackground%2Dcolor%3A%23fff%3Bbox%2Dshadow%3A0%202px%204px%20rgba%280%2C0%2C0%2C%2E12%29%2C0%200%206px%20rgba%280%2C0%2C0%2C%2E04%29%3Bbox%2Dsizing%3Aborder%2Dbox%3Bmargin%3A5px%200%7D%2Eel%2Dselect%2Ddropdown%2Eis%2Dmultiple%20%2Eel%2Dselect%2Ddropdown%5F%5Fitem%2Eselected%7Bcolor%3A%2320a0ff%3Bbackground%2Dcolor%3A%23fff%7D%2Eel%2Dselect%2Ddropdown%2Eis%2Dmultiple%20%2Eel%2Dselect%2Ddropdown%5F%5Fitem%2Eselected%2Ehover%2C%2Eel%2Dselect%2Ddropdown%5F%5Fitem%2Ehover%7Bbackground%2Dcolor%3A%23e5e9f2%7D%2Eel%2Dselect%2Ddropdown%2Eis%2Dmultiple%20%2Eel%2Dselect%2Ddropdown%5F%5Fitem%2Eselected%3A%3Aafter%7Bposition%3Aabsolute%3Bright%3A10px%3Bfont%2Dfamily%3Aelement%2Dicons%3Bcontent%3A%22%5CE608%22%3Bfont%2Dsize%3A11px%3B%2Dwebkit%2Dfont%2Dsmoothing%3Aantialiased%3B%2Dmoz%2Dosx%2Dfont%2Dsmoothing%3Agrayscale%7D%2Eel%2Dselect%2Ddropdown%5F%5Fempty%7Bpadding%3A10px%200%3Bmargin%3A0%3Btext%2Dalign%3Acenter%3Bcolor%3A%23999%3Bfont%2Dsize%3A14px%7D%2Eel%2Dselect%2Ddropdown%5F%5Flist%7Blist%2Dstyle%3Anone%3Bpadding%3A6px%200%3Bmargin%3A0%3Bwidth%3A100%25%3Bmax%2Dheight%3A274px%3Bbox%2Dsizing%3Aborder%2Dbox%3Boverflow%2Dy%3Aauto%7D%2Eel%2Dselect%2Ddropdown%5F%5Flist%2Eis%2Dempty%7Bpadding%3A0%7D%2Eel%2Dselect%2Ddropdown%5F%5Fitem%7Bfont%2Dsize%3A14px%3Bpadding%3A8px%2010px%3Bposition%3Arelative%3Bwhite%2Dspace%3Anowrap%3Boverflow%3Ahidden%3Btext%2Doverflow%3Aellipsis%3Bcolor%3A%23475669%3Bheight%3A36px%3Bline%2Dheight%3A1%2E5%3Bbox%2Dsizing%3Aborder%2Dbox%3Bcursor%3Apointer%7D%2Eel%2Dselect%2Ddropdown%5F%5Fitem%2Eselected%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2320a0ff%7D%2Eel%2Dselect%2Ddropdown%5F%5Fitem%2Eselected%2Ehover%7Bbackground%2Dcolor%3A%231D8CE0%7D%2Eel%2Dselect%2Ddropdown%5F%5Fitem%20span%7Bline%2Dheight%3A1%2E5%21important%7D%2Eel%2Dselect%2Ddropdown%5F%5Fitem%2Eis%2Ddisabled%7Bcolor%3A%23C0CCDA%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dselect%2Ddropdown%5F%5Fitem%2Eis%2Ddisabled%3Ahover%7Bbackground%2Dcolor%3A%23fff%7D%2Eel%2Dselect%2Dgroup%7Bmargin%3A0%3Bpadding%3A0%7D%2Eel%2Dselect%2Dgroup%20%2Eel%2Dselect%2Ddropdown%5F%5Fitem%7Bpadding%2Dleft%3A20px%7D%2Eel%2Dselect%2Dgroup%5F%5Fwrap%7Blist%2Dstyle%3Anone%3Bmargin%3A0%3Bpadding%3A0%7D%2Eel%2Dselect%2Dgroup%5F%5Ftitle%7Bpadding%2Dleft%3A10px%3Bfont%2Dsize%3A12px%3Bcolor%3A%23999%3Bheight%3A30px%3Bline%2Dheight%3A30px%7D%2Eel%2Dselect%7Bdisplay%3Ablock%3Bposition%3Arelative%7D%2Eel%2Dselect%3Ahover%20%2Eel%2Dinput%5F%5Finner%7Bborder%2Dcolor%3A%238492a6%7D%2Eel%2Dselect%20%2Eel%2Dinput%5F%5Finner%7Bcursor%3Apointer%7D%2Eel%2Dselect%20%2Eel%2Dinput%5F%5Finner%3Afocus%7Bborder%2Dcolor%3A%232ea0ff%7D%2Eel%2Dselect%20%2Eel%2Dinput%20%2Eel%2Dinput%5F%5Ficon%7Bcolor%3A%23C0CCDA%3Bfont%2Dsize%3A12px%3Btransition%3Atransform%20%2E3s%3B%2Dms%2Dtransform%3AtranslateY%28%2D50%25%29%20rotate%28180deg%29%3Btransform%3AtranslateY%28%2D50%25%29%20rotateZ%28180deg%29%3Bline%2Dheight%3A16px%3Btop%3A50%25%3Bcursor%3Apointer%7D%2Eel%2Dselect%20%2Eel%2Dinput%20%2Eel%2Dinput%5F%5Ficon%2Eis%2Dshow%2Dclose%7Btransition%3A0s%3Bwidth%3A16px%3Bheight%3A16px%3Bfont%2Dsize%3A14px%3Bright%3A8px%3Btext%2Dalign%3Acenter%3B%2Dms%2Dtransform%3AtranslateY%28%2D50%25%29%20rotate%28180deg%29%3Btransform%3AtranslateY%28%2D50%25%29%20rotateZ%28180deg%29%3Bborder%2Dradius%3A100%25%3Bcolor%3A%23C0CCDA%7D%2Eel%2Dselect%20%2Eel%2Dinput%20%2Eel%2Dinput%5F%5Ficon%2Eis%2Dshow%2Dclose%3Ahover%7Bcolor%3A%2399a9bf%7D%2Eel%2Dselect%20%2Eel%2Dinput%20%2Eel%2Dinput%5F%5Ficon%2Eis%2Dreverse%7B%2Dms%2Dtransform%3AtranslateY%28%2D50%25%29%3Btransform%3AtranslateY%28%2D50%25%29%7D%2Eel%2Dselect%20%2Eel%2Dinput%2Eis%2Ddisabled%20%2Eel%2Dinput%5F%5Finner%7Bcursor%3Anot%2Dallowed%7D%2Eel%2Dselect%20%2Eel%2Dinput%2Eis%2Ddisabled%20%2Eel%2Dinput%5F%5Finner%3Ahover%7Bborder%2Dcolor%3A%23D3DCE6%7D%2Eel%2Dselect%20%2Eel%2Dtag%5F%5Fclose%7Bmargin%2Dtop%3A%2D2px%7D%2Eel%2Dselect%20%2Eel%2Dtag%7Bheight%3A24px%3Bline%2Dheight%3A24px%3Bbox%2Dsizing%3Aborder%2Dbox%3Bmargin%3A6px%200%200%206px%7D%2Eel%2Dselect%5F%5Finput%7Bborder%3Anone%3Boutline%3A0%3Bpadding%3A0%3Bmargin%3A4px%200%20%2D3px%2010px%3Bcolor%3A%23666%3Bfont%2Dsize%3A14px%3Bvertical%2Dalign%3Abaseline%3B%2Dwebkit%2Dappearance%3Anone%3B%2Dmoz%2Dappearance%3Anone%3Bappearance%3Anone%3Bheight%3A28px%3Bbackground%2Dcolor%3Atransparent%7D%2Eel%2Ddate%2Dpicker%5F%5Feditor%2C%2Eel%2Ddate%2Drange%2Dpicker%5F%5Feditor%7B%2Dwebkit%2Dappearance%3Anone%3B%2Dmoz%2Dappearance%3Anone%3Boutline%3A0%7D%2Eel%2Dselect%5F%5Fclose%7Bcursor%3Apointer%3Bposition%3Aabsolute%3Btop%3A8px%3Bz%2Dindex%3A1000%3Bright%3A25px%3Bcolor%3A%23C0CCDA%3Bline%2Dheight%3A18px%3Bfont%2Dsize%3A12px%7D%2Eel%2Dselect%5F%5Fclose%3Ahover%7Bcolor%3A%2399a9bf%7D%2Eel%2Dselect%5F%5Ftags%7Bposition%3Aabsolute%3Bline%2Dheight%3Anormal%3Bwhite%2Dspace%3Anormal%3Bz%2Dindex%3A1000%7D%2Eel%2Dselect%5F%5Ftag%7Bdisplay%3Ainline%2Dblock%3Bheight%3A24px%3Bline%2Dheight%3A24px%3Bfont%2Dsize%3A14px%3Bborder%2Dradius%3A4px%3Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2320a0ff%7D%2Eel%2Dselect%5F%5Ftag%20%2Eel%2Dicon%2Dclose%7Bfont%2Dsize%3A12px%7D%2Eel%2Dpagination%7Bwhite%2Dspace%3Anowrap%3Bpadding%3A2px%205px%3Bcolor%3A%23475669%7D%2Eel%2Dpagination%20button%2C%2Eel%2Dpagination%20span%7Bdisplay%3Ainline%2Dblock%3Bfont%2Dsize%3A13px%3Bmin%2Dwidth%3A28px%3Bheight%3A28px%3Bline%2Dheight%3A28px%3Bvertical%2Dalign%3Atop%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Dpagination%20%2Eel%2Dselect%20%2Eel%2Dinput%7Bwidth%3A110px%7D%2Eel%2Dpagination%20%2Eel%2Dselect%20%2Eel%2Dinput%20input%7Bpadding%2Dright%3A25px%3Bborder%2Dradius%3A2px%3Bheight%3A28px%7D%2Eel%2Dpagination%20button%7Bborder%3Anone%3Bpadding%3A0%206px%3Bbackground%3A0%200%7D%2Eel%2Dpagination%20button%3Afocus%7Boutline%3A0%7D%2Eel%2Dpagination%20button%3Ahover%7Bcolor%3A%2320a0ff%7D%2Eel%2Dpagination%20button%2Edisabled%7Bcolor%3A%23e4e4e4%3Bbackground%2Dcolor%3A%23fff%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dpager%20li%2C%2Eel%2Dpager%20li%2Ebtn%2Dquicknext%3Ahover%2C%2Eel%2Dpager%20li%2Ebtn%2Dquickprev%3Ahover%7Bcursor%3Apointer%7D%2Eel%2Dpagination%20%2Ebtn%2Dnext%2C%2Eel%2Dpagination%20%2Ebtn%2Dprev%7Bbackground%3Acenter%20center%20no%2Drepeat%20%23fff%3Bbackground%2Dsize%3A16px%3Bborder%3A1px%20solid%20%23D3DCE6%3Bcursor%3Apointer%3Bmargin%3A0%3Bcolor%3A%2399a9bf%7D%2Eel%2Dpagination%20%2Ebtn%2Dnext%20%2Eel%2Dicon%2C%2Eel%2Dpagination%20%2Ebtn%2Dprev%20%2Eel%2Dicon%7Bdisplay%3Ablock%3Bfont%2Dsize%3A12px%7D%2Eel%2Dpager%2C%2Eel%2Dpager%20li%7Bvertical%2Dalign%3Atop%3Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dpagination%20%2Ebtn%2Dprev%7Bborder%2Dradius%3A2px%200%200%202px%3Bborder%2Dright%3A0%7D%2Eel%2Dpagination%20%2Ebtn%2Dnext%7Bborder%2Dradius%3A0%202px%202px%200%3Bborder%2Dleft%3A0%7D%2Eel%2Dpagination%2D%2Dsmall%20%2Ebtn%2Dnext%2C%2Eel%2Dpagination%2D%2Dsmall%20%2Ebtn%2Dprev%2C%2Eel%2Dpagination%2D%2Dsmall%20%2Eel%2Dpager%20li%2C%2Eel%2Dpagination%2D%2Dsmall%20%2Eel%2Dpager%20li%3Alast%2Dchild%7Bborder%2Dcolor%3Atransparent%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A22px%3Bheight%3A22px%3Bmin%2Dwidth%3A22px%7D%2Eel%2Dpagination%2D%2Dsmall%20%2Eel%2Dpager%20li%7Bborder%2Dradius%3A2px%7D%2Eel%2Dpagination%5F%5Fsizes%7Bmargin%3A0%2010px%200%200%7D%2Eel%2Dpagination%5F%5Fsizes%20%2Eel%2Dinput%20%2Eel%2Dinput%5F%5Finner%7Bfont%2Dsize%3A13px%3Bborder%2Dcolor%3A%23D3DCE6%7D%2Eel%2Dpagination%5F%5Fsizes%20%2Eel%2Dinput%20%2Eel%2Dinput%5F%5Finner%3Ahover%7Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dpagination%5F%5Fjump%7Bmargin%2Dleft%3A10px%7D%2Eel%2Dpagination%5F%5Ftotal%7Bmargin%3A0%2010px%7D%2Eel%2Dpagination%5F%5Feditor%7Bborder%3A1px%20solid%20%23D3DCE6%3Bborder%2Dradius%3A2px%3Bline%2Dheight%3A18px%3Bpadding%3A4px%202px%3Bwidth%3A30px%3Btext%2Dalign%3Acenter%3Bmargin%3A0%206px%3Bbox%2Dsizing%3Aborder%2Dbox%3Btransition%3Aborder%20%2E3s%7D%2Eel%2Dpagination%5F%5Feditor%3A%3A%2Dwebkit%2Dinner%2Dspin%2Dbutton%2C%2Eel%2Dpagination%5F%5Feditor%3A%3A%2Dwebkit%2Douter%2Dspin%2Dbutton%7B%2Dwebkit%2Dappearance%3Anone%3Bmargin%3A0%7D%2Eel%2Dpagination%5F%5Feditor%3Afocus%7Boutline%3A0%3Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dpager%7Buser%2Dselect%3Anone%3Blist%2Dstyle%3Anone%3Bfont%2Dsize%3A0%3Bpadding%3A0%7D%2Eel%2Dbutton%2C%2Eel%2Ddate%2Dtable%7B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%7D%2Eel%2Dbutton%2C%2Eel%2Ddate%2Dtable%2C%2Eel%2Dmessage%2Dbox%7B%2Dwebkit%2Duser%2Dselect%3Anone%7D%2Eel%2Dpager%20li%7Bpadding%3A0%204px%3Bborder%3A1px%20solid%20%23D3DCE6%3Bborder%2Dright%3A0%3Bbackground%3A%23fff%3Bfont%2Dsize%3A13px%3Bmin%2Dwidth%3A28px%3Bheight%3A28px%3Bline%2Dheight%3A28px%3Bbox%2Dsizing%3Aborder%2Dbox%3Btext%2Dalign%3Acenter%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%2Eis%2Dloading%20%2Eel%2Dicon%2Dloading%2C%2Eel%2Dbutton%2Dgroup%2C%2Eel%2Dmessage%2Dbox%2C%2Eel%2Dmessage%2Dbox%5F%5Fwrapper%3A%3Aafter%7Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dpager%20li%3Alast%2Dchild%7Bborder%2Dright%3A1px%20solid%20%23D3DCE6%7D%2Eel%2Dpager%20li%2Ebtn%2Dquicknext%2C%2Eel%2Dpager%20li%2Ebtn%2Dquickprev%7Bline%2Dheight%3A28px%3Bcolor%3A%2399a9bf%7D%2Eel%2Dpager%20li%2Eactive%2Bli%7Bborder%2Dleft%3A0%3Bpadding%2Dleft%3A5px%7D%2Eel%2Dpager%20li%3Ahover%7Bcolor%3A%2320a0ff%7D%2Eel%2Dpager%20li%2Eactive%7Bborder%2Dcolor%3A%2320a0ff%3Bbackground%2Dcolor%3A%2320a0ff%3Bcolor%3A%23fff%3Bcursor%3Adefault%7D%2Eel%2Dpopover%7Bposition%3Aabsolute%3Bbackground%3A%23fff%3Bmin%2Dwidth%3A150px%3Bborder%2Dradius%3A2px%3Bborder%3A1px%20solid%20%23d3dce6%3Bpadding%3A10px%3Bz%2Dindex%3A2000%3Bfont%2Dsize%3A12px%3Bbox%2Dshadow%3A0%202px%204px%200%20rgba%280%2C0%2C0%2C%2E12%29%2C0%200%206px%200%20rgba%280%2C0%2C0%2C%2E04%29%7D%2Eel%2Dpopover%20%2Epopper%5F%5Farrow%2C%2Eel%2Dtooltip%5F%5Fpopper%20%2Epopper%5F%5Farrow%7Bborder%2Dwidth%3A6px%7D%2Eel%2Dpopover%20%2Epopper%5F%5Farrow%2C%2Eel%2Dpopover%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bposition%3Aabsolute%3Bdisplay%3Ablock%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Eel%2Dtooltip%2C%2Eel%2Dtooltip%5F%5Frel%7Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dpopover%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bcontent%3A%22%20%22%3Bborder%2Dwidth%3A6px%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dtop%5D%7Bmargin%2Dbottom%3A12px%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dtop%5D%20%2Epopper%5F%5Farrow%7Bbottom%3A%2D6px%3Bleft%3A50%25%3Bmargin%2Dright%3A3px%3Bborder%2Dtop%2Dcolor%3A%23d3dce6%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dtop%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bbottom%3A1px%3Bmargin%2Dleft%3A%2D6px%3Bborder%2Dtop%2Dcolor%3A%23fff%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dbottom%5D%7Bmargin%2Dtop%3A12px%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dbottom%5D%20%2Epopper%5F%5Farrow%7Btop%3A%2D6px%3Bleft%3A50%25%3Bmargin%2Dright%3A3px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23d3dce6%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dleft%5D%2C%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dleft%5D%7Bmargin%2Dright%3A12px%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dbottom%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Btop%3A1px%3Bmargin%2Dleft%3A%2D6px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%23fff%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dright%5D%7Bmargin%2Dleft%3A12px%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dright%5D%20%2Epopper%5F%5Farrow%7Btop%3A50%25%3Bleft%3A%2D6px%3Bmargin%2Dbottom%3A3px%3Bborder%2Dright%2Dcolor%3A%23d3dce6%3Bborder%2Dleft%2Dwidth%3A0%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dright%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bbottom%3A%2D6px%3Bleft%3A1px%3Bborder%2Dright%2Dcolor%3A%23fff%3Bborder%2Dleft%2Dwidth%3A0%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dleft%5D%20%2Epopper%5F%5Farrow%7Btop%3A50%25%3Bright%3A%2D6px%3Bmargin%2Dbottom%3A3px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23d3dce6%7D%2Eel%2Dpopover%5Bx%2Dplacement%5E%3Dleft%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bright%3A1px%3Bbottom%3A%2D6px%3Bmargin%2Dleft%3A%2D6px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%23fff%7D%2Eel%2Dpopover%5F%5Ftitle%7Bcolor%3A%231f2d3d%3Bfont%2Dsize%3A13px%3Bline%2Dheight%3A1%3Bmargin%2Dbottom%3A9px%7D%2Eel%2Dtooltip%5F%5Frel%7Bposition%3Arelative%7D%2Eel%2Dtooltip%5F%5Fpopper%7Bposition%3Aabsolute%3Bborder%2Dradius%3A4px%3Bpadding%3A10px%3Bz%2Dindex%3A2000%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%2E2%7D%2Eel%2Dtooltip%5F%5Fpopper%20%2Epopper%5F%5Farrow%2C%2Eel%2Dtooltip%5F%5Fpopper%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bposition%3Aabsolute%3Bdisplay%3Ablock%3Bwidth%3A0%3Bheight%3A0%3Bborder%2Dcolor%3Atransparent%3Bborder%2Dstyle%3Asolid%7D%2Eel%2Dtooltip%5F%5Fpopper%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bcontent%3A%22%20%22%3Bborder%2Dwidth%3A5px%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dtop%5D%7Bmargin%2Dbottom%3A12px%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dtop%5D%20%2Epopper%5F%5Farrow%7Bbottom%3A%2D6px%3Bborder%2Dtop%2Dcolor%3A%231f2d3d%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dtop%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bbottom%3A1px%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dtop%2Dcolor%3A%231f2d3d%3Bborder%2Dbottom%2Dwidth%3A0%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dbottom%5D%7Bmargin%2Dtop%3A12px%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dbottom%5D%20%2Epopper%5F%5Farrow%7Btop%3A%2D6px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%231f2d3d%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dbottom%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Btop%3A1px%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dtop%2Dwidth%3A0%3Bborder%2Dbottom%2Dcolor%3A%231f2d3d%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dright%5D%7Bmargin%2Dleft%3A12px%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dright%5D%20%2Epopper%5F%5Farrow%7Bleft%3A%2D6px%3Bborder%2Dright%2Dcolor%3A%231f2d3d%3Bborder%2Dleft%2Dwidth%3A0%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dright%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bbottom%3A%2D5px%3Bleft%3A1px%3Bborder%2Dright%2Dcolor%3A%231f2d3d%3Bborder%2Dleft%2Dwidth%3A0%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dleft%5D%20%2Epopper%5F%5Farrow%7Bright%3A%2D6px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%231f2d3d%7D%2Eel%2Dtooltip%5F%5Fpopper%5Bx%2Dplacement%5E%3Dleft%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bright%3A1px%3Bbottom%3A%2D5px%3Bmargin%2Dleft%3A%2D5px%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%231f2d3d%7D%2Eel%2Dtooltip%5F%5Fpopper%2Eis%2Dlight%7Bbackground%3A%23fff%3Bborder%3A1px%20solid%20%231f2d3d%7D%2Eel%2Dtooltip%5F%5Fpopper%2Eis%2Dlight%5Bx%2Dplacement%5E%3Dtop%5D%20%2Epopper%5F%5Farrow%7Bborder%2Dtop%2Dcolor%3A%231f2d3d%7D%2Eel%2Dtooltip%5F%5Fpopper%2Eis%2Dlight%5Bx%2Dplacement%5E%3Dtop%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bborder%2Dtop%2Dcolor%3A%23fff%7D%2Eel%2Dtooltip%5F%5Fpopper%2Eis%2Dlight%5Bx%2Dplacement%5E%3Dbottom%5D%20%2Epopper%5F%5Farrow%7Bborder%2Dbottom%2Dcolor%3A%231f2d3d%7D%2Eel%2Dtooltip%5F%5Fpopper%2Eis%2Dlight%5Bx%2Dplacement%5E%3Dbottom%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bborder%2Dbottom%2Dcolor%3A%23fff%7D%2Eel%2Dtooltip%5F%5Fpopper%2Eis%2Dlight%5Bx%2Dplacement%5E%3Dleft%5D%20%2Epopper%5F%5Farrow%7Bborder%2Dleft%2Dcolor%3A%231f2d3d%7D%2Eel%2Dtooltip%5F%5Fpopper%2Eis%2Dlight%5Bx%2Dplacement%5E%3Dleft%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bborder%2Dleft%2Dcolor%3A%23fff%7D%2Eel%2Dtooltip%5F%5Fpopper%2Eis%2Dlight%5Bx%2Dplacement%5E%3Dright%5D%20%2Epopper%5F%5Farrow%7Bborder%2Dright%2Dcolor%3A%231f2d3d%7D%2Eel%2Dtooltip%5F%5Fpopper%2Eis%2Dlight%5Bx%2Dplacement%5E%3Dright%5D%20%2Epopper%5F%5Farrow%3A%3Aafter%7Bborder%2Dright%2Dcolor%3A%23fff%7D%2Eel%2Dtooltip%5F%5Fpopper%2Eis%2Ddark%7Bbackground%3A%231f2d3d%3Bcolor%3A%23fff%7D%2Eel%2Dautocomplete%7Bposition%3Arelative%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%7Bposition%3Aabsolute%3Bleft%3A0%3Btop%3A110%25%3Bmargin%3A0%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23D3DCE6%3Bwidth%3A100%25%3Bpadding%3A6px%200%3Bz%2Dindex%3A10%3Bborder%2Dradius%3A2px%3Bmax%2Dheight%3A280px%3Bbox%2Dsizing%3Aborder%2Dbox%3Boverflow%3Aauto%3Bbox%2Dshadow%3A0%200%206px%200%20rgba%280%2C0%2C0%2C%2E04%29%2C0%202px%204px%200%20rgba%280%2C0%2C0%2C%2E12%29%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%20li%7Blist%2Dstyle%3Anone%3Bline%2Dheight%3A36px%3Bpadding%3A0%2010px%3Bmargin%3A0%3Bcursor%3Apointer%3Bcolor%3A%23475669%3Bfont%2Dsize%3A14px%3Bwhite%2Dspace%3Anowrap%3Boverflow%3Ahidden%3Btext%2Doverflow%3Aellipsis%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%20li%3Ahover%7Bbackground%2Dcolor%3A%23e5e9f2%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%20li%2Ehighlighted%7Bbackground%2Dcolor%3A%2320a0ff%3Bcolor%3A%23fff%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%20li%3Aactive%7Bbackground%2Dcolor%3A%230082e6%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%2Eis%2Dloading%20li%3Ahover%2C%2Eel%2Dmessage%7Bbackground%2Dcolor%3A%23fff%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%20li%2Edivider%7Bmargin%2Dtop%3A6px%3Bborder%2Dtop%3A1px%20solid%20%23D3DCE6%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%20li%2Edivider%3Alast%2Dchild%7Bmargin%2Dbottom%3A%2D6px%7D%2Eel%2Dautocomplete%5F%5Fsuggestions%2Eis%2Dloading%20li%7Btext%2Dalign%3Acenter%3Bheight%3A100px%3Bline%2Dheight%3A100px%3Bfont%2Dsize%3A20px%3Bcolor%3A%23999%7D%2Eel%2Dmessage%7Bbox%2Dshadow%3A0%202px%204px%20rgba%280%2C0%2C0%2C%2E12%29%2C0%200%206px%20rgba%280%2C0%2C0%2C%2E04%29%3Bmin%2Dwidth%3A300px%3Bpadding%3A10px%2012px%3Bbox%2Dsizing%3Aborder%2Dbox%3Bborder%2Dradius%3A2px%3Bposition%3Afixed%3Bleft%3A50%25%3Btop%3A20px%3Btransform%3AtranslateX%28%2D50%25%29%3Btransition%3Aopacity%20%2E3s%2Ctransform%20%2E4s%3Boverflow%3Ahidden%7D%2Eel%2Dmessage%20%2Eel%2Dicon%2Dcircle%2Dcheck%7Bcolor%3A%2313ce66%7D%2Eel%2Dmessage%20%2Eel%2Dicon%2Dcircle%2Dcross%7Bcolor%3A%23ff4949%7D%2Eel%2Dmessage%20%2Eel%2Dicon%2Dinformation%7Bcolor%3A%2350BFFF%7D%2Eel%2Dmessage%20%2Eel%2Dicon%2Dwarning%7Bcolor%3A%23f7ba2a%7D%2Eel%2Dmessage%5F%5Fgroup%7Bmargin%2Dleft%3A38px%3Bposition%3Arelative%7D%2Eel%2Dmessage%5F%5Fgroup%20p%7Bfont%2Dsize%3A14px%3Bline%2Dheight%3A20px%3Bmargin%3A0%2034px%200%200%3Bwhite%2Dspace%3Anowrap%3Bcolor%3A%238492a6%3Btext%2Dalign%3Ajustify%7D%2Eel%2Dmessage%5F%5Ficon%7Bwidth%3A40px%3Bheight%3A40px%3Bposition%3Aabsolute%3Bleft%3A0%3Btop%3A0%7D%2Eel%2Dmessage%5F%5FcloseBtn%7Btop%3A3px%3Bright%3A0%3Bposition%3Aabsolute%3Bcursor%3Apointer%3Bcolor%3A%23C0CCDA%3Bfont%2Dsize%3A14px%7D%2Eel%2Dmessage%5F%5FcloseBtn%3Ahover%7Bcolor%3A%2399A9BF%7D%2Eel%2Dmessage%2Dfade%2Denter%2C%2Eel%2Dmessage%2Dfade%2Dleave%2Dactive%7Bopacity%3A0%3B%2Dms%2Dtransform%3Atranslate%28%2D50%25%2C%2D100%25%29%3Btransform%3Atranslate%28%2D50%25%2C%2D100%25%29%7D%2Eel%2Dbutton%7Bdisplay%3Ainline%2Dblock%3Bline%2Dheight%3A1%3Bwhite%2Dspace%3Anowrap%3Bcursor%3Apointer%3Bbackground%3A%23fff%3Bborder%3A1px%20solid%20%23C0CCDA%3Bcolor%3A%231F2D3D%3B%2Dwebkit%2Dappearance%3Anone%3Btext%2Dalign%3Acenter%3Bbox%2Dsizing%3Aborder%2Dbox%3Boutline%3A0%3Bmargin%3A0%3Bpadding%3A10px%2015px%3Bfont%2Dsize%3A14px%3Bborder%2Dradius%3A4px%7D%2Eel%2Dbutton%2B%2Eel%2Dbutton%7Bmargin%2Dleft%3A10px%7D%2Eel%2Dbutton%3Afocus%2C%2Eel%2Dbutton%3Ahover%7Bcolor%3A%2320a0ff%3Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dbutton%3Aactive%7Bcolor%3A%231d90e6%3Bborder%2Dcolor%3A%231d90e6%3Boutline%3A0%7D%2Eel%2Dbutton%3A%3A%2Dmoz%2Dfocus%2Dinner%7Bborder%3A0%7D%2Eel%2Dbutton%20%5Bclass%2A%3Del%2Dicon%2D%5D%2Bspan%7Bmargin%2Dleft%3A5px%7D%2Eel%2Dbutton%2Eis%2Dloading%7Bposition%3Arelative%3Bpointer%2Devents%3Anone%7D%2Eel%2Dbutton%2Eis%2Dloading%3Abefore%7Bpointer%2Devents%3Anone%3Bcontent%3A%27%27%3Bposition%3Aabsolute%3Bleft%3A%2D1px%3Btop%3A%2D1px%3Bright%3A%2D1px%3Bbottom%3A%2D1px%3Bborder%2Dradius%3Ainherit%3Bbackground%2Dcolor%3Argba%28255%2C255%2C255%2C%2E35%29%7D%2Eel%2Dbutton%2Eis%2Ddisabled%2C%2Eel%2Dbutton%2Eis%2Ddisabled%3Afocus%2C%2Eel%2Dbutton%2Eis%2Ddisabled%3Ahover%7Bcolor%3A%23C0CCDA%3Bcursor%3Anot%2Dallowed%3Bbackground%2Dimage%3Anone%3Bbackground%2Dcolor%3A%23EFF2F7%3Bborder%2Dcolor%3A%23D3DCE6%7D%2Eel%2Dbutton%2Eis%2Ddisabled%2Eel%2Dbutton%2D%2Dtext%7Bbackground%2Dcolor%3Atransparent%7D%2Eel%2Dbutton%2Eis%2Ddisabled%2Eis%2Dplain%2C%2Eel%2Dbutton%2Eis%2Ddisabled%2Eis%2Dplain%3Afocus%2C%2Eel%2Dbutton%2Eis%2Ddisabled%2Eis%2Dplain%3Ahover%7Bbackground%2Dcolor%3A%23fff%3Bborder%2Dcolor%3A%23d3dce6%3Bcolor%3A%23C0CCDA%7D%2Eel%2Dbutton%2Eis%2Dactive%7Bcolor%3A%231d90e6%3Bborder%2Dcolor%3A%231d90e6%7D%2Eel%2Dbutton%2Eis%2Dplain%3Afocus%2C%2Eel%2Dbutton%2Eis%2Dplain%3Ahover%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%2320a0ff%3Bcolor%3A%2320a0ff%7D%2Eel%2Dbutton%2Eis%2Dplain%3Aactive%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%231d90e6%3Bcolor%3A%231d90e6%3Boutline%3A0%7D%2Eel%2Dbutton%2D%2Dprimary%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2320a0ff%3Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dbutton%2D%2Dprimary%3Afocus%2C%2Eel%2Dbutton%2D%2Dprimary%3Ahover%7Bbackground%3A%234db3ff%3Bborder%2Dcolor%3A%234db3ff%3Bcolor%3A%23fff%7D%2Eel%2Dbutton%2D%2Dprimary%2Eis%2Dactive%2C%2Eel%2Dbutton%2D%2Dprimary%3Aactive%7Bbackground%3A%231d90e6%3Bborder%2Dcolor%3A%231d90e6%3Bcolor%3A%23fff%7D%2Eel%2Dbutton%2D%2Dprimary%3Aactive%7Boutline%3A0%7D%2Eel%2Dbutton%2D%2Dprimary%2Eis%2Dplain%7Bbackground%3A%23fff%3Bborder%3A1px%20solid%20%23C0CCDA%3Bcolor%3A%231F2D3D%7D%2Eel%2Dbutton%2D%2Dprimary%2Eis%2Dplain%3Afocus%2C%2Eel%2Dbutton%2D%2Dprimary%2Eis%2Dplain%3Ahover%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%2320a0ff%3Bcolor%3A%2320a0ff%7D%2Eel%2Dbutton%2D%2Dprimary%2Eis%2Dplain%3Aactive%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%231d90e6%3Bcolor%3A%231d90e6%3Boutline%3A0%7D%2Eel%2Dbutton%2D%2Dsuccess%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2313ce66%3Bborder%2Dcolor%3A%2313ce66%7D%2Eel%2Dbutton%2D%2Dsuccess%3Afocus%2C%2Eel%2Dbutton%2D%2Dsuccess%3Ahover%7Bbackground%3A%2342d885%3Bborder%2Dcolor%3A%2342d885%3Bcolor%3A%23fff%7D%2Eel%2Dbutton%2D%2Dsuccess%2Eis%2Dactive%2C%2Eel%2Dbutton%2D%2Dsuccess%3Aactive%7Bbackground%3A%2311b95c%3Bborder%2Dcolor%3A%2311b95c%3Bcolor%3A%23fff%7D%2Eel%2Dbutton%2D%2Dsuccess%3Aactive%7Boutline%3A0%7D%2Eel%2Dbutton%2D%2Dsuccess%2Eis%2Dplain%7Bbackground%3A%23fff%3Bborder%3A1px%20solid%20%23C0CCDA%3Bcolor%3A%231F2D3D%7D%2Eel%2Dbutton%2D%2Dsuccess%2Eis%2Dplain%3Afocus%2C%2Eel%2Dbutton%2D%2Dsuccess%2Eis%2Dplain%3Ahover%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%2313ce66%3Bcolor%3A%2313ce66%7D%2Eel%2Dbutton%2D%2Dsuccess%2Eis%2Dplain%3Aactive%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%2311b95c%3Bcolor%3A%2311b95c%3Boutline%3A0%7D%2Eel%2Dbutton%2D%2Dwarning%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23f7ba2a%3Bborder%2Dcolor%3A%23f7ba2a%7D%2Eel%2Dbutton%2D%2Dwarning%3Afocus%2C%2Eel%2Dbutton%2D%2Dwarning%3Ahover%7Bbackground%3A%23f9c855%3Bborder%2Dcolor%3A%23f9c855%3Bcolor%3A%23fff%7D%2Eel%2Dbutton%2D%2Dwarning%2Eis%2Dactive%2C%2Eel%2Dbutton%2D%2Dwarning%3Aactive%7Bbackground%3A%23dea726%3Bborder%2Dcolor%3A%23dea726%3Bcolor%3A%23fff%7D%2Eel%2Dbutton%2D%2Dwarning%3Aactive%7Boutline%3A0%7D%2Eel%2Dbutton%2D%2Dwarning%2Eis%2Dplain%7Bbackground%3A%23fff%3Bborder%3A1px%20solid%20%23C0CCDA%3Bcolor%3A%231F2D3D%7D%2Eel%2Dbutton%2D%2Dwarning%2Eis%2Dplain%3Afocus%2C%2Eel%2Dbutton%2D%2Dwarning%2Eis%2Dplain%3Ahover%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%23f7ba2a%3Bcolor%3A%23f7ba2a%7D%2Eel%2Dbutton%2D%2Dwarning%2Eis%2Dplain%3Aactive%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%23dea726%3Bcolor%3A%23dea726%3Boutline%3A0%7D%2Eel%2Dbutton%2D%2Ddanger%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ff4949%3Bborder%2Dcolor%3A%23ff4949%7D%2Eel%2Dbutton%2D%2Ddanger%3Afocus%2C%2Eel%2Dbutton%2D%2Ddanger%3Ahover%7Bbackground%3A%23ff6d6d%3Bborder%2Dcolor%3A%23ff6d6d%3Bcolor%3A%23fff%7D%2Eel%2Dbutton%2D%2Ddanger%2Eis%2Dactive%2C%2Eel%2Dbutton%2D%2Ddanger%3Aactive%7Bbackground%3A%23e64242%3Bborder%2Dcolor%3A%23e64242%3Bcolor%3A%23fff%7D%2Eel%2Dbutton%2D%2Ddanger%3Aactive%7Boutline%3A0%7D%2Eel%2Dbutton%2D%2Ddanger%2Eis%2Dplain%7Bbackground%3A%23fff%3Bborder%3A1px%20solid%20%23C0CCDA%3Bcolor%3A%231F2D3D%7D%2Eel%2Dbutton%2D%2Ddanger%2Eis%2Dplain%3Afocus%2C%2Eel%2Dbutton%2D%2Ddanger%2Eis%2Dplain%3Ahover%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%23ff4949%3Bcolor%3A%23ff4949%7D%2Eel%2Dbutton%2D%2Ddanger%2Eis%2Dplain%3Aactive%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%23e64242%3Bcolor%3A%23e64242%3Boutline%3A0%7D%2Eel%2Dbutton%2D%2Dinfo%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2350BFFF%3Bborder%2Dcolor%3A%2350BFFF%7D%2Eel%2Dbutton%2D%2Dinfo%3Afocus%2C%2Eel%2Dbutton%2D%2Dinfo%3Ahover%7Bbackground%3A%2373ccff%3Bborder%2Dcolor%3A%2373ccff%3Bcolor%3A%23fff%7D%2Eel%2Dbutton%2D%2Dinfo%2Eis%2Dactive%2C%2Eel%2Dbutton%2D%2Dinfo%3Aactive%7Bbackground%3A%2348ace6%3Bborder%2Dcolor%3A%2348ace6%3Bcolor%3A%23fff%7D%2Eel%2Dbutton%2D%2Dinfo%3Aactive%7Boutline%3A0%7D%2Eel%2Dbutton%2D%2Dinfo%2Eis%2Dplain%7Bbackground%3A%23fff%3Bborder%3A1px%20solid%20%23C0CCDA%3Bcolor%3A%231F2D3D%7D%2Eel%2Dbutton%2D%2Dinfo%2Eis%2Dplain%3Afocus%2C%2Eel%2Dbutton%2D%2Dinfo%2Eis%2Dplain%3Ahover%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%2350BFFF%3Bcolor%3A%2350BFFF%7D%2Eel%2Dbutton%2D%2Dinfo%2Eis%2Dplain%3Aactive%7Bbackground%3A%23fff%3Bborder%2Dcolor%3A%2348ace6%3Bcolor%3A%2348ace6%3Boutline%3A0%7D%2Eel%2Dbutton%2D%2Dlarge%7Bpadding%3A11px%2019px%3Bfont%2Dsize%3A16px%3Bborder%2Dradius%3A4px%7D%2Eel%2Dbutton%2D%2Dsmall%7Bpadding%3A7px%209px%3Bfont%2Dsize%3A12px%3Bborder%2Dradius%3A4px%7D%2Eel%2Dbutton%2D%2Dmini%7Bpadding%3A4px%3Bfont%2Dsize%3A12px%3Bborder%2Dradius%3A4px%7D%2Eel%2Dbutton%2D%2Dtext%7Bborder%3Anone%3Bcolor%3A%2320a0ff%3Bbackground%3A0%200%3Bpadding%2Dleft%3A0%3Bpadding%2Dright%3A0%7D%2Eel%2Dbutton%2D%2Dtext%3Afocus%2C%2Eel%2Dbutton%2D%2Dtext%3Ahover%7Bcolor%3A%234db3ff%7D%2Eel%2Dbutton%2D%2Dtext%3Aactive%7Bcolor%3A%231d90e6%7D%2Eel%2Dbutton%2Dgroup%7Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dprimary%3Afirst%2Dchild%7Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dprimary%3Alast%2Dchild%7Bborder%2Dleft%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dprimary%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dleft%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%3Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dsuccess%3Afirst%2Dchild%7Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dsuccess%3Alast%2Dchild%7Bborder%2Dleft%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dsuccess%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dleft%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%3Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dwarning%3Afirst%2Dchild%7Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dwarning%3Alast%2Dchild%7Bborder%2Dleft%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dwarning%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dleft%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%3Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Ddanger%3Afirst%2Dchild%7Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Ddanger%3Alast%2Dchild%7Bborder%2Dleft%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Ddanger%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dleft%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%3Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dinfo%3Afirst%2Dchild%7Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dinfo%3Alast%2Dchild%7Bborder%2Dleft%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2D%2Dinfo%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dleft%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%3Bborder%2Dright%2Dcolor%3Argba%28255%2C255%2C255%2C%2E5%29%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%7Bfloat%3Aleft%3Bposition%3Arelative%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2B%2Eel%2Dbutton%7Bmargin%2Dleft%3A0%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%3Afirst%2Dchild%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A0%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%3Alast%2Dchild%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%3Anot%28%3Afirst%2Dchild%29%3Anot%28%3Alast%2Dchild%29%7Bborder%2Dradius%3A0%7D%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%2Eis%2Dactive%2C%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%3Aactive%2C%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%3Afocus%2C%2Eel%2Dbutton%2Dgroup%20%2Eel%2Dbutton%3Ahover%7Bz%2Dindex%3A1%7D%2Ev%2Dmodal%2Denter%7Banimation%3Av%2Dmodal%2Din%20%2E2s%20ease%7D%2Ev%2Dmodal%2Dleave%7Banimation%3Av%2Dmodal%2Dout%20%2E2s%20ease%20forwards%7D%40keyframes%20v%2Dmodal%2Din%7B0%25%7Bopacity%3A0%7D%7D%40keyframes%20v%2Dmodal%2Dout%7Bto%7Bopacity%3A0%7D%7D%2Ev%2Dmodal%7Bposition%3Afixed%3Bleft%3A0%3Btop%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bopacity%3A%2E5%3Bbackground%3A%23000%7D%2Eel%2Dmessage%2Dbox%7Btext%2Dalign%3Aleft%3Bdisplay%3Ainline%2Dblock%3Bbackground%2Dcolor%3A%23fff%3Bwidth%3A420px%3Bborder%2Dradius%3A3px%3Bfont%2Dsize%3A16px%3Boverflow%3Ahidden%3B%2Dwebkit%2Dbackface%2Dvisibility%3Ahidden%3Bbackface%2Dvisibility%3Ahidden%7D%2Eel%2Dmessage%2Dbox%5F%5Fwrapper%7Bposition%3Afixed%3Btop%3A0%3Bbottom%3A0%3Bleft%3A0%3Bright%3A0%3Btext%2Dalign%3Acenter%7D%2Eel%2Dmessage%2Dbox%5F%5Fwrapper%3A%3Aafter%7Bcontent%3A%22%22%3Bdisplay%3Ainline%2Dblock%3Bheight%3A100%25%3Bwidth%3A0%7D%2Eel%2Dmessage%2Dbox%5F%5Fheader%7Bposition%3Arelative%3Bpadding%3A20px%2020px%200%7D%2Eel%2Dmessage%2Dbox%5F%5Fcontent%7Bpadding%3A30px%2020px%3Bcolor%3A%23475669%3Bfont%2Dsize%3A14px%3Bposition%3Arelative%7D%2Eel%2Dmessage%2Dbox%5F%5Fclose%7Bdisplay%3Ainline%2Dblock%3Bposition%3Aabsolute%3Btop%3A19px%3Bright%3A20px%3Bcolor%3A%23999%3Bcursor%3Apointer%3Bline%2Dheight%3A20px%3Btext%2Dalign%3Acenter%7D%2Eel%2Dmessage%2Dbox%5F%5Fclose%3Ahover%7Bcolor%3A%2320a0ff%7D%2Eel%2Dmessage%2Dbox%5F%5Finput%7Bpadding%2Dtop%3A15px%7D%2Eel%2Dmessage%2Dbox%5F%5Finput%20input%2Einvalid%2C%2Eel%2Dmessage%2Dbox%5F%5Finput%20input%2Einvalid%3Afocus%7Bborder%2Dcolor%3A%23ff4949%7D%2Eel%2Dmessage%2Dbox%5F%5Ferrormsg%7Bcolor%3A%23ff4949%3Bfont%2Dsize%3A12px%3Bmin%2Dheight%3A18px%3Bmargin%2Dtop%3A2px%7D%2Eel%2Dmessage%2Dbox%5F%5Ftitle%7Bpadding%2Dleft%3A0%3Bmargin%2Dbottom%3A0%3Bfont%2Dsize%3A16px%3Bfont%2Dweight%3A700%3Bheight%3A18px%3Bcolor%3A%23333%7D%2Eel%2Dmessage%2Dbox%5F%5Fmessage%7Bmargin%3A0%7D%2Eel%2Dmessage%2Dbox%5F%5Fmessage%20p%7Bmargin%3A0%3Bline%2Dheight%3A1%2E4%7D%2Eel%2Dmessage%2Dbox%5F%5Fbtns%7Bpadding%3A10px%2020px%2015px%3Btext%2Dalign%3Aright%7D%2Eel%2Dmessage%2Dbox%5F%5Fbtns%20button%3Anth%2Dchild%282%29%7Bmargin%2Dleft%3A10px%7D%2Eel%2Dmessage%2Dbox%5F%5Fbtns%2Dreverse%7B%2Dms%2Dflex%2Ddirection%3Arow%2Dreverse%3Bflex%2Ddirection%3Arow%2Dreverse%7D%2Eel%2Dmessage%2Dbox%5F%5Fstatus%7Bposition%3Aabsolute%3Btop%3A50%25%3B%2Dms%2Dtransform%3AtranslateY%28%2D50%25%29%3Btransform%3AtranslateY%28%2D50%25%29%3Bfont%2Dsize%3A36px%21important%7D%2Eel%2Dmessage%2Dbox%5F%5Fstatus%2Eel%2Dicon%2Dcircle%2Dcheck%7Bcolor%3A%2313ce66%7D%2Eel%2Dmessage%2Dbox%5F%5Fstatus%2Eel%2Dicon%2Dinformation%7Bcolor%3A%2350BFFF%7D%2Eel%2Dmessage%2Dbox%5F%5Fstatus%2Eel%2Dicon%2Dwarning%7Bcolor%3A%23f7ba2a%7D%2Eel%2Dmessage%2Dbox%5F%5Fstatus%2Eel%2Dicon%2Dcircle%2Dcross%7Bcolor%3A%23ff4949%7D%2Emsgbox%2Dfade%2Denter%2Dactive%7Banimation%3Amsgbox%2Dfade%2Din%20%2E3s%7D%2Emsgbox%2Dfade%2Dleave%2Dactive%7Banimation%3Amsgbox%2Dfade%2Dout%20%2E3s%7D%40keyframes%20msgbox%2Dfade%2Din%7B0%25%7Btransform%3Atranslate3d%280%2C%2D20px%2C0%29%3Bopacity%3A0%7D100%25%7Btransform%3Atranslate3d%280%2C0%2C0%29%3Bopacity%3A1%7D%7D%40keyframes%20msgbox%2Dfade%2Dout%7B0%25%7Btransform%3Atranslate3d%280%2C0%2C0%29%3Bopacity%3A1%7D100%25%7Btransform%3Atranslate3d%280%2C%2D20px%2C0%29%3Bopacity%3A0%7D%7D%2Eel%2Ddate%2Dtable%7Bfont%2Dsize%3A12px%3Bmin%2Dwidth%3A224px%3Buser%2Dselect%3Anone%7D%2Eel%2Ddate%2Dtable%20td%7Bwidth%3A32px%3Bheight%3A32px%3Bbox%2Dsizing%3Aborder%2Dbox%3Btext%2Dalign%3Acenter%3Bcursor%3Apointer%7D%2Eel%2Dmonth%2Dtable%20td%20%2Ecell%2C%2Eel%2Dyear%2Dtable%20td%20%2Ecell%7Bwidth%3A48px%3Bheight%3A32px%3Bdisplay%3Ablock%3Bline%2Dheight%3A32px%7D%2Eel%2Ddate%2Dtable%20td%2Enext%2Dmonth%2C%2Eel%2Ddate%2Dtable%20td%2Eprev%2Dmonth%7Bcolor%3A%23ddd%7D%2Eel%2Ddate%2Dtable%20td%2Etoday%7Bcolor%3A%2320a0ff%7D%2Eel%2Ddate%2Dtable%20td%2Eavailable%3Ahover%7Bbackground%2Dcolor%3A%23e5e9f2%7D%2Eel%2Ddate%2Dtable%20td%2Ein%2Drange%7Bbackground%2Dcolor%3A%23D3ECFF%7D%2Eel%2Ddate%2Dtable%20td%2Ein%2Drange%3Ahover%7Bbackground%2Dcolor%3A%23AFDCFF%7D%2Eel%2Ddate%2Dtable%20td%2Ecurrent%2C%2Eel%2Ddate%2Dtable%20td%2Eend%2Ddate%2C%2Eel%2Ddate%2Dtable%20td%2Estart%2Ddate%7Bbackground%2Dcolor%3A%2320a0ff%21important%3Bcolor%3A%23fff%7D%2Eel%2Ddate%2Dtable%20td%2Edisabled%7Bbackground%2Dcolor%3A%23f4f4f4%3Bopacity%3A1%3Bcursor%3Anot%2Dallowed%3Bcolor%3A%23ccc%7D%2Efade%2Din%2Denter%2C%2Efade%2Din%2Dleave%2Dactive%2C%2Efade%2Din%2Dlinear%2Denter%2C%2Efade%2Din%2Dlinear%2Dleave%2C%2Efade%2Din%2Dlinear%2Dleave%2Dactive%7Bopacity%3A0%7D%2Eel%2Ddate%2Dtable%20td%2Eweek%7Bfont%2Dsize%3A80%25%3Bcolor%3A%238492a6%7D%2Eel%2Dmonth%2Dtable%2C%2Eel%2Dyear%2Dtable%7Bfont%2Dsize%3A12px%3Bmargin%3A%2D1px%3Bborder%2Dcollapse%3Acollapse%7D%2Eel%2Ddate%2Dtable%20th%7Bpadding%3A5px%3Bcolor%3A%238492a6%3Bfont%2Dweight%3A400%7D%2Eel%2Ddate%2Dtable%2Eis%2Dweek%2Dmode%20%2Eel%2Ddate%2Dtable%5F%5Frow%3Ahover%7Bbackground%2Dcolor%3A%23e5e9f2%7D%2Eel%2Ddate%2Dtable%2Eis%2Dweek%2Dmode%20%2Eel%2Ddate%2Dtable%5F%5Frow%2Ecurrent%7Bbackground%2Dcolor%3A%23D3ECFF%7D%2Eel%2Dmonth%2Dtable%20td%7Btext%2Dalign%3Acenter%3Bpadding%3A20px%203px%3Bcursor%3Apointer%7D%2Eel%2Dmonth%2Dtable%20td%20%2Ecell%7Bcolor%3A%23475669%7D%2Eel%2Dmonth%2Dtable%20td%20%2Ecell%3Ahover%7Bbackground%2Dcolor%3A%23e5e9f2%7D%2Eel%2Dmonth%2Dtable%20td%2Edisabled%20%2Ecell%7Bbackground%2Dcolor%3A%23f4f4f4%3Bcursor%3Anot%2Dallowed%3Bcolor%3A%23ccc%7D%2Eel%2Dmonth%2Dtable%20td%2Ecurrent%20%2Ecell%7Bbackground%2Dcolor%3A%2320a0ff%21important%3Bcolor%3A%23fff%7D%2Eel%2Dyear%2Dtable%20%2Eel%2Dicon%7Bcolor%3A%2399a9bf%7D%2Eel%2Dyear%2Dtable%20td%7Btext%2Dalign%3Acenter%3Bpadding%3A20px%203px%3Bcursor%3Apointer%7D%2Eel%2Dyear%2Dtable%20td%20%2Ecell%7Bcolor%3A%23475669%7D%2Eel%2Dyear%2Dtable%20td%20%2Ecell%3Ahover%7Bbackground%2Dcolor%3A%23e5e9f2%7D%2Eel%2Dyear%2Dtable%20td%2Edisabled%20%2Ecell%7Bbackground%2Dcolor%3A%23f4f4f4%3Bcursor%3Anot%2Dallowed%3Bcolor%3A%23ccc%7D%2Eel%2Dyear%2Dtable%20td%2Ecurrent%20%2Ecell%7Bbackground%2Dcolor%3A%2320a0ff%21important%3Bcolor%3A%23fff%7D%2Eel%2Ddate%2Drange%2Dpicker%7Bmin%2Dwidth%3A520px%7D%2Eel%2Ddate%2Drange%2Dpicker%20table%7Btable%2Dlayout%3Afixed%3Bwidth%3A100%25%7D%2Eel%2Ddate%2Drange%2Dpicker%20%2Eel%2Dpicker%2Dpanel%5F%5Fbody%7Bmin%2Dwidth%3A513px%7D%2Eel%2Ddate%2Drange%2Dpicker%20%2Eel%2Dpicker%2Dpanel%5F%5Fcontent%7Bmargin%3A0%7D%2Eel%2Ddate%2Drange%2Dpicker%2Ehas%2Dsidebar%2Ehas%2Dtime%7Bmin%2Dwidth%3A766px%7D%2Eel%2Ddate%2Drange%2Dpicker%2Ehas%2Dsidebar%7Bmin%2Dwidth%3A620px%7D%2Eel%2Ddate%2Drange%2Dpicker%2Ehas%2Dtime%7Bmin%2Dwidth%3A660px%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Feditor%7Bposition%3Arelative%3Bborder%3A1px%20solid%20%23c0ccda%3Bborder%2Dradius%3A4px%3Bpadding%3A5px%2010px%3Bbox%2Dsizing%3Aborder%2Dbox%3Bheight%3A28px%3Bappearance%3Anone%3Btransition%3Aborder%20%2E3s%3Bwidth%3A100%25%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Feditor%3Ahover%7Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Fheader%7Bposition%3Arelative%3Btext%2Dalign%3Acenter%3Bheight%3A28px%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Fheader%20button%7Bfloat%3Aleft%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Fheader%20div%7Bfont%2Dsize%3A14px%3Bmargin%2Dright%3A50px%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Fcontent%7Bfloat%3Aleft%3Bwidth%3A50%25%3Bbox%2Dsizing%3Aborder%2Dbox%3Bmargin%3A0%3Bpadding%3A16px%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Fcontent%2Eis%2Dright%20%2Eel%2Ddate%2Drange%2Dpicker%5F%5Fheader%20button%7Bfloat%3Aright%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Fcontent%2Eis%2Dright%20%2Eel%2Ddate%2Drange%2Dpicker%5F%5Fheader%20div%7Bmargin%2Dleft%3A50px%3Bmargin%2Dright%3A50px%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Fcontent%2Eis%2Dleft%7Bborder%2Dright%3A1px%20solid%20%23e4e4e4%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Feditors%2Dwrap%7Bbox%2Dsizing%3Aborder%2Dbox%3Bdisplay%3Atable%2Dcell%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Feditors%2Dwrap%2Eis%2Dright%7Btext%2Dalign%3Aright%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Ftime%2Dheader%7Bposition%3Arelative%3Bborder%2Dbottom%3A1px%20solid%20%23e4e4e4%3Bfont%2Dsize%3A12px%3Bpadding%3A8px%205px%205px%3Bdisplay%3Atable%3Bwidth%3A100%25%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Ftime%2Dheader%3E%2Eel%2Dicon%2Darrow%2Dright%7Bfont%2Dsize%3A20px%3Bvertical%2Dalign%3Amiddle%3Bdisplay%3Atable%2Dcell%3Bcolor%3A%2399a9bf%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Ftime%2Dpicker%2Dwrap%7Bposition%3Arelative%3Bdisplay%3Atable%2Dcell%3Bpadding%3A0%205px%7D%2Eel%2Ddate%2Drange%2Dpicker%5F%5Ftime%2Dpicker%2Dwrap%20%2Eel%2Dpicker%2Dpanel%7Bposition%3Aabsolute%3Btop%3A13px%3Bright%3A0%3Bz%2Dindex%3A1%3Bbackground%3A%23fff%7D%2Eel%2Dtime%2Drange%2Dpicker%7Bmin%2Dwidth%3A354px%3Boverflow%3Avisible%7D%2Eel%2Dtime%2Drange%2Dpicker%5F%5Fcontent%7Bposition%3Arelative%3Btext%2Dalign%3Acenter%3Bpadding%3A10px%3Bdisplay%3A%2Dms%2Dflexbox%3Bdisplay%3Aflex%7D%2Eel%2Dtime%2Drange%2Dpicker%5F%5Fcell%7Bbox%2Dsizing%3Aborder%2Dbox%3Bmargin%3A0%3Bpadding%3A4px%207px%207px%3B%2Dms%2Dflex%3A1%3Bflex%3A1%7D%2Eel%2Dtime%2Drange%2Dpicker%5F%5Fheader%7Bmargin%2Dbottom%3A5px%3Btext%2Dalign%3Acenter%3Bfont%2Dsize%3A14px%7D%2Eel%2Dtime%2Drange%2Dpicker%5F%5Fbody%7Bdisplay%3A%2Dms%2Dflexbox%3Bdisplay%3Aflex%3Bborder%2Dradius%3A2px%3Bborder%3A1px%20solid%20%23d3dce6%7D%2Eel%2Dtime%2Dspinner%5F%5Fwrapper%7Bheight%3A190px%3Boverflow%3Ahidden%3B%2Dms%2Dflex%3A1%3Bflex%3A1%3Bvertical%2Dalign%3Atop%3Bposition%3Arelative%3B%2Dms%2Doverflow%2Dstyle%3Anone%7D%2Eel%2Dtime%2Dspinner%5F%5Fwrapper%3Ahover%7Boverflow%2Dy%3Aauto%7D%2Eel%2Dtime%2Dspinner%5F%5Flist%7Bpadding%3A0%3Bmargin%3A0%3Blist%2Dstyle%3Anone%3Btext%2Dalign%3Acenter%7D%2Eel%2Dtime%2Dspinner%5F%5Flist%3A%3Aafter%2C%2Eel%2Dtime%2Dspinner%5F%5Flist%3A%3Abefore%7Bcontent%3A%27%27%3Bdisplay%3Ablock%3Bwidth%3A100%25%3Bheight%3A80px%7D%2Eel%2Dtime%2Dspinner%5F%5Fitem%7Bheight%3A32px%3Bline%2Dheight%3A32px%3Bfont%2Dsize%3A12px%7D%2Eel%2Dtime%2Dspinner%5F%5Fitem%3Ahover%3Anot%28%2Edisabled%29%3Anot%28%2Eactive%29%7Bbackground%3A%23E5E9F2%3Bcursor%3Apointer%7D%2Eel%2Dtime%2Dspinner%5F%5Fitem%2Eactive%3Anot%28%2Edisabled%29%7Bcolor%3A%23fff%7D%2Eel%2Dtime%2Dspinner%5F%5Fitem%2Edisabled%7Bcolor%3A%23d3dce6%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dtime%2Dpanel%7Bmargin%3A5px%200%3Bborder%3A1px%20solid%20%23d3dce6%3Bbackground%2Dcolor%3A%23fff%3Bbox%2Dshadow%3A0%202px%204px%20rgba%280%2C0%2C0%2C%2E12%29%2C0%200%206px%200%20rgba%280%2C0%2C0%2C%2E04%29%3Bborder%2Dradius%3A2px%3Bposition%3Aabsolute%3Bwidth%3A180px%3Bleft%3A0%3Bz%2Dindex%3A1000%3B%2Dwebkit%2Duser%2Dselect%3Anone%3B%2Dmoz%2Duser%2Dselect%3Anone%3B%2Dms%2Duser%2Dselect%3Anone%3Buser%2Dselect%3Anone%7D%2Eel%2Dtime%2Dpanel%5F%5Fcontent%7Bfont%2Dsize%3A0%3Bdisplay%3A%2Dms%2Dflexbox%3Bdisplay%3Aflex%3Bposition%3Arelative%3Boverflow%3Ahidden%7D%2Eel%2Dtime%2Dpanel%5F%5Fcontent%3A%3Aafter%2C%2Eel%2Dtime%2Dpanel%5F%5Fcontent%3A%3Abefore%7Bcontent%3A%22%3A%22%3Btop%3A50%25%3Bcolor%3A%23fff%3Bposition%3Aabsolute%3Bfont%2Dsize%3A14px%3Bmargin%2Dtop%3A%2D15px%3Bline%2Dheight%3A16px%3Bbackground%2Dcolor%3A%2320a0ff%3Bheight%3A32px%3Bz%2Dindex%3A%2D1%3Bleft%3A0%3Bright%3A0%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%2Dtop%3A6px%3Btext%2Dalign%3Aleft%7D%2Eel%2Ddate%2Deditor%2C%2Eel%2Ddate%2Deditor%5F%5Feditor%2C%2Eel%2Dtime%2Dpanel%5F%5Ffooter%7Bheight%3A36px%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Dtime%2Dpanel%5F%5Fcontent%3A%3Aafter%7Bleft%3A66%2E66667%25%3Bmargin%2Dleft%3A%2D2px%7D%2Eel%2Dtime%2Dpanel%5F%5Fcontent%3A%3Abefore%7Bpadding%2Dleft%3A33%2E33333%25%3Bmargin%2Dright%3A%2D2px%7D%2Eel%2Dtime%2Dpanel%5F%5Ffooter%7Bborder%2Dtop%3A1px%20solid%20%23e4e4e4%3Bpadding%3A4px%3Bline%2Dheight%3A25px%3Btext%2Dalign%3Aright%7D%2Eel%2Dtime%2Dpanel%5F%5Fbtn%7Bborder%3Anone%3Bline%2Dheight%3A28px%3Bpadding%3A0%205px%3Bmargin%3A0%205px%3Bcursor%3Apointer%3Bbackground%2Dcolor%3Atransparent%3Boutline%3A0%3Bfont%2Dsize%3A12px%3Bcolor%3A%238492a6%7D%2Eel%2Dtime%2Dpanel%5F%5Fbtn%2Econfirm%7Bfont%2Dweight%3A800%3Bcolor%3A%2320a0ff%7D%2Efade%2Din%2Dlinear%2Denter%2Dactive%2C%2Efade%2Din%2Dlinear%2Dleave%2Dactive%7Btransition%3Aopacity%20%2E2s%20linear%7D%2Efade%2Din%2Denter%2Dactive%2C%2Efade%2Din%2Dleave%2Dactive%2C%2Emd%2Dfade%2Dcenter%2Denter%2Dactive%2C%2Emd%2Dfade%2Dcenter%2Dleave%2Dactive%7Btransition%3Aall%20%2E3s%20cubic%2Dbezier%28%2E55%2C0%2C%2E1%2C1%29%7D%2Emd%2Dfade%2Dbottom%2Denter%2Dactive%2C%2Emd%2Dfade%2Dbottom%2Dleave%2Dactive%2C%2Emd%2Dfade%2Dleft%2Denter%2Dactive%2C%2Emd%2Dfade%2Dleft%2Dleave%2Dactive%2C%2Emd%2Dfade%2Dright%2Denter%2Dactive%2C%2Emd%2Dfade%2Dright%2Dleave%2Dactive%2C%2Emd%2Dfade%2Dtop%2Denter%2Dactive%2C%2Emd%2Dfade%2Dtop%2Dleave%2Dactive%7Btransition%3Atransform%20%2E3s%20cubic%2Dbezier%28%2E23%2C1%2C%2E32%2C1%29%20%2E1s%2Copacity%20%2E3s%20cubic%2Dbezier%28%2E23%2C1%2C%2E32%2C1%29%20%2E1s%7D%2Emd%2Dfade%2Dcenter%2Denter%2C%2Emd%2Dfade%2Dcenter%2Dleave%2C%2Emd%2Dfade%2Dcenter%2Dleave%2Dactive%7Bopacity%3A0%3B%2Dms%2Dtransform%3AscaleY%280%29%3Btransform%3AscaleY%280%29%7D%2Emd%2Dfade%2Dbottom%2Denter%2Dactive%2C%2Emd%2Dfade%2Dbottom%2Dleave%2Dactive%7Bopacity%3A1%3B%2Dms%2Dtransform%3AscaleY%281%29%3Btransform%3AscaleY%281%29%3B%2Dms%2Dtransform%2Dorigin%3Acenter%20top%3Btransform%2Dorigin%3Acenter%20top%7D%2Emd%2Dfade%2Dbottom%2Denter%2C%2Emd%2Dfade%2Dbottom%2Dleave%2C%2Emd%2Dfade%2Dbottom%2Dleave%2Dactive%7Bopacity%3A0%3B%2Dms%2Dtransform%3AscaleY%280%29%3Btransform%3AscaleY%280%29%7D%2Emd%2Dfade%2Dtop%2Denter%2Dactive%2C%2Emd%2Dfade%2Dtop%2Dleave%2Dactive%7Bopacity%3A1%3B%2Dms%2Dtransform%3AscaleY%281%29%3Btransform%3AscaleY%281%29%3B%2Dms%2Dtransform%2Dorigin%3Acenter%20bottom%3Btransform%2Dorigin%3Acenter%20bottom%7D%2Emd%2Dfade%2Dtop%2Denter%2C%2Emd%2Dfade%2Dtop%2Dleave%2C%2Emd%2Dfade%2Dtop%2Dleave%2Dactive%7Bopacity%3A0%3B%2Dms%2Dtransform%3AscaleY%280%29%3Btransform%3AscaleY%280%29%7D%2Emd%2Dfade%2Dleft%2Denter%2Dactive%2C%2Emd%2Dfade%2Dleft%2Dleave%2Dactive%7Bopacity%3A1%3B%2Dms%2Dtransform%3AscaleX%281%29%3Btransform%3AscaleX%281%29%3B%2Dms%2Dtransform%2Dorigin%3Aright%20center%3Btransform%2Dorigin%3Aright%20center%7D%2Emd%2Dfade%2Dleft%2Denter%2C%2Emd%2Dfade%2Dleft%2Dleave%2C%2Emd%2Dfade%2Dleft%2Dleave%2Dactive%7Bopacity%3A0%3B%2Dms%2Dtransform%3AscaleX%280%29%3Btransform%3AscaleX%280%29%7D%2Emd%2Dfade%2Dright%2Denter%2Dactive%2C%2Emd%2Dfade%2Dright%2Dleave%2Dactive%7Bopacity%3A1%3B%2Dms%2Dtransform%3AscaleX%281%29%3Btransform%3AscaleX%281%29%3B%2Dms%2Dtransform%2Dorigin%3Aleft%20center%3Btransform%2Dorigin%3Aleft%20center%7D%2Emd%2Dfade%2Dright%2Denter%2C%2Emd%2Dfade%2Dright%2Dleave%2C%2Emd%2Dfade%2Dright%2Dleave%2Dactive%7Bopacity%3A0%3B%2Dms%2Dtransform%3AscaleX%280%29%3Btransform%3AscaleX%280%29%7D%2Efade%2Denter%2Dactive%2C%2Efade%2Dleave%2Dactive%7Btransition%3Aopacity%20%2E3s%20cubic%2Dbezier%28%2E645%2C%2E045%2C%2E355%2C1%29%7D%2Efade%2Denter%2C%2Efade%2Dleave%2Dactive%7Bopacity%3A0%7D%2Elist%2Denter%2Dactive%2C%2Elist%2Dleave%2Dactive%2C%2Elist%2Dmove%7Btransition%3Aall%20%2E5s%20cubic%2Dbezier%28%2E55%2C0%2C%2E1%2C1%29%7D%2Elist%2Denter%2C%2Elist%2Dleave%2Dactive%7Bopacity%3A0%3B%2Dms%2Dtransform%3Atranslate%280%2C%2D30px%29%3Btransform%3Atranslate%280%2C%2D30px%29%7D%2Eel%2Ddate%2Deditor%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%3Bwidth%3A182px%7D%2Eel%2Ddate%2Deditor%20%2Eel%2Dpicker%2Dpanel%7Bposition%3Aabsolute%3Bmin%2Dwidth%3A180px%3Bbox%2Dsizing%3Aborder%2Dbox%3Bbox%2Dshadow%3A0%202px%206px%20%23ccc%3Bbackground%3A%23fff%3Bz%2Dindex%3A10%3Btop%3A41px%7D%2Eel%2Ddate%2Deditor%2Elg%20%2Eel%2Ddate%2Deditor%5F%5Feditor%7Bpadding%3A6px%204px%7D%2Eel%2Ddate%2Deditor%2Esm%20%2Eel%2Ddate%2Deditor%5F%5Feditor%7Bpadding%3A1px%7D%2Eel%2Ddate%2Deditor%2Eis%2Dhave%2Dtrigger%20%2Eel%2Ddate%2Deditor%5F%5Feditor%7Bpadding%2Dright%3A20px%7D%2Eel%2Ddate%2Deditor%2Eis%2Dhave%2Dtrigger%20%2Eel%2Ddate%2Deditor%5F%5Fclear%7Bright%3A22px%7D%2Eel%2Ddate%2Deditor%5F%5Feditor%7Bborder%3A1px%20solid%20%23c0ccda%3Bborder%2Dradius%3A4px%3Bline%2Dheight%3A18px%3Bpadding%3A3px%2010px%3Bwidth%3A100%25%3Btransition%3Aborder%20%2E3s%3Bcolor%3A%23666%3Bfont%2Dsize%3A14px%7D%2Eel%2Ddate%2Deditor%5F%5Feditor%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%23bbb%3Bfont%2Dsize%3A14px%7D%2Eel%2Ddate%2Deditor%5F%5Feditor%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%23bbb%3Bfont%2Dsize%3A14px%7D%2Eel%2Ddate%2Deditor%5F%5Feditor%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%23bbb%3Bfont%2Dsize%3A14px%7D%2Eel%2Ddate%2Deditor%5F%5Feditor%3A%3Aplaceholder%7Bcolor%3A%23bbb%3Bfont%2Dsize%3A14px%7D%2Eel%2Ddate%2Deditor%5F%5Feditor%2Eis%2Ddisabled%7Bbackground%2Dcolor%3A%23EFF2F7%3Bborder%2Dcolor%3A%23D3DCE6%3Bcolor%3A%23bbb%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Ddate%2Deditor%5F%5Feditor%2Eis%2Ddisabled%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Ddate%2Deditor%5F%5Feditor%2Eis%2Ddisabled%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Ddate%2Deditor%5F%5Feditor%2Eis%2Ddisabled%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Ddate%2Deditor%5F%5Feditor%2Eis%2Ddisabled%3A%3Aplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Ddate%2Deditor%5F%5Ftrigger%2Eel%2Dicon%7Bcursor%3Apointer%3Bposition%3Aabsolute%3Bdisplay%3Ainline%2Dblock%3Bwidth%3A16px%3Bright%3A10px%3Btop%3A0%3Bbottom%3A0%3Bcolor%3A%23c0ccda%3Bfont%2Dsize%3A16px%3Bline%2Dheight%3A38px%7D%2Eel%2Ddate%2Deditor%5F%5Fclear%7Bcursor%3Apointer%3Bposition%3Aabsolute%3Bwidth%3A20px%3Bright%3A0%3Btop%3A0%3Bbottom%3A0%3Bline%2Dheight%3A36px%3Bcolor%3A%2399a9bf%7D%2Eel%2Ddate%2Deditor%5F%5Fclear%3Ahover%7Bcolor%3A%2320a0ff%7D%2Eel%2Ddate%2Deditor%2Eis%2Dactive%3E%2Eel%2Ddate%2Deditor%5F%5Feditor%2C%2Eel%2Ddate%2Deditor%3Ahover%3E%2Eel%2Ddate%2Deditor%5F%5Feditor%2C%2Eel%2Ddate%2Deditor%5F%5Feditor%3Afocus%7Boutline%3A0%3Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Ddate%2Deditor%20%2Eel%2Ddate%2Deditor%5F%5Fclear%7Bdisplay%3Anone%7D%2Eel%2Ddate%2Deditor%2Eis%2Dfilled%2Eis%2Dactive%3E%2Eel%2Ddate%2Deditor%5F%5Fclear%2C%2Eel%2Ddate%2Deditor%2Eis%2Dfilled%3Ahover%20%2Eel%2Ddate%2Deditor%5F%5Fclear%7Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dpicker%2Dpanel%7Bcolor%3A%23475669%3Bborder%3A1px%20solid%20%23d3dce6%3Bbox%2Dshadow%3A0%202px%206px%20%23ccc%3Bbackground%3A%23fff%3Bborder%2Dradius%3A2px%3Bline%2Dheight%3A20px%3Bmargin%3A5px%200%7D%2Eel%2Dcard%2C%2Eel%2Dmenu%2D%2Dhorizontal%20%2Eel%2Dsubmenu%3E%2Eel%2Dmenu%2C%2Eel%2Dtabs%2D%2Dborder%2Dcard%7Bbox%2Dshadow%3A0%202px%204px%200%20rgba%280%2C0%2C0%2C%2E12%29%2C0%200%206px%200%20rgba%280%2C0%2C0%2C%2E04%29%7D%2Eel%2Dpicker%2Dpanel%5F%5Fbody%2Dwrapper%3A%3Aafter%2C%2Eel%2Dpicker%2Dpanel%5F%5Fbody%3A%3Aafter%7Bcontent%3A%22%22%3Bdisplay%3Atable%3Bclear%3Aboth%7D%2Eel%2Dpicker%2Dpanel%5F%5Fcontent%7Bposition%3Arelative%3Bmargin%3A15px%7D%2Eel%2Dpicker%2Dpanel%5F%5Ffooter%7Bborder%2Dtop%3A1px%20solid%20%23e4e4e4%3Bpadding%3A4px%3Btext%2Dalign%3Aright%3Bbackground%2Dcolor%3A%23fff%3Bposition%3Arelative%7D%2Eel%2Dpicker%2Dpanel%5F%5Fshortcut%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bborder%3A0%3Bbackground%2Dcolor%3Atransparent%3Bline%2Dheight%3A28px%3Bfont%2Dsize%3A14px%3Bcolor%3A%23475669%3Bpadding%2Dleft%3A12px%3Btext%2Dalign%3Aleft%3Boutline%3A0%3Bcursor%3Apointer%7D%2Eel%2Dpicker%2Dpanel%5F%5Fshortcut%3Ahover%7Bbackground%2Dcolor%3A%23e5e9f2%7D%2Eel%2Dpicker%2Dpanel%5F%5Fshortcut%2Eactive%7Bbackground%2Dcolor%3A%23e6f1fe%3Bcolor%3A%2320a0ff%7D%2Eel%2Dpicker%2Dpanel%5F%5Fbtn%7Bborder%3A1px%20solid%20%23dcdcdc%3Bcolor%3A%23333%3Bline%2Dheight%3A24px%3Bborder%2Dradius%3A2px%3Bpadding%3A0%2020px%3Bcursor%3Apointer%3Bbackground%2Dcolor%3Atransparent%3Boutline%3A0%3Bfont%2Dsize%3A12px%7D%2Eel%2Dpicker%2Dpanel%5F%5Fbtn%5Bdisabled%5D%7Bcolor%3A%23ccc%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dpicker%2Dpanel%5F%5Ficon%2Dbtn%7Bfont%2Dsize%3A12px%3Bcolor%3A%2399a9bf%3Bborder%3A0%3Bbackground%3A0%200%3Bcursor%3Apointer%3Boutline%3A0%3Bmargin%2Dtop%3A3px%7D%2Eel%2Dpicker%2Dpanel%5F%5Ficon%2Dbtn%3Ahover%7Bcolor%3A%2320a0ff%7D%2Eel%2Dpicker%2Dpanel%5F%5Flink%2Dbtn%7Bcursor%3Apointer%3Bcolor%3A%2355a4ff%3Btext%2Ddecoration%3Anone%3Bpadding%3A15px%3Bfont%2Dsize%3A12px%7D%2Eel%2Dpicker%2Dpanel%20%5Bslot%3Dsidebar%5D%2C%2Eel%2Dpicker%2Dpanel%5F%5Fsidebar%7Bposition%3Aabsolute%3Btop%3A0%3Bbottom%3A0%3Bwidth%3A110px%3Bborder%2Dright%3A1px%20solid%20%23e4e4e4%3Bbox%2Dsizing%3Aborder%2Dbox%3Bpadding%2Dtop%3A6px%3Bbackground%2Dcolor%3A%23f9fafc%7D%2Eel%2Dpicker%2Dpanel%20%5Bslot%3Dsidebar%5D%2B%2Eel%2Dpicker%2Dpanel%5F%5Fbody%2C%2Eel%2Dpicker%2Dpanel%5F%5Fsidebar%2B%2Eel%2Dpicker%2Dpanel%5F%5Fbody%7Bmargin%2Dleft%3A110px%7D%2Eel%2Ddate%2Dpicker%7Bmin%2Dwidth%3A254px%7D%2Eel%2Ddate%2Dpicker%20%2Eel%2Dpicker%2Dpanel%5F%5Fcontent%7Bmin%2Dwidth%3A224px%7D%2Eel%2Ddate%2Dpicker%20table%7Btable%2Dlayout%3Afixed%3Bwidth%3A100%25%7D%2Eel%2Ddate%2Dpicker%2Ehas%2Dsidebar%2Ehas%2Dtime%7Bmin%2Dwidth%3A434px%7D%2Eel%2Ddate%2Dpicker%2Ehas%2Dsidebar%7Bmin%2Dwidth%3A370px%7D%2Eel%2Ddate%2Dpicker%2Ehas%2Dtime%7Bmin%2Dwidth%3A324px%7D%2Eel%2Ddate%2Dpicker%5F%5Feditor%2Dwrap%7Bposition%3Arelative%3Bdisplay%3Atable%2Dcell%3Bpadding%3A0%205px%7D%2Eel%2Ddate%2Dpicker%5F%5Feditor%7Bposition%3Arelative%3Bborder%3A1px%20solid%20%23c0ccda%3Bborder%2Dradius%3A4px%3Bpadding%3A5px%2010px%3Bbox%2Dsizing%3Aborder%2Dbox%3Bheight%3A28px%3Bappearance%3Anone%3Btransition%3Aborder%20%2E3s%3Bwidth%3A100%25%7D%2Eel%2Dinput%5F%5Finner%2C%2Eel%2Dtextarea%5F%5Finner%7Bbackground%2Dimage%3Anone%3Btransition%3Aborder%2Dcolor%20%2E2s%20cubic%2Dbezier%28%2E645%2C%2E045%2C%2E355%2C1%29%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Ddate%2Dpicker%5F%5Feditor%3Ahover%7Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Ddate%2Dpicker%5F%5Ftime%2Dheader%7Bposition%3Arelative%3Bborder%2Dbottom%3A1px%20solid%20%23e4e4e4%3Bfont%2Dsize%3A12px%3Bpadding%3A8px%205px%205px%3Bdisplay%3Atable%3Bwidth%3A100%25%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Ddate%2Dpicker%5F%5Fheader%7Bmargin%3A12px%3Btext%2Dalign%3Acenter%7D%2Eel%2Ddate%2Dpicker%5F%5Fheader%2Dlabel%7Bfont%2Dsize%3A14px%3Bpadding%3A0%205px%3Bline%2Dheight%3A22px%3Btext%2Dalign%3Acenter%3Bcursor%3Apointer%7D%2Eel%2Ddate%2Dpicker%5F%5Fheader%2Dlabel%2Eactive%2C%2Eel%2Ddate%2Dpicker%5F%5Fheader%2Dlabel%3Ahover%7Bcolor%3A%2320a0ff%7D%2Eel%2Ddate%2Dpicker%5F%5Fprev%2Dbtn%7Bfloat%3Aleft%7D%2Eel%2Ddate%2Dpicker%5F%5Fnext%2Dbtn%7Bfloat%3Aright%7D%2Eel%2Ddate%2Dpicker%5F%5Ftime%2Dwrap%7Bpadding%3A10px%3Btext%2Dalign%3Acenter%7D%2Eel%2Ddate%2Dpicker%5F%5Ftime%2Dlabel%7Bfloat%3Aleft%3Bcursor%3Apointer%3Bline%2Dheight%3A30px%3Bmargin%2Dleft%3A10px%7D%2Etime%2Dselect%7Bmargin%3A5px%200%3Bmin%2Dwidth%3A0%7D%2Etime%2Dselect%20%2Eel%2Dpicker%2Dpanel%5F%5Fcontent%7Bmax%2Dheight%3A200px%3Boverflow%3Ahidden%3Bmargin%3A0%7D%2Etime%2Dselect%20%2Eel%2Dpicker%2Dpanel%5F%5Fcontent%3Ahover%7Boverflow%2Dy%3Aauto%7D%2Etime%2Dselect%2Ditem%7Bpadding%3A8px%2010px%3Bfont%2Dsize%3A14px%7D%2Etime%2Dselect%2Ditem%2Eselected%3Anot%28%2Edisabled%29%7Bbackground%2Dcolor%3A%2320a0ff%3Bcolor%3A%23fff%7D%2Etime%2Dselect%2Ditem%2Eselected%3Anot%28%2Edisabled%29%3Ahover%7Bbackground%2Dcolor%3A%231d8ce0%7D%2Etime%2Dselect%2Ditem%2Edisabled%7Bcolor%3A%23d3dce6%3Bcursor%3Anot%2Dallowed%7D%2Etime%2Dselect%2Ditem%3Ahover%7Bbackground%2Dcolor%3A%23e5e9f2%3Bcursor%3Apointer%7D%2Eel%2Dinput%7Bposition%3Arelative%3Bfont%2Dsize%3A14px%7D%2Eel%2Dinput%2Eis%2Ddisabled%20%2Eel%2Dinput%5F%5Finner%7Bbackground%2Dcolor%3A%23EFF2F7%3Bborder%2Dcolor%3A%23D3DCE6%3Bcolor%3A%23bbb%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dinput%2Eis%2Ddisabled%20%2Eel%2Dinput%5F%5Finner%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Dinput%2Eis%2Ddisabled%20%2Eel%2Dinput%5F%5Finner%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Dinput%2Eis%2Ddisabled%20%2Eel%2Dinput%5F%5Finner%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Dinput%2Eis%2Ddisabled%20%2Eel%2Dinput%5F%5Finner%3A%3Aplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Dinput%2Eis%2Dactive%20%2Eel%2Dinput%5F%5Finner%7Boutline%3A0%3Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dinput%5F%5Finner%7Bdisplay%3Ablock%3Bpadding%3A3px%2010px%3Bwidth%3A100%25%3Bheight%3A36px%3Bcolor%3A%231f2d3d%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23C0CCDA%3Bborder%2Dradius%3A4px%3Boutline%3A0%3Bfont%2Dsize%3Ainherit%3Bline%2Dheight%3Anormal%7D%2Eel%2Dinput%5F%5Finner%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%2399a9bf%7D%2Eel%2Dinput%5F%5Finner%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%2399a9bf%7D%2Eel%2Dinput%5F%5Finner%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%2399a9bf%7D%2Eel%2Dinput%5F%5Finner%3A%3Aplaceholder%7Bcolor%3A%2399a9bf%7D%2Eel%2Dinput%5F%5Finner%3Ahover%7Bborder%2Dcolor%3A%238492a6%7D%2Eel%2Dinput%5F%5Finner%3Afocus%7Boutline%3A0%3Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dinput%5F%5Ficon%7Bposition%3Aabsolute%3Bwidth%3A35px%3Bheight%3A100%25%3Bright%3A0%3Btop%3A0%3Btext%2Dalign%3Acenter%3Bcolor%3A%23C0CCDA%7D%2Eel%2Dinput%5F%5Ficon%3Aafter%7Bcontent%3A%27%27%3Bheight%3A100%25%3Bwidth%3A0%3Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dinput%5F%5Ficon%2B%2Eel%2Dinput%5F%5Finner%7Bpadding%2Dright%3A35px%7D%2Eel%2Dinput%2D%2Dlarge%7Bfont%2Dsize%3A16px%7D%2Eel%2Dinput%2D%2Dlarge%20%2Eel%2Dinput%5F%5Finner%7Bheight%3A42px%7D%2Eel%2Dinput%2D%2Dsmall%7Bfont%2Dsize%3A13px%7D%2Eel%2Dinput%2D%2Dsmall%20%2Eel%2Dinput%5F%5Finner%7Bheight%3A30px%7D%2Eel%2Dinput%2D%2Dmini%7Bfont%2Dsize%3A12px%7D%2Eel%2Dinput%2D%2Dmini%20%2Eel%2Dinput%5F%5Finner%7Bheight%3A22px%7D%2Eel%2Dinput%2Dgroup%7Bline%2Dheight%3Anormal%3Bdisplay%3Atable%3Bborder%2Dcollapse%3Aseparate%7D%2Eel%2Dinput%2Dgroup%3E%2Eel%2Dinput%5F%5Finner%7Bvertical%2Dalign%3Amiddle%3Bdisplay%3Atable%2Dcell%7D%2Eel%2Dinput%2Dgroup%5F%5Fappend%2C%2Eel%2Dinput%2Dgroup%5F%5Fprepend%7Bbackground%2Dcolor%3A%23f9fafc%3Bcolor%3A%2399a9bf%3Bvertical%2Dalign%3Amiddle%3Bdisplay%3Atable%2Dcell%3Bposition%3Arelative%3Bborder%3A1px%20solid%20%23C0CCDA%3Bborder%2Dradius%3A4px%3Bpadding%3A0%2010px%3Bwidth%3A1%25%3Bwhite%2Dspace%3Anowrap%7D%2Eel%2Dinput%2Dgroup%2D%2Dprepend%20%2Eel%2Dinput%5F%5Finner%2C%2Eel%2Dinput%2Dgroup%5F%5Fappend%7Bborder%2Dtop%2Dleft%2Dradius%3A0%3Bborder%2Dbottom%2Dleft%2Dradius%3A0%7D%2Eel%2Dinput%2Dgroup%2D%2Dappend%20%2Eel%2Dinput%5F%5Finner%2C%2Eel%2Dinput%2Dgroup%5F%5Fprepend%7Bborder%2Dtop%2Dright%2Dradius%3A0%3Bborder%2Dbottom%2Dright%2Dradius%3A0%7D%2Eel%2Dinput%2Dgroup%5F%5Fappend%20%2Eel%2Dbutton%2C%2Eel%2Dinput%2Dgroup%5F%5Fappend%20%2Eel%2Dselect%2C%2Eel%2Dinput%2Dgroup%5F%5Fprepend%20%2Eel%2Dbutton%2C%2Eel%2Dinput%2Dgroup%5F%5Fprepend%20%2Eel%2Dselect%7Bdisplay%3Ablock%3Bmargin%3A%2D10px%7D%2Eel%2Dinput%2Dgroup%5F%5Fappend%20%2Eel%2Dbutton%2C%2Eel%2Dinput%2Dgroup%5F%5Fappend%20%2Eel%2Dselect%20%2Eel%2Dinput%5F%5Finner%2C%2Eel%2Dinput%2Dgroup%5F%5Fappend%20%2Eel%2Dselect%3Ahover%20%2Eel%2Dinput%5F%5Finner%2C%2Eel%2Dinput%2Dgroup%5F%5Fprepend%20%2Eel%2Dbutton%2C%2Eel%2Dinput%2Dgroup%5F%5Fprepend%20%2Eel%2Dselect%20%2Eel%2Dinput%5F%5Finner%2C%2Eel%2Dinput%2Dgroup%5F%5Fprepend%20%2Eel%2Dselect%3Ahover%20%2Eel%2Dinput%5F%5Finner%7Bborder%2Dcolor%3Atransparent%3Bbackground%2Dcolor%3Atransparent%3Bcolor%3Ainherit%3Bborder%2Dtop%3A0%3Bborder%2Dbottom%3A0%7D%2Eel%2Dinput%2Dgroup%5F%5Fappend%20%2Eel%2Dbutton%2C%2Eel%2Dinput%2Dgroup%5F%5Fappend%20%2Eel%2Dinput%2C%2Eel%2Dinput%2Dgroup%5F%5Fprepend%20%2Eel%2Dbutton%2C%2Eel%2Dinput%2Dgroup%5F%5Fprepend%20%2Eel%2Dinput%7Bfont%2Dsize%3Ainherit%7D%2Eel%2Dinput%2Dgroup%5F%5Fprepend%7Bborder%2Dright%3A0%7D%2Eel%2Dinput%2Dgroup%5F%5Fappend%7Bborder%2Dleft%3A0%7D%2Eel%2Dtextarea%2Eis%2Ddisabled%20%2Eel%2Dtextarea%5F%5Finner%7Bbackground%2Dcolor%3A%23EFF2F7%3Bborder%2Dcolor%3A%23D3DCE6%3Bcolor%3A%23bbb%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dtextarea%2Eis%2Ddisabled%20%2Eel%2Dtextarea%5F%5Finner%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Dtextarea%2Eis%2Ddisabled%20%2Eel%2Dtextarea%5F%5Finner%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Dtextarea%2Eis%2Ddisabled%20%2Eel%2Dtextarea%5F%5Finner%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Dtextarea%2Eis%2Ddisabled%20%2Eel%2Dtextarea%5F%5Finner%3A%3Aplaceholder%7Bcolor%3A%23C0CCDA%7D%2Eel%2Dtextarea%5F%5Finner%7Bdisplay%3Ablock%3Bresize%3Avertical%3Bpadding%3A5px%207px%3Bline%2Dheight%3A1%2E5%3Bwidth%3A100%25%3Bfont%2Dsize%3A14px%3Bcolor%3A%231f2d3d%3Bbackground%2Dcolor%3A%23fff%3Bborder%3A1px%20solid%20%23C0CCDA%3Bborder%2Dradius%3A4px%7D%2Eel%2Dtextarea%5F%5Finner%3A%3A%2Dwebkit%2Dinput%2Dplaceholder%7Bcolor%3A%2399a9bf%7D%2Eel%2Dtextarea%5F%5Finner%3A%3A%2Dmoz%2Dplaceholder%7Bcolor%3A%2399a9bf%7D%2Eel%2Dtextarea%5F%5Finner%3A%2Dms%2Dinput%2Dplaceholder%7Bcolor%3A%2399a9bf%7D%2Eel%2Dtextarea%5F%5Finner%3A%3Aplaceholder%7Bcolor%3A%2399a9bf%7D%2Eel%2Dtextarea%5F%5Finner%3Ahover%7Bborder%2Dcolor%3A%238492a6%7D%2Eel%2Dtextarea%5F%5Finner%3Afocus%7Boutline%3A0%3Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dinput%2Dnumber%7Bdisplay%3Ainline%2Dblock%3Boverflow%3Ahidden%3Bwidth%3A180px%3Bposition%3Arelative%7D%2Eel%2Dinput%2Dnumber%20%2Eel%2Dinput%5F%5Finner%7B%2Dwebkit%2Dappearance%3Anone%3B%2Dmoz%2Dappearance%3Anone%3Bappearance%3Anone%3Bpadding%2Dright%3A82px%7D%2Eel%2Dinput%2Dnumber%2Eis%2Dwithout%2Dcontrols%20%2Eel%2Dinput%5F%5Finner%7Bpadding%2Dright%3A10px%7D%2Eel%2Dinput%2Dnumber%2Eis%2Ddisabled%20%2Eel%2Dinput%2Dnumber%5F%5Fdecrease%2C%2Eel%2Dinput%2Dnumber%2Eis%2Ddisabled%20%2Eel%2Dinput%2Dnumber%5F%5Fincrease%7Bborder%2Dcolor%3A%23D3DCE6%3Bcolor%3A%23D3DCE6%7D%2Eel%2Dinput%2Dnumber%2Eis%2Ddisabled%20%2Eel%2Dinput%2Dnumber%5F%5Fdecrease%3Ahover%2C%2Eel%2Dinput%2Dnumber%2Eis%2Ddisabled%20%2Eel%2Dinput%2Dnumber%5F%5Fincrease%3Ahover%7Bcolor%3A%23D3DCE6%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dinput%2Dnumber%5F%5Fdecrease%2C%2Eel%2Dinput%2Dnumber%5F%5Fincrease%7Bheight%3Aauto%3Bborder%2Dleft%3A1px%20solid%20%23C0CCDA%3Bwidth%3A36px%3Bline%2Dheight%3A34px%3Btop%3A1px%3Btext%2Dalign%3Acenter%3Bcolor%3A%2399A9BF%3Bcursor%3Apointer%3Bposition%3Aabsolute%7D%2Eel%2Dinput%2Dnumber%5F%5Fdecrease%3Ahover%2C%2Eel%2Dinput%2Dnumber%5F%5Fincrease%3Ahover%7Bcolor%3A%2320a0ff%7D%2Eel%2Dinput%2Dnumber%5F%5Fdecrease%2Eis%2Ddisabled%2C%2Eel%2Dinput%2Dnumber%5F%5Fincrease%2Eis%2Ddisabled%7Bcolor%3A%23D3DCE6%3Bcursor%3Anot%2Dallowed%7D%2Eel%2Dinput%2Dnumber%5F%5Fincrease%7Bright%3A0%7D%2Eel%2Dinput%2Dnumber%5F%5Fdecrease%7Bright%3A37px%7D%2Eel%2Dinput%2Dnumber%2D%2Dlarge%7Bwidth%3A200px%7D%2Eel%2Dinput%2Dnumber%2D%2Dlarge%20%2Eel%2Dinput%2Dnumber%5F%5Fdecrease%2C%2Eel%2Dinput%2Dnumber%2D%2Dlarge%20%2Eel%2Dinput%2Dnumber%5F%5Fincrease%7Bline%2Dheight%3A42px%3Bwidth%3A42px%3Bfont%2Dsize%3A16px%7D%2Eel%2Dinput%2Dnumber%2D%2Dlarge%20%2Eel%2Dinput%2Dnumber%5F%5Fdecrease%7Bright%3A43px%7D%2Eel%2Dinput%2Dnumber%2D%2Dlarge%20%2Eel%2Dinput%5F%5Finner%7Bpadding%2Dright%3A94px%7D%2Eel%2Dinput%2Dnumber%2D%2Dsmall%7Bwidth%3A130px%7D%2Eel%2Dinput%2Dnumber%2D%2Dsmall%20%2Eel%2Dinput%2Dnumber%5F%5Fdecrease%2C%2Eel%2Dinput%2Dnumber%2D%2Dsmall%20%2Eel%2Dinput%2Dnumber%5F%5Fincrease%7Bline%2Dheight%3A30px%3Bwidth%3A30px%3Bfont%2Dsize%3A13px%7D%2Eel%2Dinput%2Dnumber%2D%2Dsmall%20%2Eel%2Dinput%2Dnumber%5F%5Fdecrease%7Bright%3A31px%7D%2Eel%2Dinput%2Dnumber%2D%2Dsmall%20%2Eel%2Dinput%5F%5Finner%7Bpadding%2Dright%3A70px%7D%2Eel%2Dtag%7Bbackground%2Dcolor%3A%238492a6%3Bdisplay%3Ainline%2Dblock%3Bpadding%3A0%205px%3Bheight%3A22px%3Bline%2Dheight%3A22px%3Bfont%2Dsize%3A12px%3Bcolor%3A%23fff%3Bborder%2Dradius%3A4px%3Bborder%3A1px%20solid%20%238492a6%7D%2Eel%2Dtag%20%2Eel%2Dicon%2Dclose%7Bborder%2Dradius%3A50%25%3Btext%2Dalign%3Acenter%3Bposition%3Arelative%3Bcursor%3Apointer%3Bfont%2Dsize%3A12px%3B%2Dms%2Dtransform%3Ascale%28%2E75%2C%2E75%29%3Btransform%3Ascale%28%2E75%2C%2E75%29%3Bheight%3A18px%3Bwidth%3A18px%3Bline%2Dheight%3A18px%3Bvertical%2Dalign%3Amiddle%3Btop%3A%2D1px%3Bright%3A%2D2px%7D%2Eel%2Dtag%20%2Eel%2Dicon%2Dclose%3Ahover%7Bbackground%2Dcolor%3A%23fff%3Bcolor%3A%238492a6%7D%2Eel%2Dtag%2D%2Dgray%7Bbackground%2Dcolor%3A%23e5e9f2%3Bborder%2Dcolor%3A%23e5e9f2%3Bcolor%3A%23475669%7D%2Eel%2Dtag%2D%2Dgray%20%2Eel%2Dtag%5F%5Fclose%3Ahover%7Bbackground%2Dcolor%3A%23475669%3Bcolor%3A%23fff%7D%2Eel%2Dtag%2D%2Dgray%2Eis%2Dhit%7Bborder%2Dcolor%3A%23475669%7D%2Eel%2Dtag%2D%2Dprimary%7Bbackground%2Dcolor%3Argba%2832%2C159%2C255%2C%2E1%29%3Bborder%2Dcolor%3Argba%2832%2C159%2C255%2C%2E2%29%3Bcolor%3A%2320a0ff%7D%2Eel%2Dtag%2D%2Dprimary%20%2Eel%2Dtag%5F%5Fclose%3Ahover%7Bbackground%2Dcolor%3A%2320a0ff%3Bcolor%3A%23fff%7D%2Eel%2Dtag%2D%2Dprimary%2Eis%2Dhit%7Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dtag%2D%2Dsuccess%7Bbackground%2Dcolor%3Argba%2818%2C206%2C102%2C%2E1%29%3Bborder%2Dcolor%3Argba%2818%2C206%2C102%2C%2E2%29%3Bcolor%3A%2313ce66%7D%2Eel%2Dtag%2D%2Dsuccess%20%2Eel%2Dtag%5F%5Fclose%3Ahover%7Bbackground%2Dcolor%3A%2313ce66%3Bcolor%3A%23fff%7D%2Eel%2Dtag%2D%2Dsuccess%2Eis%2Dhit%7Bborder%2Dcolor%3A%2313ce66%7D%2Eel%2Dtag%2D%2Dwarning%7Bbackground%2Dcolor%3Argba%28247%2C186%2C41%2C%2E1%29%3Bborder%2Dcolor%3Argba%28247%2C186%2C41%2C%2E2%29%3Bcolor%3A%23f7ba2a%7D%2Eel%2Dtag%2D%2Dwarning%20%2Eel%2Dtag%5F%5Fclose%3Ahover%7Bbackground%2Dcolor%3A%23f7ba2a%3Bcolor%3A%23fff%7D%2Eel%2Dtag%2D%2Dwarning%2Eis%2Dhit%7Bborder%2Dcolor%3A%23f7ba2a%7D%2Eel%2Dtag%2D%2Ddanger%7Bbackground%2Dcolor%3Argba%28255%2C73%2C73%2C%2E1%29%3Bborder%2Dcolor%3Argba%28255%2C73%2C73%2C%2E2%29%3Bcolor%3A%23ff4949%7D%2Eel%2Dform%2Ditem%2Eis%2Derror%20%2Eel%2Dinput%5F%5Finner%2C%2Eel%2Dform%2Ditem%2Eis%2Derror%20%2Eel%2Dtextarea%5F%5Finner%2C%2Eel%2Dtag%2D%2Ddanger%2Eis%2Dhit%7Bborder%2Dcolor%3A%23ff4949%7D%2Eel%2Dtag%2D%2Ddanger%20%2Eel%2Dtag%5F%5Fclose%3Ahover%7Bbackground%2Dcolor%3A%23ff4949%3Bcolor%3A%23fff%7D%2Eel%2Dbreadcrumb%7Bfont%2Dsize%3A13px%3Bline%2Dheight%3A1%7D%2Eel%2Dbreadcrumb%5F%5Fseparator%7Bmargin%3A0%208px%3Bcolor%3A%23c0ccda%7D%2Eel%2Dbreadcrumb%5F%5Fitem%7Bfloat%3Aleft%7D%2Eel%2Dbreadcrumb%5F%5Fitem%3Alast%2Dchild%20%2Eel%2Dbreadcrumb%5F%5Fitem%5F%5Finner%2C%2Eel%2Dbreadcrumb%5F%5Fitem%3Alast%2Dchild%20%2Eel%2Dbreadcrumb%5F%5Fitem%5F%5Finner%20a%2C%2Eel%2Dbreadcrumb%5F%5Fitem%3Alast%2Dchild%20%2Eel%2Dbreadcrumb%5F%5Fitem%5F%5Finner%20a%3Ahover%2C%2Eel%2Dbreadcrumb%5F%5Fitem%3Alast%2Dchild%20%2Eel%2Dbreadcrumb%5F%5Fitem%5F%5Finner%3Ahover%7Bcolor%3A%2399a9bf%3Bcursor%3Atext%7D%2Eel%2Dbreadcrumb%5F%5Fitem%3Alast%2Dchild%20%2Eel%2Dbreadcrumb%5F%5Fseparator%7Bdisplay%3Anone%7D%2Eel%2Dbreadcrumb%5F%5Fitem%5F%5Finner%2C%2Eel%2Dbreadcrumb%5F%5Fitem%5F%5Finner%20a%7Btransition%3Acolor%20%2E15s%20linear%3Bcolor%3A%23475669%7D%2Eel%2Dbreadcrumb%5F%5Fitem%5F%5Finner%20a%3Ahover%2C%2Eel%2Dbreadcrumb%5F%5Fitem%5F%5Finner%3Ahover%7Bcolor%3A%2320a0ff%3Bcursor%3Apointer%7D%2Eel%2Dform%2D%2Dlabel%2Dleft%20%2Eel%2Dform%2Ditem%5F%5Flabel%7Btext%2Dalign%3Aleft%7D%2Eel%2Dform%2D%2Dlabel%2Dtop%20%2Eel%2Dform%2Ditem%5F%5Flabel%7Bfloat%3Anone%3Bdisplay%3Ainline%2Dblock%3Bpadding%3A0%200%2010px%7D%2Eel%2Dform%2D%2Dinline%20%2Eel%2Dform%2Ditem%7Bdisplay%3Ainline%2Dblock%3Bmargin%2Dright%3A10px%3Bvertical%2Dalign%3Atop%7D%2Eel%2Dform%2Ditem%7Bmargin%2Dbottom%3A22px%7D%2Eel%2Dform%2Ditem%20%2Eel%2Dform%2Ditem%7Bmargin%2Dbottom%3A0%7D%2Eel%2Dform%2Ditem%20%2Eel%2Dform%2Ditem%20%2Eel%2Dform%2Ditem%5F%5Fcontent%7Bmargin%2Dleft%3A0%21important%7D%2Eel%2Dform%2Ditem%2Eis%2Drequired%20%2Eel%2Dform%2Ditem%5F%5Flabel%3Abefore%7Bcontent%3A%27%2A%27%3Bcolor%3A%23ff4949%3Bmargin%2Dright%3A4px%7D%2Eel%2Ddragger%5F%5Fcover%3Aafter%2C%2Eel%2Dmenu%3Aafter%2C%2Eel%2Dmenu%3Abefore%2C%2Eel%2Dprogress%2Dbar%5F%5Finner%3Aafter%2C%2Eel%2Drow%3Aafter%2C%2Eel%2Drow%3Abefore%7Bcontent%3A%22%22%7D%2Eel%2Dform%2Ditem%5F%5Flabel%7Btext%2Dalign%3Aright%3Bvertical%2Dalign%3Amiddle%3Bfloat%3Aleft%3Bfont%2Dsize%3A14px%3Bcolor%3A%235e6d82%3Bline%2Dheight%3A1%3Bpadding%3A11px%2012px%2011px%200%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Dform%2Ditem%5F%5Fcontent%7Bline%2Dheight%3A36px%3Bposition%3Arelative%3Bfont%2Dsize%3A14px%7D%2Eel%2Dform%2Ditem%5F%5Ferror%7Bcolor%3A%23ff4949%3Bfont%2Dsize%3A12px%3Bline%2Dheight%3A1%3Bpadding%2Dtop%3A4px%3Bposition%3Aabsolute%3Btop%3A100%25%3Bleft%3A0%7D%2Eel%2Dtabs%7Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dtabs%5F%5Fheader%7Bborder%2Dbottom%3A1px%20solid%20%23d3dce6%3Bpadding%3A0%3Bposition%3Arelative%3Bmargin%3A0%200%2015px%7D%2Eel%2Dtabs%5F%5Fheader%3Aafter%2C%2Eel%2Dtabs%5F%5Fheader%3Abefore%7Bdisplay%3Atable%3Bcontent%3A%22%22%7D%2Eel%2Dtabs%5F%5Factive%2Dbar%7Bposition%3Aabsolute%3Bbottom%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A3px%3Bbackground%2Dcolor%3A%2320a0ff%3Bz%2Dindex%3A1%3Btransition%3Atransform%20%2E3s%20cubic%2Dbezier%28%2E645%2C%2E045%2C%2E355%2C1%29%3Blist%2Dstyle%3Anone%7D%2Eel%2Dtabs%2D%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%2Eis%2Dactive%2Eis%2Dclosable%20%2Eel%2Dicon%2Dclose%2C%2Eel%2Dtabs%2D%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%2Eis%2Dclosable%3Ahover%20%2Eel%2Dicon%2Dclose%7Bwidth%3A14px%7D%2Eel%2Dtabs%2D%2Dborder%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%2C%2Eel%2Dtabs%2D%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%2C%2Eel%2Dtabs%5F%5Fitem%20%2Eel%2Dicon%2Dclose%7Btransition%3Aall%20%2E3s%20cubic%2Dbezier%28%2E645%2C%2E045%2C%2E355%2C1%29%7D%2Eel%2Dtabs%5F%5Fitem%7Bpadding%3A0%2016px%3Bheight%3A42px%3Bbox%2Dsizing%3Aborder%2Dbox%3Bline%2Dheight%3A42px%3Bfloat%3Aleft%3Blist%2Dstyle%3Anone%3Bfont%2Dsize%3A14px%3Bcolor%3A%238492a6%3Bmargin%2Dbottom%3A%2D1px%3Bposition%3Arelative%7D%2Eel%2Dtabs%5F%5Fitem%20%2Eel%2Dicon%2Dclose%7Bborder%2Dradius%3A50%25%3Btext%2Dalign%3Acenter%3Bmargin%2Dleft%3A5px%7D%2Eel%2Dtabs%5F%5Fitem%20%2Eel%2Dicon%2Dclose%3Abefore%7B%2Dms%2Dtransform%3Ascale%28%2E7%2C%2E7%29%3Btransform%3Ascale%28%2E7%2C%2E7%29%3Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dtabs%5F%5Fitem%20%2Eel%2Dicon%2Dclose%3Ahover%7Bbackground%2Dcolor%3A%2399a9bf%3Bcolor%3A%23fff%7D%2Eel%2Dtabs%5F%5Fitem%3Ahover%7Bcolor%3A%231f2d3d%3Bcursor%3Apointer%7D%2Eel%2Dtabs%5F%5Fitem%2Eis%2Dactive%7Bcolor%3A%2320a0ff%7D%2Eel%2Dtabs%5F%5Fcontent%7Boverflow%3Ahidden%3Bposition%3Arelative%7D%2Eel%2Dtabs%2D%2Dcard%20%2Eel%2Dtabs%5F%5Factive%2Dbar%7Bdisplay%3Anone%7D%2Eel%2Dtab%2Dpane%2C%2EslideInLeft%2Dtransition%2C%2EslideInRight%2Dtransition%7Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dtabs%2D%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%7Bborder%3A1px%20solid%20transparent%7D%2Eel%2Dtabs%2D%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%2Eis%2Dclosable%3Ahover%7Bpadding%2Dright%3A9px%3Bpadding%2Dleft%3A9px%7D%2Eel%2Dtabs%2D%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%2Eis%2Dactive%7Bborder%3A1px%20solid%20%23d3dce6%3Bborder%2Dbottom%2Dcolor%3A%23fff%3Bborder%2Dradius%3A4px%204px%200%200%7D%2Eel%2Dtabs%2D%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%2Eis%2Dactive%2Eis%2Dclosable%7Bpadding%2Dright%3A16px%3Bpadding%2Dleft%3A16px%7D%2Eel%2Dtabs%2D%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%20%2Eel%2Dicon%2Dclose%7Bposition%3Arelative%3Bfont%2Dsize%3A12px%3Bwidth%3A0%3Bheight%3A14px%3Bvertical%2Dalign%3Amiddle%3Bline%2Dheight%3A15px%3Boverflow%3Ahidden%3Btop%3A%2D1px%3Bright%3A%2D2px%3B%2Dms%2Dtransform%2Dorigin%3A100%25%2050%25%3Btransform%2Dorigin%3A100%25%2050%25%7D%2Eel%2Dtabs%2D%2Dborder%2Dcard%7Bbackground%3A%23fff%3Bborder%3A1px%20solid%20%23d3dce6%7D%2Eel%2Dtabs%2D%2Dborder%2Dcard%20%2Eel%2Dtabs%5F%5Fcontent%7Bpadding%3A15px%7D%2Eel%2Dtabs%2D%2Dborder%2Dcard%20%2Eel%2Dtabs%5F%5Fheader%7Bbackground%2Dcolor%3A%23eff2f7%3Bmargin%3A0%7D%2Eel%2Dtabs%2D%2Dborder%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%7Bborder%3A1px%20solid%20transparent%3Bborder%2Dtop%3A0%3Bmargin%2Dright%3A%2D1px%3Bmargin%2Dleft%3A%2D1px%7D%2Eel%2Dtabs%2D%2Dborder%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%2Eis%2Dactive%7Bbackground%2Dcolor%3A%23fff%3Bborder%2Dright%2Dcolor%3A%23d3dce6%3Bborder%2Dleft%2Dcolor%3A%23d3dce6%7D%2Eel%2Dtabs%2D%2Dborder%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%2Eis%2Dactive%3Afirst%2Dchild%7Bborder%2Dleft%2Dcolor%3A%23d3dce6%7D%2Eel%2Dtabs%2D%2Dborder%2Dcard%20%2Eel%2Dtabs%5F%5Fitem%2Eis%2Dactive%3Alast%2Dchild%7Bborder%2Dright%2Dcolor%3A%23d3dce6%7D%2Eel%2Dtab%2Dpane%7Bwidth%3A100%25%7D%2EslideInRight%2Denter%7Banimation%3AslideInRight%2Denter%20%2E3s%7D%2EslideInRight%2Dleave%7Bposition%3Aabsolute%3Bleft%3A0%3Bright%3A0%3Banimation%3AslideInRight%2Dleave%20%2E3s%7D%2EslideInLeft%2Denter%7Banimation%3AslideInLeft%2Denter%20%2E3s%7D%2EslideInLeft%2Dleave%7Bposition%3Aabsolute%3Bleft%3A0%3Bright%3A0%3Banimation%3AslideInLeft%2Dleave%20%2E3s%7D%40keyframes%20slideInRight%2Denter%7B0%25%7Bopacity%3A0%3Btransform%2Dorigin%3A0%200%3Btransform%3AtranslateX%28100%25%29%7Dto%7Bopacity%3A1%3Btransform%2Dorigin%3A0%200%3Btransform%3AtranslateX%280%29%7D%7D%40keyframes%20slideInRight%2Dleave%7B0%25%7Btransform%2Dorigin%3A0%200%3Btransform%3AtranslateX%280%29%3Bopacity%3A1%7D100%25%7Btransform%2Dorigin%3A0%200%3Btransform%3AtranslateX%28100%25%29%3Bopacity%3A0%7D%7D%40keyframes%20slideInLeft%2Denter%7B0%25%7Bopacity%3A0%3Btransform%2Dorigin%3A0%200%3Btransform%3AtranslateX%28%2D100%25%29%7Dto%7Bopacity%3A1%3Btransform%2Dorigin%3A0%200%3Btransform%3AtranslateX%280%29%7D%7D%40keyframes%20slideInLeft%2Dleave%7B0%25%7Btransform%2Dorigin%3A0%200%3Btransform%3AtranslateX%280%29%3Bopacity%3A1%7D100%25%7Btransform%2Dorigin%3A0%200%3Btransform%3AtranslateX%28%2D100%25%29%3Bopacity%3A0%7D%7D%2Eel%2Dprogress%2Dbar%5F%5Finner%3Aafter%7Bdisplay%3Ainline%2Dblock%3Bheight%3A100%25%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dtree%7Bcursor%3Adefault%3Bbackground%3A%23fff%3Bborder%3A1px%20solid%20%23d3dce6%7D%2Eel%2Dtree%5F%5Fempty%2Dblock%7Bposition%3Arelative%3Bmin%2Dheight%3A60px%3Btext%2Dalign%3Acenter%3Bwidth%3A100%25%3Bheight%3A100%25%7D%2Eel%2Dtree%5F%5Fempty%2Dtext%7Bposition%3Aabsolute%3Bleft%3A50%25%3Btop%3A50%25%3B%2Dms%2Dtransform%3Atranslate%28%2D50%25%2C%2D50%25%29%3Btransform%3Atranslate%28%2D50%25%2C%2D50%25%29%3Bcolor%3A%235e6d82%7D%2Eel%2Dtree%2Dnode%7Bwhite%2Dspace%3Anowrap%7D%2Eel%2Dtree%2Dnode%3E%2Eel%2Dtree%2Dnode%5F%5Fchildren%7Boverflow%3Ahidden%3Bbackground%2Dcolor%3Atransparent%3Bdisplay%3Anone%7D%2Eel%2Dtree%2Dnode%2Eis%2Dexpanded%3E%2Eel%2Dtree%2Dnode%5F%5Fchildren%7Bdisplay%3Ablock%7D%2Eel%2Dtree%2Dnode%5F%5Fexpand%2Dicon%2C%2Eel%2Dtree%2Dnode%5F%5Flabel%2C%2Eel%2Dtree%2Dnode%5F%5Floading%2Dicon%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dtree%2Dnode%5F%5Fcontent%7Bline%2Dheight%3A36px%3Bheight%3A36px%3Bcursor%3Apointer%7D%2Eel%2Dtree%2Dnode%5F%5Fcontent%3E%2Eel%2Dcheckbox%2C%2Eel%2Dtree%2Dnode%5F%5Fcontent%3E%2Eel%2Dtree%2Dnode%5F%5Fexpand%2Dicon%7Bmargin%2Dright%3A8px%7D%2Eel%2Dtree%2Dnode%5F%5Fcontent%3E%2Eel%2Dcheckbox%7Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dtree%2Dnode%5F%5Fcontent%3Ahover%7Bbackground%3A%23e5e9f2%7D%2Eel%2Dtree%2Dnode%5F%5Fexpand%2Dicon%7Bcursor%3Apointer%3Bwidth%3A0%3Bheight%3A0%3Bmargin%2Dleft%3A10px%3Bborder%3A6px%20solid%20transparent%3Bborder%2Dright%2Dwidth%3A0%3Bborder%2Dleft%2Dcolor%3A%2399a9bf%3Bborder%2Dleft%2Dwidth%3A7px%3B%2Dms%2Dtransform%3Arotate%280%29%3Btransform%3Arotate%280%29%3Btransition%3Atransform%20%2E3s%20ease%2Din%2Dout%7D%2Eel%2Dtree%2Dnode%5F%5Fexpand%2Dicon%3Ahover%7Bborder%2Dleft%2Dcolor%3A%23999%7D%2Eel%2Dtree%2Dnode%5F%5Fexpand%2Dicon%2Eexpanded%7B%2Dms%2Dtransform%3Arotate%2890deg%29%3Btransform%3Arotate%2890deg%29%7D%2Eel%2Dtree%2Dnode%5F%5Fexpand%2Dicon%2Eis%2Dleaf%7Bborder%2Dcolor%3Atransparent%3Bcursor%3Adefault%7D%2Eel%2Dtree%2Dnode%5F%5Flabel%7Bfont%2Dsize%3A14px%7D%2Eel%2Dtree%2Dnode%5F%5Floading%2Dicon%7Bmargin%2Dright%3A4px%3Bfont%2Dsize%3A14px%3Bcolor%3A%2399a9bf%7D%2Eel%2Dtree%2D%2Dhighlight%2Dcurrent%20%2Eel%2Dtree%2Dnode%2Eis%2Dcurrent%3E%2Eel%2Dtree%2Dnode%5F%5Fcontent%7Bbackground%2Dcolor%3A%23eff7ff%7D%2Ecollapse%2Dtransition%7Btransition%3A%2E3s%20height%20ease%2Din%2Dout%2C%2E3s%20padding%2Dtop%20ease%2Din%2Dout%2C%2E3s%20padding%2Dbottom%20ease%2Din%2Dout%7D%2Eel%2Dmenu%2Ditem%2C%2Eel%2Dsubmenu%5F%5Ftitle%7Bheight%3A56px%3Bline%2Dheight%3A56px%3Bfont%2Dsize%3A14px%3Bcolor%3A%23475669%3Bpadding%3A0%2020px%3Bcursor%3Apointer%3Bposition%3Arelative%3Btransition%3Aborder%2Dcolor%20%2E3s%2Cbackground%2Dcolor%20%2E3s%2Ccolor%20%2E3s%3Bbox%2Dsizing%3Aborder%2Dbox%3Bwhite%2Dspace%3Anowrap%7D%2Eel%2Dmenu%7Bborder%2Dradius%3A2px%3Blist%2Dstyle%3Anone%3Bposition%3Arelative%3Bmargin%3A0%3Bpadding%2Dleft%3A0%3Bbackground%2Dcolor%3A%23eff2f7%7D%2Eel%2Dmenu%3Aafter%2C%2Eel%2Dmenu%3Abefore%7Bdisplay%3Atable%7D%2Eel%2Dmenu%20li%7Blist%2Dstyle%3Anone%7D%2Eel%2Dmenu%2D%2Ddark%7Bbackground%2Dcolor%3A%23324057%7D%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dmenu%2Ditem%2C%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dsubmenu%5F%5Ftitle%7Bcolor%3A%23c0ccda%7D%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dmenu%2Ditem%3Ahover%2C%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dsubmenu%5F%5Ftitle%3Ahover%7Bbackground%2Dcolor%3A%23475669%7D%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dsubmenu%20%2Eel%2Dmenu%7Bbackground%2Dcolor%3A%231f2f3d%7D%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dsubmenu%20%2Eel%2Dmenu%20%2Eel%2Dmenu%2Ditem%3Ahover%7Bbackground%2Dcolor%3A%23475669%7D%2Eel%2Dmenu%2D%2Dhorizontal%20%2Eel%2Dmenu%2Ditem%7Bfloat%3Aleft%3Bheight%3A60px%3Bline%2Dheight%3A60px%3Bmargin%3A0%3Bcursor%3Apointer%3Bposition%3Arelative%3Bbox%2Dsizing%3Aborder%2Dbox%3Bborder%2Dbottom%3A5px%20solid%20transparent%7D%2Eel%2Dmenu%2D%2Dhorizontal%20%2Eel%2Dsubmenu%7Bfloat%3Aleft%3Bposition%3Arelative%7D%2Eel%2Dmenu%2D%2Dhorizontal%20%2Eel%2Dsubmenu%3E%2Eel%2Dmenu%7Bposition%3Aabsolute%3Btop%3A65px%3Bleft%3A0%3Bborder%3A1px%20solid%20%23d3dce6%3Bpadding%3A5px%200%3Bbackground%2Dcolor%3A%23fff%3Bz%2Dindex%3A100%3Bmin%2Dwidth%3A100%25%7D%2Eel%2Dmenu%2D%2Dhorizontal%20%2Eel%2Dsubmenu%20%2Eel%2Dsubmenu%5F%5Ftitle%7Bheight%3A60px%3Bline%2Dheight%3A60px%3Bborder%2Dbottom%3A5px%20solid%20transparent%7D%2Eel%2Dmenu%2D%2Dhorizontal%20%2Eel%2Dsubmenu%20%2Eel%2Dmenu%2Ditem%7Bbackground%2Dcolor%3A%23fff%3Bfloat%3Anone%3Bheight%3A36px%3Bline%2Dheight%3A36px%3Bpadding%3A0%2010px%7D%2Eel%2Dmenu%2D%2Dhorizontal%20%2Eel%2Dsubmenu%20%2Eel%2Dsubmenu%5F%5Ficon%2Darrow%7Bposition%3Astatic%3Bvertical%2Dalign%3Amiddle%3Bmargin%2Dleft%3A5px%3Bcolor%3A%2399a9bf%3Bmargin%2Dtop%3A%2D3px%7D%2Eel%2Dmenu%2D%2Dhorizontal%20%2Eel%2Dmenu%2Ditem%3Ahover%2C%2Eel%2Dmenu%2D%2Dhorizontal%20%2Eel%2Dsubmenu%5F%5Ftitle%3Ahover%7Bbackground%2Dcolor%3A%23eff2f7%7D%2Eel%2Dmenu%2D%2Dhorizontal%3E%2Eel%2Dmenu%2Ditem%3Ahover%2C%2Eel%2Dmenu%2D%2Dhorizontal%3E%2Eel%2Dsubmenu%2Eis%2Dactive%20%2Eel%2Dsubmenu%5F%5Ftitle%2C%2Eel%2Dmenu%2D%2Dhorizontal%3E%2Eel%2Dsubmenu%3Ahover%20%2Eel%2Dsubmenu%5F%5Ftitle%7Bborder%2Dbottom%3A5px%20solid%20%2320a0ff%7D%2Eel%2Dmenu%2D%2Dhorizontal%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dmenu%2Ditem%3Ahover%2C%2Eel%2Dmenu%2D%2Dhorizontal%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dsubmenu%5F%5Ftitle%3Ahover%7Bbackground%2Dcolor%3A%23324057%7D%2Eel%2Dmenu%2D%2Dhorizontal%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dsubmenu%20%2Eel%2Dmenu%2Ditem%3Ahover%2C%2Eel%2Dmenu%2D%2Dhorizontal%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dsubmenu%20%2Eel%2Dsubmenu%2Dtitle%3Ahover%2C%2Eel%2Dmenu%2Ditem%3Ahover%7Bbackground%2Dcolor%3A%23d3dce6%7D%2Eel%2Dmenu%2D%2Dhorizontal%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dsubmenu%20%2Eel%2Dmenu%2Ditem%2C%2Eel%2Dmenu%2D%2Dhorizontal%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dsubmenu%20%2Eel%2Dsubmenu%2Dtitle%7Bcolor%3A%23475669%7D%2Eel%2Dmenu%2D%2Dhorizontal%2Eel%2Dmenu%2D%2Ddark%20%2Eel%2Dsubmenu%20%2Eel%2Dmenu%2Ditem%2Eis%2Dactive%2C%2Eel%2Dmenu%2Ditem%2Eis%2Dactive%7Bcolor%3A%2320a0ff%7D%2Eel%2Dmenu%2Ditem%20%5Bclass%5E%3Del%2Dicon%2D%5D%7Bvertical%2Dalign%3Abaseline%3Bmargin%2Dright%3A10px%7D%2Eel%2Dmenu%2Ditem%3Afirst%2Dchild%7Bmargin%2Dleft%3A0%7D%2Eel%2Dmenu%2Ditem%3Alast%2Dchild%7Bmargin%2Dright%3A0%7D%2Eel%2Dsubmenu%20%5Bclass%5E%3Del%2Dicon%2D%5D%7Bvertical%2Dalign%3Abaseline%3Bmargin%2Dright%3A10px%7D%2Eel%2Dsubmenu%20%2Eel%2Dmenu%7Bbackground%2Dcolor%3A%23e5e9f2%7D%2Eel%2Dsubmenu%20%2Eel%2Dmenu%2Ditem%3Ahover%2C%2Eel%2Dsubmenu%5F%5Ftitle%3Ahover%7Bbackground%2Dcolor%3A%23d3dce6%7D%2Eel%2Dsubmenu%20%2Eel%2Dmenu%2Ditem%7Bheight%3A50px%3Bline%2Dheight%3A50px%3Bpadding%3A0%2045px%7D%2Eel%2Dsubmenu%2Eis%2Dopened%20%2Eel%2Dsubmenu%5F%5Ficon%2Darrow%7B%2Dms%2Dtransform%3Arotate%28180deg%29%3Btransform%3ArotateZ%28180deg%29%7D%2Eel%2Dsubmenu%2Eis%2Dactive%20%2Eel%2Dsubmenu%5F%5Ftitle%7Bborder%2Dbottom%2Dcolor%3A%2320a0ff%7D%2Eel%2Dsubmenu%5F%5Ftitle%7Bposition%3Arelative%7D%2Eel%2Dsubmenu%5F%5Ficon%2Darrow%7Bposition%3Aabsolute%3Btop%3A50%25%3Bright%3A20px%3Bmargin%2Dtop%3A%2D7px%3Btransition%3Atransform%20%2E3s%3Bfont%2Dsize%3A12px%7D%2Eel%2Dmenu%2Ditem%2Dgroup%3Eul%7Bpadding%3A0%7D%2Eel%2Dmenu%2Ditem%2Dgroup%5F%5Ftitle%7Bpadding%2Dtop%3A15px%3Bline%2Dheight%3Anormal%3Bfont%2Dsize%3A14px%3Bpadding%2Dleft%3A20px%3Bcolor%3A%2399a9bf%7D%2Eel%2Dprogress%7Bposition%3Arelative%3Bline%2Dheight%3A1%7D%2Eel%2Dprogress%2Eis%2Dexception%20%2Eel%2Dprogress%2Dbar%5F%5Finner%7Bbackground%2Dcolor%3A%23ff4949%7D%2Eel%2Dprogress%2Eis%2Dexception%20%2Eel%2Dprogress%5F%5Ftext%7Bcolor%3A%23ff4949%7D%2Eel%2Dprogress%2Eis%2Dsuccess%20%2Eel%2Dprogress%2Dbar%5F%5Finner%7Bbackground%2Dcolor%3A%2313ce66%7D%2Eel%2Dprogress%2Eis%2Dsuccess%20%2Eel%2Dprogress%5F%5Ftext%7Bcolor%3A%2313ce66%7D%2Eel%2Dprogress%5F%5Ftext%7Bfont%2Dsize%3A14px%3Bcolor%3A%23475669%3Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%3Bmargin%2Dleft%3A10px%3Bline%2Dheight%3A1%7D%2Eel%2Dprogress%5F%5Ftext%20i%7Bvertical%2Dalign%3Amiddle%3Bdisplay%3Ablock%7D%2Eel%2Dprogress%2D%2Dcircle%7Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dprogress%2D%2Dcircle%20%2Eel%2Dprogress%5F%5Ftext%7Bposition%3Aabsolute%3Btop%3A50%25%3Bleft%3A0%3Bwidth%3A100%25%3Btext%2Dalign%3Acenter%3Bmargin%3A0%3B%2Dms%2Dtransform%3Atranslate%280%2C%2D50%25%29%3Btransform%3Atranslate%280%2C%2D50%25%29%7D%2Eel%2Dprogress%2D%2Dcircle%20%2Eel%2Dprogress%5F%5Ftext%20i%7Bvertical%2Dalign%3Amiddle%3Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dprogress%2D%2Dwithout%2Dtext%20%2Eel%2Dprogress%5F%5Ftext%7Bdisplay%3Anone%7D%2Eel%2Dprogress%2D%2Dwithout%2Dtext%20%2Eel%2Dprogress%2Dbar%7Bpadding%2Dright%3A0%3Bmargin%2Dright%3A0%3Bdisplay%3Ablock%7D%2Eel%2Dprogress%2D%2Dtext%2Dinside%20%2Eel%2Dprogress%2Dbar%7Bpadding%2Dright%3A0%3Bmargin%2Dright%3A0%7D%2Eel%2Dprogress%2Dbar%7Bpadding%2Dright%3A50px%3Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%3Bwidth%3A100%25%3Bmargin%2Dright%3A%2D55px%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Dprogress%2Dbar%5F%5Fouter%7Bheight%3A6px%3Bborder%2Dradius%3A100px%3Bbackground%2Dcolor%3A%23e5e9f2%3Boverflow%3Ahidden%3Bposition%3Arelative%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dprogress%2Dbar%5F%5Finner%7Bposition%3Aabsolute%3Bleft%3A0%3Btop%3A0%3Bheight%3A100%25%3Bbackground%2Dcolor%3A%2320a0ff%3Btext%2Dalign%3Aright%3Bborder%2Dradius%3A100px%3Bline%2Dheight%3A1%7D%2Eel%2Ddragger%2C%2Eel%2Ddragger%2B%2Eel%2Dupload%5F%5Ftip%7Btext%2Dalign%3Acenter%7D%2Eel%2Dprogress%2Dbar%5F%5FinnerText%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%3Bcolor%3A%23fff%3Bfont%2Dsize%3A12px%3Bmargin%3A0%205px%7D%40keyframes%20progress%7B0%25%7Bbackground%2Dposition%3A0%200%7D100%25%7Bbackground%2Dposition%3A32px%200%7D%7D%2Eel%2Dupload%7Bwidth%3A360px%7D%2Eel%2Dupload%5F%5Finput%7Bdisplay%3Anone%7D%2Eel%2Dupload%5F%5Finner%7Bdisplay%3Ainline%2Dblock%3Bposition%3Arelative%7D%2Eel%2Dupload%5F%5Finner%20iframe%7Bposition%3Aabsolute%3Bz%2Dindex%3A%2D1%3Btop%3A0%3Bleft%3A0%3Bopacity%3A0%3Bfilter%3Aalpha%28opacity%3D0%29%7D%2Eel%2Dupload%5F%5Ffiles%7Bmargin%3A0%200%2010px%3Bpadding%3A0%3Blist%2Dstyle%3Anone%7D%2Eel%2Dupload%5F%5Ffile%7Btransition%3Aall%20%2E5s%20cubic%2Dbezier%28%2E55%2C0%2C%2E1%2C1%29%3Bfont%2Dsize%3A14px%3Bcolor%3A%23475669%3Bline%2Dheight%3A32px%3Bbox%2Dsizing%3Aborder%2Dbox%3Bborder%2Dradius%3A4px%3Bwidth%3A100%25%3Boverflow%3Ahidden%3Bwhite%2Dspace%3Anowrap%3Btext%2Doverflow%3Aellipsis%3Bposition%3Arelative%7D%2Eel%2Dupload%5F%5Ffile%20a%7Bcolor%3A%23475669%3Btransition%3Acolor%20%2E3s%3Bpadding%2Dleft%3A4px%7D%2Eel%2Dupload%5F%5Ffile%20a%20%5Bclass%5E%3Del%2Dicon%5D%7Bcolor%3A%2399a9bf%3Bmargin%2Dright%3A7px%3Bheight%3A100%25%3Bline%2Dheight%3Ainherit%7D%2Eel%2Dupload%5F%5Ffile%20%2Eel%2Dprogress%2Dbar%7Bmargin%2Dright%3A0%3Bpadding%2Dright%3A0%7D%2Eel%2Dupload%5F%5Ffile%20%2Eel%2Dprogress%7Bposition%3Aabsolute%3Bbottom%3A%2D3px%3Bwidth%3A100%25%7D%2Eel%2Dupload%5F%5Ffile%20%2Eel%2Dprogress%5F%5Ftext%7Bposition%3Aabsolute%3Btop%3A%2D10px%3Bright%3A0%7D%2Eel%2Dupload%5F%5Ffile%3Ahover%7Bbackground%2Dcolor%3A%23eff2f7%7D%2Eel%2Dupload%5F%5Ffile%2Eis%2Dfinished%20a%3Ahover%7Bcolor%3A%2320a0ff%3Bcursor%3Apointer%7D%2Eel%2Dupload%5F%5Ffile%2Eis%2Dfinished%3Ahover%20%2Eel%2Dupload%5F%5Fbtn%2Ddelete%7Bdisplay%3Ablock%3Bcursor%3Apointer%7D%2Eel%2Dupload%5F%5Ftip%7Bfont%2Dsize%3A12px%3Bcolor%3A%238492a6%3Bmargin%2Dtop%3A7px%7D%2Eel%2Dupload%5F%5Fbtn%2Ddelete%7Bposition%3Aabsolute%3Bright%3A15px%3Btop%3A0%3Bfont%2Dsize%3A12px%3Bcolor%3A%2320a0ff%3Bdisplay%3Anone%7D%2Eel%2Ddragger%7Bbackground%2Dcolor%3A%23f9fafc%3Bborder%3A1px%20solid%20%23c0ccda%3Bbox%2Dsizing%3Aborder%2Dbox%3Bwidth%3A360px%3Bheight%3A180px%3Bborder%2Dradius%3A4px%3Bcursor%3Apointer%3Bposition%3Arelative%3Boverflow%3Ahidden%7D%2Eel%2Ddragger%20%2Eel%2Dupload%5F%5Finner%7Bdisplay%3Ablock%3Bheight%3A100%25%7D%2Eel%2Ddragger%20%2Eel%2Dicon%2Dupload%7Bfont%2Dsize%3A67px%3Bcolor%3A%2399a9bf%3Bmargin%3A40px%200%2016px%3Bline%2Dheight%3A50px%7D%2Eel%2Ddragger%7E%2Eel%2Dupload%5F%5Ffiles%7Bmargin%2Dtop%3A7px%3Bpadding%2Dtop%3A5px%3Bborder%2Dtop%3A1px%20solid%20rgba%28192%2C204%2C218%2C%2E2%29%7D%2Eel%2Ddragger%3Anot%28%2Eis%2DshowCover%29%3Ahover%7Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Ddragger%2Eis%2DdragOver%7Bbackground%2Dcolor%3Argba%2832%2C159%2C255%2C%2E06%29%3Bborder%3A2px%20dashed%20%2320a0ff%7D%2Eel%2Ddragger%5F%5Fcover%7Bposition%3Aabsolute%3Bleft%3A0%3Btop%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Boverflow%3Ahidden%3Bz%2Dindex%3A10%3Bcursor%3Adefault%7D%2Eel%2Ddragger%5F%5Fcover%3Aafter%7Bdisplay%3Ainline%2Dblock%3Bheight%3A100%25%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Ddragger%5F%5Fcover%20img%7Bdisplay%3Ablock%3Bwidth%3A100%25%3Bheight%3A100%25%7D%2Eel%2Ddragger%5F%5Fcover%2B%2Eel%2Dupload%5F%5Finner%7Bopacity%3A0%3Bposition%3Arelative%3Bz%2Dindex%3A1%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Fprogress%7Bdisplay%3Ainline%2Dblock%3Bvertical%2Dalign%3Amiddle%3Bposition%3Astatic%3Bwidth%3A243px%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Fprogress%2B%2Eel%2Dupload%5F%5Finner%7Bopacity%3A0%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Fcontent%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Finteract%7Bposition%3Aabsolute%3Bbottom%3A0%3Bleft%3A0%3Bwidth%3A100%25%3Bheight%3A100%25%3Bbackground%2Dcolor%3Argba%280%2C0%2C0%2C%2E72%29%3Btext%2Dalign%3Acenter%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Finteract%20%2Ebtn%7Bdisplay%3Ainline%2Dblock%3Bcolor%3A%23fff%3Bfont%2Dsize%3A14px%3Bcursor%3Apointer%3Bvertical%2Dalign%3Amiddle%3Btransition%3Atransform%20%2E3s%20cubic%2Dbezier%28%2E23%2C1%2C%2E32%2C1%29%20%2E1s%2Copacity%20%2E3s%20cubic%2Dbezier%28%2E23%2C1%2C%2E32%2C1%29%20%2E1s%3Bmargin%2Dtop%3A60px%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Finteract%20%2Ebtn%20span%7Bopacity%3A0%3Btransition%3Aopacity%20%2E15s%20linear%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Finteract%20%2Ebtn%3Anot%28%3Afirst%2Dchild%29%7Bmargin%2Dleft%3A35px%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Finteract%20%2Ebtn%3Ahover%7B%2Dms%2Dtransform%3AtranslateY%28%2D13px%29%3Btransform%3AtranslateY%28%2D13px%29%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Finteract%20%2Ebtn%3Ahover%20span%7Bopacity%3A1%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Finteract%20%2Ebtn%20i%7Bcolor%3A%23fff%3Bdisplay%3Ablock%3Bfont%2Dsize%3A24px%3Bline%2Dheight%3Ainherit%3Bmargin%3A0%20auto%205px%7D%2Eel%2Ddragger%5F%5Fcover%5F%5Ftitle%7Bposition%3Aabsolute%3Bbottom%3A0%3Bleft%3A0%3Bbackground%2Dcolor%3A%23fff%3Bheight%3A36px%3Bwidth%3A100%25%3Boverflow%3Ahidden%3Btext%2Doverflow%3Aellipsis%3Bwhite%2Dspace%3Anowrap%3Bfont%2Dweight%3A400%3Btext%2Dalign%3Aleft%3Bpadding%3A0%2010px%3Bmargin%3A0%3Bline%2Dheight%3A36px%3Bfont%2Dsize%3A14px%3Bcolor%3A%23475669%7D%2Eel%2Ddragger%5F%5Ftext%7Bcolor%3A%2399a9bf%3Bfont%2Dsize%3A14px%3Btext%2Dalign%3Acenter%7D%2Eel%2Ddragger%5F%5Ftext%20em%7Bcolor%3A%2320a0ff%3Bfont%2Dstyle%3Anormal%7D%2Eel%2Drow%7Bposition%3Arelative%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Drow%3Aafter%2C%2Eel%2Drow%3Abefore%7Bdisplay%3Atable%7D%2Eel%2Drow%2D%2Dflex%7Bdisplay%3A%2Dms%2Dflexbox%3Bdisplay%3Aflex%7D%2Eel%2Drow%2D%2Dflex%3Aafter%2C%2Eel%2Drow%2D%2Dflex%3Abefore%7Bdisplay%3Anone%7D%2Eel%2Drow%2D%2Dflex%2Eis%2Dalign%2Dbottom%7B%2Dms%2Dflex%2Dalign%3Aend%3Balign%2Ditems%3Aflex%2Dend%7D%2Eel%2Drow%2D%2Dflex%2Eis%2Dalign%2Dmiddle%7B%2Dms%2Dflex%2Dalign%3Acenter%3Balign%2Ditems%3Acenter%7D%2Eel%2Drow%2D%2Dflex%2Eis%2Djustify%2Dspace%2Daround%7B%2Dms%2Dflex%2Dpack%3Adistribute%3Bjustify%2Dcontent%3Aspace%2Daround%7D%2Eel%2Drow%2D%2Dflex%2Eis%2Djustify%2Dspace%2Dbetween%7B%2Dms%2Dflex%2Dpack%3Ajustify%3Bjustify%2Dcontent%3Aspace%2Dbetween%7D%2Eel%2Drow%2D%2Dflex%2Eis%2Djustify%2Dend%7B%2Dms%2Dflex%2Dpack%3Aend%3Bjustify%2Dcontent%3Aflex%2Dend%7D%2Eel%2Drow%2D%2Dflex%2Eis%2Djustify%2Dcenter%7B%2Dms%2Dflex%2Dpack%3Acenter%3Bjustify%2Dcontent%3Acenter%7D%2Eel%2Dcol%2D1%2C%2Eel%2Dcol%2D10%2C%2Eel%2Dcol%2D11%2C%2Eel%2Dcol%2D12%2C%2Eel%2Dcol%2D13%2C%2Eel%2Dcol%2D14%2C%2Eel%2Dcol%2D15%2C%2Eel%2Dcol%2D16%2C%2Eel%2Dcol%2D17%2C%2Eel%2Dcol%2D18%2C%2Eel%2Dcol%2D19%2C%2Eel%2Dcol%2D2%2C%2Eel%2Dcol%2D20%2C%2Eel%2Dcol%2D21%2C%2Eel%2Dcol%2D22%2C%2Eel%2Dcol%2D23%2C%2Eel%2Dcol%2D24%2C%2Eel%2Dcol%2D3%2C%2Eel%2Dcol%2D4%2C%2Eel%2Dcol%2D5%2C%2Eel%2Dcol%2D6%2C%2Eel%2Dcol%2D7%2C%2Eel%2Dcol%2D8%2C%2Eel%2Dcol%2D9%7Bfloat%3Aleft%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Dcol%2D1%2C%2Eel%2Dcol%2Dxs%2D1%7Bwidth%3A4%2E16667%25%7D%2Eel%2Dcol%2Doffset%2D1%2C%2Eel%2Dcol%2Dxs%2Doffset%2D1%7Bmargin%2Dleft%3A4%2E16667%25%7D%2Eel%2Dcol%2Dpull%2D1%2C%2Eel%2Dcol%2Dxs%2Dpull%2D1%7Bposition%3Arelative%3Bright%3A4%2E16667%25%7D%2Eel%2Dcol%2Dpush%2D1%2C%2Eel%2Dcol%2Dxs%2Dpush%2D1%7Bposition%3Arelative%3Bleft%3A4%2E16667%25%7D%2Eel%2Dcol%2D2%2C%2Eel%2Dcol%2Dxs%2D2%7Bwidth%3A8%2E33333%25%7D%2Eel%2Dcol%2Doffset%2D2%2C%2Eel%2Dcol%2Dxs%2Doffset%2D2%7Bmargin%2Dleft%3A8%2E33333%25%7D%2Eel%2Dcol%2Dpull%2D2%2C%2Eel%2Dcol%2Dxs%2Dpull%2D2%7Bposition%3Arelative%3Bright%3A8%2E33333%25%7D%2Eel%2Dcol%2Dpush%2D2%2C%2Eel%2Dcol%2Dxs%2Dpush%2D2%7Bposition%3Arelative%3Bleft%3A8%2E33333%25%7D%2Eel%2Dcol%2D3%2C%2Eel%2Dcol%2Dxs%2D3%7Bwidth%3A12%2E5%25%7D%2Eel%2Dcol%2Doffset%2D3%2C%2Eel%2Dcol%2Dxs%2Doffset%2D3%7Bmargin%2Dleft%3A12%2E5%25%7D%2Eel%2Dcol%2Dpull%2D3%2C%2Eel%2Dcol%2Dxs%2Dpull%2D3%7Bposition%3Arelative%3Bright%3A12%2E5%25%7D%2Eel%2Dcol%2Dpush%2D3%2C%2Eel%2Dcol%2Dxs%2Dpush%2D3%7Bposition%3Arelative%3Bleft%3A12%2E5%25%7D%2Eel%2Dcol%2D4%2C%2Eel%2Dcol%2Dxs%2D4%7Bwidth%3A16%2E66667%25%7D%2Eel%2Dcol%2Doffset%2D4%2C%2Eel%2Dcol%2Dxs%2Doffset%2D4%7Bmargin%2Dleft%3A16%2E66667%25%7D%2Eel%2Dcol%2Dpull%2D4%2C%2Eel%2Dcol%2Dxs%2Dpull%2D4%7Bposition%3Arelative%3Bright%3A16%2E66667%25%7D%2Eel%2Dcol%2Dpush%2D4%2C%2Eel%2Dcol%2Dxs%2Dpush%2D4%7Bposition%3Arelative%3Bleft%3A16%2E66667%25%7D%2Eel%2Dcol%2D5%2C%2Eel%2Dcol%2Dxs%2D5%7Bwidth%3A20%2E83333%25%7D%2Eel%2Dcol%2Doffset%2D5%2C%2Eel%2Dcol%2Dxs%2Doffset%2D5%7Bmargin%2Dleft%3A20%2E83333%25%7D%2Eel%2Dcol%2Dpull%2D5%2C%2Eel%2Dcol%2Dxs%2Dpull%2D5%7Bposition%3Arelative%3Bright%3A20%2E83333%25%7D%2Eel%2Dcol%2Dpush%2D5%2C%2Eel%2Dcol%2Dxs%2Dpush%2D5%7Bposition%3Arelative%3Bleft%3A20%2E83333%25%7D%2Eel%2Dcol%2D6%2C%2Eel%2Dcol%2Dxs%2D6%7Bwidth%3A25%25%7D%2Eel%2Dcol%2Doffset%2D6%2C%2Eel%2Dcol%2Dxs%2Doffset%2D6%7Bmargin%2Dleft%3A25%25%7D%2Eel%2Dcol%2Dpull%2D6%2C%2Eel%2Dcol%2Dxs%2Dpull%2D6%7Bposition%3Arelative%3Bright%3A25%25%7D%2Eel%2Dcol%2Dpush%2D6%2C%2Eel%2Dcol%2Dxs%2Dpush%2D6%7Bposition%3Arelative%3Bleft%3A25%25%7D%2Eel%2Dcol%2D7%2C%2Eel%2Dcol%2Dxs%2D7%7Bwidth%3A29%2E16667%25%7D%2Eel%2Dcol%2Doffset%2D7%2C%2Eel%2Dcol%2Dxs%2Doffset%2D7%7Bmargin%2Dleft%3A29%2E16667%25%7D%2Eel%2Dcol%2Dpull%2D7%2C%2Eel%2Dcol%2Dxs%2Dpull%2D7%7Bposition%3Arelative%3Bright%3A29%2E16667%25%7D%2Eel%2Dcol%2Dpush%2D7%2C%2Eel%2Dcol%2Dxs%2Dpush%2D7%7Bposition%3Arelative%3Bleft%3A29%2E16667%25%7D%2Eel%2Dcol%2D8%2C%2Eel%2Dcol%2Dxs%2D8%7Bwidth%3A33%2E33333%25%7D%2Eel%2Dcol%2Doffset%2D8%2C%2Eel%2Dcol%2Dxs%2Doffset%2D8%7Bmargin%2Dleft%3A33%2E33333%25%7D%2Eel%2Dcol%2Dpull%2D8%2C%2Eel%2Dcol%2Dxs%2Dpull%2D8%7Bposition%3Arelative%3Bright%3A33%2E33333%25%7D%2Eel%2Dcol%2Dpush%2D8%2C%2Eel%2Dcol%2Dxs%2Dpush%2D8%7Bposition%3Arelative%3Bleft%3A33%2E33333%25%7D%2Eel%2Dcol%2D9%2C%2Eel%2Dcol%2Dxs%2D9%7Bwidth%3A37%2E5%25%7D%2Eel%2Dcol%2Doffset%2D9%2C%2Eel%2Dcol%2Dxs%2Doffset%2D9%7Bmargin%2Dleft%3A37%2E5%25%7D%2Eel%2Dcol%2Dpull%2D9%2C%2Eel%2Dcol%2Dxs%2Dpull%2D9%7Bposition%3Arelative%3Bright%3A37%2E5%25%7D%2Eel%2Dcol%2Dpush%2D9%2C%2Eel%2Dcol%2Dxs%2Dpush%2D9%7Bposition%3Arelative%3Bleft%3A37%2E5%25%7D%2Eel%2Dcol%2D10%2C%2Eel%2Dcol%2Dxs%2D10%7Bwidth%3A41%2E66667%25%7D%2Eel%2Dcol%2Doffset%2D10%2C%2Eel%2Dcol%2Dxs%2Doffset%2D10%7Bmargin%2Dleft%3A41%2E66667%25%7D%2Eel%2Dcol%2Dpull%2D10%2C%2Eel%2Dcol%2Dxs%2Dpull%2D10%7Bposition%3Arelative%3Bright%3A41%2E66667%25%7D%2Eel%2Dcol%2Dpush%2D10%2C%2Eel%2Dcol%2Dxs%2Dpush%2D10%7Bposition%3Arelative%3Bleft%3A41%2E66667%25%7D%2Eel%2Dcol%2D11%2C%2Eel%2Dcol%2Dxs%2D11%7Bwidth%3A45%2E83333%25%7D%2Eel%2Dcol%2Doffset%2D11%2C%2Eel%2Dcol%2Dxs%2Doffset%2D11%7Bmargin%2Dleft%3A45%2E83333%25%7D%2Eel%2Dcol%2Dpull%2D11%2C%2Eel%2Dcol%2Dxs%2Dpull%2D11%7Bposition%3Arelative%3Bright%3A45%2E83333%25%7D%2Eel%2Dcol%2Dpush%2D11%2C%2Eel%2Dcol%2Dxs%2Dpush%2D11%7Bposition%3Arelative%3Bleft%3A45%2E83333%25%7D%2Eel%2Dcol%2D12%2C%2Eel%2Dcol%2Dxs%2D12%7Bwidth%3A50%25%7D%2Eel%2Dcol%2Doffset%2D12%2C%2Eel%2Dcol%2Dxs%2Doffset%2D12%7Bmargin%2Dleft%3A50%25%7D%2Eel%2Dcol%2Dpull%2D12%2C%2Eel%2Dcol%2Dxs%2Dpull%2D12%7Bposition%3Arelative%3Bright%3A50%25%7D%2Eel%2Dcol%2Dpush%2D12%2C%2Eel%2Dcol%2Dxs%2Dpush%2D12%7Bposition%3Arelative%3Bleft%3A50%25%7D%2Eel%2Dcol%2D13%2C%2Eel%2Dcol%2Dxs%2D13%7Bwidth%3A54%2E16667%25%7D%2Eel%2Dcol%2Doffset%2D13%2C%2Eel%2Dcol%2Dxs%2Doffset%2D13%7Bmargin%2Dleft%3A54%2E16667%25%7D%2Eel%2Dcol%2Dpull%2D13%2C%2Eel%2Dcol%2Dxs%2Dpull%2D13%7Bposition%3Arelative%3Bright%3A54%2E16667%25%7D%2Eel%2Dcol%2Dpush%2D13%2C%2Eel%2Dcol%2Dxs%2Dpush%2D13%7Bposition%3Arelative%3Bleft%3A54%2E16667%25%7D%2Eel%2Dcol%2D14%2C%2Eel%2Dcol%2Dxs%2D14%7Bwidth%3A58%2E33333%25%7D%2Eel%2Dcol%2Doffset%2D14%2C%2Eel%2Dcol%2Dxs%2Doffset%2D14%7Bmargin%2Dleft%3A58%2E33333%25%7D%2Eel%2Dcol%2Dpull%2D14%2C%2Eel%2Dcol%2Dxs%2Dpull%2D14%7Bposition%3Arelative%3Bright%3A58%2E33333%25%7D%2Eel%2Dcol%2Dpush%2D14%2C%2Eel%2Dcol%2Dxs%2Dpush%2D14%7Bposition%3Arelative%3Bleft%3A58%2E33333%25%7D%2Eel%2Dcol%2D15%2C%2Eel%2Dcol%2Dxs%2D15%7Bwidth%3A62%2E5%25%7D%2Eel%2Dcol%2Doffset%2D15%2C%2Eel%2Dcol%2Dxs%2Doffset%2D15%7Bmargin%2Dleft%3A62%2E5%25%7D%2Eel%2Dcol%2Dpull%2D15%2C%2Eel%2Dcol%2Dxs%2Dpull%2D15%7Bposition%3Arelative%3Bright%3A62%2E5%25%7D%2Eel%2Dcol%2Dpush%2D15%2C%2Eel%2Dcol%2Dxs%2Dpush%2D15%7Bposition%3Arelative%3Bleft%3A62%2E5%25%7D%2Eel%2Dcol%2D16%2C%2Eel%2Dcol%2Dxs%2D16%7Bwidth%3A66%2E66667%25%7D%2Eel%2Dcol%2Doffset%2D16%2C%2Eel%2Dcol%2Dxs%2Doffset%2D16%7Bmargin%2Dleft%3A66%2E66667%25%7D%2Eel%2Dcol%2Dpull%2D16%2C%2Eel%2Dcol%2Dxs%2Dpull%2D16%7Bposition%3Arelative%3Bright%3A66%2E66667%25%7D%2Eel%2Dcol%2Dpush%2D16%2C%2Eel%2Dcol%2Dxs%2Dpush%2D16%7Bposition%3Arelative%3Bleft%3A66%2E66667%25%7D%2Eel%2Dcol%2D17%2C%2Eel%2Dcol%2Dxs%2D17%7Bwidth%3A70%2E83333%25%7D%2Eel%2Dcol%2Doffset%2D17%2C%2Eel%2Dcol%2Dxs%2Doffset%2D17%7Bmargin%2Dleft%3A70%2E83333%25%7D%2Eel%2Dcol%2Dpull%2D17%2C%2Eel%2Dcol%2Dxs%2Dpull%2D17%7Bposition%3Arelative%3Bright%3A70%2E83333%25%7D%2Eel%2Dcol%2Dpush%2D17%2C%2Eel%2Dcol%2Dxs%2Dpush%2D17%7Bposition%3Arelative%3Bleft%3A70%2E83333%25%7D%2Eel%2Dcol%2D18%2C%2Eel%2Dcol%2Dxs%2D18%7Bwidth%3A75%25%7D%2Eel%2Dcol%2Doffset%2D18%2C%2Eel%2Dcol%2Dxs%2Doffset%2D18%7Bmargin%2Dleft%3A75%25%7D%2Eel%2Dcol%2Dpull%2D18%2C%2Eel%2Dcol%2Dxs%2Dpull%2D18%7Bposition%3Arelative%3Bright%3A75%25%7D%2Eel%2Dcol%2Dpush%2D18%2C%2Eel%2Dcol%2Dxs%2Dpush%2D18%7Bposition%3Arelative%3Bleft%3A75%25%7D%2Eel%2Dcol%2D19%2C%2Eel%2Dcol%2Dxs%2D19%7Bwidth%3A79%2E16667%25%7D%2Eel%2Dcol%2Doffset%2D19%2C%2Eel%2Dcol%2Dxs%2Doffset%2D19%7Bmargin%2Dleft%3A79%2E16667%25%7D%2Eel%2Dcol%2Dpull%2D19%2C%2Eel%2Dcol%2Dxs%2Dpull%2D19%7Bposition%3Arelative%3Bright%3A79%2E16667%25%7D%2Eel%2Dcol%2Dpush%2D19%2C%2Eel%2Dcol%2Dxs%2Dpush%2D19%7Bposition%3Arelative%3Bleft%3A79%2E16667%25%7D%2Eel%2Dcol%2D20%2C%2Eel%2Dcol%2Dxs%2D20%7Bwidth%3A83%2E33333%25%7D%2Eel%2Dcol%2Doffset%2D20%2C%2Eel%2Dcol%2Dxs%2Doffset%2D20%7Bmargin%2Dleft%3A83%2E33333%25%7D%2Eel%2Dcol%2Dpull%2D20%2C%2Eel%2Dcol%2Dxs%2Dpull%2D20%7Bposition%3Arelative%3Bright%3A83%2E33333%25%7D%2Eel%2Dcol%2Dpush%2D20%2C%2Eel%2Dcol%2Dxs%2Dpush%2D20%7Bposition%3Arelative%3Bleft%3A83%2E33333%25%7D%2Eel%2Dcol%2D21%2C%2Eel%2Dcol%2Dxs%2D21%7Bwidth%3A87%2E5%25%7D%2Eel%2Dcol%2Doffset%2D21%2C%2Eel%2Dcol%2Dxs%2Doffset%2D21%7Bmargin%2Dleft%3A87%2E5%25%7D%2Eel%2Dcol%2Dpull%2D21%2C%2Eel%2Dcol%2Dxs%2Dpull%2D21%7Bposition%3Arelative%3Bright%3A87%2E5%25%7D%2Eel%2Dcol%2Dpush%2D21%2C%2Eel%2Dcol%2Dxs%2Dpush%2D21%7Bposition%3Arelative%3Bleft%3A87%2E5%25%7D%2Eel%2Dcol%2D22%2C%2Eel%2Dcol%2Dxs%2D22%7Bwidth%3A91%2E66667%25%7D%2Eel%2Dcol%2Doffset%2D22%2C%2Eel%2Dcol%2Dxs%2Doffset%2D22%7Bmargin%2Dleft%3A91%2E66667%25%7D%2Eel%2Dcol%2Dpull%2D22%2C%2Eel%2Dcol%2Dxs%2Dpull%2D22%7Bposition%3Arelative%3Bright%3A91%2E66667%25%7D%2Eel%2Dcol%2Dpush%2D22%2C%2Eel%2Dcol%2Dxs%2Dpush%2D22%7Bposition%3Arelative%3Bleft%3A91%2E66667%25%7D%2Eel%2Dcol%2D23%2C%2Eel%2Dcol%2Dxs%2D23%7Bwidth%3A95%2E83333%25%7D%2Eel%2Dcol%2Doffset%2D23%2C%2Eel%2Dcol%2Dxs%2Doffset%2D23%7Bmargin%2Dleft%3A95%2E83333%25%7D%2Eel%2Dcol%2Dpull%2D23%2C%2Eel%2Dcol%2Dxs%2Dpull%2D23%7Bposition%3Arelative%3Bright%3A95%2E83333%25%7D%2Eel%2Dcol%2Dpush%2D23%2C%2Eel%2Dcol%2Dxs%2Dpush%2D23%7Bposition%3Arelative%3Bleft%3A95%2E83333%25%7D%2Eel%2Dcol%2D24%2C%2Eel%2Dcol%2Dxs%2D24%7Bwidth%3A100%25%7D%2Eel%2Dcol%2Doffset%2D24%2C%2Eel%2Dcol%2Dxs%2Doffset%2D24%7Bmargin%2Dleft%3A100%25%7D%2Eel%2Dcol%2Dpull%2D24%2C%2Eel%2Dcol%2Dxs%2Dpull%2D24%7Bposition%3Arelative%3Bright%3A100%25%7D%2Eel%2Dcol%2Dpush%2D24%2C%2Eel%2Dcol%2Dxs%2Dpush%2D24%7Bposition%3Arelative%3Bleft%3A100%25%7D%40media%20%28min%2Dwidth%3A768px%29%7B%2Eel%2Dcol%2Dsm%2D1%7Bwidth%3A4%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D1%7Bmargin%2Dleft%3A4%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D1%7Bposition%3Arelative%3Bright%3A4%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D1%7Bposition%3Arelative%3Bleft%3A4%2E16667%25%7D%2Eel%2Dcol%2Dsm%2D2%7Bwidth%3A8%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D2%7Bmargin%2Dleft%3A8%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D2%7Bposition%3Arelative%3Bright%3A8%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D2%7Bposition%3Arelative%3Bleft%3A8%2E33333%25%7D%2Eel%2Dcol%2Dsm%2D3%7Bwidth%3A12%2E5%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D3%7Bmargin%2Dleft%3A12%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D3%7Bposition%3Arelative%3Bright%3A12%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D3%7Bposition%3Arelative%3Bleft%3A12%2E5%25%7D%2Eel%2Dcol%2Dsm%2D4%7Bwidth%3A16%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D4%7Bmargin%2Dleft%3A16%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D4%7Bposition%3Arelative%3Bright%3A16%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D4%7Bposition%3Arelative%3Bleft%3A16%2E66667%25%7D%2Eel%2Dcol%2Dsm%2D5%7Bwidth%3A20%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D5%7Bmargin%2Dleft%3A20%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D5%7Bposition%3Arelative%3Bright%3A20%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D5%7Bposition%3Arelative%3Bleft%3A20%2E83333%25%7D%2Eel%2Dcol%2Dsm%2D6%7Bwidth%3A25%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D6%7Bmargin%2Dleft%3A25%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D6%7Bposition%3Arelative%3Bright%3A25%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D6%7Bposition%3Arelative%3Bleft%3A25%25%7D%2Eel%2Dcol%2Dsm%2D7%7Bwidth%3A29%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D7%7Bmargin%2Dleft%3A29%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D7%7Bposition%3Arelative%3Bright%3A29%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D7%7Bposition%3Arelative%3Bleft%3A29%2E16667%25%7D%2Eel%2Dcol%2Dsm%2D8%7Bwidth%3A33%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D8%7Bmargin%2Dleft%3A33%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D8%7Bposition%3Arelative%3Bright%3A33%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D8%7Bposition%3Arelative%3Bleft%3A33%2E33333%25%7D%2Eel%2Dcol%2Dsm%2D9%7Bwidth%3A37%2E5%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D9%7Bmargin%2Dleft%3A37%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D9%7Bposition%3Arelative%3Bright%3A37%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D9%7Bposition%3Arelative%3Bleft%3A37%2E5%25%7D%2Eel%2Dcol%2Dsm%2D10%7Bwidth%3A41%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D10%7Bmargin%2Dleft%3A41%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D10%7Bposition%3Arelative%3Bright%3A41%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D10%7Bposition%3Arelative%3Bleft%3A41%2E66667%25%7D%2Eel%2Dcol%2Dsm%2D11%7Bwidth%3A45%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D11%7Bmargin%2Dleft%3A45%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D11%7Bposition%3Arelative%3Bright%3A45%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D11%7Bposition%3Arelative%3Bleft%3A45%2E83333%25%7D%2Eel%2Dcol%2Dsm%2D12%7Bwidth%3A50%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D12%7Bmargin%2Dleft%3A50%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D12%7Bposition%3Arelative%3Bright%3A50%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D12%7Bposition%3Arelative%3Bleft%3A50%25%7D%2Eel%2Dcol%2Dsm%2D13%7Bwidth%3A54%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D13%7Bmargin%2Dleft%3A54%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D13%7Bposition%3Arelative%3Bright%3A54%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D13%7Bposition%3Arelative%3Bleft%3A54%2E16667%25%7D%2Eel%2Dcol%2Dsm%2D14%7Bwidth%3A58%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D14%7Bmargin%2Dleft%3A58%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D14%7Bposition%3Arelative%3Bright%3A58%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D14%7Bposition%3Arelative%3Bleft%3A58%2E33333%25%7D%2Eel%2Dcol%2Dsm%2D15%7Bwidth%3A62%2E5%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D15%7Bmargin%2Dleft%3A62%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D15%7Bposition%3Arelative%3Bright%3A62%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D15%7Bposition%3Arelative%3Bleft%3A62%2E5%25%7D%2Eel%2Dcol%2Dsm%2D16%7Bwidth%3A66%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D16%7Bmargin%2Dleft%3A66%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D16%7Bposition%3Arelative%3Bright%3A66%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D16%7Bposition%3Arelative%3Bleft%3A66%2E66667%25%7D%2Eel%2Dcol%2Dsm%2D17%7Bwidth%3A70%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D17%7Bmargin%2Dleft%3A70%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D17%7Bposition%3Arelative%3Bright%3A70%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D17%7Bposition%3Arelative%3Bleft%3A70%2E83333%25%7D%2Eel%2Dcol%2Dsm%2D18%7Bwidth%3A75%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D18%7Bmargin%2Dleft%3A75%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D18%7Bposition%3Arelative%3Bright%3A75%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D18%7Bposition%3Arelative%3Bleft%3A75%25%7D%2Eel%2Dcol%2Dsm%2D19%7Bwidth%3A79%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D19%7Bmargin%2Dleft%3A79%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D19%7Bposition%3Arelative%3Bright%3A79%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D19%7Bposition%3Arelative%3Bleft%3A79%2E16667%25%7D%2Eel%2Dcol%2Dsm%2D20%7Bwidth%3A83%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D20%7Bmargin%2Dleft%3A83%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D20%7Bposition%3Arelative%3Bright%3A83%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D20%7Bposition%3Arelative%3Bleft%3A83%2E33333%25%7D%2Eel%2Dcol%2Dsm%2D21%7Bwidth%3A87%2E5%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D21%7Bmargin%2Dleft%3A87%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D21%7Bposition%3Arelative%3Bright%3A87%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D21%7Bposition%3Arelative%3Bleft%3A87%2E5%25%7D%2Eel%2Dcol%2Dsm%2D22%7Bwidth%3A91%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D22%7Bmargin%2Dleft%3A91%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D22%7Bposition%3Arelative%3Bright%3A91%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D22%7Bposition%3Arelative%3Bleft%3A91%2E66667%25%7D%2Eel%2Dcol%2Dsm%2D23%7Bwidth%3A95%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D23%7Bmargin%2Dleft%3A95%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D23%7Bposition%3Arelative%3Bright%3A95%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D23%7Bposition%3Arelative%3Bleft%3A95%2E83333%25%7D%2Eel%2Dcol%2Dsm%2D24%7Bwidth%3A100%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D24%7Bmargin%2Dleft%3A100%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D24%7Bposition%3Arelative%3Bright%3A100%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D24%7Bposition%3Arelative%3Bleft%3A100%25%7D%7D%40media%20%28min%2Dwidth%3A992px%29%7B%2Eel%2Dcol%2Dmd%2D1%7Bwidth%3A4%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D1%7Bmargin%2Dleft%3A4%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D1%7Bposition%3Arelative%3Bright%3A4%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D1%7Bposition%3Arelative%3Bleft%3A4%2E16667%25%7D%2Eel%2Dcol%2Dmd%2D2%7Bwidth%3A8%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D2%7Bmargin%2Dleft%3A8%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D2%7Bposition%3Arelative%3Bright%3A8%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D2%7Bposition%3Arelative%3Bleft%3A8%2E33333%25%7D%2Eel%2Dcol%2Dmd%2D3%7Bwidth%3A12%2E5%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D3%7Bmargin%2Dleft%3A12%2E5%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D3%7Bposition%3Arelative%3Bright%3A12%2E5%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D3%7Bposition%3Arelative%3Bleft%3A12%2E5%25%7D%2Eel%2Dcol%2Dmd%2D4%7Bwidth%3A16%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D4%7Bmargin%2Dleft%3A16%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D4%7Bposition%3Arelative%3Bright%3A16%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D4%7Bposition%3Arelative%3Bleft%3A16%2E66667%25%7D%2Eel%2Dcol%2Dmd%2D5%7Bwidth%3A20%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D5%7Bmargin%2Dleft%3A20%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D5%7Bposition%3Arelative%3Bright%3A20%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D5%7Bposition%3Arelative%3Bleft%3A20%2E83333%25%7D%2Eel%2Dcol%2Dmd%2D6%7Bwidth%3A25%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D6%7Bmargin%2Dleft%3A25%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D6%7Bposition%3Arelative%3Bright%3A25%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D6%7Bposition%3Arelative%3Bleft%3A25%25%7D%2Eel%2Dcol%2Dmd%2D7%7Bwidth%3A29%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D7%7Bmargin%2Dleft%3A29%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D7%7Bposition%3Arelative%3Bright%3A29%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D7%7Bposition%3Arelative%3Bleft%3A29%2E16667%25%7D%2Eel%2Dcol%2Dmd%2D8%7Bwidth%3A33%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D8%7Bmargin%2Dleft%3A33%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D8%7Bposition%3Arelative%3Bright%3A33%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D8%7Bposition%3Arelative%3Bleft%3A33%2E33333%25%7D%2Eel%2Dcol%2Dmd%2D9%7Bwidth%3A37%2E5%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D9%7Bmargin%2Dleft%3A37%2E5%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D9%7Bposition%3Arelative%3Bright%3A37%2E5%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D9%7Bposition%3Arelative%3Bleft%3A37%2E5%25%7D%2Eel%2Dcol%2Dmd%2D10%7Bwidth%3A41%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D10%7Bmargin%2Dleft%3A41%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D10%7Bposition%3Arelative%3Bright%3A41%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D10%7Bposition%3Arelative%3Bleft%3A41%2E66667%25%7D%2Eel%2Dcol%2Dmd%2D11%7Bwidth%3A45%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D11%7Bmargin%2Dleft%3A45%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D11%7Bposition%3Arelative%3Bright%3A45%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D11%7Bposition%3Arelative%3Bleft%3A45%2E83333%25%7D%2Eel%2Dcol%2Dmd%2D12%7Bwidth%3A50%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D12%7Bmargin%2Dleft%3A50%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D12%7Bposition%3Arelative%3Bright%3A50%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D12%7Bposition%3Arelative%3Bleft%3A50%25%7D%2Eel%2Dcol%2Dmd%2D13%7Bwidth%3A54%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D13%7Bmargin%2Dleft%3A54%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D13%7Bposition%3Arelative%3Bright%3A54%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D13%7Bposition%3Arelative%3Bleft%3A54%2E16667%25%7D%2Eel%2Dcol%2Dmd%2D14%7Bwidth%3A58%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D14%7Bmargin%2Dleft%3A58%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D14%7Bposition%3Arelative%3Bright%3A58%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D14%7Bposition%3Arelative%3Bleft%3A58%2E33333%25%7D%2Eel%2Dcol%2Dmd%2D15%7Bwidth%3A62%2E5%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D15%7Bmargin%2Dleft%3A62%2E5%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D15%7Bposition%3Arelative%3Bright%3A62%2E5%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D15%7Bposition%3Arelative%3Bleft%3A62%2E5%25%7D%2Eel%2Dcol%2Dmd%2D16%7Bwidth%3A66%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D16%7Bmargin%2Dleft%3A66%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D16%7Bposition%3Arelative%3Bright%3A66%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D16%7Bposition%3Arelative%3Bleft%3A66%2E66667%25%7D%2Eel%2Dcol%2Dmd%2D17%7Bwidth%3A70%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D17%7Bmargin%2Dleft%3A70%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D17%7Bposition%3Arelative%3Bright%3A70%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D17%7Bposition%3Arelative%3Bleft%3A70%2E83333%25%7D%2Eel%2Dcol%2Dmd%2D18%7Bwidth%3A75%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D18%7Bmargin%2Dleft%3A75%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D18%7Bposition%3Arelative%3Bright%3A75%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D18%7Bposition%3Arelative%3Bleft%3A75%25%7D%2Eel%2Dcol%2Dmd%2D19%7Bwidth%3A79%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D19%7Bmargin%2Dleft%3A79%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D19%7Bposition%3Arelative%3Bright%3A79%2E16667%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D19%7Bposition%3Arelative%3Bleft%3A79%2E16667%25%7D%2Eel%2Dcol%2Dmd%2D20%7Bwidth%3A83%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D20%7Bmargin%2Dleft%3A83%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D20%7Bposition%3Arelative%3Bright%3A83%2E33333%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D20%7Bposition%3Arelative%3Bleft%3A83%2E33333%25%7D%2Eel%2Dcol%2Dmd%2D21%7Bwidth%3A87%2E5%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D21%7Bmargin%2Dleft%3A87%2E5%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D21%7Bposition%3Arelative%3Bright%3A87%2E5%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D21%7Bposition%3Arelative%3Bleft%3A87%2E5%25%7D%2Eel%2Dcol%2Dmd%2D22%7Bwidth%3A91%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D22%7Bmargin%2Dleft%3A91%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D22%7Bposition%3Arelative%3Bright%3A91%2E66667%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D22%7Bposition%3Arelative%3Bleft%3A91%2E66667%25%7D%2Eel%2Dcol%2Dmd%2D23%7Bwidth%3A95%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D23%7Bmargin%2Dleft%3A95%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D23%7Bposition%3Arelative%3Bright%3A95%2E83333%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D23%7Bposition%3Arelative%3Bleft%3A95%2E83333%25%7D%2Eel%2Dcol%2Dmd%2D24%7Bwidth%3A100%25%7D%2Eel%2Dcol%2Dmd%2Doffset%2D24%7Bmargin%2Dleft%3A100%25%7D%2Eel%2Dcol%2Dmd%2Dpull%2D24%7Bposition%3Arelative%3Bright%3A100%25%7D%2Eel%2Dcol%2Dmd%2Dpush%2D24%7Bposition%3Arelative%3Bleft%3A100%25%7D%7D%40media%20%28min%2Dwidth%3A1200px%29%7B%2Eel%2Dcol%2Dlg%2D1%7Bwidth%3A4%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D1%7Bmargin%2Dleft%3A4%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D1%7Bposition%3Arelative%3Bright%3A4%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D1%7Bposition%3Arelative%3Bleft%3A4%2E16667%25%7D%2Eel%2Dcol%2Dlg%2D2%7Bwidth%3A8%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D2%7Bmargin%2Dleft%3A8%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D2%7Bposition%3Arelative%3Bright%3A8%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D2%7Bposition%3Arelative%3Bleft%3A8%2E33333%25%7D%2Eel%2Dcol%2Dlg%2D3%7Bwidth%3A12%2E5%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D3%7Bmargin%2Dleft%3A12%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D3%7Bposition%3Arelative%3Bright%3A12%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D3%7Bposition%3Arelative%3Bleft%3A12%2E5%25%7D%2Eel%2Dcol%2Dlg%2D4%7Bwidth%3A16%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D4%7Bmargin%2Dleft%3A16%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D4%7Bposition%3Arelative%3Bright%3A16%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D4%7Bposition%3Arelative%3Bleft%3A16%2E66667%25%7D%2Eel%2Dcol%2Dlg%2D5%7Bwidth%3A20%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D5%7Bmargin%2Dleft%3A20%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D5%7Bposition%3Arelative%3Bright%3A20%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D5%7Bposition%3Arelative%3Bleft%3A20%2E83333%25%7D%2Eel%2Dcol%2Dlg%2D6%7Bwidth%3A25%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D6%7Bmargin%2Dleft%3A25%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D6%7Bposition%3Arelative%3Bright%3A25%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D6%7Bposition%3Arelative%3Bleft%3A25%25%7D%2Eel%2Dcol%2Dlg%2D7%7Bwidth%3A29%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D7%7Bmargin%2Dleft%3A29%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D7%7Bposition%3Arelative%3Bright%3A29%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D7%7Bposition%3Arelative%3Bleft%3A29%2E16667%25%7D%2Eel%2Dcol%2Dlg%2D8%7Bwidth%3A33%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D8%7Bmargin%2Dleft%3A33%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D8%7Bposition%3Arelative%3Bright%3A33%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D8%7Bposition%3Arelative%3Bleft%3A33%2E33333%25%7D%2Eel%2Dcol%2Dlg%2D9%7Bwidth%3A37%2E5%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D9%7Bmargin%2Dleft%3A37%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D9%7Bposition%3Arelative%3Bright%3A37%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D9%7Bposition%3Arelative%3Bleft%3A37%2E5%25%7D%2Eel%2Dcol%2Dlg%2D10%7Bwidth%3A41%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D10%7Bmargin%2Dleft%3A41%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D10%7Bposition%3Arelative%3Bright%3A41%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D10%7Bposition%3Arelative%3Bleft%3A41%2E66667%25%7D%2Eel%2Dcol%2Dlg%2D11%7Bwidth%3A45%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D11%7Bmargin%2Dleft%3A45%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D11%7Bposition%3Arelative%3Bright%3A45%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D11%7Bposition%3Arelative%3Bleft%3A45%2E83333%25%7D%2Eel%2Dcol%2Dlg%2D12%7Bwidth%3A50%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D12%7Bmargin%2Dleft%3A50%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D12%7Bposition%3Arelative%3Bright%3A50%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D12%7Bposition%3Arelative%3Bleft%3A50%25%7D%2Eel%2Dcol%2Dlg%2D13%7Bwidth%3A54%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D13%7Bmargin%2Dleft%3A54%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D13%7Bposition%3Arelative%3Bright%3A54%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D13%7Bposition%3Arelative%3Bleft%3A54%2E16667%25%7D%2Eel%2Dcol%2Dlg%2D14%7Bwidth%3A58%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D14%7Bmargin%2Dleft%3A58%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D14%7Bposition%3Arelative%3Bright%3A58%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D14%7Bposition%3Arelative%3Bleft%3A58%2E33333%25%7D%2Eel%2Dcol%2Dlg%2D15%7Bwidth%3A62%2E5%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D15%7Bmargin%2Dleft%3A62%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D15%7Bposition%3Arelative%3Bright%3A62%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D15%7Bposition%3Arelative%3Bleft%3A62%2E5%25%7D%2Eel%2Dcol%2Dlg%2D16%7Bwidth%3A66%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D16%7Bmargin%2Dleft%3A66%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D16%7Bposition%3Arelative%3Bright%3A66%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D16%7Bposition%3Arelative%3Bleft%3A66%2E66667%25%7D%2Eel%2Dcol%2Dlg%2D17%7Bwidth%3A70%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D17%7Bmargin%2Dleft%3A70%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D17%7Bposition%3Arelative%3Bright%3A70%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D17%7Bposition%3Arelative%3Bleft%3A70%2E83333%25%7D%2Eel%2Dcol%2Dlg%2D18%7Bwidth%3A75%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D18%7Bmargin%2Dleft%3A75%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D18%7Bposition%3Arelative%3Bright%3A75%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D18%7Bposition%3Arelative%3Bleft%3A75%25%7D%2Eel%2Dcol%2Dlg%2D19%7Bwidth%3A79%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D19%7Bmargin%2Dleft%3A79%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D19%7Bposition%3Arelative%3Bright%3A79%2E16667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D19%7Bposition%3Arelative%3Bleft%3A79%2E16667%25%7D%2Eel%2Dcol%2Dlg%2D20%7Bwidth%3A83%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D20%7Bmargin%2Dleft%3A83%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D20%7Bposition%3Arelative%3Bright%3A83%2E33333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D20%7Bposition%3Arelative%3Bleft%3A83%2E33333%25%7D%2Eel%2Dcol%2Dlg%2D21%7Bwidth%3A87%2E5%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D21%7Bmargin%2Dleft%3A87%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D21%7Bposition%3Arelative%3Bright%3A87%2E5%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D21%7Bposition%3Arelative%3Bleft%3A87%2E5%25%7D%2Eel%2Dcol%2Dlg%2D22%7Bwidth%3A91%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D22%7Bmargin%2Dleft%3A91%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D22%7Bposition%3Arelative%3Bright%3A91%2E66667%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D22%7Bposition%3Arelative%3Bleft%3A91%2E66667%25%7D%2Eel%2Dcol%2Dlg%2D23%7Bwidth%3A95%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D23%7Bmargin%2Dleft%3A95%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D23%7Bposition%3Arelative%3Bright%3A95%2E83333%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D23%7Bposition%3Arelative%3Bleft%3A95%2E83333%25%7D%2Eel%2Dcol%2Dlg%2D24%7Bwidth%3A100%25%7D%2Eel%2Dcol%2Dxs%2Doffset%2D24%7Bmargin%2Dleft%3A100%25%7D%2Eel%2Dcol%2Dxs%2Dpull%2D24%7Bposition%3Arelative%3Bright%3A100%25%7D%2Eel%2Dcol%2Dxs%2Dpush%2D24%7Bposition%3Arelative%3Bleft%3A100%25%7D%7D%2Eel%2Dtime%2Dspinner%7Bdisplay%3A%2Dms%2Dflexbox%3Bdisplay%3Aflex%3Bwidth%3A100%25%7D%2Eel%2Dbadge%2C%2Eel%2Dbadge%5F%5Fcontent%2C%2Eel%2Dspinner%7Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dspinner%7Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dspinner%2Dinner%7Banimation%3Arotate%202s%20linear%20infinite%3Bwidth%3A50px%3Bheight%3A50px%7D%2Eel%2Dspinner%2Dinner%20%2Epath%7Bstroke%3A%23ececec%3Bstroke%2Dlinecap%3Around%3Banimation%3Adash%201%2E5s%20ease%2Din%2Dout%20infinite%7D%40keyframes%20rotate%7B100%25%7Btransform%3Arotate%28360deg%29%7D%7D%40keyframes%20dash%7B0%25%7Bstroke%2Ddasharray%3A1%2C150%3Bstroke%2Ddashoffset%3A0%7D50%25%7Bstroke%2Ddasharray%3A90%2C150%3Bstroke%2Ddashoffset%3A%2D35%7D100%25%7Bstroke%2Ddasharray%3A90%2C150%3Bstroke%2Ddashoffset%3A%2D124%7D%7D%2Eel%2Dbadge%7Bposition%3Arelative%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dbadge%5F%5Fcontent%7Bbackground%2Dcolor%3A%23ff4949%3Bborder%2Dradius%3A10px%3Bcolor%3A%23fff%3Bfont%2Dsize%3A12px%3Bheight%3A18px%3Bline%2Dheight%3A18px%3Bpadding%3A0%206px%3Btext%2Dalign%3Acenter%3Bwhite%2Dspace%3Anowrap%3Bborder%3A1px%20solid%20%23fff%7D%2Eel%2Dbadge%5F%5Fcontent%2Eis%2Ddot%7Bwidth%3A8px%3Bheight%3A8px%3Bpadding%3A0%3Bright%3A0%3Bborder%2Dradius%3A50%25%7D%2Eel%2Dbadge%5F%5Fcontent%2Eis%2Dfixed%7Btop%3A0%3Bright%3A10px%3Bposition%3Aabsolute%3B%2Dms%2Dtransform%3AtranslateY%28%2D50%25%29%20translateX%28100%25%29%3Btransform%3AtranslateY%28%2D50%25%29%20translateX%28100%25%29%7D%2Eel%2Drate%5F%5Ficon%2C%2Eel%2Drate%5F%5Fitem%7Bposition%3Arelative%3Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dbadge%5F%5Fcontent%2Eis%2Dfixed%2Eis%2Ddot%7Bright%3A5px%7D%2Eel%2Dcard%7Bborder%3A1px%20solid%20%23D3DCE6%3Bborder%2Dradius%3A4px%3Bbackground%2Dcolor%3A%23fff%3Boverflow%3Ahidden%7D%2Eel%2Dcard%5F%5Fheader%7Bpadding%3A18px%2020px%3Bborder%2Dbottom%3A1px%20solid%20%23D3DCE6%3Bbox%2Dsizing%3Aborder%2Dbox%7D%2Eel%2Dcard%5F%5Fbody%7Bpadding%3A20px%7D%2Eel%2Drate%7Bheight%3A20px%3Bline%2Dheight%3A1%7D%2Eel%2Drate%5F%5Fitem%7Bfont%2Dsize%3A0%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Drate%5F%5Ficon%7Bfont%2Dsize%3A18px%3Bmargin%2Dright%3A6px%3Bcolor%3A%23C6D1DE%3Btransition%3A%2E3s%7D%2Eel%2Drate%5F%5Fdecimal%2C%2Eel%2Drate%5F%5Ficon%20%2Epath2%7Bposition%3Aabsolute%3Btop%3A0%3Bleft%3A0%7D%2Eel%2Drate%5F%5Ficon%2Ehover%7B%2Dms%2Dtransform%3Ascale%281%2E15%29%3Btransform%3Ascale%281%2E15%29%7D%2Eel%2Drate%5F%5Fdecimal%7Bdisplay%3Ainline%2Dblock%3Boverflow%3Ahidden%7D%2Eel%2Drate%5F%5Ftext%7Bfont%2Dsize%3A14px%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dsteps%7Bfont%2Dsize%3A0%7D%2Eel%2Dsteps%3E%3Alast%2Dchild%20%2Eel%2Dstep%5F%5Fline%7Bdisplay%3Anone%7D%2Eel%2Dstep%2Eis%2Dhorizontal%2C%2Eel%2Dstep%2Eis%2Dvertical%20%2Eel%2Dstep%5F%5Fhead%2C%2Eel%2Dstep%2Eis%2Dvertical%20%2Eel%2Dstep%5F%5Fmain%2C%2Eel%2Dstep%5F%5Fline%7Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dsteps%2Eis%2Dhorizontal%7Bwhite%2Dspace%3Anowrap%7D%2Eel%2Dstep%7Bposition%3Arelative%3Bvertical%2Dalign%3Atop%7D%2Eel%2Dstep%2Eis%2Dvertical%20%2Eel%2Dstep%5F%5Fmain%7Bpadding%2Dleft%3A10px%7D%2Eel%2Dstep%5F%5Fline%7Bposition%3Aabsolute%3Bborder%2Dcolor%3Ainherit%3Bbackground%2Dcolor%3A%23c0ccda%7D%2Eel%2Dstep%5F%5Fline%2Eis%2Dvertical%7Bwidth%3A2px%3Bbox%2Dsizing%3Aborder%2Dbox%3Btop%3A30px%3Bbottom%3A0%7D%2Eel%2Dstep%5F%5Fline%2Eis%2Dhorizontal%7Btop%3A15px%3Bheight%3A2px%3Bleft%3A30px%3Bright%3A0%7D%2Eel%2Dstep%5F%5Fline%2Eis%2Dicon%2Eis%2Dhorizontal%7Bright%3A4px%7D%2Eel%2Dstep%5F%5Fline%2Dinner%7Bdisplay%3Ainherit%3Bborder%2Dwidth%3A1px%3Bborder%2Dstyle%3Asolid%3Bborder%2Dcolor%3Ainherit%3Btransition%3Aall%20150ms%3Bwidth%3A0%3Bheight%3A0%7D%2Eel%2Dstep%5F%5Ficon%7Bdisplay%3Ablock%3Bline%2Dheight%3A28px%7D%2Eel%2Dstep%5F%5Ficon%3E%2A%7Bline%2Dheight%3Ainherit%3Bvertical%2Dalign%3Amiddle%7D%2Eel%2Dstep%5F%5Fhead%7Bwidth%3A28px%3Bheight%3A28px%3Bborder%2Dradius%3A50%25%3Bbackground%2Dcolor%3Atransparent%3Btext%2Dalign%3Acenter%3Bline%2Dheight%3A28px%3Bfont%2Dsize%3A28px%3Bvertical%2Dalign%3Atop%3Btransition%3Aall%20150ms%7D%2Eel%2Dstep%5F%5Fhead%2Eis%2Dfinish%7Bcolor%3A%2320a0ff%3Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dstep%5F%5Fhead%2Eis%2Derror%7Bcolor%3A%23ff4949%3Bborder%2Dcolor%3A%23ff4949%7D%2Eel%2Dstep%5F%5Fhead%2Eis%2Dsuccess%7Bcolor%3A%2313ce66%3Bborder%2Dcolor%3A%2313ce66%7D%2Eel%2Dstep%5F%5Fhead%2Eis%2Dprocess%2C%2Eel%2Dstep%5F%5Fhead%2Eis%2Dwait%7Bcolor%3A%23c0ccda%3Bborder%2Dcolor%3A%23c0ccda%7D%2Eel%2Dstep%5F%5Fhead%2Eis%2Dtext%7Bfont%2Dsize%3A14px%3Bborder%2Dwidth%3A2px%3Bborder%2Dstyle%3Asolid%7D%2Eel%2Dstep%5F%5Fhead%2Eis%2Dtext%2Eis%2Dfinish%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2320a0ff%3Bborder%2Dcolor%3A%2320a0ff%7D%2Eel%2Dstep%5F%5Fhead%2Eis%2Dtext%2Eis%2Derror%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23ff4949%3Bborder%2Dcolor%3A%23ff4949%7D%2Eel%2Dstep%5F%5Fhead%2Eis%2Dtext%2Eis%2Dsuccess%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%2313ce66%3Bborder%2Dcolor%3A%2313ce66%7D%2Eel%2Dstep%5F%5Fhead%2Eis%2Dtext%2Eis%2Dwait%7Bcolor%3A%23c0ccda%3Bbackground%2Dcolor%3A%23fff%3Bborder%2Dcolor%3A%23c0ccda%7D%2Eel%2Dstep%5F%5Fhead%2Eis%2Dtext%2Eis%2Dprocess%7Bcolor%3A%23fff%3Bbackground%2Dcolor%3A%23c0ccda%3Bborder%2Dcolor%3A%23c0ccda%7D%2Eel%2Dstep%5F%5Fmain%7Bwhite%2Dspace%3Anormal%3Bpadding%2Dright%3A10px%3Btext%2Dalign%3Aleft%7D%2Eel%2Dstep%5F%5Ftitle%7Bfont%2Dsize%3A14px%3Bline%2Dheight%3A32px%3Bdisplay%3Ainline%2Dblock%7D%2Eel%2Dstep%5F%5Ftitle%2Eis%2Dfinish%7Bfont%2Dweight%3A700%3Bcolor%3A%2320a0ff%7D%2Eel%2Dstep%5F%5Ftitle%2Eis%2Derror%7Bfont%2Dweight%3A700%3Bcolor%3A%23ff4949%7D%2Eel%2Dstep%5F%5Ftitle%2Eis%2Dsuccess%7Bfont%2Dweight%3A700%3Bcolor%3A%2313ce66%7D%2Eel%2Dstep%5F%5Ftitle%2Eis%2Dwait%7Bfont%2Dweight%3A400%3Bcolor%3A%2399a9bf%7D%2Eel%2Dstep%5F%5Ftitle%2Eis%2Dprocess%7Bfont%2Dweight%3A700%3Bcolor%3A%23475669%7D%2Eel%2Dstep%5F%5Fdescription%7Bfont%2Dsize%3A12px%3Bfont%2Dweight%3A400%3Bline%2Dheight%3A14px%7D%2Eel%2Dstep%5F%5Fdescription%2Eis%2Dfinish%7Bcolor%3A%2320a0ff%7D%2Eel%2Dstep%5F%5Fdescription%2Eis%2Derror%7Bcolor%3A%23ff4949%7D%2Eel%2Dstep%5F%5Fdescription%2Eis%2Dsuccess%7Bcolor%3A%2313ce66%7D%2Eel%2Dstep%5F%5Fdescription%2Eis%2Dwait%7Bcolor%3A%23c0ccda%7D%2Eel%2Dstep%5F%5Fdescription%2Eis%2Dprocess%7Bcolor%3A%238492a6%7D" rel="stylesheet" />
<script src="data:application/javascript;base64,IWZ1bmN0aW9uKGUsdCl7Im9iamVjdCI9PXR5cGVvZiBleHBvcnRzJiYib2JqZWN0Ij09dHlwZW9mIG1vZHVsZT9tb2R1bGUuZXhwb3J0cz10KHJlcXVpcmUoInZ1ZSIpKToiZnVuY3Rpb24iPT10eXBlb2YgZGVmaW5lJiZkZWZpbmUuYW1kP2RlZmluZSgiRUxFTUVOVCIsWyJ2dWUiXSx0KToib2JqZWN0Ij09dHlwZW9mIGV4cG9ydHM/ZXhwb3J0cy5FTEVNRU5UPXQocmVxdWlyZSgidnVlIikpOmUuRUxFTUVOVD10KGUuVnVlKX0odGhpcyxmdW5jdGlvbihlKXtyZXR1cm4gZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChpKXtpZihuW2ldKXJldHVybiBuW2ldLmV4cG9ydHM7dmFyIHM9bltpXT17ZXhwb3J0czp7fSxpZDppLGxvYWRlZDohMX07cmV0dXJuIGVbaV0uY2FsbChzLmV4cG9ydHMscyxzLmV4cG9ydHMsdCkscy5sb2FkZWQ9ITAscy5leHBvcnRzfXZhciBuPXt9O3JldHVybiB0Lm09ZSx0LmM9bix0LnA9Ii9kaXN0LyIsdCgwKX0oW2Z1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigxKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXZhciBzPW4oMiksbz1pKHMpLGE9big0NCkscj1pKGEpLGw9big0OCksdT1pKGwpLGQ9big1MiksYz1pKGQpLGY9big1NSksaD1pKGYpLHA9big1OSksbT1pKHApLGc9big2Myksdj1pKGcpLHk9big2NyksXz1pKHkpLGI9big3MiksQz1pKGIpLHc9big3NikseD1pKHcpLE09bigxNyksaz1pKE0pLEQ9big4MCksST1pKEQpLE49big4NCksUz1pKE4pLFQ9big4OCksRT1pKFQpLEE9big5MiksTz1pKEEpLFA9big5Niksaj1pKFApLCQ9bigxMDApLEw9aSgkKSxGPW4oMTA0KSxSPWkoRiksej1uKDcpLEI9aSh6KSxWPW4oNDIpLFc9aShWKSxIPW4oMTA4KSxZPWkoSCksVT1uKDExMikscT1pKFUpLFo9bigxMTYpLFE9aShaKSxHPW4oMTIwKSxLPWkoRyksSj1uKDEzMyksWD1pKEopLGVlPW4oMTM2KSx0ZT1pKGVlKSxuZT1uKDE2NCksaWU9aShuZSksc2U9bigxNjkpLG9lPWkoc2UpLGFlPW4oMTc0KSxyZT1pKGFlKSxsZT1uKDE3OSksdWU9aShsZSksZGU9bigxODMpLGNlPWkoZGUpLGZlPW4oMTg4KSxoZT1pKGZlKSxwZT1uKDE5MiksbWU9aShwZSksZ2U9bigxOTYpLHZlPWkoZ2UpLHllPW4oMjAwKSxfZT1pKHllKSxiZT1uKDIyOSksQ2U9aShiZSksd2U9bigyMzIpLHhlPWkod2UpLE1lPW4oMzEpLGtlPWkoTWUpLERlPW4oMjM2KSxJZT1pKERlKSxOZT1uKDI0NyksU2U9aShOZSksVGU9bigyNTEpLEVlPWkoVGUpLEFlPW4oMjU2KSxPZT1pKEFlKSxQZT1uKDI2MSksamU9aShQZSksJGU9bigyNjcpLExlPWkoJGUpLEZlPW4oMjcxKSxSZT1pKEZlKSx6ZT1uKDI3NSksQmU9aSh6ZSksVmU9bigyNzcpLFdlPWkoVmUpLEhlPW4oMjgyKSxZZT1pKEhlKSxVZT1uKDI5NikscWU9aShVZSksWmU9bigzMDApLFFlPWkoWmUpLEdlPW4oMzEwKSxLZT1pKEdlKSxKZT1uKDMxNCksWGU9aShKZSksZXQ9bigzMTgpLHR0PWkoZXQpLG50PW4oMzIyKSxpdD1pKG50KSxzdD1uKDMyNiksb3Q9aShzdCksYXQ9bigxMikscnQ9aShhdCksbHQ9ZnVuY3Rpb24gdXQoZSl7dmFyIHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O3V0Lmluc3RhbGxlZHx8KHJ0WyJkZWZhdWx0Il0udXNlKHQubG9jYWxlKSxlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KHJbImRlZmF1bHQiXS5uYW1lLHJbImRlZmF1bHQiXSksZS5jb21wb25lbnQodVsiZGVmYXVsdCJdLm5hbWUsdVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudChjWyJkZWZhdWx0Il0ubmFtZSxjWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KGhbImRlZmF1bHQiXS5uYW1lLGhbImRlZmF1bHQiXSksZS5jb21wb25lbnQobVsiZGVmYXVsdCJdLm5hbWUsbVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudCh2WyJkZWZhdWx0Il0ubmFtZSx2WyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KF9bImRlZmF1bHQiXS5uYW1lLF9bImRlZmF1bHQiXSksZS5jb21wb25lbnQoQ1siZGVmYXVsdCJdLm5hbWUsQ1siZGVmYXVsdCJdKSxlLmNvbXBvbmVudCh4WyJkZWZhdWx0Il0ubmFtZSx4WyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KGtbImRlZmF1bHQiXS5uYW1lLGtbImRlZmF1bHQiXSksZS5jb21wb25lbnQoSVsiZGVmYXVsdCJdLm5hbWUsSVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudChTWyJkZWZhdWx0Il0ubmFtZSxTWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KEVbImRlZmF1bHQiXS5uYW1lLEVbImRlZmF1bHQiXSksZS5jb21wb25lbnQoT1siZGVmYXVsdCJdLm5hbWUsT1siZGVmYXVsdCJdKSxlLmNvbXBvbmVudChqWyJkZWZhdWx0Il0ubmFtZSxqWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KExbImRlZmF1bHQiXS5uYW1lLExbImRlZmF1bHQiXSksZS5jb21wb25lbnQoUlsiZGVmYXVsdCJdLm5hbWUsUlsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudChCWyJkZWZhdWx0Il0ubmFtZSxCWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KFdbImRlZmF1bHQiXS5uYW1lLFdbImRlZmF1bHQiXSksZS5jb21wb25lbnQoWVsiZGVmYXVsdCJdLm5hbWUsWVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudChxWyJkZWZhdWx0Il0ubmFtZSxxWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KFFbImRlZmF1bHQiXS5uYW1lLFFbImRlZmF1bHQiXSksZS5jb21wb25lbnQoS1siZGVmYXVsdCJdLm5hbWUsS1siZGVmYXVsdCJdKSxlLmNvbXBvbmVudChYWyJkZWZhdWx0Il0ubmFtZSxYWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KHRlWyJkZWZhdWx0Il0ubmFtZSx0ZVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudChpZVsiZGVmYXVsdCJdLm5hbWUsaWVbImRlZmF1bHQiXSksZS5jb21wb25lbnQob2VbImRlZmF1bHQiXS5uYW1lLG9lWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KHJlWyJkZWZhdWx0Il0ubmFtZSxyZVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudCh1ZVsiZGVmYXVsdCJdLm5hbWUsdWVbImRlZmF1bHQiXSksZS5jb21wb25lbnQoaGVbImRlZmF1bHQiXS5uYW1lLGhlWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KG1lWyJkZWZhdWx0Il0ubmFtZSxtZVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudCh2ZVsiZGVmYXVsdCJdLm5hbWUsdmVbImRlZmF1bHQiXSksZS5jb21wb25lbnQoX2VbImRlZmF1bHQiXS5uYW1lLF9lWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KENlWyJkZWZhdWx0Il0ubmFtZSxDZVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudCh4ZVsiZGVmYXVsdCJdLm5hbWUseGVbImRlZmF1bHQiXSksZS5jb21wb25lbnQoa2VbImRlZmF1bHQiXS5uYW1lLGtlWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KEllWyJkZWZhdWx0Il0ubmFtZSxJZVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudChTZVsiZGVmYXVsdCJdLm5hbWUsU2VbImRlZmF1bHQiXSksZS5jb21wb25lbnQoT2VbImRlZmF1bHQiXS5uYW1lLE9lWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KExlWyJkZWZhdWx0Il0ubmFtZSxMZVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudChSZVsiZGVmYXVsdCJdLm5hbWUsUmVbImRlZmF1bHQiXSksZS5jb21wb25lbnQoQmVbImRlZmF1bHQiXS5uYW1lLEJlWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KFdlWyJkZWZhdWx0Il0ubmFtZSxXZVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudChZZVsiZGVmYXVsdCJdLm5hbWUsWWVbImRlZmF1bHQiXSksZS5jb21wb25lbnQocWVbImRlZmF1bHQiXS5uYW1lLHFlWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KEtlWyJkZWZhdWx0Il0ubmFtZSxLZVsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudChYZVsiZGVmYXVsdCJdLm5hbWUsWGVbImRlZmF1bHQiXSksZS5jb21wb25lbnQodHRbImRlZmF1bHQiXS5uYW1lLHR0WyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KGl0WyJkZWZhdWx0Il0ubmFtZSxpdFsiZGVmYXVsdCJdKSxlLmNvbXBvbmVudChvdFsiZGVmYXVsdCJdLm5hbWUsb3RbImRlZmF1bHQiXSksZS51c2UoamVbImRlZmF1bHQiXS5kaXJlY3RpdmUpLGUucHJvdG90eXBlLiRsb2FkaW5nPWplWyJkZWZhdWx0Il0uc2VydmljZSxlLnByb3RvdHlwZS4kbXNnYm94PWNlWyJkZWZhdWx0Il0sZS5wcm90b3R5cGUuJGFsZXJ0PWNlWyJkZWZhdWx0Il0uYWxlcnQsZS5wcm90b3R5cGUuJGNvbmZpcm09Y2VbImRlZmF1bHQiXS5jb25maXJtLGUucHJvdG90eXBlLiRwcm9tcHQ9Y2VbImRlZmF1bHQiXS5wcm9tcHQsZS5wcm90b3R5cGUuJG5vdGlmeT1FZVsiZGVmYXVsdCJdLGUucHJvdG90eXBlLiRtZXNzYWdlPVFlWyJkZWZhdWx0Il0pfTsidW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdyYmd2luZG93LlZ1ZSYmbHQod2luZG93LlZ1ZSksZS5leHBvcnRzPXt2ZXJzaW9uOiIxLjAuNCIsbG9jYWxlOnJ0WyJkZWZhdWx0Il0udXNlLGluc3RhbGw6bHQsTG9hZGluZzpqZVsiZGVmYXVsdCJdLFBhZ2luYXRpb246b1siZGVmYXVsdCJdLERpYWxvZzpyWyJkZWZhdWx0Il0sQXV0b2NvbXBsZXRlOnVbImRlZmF1bHQiXSxEcm9wZG93bjpjWyJkZWZhdWx0Il0sRHJvcGRvd25NZW51OmhbImRlZmF1bHQiXSxEcm9wZG93bkl0ZW06bVsiZGVmYXVsdCJdLE1lbnU6dlsiZGVmYXVsdCJdLFN1Ym1lbnU6X1siZGVmYXVsdCJdLE1lbnVJdGVtOkNbImRlZmF1bHQiXSxNZW51SXRlbUdyb3VwOnhbImRlZmF1bHQiXSxJbnB1dDprWyJkZWZhdWx0Il0sSW5wdXROdW1iZXI6SVsiZGVmYXVsdCJdLFJhZGlvOlNbImRlZmF1bHQiXSxSYWRpb0dyb3VwOkVbImRlZmF1bHQiXSxSYWRpb0J1dHRvbjpPWyJkZWZhdWx0Il0sQ2hlY2tib3g6alsiZGVmYXVsdCJdLENoZWNrYm94R3JvdXA6TFsiZGVmYXVsdCJdLFN3aXRjaDpSWyJkZWZhdWx0Il0sU2VsZWN0OkJbImRlZmF1bHQiXSxPcHRpb246V1siZGVmYXVsdCJdLE9wdGlvbkdyb3VwOllbImRlZmF1bHQiXSxCdXR0b246cVsiZGVmYXVsdCJdLEJ1dHRvbkdyb3VwOlFbImRlZmF1bHQiXSxUYWJsZTpLWyJkZWZhdWx0Il0sVGFibGVDb2x1bW46WFsiZGVmYXVsdCJdLERhdGVQaWNrZXI6dGVbImRlZmF1bHQiXSxUaW1lU2VsZWN0OmllWyJkZWZhdWx0Il0sVGltZVBpY2tlcjpvZVsiZGVmYXVsdCJdLFBvcG92ZXI6cmVbImRlZmF1bHQiXSxUb29sdGlwOnVlWyJkZWZhdWx0Il0sTWVzc2FnZUJveDpjZVsiZGVmYXVsdCJdLEJyZWFkY3J1bWI6aGVbImRlZmF1bHQiXSxCcmVhZGNydW1iSXRlbTptZVsiZGVmYXVsdCJdLEZvcm06dmVbImRlZmF1bHQiXSxGb3JtSXRlbTpfZVsiZGVmYXVsdCJdLFRhYnM6Q2VbImRlZmF1bHQiXSxUYWJQYW5lOnhlWyJkZWZhdWx0Il0sVGFnOmtlWyJkZWZhdWx0Il0sVHJlZTpJZVsiZGVmYXVsdCJdLEFsZXJ0OlNlWyJkZWZhdWx0Il0sTm90aWZpY2F0aW9uOkVlWyJkZWZhdWx0Il0sU2xpZGVyOk9lWyJkZWZhdWx0Il0sSWNvbjpMZVsiZGVmYXVsdCJdLFJvdzpSZVsiZGVmYXVsdCJdLENvbDpCZVsiZGVmYXVsdCJdLFVwbG9hZDpXZVsiZGVmYXVsdCJdLFByb2dyZXNzOlllWyJkZWZhdWx0Il0sU3Bpbm5lcjpxZVsiZGVmYXVsdCJdLE1lc3NhZ2U6UWVbImRlZmF1bHQiXSxCYWRnZTpLZVsiZGVmYXVsdCJdLENhcmQ6WGVbImRlZmF1bHQiXSxSYXRlOnR0WyJkZWZhdWx0Il0sU3RlcHM6aXRbImRlZmF1bHQiXSxTdGVwOm90WyJkZWZhdWx0Il19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMyksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9big0KSxvPWkocyksYT1uKDcpLHI9aShhKSxsPW4oNDIpLHU9aShsKSxkPW4oNDMpLGM9aShkKSxmPW4oMTEpLGg9aShmKTt0WyJkZWZhdWx0Il09e25hbWU6IkVsUGFnaW5hdGlvbiIsbWl4aW5zOltjWyJkZWZhdWx0Il1dLHByb3BzOntwYWdlU2l6ZTp7dHlwZTpOdW1iZXIsImRlZmF1bHQiOjEwfSxzbWFsbDpCb29sZWFuLHRvdGFsOk51bWJlcixwYWdlQ291bnQ6TnVtYmVyLGN1cnJlbnRQYWdlOnt0eXBlOk51bWJlciwiZGVmYXVsdCI6MX0sbGF5b3V0OnsiZGVmYXVsdCI6InByZXYsIHBhZ2VyLCBuZXh0LCBqdW1wZXIsIC0+LCB0b3RhbCJ9LHBhZ2VTaXplczp7dHlwZTpBcnJheSwiZGVmYXVsdCI6ZnVuY3Rpb24oKXtyZXR1cm5bMTAsMjAsMzAsNDAsNTAsMTAwXX19fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2ludGVybmFsQ3VycmVudFBhZ2U6MSxpbnRlcm5hbFBhZ2VTaXplOjB9fSxyZW5kZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSgiZGl2Iix7ImNsYXNzIjoiZWwtcGFnaW5hdGlvbiJ9LFtdKSxuPXRoaXMubGF5b3V0fHwiIjtpZihuKXt2YXIgaT17cHJldjplKCJwcmV2IixudWxsLFtdKSxqdW1wZXI6ZSgianVtcGVyIixudWxsLFtdKSxwYWdlcjplKCJwYWdlciIse2F0dHJzOntjdXJyZW50UGFnZTp0aGlzLmludGVybmFsQ3VycmVudFBhZ2UscGFnZUNvdW50OnRoaXMuaW50ZXJuYWxQYWdlQ291bnR9LG9uOntjaGFuZ2U6dGhpcy5oYW5kbGVDdXJyZW50Q2hhbmdlfX0sW10pLG5leHQ6ZSgibmV4dCIsbnVsbCxbXSksc2l6ZXM6ZSgic2l6ZXMiLHthdHRyczp7cGFnZVNpemVzOnRoaXMucGFnZVNpemVzfX0sW10pLHNsb3Q6ZSgic2xvdCIsbnVsbCxbXSksdG90YWw6ZSgidG90YWwiLG51bGwsW10pfSxzPW4uc3BsaXQoIiwiKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUudHJpbSgpfSksbz1lKCJkaXYiLHsiY2xhc3MiOiJlbC1wYWdpbmF0aW9uX19yaWdodHdyYXBwZXIifSxbXSksYT0hMTtyZXR1cm4gdGhpcy5zbWFsbCYmKHQuZGF0YVsiY2xhc3MiXSs9IiBlbC1wYWdpbmF0aW9uLS1zbWFsbCIpLHMuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4iLT4iPT09ZT92b2lkKGE9ITApOnZvaWQoYT9vLmNoaWxkcmVuLnB1c2goaVtlXSk6dC5jaGlsZHJlbi5wdXNoKGlbZV0pKX0pLGEmJnQuY2hpbGRyZW4ucHVzaChvKSx0fX0sY29tcG9uZW50czp7UHJldjp7cmVuZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlKCJidXR0b24iLHsiY2xhc3MiOlsiYnRuLXByZXYiLHtkaXNhYmxlZDp0aGlzLiRwYXJlbnQuaW50ZXJuYWxDdXJyZW50UGFnZTw9MX1dLG9uOntjbGljazp0aGlzLiRwYXJlbnQucHJldn19LFtlKCJpIix7ImNsYXNzIjoiZWwtaWNvbiBlbC1pY29uLWFycm93LWxlZnQifSxbXSldKX19LE5leHQ6e3JlbmRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZSgiYnV0dG9uIix7ImNsYXNzIjpbImJ0bi1uZXh0Iix7ZGlzYWJsZWQ6dGhpcy4kcGFyZW50LmludGVybmFsQ3VycmVudFBhZ2U9PT10aGlzLiRwYXJlbnQuaW50ZXJuYWxQYWdlQ291bnR8fDA9PT10aGlzLiRwYXJlbnQuaW50ZXJuYWxQYWdlQ291bnR9XSxvbjp7Y2xpY2s6dGhpcy4kcGFyZW50Lm5leHR9fSxbZSgiaSIseyJjbGFzcyI6ImVsLWljb24gZWwtaWNvbi1hcnJvdy1yaWdodCJ9LFtdKV0pfX0sU2l6ZXM6e21peGluczpbaFsiZGVmYXVsdCJdXSxwcm9wczp7cGFnZVNpemVzOkFycmF5fSx3YXRjaDp7cGFnZVNpemVzOntpbW1lZGlhdGU6ITAsaGFuZGxlcjpmdW5jdGlvbihlKXtBcnJheS5pc0FycmF5KGUpJiYodGhpcy4kcGFyZW50LmludGVybmFsUGFnZVNpemU9ZS5pbmRleE9mKHRoaXMuJHBhcmVudC5wYWdlU2l6ZSk+LTE/dGhpcy4kcGFyZW50LnBhZ2VTaXplOnRoaXMucGFnZVNpemVzWzBdKX19fSxyZW5kZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztyZXR1cm4gZSgic3BhbiIseyJjbGFzcyI6ImVsLXBhZ2luYXRpb25fX3NpemVzIn0sW2UoImVsLXNlbGVjdCIse2F0dHJzOnt2YWx1ZTp0aGlzLiRwYXJlbnQuaW50ZXJuYWxQYWdlU2l6ZX0sb246e2lucHV0OnRoaXMuaGFuZGxlQ2hhbmdlfX0sW3RoaXMucGFnZVNpemVzLm1hcChmdW5jdGlvbihuKXtyZXR1cm4gZSgiZWwtb3B0aW9uIix7YXR0cnM6e3ZhbHVlOm4sbGFiZWw6bisiICIrdC50KCJlbC5wYWdpbmF0aW9uLnBhZ2VzaXplIil9fSxbXSl9KV0pXSl9LGNvbXBvbmVudHM6e0VsU2VsZWN0OnJbImRlZmF1bHQiXSxFbE9wdGlvbjp1WyJkZWZhdWx0Il19LG1ldGhvZHM6e2hhbmRsZUNoYW5nZTpmdW5jdGlvbihlKXtlIT09dGhpcy4kcGFyZW50LmludGVybmFsUGFnZVNpemUmJih0aGlzLiRwYXJlbnQuaW50ZXJuYWxQYWdlU2l6ZT1lPXBhcnNlSW50KGUsMTApLHRoaXMuJHBhcmVudC4kZW1pdCgic2l6ZS1jaGFuZ2UiLGUpKX19fSxKdW1wZXI6e21peGluczpbaFsiZGVmYXVsdCJdXSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue29sZFZhbHVlOm51bGx9fSxtZXRob2RzOntoYW5kbGVGb2N1czpmdW5jdGlvbihlKXt0aGlzLm9sZFZhbHVlPWUudGFyZ2V0LnZhbHVlfSxoYW5kbGVDaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7dGhpcy4kcGFyZW50LmludGVybmFsQ3VycmVudFBhZ2U9dGhpcy4kcGFyZW50LmdldFZhbGlkQ3VycmVudFBhZ2UodC52YWx1ZSksdGhpcy5vbGRWYWx1ZT1udWxsfX0scmVuZGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlKCJzcGFuIix7ImNsYXNzIjoiZWwtcGFnaW5hdGlvbl9fanVtcCJ9LFt0aGlzLnQoImVsLnBhZ2luYXRpb24uZ290byIpLGUoImlucHV0Iix7ImNsYXNzIjoiZWwtcGFnaW5hdGlvbl9fZWRpdG9yIixhdHRyczp7dHlwZToibnVtYmVyIixtaW46MSxtYXg6dGhpcy5pbnRlcm5hbFBhZ2VDb3VudCxudW1iZXI6ITB9LGRvbVByb3BzOnt2YWx1ZTp0aGlzLiRwYXJlbnQuaW50ZXJuYWxDdXJyZW50UGFnZX0sb246e2NoYW5nZTp0aGlzLmhhbmRsZUNoYW5nZSxmb2N1czp0aGlzLmhhbmRsZUZvY3VzfSxzdHlsZTp7d2lkdGg6IjMwcHgifX0sW10pLHRoaXMudCgiZWwucGFnaW5hdGlvbi5wYWdlQ2xhc3NpZmllciIpXSl9fSxUb3RhbDp7bWl4aW5zOltoWyJkZWZhdWx0Il1dLHJlbmRlcjpmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHRoaXMuJHBhcmVudC50b3RhbD9lKCJzcGFuIix7ImNsYXNzIjoiZWwtcGFnaW5hdGlvbl9fdG90YWwifSxbdGhpcy50KCJlbC5wYWdpbmF0aW9uLnRvdGFsIix7dG90YWw6dGhpcy4kcGFyZW50LnRvdGFsfSldKToiIn19LFBhZ2VyOm9bImRlZmF1bHQiXX0sbWV0aG9kczp7Z2V0TWlncmF0aW5nQ29uZmlnOmZ1bmN0aW9uKCl7cmV0dXJue3Byb3BzOnt9LGV2ZW50czp7Y3VycmVudGNoYW5nZToiUGFnaW5hdGlvbjogY3VycmVudGNoYW5nZSBoYXMgYmVlbiByZW5hbWVkIHRvIGN1cnJlbnQtY2hhbmdlIixzaXplY2hhbmdlOiJQYWdpbmF0aW9uOiBzaXplY2hhbmdlIGhhcyBiZWVuIHJlbmFtZWQgdG8gc2l6ZS1jaGFuZ2UifX19LGhhbmRsZUN1cnJlbnRDaGFuZ2U6ZnVuY3Rpb24oZSl7dGhpcy5pbnRlcm5hbEN1cnJlbnRQYWdlPXRoaXMuZ2V0VmFsaWRDdXJyZW50UGFnZShlKX0scHJldjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaW50ZXJuYWxDdXJyZW50UGFnZS0xO3RoaXMuaW50ZXJuYWxDdXJyZW50UGFnZT10aGlzLmdldFZhbGlkQ3VycmVudFBhZ2UoZSl9LG5leHQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmludGVybmFsQ3VycmVudFBhZ2UrMTt0aGlzLmludGVybmFsQ3VycmVudFBhZ2U9dGhpcy5nZXRWYWxpZEN1cnJlbnRQYWdlKGUpfSxnZXRWYWxpZEN1cnJlbnRQYWdlOmZ1bmN0aW9uKGUpe2U9cGFyc2VJbnQoZSwxMCk7dmFyIHQ9Im51bWJlciI9PXR5cGVvZiB0aGlzLmludGVybmFsUGFnZUNvdW50LG49dm9pZCAwO3JldHVybiB0P2U8MT9uPTE6ZT50aGlzLmludGVybmFsUGFnZUNvdW50JiYobj10aGlzLmludGVybmFsUGFnZUNvdW50KTooaXNOYU4oZSl8fGU8MSkmJihuPTEpLHZvaWQgMD09PW4mJmlzTmFOKGUpP249MTowPT09biYmKG49MSksdm9pZCAwPT09bj9lOm59fSxjb21wdXRlZDp7aW50ZXJuYWxQYWdlQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4ibnVtYmVyIj09dHlwZW9mIHRoaXMudG90YWw/TWF0aC5jZWlsKHRoaXMudG90YWwvdGhpcy5pbnRlcm5hbFBhZ2VTaXplKToibnVtYmVyIj09dHlwZW9mIHRoaXMucGFnZUNvdW50P3RoaXMucGFnZUNvdW50Om51bGx9fSx3YXRjaDp7Y3VycmVudFBhZ2U6e2ltbWVkaWF0ZTohMCxoYW5kbGVyOmZ1bmN0aW9uKGUpe3RoaXMuaW50ZXJuYWxDdXJyZW50UGFnZT1lfX0scGFnZVNpemU6e2ltbWVkaWF0ZTohMCxoYW5kbGVyOmZ1bmN0aW9uKGUpe3RoaXMuaW50ZXJuYWxQYWdlU2l6ZT1lfX0saW50ZXJuYWxDdXJyZW50UGFnZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7ZT1wYXJzZUludChlLDEwKSxlPWlzTmFOKGUpP3R8fDE6dGhpcy5nZXRWYWxpZEN1cnJlbnRQYWdlKGUpLHZvaWQgMCE9PWU/dGhpcy4kbmV4dFRpY2soZnVuY3Rpb24oKXtuLmludGVybmFsQ3VycmVudFBhZ2U9ZSx0IT09ZSYmbi4kZW1pdCgiY3VycmVudC1jaGFuZ2UiLG4uaW50ZXJuYWxDdXJyZW50UGFnZSl9KTp0aGlzLiRlbWl0KCJjdXJyZW50LWNoYW5nZSIsdGhpcy5pbnRlcm5hbEN1cnJlbnRQYWdlKX0saW50ZXJuYWxQYWdlQ291bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5pbnRlcm5hbEN1cnJlbnRQYWdlO2U+MCYmMD09PXQ/dGhpcy5pbnRlcm5hbEN1cnJlbnRQYWdlPTE6dD5lJiYodGhpcy5pbnRlcm5hbEN1cnJlbnRQYWdlPTA9PT1lPzE6ZSl9fX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9big1KTt2YXIgbz1uKDYpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdFsiZGVmYXVsdCJdPXtuYW1lOiJFbFBhZ2VyIixwcm9wczp7Y3VycmVudFBhZ2U6TnVtYmVyLHBhZ2VDb3VudDpOdW1iZXJ9LHdhdGNoOntzaG93UHJldk1vcmU6ZnVuY3Rpb24oZSl7ZXx8KHRoaXMucXVpY2twcmV2SWNvbkNsYXNzPSJlbC1pY29uLW1vcmUiKX0sc2hvd05leHRNb3JlOmZ1bmN0aW9uKGUpe2V8fCh0aGlzLnF1aWNrbmV4dEljb25DbGFzcz0iZWwtaWNvbi1tb3JlIil9fSxtZXRob2RzOntvblBhZ2VyQ2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7aWYoIlVMIiE9PXQudGFnTmFtZSl7dmFyIG49TnVtYmVyKGUudGFyZ2V0LnRleHRDb250ZW50KSxpPXRoaXMucGFnZUNvdW50LHM9dGhpcy5jdXJyZW50UGFnZTt0LmNsYXNzTmFtZS5pbmRleE9mKCJtb3JlIikhPT0tMSYmKHQuY2xhc3NOYW1lLmluZGV4T2YoInF1aWNrcHJldiIpIT09LTE/bj1zLTU6dC5jbGFzc05hbWUuaW5kZXhPZigicXVpY2tuZXh0IikhPT0tMSYmKG49cys1KSksaXNOYU4obil8fChuPDEmJihuPTEpLG4+aSYmKG49aSkpLG4hPT1zJiZ0aGlzLiRlbWl0KCJjaGFuZ2UiLG4pfX19LGNvbXB1dGVkOntwYWdlcnM6ZnVuY3Rpb24oKXt2YXIgZT03LHQ9TnVtYmVyKHRoaXMuY3VycmVudFBhZ2UpLG49TnVtYmVyKHRoaXMucGFnZUNvdW50KSxpPSExLHM9ITE7bj5lJiYodD5lLTImJihpPSEwKSx0PG4tMiYmKHM9ITApKTt2YXIgbz1bXTtpZihpJiYhcylmb3IodmFyIGE9bi0oZS0yKSxyPWE7cjxuO3IrKylvLnB1c2gocik7ZWxzZSBpZighaSYmcylmb3IodmFyIGw9MjtsPGU7bCsrKW8ucHVzaChsKTtlbHNlIGlmKGkmJnMpZm9yKHZhciB1PU1hdGguZmxvb3IoZS8yKS0xLGQ9dC11O2Q8PXQrdTtkKyspby5wdXNoKGQpO2Vsc2UgZm9yKHZhciBjPTI7YzxuO2MrKylvLnB1c2goYyk7cmV0dXJuIHRoaXMuc2hvd1ByZXZNb3JlPWksdGhpcy5zaG93TmV4dE1vcmU9cyxvfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntjdXJyZW50Om51bGwsc2hvd1ByZXZNb3JlOiExLHNob3dOZXh0TW9yZTohMSxxdWlja25leHRJY29uQ2xhc3M6ImVsLWljb24tbW9yZSIscXVpY2twcmV2SWNvbkNsYXNzOiJlbC1pY29uLW1vcmUifX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgidWwiLHtzdGF0aWNDbGFzczoiZWwtcGFnZXIiLG9uOntjbGljazplLm9uUGFnZXJDbGlja319LFtlLnBhZ2VDb3VudD4wP2UuX2goImxpIix7c3RhdGljQ2xhc3M6Im51bWJlciIsImNsYXNzIjp7YWN0aXZlOjE9PT1lLmN1cnJlbnRQYWdlfX0sWyIxIl0pOmUuX2UoKSxlLnNob3dQcmV2TW9yZT9lLl9oKCJsaSIse3N0YXRpY0NsYXNzOiJlbC1pY29uIG1vcmUgYnRuLXF1aWNrcHJldiIsImNsYXNzIjpbZS5xdWlja3ByZXZJY29uQ2xhc3NdLG9uOnttb3VzZWVudGVyOmZ1bmN0aW9uKHQpe2UucXVpY2twcmV2SWNvbkNsYXNzPSJlbC1pY29uLWQtYXJyb3ctbGVmdCJ9LG1vdXNlbGVhdmU6ZnVuY3Rpb24odCl7ZS5xdWlja3ByZXZJY29uQ2xhc3M9ImVsLWljb24tbW9yZSJ9fX0pOmUuX2UoKSxlLl9sKGUucGFnZXJzLGZ1bmN0aW9uKHQpe3JldHVybiBlLl9oKCJsaSIse3N0YXRpY0NsYXNzOiJudW1iZXIiLCJjbGFzcyI6e2FjdGl2ZTplLmN1cnJlbnRQYWdlPT09dH19LFtlLl9zKHQpXSl9KSxlLnNob3dOZXh0TW9yZT9lLl9oKCJsaSIse3N0YXRpY0NsYXNzOiJlbC1pY29uIG1vcmUgYnRuLXF1aWNrbmV4dCIsImNsYXNzIjpbZS5xdWlja25leHRJY29uQ2xhc3NdLG9uOnttb3VzZWVudGVyOmZ1bmN0aW9uKHQpe2UucXVpY2tuZXh0SWNvbkNsYXNzPSJlbC1pY29uLWQtYXJyb3ctcmlnaHQifSxtb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe2UucXVpY2tuZXh0SWNvbkNsYXNzPSJlbC1pY29uLW1vcmUifX19KTplLl9lKCksZS5wYWdlQ291bnQ+MT9lLl9oKCJsaSIse3N0YXRpY0NsYXNzOiJudW1iZXIiLCJjbGFzcyI6e2FjdGl2ZTplLmN1cnJlbnRQYWdlPT09ZS5wYWdlQ291bnR9fSxbZS5fcyhlLnBhZ2VDb3VudCldKTplLl9lKCldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDgpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oOSk7dmFyIG89big0MSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxMCksbz1pKHMpLGE9bigxMSkscj1pKGEpLGw9bigxNyksdT1pKGwpLGQ9bigyMiksYz1pKGQpLGY9bigyOCksaD1pKGYpLHA9bigzMSksbT1pKHApLGc9bigzNSksdj1pKGcpLHk9bigzNyksXz1pKHkpLGI9bigzOSksQz1uKDQwKSx3PW4oMTIpO3RbImRlZmF1bHQiXT17bWl4aW5zOltvWyJkZWZhdWx0Il0sclsiZGVmYXVsdCJdXSxuYW1lOiJFbFNlbGVjdCIsY29tcG9uZW50TmFtZToiRWxTZWxlY3QiLGNvbXB1dGVkOntpY29uQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93Q2xvc2VJY29uPyJjaXJjbGUtY2xvc2UiOnRoaXMucmVtb3RlJiZ0aGlzLmZpbHRlcmFibGU/IiI6ImNhcmV0LXRvcCJ9LGRlYm91bmNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVtb3RlPzMwMDowfSxzaG93Q2xvc2VJY29uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuY2xlYXJhYmxlJiZ0aGlzLmlucHV0SG92ZXJpbmcmJiF0aGlzLm11bHRpcGxlJiZ2b2lkIDAhPT10aGlzLnZhbHVlJiYiIiE9PXRoaXMudmFsdWU7cmV0dXJuISF0aGlzLiRlbCYmKHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCl7dmFyIG49ZS4kZWwucXVlcnlTZWxlY3RvcigiLmVsLWlucHV0X19pY29uIik7biYmKHQ/KDAsYi5hZGRDbGFzcykobiwiaXMtc2hvdy1jbG9zZSIpOigwLGIucmVtb3ZlQ2xhc3MpKG4sImlzLXNob3ctY2xvc2UiKSl9KSx0KX0sZW1wdHlUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubG9hZGluZz90aGlzLnQoImVsLnNlbGVjdC5sb2FkaW5nIik6dGhpcy52b2lkUmVtb3RlUXVlcnk/KHRoaXMudm9pZFJlbW90ZVF1ZXJ5PSExLCExKTp0aGlzLmZpbHRlcmFibGUmJjA9PT10aGlzLmZpbHRlcmVkT3B0aW9uc0NvdW50P3RoaXMudCgiZWwuc2VsZWN0Lm5vTWF0Y2giKTowPT09dGhpcy5vcHRpb25zLmxlbmd0aD90aGlzLnQoImVsLnNlbGVjdC5ub0RhdGEiKTpudWxsfSxzaG93TmV3T3B0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMub3B0aW9ucy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuY3JlYXRlZH0pLnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIHQuY3VycmVudExhYmVsPT09ZS5xdWVyeX0pO3JldHVybiB0aGlzLmZpbHRlcmFibGUmJnRoaXMuYWxsb3dDcmVhdGUmJiIiIT09dGhpcy5xdWVyeSYmIXR9fSxjb21wb25lbnRzOntFbElucHV0OnVbImRlZmF1bHQiXSxFbFNlbGVjdE1lbnU6Y1siZGVmYXVsdCJdLEVsT3B0aW9uOmhbImRlZmF1bHQiXSxFbFRhZzptWyJkZWZhdWx0Il19LGRpcmVjdGl2ZXM6e0NsaWNrb3V0c2lkZTpfWyJkZWZhdWx0Il19LHByb3BzOntuYW1lOlN0cmluZyx2YWx1ZTp7fSxkaXNhYmxlZDpCb29sZWFuLGNsZWFyYWJsZTpCb29sZWFuLGZpbHRlcmFibGU6Qm9vbGVhbixhbGxvd0NyZWF0ZTpCb29sZWFuLGxvYWRpbmc6Qm9vbGVhbixyZW1vdGU6Qm9vbGVhbixyZW1vdGVNZXRob2Q6RnVuY3Rpb24sZmlsdGVyTWV0aG9kOkZ1bmN0aW9uLG11bHRpcGxlOkJvb2xlYW4sbXVsdGlwbGVMaW1pdDp7dHlwZTpOdW1iZXIsImRlZmF1bHQiOjB9LHBsYWNlaG9sZGVyOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6ZnVuY3Rpb24oKXtyZXR1cm4oMCx3LnQpKCJlbC5zZWxlY3QucGxhY2Vob2xkZXIiKX19fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue29wdGlvbnM6W10sc2VsZWN0ZWQ6dGhpcy5tdWx0aXBsZT9bXTp7fSxpc1NlbGVjdDohMCxpbnB1dExlbmd0aDoyMCxpbnB1dFdpZHRoOjAsY2FjaGVkUGxhY2VIb2xkZXI6IiIsb3B0aW9uc0NvdW50OjAsZmlsdGVyZWRPcHRpb25zQ291bnQ6MCxkcm9wZG93blVsOm51bGwsdmlzaWJsZTohMSxzZWxlY3RlZExhYmVsOiIiLGhvdmVySW5kZXg6LTEscXVlcnk6IiIsdm9pZFJlbW90ZVF1ZXJ5OiExLGJvdHRvbU92ZXJmbG93QmVmb3JlSGlkZGVuOjAsdG9wT3ZlcmZsb3dCZWZvcmVIaWRkZW46MCxvcHRpb25zQWxsRGlzYWJsZWQ6ITEsaW5wdXRIb3ZlcmluZzohMSxjdXJyZW50UGxhY2Vob2xkZXI6IiJ9fSx3YXRjaDp7cGxhY2Vob2xkZXI6ZnVuY3Rpb24oZSl7dGhpcy5jdXJyZW50UGxhY2Vob2xkZXI9ZX0sdmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy5tdWx0aXBsZSYmKHRoaXMucmVzZXRJbnB1dEhlaWdodCgpLGUubGVuZ3RoPjA/dGhpcy5jdXJyZW50UGxhY2Vob2xkZXI9IiI6dGhpcy5jdXJyZW50UGxhY2Vob2xkZXI9dGhpcy5jYWNoZWRQbGFjZUhvbGRlciksdGhpcy5zZWxlY3RlZD10aGlzLmdldFNlbGVjdGVkKCksdGhpcy5maWx0ZXJhYmxlJiYhdGhpcy5tdWx0aXBsZSYmKHRoaXMuaW5wdXRMZW5ndGg9MjApLHRoaXMuJGVtaXQoImNoYW5nZSIsZSksdGhpcy5kaXNwYXRjaCgiRWxGb3JtSXRlbSIsImVsLmZvcm0uY2hhbmdlIixlKX0scXVlcnk6ZnVuY3Rpb24oZSl7dGhpcy5icm9hZGNhc3QoIkVsU2VsZWN0RHJvcGRvd24iLCJ1cGRhdGVQb3BwZXIiKSx0aGlzLmhvdmVySW5kZXg9LTEsdGhpcy5tdWx0aXBsZSYmdGhpcy5maWx0ZXJhYmxlJiZ0aGlzLnJlc2V0SW5wdXRIZWlnaHQoKSx0aGlzLnJlbW90ZSYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucmVtb3RlTWV0aG9kPyh0aGlzLmhvdmVySW5kZXg9LTEsdGhpcy5yZW1vdGVNZXRob2QoZSksdGhpcy52b2lkUmVtb3RlUXVlcnk9IiI9PT1lLHRoaXMuYnJvYWRjYXN0KCJFbE9wdGlvbiIsInJlc2V0SW5kZXgiKSk6ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuZmlsdGVyTWV0aG9kP3RoaXMuZmlsdGVyTWV0aG9kKGUpOih0aGlzLmZpbHRlcmVkT3B0aW9uc0NvdW50PXRoaXMub3B0aW9uc0NvdW50LHRoaXMuYnJvYWRjYXN0KCJFbE9wdGlvbiIsInF1ZXJ5Q2hhbmdlIixlKSl9LHZpc2libGU6ZnVuY3Rpb24oZSl7aWYoZSl7aWYodGhpcy5oYW5kbGVJY29uU2hvdygpLHRoaXMuYnJvYWRjYXN0KCJFbFNlbGVjdERyb3Bkb3duIiwidXBkYXRlUG9wcGVyIiksdGhpcy5maWx0ZXJhYmxlJiYodGhpcy5xdWVyeT10aGlzLnNlbGVjdGVkTGFiZWwsdGhpcy5tdWx0aXBsZT90aGlzLiRyZWZzLmlucHV0LmZvY3VzKCk6dGhpcy5icm9hZGNhc3QoIkVsSW5wdXQiLCJpbnB1dFNlbGVjdCIpKSwhdGhpcy5kcm9wZG93blVsKXt2YXIgdD10aGlzLiRyZWZzLnBvcHBlci4kZWwuY2hpbGROb2Rlczt0aGlzLmRyb3Bkb3duVWw9W10uZmlsdGVyLmNhbGwodCxmdW5jdGlvbihlKXtyZXR1cm4iVUwiPT09ZS50YWdOYW1lfSlbMF19IXRoaXMubXVsdGlwbGUmJnRoaXMuZHJvcGRvd25VbCYmdGhpcy5zZXRPdmVyZmxvdygpfWVsc2UgdGhpcy4kcmVmcy5yZWZlcmVuY2UuJGVsLnF1ZXJ5U2VsZWN0b3IoImlucHV0IikuYmx1cigpLHRoaXMuaGFuZGxlSWNvbkhpZGUoKSx0aGlzLmJyb2FkY2FzdCgiRWxTZWxlY3REcm9wZG93biIsImRlc3Ryb3lQb3BwZXIiKSx0aGlzLiRyZWZzLmlucHV0JiZ0aGlzLiRyZWZzLmlucHV0LmJsdXIoKSx0aGlzLnF1ZXJ5PSIiLHRoaXMuc2VsZWN0ZWRMYWJlbD0iIix0aGlzLnJlc2V0SG92ZXJJbmRleCgpLHRoaXMubXVsdGlwbGV8fCh0aGlzLmdldE92ZXJmbG93cygpLHRoaXMuc2VsZWN0ZWQmJnRoaXMuc2VsZWN0ZWQudmFsdWUmJih0aGlzLnNlbGVjdGVkTGFiZWw9dGhpcy5zZWxlY3RlZC5jdXJyZW50TGFiZWwpKX0sb3B0aW9uczpmdW5jdGlvbihlKXt0aGlzLm9wdGlvbnNBbGxEaXNhYmxlZD1lLmxlbmd0aD09PWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmRpc2FibGVkPT09ITB9KS5sZW5ndGgsdGhpcy5tdWx0aXBsZSYmdGhpcy5yZXNldElucHV0SGVpZ2h0KCl9fSxtZXRob2RzOntoYW5kbGVJY29uSGlkZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuJGVsLnF1ZXJ5U2VsZWN0b3IoIi5lbC1pbnB1dF9faWNvbiIpO2UmJigwLGIucmVtb3ZlQ2xhc3MpKGUsImlzLXJldmVyc2UiKX0saGFuZGxlSWNvblNob3c6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRlbC5xdWVyeVNlbGVjdG9yKCIuZWwtaW5wdXRfX2ljb24iKTtlJiYhKDAsYi5oYXNDbGFzcykoZSwiZWwtaWNvbi1jaXJjbGUtY2xvc2UiKSYmKDAsYi5hZGRDbGFzcykoZSwiaXMtcmV2ZXJzZSIpfSxnZXRPdmVyZmxvd3M6ZnVuY3Rpb24oKXtpZih0aGlzLmRyb3Bkb3duVWwmJnRoaXMuc2VsZWN0ZWQmJnRoaXMuc2VsZWN0ZWQuJGVsKXt2YXIgZT10aGlzLnNlbGVjdGVkLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSx0PXRoaXMuJHJlZnMucG9wcGVyLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTt0aGlzLmJvdHRvbU92ZXJmbG93QmVmb3JlSGlkZGVuPWUuYm90dG9tLXQuYm90dG9tLHRoaXMudG9wT3ZlcmZsb3dCZWZvcmVIaWRkZW49ZS50b3AtdC50b3B9fSxzZXRPdmVyZmxvdzpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5ib3R0b21PdmVyZmxvd0JlZm9yZUhpZGRlbj4wP3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCl7ZS5kcm9wZG93blVsLnNjcm9sbFRvcCs9ZS5ib3R0b21PdmVyZmxvd0JlZm9yZUhpZGRlbn0pOnRoaXMudG9wT3ZlcmZsb3dCZWZvcmVIaWRkZW48MCYmdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24oKXtlLmRyb3Bkb3duVWwuc2Nyb2xsVG9wKz1lLnRvcE92ZXJmbG93QmVmb3JlSGlkZGVufSl9LGdldFNlbGVjdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZighdGhpcy5tdWx0aXBsZSl7dmFyIHQ9dGhpcy5vcHRpb25zLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC52YWx1ZT09PWUudmFsdWV9KVswXXx8e3ZhbHVlOnRoaXMudmFsdWUsY3VycmVudExhYmVsOnRoaXMudmFsdWV9O3JldHVybiB0aGlzLnNlbGVjdGVkTGFiZWw9dC5jdXJyZW50TGFiZWwsdH12YXIgbj1bXTtyZXR1cm4gQXJyYXkuaXNBcnJheSh0aGlzLnZhbHVlKSYmdGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBpPWUub3B0aW9ucy5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWU9PT10fSlbMF07aT9uLnB1c2goaSk6bi5wdXNoKHt2YWx1ZTplLnZhbHVlLGN1cnJlbnRMYWJlbDp0LGhpdFN0YXRlOiExfSl9KSxufSxoYW5kbGVJY29uQ2xpY2s6ZnVuY3Rpb24oZSl7ImNpcmNsZS1jbG9zZSI9PT10aGlzLmljb25DbGFzcz90aGlzLmRlbGV0ZVNlbGVjdGVkKGUpOnRoaXMudG9nZ2xlTWVudSgpfSxoYW5kbGVNb3VzZURvd246ZnVuY3Rpb24oZSl7IklOUFVUIj09PWUudGFyZ2V0LnRhZ05hbWUmJnRoaXMudmlzaWJsZSYmKHRoaXMuaGFuZGxlQ2xvc2UoKSxlLnByZXZlbnREZWZhdWx0KCkpfSxkb0Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLiRyZWZzLnBvcHBlci5kb0Rlc3Ryb3koKX0saGFuZGxlQ2xvc2U6ZnVuY3Rpb24oKXt0aGlzLnZpc2libGU9ITF9LHRvZ2dsZUxhc3RPcHRpb25IaXRTdGF0ZTpmdW5jdGlvbihlKXtpZihBcnJheS5pc0FycmF5KHRoaXMuc2VsZWN0ZWQpKXt2YXIgdD10aGlzLnNlbGVjdGVkW3RoaXMuc2VsZWN0ZWQubGVuZ3RoLTFdO2lmKHQpcmV0dXJuIGU9PT0hMHx8ZT09PSExPyh0LmhpdFN0YXRlPWUsZSk6KHQuaGl0U3RhdGU9IXQuaGl0U3RhdGUsdC5oaXRTdGF0ZSl9fSxkZWxldGVQcmV2VGFnOmZ1bmN0aW9uKGUpe2UudGFyZ2V0LnZhbHVlLmxlbmd0aDw9MCYmIXRoaXMudG9nZ2xlTGFzdE9wdGlvbkhpdFN0YXRlKCkmJnRoaXMudmFsdWUucG9wKCl9LG1hbmFnZVBsYWNlaG9sZGVyOmZ1bmN0aW9uKCl7IiIhPT10aGlzLmN1cnJlbnRQbGFjZWhvbGRlciYmKHRoaXMuY3VycmVudFBsYWNlaG9sZGVyPXRoaXMuJHJlZnMuaW5wdXQudmFsdWU/IiI6dGhpcy5jYWNoZWRQbGFjZUhvbGRlcil9LHJlc2V0SW5wdXRTdGF0ZTpmdW5jdGlvbihlKXs4IT09ZS5rZXlDb2RlJiZ0aGlzLnRvZ2dsZUxhc3RPcHRpb25IaXRTdGF0ZSghMSksdGhpcy5pbnB1dExlbmd0aD0xNSp0aGlzLiRyZWZzLmlucHV0LnZhbHVlLmxlbmd0aCsyMH0scmVzZXRJbnB1dEhlaWdodDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy4kbmV4dFRpY2soZnVuY3Rpb24oKXt2YXIgdD1lLiRyZWZzLnJlZmVyZW5jZS4kZWwuY2hpbGROb2RlcyxuPVtdLmZpbHRlci5jYWxsKHQsZnVuY3Rpb24oZSl7cmV0dXJuIklOUFVUIj09PWUudGFnTmFtZX0pWzBdO24uc3R5bGUuaGVpZ2h0PU1hdGgubWF4KGUuJHJlZnMudGFncy5jbGllbnRIZWlnaHQrNiwic21hbGwiPT09ZS5zaXplPzI4OjM2KSsicHgiLGUuYnJvYWRjYXN0KCJFbFNlbGVjdERyb3Bkb3duIiwidXBkYXRlUG9wcGVyIil9KX0scmVzZXRIb3ZlckluZGV4OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5tdWx0aXBsZT9lLnNlbGVjdGVkLmxlbmd0aD4wP2UuaG92ZXJJbmRleD1NYXRoLm1pbi5hcHBseShudWxsLGUuc2VsZWN0ZWQubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBlLm9wdGlvbnMuaW5kZXhPZih0KX0pKTplLmhvdmVySW5kZXg9LTE6ZS5ob3ZlckluZGV4PWUub3B0aW9ucy5pbmRleE9mKGUuc2VsZWN0ZWQpfSwzMDApfSxoYW5kbGVPcHRpb25TZWxlY3Q6ZnVuY3Rpb24oZSl7aWYodGhpcy5tdWx0aXBsZSl7dmFyIHQ9LTE7dGhpcy52YWx1ZS5mb3JFYWNoKGZ1bmN0aW9uKG4saSl7bj09PWUudmFsdWUmJih0PWkpfSksdD4tMT90aGlzLnZhbHVlLnNwbGljZSh0LDEpOih0aGlzLm11bHRpcGxlTGltaXQ8PTB8fHRoaXMudmFsdWUubGVuZ3RoPHRoaXMubXVsdGlwbGVMaW1pdCkmJnRoaXMudmFsdWUucHVzaChlLnZhbHVlKSxlLmNyZWF0ZWQmJih0aGlzLnF1ZXJ5PSIiLHRoaXMuaW5wdXRMZW5ndGg9MjAsdGhpcy4kcmVmcy5pbnB1dC5mb2N1cygpKX1lbHNlIHRoaXMuJGVtaXQoImlucHV0IixlLnZhbHVlKSx0aGlzLnZpc2libGU9ITF9LHRvZ2dsZU1lbnU6ZnVuY3Rpb24oKXt0aGlzLmZpbHRlcmFibGUmJiIiPT09dGhpcy5xdWVyeSYmdGhpcy52aXNpYmxlfHx0aGlzLmRpc2FibGVkfHwodGhpcy52aXNpYmxlPSF0aGlzLnZpc2libGUpfSxuYXZpZ2F0ZU9wdGlvbnM6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudmlzaWJsZT92b2lkKDAhPT10aGlzLm9wdGlvbnMubGVuZ3RoJiYwIT09dGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudCYmKHRoaXMub3B0aW9uc0FsbERpc2FibGVkfHwoIm5leHQiPT09ZSYmKHRoaXMuaG92ZXJJbmRleCsrLHRoaXMuaG92ZXJJbmRleD09PXRoaXMub3B0aW9ucy5sZW5ndGgmJih0aGlzLmhvdmVySW5kZXg9MCksdGhpcy5yZXNldFNjcm9sbFRvcCgpLHRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdLmRpc2FibGVkIT09ITAmJnRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdLmdyb3VwRGlzYWJsZWQhPT0hMCYmdGhpcy5vcHRpb25zW3RoaXMuaG92ZXJJbmRleF0udmlzaWJsZXx8dGhpcy5uYXZpZ2F0ZU9wdGlvbnMoIm5leHQiKSksInByZXYiPT09ZSYmKHRoaXMuaG92ZXJJbmRleC0tLHRoaXMuaG92ZXJJbmRleDwwJiYodGhpcy5ob3ZlckluZGV4PXRoaXMub3B0aW9ucy5sZW5ndGgtMSksdGhpcy5yZXNldFNjcm9sbFRvcCgpLHRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdLmRpc2FibGVkIT09ITAmJnRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdLmdyb3VwRGlzYWJsZWQhPT0hMCYmdGhpcy5vcHRpb25zW3RoaXMuaG92ZXJJbmRleF0udmlzaWJsZXx8dGhpcy5uYXZpZ2F0ZU9wdGlvbnMoInByZXYiKSkpKSk6dm9pZCh0aGlzLnZpc2libGU9ITApfSxyZXNldFNjcm9sbFRvcDpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20tdGhpcy4kcmVmcy5wb3BwZXIuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSx0PXRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdLiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AtdGhpcy4kcmVmcy5wb3BwZXIuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtlPjAmJih0aGlzLmRyb3Bkb3duVWwuc2Nyb2xsVG9wKz1lKSx0PDAmJih0aGlzLmRyb3Bkb3duVWwuc2Nyb2xsVG9wKz10KX0sc2VsZWN0T3B0aW9uOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zW3RoaXMuaG92ZXJJbmRleF0mJnRoaXMuaGFuZGxlT3B0aW9uU2VsZWN0KHRoaXMub3B0aW9uc1t0aGlzLmhvdmVySW5kZXhdKX0sZGVsZXRlU2VsZWN0ZWQ6ZnVuY3Rpb24oZSl7ZS5zdG9wUHJvcGFnYXRpb24oKSx0aGlzLiRlbWl0KCJpbnB1dCIsIiIpLHRoaXMuJGVtaXQoImNoYW5nZSIsIiIpLHRoaXMudmlzaWJsZT0hMX0sZGVsZXRlVGFnOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5zZWxlY3RlZC5pbmRleE9mKHQpO24+LTEmJnRoaXMudmFsdWUuc3BsaWNlKG4sMSksZS5zdG9wUHJvcGFnYXRpb24oKX0sb25JbnB1dENoYW5nZTpmdW5jdGlvbigpe3RoaXMuZmlsdGVyYWJsZSYmKHRoaXMucXVlcnk9dGhpcy5zZWxlY3RlZExhYmVsKX0sb25PcHRpb25EZXN0cm95OmZ1bmN0aW9uKGUpe3RoaXMub3B0aW9uc0NvdW50LS0sdGhpcy5maWx0ZXJlZE9wdGlvbnNDb3VudC0tO3ZhciB0PXRoaXMub3B0aW9ucy5pbmRleE9mKGUpO3Q+LTEmJnRoaXMub3B0aW9ucy5zcGxpY2UodCwxKSx0aGlzLmJyb2FkY2FzdCgiRWxPcHRpb24iLCJyZXNldEluZGV4Iil9LHJlc2V0SW5wdXRXaWR0aDpmdW5jdGlvbigpe3RoaXMuaW5wdXRXaWR0aD10aGlzLiRyZWZzLnJlZmVyZW5jZS4kZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGh9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmNhY2hlZFBsYWNlSG9sZGVyPXRoaXMuY3VycmVudFBsYWNlaG9sZGVyPXRoaXMucGxhY2Vob2xkZXIsdGhpcy5tdWx0aXBsZSYmIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSkmJnRoaXMuJGVtaXQoImlucHV0IixbXSksdGhpcy5tdWx0aXBsZXx8dGhpcy52YWx1ZSYmIUFycmF5LmlzQXJyYXkodGhpcy52YWx1ZSl8fHRoaXMuJGVtaXQoImlucHV0IiwiIiksdGhpcy5yZW1vdGUmJih0aGlzLnZvaWRSZW1vdGVRdWVyeT0hMCksdGhpcy5kZWJvdW5jZWRPbklucHV0Q2hhbmdlPSgwLHZbImRlZmF1bHQiXSkodGhpcy5kZWJvdW5jZSxmdW5jdGlvbigpe2Uub25JbnB1dENoYW5nZSgpfSksdGhpcy4kb24oImhhbmRsZU9wdGlvbkNsaWNrIix0aGlzLmhhbmRsZU9wdGlvblNlbGVjdCksdGhpcy4kb24oIm9uT3B0aW9uRGVzdHJveSIsdGhpcy5vbk9wdGlvbkRlc3Ryb3kpfSxtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLm11bHRpcGxlJiZBcnJheS5pc0FycmF5KHRoaXMudmFsdWUpJiZ0aGlzLnZhbHVlLmxlbmd0aD4wJiYodGhpcy5jdXJyZW50UGxhY2Vob2xkZXI9IiIpLCgwLEMuYWRkUmVzaXplTGlzdGVuZXIpKHRoaXMuJGVsLHRoaXMucmVzZXRJbnB1dFdpZHRoKSx0aGlzLnNlbGVjdGVkPXRoaXMuZ2V0U2VsZWN0ZWQoKSx0aGlzLnJlbW90ZSYmdGhpcy5tdWx0aXBsZSYmdGhpcy5yZXNldElucHV0SGVpZ2h0KCksdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24oKXtlLiRyZWZzLnJlZmVyZW5jZS4kZWwmJihlLmlucHV0V2lkdGg9ZS4kcmVmcy5yZWZlcmVuY2UuJGVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKX0pfSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXt0aGlzLnJlc2V0SW5wdXRXaWR0aCYmKDAsQy5yZW1vdmVSZXNpemVMaXN0ZW5lcikodGhpcy4kZWwsdGhpcy5yZXNldElucHV0V2lkdGgpfX19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0LGkpe3RoaXMuJGNoaWxkcmVuLmZvckVhY2goZnVuY3Rpb24ocyl7dmFyIG89cy4kb3B0aW9ucy5jb21wb25lbnROYW1lO289PT1lP3MuJGVtaXQuYXBwbHkocyxbdF0uY29uY2F0KGkpKTpuLmFwcGx5KHMsW2UsdF0uY29uY2F0KFtpXSkpfSl9dC5fX2VzTW9kdWxlPSEwLHRbImRlZmF1bHQiXT17bWV0aG9kczp7ZGlzcGF0Y2g6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgaT10aGlzLiRwYXJlbnR8fHRoaXMuJHJvb3Qscz1pLiRvcHRpb25zLmNvbXBvbmVudE5hbWU7aSYmKCFzfHxzIT09ZSk7KWk9aS4kcGFyZW50LGkmJihzPWkuJG9wdGlvbnMuY29tcG9uZW50TmFtZSk7aSYmaS4kZW1pdC5hcHBseShpLFt0XS5jb25jYXQobikpfSxicm9hZGNhc3Q6ZnVuY3Rpb24oZSx0LGkpe24uY2FsbCh0aGlzLGUsdCxpKX19fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIGk9bigxMik7dFsiZGVmYXVsdCJdPXttZXRob2RzOnt0OmZ1bmN0aW9uKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gaS50LmFwcGx5KHRoaXMsdCl9fX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITAsdC51c2U9dC50PXZvaWQgMDt2YXIgcz1uKDEzKSxvPWkocyksYT1uKDE0KSxyPWkoYSksbD1uKDE1KSx1PWkobCksZD1uKDE2KSxjPWkoZCksZj0oMCxjWyJkZWZhdWx0Il0pKHJbImRlZmF1bHQiXSksaD1vWyJkZWZhdWx0Il0scD0hMSxtPXQudD1mdW5jdGlvbihlLHQpe3ZhciBuPU9iamVjdC5nZXRQcm90b3R5cGVPZih0aGlzfHxyWyJkZWZhdWx0Il0pLiR0O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiBwfHwocD0hMCxyWyJkZWZhdWx0Il0ubG9jYWxlKHJbImRlZmF1bHQiXS5jb25maWcubGFuZywoMCx1WyJkZWZhdWx0Il0pKGgsclsiZGVmYXVsdCJdLmxvY2FsZShyWyJkZWZhdWx0Il0uY29uZmlnLmxhbmcpfHx7fSx7Y2xvbmU6ITB9KSkpLG4uYXBwbHkodGhpcyxbZSx0XSk7Zm9yKHZhciBpPWUuc3BsaXQoIi4iKSxzPWgsbz0wLGE9aS5sZW5ndGg7bzxhO28rKyl7dmFyIGw9aVtvXSxkPXNbbF07aWYobz09PWEtMSlyZXR1cm4gZihkLHQpO2lmKCFkKXJldHVybiIiO3M9ZH1yZXR1cm4iIn0sZz10LnVzZT1mdW5jdGlvbihlKXtoPWV8fGh9O3RbImRlZmF1bHQiXT17dXNlOmcsdDptfX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHRbImRlZmF1bHQiXT17ZWw6e2RhdGVwaWNrZXI6e25vdzoi5q2k5Yi7Iix0b2RheToi5LuK5aSpIixjYW5jZWw6IuWPlua2iCIsY2xlYXI6Iua4heepuiIsY29uZmlybToi56Gu5a6aIixzZWxlY3REYXRlOiLpgInmi6nml6XmnJ8iLHNlbGVjdFRpbWU6IumAieaLqeaXtumXtCIsc3RhcnREYXRlOiLlvIDlp4vml6XmnJ8iLHN0YXJ0VGltZToi5byA5aeL5pe26Ze0IixlbmREYXRlOiLnu5PmnZ/ml6XmnJ8iLGVuZFRpbWU6Iue7k+adn+aXtumXtCIseWVhcjoi5bm0Iixtb250aDE6IjEg5pyIIixtb250aDI6IjIg5pyIIixtb250aDM6IjMg5pyIIixtb250aDQ6IjQg5pyIIixtb250aDU6IjUg5pyIIixtb250aDY6IjYg5pyIIixtb250aDc6Ijcg5pyIIixtb250aDg6Ijgg5pyIIixtb250aDk6Ijkg5pyIIixtb250aDEwOiIxMCDmnIgiLG1vbnRoMTE6IjExIOaciCIsbW9udGgxMjoiMTIg5pyIIix3ZWVrczp7c3VuOiLml6UiLG1vbjoi5LiAIix0dWU6IuS6jCIsd2VkOiLkuIkiLHRodToi5ZubIixmcmk6IuS6lCIsc2F0OiLlha0ifSxtb250aHM6e2phbjoi5LiA5pyIIixmZWI6IuS6jOaciCIsbWFyOiLkuInmnIgiLGFwcjoi5Zub5pyIIixtYXk6IuS6lOaciCIsanVuOiLlha3mnIgiLGp1bDoi5LiD5pyIIixhdWc6IuWFq+aciCIsc2VwOiLkuZ3mnIgiLG9jdDoi5Y2B5pyIIixub3Y6IuWNgeS4gOaciCIsZGVjOiLljYHkuozmnIgifX0sc2VsZWN0Ontsb2FkaW5nOiLliqDovb3kuK0iLG5vTWF0Y2g6IuaXoOWMuemFjeaVsOaNriIsbm9EYXRhOiLml6DmlbDmja4iLHBsYWNlaG9sZGVyOiLor7fpgInmi6kifSxwYWdpbmF0aW9uOnsiZ290byI6IuWJjeW+gCIscGFnZXNpemU6IuadoS/pobUiLHRvdGFsOiLlhbEge3RvdGFsfSDmnaEiLHBhZ2VDbGFzc2lmaWVyOiLpobUifSxtZXNzYWdlYm94Ont0aXRsZToi5o+Q56S6Iixjb25maXJtOiLnoa7lrpoiLGNhbmNlbDoi5Y+W5raIIixlcnJvcjoi6L6T5YWl55qE5pWw5o2u5LiN5ZCI5rOVISJ9LHVwbG9hZDp7ImRlbGV0ZSI6IuWIoOmZpCIscHJldmlldzoi5p+l55yL5Zu+54mHIiwiY29udGludWUiOiLnu6fnu63kuIrkvKAifSx0YWJsZTp7ZW1wdHlUZXh0OiLmmoLml6DmlbDmja4iLGNvbmZpcm1GaWx0ZXI6Iuetm+mAiSIscmVzZXRGaWx0ZXI6IumHjee9riIsY2xlYXJGaWx0ZXI6IuWFqOmDqCJ9LHRyZWU6e2VtcHR5VGV4dDoi5pqC5peg5pWw5o2uIn19fX0sZnVuY3Rpb24odCxuKXt0LmV4cG9ydHM9ZX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7IWZ1bmN0aW9uKG8sYSl7aT1hLHM9ImZ1bmN0aW9uIj09dHlwZW9mIGk/aS5jYWxsKHQsbix0LGUpOmksISh2b2lkIDAhPT1zJiYoZS5leHBvcnRzPXMpKX0odGhpcyxmdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSl7dmFyIHQ9ZSYmIm9iamVjdCI9PXR5cGVvZiBlO3JldHVybiB0JiYiW29iamVjdCBSZWdFeHBdIiE9PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChlKSYmIltvYmplY3QgRGF0ZV0iIT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGUpfWZ1bmN0aW9uIHQoZSl7cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/W106e319ZnVuY3Rpb24gbihuLGkpe3ZhciBzPWkmJmkuY2xvbmU9PT0hMDtyZXR1cm4gcyYmZShuKT9vKHQobiksbixpKTpufWZ1bmN0aW9uIGkodCxpLHMpe3ZhciBhPXQuc2xpY2UoKTtyZXR1cm4gaS5mb3JFYWNoKGZ1bmN0aW9uKGkscil7InVuZGVmaW5lZCI9PXR5cGVvZiBhW3JdP2Fbcl09bihpLHMpOmUoaSk/YVtyXT1vKHRbcl0saSxzKTp0LmluZGV4T2YoaSk9PT0tMSYmYS5wdXNoKG4oaSxzKSl9KSxhfWZ1bmN0aW9uIHModCxpLHMpe3ZhciBhPXt9O3JldHVybiBlKHQpJiZPYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2FbZV09bih0W2VdLHMpfSksT2JqZWN0LmtleXMoaSkuZm9yRWFjaChmdW5jdGlvbihyKXtlKGlbcl0pJiZ0W3JdP2Fbcl09byh0W3JdLGlbcl0scyk6YVtyXT1uKGlbcl0scyl9KSxhfWZ1bmN0aW9uIG8oZSx0LG8pe3ZhciBhPUFycmF5LmlzQXJyYXkodCkscj1vfHx7YXJyYXlNZXJnZTppfSxsPXIuYXJyYXlNZXJnZXx8aTtyZXR1cm4gYT9BcnJheS5pc0FycmF5KGUpP2woZSx0LG8pOm4odCxvKTpzKGUsdCxvKX1yZXR1cm4gb30pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIG49ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbCYmZSE9PVN5bWJvbC5wcm90b3R5cGU/InN5bWJvbCI6dHlwZW9mIGV9O3RbImRlZmF1bHQiXT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLG89QXJyYXkodD4xP3QtMTowKSxhPTE7YTx0O2ErKylvW2EtMV09YXJndW1lbnRzW2FdO3JldHVybiAxPT09by5sZW5ndGgmJiJvYmplY3QiPT09bihvWzBdKSYmKG89b1swXSksbyYmby5oYXNPd25Qcm9wZXJ0eXx8KG89e30pLGUucmVwbGFjZShpLGZ1bmN0aW9uKHQsbixpLGEpe3ZhciByPXZvaWQgMDtyZXR1cm4ieyI9PT1lW2EtMV0mJiJ9Ij09PWVbYSt0Lmxlbmd0aF0/aToocj1zKG8saSk/b1tpXTpudWxsLG51bGw9PT1yfHx2b2lkIDA9PT1yPyIiOnIpfSl9dmFyIHM9ZS51dGlsLmhhc093bjtyZXR1cm4gdH07dmFyIGk9LyglfClceyhbMC05YS16QS1aX10rKVx9L2d9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxOCksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxOSk7dmFyIG89bigyMSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxMCksbz1pKHMpLGE9bigyMCkscj1pKGEpO3RbImRlZmF1bHQiXT17bmFtZToiRWxJbnB1dCIsY29tcG9uZW50TmFtZToiRWxJbnB1dCIsbWl4aW5zOltvWyJkZWZhdWx0Il1dLHByb3BzOnt2YWx1ZTpbU3RyaW5nLE51bWJlcl0scGxhY2Vob2xkZXI6U3RyaW5nLHNpemU6U3RyaW5nLHJlYWRvbmx5OkJvb2xlYW4sYXV0b2ZvY3VzOkJvb2xlYW4saWNvbjpTdHJpbmcsZGlzYWJsZWQ6Qm9vbGVhbix0eXBlOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6InRleHQifSxuYW1lOlN0cmluZyxhdXRvc2l6ZTp7dHlwZTpbQm9vbGVhbixPYmplY3RdLCJkZWZhdWx0IjohMX0scm93czp7dHlwZTpOdW1iZXIsImRlZmF1bHQiOjJ9LGF1dG9Db21wbGV0ZTp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJvZmYifSxmb3JtOlN0cmluZyxtYXhsZW5ndGg6TnVtYmVyLG1pbmxlbmd0aDpOdW1iZXIsbWF4Ont9LG1pbjp7fX0sbWV0aG9kczp7aGFuZGxlQmx1cjpmdW5jdGlvbihlKXt0aGlzLiRlbWl0KCJibHVyIixlKSx0aGlzLmRpc3BhdGNoKCJFbEZvcm1JdGVtIiwiZWwuZm9ybS5ibHVyIixbdGhpcy5jdXJyZW50VmFsdWVdKX0saW5wdXRTZWxlY3Q6ZnVuY3Rpb24oKXt0aGlzLiRyZWZzLmlucHV0LnNlbGVjdCgpfSxyZXNpemVUZXh0YXJlYTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuYXV0b3NpemUsdD10aGlzLnR5cGU7aWYoZSYmInRleHRhcmVhIj09PXQpe3ZhciBuPWUubWluUm93cyxpPWUubWF4Um93czt0aGlzLnRleHRhcmVhU3R5bGU9KDAsclsiZGVmYXVsdCJdKSh0aGlzLiRyZWZzLnRleHRhcmVhLG4saSl9fSxoYW5kbGVGb2N1czpmdW5jdGlvbihlKXt0aGlzLiRlbWl0KCJmb2N1cyIsZSl9LGhhbmRsZUlucHV0OmZ1bmN0aW9uKGUpe3RoaXMuY3VycmVudFZhbHVlPWUudGFyZ2V0LnZhbHVlfSxoYW5kbGVJY29uQ2xpY2s6ZnVuY3Rpb24oZSl7dGhpcy4kZW1pdCgiY2xpY2siLGUpfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntjdXJyZW50VmFsdWU6dGhpcy52YWx1ZSx0ZXh0YXJlYVN0eWxlOnt9fX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuJG9uKCJpbnB1dFNlbGVjdCIsdGhpcy5pbnB1dFNlbGVjdCl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLnJlc2l6ZVRleHRhcmVhKCl9LGNvbXB1dGVkOnt2YWxpZGF0aW5nOmZ1bmN0aW9uKCl7cmV0dXJuInZhbGlkYXRpbmciPT09dGhpcy4kcGFyZW50LnZhbGlkYXRlU3RhdGV9fSx3YXRjaDp7dmFsdWU6ZnVuY3Rpb24oZSx0KXt0aGlzLmN1cnJlbnRWYWx1ZT1lfSxjdXJyZW50VmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLiRuZXh0VGljayhmdW5jdGlvbihlKXt0LnJlc2l6ZVRleHRhcmVhKCl9KSx0aGlzLiRlbWl0KCJpbnB1dCIsZSksdGhpcy4kZW1pdCgiY2hhbmdlIixlKSx0aGlzLmRpc3BhdGNoKCJFbEZvcm1JdGVtIiwiZWwuZm9ybS5jaGFuZ2UiLFtlXSl9fX19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9d2luZG93LmdldENvbXB1dGVkU3R5bGUoZSksbj10LmdldFByb3BlcnR5VmFsdWUoImJveC1zaXppbmciKSxpPXBhcnNlRmxvYXQodC5nZXRQcm9wZXJ0eVZhbHVlKCJwYWRkaW5nLWJvdHRvbSIpKStwYXJzZUZsb2F0KHQuZ2V0UHJvcGVydHlWYWx1ZSgicGFkZGluZy10b3AiKSkscz1wYXJzZUZsb2F0KHQuZ2V0UHJvcGVydHlWYWx1ZSgiYm9yZGVyLWJvdHRvbS13aWR0aCIpKStwYXJzZUZsb2F0KHQuZ2V0UHJvcGVydHlWYWx1ZSgiYm9yZGVyLXRvcC13aWR0aCIpKSxvPWEubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlKyI6Iit0LmdldFByb3BlcnR5VmFsdWUoZSl9KS5qb2luKCI7Iik7cmV0dXJue2NvbnRleHRTdHlsZTpvLHBhZGRpbmdTaXplOmksYm9yZGVyU2l6ZTpzLGJveFNpemluZzpufX1mdW5jdGlvbiBpKGUpe3ZhciB0PWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTpudWxsLGk9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOm51bGw7c3x8KHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGV4dGFyZWEiKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHMpKTt2YXIgYT1uKGUpLHI9YS5wYWRkaW5nU2l6ZSxsPWEuYm9yZGVyU2l6ZSx1PWEuYm94U2l6aW5nLGQ9YS5jb250ZXh0U3R5bGU7cy5zZXRBdHRyaWJ1dGUoInN0eWxlIixkKyI7IitvKSxzLnZhbHVlPWUudmFsdWV8fGUucGxhY2Vob2xkZXJ8fCIiO3ZhciBjPXMuc2Nyb2xsSGVpZ2h0OyJib3JkZXItYm94Ij09PXU/Yys9bDoiY29udGVudC1ib3giPT09dSYmKGMtPXIpLHMudmFsdWU9IiI7dmFyIGY9cy5zY3JvbGxIZWlnaHQtcjtpZihudWxsIT09dCl7dmFyIGg9Zip0OyJib3JkZXItYm94Ij09PXUmJihoPWgrcitsKSxjPU1hdGgubWF4KGgsYyl9aWYobnVsbCE9PWkpe3ZhciBwPWYqaTsiYm9yZGVyLWJveCI9PT11JiYocD1wK3IrbCksYz1NYXRoLm1pbihwLGMpfXJldHVybntoZWlnaHQ6YysicHgifX10Ll9fZXNNb2R1bGU9ITAsdFsiZGVmYXVsdCJdPWk7dmFyIHM9dm9pZCAwLG89IlxuICBoZWlnaHQ6MCAhaW1wb3J0YW50O1xuICB2aXNpYmlsaXR5OmhpZGRlbiAhaW1wb3J0YW50O1xuICBvdmVyZmxvdzpoaWRkZW4gIWltcG9ydGFudDtcbiAgcG9zaXRpb246YWJzb2x1dGUgIWltcG9ydGFudDtcbiAgei1pbmRleDotMTAwMCAhaW1wb3J0YW50O1xuICB0b3A6MCAhaW1wb3J0YW50O1xuICByaWdodDowICFpbXBvcnRhbnRcbiIsYT1bImxldHRlci1zcGFjaW5nIiwibGluZS1oZWlnaHQiLCJwYWRkaW5nLXRvcCIsInBhZGRpbmctYm90dG9tIiwiZm9udC1mYW1pbHkiLCJmb250LXdlaWdodCIsImZvbnQtc2l6ZSIsInRleHQtcmVuZGVyaW5nIiwidGV4dC10cmFuc2Zvcm0iLCJ3aWR0aCIsInRleHQtaW5kZW50IiwicGFkZGluZy1sZWZ0IiwicGFkZGluZy1yaWdodCIsImJvcmRlci13aWR0aCIsImJveC1zaXppbmciXX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIseyJjbGFzcyI6WyJ0ZXh0YXJlYSI9PT1lLnR5cGU/ImVsLXRleHRhcmVhIjoiZWwtaW5wdXQiLGUuc2l6ZT8iZWwtaW5wdXQtLSIrZS5zaXplOiIiLHsiaXMtZGlzYWJsZWQiOmUuZGlzYWJsZWQsImVsLWlucHV0LWdyb3VwIjplLiRzbG90cy5wcmVwZW5kfHxlLiRzbG90cy5hcHBlbmQsImVsLWlucHV0LWdyb3VwLS1hcHBlbmQiOmUuJHNsb3RzLmFwcGVuZCwiZWwtaW5wdXQtZ3JvdXAtLXByZXBlbmQiOmUuJHNsb3RzLnByZXBlbmR9XX0sWyJ0ZXh0YXJlYSIhPT1lLnR5cGU/W2UuJHNsb3RzLnByZXBlbmQ/ZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLWlucHV0LWdyb3VwX19wcmVwZW5kIn0sW2UuX3QoInByZXBlbmQiKV0pOmUuX2UoKSxlLmljb24/ZS5faCgiaSIse3N0YXRpY0NsYXNzOiJlbC1pbnB1dF9faWNvbiIsImNsYXNzIjoiZWwtaWNvbi0iK2UuaWNvbixvbjp7Y2xpY2s6ZS5oYW5kbGVJY29uQ2xpY2t9fSk6ZS5fZSgpLCJ0ZXh0YXJlYSIhPT1lLnR5cGU/ZS5faCgiaW5wdXQiLHtyZWY6ImlucHV0IixzdGF0aWNDbGFzczoiZWwtaW5wdXRfX2lubmVyIixhdHRyczp7dHlwZTplLnR5cGUsbmFtZTplLm5hbWUscGxhY2Vob2xkZXI6ZS5wbGFjZWhvbGRlcixkaXNhYmxlZDplLmRpc2FibGVkLHJlYWRvbmx5OmUucmVhZG9ubHksbWF4bGVuZ3RoOmUubWF4bGVuZ3RoLG1pbmxlbmd0aDplLm1pbmxlbmd0aCxhdXRvY29tcGxldGU6ZS5hdXRvQ29tcGxldGUsYXV0b2ZvY3VzOmUuYXV0b2ZvY3VzLG1pbjplLm1pbixtYXg6ZS5tYXgsZm9ybTplLmZvcm19LGRvbVByb3BzOnt2YWx1ZTplLnZhbHVlfSxvbjp7aW5wdXQ6ZS5oYW5kbGVJbnB1dCxmb2N1czplLmhhbmRsZUZvY3VzLGJsdXI6ZS5oYW5kbGVCbHVyfX0pOmUuX2UoKSxlLnZhbGlkYXRpbmc/ZS5faCgiaSIse3N0YXRpY0NsYXNzOiJlbC1pbnB1dF9faWNvbiBlbC1pY29uLWxvYWRpbmcifSk6ZS5fZSgpLGUuJHNsb3RzLmFwcGVuZD9lLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtaW5wdXQtZ3JvdXBfX2FwcGVuZCJ9LFtlLl90KCJhcHBlbmQiKV0pOmUuX2UoKV06ZS5faCgidGV4dGFyZWEiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUuY3VycmVudFZhbHVlLGV4cHJlc3Npb246ImN1cnJlbnRWYWx1ZSJ9XSxyZWY6InRleHRhcmVhIixzdGF0aWNDbGFzczoiZWwtdGV4dGFyZWFfX2lubmVyIixzdHlsZTplLnRleHRhcmVhU3R5bGUsYXR0cnM6e25hbWU6ZS5uYW1lLHBsYWNlaG9sZGVyOmUucGxhY2Vob2xkZXIsZGlzYWJsZWQ6ZS5kaXNhYmxlZCxyZWFkb25seTplLnJlYWRvbmx5LHJvd3M6ZS5yb3dzLGZvcm06ZS5mb3JtLGF1dG9mb2N1czplLmF1dG9mb2N1cyxtYXhsZW5ndGg6ZS5tYXhsZW5ndGgsbWlubGVuZ3RoOmUubWlubGVuZ3RofSxkb21Qcm9wczp7dmFsdWU6ZS5fcyhlLmN1cnJlbnRWYWx1ZSl9LG9uOntmb2N1czplLmhhbmRsZUZvY3VzLGJsdXI6ZS5oYW5kbGVCbHVyLGlucHV0OmZ1bmN0aW9uKHQpe3QudGFyZ2V0LmNvbXBvc2luZ3x8KGUuY3VycmVudFZhbHVlPXQudGFyZ2V0LnZhbHVlKX0KfX0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigyMyk7dmFyIG89bigyNyk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigyNCksbz1pKHMpO3RbImRlZmF1bHQiXT17bmFtZToiZWwtc2VsZWN0LWRyb3Bkb3duIixjb21wb25lbnROYW1lOiJFbFNlbGVjdERyb3Bkb3duIixtaXhpbnM6W29bImRlZmF1bHQiXV0scHJvcHM6e3BsYWNlbWVudDp7ImRlZmF1bHQiOiJib3R0b20tc3RhcnQifSxib3VuZGFyaWVzUGFkZGluZzp7ImRlZmF1bHQiOjB9LG9wdGlvbnM6eyJkZWZhdWx0IjpmdW5jdGlvbigpe3JldHVybntmb3JjZUFic29sdXRlOiEwLGdwdUFjY2VsZXJhdGlvbjohMX19fX0sZGF0YTpmdW5jdGlvbigpe3JldHVybnttaW5XaWR0aDoiIn19LHdhdGNoOnsiJHBhcmVudC5pbnB1dFdpZHRoIjpmdW5jdGlvbigpe3RoaXMubWluV2lkdGg9dGhpcy4kcGFyZW50LiRlbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCsicHgifX0sbW91bnRlZDpmdW5jdGlvbigpe3RoaXMucmVmZXJlbmNlRWxtPXRoaXMuJHBhcmVudC4kcmVmcy5yZWZlcmVuY2UuJGVsLHRoaXMuJHBhcmVudC5wb3BwZXJFbG09dGhpcy5wb3BwZXJFbG09dGhpcy4kZWwsdGhpcy4kb24oInVwZGF0ZVBvcHBlciIsdGhpcy51cGRhdGVQb3BwZXIpLHRoaXMuJG9uKCJkZXN0cm95UG9wcGVyIix0aGlzLmRlc3Ryb3lQb3BwZXIpfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigyNSksbz1pKHMpLGE9bigyNik7dFsiZGVmYXVsdCJdPXtwcm9wczp7cGxhY2VtZW50Ont0eXBlOlN0cmluZywiZGVmYXVsdCI6ImJvdHRvbSJ9LGJvdW5kYXJpZXNQYWRkaW5nOnt0eXBlOk51bWJlciwiZGVmYXVsdCI6NX0scmVmZXJlbmNlOnt9LHBvcHBlcjp7fSxvZmZzZXQ6eyJkZWZhdWx0IjowfSx2YWx1ZTpCb29sZWFuLHZpc2libGVBcnJvdzpCb29sZWFuLHRyYW5zaXRpb246U3RyaW5nLGFwcGVuZFRvQm9keTp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMH0sb3B0aW9uczp7dHlwZTpPYmplY3QsImRlZmF1bHQiOmZ1bmN0aW9uKCl7cmV0dXJue2dwdUFjY2VsZXJhdGlvbjohMX19fX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntzaG93UG9wcGVyOiExfX0sd2F0Y2g6e3ZhbHVlOntpbW1lZGlhdGU6ITAsaGFuZGxlcjpmdW5jdGlvbihlKXt0aGlzLnNob3dQb3BwZXI9ZSx0aGlzLiRlbWl0KCJpbnB1dCIsZSl9fSxzaG93UG9wcGVyOmZ1bmN0aW9uKGUpe2U/dGhpcy51cGRhdGVQb3BwZXIoKTp0aGlzLmRlc3Ryb3lQb3BwZXIoKSx0aGlzLiRlbWl0KCJpbnB1dCIsZSl9fSxtZXRob2RzOntjcmVhdGVQb3BwZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKC9eKHRvcHxib3R0b218bGVmdHxyaWdodCkoLXN0YXJ0fC1lbmQpPyQvZy50ZXN0KHRoaXMucGxhY2VtZW50KSl7dmFyIHQ9dGhpcy5vcHRpb25zLG49dGhpcy5wb3BwZXJFbG09dGhpcy5wb3BwZXJFbG18fHRoaXMucG9wcGVyfHx0aGlzLiRyZWZzLnBvcHBlcixpPXRoaXMucmVmZXJlbmNlRWxtPXRoaXMucmVmZXJlbmNlRWxtfHx0aGlzLnJlZmVyZW5jZXx8dGhpcy4kcmVmcy5yZWZlcmVuY2U7IWkmJnRoaXMuJHNsb3RzLnJlZmVyZW5jZSYmdGhpcy4kc2xvdHMucmVmZXJlbmNlWzBdJiYoaT10aGlzLnJlZmVyZW5jZUVsbT10aGlzLiRzbG90cy5yZWZlcmVuY2VbMF0uZWxtKSxuJiZpJiYodGhpcy52aXNpYmxlQXJyb3cmJnRoaXMuYXBwZW5kQXJyb3cobiksdGhpcy5hcHBlbmRUb0JvZHkmJmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGhpcy5wb3BwZXJFbG0pLHRoaXMucG9wcGVySlMmJnRoaXMucG9wcGVySlMuZGVzdHJveSYmdGhpcy5wb3BwZXJKUy5kZXN0cm95KCksdC5wbGFjZW1lbnQ9dGhpcy5wbGFjZW1lbnQsdC5vZmZzZXQ9dGhpcy5vZmZzZXQsdGhpcy5wb3BwZXJKUz1uZXcgb1siZGVmYXVsdCJdKGksbix0KSx0aGlzLnBvcHBlckpTLm9uQ3JlYXRlKGZ1bmN0aW9uKHQpe2UuJGVtaXQoImNyZWF0ZWQiLGUpLGUucmVzZXRUcmFuc2Zvcm1PcmlnaW4oKSxlLiRuZXh0VGljayhlLnVwZGF0ZVBvcHBlcil9KSx0aGlzLnBvcHBlckpTLl9wb3BwZXIuc3R5bGUuekluZGV4PWEuUG9wdXBNYW5hZ2VyLm5leHRaSW5kZXgoKSl9fSx1cGRhdGVQb3BwZXI6ZnVuY3Rpb24oKXt0aGlzLnBvcHBlckpTP3RoaXMucG9wcGVySlMudXBkYXRlKCk6dGhpcy5jcmVhdGVQb3BwZXIoKX0sZG9EZXN0cm95OmZ1bmN0aW9uKCl7IXRoaXMuc2hvd1BvcHBlciYmdGhpcy5wb3BwZXJKUyYmKHRoaXMucG9wcGVySlMuZGVzdHJveSgpLHRoaXMucG9wcGVySlM9bnVsbCl9LGRlc3Ryb3lQb3BwZXI6ZnVuY3Rpb24oKXt0aGlzLnBvcHBlckpTJiZ0aGlzLnJlc2V0VHJhbnNmb3JtT3JpZ2luKCl9LHJlc2V0VHJhbnNmb3JtT3JpZ2luOmZ1bmN0aW9uKCl7dmFyIGU9e3RvcDoiYm90dG9tIixib3R0b206InRvcCIsbGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0In0sdD10aGlzLnBvcHBlckpTLl9wb3BwZXIuZ2V0QXR0cmlidXRlKCJ4LXBsYWNlbWVudCIpLnNwbGl0KCItIilbMF0sbj1lW3RdO3RoaXMucG9wcGVySlMuX3BvcHBlci5zdHlsZS50cmFuc2Zvcm1PcmlnaW49WyJ0b3AiLCJib3R0b20iXS5pbmRleE9mKHQpPi0xPyJjZW50ZXIgIituOm4rIiBjZW50ZXIifSxhcHBlbmRBcnJvdzpmdW5jdGlvbihlKXt2YXIgdD12b2lkIDA7aWYoIXRoaXMuYXBwZW5kZWQpe3RoaXMuYXBwZW5kZWQ9ITA7Zm9yKHZhciBuIGluIGUuYXR0cmlidXRlcylpZigvXl92LS8udGVzdChlLmF0dHJpYnV0ZXNbbl0ubmFtZSkpe3Q9ZS5hdHRyaWJ1dGVzW25dLm5hbWU7YnJlYWt9dmFyIGk9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dCYmaS5zZXRBdHRyaWJ1dGUodCwiIiksaS5zZXRBdHRyaWJ1dGUoIngtYXJyb3ciLCIiKSxpLmNsYXNzTmFtZT0icG9wcGVyX19hcnJvdyIsZS5hcHBlbmRDaGlsZChpKX19fSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5kb0Rlc3Ryb3koKSx0aGlzLnBvcHBlckVsbSYmdGhpcy5wb3BwZXJFbG0ucGFyZW50Tm9kZT09PWRvY3VtZW50LmJvZHkmJmRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGhpcy5wb3BwZXJFbG0pfSxkZWFjdGl2YXRlZDpmdW5jdGlvbigpe3RoaXMuJG9wdGlvbnMuYmVmb3JlRGVzdHJveVswXS5jYWxsKHRoaXMpfX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzOyFmdW5jdGlvbihvLGEpe2k9YSxzPSJmdW5jdGlvbiI9PXR5cGVvZiBpP2kuY2FsbCh0LG4sdCxlKTppLCEodm9pZCAwIT09cyYmKGUuZXhwb3J0cz1zKSl9KHRoaXMsZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gZShlLHQsbil7dGhpcy5fcmVmZXJlbmNlPWUuanF1ZXJ5P2VbMF06ZSx0aGlzLnN0YXRlPXt9O3ZhciBpPSJ1bmRlZmluZWQiPT10eXBlb2YgdHx8bnVsbD09PXQscz10JiYiW29iamVjdCBPYmplY3RdIj09PU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KTtyZXR1cm4gaXx8cz90aGlzLl9wb3BwZXI9dGhpcy5wYXJzZShzP3Q6e30pOnRoaXMuX3BvcHBlcj10LmpxdWVyeT90WzBdOnQsdGhpcy5fb3B0aW9ucz1PYmplY3QuYXNzaWduKHt9LGcsbiksdGhpcy5fb3B0aW9ucy5tb2RpZmllcnM9dGhpcy5fb3B0aW9ucy5tb2RpZmllcnMubWFwKGZ1bmN0aW9uKGUpe2lmKHRoaXMuX29wdGlvbnMubW9kaWZpZXJzSWdub3JlZC5pbmRleE9mKGUpPT09LTEpcmV0dXJuImFwcGx5U3R5bGUiPT09ZSYmdGhpcy5fcG9wcGVyLnNldEF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiLHRoaXMuX29wdGlvbnMucGxhY2VtZW50KSx0aGlzLm1vZGlmaWVyc1tlXXx8ZX0uYmluZCh0aGlzKSksdGhpcy5zdGF0ZS5wb3NpdGlvbj10aGlzLl9nZXRQb3NpdGlvbih0aGlzLl9wb3BwZXIsdGhpcy5fcmVmZXJlbmNlKSx1KHRoaXMuX3BvcHBlcix7cG9zaXRpb246dGhpcy5zdGF0ZS5wb3NpdGlvbn0pLHRoaXMudXBkYXRlKCksdGhpcy5fc2V0dXBFdmVudExpc3RlbmVycygpLHRoaXN9ZnVuY3Rpb24gdChlKXt2YXIgdD1lLnN0eWxlLmRpc3BsYXksbj1lLnN0eWxlLnZpc2liaWxpdHk7ZS5zdHlsZS5kaXNwbGF5PSJibG9jayIsZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iO3ZhciBpPShlLm9mZnNldFdpZHRoLG0uZ2V0Q29tcHV0ZWRTdHlsZShlKSkscz1wYXJzZUZsb2F0KGkubWFyZ2luVG9wKStwYXJzZUZsb2F0KGkubWFyZ2luQm90dG9tKSxvPXBhcnNlRmxvYXQoaS5tYXJnaW5MZWZ0KStwYXJzZUZsb2F0KGkubWFyZ2luUmlnaHQpLGE9e3dpZHRoOmUub2Zmc2V0V2lkdGgrbyxoZWlnaHQ6ZS5vZmZzZXRIZWlnaHQrc307cmV0dXJuIGUuc3R5bGUuZGlzcGxheT10LGUuc3R5bGUudmlzaWJpbGl0eT1uLGF9ZnVuY3Rpb24gbihlKXt2YXIgdD17bGVmdDoicmlnaHQiLHJpZ2h0OiJsZWZ0Iixib3R0b206InRvcCIsdG9wOiJib3R0b20ifTtyZXR1cm4gZS5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZyxmdW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9T2JqZWN0LmFzc2lnbih7fSxlKTtyZXR1cm4gdC5yaWdodD10LmxlZnQrdC53aWR0aCx0LmJvdHRvbT10LnRvcCt0LmhlaWdodCx0fWZ1bmN0aW9uIHMoZSx0KXt2YXIgbixpPTA7Zm9yKG4gaW4gZSl7aWYoZVtuXT09PXQpcmV0dXJuIGk7aSsrfXJldHVybiBudWxsfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1tLmdldENvbXB1dGVkU3R5bGUoZSxudWxsKTtyZXR1cm4gblt0XX1mdW5jdGlvbiBhKGUpe3ZhciB0PWUub2Zmc2V0UGFyZW50O3JldHVybiB0IT09bS5kb2N1bWVudC5ib2R5JiZ0P3Q6bS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnR9ZnVuY3Rpb24gcihlKXt2YXIgdD1lLnBhcmVudE5vZGU7cmV0dXJuIHQ/dD09PW0uZG9jdW1lbnQ/bS5kb2N1bWVudC5ib2R5LnNjcm9sbFRvcD9tLmRvY3VtZW50LmJvZHk6bS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ6WyJzY3JvbGwiLCJhdXRvIl0uaW5kZXhPZihvKHQsIm92ZXJmbG93IikpIT09LTF8fFsic2Nyb2xsIiwiYXV0byJdLmluZGV4T2Yobyh0LCJvdmVyZmxvdy14IikpIT09LTF8fFsic2Nyb2xsIiwiYXV0byJdLmluZGV4T2Yobyh0LCJvdmVyZmxvdy15IikpIT09LTE/dDpyKGUucGFyZW50Tm9kZSk6ZX1mdW5jdGlvbiBsKGUpe3JldHVybiBlIT09bS5kb2N1bWVudC5ib2R5JiYoImZpeGVkIj09PW8oZSwicG9zaXRpb24iKXx8KGUucGFyZW50Tm9kZT9sKGUucGFyZW50Tm9kZSk6ZSkpfWZ1bmN0aW9uIHUoZSx0KXtmdW5jdGlvbiBuKGUpe3JldHVybiIiIT09ZSYmIWlzTmFOKHBhcnNlRmxvYXQoZSkpJiZpc0Zpbml0ZShlKX1PYmplY3Qua2V5cyh0KS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBzPSIiO1sid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiXS5pbmRleE9mKGkpIT09LTEmJm4odFtpXSkmJihzPSJweCIpLGUuc3R5bGVbaV09dFtpXStzfSl9ZnVuY3Rpb24gZChlKXt2YXIgdD17fTtyZXR1cm4gZSYmIltvYmplY3QgRnVuY3Rpb25dIj09PXQudG9TdHJpbmcuY2FsbChlKX1mdW5jdGlvbiBjKGUpe3ZhciB0PXt3aWR0aDplLm9mZnNldFdpZHRoLGhlaWdodDplLm9mZnNldEhlaWdodCxsZWZ0OmUub2Zmc2V0TGVmdCx0b3A6ZS5vZmZzZXRUb3B9O3JldHVybiB0LnJpZ2h0PXQubGVmdCt0LndpZHRoLHQuYm90dG9tPXQudG9wK3QuaGVpZ2h0LHR9ZnVuY3Rpb24gZihlKXt2YXIgdD1lLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLG49bmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCJNU0lFIikhPS0xLGk9biYmIkhUTUwiPT09ZS50YWdOYW1lPy1lLnNjcm9sbFRvcDp0LnRvcDtyZXR1cm57bGVmdDp0LmxlZnQsdG9wOmkscmlnaHQ6dC5yaWdodCxib3R0b206dC5ib3R0b20sd2lkdGg6dC5yaWdodC10LmxlZnQsaGVpZ2h0OnQuYm90dG9tLWl9fWZ1bmN0aW9uIGgoZSx0LG4pe3ZhciBpPWYoZSkscz1mKHQpO2lmKG4pe3ZhciBvPXIodCk7cy50b3ArPW8uc2Nyb2xsVG9wLHMuYm90dG9tKz1vLnNjcm9sbFRvcCxzLmxlZnQrPW8uc2Nyb2xsTGVmdCxzLnJpZ2h0Kz1vLnNjcm9sbExlZnR9dmFyIGE9e3RvcDppLnRvcC1zLnRvcCxsZWZ0OmkubGVmdC1zLmxlZnQsYm90dG9tOmkudG9wLXMudG9wK2kuaGVpZ2h0LHJpZ2h0OmkubGVmdC1zLmxlZnQraS53aWR0aCx3aWR0aDppLndpZHRoLGhlaWdodDppLmhlaWdodH07cmV0dXJuIGF9ZnVuY3Rpb24gcChlKXtmb3IodmFyIHQ9WyIiLCJtcyIsIndlYmtpdCIsIm1veiIsIm8iXSxuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBpPXRbbl0/dFtuXStlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Uuc2xpY2UoMSk6ZTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIG0uZG9jdW1lbnQuYm9keS5zdHlsZVtpXSlyZXR1cm4gaX1yZXR1cm4gbnVsbH12YXIgbT13aW5kb3csZz17cGxhY2VtZW50OiJib3R0b20iLGdwdUFjY2VsZXJhdGlvbjohMCxvZmZzZXQ6MCxib3VuZGFyaWVzRWxlbWVudDoidmlld3BvcnQiLGJvdW5kYXJpZXNQYWRkaW5nOjUscHJldmVudE92ZXJmbG93T3JkZXI6WyJsZWZ0IiwicmlnaHQiLCJ0b3AiLCJib3R0b20iXSxmbGlwQmVoYXZpb3I6ImZsaXAiLGFycm93RWxlbWVudDoiW3gtYXJyb3ddIixtb2RpZmllcnM6WyJzaGlmdCIsIm9mZnNldCIsInByZXZlbnRPdmVyZmxvdyIsImtlZXBUb2dldGhlciIsImFycm93IiwiZmxpcCIsImFwcGx5U3R5bGUiXSxtb2RpZmllcnNJZ25vcmVkOltdLGZvcmNlQWJzb2x1dGU6ITF9O3JldHVybiBlLnByb3RvdHlwZS5kZXN0cm95PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3BvcHBlci5yZW1vdmVBdHRyaWJ1dGUoIngtcGxhY2VtZW50IiksdGhpcy5fcG9wcGVyLnN0eWxlLmxlZnQ9IiIsdGhpcy5fcG9wcGVyLnN0eWxlLnBvc2l0aW9uPSIiLHRoaXMuX3BvcHBlci5zdHlsZS50b3A9IiIsdGhpcy5fcG9wcGVyLnN0eWxlW3AoInRyYW5zZm9ybSIpXT0iIix0aGlzLl9yZW1vdmVFdmVudExpc3RlbmVycygpLHRoaXMuX29wdGlvbnMucmVtb3ZlT25EZXN0cm95JiZ0aGlzLl9wb3BwZXIucmVtb3ZlKCksdGhpc30sZS5wcm90b3R5cGUudXBkYXRlPWZ1bmN0aW9uKCl7dmFyIGU9e2luc3RhbmNlOnRoaXMsc3R5bGVzOnt9fTtlLnBsYWNlbWVudD10aGlzLl9vcHRpb25zLnBsYWNlbWVudCxlLl9vcmlnaW5hbFBsYWNlbWVudD10aGlzLl9vcHRpb25zLnBsYWNlbWVudCxlLm9mZnNldHM9dGhpcy5fZ2V0T2Zmc2V0cyh0aGlzLl9wb3BwZXIsdGhpcy5fcmVmZXJlbmNlLGUucGxhY2VtZW50KSxlLmJvdW5kYXJpZXM9dGhpcy5fZ2V0Qm91bmRhcmllcyhlLHRoaXMuX29wdGlvbnMuYm91bmRhcmllc1BhZGRpbmcsdGhpcy5fb3B0aW9ucy5ib3VuZGFyaWVzRWxlbWVudCksZT10aGlzLnJ1bk1vZGlmaWVycyhlLHRoaXMuX29wdGlvbnMubW9kaWZpZXJzKSwiZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5zdGF0ZS51cGRhdGVDYWxsYmFjayYmdGhpcy5zdGF0ZS51cGRhdGVDYWxsYmFjayhlKX0sZS5wcm90b3R5cGUub25DcmVhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIGUodGhpcyksdGhpc30sZS5wcm90b3R5cGUub25VcGRhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuc3RhdGUudXBkYXRlQ2FsbGJhY2s9ZSx0aGlzfSxlLnByb3RvdHlwZS5wYXJzZT1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUsdCl7dC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UuY2xhc3NMaXN0LmFkZCh0KX0pfWZ1bmN0aW9uIG4oZSx0KXt0LmZvckVhY2goZnVuY3Rpb24odCl7ZS5zZXRBdHRyaWJ1dGUodC5zcGxpdCgiOiIpWzBdLHQuc3BsaXQoIjoiKVsxXXx8IiIpfSl9dmFyIGk9e3RhZ05hbWU6ImRpdiIsY2xhc3NOYW1lczpbInBvcHBlciJdLGF0dHJpYnV0ZXM6W10scGFyZW50Om0uZG9jdW1lbnQuYm9keSxjb250ZW50OiIiLGNvbnRlbnRUeXBlOiJ0ZXh0IixhcnJvd1RhZ05hbWU6ImRpdiIsYXJyb3dDbGFzc05hbWVzOlsicG9wcGVyX19hcnJvdyJdLGFycm93QXR0cmlidXRlczpbIngtYXJyb3ciXX07ZT1PYmplY3QuYXNzaWduKHt9LGksZSk7dmFyIHM9bS5kb2N1bWVudCxvPXMuY3JlYXRlRWxlbWVudChlLnRhZ05hbWUpO2lmKHQobyxlLmNsYXNzTmFtZXMpLG4obyxlLmF0dHJpYnV0ZXMpLCJub2RlIj09PWUuY29udGVudFR5cGU/by5hcHBlbmRDaGlsZChlLmNvbnRlbnQuanF1ZXJ5P2UuY29udGVudFswXTplLmNvbnRlbnQpOiJodG1sIj09PWUuY29udGVudFR5cGU/by5pbm5lckhUTUw9ZS5jb250ZW50Om8udGV4dENvbnRlbnQ9ZS5jb250ZW50LGUuYXJyb3dUYWdOYW1lKXt2YXIgYT1zLmNyZWF0ZUVsZW1lbnQoZS5hcnJvd1RhZ05hbWUpO3QoYSxlLmFycm93Q2xhc3NOYW1lcyksbihhLGUuYXJyb3dBdHRyaWJ1dGVzKSxvLmFwcGVuZENoaWxkKGEpfXZhciByPWUucGFyZW50LmpxdWVyeT9lLnBhcmVudFswXTplLnBhcmVudDtpZigic3RyaW5nIj09dHlwZW9mIHIpe2lmKHI9cy5xdWVyeVNlbGVjdG9yQWxsKGUucGFyZW50KSxyLmxlbmd0aD4xJiZjb25zb2xlLndhcm4oIldBUk5JTkc6IHRoZSBnaXZlbiBgcGFyZW50YCBxdWVyeSgiK2UucGFyZW50KyIpIG1hdGNoZWQgbW9yZSB0aGFuIG9uZSBlbGVtZW50LCB0aGUgZmlyc3Qgb25lIHdpbGwgYmUgdXNlZCIpLDA9PT1yLmxlbmd0aCl0aHJvdyJFUlJPUjogdGhlIGdpdmVuIGBwYXJlbnRgIGRvZXNuJ3QgZXhpc3RzISI7cj1yWzBdfXJldHVybiByLmxlbmd0aD4xJiZyIGluc3RhbmNlb2YgRWxlbWVudD09ITEmJihjb25zb2xlLndhcm4oIldBUk5JTkc6IHlvdSBoYXZlIHBhc3NlZCBhcyBwYXJlbnQgYSBsaXN0IG9mIGVsZW1lbnRzLCB0aGUgZmlyc3Qgb25lIHdpbGwgYmUgdXNlZCIpLHI9clswXSksci5hcHBlbmRDaGlsZChvKSxvfSxlLnByb3RvdHlwZS5fZ2V0UG9zaXRpb249ZnVuY3Rpb24oZSx0KXt2YXIgbj1hKHQpO2lmKHRoaXMuX29wdGlvbnMuZm9yY2VBYnNvbHV0ZSlyZXR1cm4iYWJzb2x1dGUiO3ZhciBpPWwodCxuKTtyZXR1cm4gaT8iZml4ZWQiOiJhYnNvbHV0ZSJ9LGUucHJvdG90eXBlLl9nZXRPZmZzZXRzPWZ1bmN0aW9uKGUsbixpKXtpPWkuc3BsaXQoIi0iKVswXTt2YXIgcz17fTtzLnBvc2l0aW9uPXRoaXMuc3RhdGUucG9zaXRpb247dmFyIG89ImZpeGVkIj09PXMucG9zaXRpb24scj1oKG4sYShlKSxvKSxsPXQoZSk7cmV0dXJuWyJyaWdodCIsImxlZnQiXS5pbmRleE9mKGkpIT09LTE/KHMudG9wPXIudG9wK3IuaGVpZ2h0LzItbC5oZWlnaHQvMiwibGVmdCI9PT1pP3MubGVmdD1yLmxlZnQtbC53aWR0aDpzLmxlZnQ9ci5yaWdodCk6KHMubGVmdD1yLmxlZnQrci53aWR0aC8yLWwud2lkdGgvMiwidG9wIj09PWk/cy50b3A9ci50b3AtbC5oZWlnaHQ6cy50b3A9ci5ib3R0b20pLHMud2lkdGg9bC53aWR0aCxzLmhlaWdodD1sLmhlaWdodCx7cG9wcGVyOnMscmVmZXJlbmNlOnJ9fSxlLnByb3RvdHlwZS5fc2V0dXBFdmVudExpc3RlbmVycz1mdW5jdGlvbigpe2lmKHRoaXMuc3RhdGUudXBkYXRlQm91bmQ9dGhpcy51cGRhdGUuYmluZCh0aGlzKSxtLmFkZEV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5zdGF0ZS51cGRhdGVCb3VuZCksIndpbmRvdyIhPT10aGlzLl9vcHRpb25zLmJvdW5kYXJpZXNFbGVtZW50KXt2YXIgZT1yKHRoaXMuX3JlZmVyZW5jZSk7ZSE9PW0uZG9jdW1lbnQuYm9keSYmZSE9PW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoZT1tKSxlLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5zdGF0ZS51cGRhdGVCb3VuZCl9fSxlLnByb3RvdHlwZS5fcmVtb3ZlRXZlbnRMaXN0ZW5lcnM9ZnVuY3Rpb24oKXtpZihtLnJlbW92ZUV2ZW50TGlzdGVuZXIoInJlc2l6ZSIsdGhpcy5zdGF0ZS51cGRhdGVCb3VuZCksIndpbmRvdyIhPT10aGlzLl9vcHRpb25zLmJvdW5kYXJpZXNFbGVtZW50KXt2YXIgZT1yKHRoaXMuX3JlZmVyZW5jZSk7ZSE9PW0uZG9jdW1lbnQuYm9keSYmZSE9PW0uZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoZT1tKSxlLnJlbW92ZUV2ZW50TGlzdGVuZXIoInNjcm9sbCIsdGhpcy5zdGF0ZS51cGRhdGVCb3VuZCl9dGhpcy5zdGF0ZS51cGRhdGVCb3VuZD1udWxsfSxlLnByb3RvdHlwZS5fZ2V0Qm91bmRhcmllcz1mdW5jdGlvbihlLHQsbil7dmFyIGkscyxvPXt9O2lmKCJ3aW5kb3ciPT09bil7dmFyIGw9bS5kb2N1bWVudC5ib2R5LHU9bS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7cz1NYXRoLm1heChsLnNjcm9sbEhlaWdodCxsLm9mZnNldEhlaWdodCx1LmNsaWVudEhlaWdodCx1LnNjcm9sbEhlaWdodCx1Lm9mZnNldEhlaWdodCksaT1NYXRoLm1heChsLnNjcm9sbFdpZHRoLGwub2Zmc2V0V2lkdGgsdS5jbGllbnRXaWR0aCx1LnNjcm9sbFdpZHRoLHUub2Zmc2V0V2lkdGgpLG89e3RvcDowLHJpZ2h0OmksYm90dG9tOnMsbGVmdDowfX1lbHNlIGlmKCJ2aWV3cG9ydCI9PT1uKXt2YXIgZD1hKHRoaXMuX3BvcHBlciksZj1yKHRoaXMuX3BvcHBlciksaD1jKGQpLHA9ImZpeGVkIj09PWUub2Zmc2V0cy5wb3BwZXIucG9zaXRpb24/MDpmLnNjcm9sbFRvcCxnPSJmaXhlZCI9PT1lLm9mZnNldHMucG9wcGVyLnBvc2l0aW9uPzA6Zi5zY3JvbGxMZWZ0O289e3RvcDowLShoLnRvcC1wKSxyaWdodDptLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aC0oaC5sZWZ0LWcpLGJvdHRvbTptLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQtKGgudG9wLXApLGxlZnQ6MC0oaC5sZWZ0LWcpfX1lbHNlIG89YSh0aGlzLl9wb3BwZXIpPT09bj97dG9wOjAsbGVmdDowLHJpZ2h0Om4uY2xpZW50V2lkdGgsYm90dG9tOm4uY2xpZW50SGVpZ2h0fTpjKG4pO3JldHVybiBvLmxlZnQrPXQsby5yaWdodC09dCxvLnRvcD1vLnRvcCt0LG8uYm90dG9tPW8uYm90dG9tLXQsb30sZS5wcm90b3R5cGUucnVuTW9kaWZpZXJzPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10LnNsaWNlKCk7cmV0dXJuIHZvaWQgMCE9PW4mJihpPXRoaXMuX29wdGlvbnMubW9kaWZpZXJzLnNsaWNlKDAscyh0aGlzLl9vcHRpb25zLm1vZGlmaWVycyxuKSkpLGkuZm9yRWFjaChmdW5jdGlvbih0KXtkKHQpJiYoZT10LmNhbGwodGhpcyxlKSl9LmJpbmQodGhpcykpLGV9LGUucHJvdG90eXBlLmlzTW9kaWZpZXJSZXF1aXJlZD1mdW5jdGlvbihlLHQpe3ZhciBuPXModGhpcy5fb3B0aW9ucy5tb2RpZmllcnMsZSk7cmV0dXJuISF0aGlzLl9vcHRpb25zLm1vZGlmaWVycy5zbGljZSgwLG4pLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZT09PXR9KS5sZW5ndGh9LGUucHJvdG90eXBlLm1vZGlmaWVycz17fSxlLnByb3RvdHlwZS5tb2RpZmllcnMuYXBwbHlTdHlsZT1mdW5jdGlvbihlKXt2YXIgdCxuPXtwb3NpdGlvbjplLm9mZnNldHMucG9wcGVyLnBvc2l0aW9ufSxpPU1hdGgucm91bmQoZS5vZmZzZXRzLnBvcHBlci5sZWZ0KSxzPU1hdGgucm91bmQoZS5vZmZzZXRzLnBvcHBlci50b3ApO3JldHVybiB0aGlzLl9vcHRpb25zLmdwdUFjY2VsZXJhdGlvbiYmKHQ9cCgidHJhbnNmb3JtIikpPyhuW3RdPSJ0cmFuc2xhdGUzZCgiK2krInB4LCAiK3MrInB4LCAwKSIsbi50b3A9MCxuLmxlZnQ9MCk6KG4ubGVmdD1pLG4udG9wPXMpLE9iamVjdC5hc3NpZ24obixlLnN0eWxlcyksdSh0aGlzLl9wb3BwZXIsbiksdGhpcy5fcG9wcGVyLnNldEF0dHJpYnV0ZSgieC1wbGFjZW1lbnQiLGUucGxhY2VtZW50KSx0aGlzLmlzTW9kaWZpZXJSZXF1aXJlZCh0aGlzLm1vZGlmaWVycy5hcHBseVN0eWxlLHRoaXMubW9kaWZpZXJzLmFycm93KSYmZS5vZmZzZXRzLmFycm93JiZ1KGUuYXJyb3dFbGVtZW50LGUub2Zmc2V0cy5hcnJvdyksZX0sZS5wcm90b3R5cGUubW9kaWZpZXJzLnNoaWZ0PWZ1bmN0aW9uKGUpe3ZhciB0PWUucGxhY2VtZW50LG49dC5zcGxpdCgiLSIpWzBdLHM9dC5zcGxpdCgiLSIpWzFdO2lmKHMpe3ZhciBvPWUub2Zmc2V0cy5yZWZlcmVuY2UsYT1pKGUub2Zmc2V0cy5wb3BwZXIpLHI9e3k6e3N0YXJ0Ont0b3A6by50b3B9LGVuZDp7dG9wOm8udG9wK28uaGVpZ2h0LWEuaGVpZ2h0fX0seDp7c3RhcnQ6e2xlZnQ6by5sZWZ0fSxlbmQ6e2xlZnQ6by5sZWZ0K28ud2lkdGgtYS53aWR0aH19fSxsPVsiYm90dG9tIiwidG9wIl0uaW5kZXhPZihuKSE9PS0xPyJ4IjoieSI7ZS5vZmZzZXRzLnBvcHBlcj1PYmplY3QuYXNzaWduKGEscltsXVtzXSl9cmV0dXJuIGV9LGUucHJvdG90eXBlLm1vZGlmaWVycy5wcmV2ZW50T3ZlcmZsb3c9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fb3B0aW9ucy5wcmV2ZW50T3ZlcmZsb3dPcmRlcixuPWkoZS5vZmZzZXRzLnBvcHBlcikscz17bGVmdDpmdW5jdGlvbigpe3ZhciB0PW4ubGVmdDtyZXR1cm4gbi5sZWZ0PGUuYm91bmRhcmllcy5sZWZ0JiYodD1NYXRoLm1heChuLmxlZnQsZS5ib3VuZGFyaWVzLmxlZnQpKSx7bGVmdDp0fX0scmlnaHQ6ZnVuY3Rpb24oKXt2YXIgdD1uLmxlZnQ7cmV0dXJuIG4ucmlnaHQ+ZS5ib3VuZGFyaWVzLnJpZ2h0JiYodD1NYXRoLm1pbihuLmxlZnQsZS5ib3VuZGFyaWVzLnJpZ2h0LW4ud2lkdGgpKSx7bGVmdDp0fX0sdG9wOmZ1bmN0aW9uKCl7dmFyIHQ9bi50b3A7cmV0dXJuIG4udG9wPGUuYm91bmRhcmllcy50b3AmJih0PU1hdGgubWF4KG4udG9wLGUuYm91bmRhcmllcy50b3ApKSx7dG9wOnR9fSxib3R0b206ZnVuY3Rpb24oKXt2YXIgdD1uLnRvcDtyZXR1cm4gbi5ib3R0b20+ZS5ib3VuZGFyaWVzLmJvdHRvbSYmKHQ9TWF0aC5taW4obi50b3AsZS5ib3VuZGFyaWVzLmJvdHRvbS1uLmhlaWdodCkpLHt0b3A6dH19fTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKHQpe2Uub2Zmc2V0cy5wb3BwZXI9T2JqZWN0LmFzc2lnbihuLHNbdF0oKSl9KSxlfSxlLnByb3RvdHlwZS5tb2RpZmllcnMua2VlcFRvZ2V0aGVyPWZ1bmN0aW9uKGUpe3ZhciB0PWkoZS5vZmZzZXRzLnBvcHBlciksbj1lLm9mZnNldHMucmVmZXJlbmNlLHM9TWF0aC5mbG9vcjtyZXR1cm4gdC5yaWdodDxzKG4ubGVmdCkmJihlLm9mZnNldHMucG9wcGVyLmxlZnQ9cyhuLmxlZnQpLXQud2lkdGgpLHQubGVmdD5zKG4ucmlnaHQpJiYoZS5vZmZzZXRzLnBvcHBlci5sZWZ0PXMobi5yaWdodCkpLHQuYm90dG9tPHMobi50b3ApJiYoZS5vZmZzZXRzLnBvcHBlci50b3A9cyhuLnRvcCktdC5oZWlnaHQpLHQudG9wPnMobi5ib3R0b20pJiYoZS5vZmZzZXRzLnBvcHBlci50b3A9cyhuLmJvdHRvbSkpLGV9LGUucHJvdG90eXBlLm1vZGlmaWVycy5mbGlwPWZ1bmN0aW9uKGUpe2lmKCF0aGlzLmlzTW9kaWZpZXJSZXF1aXJlZCh0aGlzLm1vZGlmaWVycy5mbGlwLHRoaXMubW9kaWZpZXJzLnByZXZlbnRPdmVyZmxvdykpcmV0dXJuIGNvbnNvbGUud2FybigiV0FSTklORzogcHJldmVudE92ZXJmbG93IG1vZGlmaWVyIGlzIHJlcXVpcmVkIGJ5IGZsaXAgbW9kaWZpZXIgaW4gb3JkZXIgdG8gd29yaywgYmUgc3VyZSB0byBpbmNsdWRlIGl0IGJlZm9yZSBmbGlwISIpLGU7aWYoZS5mbGlwcGVkJiZlLnBsYWNlbWVudD09PWUuX29yaWdpbmFsUGxhY2VtZW50KXJldHVybiBlO3ZhciB0PWUucGxhY2VtZW50LnNwbGl0KCItIilbMF0scz1uKHQpLG89ZS5wbGFjZW1lbnQuc3BsaXQoIi0iKVsxXXx8IiIsYT1bXTtyZXR1cm4gYT0iZmxpcCI9PT10aGlzLl9vcHRpb25zLmZsaXBCZWhhdmlvcj9bdCxzXTp0aGlzLl9vcHRpb25zLmZsaXBCZWhhdmlvcixhLmZvckVhY2goZnVuY3Rpb24ocixsKXtpZih0PT09ciYmYS5sZW5ndGghPT1sKzEpe3Q9ZS5wbGFjZW1lbnQuc3BsaXQoIi0iKVswXSxzPW4odCk7dmFyIHU9aShlLm9mZnNldHMucG9wcGVyKSxkPVsicmlnaHQiLCJib3R0b20iXS5pbmRleE9mKHQpIT09LTE7KGQmJk1hdGguZmxvb3IoZS5vZmZzZXRzLnJlZmVyZW5jZVt0XSk+TWF0aC5mbG9vcih1W3NdKXx8IWQmJk1hdGguZmxvb3IoZS5vZmZzZXRzLnJlZmVyZW5jZVt0XSk8TWF0aC5mbG9vcih1W3NdKSkmJihlLmZsaXBwZWQ9ITAsZS5wbGFjZW1lbnQ9YVtsKzFdLG8mJihlLnBsYWNlbWVudCs9Ii0iK28pLGUub2Zmc2V0cy5wb3BwZXI9dGhpcy5fZ2V0T2Zmc2V0cyh0aGlzLl9wb3BwZXIsdGhpcy5fcmVmZXJlbmNlLGUucGxhY2VtZW50KS5wb3BwZXIsZT10aGlzLnJ1bk1vZGlmaWVycyhlLHRoaXMuX29wdGlvbnMubW9kaWZpZXJzLHRoaXMuX2ZsaXApKX19LmJpbmQodGhpcykpLGV9LGUucHJvdG90eXBlLm1vZGlmaWVycy5vZmZzZXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fb3B0aW9ucy5vZmZzZXQsbj1lLm9mZnNldHMucG9wcGVyO3JldHVybiBlLnBsYWNlbWVudC5pbmRleE9mKCJsZWZ0IikhPT0tMT9uLnRvcC09dDplLnBsYWNlbWVudC5pbmRleE9mKCJyaWdodCIpIT09LTE/bi50b3ArPXQ6ZS5wbGFjZW1lbnQuaW5kZXhPZigidG9wIikhPT0tMT9uLmxlZnQtPXQ6ZS5wbGFjZW1lbnQuaW5kZXhPZigiYm90dG9tIikhPT0tMSYmKG4ubGVmdCs9dCksZX0sZS5wcm90b3R5cGUubW9kaWZpZXJzLmFycm93PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMuX29wdGlvbnMuYXJyb3dFbGVtZW50O2lmKCJzdHJpbmciPT10eXBlb2YgbiYmKG49dGhpcy5fcG9wcGVyLnF1ZXJ5U2VsZWN0b3IobikpLCFuKXJldHVybiBlO2lmKCF0aGlzLl9wb3BwZXIuY29udGFpbnMobikpcmV0dXJuIGNvbnNvbGUud2FybigiV0FSTklORzogYGFycm93RWxlbWVudGAgbXVzdCBiZSBjaGlsZCBvZiBpdHMgcG9wcGVyIGVsZW1lbnQhIiksZTtpZighdGhpcy5pc01vZGlmaWVyUmVxdWlyZWQodGhpcy5tb2RpZmllcnMuYXJyb3csdGhpcy5tb2RpZmllcnMua2VlcFRvZ2V0aGVyKSlyZXR1cm4gY29uc29sZS53YXJuKCJXQVJOSU5HOiBrZWVwVG9nZXRoZXIgbW9kaWZpZXIgaXMgcmVxdWlyZWQgYnkgYXJyb3cgbW9kaWZpZXIgaW4gb3JkZXIgdG8gd29yaywgYmUgc3VyZSB0byBpbmNsdWRlIGl0IGJlZm9yZSBhcnJvdyEiKSxlO3ZhciBzPXt9LG89ZS5wbGFjZW1lbnQuc3BsaXQoIi0iKVswXSxhPWkoZS5vZmZzZXRzLnBvcHBlcikscj1lLm9mZnNldHMucmVmZXJlbmNlLGw9WyJsZWZ0IiwicmlnaHQiXS5pbmRleE9mKG8pIT09LTEsdT1sPyJoZWlnaHQiOiJ3aWR0aCIsZD1sPyJ0b3AiOiJsZWZ0IixjPWw/ImxlZnQiOiJ0b3AiLGY9bD8iYm90dG9tIjoicmlnaHQiLGg9dChuKVt1XTtyW2ZdLWg8YVtkXSYmKGUub2Zmc2V0cy5wb3BwZXJbZF0tPWFbZF0tKHJbZl0taCkpLHJbZF0raD5hW2ZdJiYoZS5vZmZzZXRzLnBvcHBlcltkXSs9cltkXStoLWFbZl0pO3ZhciBwPXJbZF0rclt1XS8yLWgvMixtPXAtYVtkXTtyZXR1cm4gbT1NYXRoLm1heChNYXRoLm1pbihhW3VdLWgsbSksMCksc1tkXT1tLHNbY109IiIsZS5vZmZzZXRzLmFycm93PXMsZS5hcnJvd0VsZW1lbnQ9bixlfSxPYmplY3QuYXNzaWdufHxPYmplY3QuZGVmaW5lUHJvcGVydHkoT2JqZWN0LCJhc3NpZ24iLHtlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpmdW5jdGlvbihlKXtpZih2b2lkIDA9PT1lfHxudWxsPT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY29udmVydCBmaXJzdCBhcmd1bWVudCB0byBvYmplY3QiKTtmb3IodmFyIHQ9T2JqZWN0KGUpLG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXt2YXIgaT1hcmd1bWVudHNbbl07aWYodm9pZCAwIT09aSYmbnVsbCE9PWkpe2k9T2JqZWN0KGkpO2Zvcih2YXIgcz1PYmplY3Qua2V5cyhpKSxvPTAsYT1zLmxlbmd0aDtvPGE7bysrKXt2YXIgcj1zW29dLGw9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihpLHIpO3ZvaWQgMCE9PWwmJmwuZW51bWVyYWJsZSYmKHRbcl09aVtyXSl9fX1yZXR1cm4gdH19KSxlfSl9LGZ1bmN0aW9uKGUsdCxuKXshZnVuY3Rpb24odCxpKXtlLmV4cG9ydHM9aShuKDE0KSl9KHRoaXMsZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoaSl7aWYobltpXSlyZXR1cm4gbltpXS5leHBvcnRzO3ZhciBzPW5baV09e2k6aSxsOiExLGV4cG9ydHM6e319O3JldHVybiBlW2ldLmNhbGwocy5leHBvcnRzLHMscy5leHBvcnRzLHQpLHMubD0hMCxzLmV4cG9ydHN9dmFyIG49e307cmV0dXJuIHQubT1lLHQuYz1uLHQuaT1mdW5jdGlvbihlKXtyZXR1cm4gZX0sdC5kPWZ1bmN0aW9uKGUsdCxuKXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHtjb25maWd1cmFibGU6ITEsZW51bWVyYWJsZTohMCxnZXQ6bn0pfSx0Lm49ZnVuY3Rpb24oZSl7dmFyIG49ZSYmZS5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIGVbImRlZmF1bHQiXX06ZnVuY3Rpb24oKXtyZXR1cm4gZX07cmV0dXJuIHQuZChuLCJhIixuKSxufSx0Lm89ZnVuY3Rpb24oZSx0KXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCl9LHQucD0iL2xpYi8iLHQodC5zPTYpfShbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMCx0LlBvcHVwTWFuYWdlcj12b2lkIDA7dmFyIHM9big1KSxvPWkocyksYT1uKDMpLHI9bigyKSxsPWkocik7big0KTt2YXIgdT0xLGQ9W10sYz1mdW5jdGlvbihlKXtpZihkLmluZGV4T2YoZSk9PT0tMSl7dmFyIHQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fX3Z1ZV9fO2lmKCF0KXt2YXIgbj1lLnByZXZpb3VzU2libGluZztuLl9fdnVlX18mJih0PW4uX192dWVfXyl9cmV0dXJuIHR9O29bImRlZmF1bHQiXS50cmFuc2l0aW9uKGUse2FmdGVyRW50ZXI6ZnVuY3Rpb24oZSl7dmFyIG49dChlKTtuJiZuLmRvQWZ0ZXJPcGVuJiZuLmRvQWZ0ZXJPcGVuKCl9LGFmdGVyTGVhdmU6ZnVuY3Rpb24oZSl7dmFyIG49dChlKTtuJiZuLmRvQWZ0ZXJDbG9zZSYmbi5kb0FmdGVyQ2xvc2UoKX19KX19LGY9dm9pZCAwLGg9ZnVuY3Rpb24oKXtpZih2b2lkIDAhPT1mKXJldHVybiBmO3ZhciBlPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Uuc3R5bGUudmlzaWJpbGl0eT0iaGlkZGVuIixlLnN0eWxlLndpZHRoPSIxMDBweCIsZS5zdHlsZS5wb3NpdGlvbj0iYWJzb2x1dGUiLGUuc3R5bGUudG9wPSItOTk5OXB4Iixkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGUpO3ZhciB0PWUub2Zmc2V0V2lkdGg7ZS5zdHlsZS5vdmVyZmxvdz0ic2Nyb2xsIjt2YXIgbj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtuLnN0eWxlLndpZHRoPSIxMDAlIixlLmFwcGVuZENoaWxkKG4pO3ZhciBpPW4ub2Zmc2V0V2lkdGg7cmV0dXJuIGUucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKSx0LWl9LHA9ZnVuY3Rpb24gbShlKXtyZXR1cm4gMz09PWUubm9kZVR5cGUmJihlPWUubmV4dEVsZW1lbnRTaWJsaW5nfHxlLm5leHRTaWJsaW5nLG0oZSkpLGV9O3RbImRlZmF1bHQiXT17cHJvcHM6e3ZhbHVlOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiExfSx0cmFuc2l0aW9uOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6IiJ9LG9wZW5EZWxheTp7fSxjbG9zZURlbGF5Ont9LHpJbmRleDp7fSxtb2RhbDp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMX0sbW9kYWxGYWRlOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiEwfSxtb2RhbENsYXNzOnt9LGxvY2tTY3JvbGw6e3R5cGU6Qm9vbGVhbiwiZGVmYXVsdCI6ITB9LGNsb3NlT25QcmVzc0VzY2FwZTp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMX0sY2xvc2VPbkNsaWNrTW9kYWw6e3R5cGU6Qm9vbGVhbiwiZGVmYXVsdCI6ITF9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy50cmFuc2l0aW9uJiZjKHRoaXMudHJhbnNpdGlvbil9LGJlZm9yZU1vdW50OmZ1bmN0aW9uKCl7dGhpcy5fcG9wdXBJZD0icG9wdXAtIit1KyssbFsiZGVmYXVsdCJdLnJlZ2lzdGVyKHRoaXMuX3BvcHVwSWQsdGhpcyl9LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXtsWyJkZWZhdWx0Il0uZGVyZWdpc3Rlcih0aGlzLl9wb3B1cElkKSxsWyJkZWZhdWx0Il0uY2xvc2VNb2RhbCh0aGlzLl9wb3B1cElkKSx0aGlzLm1vZGFsJiZudWxsIT09dGhpcy5ib2R5T3ZlcmZsb3cmJiJoaWRkZW4iIT09dGhpcy5ib2R5T3ZlcmZsb3cmJihkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PXRoaXMuYm9keU92ZXJmbG93LGRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0PXRoaXMuYm9keVBhZGRpbmdSaWdodCksdGhpcy5ib2R5T3ZlcmZsb3c9bnVsbCx0aGlzLmJvZHlQYWRkaW5nUmlnaHQ9bnVsbH0sZGF0YTpmdW5jdGlvbigpe3JldHVybntvcGVuZWQ6ITEsYm9keU92ZXJmbG93Om51bGwsYm9keVBhZGRpbmdSaWdodDpudWxsLHJlbmRlcmVkOiExfX0sd2F0Y2g6e3ZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoZSl7aWYodGhpcy5fb3BlbmluZylyZXR1cm47dGhpcy5yZW5kZXJlZD90aGlzLm9wZW4oKToodGhpcy5yZW5kZXJlZD0hMCxvWyJkZWZhdWx0Il0ubmV4dFRpY2soZnVuY3Rpb24oKXt0Lm9wZW4oKX0pKX1lbHNlIHRoaXMuY2xvc2UoKX19LG1ldGhvZHM6e29wZW46ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLnJlbmRlcmVkfHwodGhpcy5yZW5kZXJlZD0hMCx0aGlzLiRlbWl0KCJpbnB1dCIsITApKTt2YXIgbj0oMCxhLm1lcmdlKSh7fSx0aGlzLGUpO3RoaXMuX2Nsb3NlVGltZXImJihjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lciksdGhpcy5fY2xvc2VUaW1lcj1udWxsKSxjbGVhclRpbWVvdXQodGhpcy5fb3BlblRpbWVyKTt2YXIgaT1OdW1iZXIobi5vcGVuRGVsYXkpO2k+MD90aGlzLl9vcGVuVGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe3QuX29wZW5UaW1lcj1udWxsLHQuZG9PcGVuKG4pfSxpKTp0aGlzLmRvT3BlbihuKX0sZG9PcGVuOmZ1bmN0aW9uKGUpe2lmKCghdGhpcy53aWxsT3Blbnx8dGhpcy53aWxsT3BlbigpKSYmIXRoaXMub3BlbmVkKXt0aGlzLl9vcGVuaW5nPSEwLHRoaXMudmlzaWJsZT0hMCx0aGlzLiRlbWl0KCJpbnB1dCIsITApO3ZhciB0PXAodGhpcy4kZWwpLG49ZS5tb2RhbCxpPWUuekluZGV4O2lmKGkmJihsWyJkZWZhdWx0Il0uekluZGV4PWkpLG4mJih0aGlzLl9jbG9zaW5nJiYobFsiZGVmYXVsdCJdLmNsb3NlTW9kYWwodGhpcy5fcG9wdXBJZCksdGhpcy5fY2xvc2luZz0hMSksbFsiZGVmYXVsdCJdLm9wZW5Nb2RhbCh0aGlzLl9wb3B1cElkLGxbImRlZmF1bHQiXS5uZXh0WkluZGV4KCksdCxlLm1vZGFsQ2xhc3MsZS5tb2RhbEZhZGUpLGUubG9ja1Njcm9sbCkpe3RoaXMuYm9keU92ZXJmbG93fHwodGhpcy5ib2R5UGFkZGluZ1JpZ2h0PWRvY3VtZW50LmJvZHkuc3R5bGUucGFkZGluZ1JpZ2h0LHRoaXMuYm9keU92ZXJmbG93PWRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cpLGY9aCgpO3ZhciBzPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ8ZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQ7Zj4wJiZzJiYoZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ9ZisicHgiKSxkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PSJoaWRkZW4ifSJzdGF0aWMiPT09Z2V0Q29tcHV0ZWRTdHlsZSh0KS5wb3NpdGlvbiYmKHQuc3R5bGUucG9zaXRpb249ImFic29sdXRlIiksbj90LnN0eWxlLnpJbmRleD1sWyJkZWZhdWx0Il0ubmV4dFpJbmRleCgpOmkmJih0LnN0eWxlLnpJbmRleD1pKSx0aGlzLm9wZW5lZD0hMCx0aGlzLm9uT3BlbiYmdGhpcy5vbk9wZW4oKSx0aGlzLnRyYW5zaXRpb258fHRoaXMuZG9BZnRlck9wZW4oKX19LGRvQWZ0ZXJPcGVuOmZ1bmN0aW9uKCl7dGhpcy5fb3BlbmluZz0hMX0sY2xvc2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKCF0aGlzLndpbGxDbG9zZXx8dGhpcy53aWxsQ2xvc2UoKSl7bnVsbCE9PXRoaXMuX29wZW5UaW1lciYmKGNsZWFyVGltZW91dCh0aGlzLl9vcGVuVGltZXIpLHRoaXMuX29wZW5UaW1lcj1udWxsKSxjbGVhclRpbWVvdXQodGhpcy5fY2xvc2VUaW1lcik7dmFyIHQ9TnVtYmVyKHRoaXMuY2xvc2VEZWxheSk7dD4wP3RoaXMuX2Nsb3NlVGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe2UuX2Nsb3NlVGltZXI9bnVsbCxlLmRvQ2xvc2UoKX0sdCk6dGhpcy5kb0Nsb3NlKCl9fSxkb0Nsb3NlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnZpc2libGU9ITEsdGhpcy4kZW1pdCgiaW5wdXQiLCExKSx0aGlzLl9jbG9zaW5nPSEwLHRoaXMub25DbG9zZSYmdGhpcy5vbkNsb3NlKCksdGhpcy5sb2NrU2Nyb2xsJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5tb2RhbCYmImhpZGRlbiIhPT1lLmJvZHlPdmVyZmxvdyYmKGRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3c9ZS5ib2R5T3ZlcmZsb3csZG9jdW1lbnQuYm9keS5zdHlsZS5wYWRkaW5nUmlnaHQ9ZS5ib2R5UGFkZGluZ1JpZ2h0KSxlLmJvZHlPdmVyZmxvdz1udWxsLGUuYm9keVBhZGRpbmdSaWdodD1udWxsfSwyMDApLHRoaXMub3BlbmVkPSExLHRoaXMudHJhbnNpdGlvbnx8dGhpcy5kb0FmdGVyQ2xvc2UoKX0sZG9BZnRlckNsb3NlOmZ1bmN0aW9uKCl7bFsiZGVmYXVsdCJdLmNsb3NlTW9kYWwodGhpcy5fcG9wdXBJZCksdGhpcy5fY2xvc2luZz0hMX19fSx0LlBvcHVwTWFuYWdlcj1sWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuKGV8fCIiKS5yZXBsYWNlKC9eW1xzXHVGRUZGXSt8W1xzXHVGRUZGXSskL2csIiIpfSxpPWZ1bmN0aW9uKGUsdCl7aWYoIWV8fCF0KXJldHVybiExO2lmKHQuaW5kZXhPZigiICIpIT0tMSl0aHJvdyBuZXcgRXJyb3IoImNsYXNzTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gc3BhY2UuIik7cmV0dXJuIGUuY2xhc3NMaXN0P2UuY2xhc3NMaXN0LmNvbnRhaW5zKHQpOigiICIrZS5jbGFzc05hbWUrIiAiKS5pbmRleE9mKCIgIit0KyIgIik+LTF9LHM9ZnVuY3Rpb24oZSx0KXtpZihlKXtmb3IodmFyIG49ZS5jbGFzc05hbWUscz0odHx8IiIpLnNwbGl0KCIgIiksbz0wLGE9cy5sZW5ndGg7bzxhO28rKyl7dmFyIHI9c1tvXTtyJiYoZS5jbGFzc0xpc3Q/ZS5jbGFzc0xpc3QuYWRkKHIpOmkoZSxyKXx8KG4rPSIgIityKSl9ZS5jbGFzc0xpc3R8fChlLmNsYXNzTmFtZT1uKX19LG89ZnVuY3Rpb24oZSx0KXtpZihlJiZ0KXtmb3IodmFyIHM9dC5zcGxpdCgiICIpLG89IiAiK2UuY2xhc3NOYW1lKyIgIixhPTAscj1zLmxlbmd0aDthPHI7YSsrKXt2YXIgbD1zW2FdO2wmJihlLmNsYXNzTGlzdD9lLmNsYXNzTGlzdC5yZW1vdmUobCk6aShlLGwpJiYobz1vLnJlcGxhY2UoIiAiK2wrIiAiLCIgIikpKX1lLmNsYXNzTGlzdHx8KGUuY2xhc3NOYW1lPW4obykpfX07ZS5leHBvcnRzPXtoYXNDbGFzczppLGFkZENsYXNzOnMscmVtb3ZlQ2xhc3M6b319LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwO3ZhciBpPW4oMSkscz0hMSxvPWZ1bmN0aW9uKCl7dmFyIGU9ci5tb2RhbERvbTtyZXR1cm4gZT9zPSEwOihzPSExLGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksci5tb2RhbERvbT1lLGUuYWRkRXZlbnRMaXN0ZW5lcigidG91Y2htb3ZlIixmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksZS5zdG9wUHJvcGFnYXRpb24oKX0pLGUuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGZ1bmN0aW9uKCl7ci5kb09uTW9kYWxDbGljayYmci5kb09uTW9kYWxDbGljaygpfSkpLGV9LGE9e30scj17ekluZGV4OjJlMyxtb2RhbEZhZGU6ITAsZ2V0SW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGFbZV19LHJlZ2lzdGVyOmZ1bmN0aW9uKGUsdCl7ZSYmdCYmKGFbZV09dCl9LGRlcmVnaXN0ZXI6ZnVuY3Rpb24oZSl7ZSYmKGFbZV09bnVsbCxkZWxldGUgYVtlXSl9LG5leHRaSW5kZXg6ZnVuY3Rpb24oKXtyZXR1cm4gci56SW5kZXgrK30sbW9kYWxTdGFjazpbXSxkb09uTW9kYWxDbGljazpmdW5jdGlvbigpe3ZhciBlPXIubW9kYWxTdGFja1tyLm1vZGFsU3RhY2subGVuZ3RoLTFdO2lmKGUpe3ZhciB0PXIuZ2V0SW5zdGFuY2UoZS5pZCk7dCYmdC5jbG9zZU9uQ2xpY2tNb2RhbCYmdC5jbG9zZSgpfX0sb3Blbk1vZGFsOmZ1bmN0aW9uKGUsdCxuLGEscil7aWYoZSYmdm9pZCAwIT09dCl7dGhpcy5tb2RhbEZhZGU9cjtmb3IodmFyIGw9dGhpcy5tb2RhbFN0YWNrLHU9MCxkPWwubGVuZ3RoO3U8ZDt1Kyspe3ZhciBjPWxbdV07aWYoYy5pZD09PWUpcmV0dXJufXZhciBmPW8oKTtpZigoMCxpLmFkZENsYXNzKShmLCJ2LW1vZGFsIiksdGhpcy5tb2RhbEZhZGUmJiFzJiYoMCxpLmFkZENsYXNzKShmLCJ2LW1vZGFsLWVudGVyIiksYSl7dmFyIGg9YS50cmltKCkuc3BsaXQoL1xzKy8pO2guZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4oMCxpLmFkZENsYXNzKShmLGUpfSl9c2V0VGltZW91dChmdW5jdGlvbigpeygwLGkucmVtb3ZlQ2xhc3MpKGYsInYtbW9kYWwtZW50ZXIiKX0sMjAwKSxuJiZuLnBhcmVudE5vZGUmJjExIT09bi5wYXJlbnROb2RlLm5vZGVUeXBlP24ucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChmKTpkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGYpLHQmJihmLnN0eWxlLnpJbmRleD10KSxmLnN0eWxlLmRpc3BsYXk9IiIsdGhpcy5tb2RhbFN0YWNrLnB1c2goe2lkOmUsekluZGV4OnQsbW9kYWxDbGFzczphfSl9fSxjbG9zZU1vZGFsOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMubW9kYWxTdGFjayxuPW8oKTtpZih0Lmxlbmd0aD4wKXt2YXIgcz10W3QubGVuZ3RoLTFdO2lmKHMuaWQ9PT1lKXtpZihzLm1vZGFsQ2xhc3Mpe3ZhciBhPXMubW9kYWxDbGFzcy50cmltKCkuc3BsaXQoL1xzKy8pO2EuZm9yRWFjaChmdW5jdGlvbihlKXtyZXR1cm4oMCxpLnJlbW92ZUNsYXNzKShuLGUpfSl9dC5wb3AoKSx0Lmxlbmd0aD4wJiYobi5zdHlsZS56SW5kZXg9dFt0Lmxlbmd0aC0xXS56SW5kZXgpfWVsc2UgZm9yKHZhciBsPXQubGVuZ3RoLTE7bD49MDtsLS0paWYodFtsXS5pZD09PWUpe3Quc3BsaWNlKGwsMSk7YnJlYWt9fTA9PT10Lmxlbmd0aCYmKHRoaXMubW9kYWxGYWRlJiYoMCxpLmFkZENsYXNzKShuLCJ2LW1vZGFsLWxlYXZlIiksc2V0VGltZW91dChmdW5jdGlvbigpezA9PT10Lmxlbmd0aCYmKG4ucGFyZW50Tm9kZSYmbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKG4pLG4uc3R5bGUuZGlzcGxheT0ibm9uZSIsci5tb2RhbERvbT12b2lkIDApLCgwLGkucmVtb3ZlQ2xhc3MpKG4sInYtbW9kYWwtbGVhdmUiKX0sMjAwKSl9fTt3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsZnVuY3Rpb24oZSl7aWYoMjc9PT1lLmtleUNvZGUmJnIubW9kYWxTdGFjay5sZW5ndGg+MCl7dmFyIHQ9ci5tb2RhbFN0YWNrW3IubW9kYWxTdGFjay5sZW5ndGgtMV07aWYoIXQpcmV0dXJuO3ZhciBuPXIuZ2V0SW5zdGFuY2UodC5pZCk7bi5jbG9zZU9uUHJlc3NFc2NhcGUmJm4uY2xvc2UoKX19KSx0WyJkZWZhdWx0Il09cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtmb3IodmFyIHQ9MSxuPWFyZ3VtZW50cy5sZW5ndGg7dDxuO3QrKyl7dmFyIGk9YXJndW1lbnRzW3RdO2Zvcih2YXIgcyBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkocykpe3ZhciBvPWlbc107dm9pZCAwIT09byYmKGVbc109byl9fXJldHVybiBlfXQuX19lc01vZHVsZT0hMCx0Lm1lcmdlPW59LGZ1bmN0aW9uKGUsdCl7fSxmdW5jdGlvbih0LG4pe3QuZXhwb3J0cz1lfSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMCl9XSl9KX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1zZWxlY3QtZHJvcGRvd24iLCJjbGFzcyI6eyJpcy1tdWx0aXBsZSI6ZS4kcGFyZW50Lm11bHRpcGxlfSxzdHlsZTp7bWluV2lkdGg6ZS5taW5XaWR0aH19LFtlLl90KCJkZWZhdWx0IildKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDI5KTt2YXIgbz1uKDMwKTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDEwKSxvPWkocyk7dFsiZGVmYXVsdCJdPXttaXhpbnM6W29bImRlZmF1bHQiXV0sbmFtZToiZWwtb3B0aW9uIixjb21wb25lbnROYW1lOiJFbE9wdGlvbiIscHJvcHM6e3ZhbHVlOntyZXF1aXJlZDohMH0sbGFiZWw6W1N0cmluZyxOdW1iZXJdLHNlbGVjdGVkOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiExfSxjcmVhdGVkOkJvb2xlYW4sZGlzYWJsZWQ6e3R5cGU6Qm9vbGVhbiwiZGVmYXVsdCI6ITF9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2luZGV4Oi0xLGdyb3VwRGlzYWJsZWQ6ITEsdmlzaWJsZTohMCxoaXRTdGF0ZTohMX19LGNvbXB1dGVkOntjdXJyZW50TGFiZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5sYWJlbHx8KCJzdHJpbmciPT10eXBlb2YgdGhpcy52YWx1ZXx8Im51bWJlciI9PXR5cGVvZiB0aGlzLnZhbHVlP3RoaXMudmFsdWU6IiIpfSxjdXJyZW50VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZXx8dGhpcy5sYWJlbHx8IiJ9LHBhcmVudDpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLiRwYXJlbnQ7IWUuaXNTZWxlY3Q7KWU9ZS4kcGFyZW50O3JldHVybiBlfSxpdGVtU2VsZWN0ZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wYXJlbnQubXVsdGlwbGU/dGhpcy5wYXJlbnQudmFsdWUuaW5kZXhPZih0aGlzLnZhbHVlKT4tMTp0aGlzLnZhbHVlPT09dGhpcy5wYXJlbnQudmFsdWV9LGxpbWl0UmVhY2hlZDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5wYXJlbnQubXVsdGlwbGUmJighdGhpcy5pdGVtU2VsZWN0ZWQmJnRoaXMucGFyZW50LnZhbHVlLmxlbmd0aD49dGhpcy5wYXJlbnQubXVsdGlwbGVMaW1pdCYmdGhpcy5wYXJlbnQubXVsdGlwbGVMaW1pdD4wKX19LG1ldGhvZHM6e2hhbmRsZUdyb3VwRGlzYWJsZWQ6ZnVuY3Rpb24oZSl7dGhpcy5ncm91cERpc2FibGVkPWV9LGhvdmVySXRlbTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWR8fHRoaXMuZ3JvdXBEaXNhYmxlZHx8KHRoaXMucGFyZW50LmhvdmVySW5kZXg9dGhpcy5wYXJlbnQub3B0aW9ucy5pbmRleE9mKHRoaXMpKX0sc2VsZWN0T3B0aW9uQ2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkIT09ITAmJnRoaXMuZ3JvdXBEaXNhYmxlZCE9PSEwJiZ0aGlzLmRpc3BhdGNoKCJFbFNlbGVjdCIsImhhbmRsZU9wdGlvbkNsaWNrIix0aGlzKX0scXVlcnlDaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5yZXBsYWNlKC8oXF58XCh8XCl8XFt8XF18XCR8XCp8XCt8XC58XD98XFx8XHt8XH18XHwpL2csIlxcJDEiKTt0aGlzLnZpc2libGU9bmV3IFJlZ0V4cCh0LCJpIikudGVzdCh0aGlzLmN1cnJlbnRMYWJlbCl8fHRoaXMuY3JlYXRlZCx0aGlzLnZpc2libGV8fHRoaXMucGFyZW50LmZpbHRlcmVkT3B0aW9uc0NvdW50LS19LHJlc2V0SW5kZXg6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCl7ZS5pbmRleD1lLnBhcmVudC5vcHRpb25zLmluZGV4T2YoZSl9KX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnBhcmVudC5vcHRpb25zLnB1c2godGhpcyksdGhpcy5wYXJlbnQub3B0aW9uc0NvdW50KyssdGhpcy5wYXJlbnQuZmlsdGVyZWRPcHRpb25zQ291bnQrKyx0aGlzLmluZGV4PXRoaXMucGFyZW50Lm9wdGlvbnMuaW5kZXhPZih0aGlzKSx0aGlzLiRvbigicXVlcnlDaGFuZ2UiLHRoaXMucXVlcnlDaGFuZ2UpLHRoaXMuJG9uKCJoYW5kbGVHcm91cERpc2FibGVkIix0aGlzLmhhbmRsZUdyb3VwRGlzYWJsZWQpLHRoaXMuJG9uKCJyZXNldEluZGV4Iix0aGlzLnJlc2V0SW5kZXgpfSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5kaXNwYXRjaCgiRWxTZWxlY3QiLCJvbk9wdGlvbkRlc3Ryb3kiLHRoaXMpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJsaSIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUudmlzaWJsZSxleHByZXNzaW9uOiJ2aXNpYmxlIn1dLHN0YXRpY0NsYXNzOiJlbC1zZWxlY3QtZHJvcGRvd25fX2l0ZW0iLCJjbGFzcyI6e3NlbGVjdGVkOmUuaXRlbVNlbGVjdGVkLCJpcy1kaXNhYmxlZCI6ZS5kaXNhYmxlZHx8ZS5ncm91cERpc2FibGVkfHxlLmxpbWl0UmVhY2hlZCxob3ZlcjplLnBhcmVudC5ob3ZlckluZGV4PT09ZS5pbmRleH0sb246e21vdXNlZW50ZXI6ZS5ob3Zlckl0ZW0sY2xpY2s6ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKSxlLnNlbGVjdE9wdGlvbkNsaWNrKHQpfX19LFtlLl90KCJkZWZhdWx0IixbZS5faCgic3BhbiIsW2UuX3MoZS5jdXJyZW50TGFiZWwpXSldKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMzIpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMzMpO3ZhciBvPW4oMzQpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdFsiZGVmYXVsdCJdPXtuYW1lOiJFbFRhZyIscHJvcHM6e3RleHQ6U3RyaW5nLGNsb3NhYmxlOkJvb2xlYW4sdHlwZTpTdHJpbmcsaGl0OkJvb2xlYW4sY2xvc2VUcmFuc2l0aW9uOkJvb2xlYW59LG1ldGhvZHM6e2hhbmRsZUNsb3NlOmZ1bmN0aW9uKGUpe3RoaXMuJGVtaXQoImNsb3NlIixlKX19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goInRyYW5zaXRpb24iLHthdHRyczp7bmFtZTplLmNsb3NlVHJhbnNpdGlvbj8iIjoibWQtZmFkZS1jZW50ZXIifX0sW2UuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtdGFnIiwiY2xhc3MiOltlLnR5cGU/ImVsLXRhZy0tIitlLnR5cGU6IiIseyJpcy1oaXQiOmUuaGl0fV19LFtlLl90KCJkZWZhdWx0IiksZS5jbG9zYWJsZT9lLl9oKCJpIix7c3RhdGljQ2xhc3M6ImVsLXRhZ19fY2xvc2UgZWwtaWNvbi1jbG9zZSIsb246e2NsaWNrOmUuaGFuZGxlQ2xvc2V9fSk6ZS5fZSgpXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW4oMzYpO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbil7cmV0dXJuIHZvaWQgMD09PW4/aShlLHQsITEpOmkoZSxuLHQhPT0hMSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlLHQsbixpKXtmdW5jdGlvbiBzKCl7ZnVuY3Rpb24gcygpe2E9TnVtYmVyKG5ldyBEYXRlKSxuLmFwcGx5KGwsZCl9ZnVuY3Rpb24gcigpe289dm9pZCAwfXZhciBsPXRoaXMsdT1OdW1iZXIobmV3IERhdGUpLWEsZD1hcmd1bWVudHM7aSYmIW8mJnMoKSxvJiZjbGVhclRpbWVvdXQobyksdm9pZCAwPT09aSYmdT5lP3MoKTp0IT09ITAmJihvPXNldFRpbWVvdXQoaT9yOnMsdm9pZCAwPT09aT9lLXU6ZSkpfXZhciBvLGE9MDtyZXR1cm4iYm9vbGVhbiIhPXR5cGVvZiB0JiYoaT1uLG49dCx0PXZvaWQgMCksc319LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwO3ZhciBpPW4oMzgpLHM9W10sbz0iQEBjbGlja291dHNpZGVDb250ZXh0IjsoMCxpLm9uKShkb2N1bWVudCwiY2xpY2siLGZ1bmN0aW9uKGUpe3MuZm9yRWFjaChmdW5jdGlvbih0KXtyZXR1cm4gdFtvXS5kb2N1bWVudEhhbmRsZXIoZSl9KX0pLHRbImRlZmF1bHQiXT17YmluZDpmdW5jdGlvbihlLHQsbil7dmFyIGk9cy5wdXNoKGUpLTEsYT1mdW5jdGlvbihpKXshbi5jb250ZXh0fHxlLmNvbnRhaW5zKGkudGFyZ2V0KXx8bi5jb250ZXh0LnBvcHBlckVsbSYmbi5jb250ZXh0LnBvcHBlckVsbS5jb250YWlucyhpLnRhcmdldCl8fCh0LmV4cHJlc3Npb24/ZVtvXS5tZXRob2ROYW1lJiZuLmNvbnRleHRbZVtvXS5tZXRob2ROYW1lXSYmbi5jb250ZXh0W2Vbb10ubWV0aG9kTmFtZV0oKTplW29dLmJpbmRpbmdGbiYmZVtvXS5iaW5kaW5nRm4oKSl9O2Vbb109e2lkOmksZG9jdW1lbnRIYW5kbGVyOmEsbWV0aG9kTmFtZTp0LmV4cHJlc3Npb24sYmluZGluZ0ZuOnQudmFsdWV9fSx1cGRhdGU6ZnVuY3Rpb24oZSx0KXtlW29dLm1ldGhvZE5hbWU9dC5leHByZXNzaW9uLGVbb10uYmluZGluZ0ZuPXQudmFsdWV9LHVuYmluZDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9cy5sZW5ndGgsbj0wO248dDtuKyspaWYoc1tuXVtvXS5pZD09PWVbb10uaWQpe3Muc3BsaWNlKG4sMSk7YnJlYWt9fX19LGZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oKXtyZXR1cm4gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcj9mdW5jdGlvbihlLHQsbil7ZSYmdCYmbiYmZS5hZGRFdmVudExpc3RlbmVyKHQsbiwhMSl9OmZ1bmN0aW9uKGUsdCxuKXtlJiZ0JiZuJiZlLmF0dGFjaEV2ZW50KCJvbiIrdCxuKX19KCksaT1mdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyP2Z1bmN0aW9uKGUsdCxuKXtlJiZ0JiZlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX06ZnVuY3Rpb24oZSx0LG4pe2UmJnQmJmUuZGV0YWNoRXZlbnQoIm9uIit0LG4pfX0oKSxzPWZ1bmN0aW9uKGUsdCxzKXt2YXIgbz1mdW5jdGlvbigpe3MmJnMuYXBwbHkodGhpcyxhcmd1bWVudHMpLGkoZSx0LG8pfTtuKGUsdCxvKX07ZS5leHBvcnRzPXtvbjpuLG9mZjppLG9uY2U6c319LGZ1bmN0aW9uKGUsdCl7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuKGV8fCIiKS5yZXBsYWNlKC9eW1xzXHVGRUZGXSt8W1xzXHVGRUZGXSskL2csIiIpfSxpPWZ1bmN0aW9uKGUsdCl7aWYoIWV8fCF0KXJldHVybiExO2lmKHQuaW5kZXhPZigiICIpIT0tMSl0aHJvdyBuZXcgRXJyb3IoImNsYXNzTmFtZSBzaG91bGQgbm90IGNvbnRhaW4gc3BhY2UuIik7cmV0dXJuIGUuY2xhc3NMaXN0P2UuY2xhc3NMaXN0LmNvbnRhaW5zKHQpOigiICIrZS5jbGFzc05hbWUrIiAiKS5pbmRleE9mKCIgIit0KyIgIik+LTF9LHM9ZnVuY3Rpb24oZSx0KXtpZihlKXtmb3IodmFyIG49ZS5jbGFzc05hbWUscz0odHx8IiIpLnNwbGl0KCIgIiksbz0wLGE9cy5sZW5ndGg7bzxhO28rKyl7dmFyIHI9c1tvXTtyJiYoZS5jbGFzc0xpc3Q/ZS5jbGFzc0xpc3QuYWRkKHIpOmkoZSxyKXx8KG4rPSIgIityKSl9ZS5jbGFzc0xpc3R8fChlLmNsYXNzTmFtZT1uKX19LG89ZnVuY3Rpb24oZSx0KXtpZihlJiZ0KXtmb3IodmFyIHM9dC5zcGxpdCgiICIpLG89IiAiK2UuY2xhc3NOYW1lKyIgIixhPTAscj1zLmxlbmd0aDthPHI7YSsrKXt2YXIgbD1zW2FdO2wmJihlLmNsYXNzTGlzdD9lLmNsYXNzTGlzdC5yZW1vdmUobCk6aShlLGwpJiYobz1vLnJlcGxhY2UoIiAiK2wrIiAiLCIgIikpKX1lLmNsYXNzTGlzdHx8KGUuY2xhc3NOYW1lPW4obykpfX07ZS5leHBvcnRzPXtoYXNDbGFzczppLGFkZENsYXNzOnMscmVtb3ZlQ2xhc3M6b319LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMDt2YXIgbj1mdW5jdGlvbigpe3ZhciBlPXdpbmRvdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fHdpbmRvdy53ZWJraXRSZXF1ZXN0QW5pbWF0aW9uRnJhbWV8fGZ1bmN0aW9uKGUpe3JldHVybiB3aW5kb3cuc2V0VGltZW91dChlLDIwKX07cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBlKHQpfX0oKSxpPWZ1bmN0aW9uKCl7dmFyIGU9d2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lfHx3aW5kb3cubW96Q2FuY2VsQW5pbWF0aW9uRnJhbWV8fHdpbmRvdy53ZWJraXRDYW5jZWxBbmltYXRpb25GcmFtZXx8d2luZG93LmNsZWFyVGltZW91dDtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIGUodCl9fSgpLHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fX3Jlc2l6ZVRyaWdnZXJfXyxuPXQuZmlyc3RFbGVtZW50Q2hpbGQsaT10Lmxhc3RFbGVtZW50Q2hpbGQscz1uLmZpcnN0RWxlbWVudENoaWxkO2kuc2Nyb2xsTGVmdD1pLnNjcm9sbFdpZHRoLGkuc2Nyb2xsVG9wPWkuc2Nyb2xsSGVpZ2h0LHMuc3R5bGUud2lkdGg9bi5vZmZzZXRXaWR0aCsxKyJweCIscy5zdHlsZS5oZWlnaHQ9bi5vZmZzZXRIZWlnaHQrMSsicHgiLG4uc2Nyb2xsTGVmdD1uLnNjcm9sbFdpZHRoLG4uc2Nyb2xsVG9wPW4uc2Nyb2xsSGVpZ2h0fSxvPWZ1bmN0aW9uKGUpe3JldHVybiBlLm9mZnNldFdpZHRoIT09ZS5fX3Jlc2l6ZUxhc3RfXy53aWR0aHx8ZS5vZmZzZXRIZWlnaHQhPT1lLl9fcmVzaXplTGFzdF9fLmhlaWdodH0sYT1mdW5jdGlvbihlKXt2YXIgdD10aGlzO3ModGhpcyksdGhpcy5fX3Jlc2l6ZVJBRl9fJiZpKHRoaXMuX19yZXNpemVSQUZfXyksdGhpcy5fX3Jlc2l6ZVJBRl9fPW4oZnVuY3Rpb24oKXtvKHQpJiYodC5fX3Jlc2l6ZUxhc3RfXy53aWR0aD10Lm9mZnNldFdpZHRoLHQuX19yZXNpemVMYXN0X18uaGVpZ2h0PXQub2Zmc2V0SGVpZ2h0LHQuX19yZXNpemVMaXN0ZW5lcnNfXy5mb3JFYWNoKGZ1bmN0aW9uKG4pe24uY2FsbCh0LGUpfSkpfSl9LHI9ZG9jdW1lbnQuYXR0YWNoRXZlbnQsbD0iV2Via2l0IE1veiBPIG1zIi5zcGxpdCgiICIpLHU9IndlYmtpdEFuaW1hdGlvblN0YXJ0IGFuaW1hdGlvbnN0YXJ0IG9BbmltYXRpb25TdGFydCBNU0FuaW1hdGlvblN0YXJ0Ii5zcGxpdCgiICIpLGQ9InJlc2l6ZWFuaW0iLGM9ITEsZj0iIixoPSJhbmltYXRpb25zdGFydCI7aWYoIXIpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZha2VlbGVtZW50Iik7aWYodm9pZCAwIT09cC5zdHlsZS5hbmltYXRpb25OYW1lJiYoYz0hMCksYz09PSExKWZvcih2YXIgbT0iIixnPTA7ZzxsLmxlbmd0aDtnKyspaWYodm9pZCAwIT09cC5zdHlsZVtsW2ddKyJBbmltYXRpb25OYW1lIl0pe209bFtnXSxmPSItIittLnRvTG93ZXJDYXNlKCkrIi0iLGg9dVtnXSxjPSEwO2JyZWFrfX12YXIgdj0hMSx5PWZ1bmN0aW9uKCl7aWYoIXYpe3ZhciBlPSJAIitmKyJrZXlmcmFtZXMgIitkKyIgeyBmcm9tIHsgb3BhY2l0eTogMDsgfSB0byB7IG9wYWNpdHk6IDA7IH0gfSAiLHQ9ZisiYW5pbWF0aW9uOiAxbXMgIitkKyI7IixuPWUrIlxuICAgICAgLnJlc2l6ZS10cmlnZ2VycyB7ICIrdCsnIHZpc2liaWxpdHk6IGhpZGRlbjsgb3BhY2l0eTogMDsgfVxuICAgICAgLnJlc2l6ZS10cmlnZ2VycywgLnJlc2l6ZS10cmlnZ2VycyA+IGRpdiwgLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlIHsgY29udGVudDogIiAiOyBkaXNwbGF5OiBibG9jazsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IGhlaWdodDogMTAwJTsgd2lkdGg6IDEwMCU7IG92ZXJmbG93OiBoaWRkZW47IH1cbiAgICAgIC5yZXNpemUtdHJpZ2dlcnMgPiBkaXYgeyBiYWNrZ3JvdW5kOiAjZWVlOyBvdmVyZmxvdzogYXV0bzsgfVxuICAgICAgLmNvbnRyYWN0LXRyaWdnZXI6YmVmb3JlIHsgd2lkdGg6IDIwMCU7IGhlaWdodDogMjAwJTsgfScsaT1kb2N1bWVudC5oZWFkfHxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3R5bGUiKTsKcy50eXBlPSJ0ZXh0L2NzcyIscy5zdHlsZVNoZWV0P3Muc3R5bGVTaGVldC5jc3NUZXh0PW46cy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShuKSksaS5hcHBlbmRDaGlsZChzKSx2PSEwfX07dC5hZGRSZXNpemVMaXN0ZW5lcj1mdW5jdGlvbihlLHQpe2lmKHIpZS5hdHRhY2hFdmVudCgib25yZXNpemUiLHQpO2Vsc2V7aWYoIWUuX19yZXNpemVUcmlnZ2VyX18peyJzdGF0aWMiPT09Z2V0Q29tcHV0ZWRTdHlsZShlKS5wb3NpdGlvbiYmKGUuc3R5bGUucG9zaXRpb249InJlbGF0aXZlIikseSgpLGUuX19yZXNpemVMYXN0X189e30sZS5fX3Jlc2l6ZUxpc3RlbmVyc19fPVtdO3ZhciBuPWUuX19yZXNpemVUcmlnZ2VyX189ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bi5jbGFzc05hbWU9InJlc2l6ZS10cmlnZ2VycyIsbi5pbm5lckhUTUw9JzxkaXYgY2xhc3M9ImV4cGFuZC10cmlnZ2VyIj48ZGl2PjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9ImNvbnRyYWN0LXRyaWdnZXIiPjwvZGl2PicsZS5hcHBlbmRDaGlsZChuKSxzKGUpLGUuYWRkRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixhLCEwKSxoJiZuLmFkZEV2ZW50TGlzdGVuZXIoaCxmdW5jdGlvbih0KXt0LmFuaW1hdGlvbk5hbWU9PT1kJiZzKGUpfSl9ZS5fX3Jlc2l6ZUxpc3RlbmVyc19fLnB1c2godCl9fSx0LnJlbW92ZVJlc2l6ZUxpc3RlbmVyPWZ1bmN0aW9uKGUsdCl7cj9lLmRldGFjaEV2ZW50KCJvbnJlc2l6ZSIsdCk6KGUuX19yZXNpemVMaXN0ZW5lcnNfXy5zcGxpY2UoZS5fX3Jlc2l6ZUxpc3RlbmVyc19fLmluZGV4T2YodCksMSksZS5fX3Jlc2l6ZUxpc3RlbmVyc19fLmxlbmd0aHx8KGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigic2Nyb2xsIixhKSxlLl9fcmVzaXplVHJpZ2dlcl9fPSFlLnJlbW92ZUNoaWxkKGUuX19yZXNpemVUcmlnZ2VyX18pKSl9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6ImNsaWNrb3V0c2lkZSIscmF3TmFtZToidi1jbGlja291dHNpZGUiLHZhbHVlOmUuaGFuZGxlQ2xvc2UsZXhwcmVzc2lvbjoiaGFuZGxlQ2xvc2UifV0sc3RhdGljQ2xhc3M6ImVsLXNlbGVjdCJ9LFtlLm11bHRpcGxlP2UuX2goImRpdiIse3JlZjoidGFncyIsc3RhdGljQ2xhc3M6ImVsLXNlbGVjdF9fdGFncyIsc3R5bGU6eyJtYXgtd2lkdGgiOmUuaW5wdXRXaWR0aC0zMisicHgifSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7dC5zdG9wUHJvcGFnYXRpb24oKSxlLnRvZ2dsZU1lbnUodCl9fX0sW2UuX2goInRyYW5zaXRpb24tZ3JvdXAiLHtvbjp7ImFmdGVyLWxlYXZlIjplLnJlc2V0SW5wdXRIZWlnaHR9fSxbZS5fbChlLnNlbGVjdGVkLGZ1bmN0aW9uKHQpe3JldHVybiBlLl9oKCJlbC10YWciLHtrZXk6dC52YWx1ZSxhdHRyczp7Y2xvc2FibGU6IiIsaGl0OnQuaGl0U3RhdGUsdHlwZToicHJpbWFyeSIsImNsb3NlLXRyYW5zaXRpb24iOiIifSxvbjp7Y2xvc2U6ZnVuY3Rpb24obil7ZS5kZWxldGVUYWcobix0KX19fSxbIlxuICAgICAgICAiK2UuX3ModC5jdXJyZW50TGFiZWwpKyJcbiAgICAgICJdKX0pXSksZS5maWx0ZXJhYmxlP2UuX2goImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTplLnF1ZXJ5LGV4cHJlc3Npb246InF1ZXJ5In1dLHJlZjoiaW5wdXQiLHN0YXRpY0NsYXNzOiJlbC1zZWxlY3RfX2lucHV0IixzdHlsZTp7d2lkdGg6ZS5pbnB1dExlbmd0aCsicHgiLCJtYXgtd2lkdGgiOmUuaW5wdXRXaWR0aC00MisicHgifSxhdHRyczp7dHlwZToidGV4dCIsZGVib3VuY2U6ZS5yZW1vdGU/MzAwOjB9LGRvbVByb3BzOnt2YWx1ZTplLl9zKGUucXVlcnkpfSxvbjp7Zm9jdXM6ZnVuY3Rpb24odCl7ZS52aXNpYmxlPSEwfSxrZXl1cDplLm1hbmFnZVBsYWNlaG9sZGVyLGtleWRvd246W2UucmVzZXRJbnB1dFN0YXRlLGZ1bmN0aW9uKHQpezQwPT09dC5rZXlDb2RlJiYodC5wcmV2ZW50RGVmYXVsdCgpLGUubmF2aWdhdGVPcHRpb25zKCJuZXh0IikpfSxmdW5jdGlvbih0KXszOD09PXQua2V5Q29kZSYmKHQucHJldmVudERlZmF1bHQoKSxlLm5hdmlnYXRlT3B0aW9ucygicHJldiIpKX0sZnVuY3Rpb24odCl7MTM9PT10LmtleUNvZGUmJih0LnByZXZlbnREZWZhdWx0KCksZS5zZWxlY3RPcHRpb24odCkpfSxmdW5jdGlvbih0KXsyNz09PXQua2V5Q29kZSYmKHQucHJldmVudERlZmF1bHQoKSxlLnZpc2libGU9ITEpfSxmdW5jdGlvbih0KXs4IT09dC5rZXlDb2RlJiY0NiE9PXQua2V5Q29kZXx8ZS5kZWxldGVQcmV2VGFnKHQpfV0saW5wdXQ6ZnVuY3Rpb24odCl7dC50YXJnZXQuY29tcG9zaW5nfHwoZS5xdWVyeT10LnRhcmdldC52YWx1ZSl9fX0pOmUuX2UoKV0pOmUuX2UoKSxlLl9oKCJlbC1pbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6ZS5zZWxlY3RlZExhYmVsLGV4cHJlc3Npb246InNlbGVjdGVkTGFiZWwifV0scmVmOiJyZWZlcmVuY2UiLGF0dHJzOnt0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjplLmN1cnJlbnRQbGFjZWhvbGRlcixuYW1lOmUubmFtZSxkaXNhYmxlZDplLmRpc2FibGVkLHJlYWRvbmx5OiFlLmZpbHRlcmFibGV8fGUubXVsdGlwbGUsaWNvbjplLmljb25DbGFzc30sZG9tUHJvcHM6e3ZhbHVlOmUuc2VsZWN0ZWRMYWJlbH0sb246e2ZvY3VzOmUudG9nZ2xlTWVudSxjbGljazplLmhhbmRsZUljb25DbGljayxpbnB1dDpmdW5jdGlvbih0KXtlLnNlbGVjdGVkTGFiZWw9dH19LG5hdGl2ZU9uOnttb3VzZWRvd246ZnVuY3Rpb24odCl7ZS5oYW5kbGVNb3VzZURvd24odCl9LGtleXVwOmZ1bmN0aW9uKHQpe2UuZGVib3VuY2VkT25JbnB1dENoYW5nZSh0KX0sa2V5ZG93bjpbZnVuY3Rpb24odCl7NDA9PT10LmtleUNvZGUmJih0LnByZXZlbnREZWZhdWx0KCksZS5uYXZpZ2F0ZU9wdGlvbnMoIm5leHQiKSl9LGZ1bmN0aW9uKHQpezM4PT09dC5rZXlDb2RlJiYodC5wcmV2ZW50RGVmYXVsdCgpLGUubmF2aWdhdGVPcHRpb25zKCJwcmV2IikpfSxmdW5jdGlvbih0KXsxMz09PXQua2V5Q29kZSYmKHQucHJldmVudERlZmF1bHQoKSxlLnNlbGVjdE9wdGlvbih0KSl9LGZ1bmN0aW9uKHQpezI3PT09dC5rZXlDb2RlJiYodC5wcmV2ZW50RGVmYXVsdCgpLGUudmlzaWJsZT0hMSl9LGZ1bmN0aW9uKHQpezk9PT10LmtleUNvZGUmJihlLnZpc2libGU9ITEpfV0sbW91c2VlbnRlcjpmdW5jdGlvbih0KXtlLmlucHV0SG92ZXJpbmc9ITB9LG1vdXNlbGVhdmU6ZnVuY3Rpb24odCl7ZS5pbnB1dEhvdmVyaW5nPSExfX19KSxlLl9oKCJ0cmFuc2l0aW9uIix7YXR0cnM6e25hbWU6Im1kLWZhZGUtYm90dG9tIn0sb246eyJhZnRlci1sZWF2ZSI6ZS5kb0Rlc3Ryb3l9fSxbZS5faCgiZWwtc2VsZWN0LW1lbnUiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnZpc2libGUmJmUuZW1wdHlUZXh0IT09ITEsZXhwcmVzc2lvbjoidmlzaWJsZSAmJiBlbXB0eVRleHQgIT09IGZhbHNlIn1dLHJlZjoicG9wcGVyIn0sW2UuX2goInVsIix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS5vcHRpb25zLmxlbmd0aD4wJiYhZS5sb2FkaW5nLGV4cHJlc3Npb246Im9wdGlvbnMubGVuZ3RoID4gMCAmJiAhbG9hZGluZyJ9XSxzdGF0aWNDbGFzczoiZWwtc2VsZWN0LWRyb3Bkb3duX19saXN0IiwiY2xhc3MiOnsiaXMtZW1wdHkiOiFlLmFsbG93Q3JlYXRlJiYwPT09ZS5maWx0ZXJlZE9wdGlvbnNDb3VudH19LFtlLnNob3dOZXdPcHRpb24/ZS5faCgiZWwtb3B0aW9uIix7YXR0cnM6e2NyZWF0ZWQ6IiJ9LGRvbVByb3BzOnt2YWx1ZTplLnF1ZXJ5fX0pOmUuX2UoKSxlLl90KCJkZWZhdWx0IildKSxlLmVtcHR5VGV4dCYmIWUuYWxsb3dDcmVhdGU/ZS5faCgicCIse3N0YXRpY0NsYXNzOiJlbC1zZWxlY3QtZHJvcGRvd25fX2VtcHR5In0sW2UuX3MoZS5lbXB0eVRleHQpXSk6ZS5fZSgpXSldKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjgpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0WyJkZWZhdWx0Il09e21vdW50ZWQ6ZnVuY3Rpb24oKXtyZXR1cm59LG1ldGhvZHM6e2dldE1pZ3JhdGluZ0NvbmZpZzpmdW5jdGlvbigpe3JldHVybntwcm9wczp7fSxldmVudHM6e319fX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oNDUpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oNDYpO3ZhciBvPW4oNDcpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjYpLG89aShzKTt0WyJkZWZhdWx0Il09e25hbWU6ImVsLWRpYWxvZyIsbWl4aW5zOltvWyJkZWZhdWx0Il1dLHByb3BzOnt0aXRsZTp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiIifSxtb2RhbDp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMH0sbG9ja1Njcm9sbDp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMH0sY2xvc2VPbkNsaWNrTW9kYWw6e3R5cGU6Qm9vbGVhbiwiZGVmYXVsdCI6ITB9LGNsb3NlT25QcmVzc0VzY2FwZTp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMH0sc2hvd0Nsb3NlOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiEwfSxzaXplOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6InNtYWxsIn0sY3VzdG9tQ2xhc3M6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiIn0sdG9wOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6IjE1JSJ9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3Zpc2libGU6ITF9fSx3YXRjaDp7dmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy52aXNpYmxlPWV9LHZpc2libGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLiRlbWl0KCJpbnB1dCIsZSksZT8odGhpcy4kZW1pdCgib3BlbiIpLHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCl7dC4kcmVmcy5kaWFsb2cuc2Nyb2xsVG9wPTB9KSk6dGhpcy4kZW1pdCgiY2xvc2UiKX19LGNvbXB1dGVkOntzaXplQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4iZWwtZGlhbG9nLS0iK3RoaXMuc2l6ZX0sc3R5bGU6ZnVuY3Rpb24oKXtyZXR1cm4iZnVsbCI9PT10aGlzLnNpemU/e306eyJtYXJnaW4tYm90dG9tIjoiNTBweCIsdG9wOnRoaXMudG9wfX19LG1ldGhvZHM6e2hhbmRsZVdyYXBwZXJDbGljazpmdW5jdGlvbigpe3RoaXMuY2xvc2VPbkNsaWNrTW9kYWwmJnRoaXMuY2xvc2UoKX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlJiYodGhpcy5yZW5kZXJlZD0hMCx0aGlzLm9wZW4oKSl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goInRyYW5zaXRpb24iLHthdHRyczp7bmFtZToiZGlhbG9nLWZhZGUifX0sW2UuX2goImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUudmlzaWJsZSxleHByZXNzaW9uOiJ2aXNpYmxlIn1dLHN0YXRpY0NsYXNzOiJlbC1kaWFsb2dfX3dyYXBwZXIiLG9uOntjbGljazpmdW5jdGlvbih0KXt0LnRhcmdldD09PXQuY3VycmVudFRhcmdldCYmZS5oYW5kbGVXcmFwcGVyQ2xpY2sodCl9fX0sW2UuX2goImRpdiIse3JlZjoiZGlhbG9nIixzdGF0aWNDbGFzczoiZWwtZGlhbG9nIiwiY2xhc3MiOltlLnNpemVDbGFzcyxlLmN1c3RvbUNsYXNzXSxzdHlsZTplLnN0eWxlfSxbZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLWRpYWxvZ19faGVhZGVyIn0sW2UuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtZGlhbG9nX190aXRsZSJ9LFtlLl9zKGUudGl0bGUpXSksZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLWRpYWxvZ19faGVhZGVyYnRuIn0sW2Uuc2hvd0Nsb3NlP2UuX2goImkiLHtzdGF0aWNDbGFzczoiZWwtZGlhbG9nX19jbG9zZSBlbC1pY29uIGVsLWljb24tY2xvc2UiLG9uOntjbGljazpmdW5jdGlvbih0KXtlLmNsb3NlKCl9fX0pOmUuX2UoKV0pXSksZS5yZW5kZXJlZD9lLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtZGlhbG9nX19ib2R5In0sW2UuX3QoImRlZmF1bHQiKV0pOmUuX2UoKSxlLiRzbG90cy5mb290ZXI/ZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLWRpYWxvZ19fZm9vdGVyIn0sW2UuX3QoImZvb3RlciIpXSk6ZS5fZSgpXSldKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oNDkpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oNTApO3ZhciBvPW4oNTEpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTcpLG89aShzKSxhPW4oMzcpLHI9aShhKTt0WyJkZWZhdWx0Il09e25hbWU6IkVsQXV0b2NvbXBsZXRlIixjb21wb25lbnRzOntFbElucHV0Om9bImRlZmF1bHQiXX0sZGlyZWN0aXZlczp7Q2xpY2tvdXRzaWRlOnJbImRlZmF1bHQiXX0scHJvcHM6e3BsYWNlaG9sZGVyOlN0cmluZyxkaXNhYmxlZDpCb29sZWFuLG5hbWU6U3RyaW5nLHNpemU6U3RyaW5nLHZhbHVlOlN0cmluZyxmZXRjaFN1Z2dlc3Rpb25zOkZ1bmN0aW9uLHRyaWdnZXJPbkZvY3VzOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiEwfSxjdXN0b21JdGVtOlN0cmluZ30sZGF0YTpmdW5jdGlvbigpe3JldHVybntzdWdnZXN0aW9uczpbXSxzdWdnZXN0aW9uVmlzaWJsZTohMSxsb2FkaW5nOiExLGhpZ2hsaWdodGVkSW5kZXg6LTF9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy4kcGFyZW50LnBvcHBlckVsbT10aGlzLnBvcHBlckVsbT10aGlzLiRlbH0sbWV0aG9kczp7aGFuZGxlQ2hhbmdlOmZ1bmN0aW9uKGUpe3RoaXMuJGVtaXQoImlucHV0IixlKSx0aGlzLnNob3dTdWdnZXN0aW9ucyhlKX0saGFuZGxlRm9jdXM6ZnVuY3Rpb24oKXt0aGlzLnRyaWdnZXJPbkZvY3VzJiZ0aGlzLnNob3dTdWdnZXN0aW9ucyh0aGlzLnZhbHVlKX0saGFuZGxlQmx1cjpmdW5jdGlvbigpe3RoaXMuaGlkZVN1Z2dlc3Rpb25zKCl9LHNlbGVjdDpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMuc3VnZ2VzdGlvbnMmJnRoaXMuc3VnZ2VzdGlvbnNbZV0mJih0aGlzLiRlbWl0KCJpbnB1dCIsdGhpcy5zdWdnZXN0aW9uc1tlXS52YWx1ZSksdGhpcy4kZW1pdCgic2VsZWN0Iix0aGlzLnN1Z2dlc3Rpb25zW2VdKSx0aGlzLiRuZXh0VGljayhmdW5jdGlvbigpe3QuaGlkZVN1Z2dlc3Rpb25zKCl9KSl9LGhpZGVTdWdnZXN0aW9uczpmdW5jdGlvbigpe3RoaXMuc3VnZ2VzdGlvblZpc2libGU9ITEsdGhpcy5zdWdnZXN0aW9ucz1bXSx0aGlzLmxvYWRpbmc9ITF9LHNob3dTdWdnZXN0aW9uczpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMuc3VnZ2VzdGlvblZpc2libGU9ITAsdGhpcy5sb2FkaW5nPSEwLHRoaXMuZmV0Y2hTdWdnZXN0aW9ucyhlLGZ1bmN0aW9uKGUpe3QubG9hZGluZz0hMSxBcnJheS5pc0FycmF5KGUpJiZlLmxlbmd0aD4wP3Quc3VnZ2VzdGlvbnM9ZTp0LmhpZGVTdWdnZXN0aW9ucygpfSl9LGhpZ2hsaWdodDpmdW5jdGlvbihlKXtpZih0aGlzLnN1Z2dlc3Rpb25WaXNpYmxlJiYhdGhpcy5sb2FkaW5nKXtlPDA/ZT0wOmU+PXRoaXMuc3VnZ2VzdGlvbnMubGVuZ3RoJiYoZT10aGlzLnN1Z2dlc3Rpb25zLmxlbmd0aC0xKTt2YXIgdD10aGlzLiRyZWZzLnN1Z2dlc3Rpb25zLG49dC5jaGlsZHJlbltlXSxpPXQuc2Nyb2xsVG9wLHM9bi5vZmZzZXRUb3A7cytuLnNjcm9sbEhlaWdodD5pK3QuY2xpZW50SGVpZ2h0JiYodC5zY3JvbGxUb3ArPW4uc2Nyb2xsSGVpZ2h0KSxzPGkmJih0LnNjcm9sbFRvcC09bi5zY3JvbGxIZWlnaHQpLHRoaXMuaGlnaGxpZ2h0ZWRJbmRleD1lfX19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJjbGlja291dHNpZGUiLHJhd05hbWU6InYtY2xpY2tvdXRzaWRlIix2YWx1ZTplLmhhbmRsZUJsdXIsZXhwcmVzc2lvbjoiaGFuZGxlQmx1ciJ9XSxzdGF0aWNDbGFzczoiZWwtYXV0b2NvbXBsZXRlIn0sW2UuX2goImVsLWlucHV0Iix7YXR0cnM6e2Rpc2FibGVkOmUuZGlzYWJsZWQscGxhY2Vob2xkZXI6ZS5wbGFjZWhvbGRlcixuYW1lOmUubmFtZSxzaXplOmUuc2l6ZX0sZG9tUHJvcHM6e3ZhbHVlOmUudmFsdWV9LG9uOntjaGFuZ2U6ZS5oYW5kbGVDaGFuZ2UsZm9jdXM6ZS5oYW5kbGVGb2N1c30sbmF0aXZlT246e2tleWRvd246W2Z1bmN0aW9uKHQpezM4PT09dC5rZXlDb2RlJiZlLmhpZ2hsaWdodChlLmhpZ2hsaWdodGVkSW5kZXgtMSl9LGZ1bmN0aW9uKHQpezQwPT09dC5rZXlDb2RlJiZlLmhpZ2hsaWdodChlLmhpZ2hsaWdodGVkSW5kZXgrMSl9LGZ1bmN0aW9uKHQpezEzPT09dC5rZXlDb2RlJiYodC5zdG9wUHJvcGFnYXRpb24oKSxlLnNlbGVjdChlLmhpZ2hsaWdodGVkSW5kZXgpKX1dfX0sW2UuJHNsb3RzLnByZXBlbmQ/ZS5faCgidGVtcGxhdGUiLHtzbG90OiJwcmVwZW5kIn0sW2UuX3QoInByZXBlbmQiKV0pOmUuX2UoKSxlLiRzbG90cy5hcHBlbmQ/ZS5faCgidGVtcGxhdGUiLHtzbG90OiJhcHBlbmQifSxbZS5fdCgiYXBwZW5kIildKTplLl9lKCldKSxlLl9oKCJ0cmFuc2l0aW9uIix7YXR0cnM6e25hbWU6Im1kLWZhZGUtYm90dG9tIn19LFtlLnN1Z2dlc3Rpb25WaXNpYmxlP2UuX2goInVsIix7cmVmOiJzdWdnZXN0aW9ucyIsc3RhdGljQ2xhc3M6ImVsLWF1dG9jb21wbGV0ZV9fc3VnZ2VzdGlvbnMiLCJjbGFzcyI6eyJpcy1sb2FkaW5nIjplLmxvYWRpbmd9fSxbZS5sb2FkaW5nP2UuX2goImxpIixbZS5faCgiaSIse3N0YXRpY0NsYXNzOiJlbC1pY29uLWxvYWRpbmcifSldKTplLl9sKGUuc3VnZ2VzdGlvbnMsZnVuY3Rpb24odCxuKXtyZXR1cm5bZS5jdXN0b21JdGVtP2UuX2goZS5jdXN0b21JdGVtLHt0YWc6ImNvbXBvbmVudCIsImNsYXNzIjp7aGlnaGxpZ2h0ZWQ6ZS5oaWdobGlnaHRlZEluZGV4PT09bn0sYXR0cnM6e2l0ZW06dCxpbmRleDpufSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5zZWxlY3Qobil9fX0pOmUuX2goImxpIix7ImNsYXNzIjp7aGlnaGxpZ2h0ZWQ6ZS5oaWdobGlnaHRlZEluZGV4PT09bn0sb246e2NsaWNrOmZ1bmN0aW9uKHQpe2Uuc2VsZWN0KG4pfX19LFsiXG4gICAgICAgICAgIitlLl9zKHQudmFsdWUpKyJcbiAgICAgICAgIl0pXX0pXSk6ZS5fZSgpXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDUzKSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDU0KSxzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDM3KSxvPWkocyksYT1uKDEwKSxyPWkoYSk7dFsiZGVmYXVsdCJdPXtuYW1lOiJFbERyb3Bkb3duIixjb21wb25lbnROYW1lOiJFbERyb3Bkb3duIixtaXhpbnM6W3JbImRlZmF1bHQiXV0sZGlyZWN0aXZlczp7Q2xpY2tvdXRzaWRlOm9bImRlZmF1bHQiXX0scHJvcHM6e3RyaWdnZXI6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiaG92ZXIifSxtZW51QWxpZ246e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiZW5kIn0sdHlwZTpTdHJpbmcsc2l6ZTpTdHJpbmcsc3BsaXRCdXR0b246Qm9vbGVhbn0sZGF0YTpmdW5jdGlvbigpe3JldHVybnt0aW1lb3V0Om51bGwsdmlzaWJsZTohMX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLiRvbigibWVudS1pdGVtLWNsaWNrIix0aGlzLmhhbmRsZU1lbnVJdGVtQ2xpY2spLHRoaXMuaW5pdEV2ZW50KCl9LHdhdGNoOnt2aXNpYmxlOmZ1bmN0aW9uKGUpe3RoaXMuYnJvYWRjYXN0KCJFbERyb3Bkb3duTWVudSIsInZpc2libGUiLGUpfX0sbWV0aG9kczp7c2hvdzpmdW5jdGlvbigpe3ZhciBlPXRoaXM7Y2xlYXJUaW1lb3V0KHRoaXMudGltZW91dCksdGhpcy50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLnZpc2libGU9ITB9LDI1MCl9LGhpZGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS52aXNpYmxlPSExfSwxNTApfSxoYW5kbGVDbGljazpmdW5jdGlvbigpe3RoaXMudmlzaWJsZT0hdGhpcy52aXNpYmxlfSxpbml0RXZlbnQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnRyaWdnZXIsdD10aGlzLnNob3csbj10aGlzLmhpZGUsaT10aGlzLmhhbmRsZUNsaWNrLHM9dGhpcy5zcGxpdEJ1dHRvbixvPXM/dGhpcy4kcmVmcy50cmlnZ2VyLiRlbDp0aGlzLiRzbG90c1siZGVmYXVsdCJdWzBdLmVsbTtpZigiaG92ZXIiPT09ZSl7by5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWVudGVyIix0KSxvLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbGVhdmUiLG4pO3ZhciBhPXRoaXMuJHNsb3RzLmRyb3Bkb3duWzBdLmVsbTthLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZW50ZXIiLHQpLGEuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VsZWF2ZSIsbil9ZWxzZSJjbGljayI9PT1lJiZvLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixpKX0saGFuZGxlTWVudUl0ZW1DbGljazpmdW5jdGlvbihlLHQpe3RoaXMudmlzaWJsZT0hMSx0aGlzLiRlbWl0KCJjb21tYW5kIixlLHQpfX0scmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLmhpZGUsaT10aGlzLnNwbGl0QnV0dG9uLHM9dGhpcy50eXBlLG89dGhpcy5zaXplLGE9ZnVuY3Rpb24oZSl7dC4kZW1pdCgiY2xpY2siKX0scj1pP2UoImVsLWJ1dHRvbi1ncm91cCIsbnVsbCxbZSgiZWwtYnV0dG9uIix7YXR0cnM6e3R5cGU6cyxzaXplOm99LG5hdGl2ZU9uOntjbGljazphfX0sW3RoaXMuJHNsb3RzWyJkZWZhdWx0Il1dKSxlKCJlbC1idXR0b24iLHtyZWY6InRyaWdnZXIiLGF0dHJzOnt0eXBlOnMsc2l6ZTpvfSwiY2xhc3MiOiJlbC1kcm9wZG93bl9fY2FyZXQtYnV0dG9uIn0sW2UoImkiLHsiY2xhc3MiOiJlbC1kcm9wZG93bl9faWNvbiBlbC1pY29uLWNhcmV0LWJvdHRvbSJ9LFtdKV0pXSk6dGhpcy4kc2xvdHNbImRlZmF1bHQiXTtyZXR1cm4gZSgiZGl2Iix7ImNsYXNzIjoiZWwtZHJvcGRvd24iLGRpcmVjdGl2ZXM6W3tuYW1lOiJjbGlja291dHNpZGUiLHZhbHVlOm59XX0sW3IsdGhpcy4kc2xvdHMuZHJvcGRvd25dKX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oNTYpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oNTcpO3ZhciBvPW4oNTgpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjQpLG89aShzKTt0WyJkZWZhdWx0Il09e25hbWU6IkVsRHJvcGRvd25NZW51Iixjb21wb25lbnROYW1lOiJFbERyb3Bkb3duTWVudSIsbWl4aW5zOltvWyJkZWZhdWx0Il1dLGNyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuJG9uKCJ2aXNpYmxlIixmdW5jdGlvbih0KXtlLnNob3dQb3BwZXI9dH0pfSxtb3VudGVkOmZ1bmN0aW9uKCl7dGhpcy4kcGFyZW50LnBvcHBlckVsbT10aGlzLnBvcHBlckVsbT10aGlzLiRlbCx0aGlzLnJlZmVyZW5jZUVsbT10aGlzLiRwYXJlbnQuJGVsfSxjb21wdXRlZDp7cGxhY2VtZW50OmZ1bmN0aW9uKCl7cmV0dXJuImJvdHRvbS0iK3RoaXMuJHBhcmVudC5tZW51QWxpZ259fX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJ0cmFuc2l0aW9uIix7YXR0cnM6e25hbWU6Im1kLWZhZGUtYm90dG9tIn0sb246eyJhZnRlci1sZWF2ZSI6ZS5kb0Rlc3Ryb3l9fSxbZS5faCgidWwiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnNob3dQb3BwZXIsZXhwcmVzc2lvbjoic2hvd1BvcHBlciJ9XSxzdGF0aWNDbGFzczoiZWwtZHJvcGRvd24tbWVudSJ9LFtlLl90KCJkZWZhdWx0IildKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oNjApLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oNjEpO3ZhciBvPW4oNjIpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTApLG89aShzKTt0WyJkZWZhdWx0Il09e25hbWU6IkVsRHJvcGRvd25JdGVtIixtaXhpbnM6W29bImRlZmF1bHQiXV0scHJvcHM6e2NvbW1hbmQ6U3RyaW5nLGRpc2FibGVkOkJvb2xlYW4sZGl2aWRlZDpCb29sZWFufSxtZXRob2RzOntoYW5kbGVDbGljazpmdW5jdGlvbihlKXt0aGlzLmRpc3BhdGNoKCJFbERyb3Bkb3duIiwibWVudS1pdGVtLWNsaWNrIixbdGhpcy5jb21tYW5kLHRoaXNdKX19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImxpIix7c3RhdGljQ2xhc3M6ImVsLWRyb3Bkb3duLW1lbnVfX2l0ZW0iLCJjbGFzcyI6eyJpcy1kaXNhYmxlZCI6ZS5kaXNhYmxlZCwiZWwtZHJvcGRvd24tbWVudV9faXRlbS0tZGl2aWRlZCI6ZS5kaXZpZGVkfSxvbjp7Y2xpY2s6ZS5oYW5kbGVDbGlja319LFtlLl90KCJkZWZhdWx0IildKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDY0KSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDY1KTt2YXIgbz1uKDY2KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDEwKSxvPWkocyk7dFsiZGVmYXVsdCJdPXtuYW1lOiJFbE1lbnUiLGNvbXBvbmVudE5hbWU6IkVsTWVudSIsbWl4aW5zOltvWyJkZWZhdWx0Il1dLHByb3BzOnttb2RlOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6InZlcnRpY2FsIn0sZGVmYXVsdEFjdGl2ZTp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiIifSxkZWZhdWx0T3BlbmVkczpBcnJheSx0aGVtZTp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJsaWdodCJ9LHVuaXF1ZU9wZW5lZDpCb29sZWFuLHJvdXRlcjpCb29sZWFuLG1lbnVUcmlnZ2VyOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6ImhvdmVyIn19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57YWN0aXZlSW5kZXg6dGhpcy5kZWZhdWx0QWN0aXZlLG9wZW5lZE1lbnVzOnRoaXMuZGVmYXVsdE9wZW5lZHM/dGhpcy5kZWZhdWx0T3BlbmVkcy5zbGljZSgwKTpbXSxtZW51SXRlbXM6e30sc3VibWVudXM6e319fSx3YXRjaDp7ZGVmYXVsdEFjdGl2ZTpmdW5jdGlvbihlKXtpZih0aGlzLmFjdGl2ZUluZGV4PWUsdGhpcy5tZW51SXRlbXNbZV0pe3ZhciB0PXRoaXMubWVudUl0ZW1zW2VdLG49dC5pbmRleFBhdGg7dGhpcy5oYW5kbGVTZWxlY3QoZSxuLG51bGwsdCl9fSxkZWZhdWx0T3BlbmVkczpmdW5jdGlvbihlKXt0aGlzLm9wZW5lZE1lbnVzPWV9fSxtZXRob2RzOntvcGVuTWVudTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMub3BlbmVkTWVudXM7bi5pbmRleE9mKGUpPT09LTEmJih0aGlzLnVuaXF1ZU9wZW5lZCYmKHRoaXMub3BlbmVkTWVudXM9bi5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIHQuaW5kZXhPZihlKSE9PS0xfSkpLHRoaXMub3BlbmVkTWVudXMucHVzaChlKSl9LGNsb3NlTWVudTpmdW5jdGlvbihlLHQpe3RoaXMub3BlbmVkTWVudXMuc3BsaWNlKHRoaXMub3BlbmVkTWVudXMuaW5kZXhPZihlKSwxKX0saGFuZGxlU3VibWVudUNsaWNrOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5vcGVuZWRNZW51cy5pbmRleE9mKGUpIT09LTE7bj8odGhpcy5jbG9zZU1lbnUoZSx0KSx0aGlzLiRlbWl0KCJjbG9zZSIsZSx0KSk6KHRoaXMub3Blbk1lbnUoZSx0KSx0aGlzLiRlbWl0KCJvcGVuIixlLHQpKX0saGFuZGxlU2VsZWN0OmZ1bmN0aW9uKGUsdCxuLGkpe2lmKHRoaXMuYWN0aXZlSW5kZXg9ZSx0aGlzLiRlbWl0KCJzZWxlY3QiLGUsdCxpKSwiaG9yaXpvbnRhbCI9PT10aGlzLm1vZGU/KHRoaXMuYnJvYWRjYXN0KCJFbFN1Ym1lbnUiLCJpdGVtLXNlbGVjdCIsW2UsdF0pLHRoaXMub3BlbmVkTWVudXM9W10pOnRoaXMub3BlbkFjdGl2ZUl0ZW1NZW51cygpLHRoaXMucm91dGVyJiZuKXRyeXt0aGlzLiRyb3V0ZXIucHVzaChuKX1jYXRjaChzKXtjb25zb2xlLmVycm9yKHMpfX0sb3BlbkFjdGl2ZUl0ZW1NZW51czpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLmFjdGl2ZUluZGV4O2lmKHRoaXMubWVudUl0ZW1zW3RdJiZ0JiYidmVydGljYWwiPT09dGhpcy5tb2RlKXt2YXIgbj10aGlzLm1lbnVJdGVtc1t0XS5pbmRleFBhdGg7bi5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPWUuc3VibWVudXNbdF07biYmZS5vcGVuTWVudSh0LG4uaW5kZXhQYXRoKX0pfX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wZW5BY3RpdmVJdGVtTWVudXMoKX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgidWwiLHtzdGF0aWNDbGFzczoiZWwtbWVudSIsImNsYXNzIjp7ImVsLW1lbnUtLWhvcml6b250YWwiOiJob3Jpem9udGFsIj09PWUubW9kZSwiZWwtbWVudS0tZGFyayI6ImRhcmsiPT09ZS50aGVtZX19LFtlLl90KCJkZWZhdWx0IildKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDY4KSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDY5KTt2YXIgbz1uKDcxKTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXZhciBzPW4oNzApLG89aShzKTtlLmV4cG9ydHM9e25hbWU6IkVsU3VibWVudSIsY29tcG9uZW50TmFtZToiRWxTdWJtZW51IixtaXhpbnM6W29bImRlZmF1bHQiXV0scHJvcHM6e2luZGV4Ont0eXBlOlN0cmluZyxyZXF1aXJlZDohMH19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57dGltZW91dDpudWxsLGFjdGl2ZTohMX19LGNvbXB1dGVkOntvcGVuZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb290TWVudS5vcGVuZWRNZW51cy5pbmRleE9mKHRoaXMuaW5kZXgpIT09LTF9fSxtZXRob2RzOntoYW5kbGVDbGljazpmdW5jdGlvbigpe3RoaXMucm9vdE1lbnUuaGFuZGxlU3VibWVudUNsaWNrKHRoaXMuaW5kZXgsdGhpcy5pbmRleFBhdGgpfSxoYW5kbGVNb3VzZWVudGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSx0aGlzLnRpbWVvdXQ9c2V0VGltZW91dChmdW5jdGlvbigpe2Uucm9vdE1lbnUub3Blbk1lbnUoZS5pbmRleCxlLmluZGV4UGF0aCl9LDMwMCl9LGhhbmRsZU1vdXNlbGVhdmU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2NsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQpLHRoaXMudGltZW91dD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5yb290TWVudS5jbG9zZU1lbnUoZS5pbmRleCxlLmluZGV4UGF0aCl9LDMwMCl9LGluaXRFdmVudHM6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnJvb3RNZW51LHQ9dGhpcy5oYW5kbGVNb3VzZWVudGVyLG49dGhpcy5oYW5kbGVNb3VzZWxlYXZlLGk9dGhpcy5oYW5kbGVDbGljayxzPXZvaWQgMDsiaG9yaXpvbnRhbCI9PT1lLm1vZGUmJiJob3ZlciI9PT1lLm1lbnVUcmlnZ2VyPyhzPXRoaXMuJGVsLHMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VlbnRlciIsdCkscy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIixuKSk6KHM9dGhpcy4kcmVmc1sic3VibWVudS10aXRsZSJdLHMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLGkpKX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnJvb3RNZW51LnN1Ym1lbnVzW3RoaXMuaW5kZXhdPXRoaXN9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuJG9uKCJpdGVtLXNlbGVjdCIsZnVuY3Rpb24odCxuKXtlLmFjdGl2ZT1uLmluZGV4T2YoZS5pbmRleCkhPT0tMX0pLHRoaXMuaW5pdEV2ZW50cygpfX19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz17Y29tcHV0ZWQ6e2luZGV4UGF0aDpmdW5jdGlvbigpe2Zvcih2YXIgZT1bdGhpcy5pbmRleF0sdD10aGlzLiRwYXJlbnQ7IkVsTWVudSIhPT10LiRvcHRpb25zLmNvbXBvbmVudE5hbWU7KXQuaW5kZXgmJmUudW5zaGlmdCh0LmluZGV4KSx0PXQuJHBhcmVudDtyZXR1cm4gZX0scm9vdE1lbnU6ZnVuY3Rpb24oKXtmb3IodmFyIGU9dGhpcy4kcGFyZW50OyJFbE1lbnUiIT09ZS4kb3B0aW9ucy5jb21wb25lbnROYW1lOyllPWUuJHBhcmVudDtyZXR1cm4gZX19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImxpIix7ImNsYXNzIjp7ImVsLXN1Ym1lbnUiOiEwLCJpcy1hY3RpdmUiOmUuYWN0aXZlLCJpcy1vcGVuZWQiOmUub3BlbmVkfX0sW2UuX2goImRpdiIse3JlZjoic3VibWVudS10aXRsZSIsc3RhdGljQ2xhc3M6ImVsLXN1Ym1lbnVfX3RpdGxlIn0sW2UuX3QoInRpdGxlIiksZS5faCgiaSIseyJjbGFzcyI6eyJlbC1zdWJtZW51X19pY29uLWFycm93IjohMCwiZWwtaWNvbi1hcnJvdy1kb3duIjoidmVydGljYWwiPT09ZS5yb290TWVudS5tb2RlLCJlbC1pY29uLWNhcmV0LWJvdHRvbSI6Imhvcml6b250YWwiPT09ZS5yb290TWVudS5tb2RlfX0pXSksZS5faCgidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOiJob3Jpem9udGFsIj09PWUucm9vdE1lbnUubW9kZT8ibWQtZmFkZS1ib3R0b20iOiIifX0sW2UuX2goInVsIix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS5vcGVuZWQsZXhwcmVzc2lvbjoib3BlbmVkIn1dLHN0YXRpY0NsYXNzOiJlbC1tZW51In0sW2UuX3QoImRlZmF1bHQiKV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDczKSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDc0KTt2YXIgbz1uKDc1KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXZhciBzPW4oNzApLG89aShzKTtlLmV4cG9ydHM9e25hbWU6IkVsTWVudUl0ZW0iLGNvbXBvbmVudE5hbWU6IkVsTWVudUl0ZW0iLG1peGluczpbb1siZGVmYXVsdCJdXSxwcm9wczp7aW5kZXg6e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxyb3V0ZTp7dHlwZTpPYmplY3QscmVxdWlyZWQ6ITF9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4scmVxdWlyZWQ6ITF9fSxjb21wdXRlZDp7YWN0aXZlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaW5kZXg9PT10aGlzLnJvb3RNZW51LmFjdGl2ZUluZGV4fX0sbWV0aG9kczp7aGFuZGxlQ2xpY2s6ZnVuY3Rpb24oKXt0aGlzLnJvb3RNZW51LmhhbmRsZVNlbGVjdCh0aGlzLmluZGV4LHRoaXMuaW5kZXhQYXRoLHRoaXMucm91dGV8fHRoaXMuaW5kZXgsdGhpcyl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5yb290TWVudS5tZW51SXRlbXNbdGhpcy5pbmRleF09dGhpc319fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgibGkiLHtzdGF0aWNDbGFzczoiZWwtbWVudS1pdGVtIiwiY2xhc3MiOnsiaXMtYWN0aXZlIjplLmFjdGl2ZSwiaXMtZGlzYWJsZWQiOmUuZGlzYWJsZWR9LG9uOntjbGljazplLmhhbmRsZUNsaWNrfX0sW2UuX3QoImRlZmF1bHQiKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oNzcpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oNzgpO3ZhciBvPW4oNzkpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e25hbWU6IkVsTWVudUl0ZW1Hcm91cCIsY29tcG9uZW50TmFtZToiRWxNZW51SXRlbUdyb3VwIixwcm9wczp7dGl0bGU6e3R5cGU6U3RyaW5nfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntwYWRkaW5nTGVmdDoyMH19LG1ldGhvZHM6e2luaXRQYWRkaW5nOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPXRoaXMuJHBhcmVudCx0PTAsbj1lLiRvcHRpb25zLmNvbXBvbmVudE5hbWU7IkVsTWVudSIhPT1uOykiRWxTdWJtZW51Ij09PW4mJnQrKyxlPWUuJHBhcmVudCxuPWUuJG9wdGlvbnMuY29tcG9uZW50TmFtZTt0aGlzLnBhZGRpbmdMZWZ0Kz0xMCp0fX0sbW91bnRlZDpmdW5jdGlvbigpe3RoaXMuaW5pdFBhZGRpbmcoKX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgibGkiLHtzdGF0aWNDbGFzczoiZWwtbWVudS1pdGVtLWdyb3VwIn0sW2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1tZW51LWl0ZW0tZ3JvdXBfX3RpdGxlIixzdHlsZTp7InBhZGRpbmctbGVmdCI6ZS5wYWRkaW5nTGVmdCsicHgifX0sW2UuJHNsb3RzLnRpdGxlP2UuX3QoInRpdGxlIik6W2UuX3MoZS50aXRsZSldXSksZS5faCgidWwiLFtlLl90KCJkZWZhdWx0IildKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oODEpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oODIpO3ZhciBvPW4oODMpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTcpLG89aShzKSxhPW4oMzgpO3RbImRlZmF1bHQiXT17bmFtZToiRWxJbnB1dE51bWJlciIscHJvcHM6e3N0ZXA6e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjoxfSxtYXg6e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjoxLzB9LG1pbjp7dHlwZTpOdW1iZXIsImRlZmF1bHQiOjB9LHZhbHVlOnsiZGVmYXVsdCI6MH0sZGlzYWJsZWQ6Qm9vbGVhbixzaXplOlN0cmluZyxjb250cm9sczp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMH19LGRpcmVjdGl2ZXM6e3JlcGVhdENsaWNrOntiaW5kOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT1udWxsLHM9dm9pZCAwLG89ZnVuY3Rpb24oKXtuLmNvbnRleHRbdC5leHByZXNzaW9uXSgpfSxyPWZ1bmN0aW9uKCl7bmV3IERhdGUtczwxMDAmJm8oKSxjbGVhckludGVydmFsKGkpLGk9bnVsbH07KDAsYS5vbikoZSwibW91c2Vkb3duIixmdW5jdGlvbigpe3M9bmV3IERhdGUsKDAsYS5vbmNlKShkb2N1bWVudCwibW91c2V1cCIsciksaT1zZXRJbnRlcnZhbChmdW5jdGlvbigpe28oKX0sMTAwKX0pfX19LGNvbXBvbmVudHM6e0VsSW5wdXQ6b1siZGVmYXVsdCJdfSxkYXRhOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy52YWx1ZTtyZXR1cm4gZTx0aGlzLm1pbiYmKHRoaXMuJGVtaXQoImlucHV0Iix0aGlzLm1pbiksZT10aGlzLm1pbiksZT50aGlzLm1heCYmKHRoaXMuJGVtaXQoImlucHV0Iix0aGlzLm1heCksZT10aGlzLm1heCkse2N1cnJlbnRWYWx1ZTplLGlucHV0QWN0aXZlOiExfX0sd2F0Y2g6e3ZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuY3VycmVudFZhbHVlPWV9LGN1cnJlbnRWYWx1ZTpmdW5jdGlvbihlLHQpe3ZhciBuPU51bWJlcihlKTtuPD10aGlzLm1heCYmbj49dGhpcy5taW4mJih0aGlzLiRlbWl0KCJjaGFuZ2UiLG4pLHRoaXMuJGVtaXQoImlucHV0IixuKSl9fSxjb21wdXRlZDp7bWluRGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy52YWx1ZS10aGlzLnN0ZXA8dGhpcy5taW59LG1heERpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudmFsdWUrdGhpcy5zdGVwPnRoaXMubWF4fX0sbWV0aG9kczp7YWNjU3ViOmZ1bmN0aW9uKGUsdCl7dmFyIG4saSxzLG87dHJ5e249ZS50b1N0cmluZygpLnNwbGl0KCIuIilbMV0ubGVuZ3RofWNhdGNoKGEpe249MH10cnl7aT10LnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXS5sZW5ndGh9Y2F0Y2goYSl7aT0wfXJldHVybiBzPU1hdGgucG93KDEwLE1hdGgubWF4KG4saSkpLG89bj49aT9uOmkscGFyc2VGbG9hdCgoKGUqcy10KnMpL3MpLnRvRml4ZWQobykpfSxhY2NBZGQ6ZnVuY3Rpb24oZSx0KXt2YXIgbixpLHMsbzt0cnl7bj1lLnRvU3RyaW5nKCkuc3BsaXQoIi4iKVsxXS5sZW5ndGh9Y2F0Y2goYSl7bj0wfXRyeXtpPXQudG9TdHJpbmcoKS5zcGxpdCgiLiIpWzFdLmxlbmd0aH1jYXRjaChhKXtpPTB9aWYobz1NYXRoLmFicyhuLWkpLHM9TWF0aC5wb3coMTAsTWF0aC5tYXgobixpKSksbz4wKXt2YXIgcj1NYXRoLnBvdygxMCxvKTtuPmk/KGU9TnVtYmVyKGUudG9TdHJpbmcoKS5yZXBsYWNlKCIuIiwiIikpLHQ9TnVtYmVyKHQudG9TdHJpbmcoKS5yZXBsYWNlKCIuIiwiIikpKnIpOihlPU51bWJlcihlLnRvU3RyaW5nKCkucmVwbGFjZSgiLiIsIiIpKSpyLHQ9TnVtYmVyKHQudG9TdHJpbmcoKS5yZXBsYWNlKCIuIiwiIikpKX1lbHNlIGU9TnVtYmVyKGUudG9TdHJpbmcoKS5yZXBsYWNlKCIuIiwiIikpLHQ9TnVtYmVyKHQudG9TdHJpbmcoKS5yZXBsYWNlKCIuIiwiIikpO3JldHVybihlK3QpL3N9LGluY3JlYXNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy52YWx1ZXx8MDtlK3RoaXMuc3RlcD50aGlzLm1heHx8dGhpcy5kaXNhYmxlZHx8KHRoaXMuY3VycmVudFZhbHVlPXRoaXMuYWNjQWRkKHRoaXMuc3RlcCxlKSx0aGlzLm1heERpc2FibGVkJiYodGhpcy5pbnB1dEFjdGl2ZT0hMSkpfSxkZWNyZWFzZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmFsdWV8fDA7ZS10aGlzLnN0ZXA8dGhpcy5taW58fHRoaXMuZGlzYWJsZWR8fCh0aGlzLmN1cnJlbnRWYWx1ZT10aGlzLmFjY1N1YihlLHRoaXMuc3RlcCksdGhpcy5taW5EaXNhYmxlZCYmKHRoaXMuaW5wdXRBY3RpdmU9ITEpKX0sYWN0aXZlSW5wdXQ6ZnVuY3Rpb24oZSl7dGhpcy5kaXNhYmxlZHx8ZXx8KHRoaXMuaW5wdXRBY3RpdmU9ITApfSxpbmFjdGl2ZUlucHV0OmZ1bmN0aW9uKGUpe3RoaXMuZGlzYWJsZWR8fGV8fCh0aGlzLmlucHV0QWN0aXZlPSExKX0saGFuZGxlQmx1cjpmdW5jdGlvbihlKXt2YXIgdD1OdW1iZXIodGhpcy5jdXJyZW50VmFsdWUpO2lzTmFOKHQpfHx0PnRoaXMubWF4fHx0PHRoaXMubWluP3RoaXMuY3VycmVudFZhbHVlPXRoaXMudmFsdWU6dGhpcy5jdXJyZW50VmFsdWU9dH0saGFuZGxlSW5wdXQ6ZnVuY3Rpb24oZSl7dGhpcy5jdXJyZW50VmFsdWU9ZX19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1pbnB1dC1udW1iZXIiLCJjbGFzcyI6W2Uuc2l6ZT8iZWwtaW5wdXQtbnVtYmVyLS0iK2Uuc2l6ZToiIix7ImlzLWRpc2FibGVkIjplLmRpc2FibGVkfSx7ImlzLXdpdGhvdXQtY29udHJvbHMiOiFlLmNvbnRyb2xzfV19LFtlLl9oKCJlbC1pbnB1dCIseyJjbGFzcyI6eyJpcy1hY3RpdmUiOmUuaW5wdXRBY3RpdmV9LGF0dHJzOntkaXNhYmxlZDplLmRpc2FibGVkLHNpemU6ZS5zaXplfSxkb21Qcm9wczp7dmFsdWU6ZS5jdXJyZW50VmFsdWV9LG9uOntibHVyOmUuaGFuZGxlQmx1cixpbnB1dDplLmhhbmRsZUlucHV0fSxuYXRpdmVPbjp7a2V5ZG93bjpbZnVuY3Rpb24odCl7Mzg9PT10LmtleUNvZGUmJmUuaW5jcmVhc2UodCl9LGZ1bmN0aW9uKHQpezQwPT09dC5rZXlDb2RlJiZlLmRlY3JlYXNlKHQpfV19fSksZS5jb250cm9scz9lLl9oKCJzcGFuIix7ZGlyZWN0aXZlczpbe25hbWU6InJlcGVhdC1jbGljayIscmF3TmFtZToidi1yZXBlYXQtY2xpY2siLHZhbHVlOmUuZGVjcmVhc2UsZXhwcmVzc2lvbjoiZGVjcmVhc2UifV0sc3RhdGljQ2xhc3M6ImVsLWlucHV0LW51bWJlcl9fZGVjcmVhc2UgZWwtaWNvbi1taW51cyIsImNsYXNzIjp7ImlzLWRpc2FibGVkIjplLm1pbkRpc2FibGVkfSxvbjp7bW91c2VlbnRlcjpmdW5jdGlvbih0KXtlLmFjdGl2ZUlucHV0KGUubWluRGlzYWJsZWQpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe2UuaW5hY3RpdmVJbnB1dChlLm1pbkRpc2FibGVkKX19fSk6ZS5fZSgpLGUuY29udHJvbHM/ZS5faCgic3BhbiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJyZXBlYXQtY2xpY2siLHJhd05hbWU6InYtcmVwZWF0LWNsaWNrIix2YWx1ZTplLmluY3JlYXNlLGV4cHJlc3Npb246ImluY3JlYXNlIn1dLHN0YXRpY0NsYXNzOiJlbC1pbnB1dC1udW1iZXJfX2luY3JlYXNlIGVsLWljb24tcGx1cyIsImNsYXNzIjp7ImlzLWRpc2FibGVkIjplLm1heERpc2FibGVkfSxvbjp7bW91c2VlbnRlcjpmdW5jdGlvbih0KXtlLmFjdGl2ZUlucHV0KGUubWF4RGlzYWJsZWQpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe2UuaW5hY3RpdmVJbnB1dChlLm1heERpc2FibGVkKX19fSk6ZS5fZSgpXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9big4NSksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KCJlbC1yYWRpbyIsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDg2KTt2YXIgbz1uKDg3KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDEwKSxvPWkocyk7dFsiZGVmYXVsdCJdPXtuYW1lOiJFbFJhZGlvIixtaXhpbnM6W29bImRlZmF1bHQiXV0sY29tcG9uZW50TmFtZToiRWxSYWRpbyIscHJvcHM6e3ZhbHVlOnt9LGxhYmVsOnt9LGRpc2FibGVkOkJvb2xlYW4sbmFtZTpTdHJpbmd9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Zm9jdXM6ITF9fSxjb21wdXRlZDp7aXNHcm91cDpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLiRwYXJlbnQ7ZTspe2lmKCJFbFJhZGlvR3JvdXAiPT09ZS4kb3B0aW9ucy5jb21wb25lbnROYW1lKXJldHVybiB0aGlzLl9yYWRpb0dyb3VwPWUsITA7ZT1lLiRwYXJlbnR9cmV0dXJuITF9LG1vZGVsOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0dyb3VwP3RoaXMuX3JhZGlvR3JvdXAudmFsdWU6dGhpcy52YWx1ZX0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuaXNHcm91cD90aGlzLmRpc3BhdGNoKCJFbFJhZGlvR3JvdXAiLCJpbnB1dCIsW2VdKTp0aGlzLiRlbWl0KCJpbnB1dCIsZSl9fX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgibGFiZWwiLHtzdGF0aWNDbGFzczoiZWwtcmFkaW8ifSxbZS5faCgic3BhbiIse3N0YXRpY0NsYXNzOiJlbC1yYWRpb19faW5wdXQifSxbZS5faCgic3BhbiIse3N0YXRpY0NsYXNzOiJlbC1yYWRpb19faW5uZXIiLCJjbGFzcyI6eyJpcy1kaXNhYmxlZCI6ZS5kaXNhYmxlZCwiaXMtY2hlY2tlZCI6ZS5tb2RlbD09PWUubGFiZWwsImlzLWZvY3VzIjplLmZvY3VzfX0pLGUuX2goImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTplLm1vZGVsLGV4cHJlc3Npb246Im1vZGVsIn1dLHN0YXRpY0NsYXNzOiJlbC1yYWRpb19fb3JpZ2luYWwiLGF0dHJzOnt0eXBlOiJyYWRpbyIsbmFtZTplLm5hbWUsZGlzYWJsZWQ6ZS5kaXNhYmxlZH0sZG9tUHJvcHM6e3ZhbHVlOmUubGFiZWwsY2hlY2tlZDplLl9xKGUubW9kZWwsZS5sYWJlbCl9LG9uOntmb2N1czpmdW5jdGlvbih0KXtlLmZvY3VzPSEwfSxibHVyOmZ1bmN0aW9uKHQpe2UuZm9jdXM9ITF9LGNoYW5nZTpmdW5jdGlvbih0KXtlLm1vZGVsPWUubGFiZWx9fX0pXSksZS5faCgic3BhbiIse3N0YXRpY0NsYXNzOiJlbC1yYWRpb19fbGFiZWwifSxbZS5fdCgiZGVmYXVsdCIpLGUuJHNsb3RzWyJkZWZhdWx0Il0/ZS5fZSgpOltlLl9zKGUubGFiZWwpXV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9big4OSksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9big5MCk7dmFyIG89big5MSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxMCksbz1pKHMpO3RbImRlZmF1bHQiXT17bmFtZToiRWxSYWRpb0dyb3VwIixjb21wb25lbnROYW1lOiJFbFJhZGlvR3JvdXAiLG1peGluczpbb1siZGVmYXVsdCJdXSxwcm9wczp7dmFsdWU6W1N0cmluZyxOdW1iZXJdLHNpemU6U3RyaW5nLGZpbGw6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiIzIwYTBmZiJ9LHRleHRDb2xvcjp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiIjZmZmIn19LHdhdGNoOnt2YWx1ZTpmdW5jdGlvbihlKXt0aGlzLiRlbWl0KCJjaGFuZ2UiLGUpLHRoaXMuZGlzcGF0Y2goIkVsRm9ybUl0ZW0iLCJlbC5mb3JtLmNoYW5nZSIsW3RoaXMudmFsdWVdKX19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1yYWRpby1ncm91cCJ9LFtlLl90KCJkZWZhdWx0IildKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDkzKSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDk0KTt2YXIgbz1uKDk1KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHRbImRlZmF1bHQiXT17bmFtZToiRWxSYWRpb0J1dHRvbiIscHJvcHM6e2xhYmVsOnt9LGRpc2FibGVkOkJvb2xlYW4sbmFtZTpTdHJpbmd9LGNvbXB1dGVkOnt2YWx1ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3JhZGlvR3JvdXAudmFsdWV9LHNldDpmdW5jdGlvbihlKXt0aGlzLl9yYWRpb0dyb3VwLiRlbWl0KCJpbnB1dCIsZSl9fSxfcmFkaW9Hcm91cDpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLiRwYXJlbnQ7ZTspe2lmKCJFbFJhZGlvR3JvdXAiPT09ZS4kb3B0aW9ucy5jb21wb25lbnROYW1lKXJldHVybiBlO2U9ZS4kcGFyZW50fXJldHVybiExfSxhY3RpdmVTdHlsZTpmdW5jdGlvbigpe3JldHVybntiYWNrZ3JvdW5kQ29sb3I6dGhpcy5fcmFkaW9Hcm91cC5maWxsLGJvcmRlckNvbG9yOnRoaXMuX3JhZGlvR3JvdXAuZmlsbCxjb2xvcjp0aGlzLl9yYWRpb0dyb3VwLnRleHRDb2xvcn19LHNpemU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmFkaW9Hcm91cC5zaXplfX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgibGFiZWwiLHtzdGF0aWNDbGFzczoiZWwtcmFkaW8tYnV0dG9uIiwiY2xhc3MiOltlLnNpemU/ImVsLXJhZGlvLWJ1dHRvbi0tIitlLnNpemU6IiIseyJpcy1hY3RpdmUiOmUudmFsdWU9PT1lLmxhYmVsfV19LFtlLl9oKCJpbnB1dCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6ZS52YWx1ZSxleHByZXNzaW9uOiJ2YWx1ZSJ9XSxzdGF0aWNDbGFzczoiZWwtcmFkaW8tYnV0dG9uX19vcmlnLXJhZGlvIixhdHRyczp7dHlwZToicmFkaW8iLG5hbWU6ZS5uYW1lLGRpc2FibGVkOmUuZGlzYWJsZWR9LGRvbVByb3BzOnt2YWx1ZTplLmxhYmVsLGNoZWNrZWQ6ZS5fcShlLnZhbHVlLGUubGFiZWwpfSxvbjp7Y2hhbmdlOmZ1bmN0aW9uKHQpe2UudmFsdWU9ZS5sYWJlbH19fSksZS5faCgic3BhbiIse3N0YXRpY0NsYXNzOiJlbC1yYWRpby1idXR0b25fX2lubmVyIixzdHlsZTplLnZhbHVlPT09ZS5sYWJlbD9lLmFjdGl2ZVN0eWxlOm51bGx9LFtlLl90KCJkZWZhdWx0IiksZS4kc2xvdHNbImRlZmF1bHQiXT9lLl9lKCk6W2UuX3MoZS5sYWJlbCldXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDk3KSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDk4KTt2YXIgbz1uKDk5KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDEwKSxvPWkocyk7dFsiZGVmYXVsdCJdPXtuYW1lOiJFbENoZWNrYm94IixtaXhpbnM6W29bImRlZmF1bHQiXV0sY29tcG9uZW50TmFtZToiRWxDaGVja2JveCIsY29tcHV0ZWQ6e21vZGVsOntnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5pc0dyb3VwP3RoaXMuc3RvcmU6dGhpcy52YWx1ZX0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuaXNHcm91cD90aGlzLmRpc3BhdGNoKCJFbENoZWNrYm94R3JvdXAiLCJpbnB1dCIsW2VdKTp0aGlzLiRlbWl0KCJpbnB1dCIsZSl9fSxpc0NoZWNrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCBCb29sZWFuXSI9PT17fS50b1N0cmluZy5jYWxsKHRoaXMubW9kZWwpP3RoaXMubW9kZWw6QXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKT90aGlzLm1vZGVsLmluZGV4T2YodGhpcy5sYWJlbCk+LTE6bnVsbCE9PXRoaXMubW9kZWwmJnZvaWQgMCE9PXRoaXMubW9kZWw/dGhpcy5tb2RlbD09PXRoaXMudHJ1ZUxhYmVsOnZvaWQgMH0saXNHcm91cDpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLiRwYXJlbnQ7ZTspe2lmKCJFbENoZWNrYm94R3JvdXAiPT09ZS4kb3B0aW9ucy5jb21wb25lbnROYW1lKXJldHVybiB0aGlzLl9jaGVja2JveEdyb3VwPWUsCiEwO2U9ZS4kcGFyZW50fXJldHVybiExfSxzdG9yZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jaGVja2JveEdyb3VwLnZhbHVlfX0scHJvcHM6e3ZhbHVlOnt9LGxhYmVsOnt9LGluZGV0ZXJtaW5hdGU6Qm9vbGVhbixkaXNhYmxlZDpCb29sZWFuLGNoZWNrZWQ6Qm9vbGVhbixuYW1lOlN0cmluZyx0cnVlTGFiZWw6W1N0cmluZyxOdW1iZXJdLGZhbHNlTGFiZWw6W1N0cmluZyxOdW1iZXJdfSxtZXRob2RzOnthZGRUb1N0b3JlOmZ1bmN0aW9uKCl7QXJyYXkuaXNBcnJheSh0aGlzLm1vZGVsKT90aGlzLm1vZGVsLmluZGV4T2YodGhpcy5sYWJlbCk9PT0tMSYmdGhpcy5tb2RlbC5wdXNoKHRoaXMubGFiZWwpOnRoaXMubW9kZWw9dGhpcy50cnVlTGFiZWx8fCEwfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuY2hlY2tlZCYmdGhpcy5hZGRUb1N0b3JlKCl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImxhYmVsIix7c3RhdGljQ2xhc3M6ImVsLWNoZWNrYm94In0sW2UuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtY2hlY2tib3hfX2lucHV0In0sW2UuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtY2hlY2tib3hfX2lubmVyIiwiY2xhc3MiOnsiaXMtZGlzYWJsZWQiOmUuZGlzYWJsZWQsImlzLWNoZWNrZWQiOmUuaXNDaGVja2VkLCJpcy1pbmRldGVybWluYXRlIjplLmluZGV0ZXJtaW5hdGUsImlzLWZvY3VzIjplLmZvY3VzfX0pLGUudHJ1ZUxhYmVsfHxlLmZhbHNlTGFiZWw/ZS5faCgiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUubW9kZWwsZXhwcmVzc2lvbjoibW9kZWwifV0sc3RhdGljQ2xhc3M6ImVsLWNoZWNrYm94X19vcmlnaW5hbCIsYXR0cnM6e3R5cGU6ImNoZWNrYm94IixuYW1lOmUubmFtZSxkaXNhYmxlZDplLmRpc2FibGVkLCJ0cnVlLXZhbHVlIjplLnRydWVMYWJlbCwiZmFsc2UtdmFsdWUiOmUuZmFsc2VMYWJlbH0sZG9tUHJvcHM6e2NoZWNrZWQ6QXJyYXkuaXNBcnJheShlLm1vZGVsKT9lLl9pKGUubW9kZWwsbnVsbCk+LTE6ZS5fcShlLm1vZGVsLGUudHJ1ZUxhYmVsKX0sb246e2NoYW5nZTpbZnVuY3Rpb24odCl7dmFyIG49ZS5tb2RlbCxpPXQudGFyZ2V0LHM9aS5jaGVja2VkP2UudHJ1ZUxhYmVsOmUuZmFsc2VMYWJlbDtpZihBcnJheS5pc0FycmF5KG4pKXt2YXIgbz1udWxsLGE9ZS5faShuLG8pO3M/YTwwJiYoZS5tb2RlbD1uLmNvbmNhdChvKSk6YT4tMSYmKGUubW9kZWw9bi5zbGljZSgwLGEpLmNvbmNhdChuLnNsaWNlKGErMSkpKX1lbHNlIGUubW9kZWw9c30sZnVuY3Rpb24odCl7ZS4kZW1pdCgiY2hhbmdlIix0KX1dLGZvY3VzOmZ1bmN0aW9uKHQpe2UuZm9jdXM9ITB9LGJsdXI6ZnVuY3Rpb24odCl7ZS5mb2N1cz0hMX19fSk6ZS5faCgiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUubW9kZWwsZXhwcmVzc2lvbjoibW9kZWwifV0sc3RhdGljQ2xhc3M6ImVsLWNoZWNrYm94X19vcmlnaW5hbCIsYXR0cnM6e3R5cGU6ImNoZWNrYm94IixkaXNhYmxlZDplLmRpc2FibGVkLG5hbWU6ZS5uYW1lfSxkb21Qcm9wczp7dmFsdWU6ZS5sYWJlbCxjaGVja2VkOkFycmF5LmlzQXJyYXkoZS5tb2RlbCk/ZS5faShlLm1vZGVsLGUubGFiZWwpPi0xOmUuX3EoZS5tb2RlbCwhMCl9LG9uOntjaGFuZ2U6W2Z1bmN0aW9uKHQpe3ZhciBuPWUubW9kZWwsaT10LnRhcmdldCxzPSEhaS5jaGVja2VkO2lmKEFycmF5LmlzQXJyYXkobikpe3ZhciBvPWUubGFiZWwsYT1lLl9pKG4sbyk7cz9hPDAmJihlLm1vZGVsPW4uY29uY2F0KG8pKTphPi0xJiYoZS5tb2RlbD1uLnNsaWNlKDAsYSkuY29uY2F0KG4uc2xpY2UoYSsxKSkpfWVsc2UgZS5tb2RlbD1zfSxmdW5jdGlvbih0KXtlLiRlbWl0KCJjaGFuZ2UiLHQpfV0sZm9jdXM6ZnVuY3Rpb24odCl7ZS5mb2N1cz0hMH0sYmx1cjpmdW5jdGlvbih0KXtlLmZvY3VzPSExfX19KV0pLGUuJHNsb3RzWyJkZWZhdWx0Il18fGUubGFiZWw/ZS5faCgic3BhbiIse3N0YXRpY0NsYXNzOiJlbC1jaGVja2JveF9fbGFiZWwifSxbZS5fdCgiZGVmYXVsdCIpLGUuJHNsb3RzWyJkZWZhdWx0Il0/ZS5fZSgpOltlLl9zKGUubGFiZWwpXV0pOmUuX2UoKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTAxKSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDEwMik7dmFyIG89bigxMDMpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTApLG89aShzKTt0WyJkZWZhdWx0Il09e25hbWU6IkVsQ2hlY2tib3hHcm91cCIsY29tcG9uZW50TmFtZToiRWxDaGVja2JveEdyb3VwIixtaXhpbnM6W29bImRlZmF1bHQiXV0scHJvcHM6e3ZhbHVlOnt9fSx3YXRjaDp7dmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy4kZW1pdCgiY2hhbmdlIixlKSx0aGlzLmRpc3BhdGNoKCJFbEZvcm1JdGVtIiwiZWwuZm9ybS5jaGFuZ2UiLFtlXSl9fX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtY2hlY2tib3gtZ3JvdXAifSxbZS5fdCgiZGVmYXVsdCIpXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxMDUpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMTA2KTt2YXIgbz1uKDEwNyk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0WyJkZWZhdWx0Il09e25hbWU6ImVsLXN3aXRjaCIscHJvcHM6e3ZhbHVlOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiEwfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMX0sd2lkdGg6e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjowfSxvbkljb25DbGFzczp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiIifSxvZmZJY29uQ2xhc3M6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiIn0sb25UZXh0Ont0eXBlOlN0cmluZywiZGVmYXVsdCI6Ik9OIn0sb2ZmVGV4dDp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJPRkYifSxvbkNvbG9yOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6IiJ9LG9mZkNvbG9yOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6IiJ9LG5hbWU6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiIn19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Y29yZVdpZHRoOnRoaXMud2lkdGgsYnV0dG9uU3R5bGU6e3RyYW5zZm9ybToiIn19fSxjb21wdXRlZDp7aGFzVGV4dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm9uVGV4dHx8dGhpcy5vZmZUZXh0fSxfdmFsdWU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbHVlfSxzZXQ6ZnVuY3Rpb24oZSl7dGhpcy4kZW1pdCgiaW5wdXQiLGUpfX19LHdhdGNoOnt2YWx1ZTpmdW5jdGlvbigpeyh0aGlzLm9uQ29sb3J8fHRoaXMub2ZmQ29sb3IpJiZ0aGlzLnNldEJhY2tncm91bmRDb2xvcigpLHRoaXMuaGFuZGxlQnV0dG9uVHJhbnNmb3JtKCl9fSxtZXRob2RzOntoYW5kbGVDaGFuZ2U6ZnVuY3Rpb24oZSl7dGhpcy4kZW1pdCgiY2hhbmdlIixlLmN1cnJlbnRUYXJnZXQuY2hlY2tlZCl9LGhhbmRsZUJ1dHRvblRyYW5zZm9ybTpmdW5jdGlvbigpe3RoaXMuYnV0dG9uU3R5bGUudHJhbnNmb3JtPXRoaXMudmFsdWU/InRyYW5zbGF0ZSgiKyh0aGlzLmNvcmVXaWR0aC0yMCkrInB4LCAycHgpIjoidHJhbnNsYXRlKDJweCwgMnB4KSJ9LHNldEJhY2tncm91bmRDb2xvcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMudmFsdWU/dGhpcy5vbkNvbG9yOnRoaXMub2ZmQ29sb3I7dGhpcy4kcmVmcy5jb3JlLnN0eWxlLmJvcmRlckNvbG9yPWUsdGhpcy4kcmVmcy5jb3JlLnN0eWxlLmJhY2tncm91bmRDb2xvcj1lfX0sbW91bnRlZDpmdW5jdGlvbigpezA9PT10aGlzLndpZHRoJiYodGhpcy5jb3JlV2lkdGg9dGhpcy5oYXNUZXh0PzU4OjQ2KSx0aGlzLmhhbmRsZUJ1dHRvblRyYW5zZm9ybSgpLCF0aGlzLm9uQ29sb3ImJiF0aGlzLm9mZkNvbG9yfHx0aGlzLmRpc2FibGVkfHx0aGlzLnNldEJhY2tncm91bmRDb2xvcigpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJsYWJlbCIse3N0YXRpY0NsYXNzOiJlbC1zd2l0Y2giLCJjbGFzcyI6eyJpcy1kaXNhYmxlZCI6ZS5kaXNhYmxlZCwiZWwtc3dpdGNoLS13aWRlIjplLmhhc1RleHR9fSxbZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS5kaXNhYmxlZCxleHByZXNzaW9uOiJkaXNhYmxlZCJ9XSxzdGF0aWNDbGFzczoiZWwtc3dpdGNoX19tYXNrIn0pLGUuX2goImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTplLl92YWx1ZSxleHByZXNzaW9uOiJfdmFsdWUifV0sc3RhdGljQ2xhc3M6ImVsLXN3aXRjaF9faW5wdXQiLGF0dHJzOnt0eXBlOiJjaGVja2JveCIsbmFtZTplLm5hbWUsZGlzYWJsZWQ6ZS5kaXNhYmxlZH0sZG9tUHJvcHM6e2NoZWNrZWQ6QXJyYXkuaXNBcnJheShlLl92YWx1ZSk/ZS5faShlLl92YWx1ZSxudWxsKT4tMTplLl9xKGUuX3ZhbHVlLCEwKX0sb246e2NoYW5nZTpbZnVuY3Rpb24odCl7dmFyIG49ZS5fdmFsdWUsaT10LnRhcmdldCxzPSEhaS5jaGVja2VkO2lmKEFycmF5LmlzQXJyYXkobikpe3ZhciBvPW51bGwsYT1lLl9pKG4sbyk7cz9hPDAmJihlLl92YWx1ZT1uLmNvbmNhdChvKSk6YT4tMSYmKGUuX3ZhbHVlPW4uc2xpY2UoMCxhKS5jb25jYXQobi5zbGljZShhKzEpKSl9ZWxzZSBlLl92YWx1ZT1zfSxlLmhhbmRsZUNoYW5nZV19fSksZS5faCgic3BhbiIse3JlZjoiY29yZSIsc3RhdGljQ2xhc3M6ImVsLXN3aXRjaF9fY29yZSIsc3R5bGU6e3dpZHRoOmUuY29yZVdpZHRoKyJweCJ9fSxbZS5faCgic3BhbiIse3N0YXRpY0NsYXNzOiJlbC1zd2l0Y2hfX2J1dHRvbiIsc3R5bGU6ZS5idXR0b25TdHlsZX0pXSksZS5faCgidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOiJsYWJlbC1mYWRlIn19LFtlLl9oKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnZhbHVlLGV4cHJlc3Npb246InZhbHVlIn1dLHN0YXRpY0NsYXNzOiJlbC1zd2l0Y2hfX2xhYmVsIGVsLXN3aXRjaF9fbGFiZWwtLWxlZnQiLHN0eWxlOnt3aWR0aDplLmNvcmVXaWR0aCsicHgifX0sW2Uub25JY29uQ2xhc3M/ZS5faCgiaSIseyJjbGFzcyI6W2Uub25JY29uQ2xhc3NdfSk6ZS5fZSgpLCFlLm9uSWNvbkNsYXNzJiZlLm9uVGV4dD9lLl9oKCJzcGFuIixbZS5fcyhlLm9uVGV4dCldKTplLl9lKCldKV0pLGUuX2goInRyYW5zaXRpb24iLHthdHRyczp7bmFtZToibGFiZWwtZmFkZSJ9fSxbZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6IWUudmFsdWUsZXhwcmVzc2lvbjoiIXZhbHVlIn1dLHN0YXRpY0NsYXNzOiJlbC1zd2l0Y2hfX2xhYmVsIGVsLXN3aXRjaF9fbGFiZWwtLXJpZ2h0IixzdHlsZTp7d2lkdGg6ZS5jb3JlV2lkdGgrInB4In19LFtlLm9mZkljb25DbGFzcz9lLl9oKCJpIix7ImNsYXNzIjpbZS5vZmZJY29uQ2xhc3NdfSk6ZS5fZSgpLCFlLm9mZkljb25DbGFzcyYmZS5vZmZUZXh0P2UuX2goInNwYW4iLFtlLl9zKGUub2ZmVGV4dCldKTplLl9lKCldKV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxMDkpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMTEwKTt2YXIgbz1uKDExMSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxMCksbz1pKHMpO3RbImRlZmF1bHQiXT17bWl4aW5zOltvWyJkZWZhdWx0Il1dLG5hbWU6ImVsLW9wdGlvbi1ncm91cCIscHJvcHM6e2xhYmVsOlN0cmluZyxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMX19LHdhdGNoOntkaXNhYmxlZDpmdW5jdGlvbihlKXt0aGlzLmJyb2FkY2FzdCgiRWxPcHRpb24iLCJoYW5kbGVHcm91cERpc2FibGVkIixlKX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkJiZ0aGlzLmJyb2FkY2FzdCgiRWxPcHRpb24iLCJoYW5kbGVHcm91cERpc2FibGVkIix0aGlzLmRpc2FibGVkKX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgidWwiLHtzdGF0aWNDbGFzczoiZWwtc2VsZWN0LWdyb3VwX193cmFwIn0sW2UuX2goImxpIix7c3RhdGljQ2xhc3M6ImVsLXNlbGVjdC1ncm91cF9fdGl0bGUifSxbZS5fcyhlLmxhYmVsKV0pLGUuX2goImxpIixbZS5faCgidWwiLHtzdGF0aWNDbGFzczoiZWwtc2VsZWN0LWdyb3VwIn0sW2UuX3QoImRlZmF1bHQiKV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDExMyksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxMTQpO3ZhciBvPW4oMTE1KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHRbImRlZmF1bHQiXT17bmFtZToiRWxCdXR0b24iLHByb3BzOnt0eXBlOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6ImRlZmF1bHQifSxzaXplOlN0cmluZyxpY29uOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6IiJ9LG5hdGl2ZVR5cGU6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiYnV0dG9uIn0sbG9hZGluZzpCb29sZWFuLGRpc2FibGVkOkJvb2xlYW4scGxhaW46Qm9vbGVhbixhdXRvZm9jdXM6Qm9vbGVhbn0sbWV0aG9kczp7aGFuZGxlQ2xpY2s6ZnVuY3Rpb24oZSl7dGhpcy4kZW1pdCgiY2xpY2siLGUpfX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiYnV0dG9uIix7c3RhdGljQ2xhc3M6ImVsLWJ1dHRvbiIsImNsYXNzIjpbZS50eXBlPyJlbC1idXR0b24tLSIrZS50eXBlOiIiLGUuc2l6ZT8iZWwtYnV0dG9uLS0iK2Uuc2l6ZToiIix7ImlzLWRpc2FibGVkIjplLmRpc2FibGVkLCJpcy1sb2FkaW5nIjplLmxvYWRpbmcsImlzLXBsYWluIjplLnBsYWlufV0sYXR0cnM6e2Rpc2FibGVkOmUuZGlzYWJsZWQsYXV0b2ZvY3VzOmUuYXV0b2ZvY3VzLHR5cGU6ZS5uYXRpdmVUeXBlfSxvbjp7Y2xpY2s6ZS5oYW5kbGVDbGlja319LFtlLmxvYWRpbmc/ZS5faCgiaSIse3N0YXRpY0NsYXNzOiJlbC1pY29uLWxvYWRpbmcifSk6ZS5fZSgpLGUuaWNvbiYmIWUubG9hZGluZz9lLl9oKCJpIix7ImNsYXNzIjoiZWwtaWNvbi0iK2UuaWNvbn0pOmUuX2UoKSxlLiRzbG90c1siZGVmYXVsdCJdP2UuX2goInNwYW4iLFtlLl90KCJkZWZhdWx0IildKTplLl9lKCldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDExNyksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxMTgpO3ZhciBvPW4oMTE5KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHRbImRlZmF1bHQiXT17bmFtZToiRWxCdXR0b25Hcm91cCJ9fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLWJ1dHRvbi1ncm91cCJ9LFtlLl90KCJkZWZhdWx0IildKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDEyMSksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxMjIpO3ZhciBvPW4oMTMyKTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDQzKSxvPWkocyksYT1uKDM2KSxyPWkoYSksbD1uKDM1KSx1PWkobCksZD1uKDQwKSxjPW4oMTIpLGY9bigxMjMpLGg9aShmKSxwPW4oMTI1KSxtPWkocCksZz1uKDEyNiksdj1pKGcpLHk9bigxMjcpLF89aSh5KSxiPW4oMTI0KSxDPTE7dFsiZGVmYXVsdCJdPXtuYW1lOiJlbC10YWJsZSIsbWl4aW5zOltvWyJkZWZhdWx0Il1dLHByb3BzOntkYXRhOnt0eXBlOkFycmF5LCJkZWZhdWx0IjpmdW5jdGlvbigpe3JldHVybltdfX0sd2lkdGg6W1N0cmluZyxOdW1iZXJdLGhlaWdodDpbU3RyaW5nLE51bWJlcl0sZml0Ont0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiEwfSxzdHJpcGU6Qm9vbGVhbixib3JkZXI6Qm9vbGVhbixyb3dLZXk6W1N0cmluZyxGdW5jdGlvbl0sY29udGV4dDp7fSxzaG93SGVhZGVyOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiEwfSxyb3dDbGFzc05hbWU6W1N0cmluZyxGdW5jdGlvbl0scm93U3R5bGU6W09iamVjdCxGdW5jdGlvbl0saGlnaGxpZ2h0Q3VycmVudFJvdzpCb29sZWFuLGVtcHR5VGV4dDp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOmZ1bmN0aW9uKCl7cmV0dXJuKDAsYy50KSgiZWwudGFibGUuZW1wdHlUZXh0Iil9fX0sY29tcG9uZW50czp7VGFibGVIZWFkZXI6X1siZGVmYXVsdCJdLFRhYmxlQm9keTp2WyJkZWZhdWx0Il19LG1ldGhvZHM6e2dldE1pZ3JhdGluZ0NvbmZpZzpmdW5jdGlvbigpe3JldHVybntwcm9wczp7ImFsbG93LW5vLXNlbGVjdGlvbiI6IlRhYmxlOiBhbGxvdy1uby1zZWxlY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZC4iLCJzZWxlY3Rpb24tbW9kZSI6IlRhYmxlOiBzZWxlY3Rpb24tbW9kZSBoYXMgYmVlbiByZW1vdmVkLiIsImZpeGVkLWNvbHVtbi1jb3VudCI6IlRhYmxlOiBmaXhlZC1jb2x1bW4tY291bnQgaGFzIGJlZW4gcmVtb3ZlZC4gVXNlIGZpeGVkIHByb3AgaW4gVGFibGVDb2x1bW4gaW5zdGVhZC4iLCJjdXN0b20tY3JpdGVyaWEiOiJUYWJsZTogY3VzdG9tLWNyaXRlcmlhIGhhcyBiZWVuIHJlbW92ZWQuIFVzZSByb3ctY2xhc3MtbmFtZSBpbnN0ZWFkLiIsImN1c3RvbS1iYWNrZ3JvdW5kLWNvbG9ycyI6ImN1c3RvbS1iYWNrZ3JvdW5kLWNvbG9ycyBoYXMgYmVlbiByZW1vdmVkLiBVc2Ugcm93LWNsYXNzLW5hbWUgaW5zdGVhZC4ifSxldmVudHM6e3NlbGVjdGlvbmNoYW5nZToiVGFibGU6IHNlbGVjdGlvbmNoYW5nZSBoYXMgYmVlbiByZW5hbWVkIHRvIHNlbGVjdGlvbi1jaGFuZ2UuIixjZWxsbW91c2VlbnRlcjoiVGFibGU6IGNlbGxtb3VzZWVudGVyIGhhcyBiZWVuIHJlbmFtZWQgdG8gY2VsbC1tb3VzZS1lbnRlci4iLGNlbGxtb3VzZWxlYXZlOiJUYWJsZTogY2VsbG1vdXNlbGVhdmUgaGFzIGJlZW4gcmVuYW1lZCB0byBjZWxsLW1vdXNlLWxlYXZlLiIsY2VsbGNsaWNrOiJUYWJsZTogY2VsbGNsaWNrIGhhcyBiZWVuIHJlbmFtZWQgdG8gY2VsbC1jbGljay4ifX19LHRvZ2dsZVJvd1NlbGVjdGlvbjpmdW5jdGlvbihlLHQpe3RoaXMuc3RvcmUudG9nZ2xlUm93U2VsZWN0aW9uKGUsdCksdGhpcy5zdG9yZS51cGRhdGVBbGxTZWxlY3RlZCgpfSxjbGVhclNlbGVjdGlvbjpmdW5jdGlvbigpe3RoaXMuc3RvcmUuY2xlYXJTZWxlY3Rpb24oKX0saGFuZGxlTW91c2VMZWF2ZTpmdW5jdGlvbigpe3RoaXMuc3RvcmUuY29tbWl0KCJzZXRIb3ZlclJvdyIsbnVsbCksdGhpcy5ob3ZlclN0YXRlJiYodGhpcy5ob3ZlclN0YXRlPW51bGwpfSx1cGRhdGVTY3JvbGxZOmZ1bmN0aW9uKCl7dGhpcy5sYXlvdXQudXBkYXRlU2Nyb2xsWSgpfSxiaW5kRXZlbnRzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMuJHJlZnMsbj10LmJvZHlXcmFwcGVyLGk9dC5oZWFkZXJXcmFwcGVyLHM9dGhpcy4kcmVmcztuLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsZnVuY3Rpb24oKXtpJiYoaS5zY3JvbGxMZWZ0PXRoaXMuc2Nyb2xsTGVmdCkscy5maXhlZEJvZHlXcmFwcGVyJiYocy5maXhlZEJvZHlXcmFwcGVyLnNjcm9sbFRvcD10aGlzLnNjcm9sbFRvcCkscy5yaWdodEZpeGVkQm9keVdyYXBwZXImJihzLnJpZ2h0Rml4ZWRCb2R5V3JhcHBlci5zY3JvbGxUb3A9dGhpcy5zY3JvbGxUb3ApfSksaSYmKDAsYi5tb3VzZXdoZWVsKShpLCgwLHJbImRlZmF1bHQiXSkoMTYsZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kZWx0YVg7dD4wP24uc2Nyb2xsTGVmdD1uLnNjcm9sbExlZnQrMTA6bi5zY3JvbGxMZWZ0PW4uc2Nyb2xsTGVmdC0xMH0pKSx0aGlzLmZpdCYmKHRoaXMud2luZG93UmVzaXplTGlzdGVuZXI9KDAsclsiZGVmYXVsdCJdKSg1MCxmdW5jdGlvbigpe2UuJHJlYWR5JiZlLmRvTGF5b3V0KCl9KSwoMCxkLmFkZFJlc2l6ZUxpc3RlbmVyKSh0aGlzLiRlbCx0aGlzLndpbmRvd1Jlc2l6ZUxpc3RlbmVyKSl9LGRvTGF5b3V0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnN0b3JlLnVwZGF0ZUNvbHVtbnMoKSx0aGlzLmxheW91dC51cGRhdGUoKSx0aGlzLnVwZGF0ZVNjcm9sbFkoKSx0aGlzLiRuZXh0VGljayhmdW5jdGlvbigpe2UuaGVpZ2h0P2UubGF5b3V0LnNldEhlaWdodChlLmhlaWdodCk6ZS5zaG91bGRVcGRhdGVIZWlnaHQmJmUubGF5b3V0LnVwZGF0ZUhlaWdodCgpfSl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnRhYmxlSWQ9ImVsLXRhYmxlXyIrQysiXyIsdGhpcy5kZWJvdW5jZWRMYXlvdXQ9KDAsdVsiZGVmYXVsdCJdKSg1MCxmdW5jdGlvbigpe3JldHVybiBlLmRvTGF5b3V0KCl9KX0sY29tcHV0ZWQ6e3Nob3VsZFVwZGF0ZUhlaWdodDpmdW5jdGlvbigpe3JldHVybiJudW1iZXIiPT10eXBlb2YgdGhpcy5oZWlnaHR8fHRoaXMuZml4ZWRDb2x1bW5zLmxlbmd0aD4wfHx0aGlzLnJpZ2h0Rml4ZWRDb2x1bW5zLmxlbmd0aD4wfSxzZWxlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9yZS5zZWxlY3Rpb259LGNvbHVtbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZXMuY29sdW1uc30sdGFibGVEYXRhOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RvcmUuc3RhdGVzLmRhdGF9LGZpeGVkQ29sdW1uczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3JlLnN0YXRlcy5maXhlZENvbHVtbnN9LHJpZ2h0Rml4ZWRDb2x1bW5zOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RvcmUuc3RhdGVzLnJpZ2h0Rml4ZWRDb2x1bW5zfX0sd2F0Y2g6e2hlaWdodDpmdW5jdGlvbihlKXt0aGlzLmxheW91dC5zZXRIZWlnaHQoZSl9LGRhdGE6e2ltbWVkaWF0ZTohMCxoYW5kbGVyOmZ1bmN0aW9uKGUpe3RoaXMuc3RvcmUuY29tbWl0KCJzZXREYXRhIixlKX19fSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXt0aGlzLndpbmRvd1Jlc2l6ZUxpc3RlbmVyJiYoMCxkLnJlbW92ZVJlc2l6ZUxpc3RlbmVyKSh0aGlzLiRlbCx0aGlzLndpbmRvd1Jlc2l6ZUxpc3RlbmVyKX0sbW91bnRlZDpmdW5jdGlvbigpe3RoaXMuYmluZEV2ZW50cygpLHRoaXMuZG9MYXlvdXQoKSx0aGlzLiRyZWFkeT0hMH0sZGF0YTpmdW5jdGlvbigpe3ZhciBlPW5ldyBoWyJkZWZhdWx0Il0odGhpcyx7cm93S2V5OnRoaXMucm93S2V5fSksdD1uZXcgbVsiZGVmYXVsdCJdKHtzdG9yZTplLHRhYmxlOnRoaXMsZml0OnRoaXMuZml0LHNob3dIZWFkZXI6dGhpcy5zaG93SGVhZGVyfSk7cmV0dXJue3N0b3JlOmUsbGF5b3V0OnQscmVzaXplUHJveHlWaXNpYmxlOiExfX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTQpLG89aShzKSxhPW4oMzUpLHI9aShhKSxsPW4oMTI0KSx1PWZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zb3J0aW5nQ29sdW1uO3JldHVybiBuJiYic3RyaW5nIiE9dHlwZW9mIG4uc29ydGFibGU/KDAsbC5vcmRlckJ5KShlLHQuc29ydFByb3AsdC5zb3J0T3JkZXIsbi5zb3J0TWV0aG9kKTplfSxkPWZ1bmN0aW9uKGUsdCl7dmFyIG49e307cmV0dXJuKGV8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGUsaSl7blsoMCxsLmdldFJvd0lkZW50aXR5KShlLHQpXT17cm93OmUsaW5kZXg6aX19KSxufSxjPWZ1bmN0aW9uKGUsdCxuKXt2YXIgaT0hMSxzPWUuc2VsZWN0aW9uLG89cy5pbmRleE9mKHQpO3JldHVybiJ1bmRlZmluZWQiPT10eXBlb2Ygbj9vPT09LTE/KHMucHVzaCh0KSxpPSEwKToocy5zcGxpY2UobywxKSxpPSEwKTpuJiZvPT09LTE/KHMucHVzaCh0KSxpPSEwKTohbiYmbz4tMSYmKHMuc3BsaWNlKG8sMSksaT0hMCksaX0sZj1mdW5jdGlvbihlKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJUYWJsZSBpcyByZXF1aXJlZC4iKTt0aGlzLnRhYmxlPWUsdGhpcy5zdGF0ZXM9e3Jvd0tleTpudWxsLF9jb2x1bW5zOltdLG9yaWdpbkNvbHVtbnM6W10sY29sdW1uczpbXSxmaXhlZENvbHVtbnM6W10scmlnaHRGaXhlZENvbHVtbnM6W10saXNDb21wbGV4OiExLF9kYXRhOm51bGwsZmlsdGVyZWREYXRhOm51bGwsZGF0YTpudWxsLHNvcnRpbmdDb2x1bW46bnVsbCxzb3J0UHJvcDpudWxsLHNvcnRPcmRlcjpudWxsLGlzQWxsU2VsZWN0ZWQ6ITEsc2VsZWN0aW9uOltdLHJlc2VydmVTZWxlY3Rpb246ITEsc2VsZWN0YWJsZTpudWxsLGN1cnJlbnRSb3c6bnVsbCxob3ZlclJvdzpudWxsLGZpbHRlcnM6e319O2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJnRoaXMuc3RhdGVzLmhhc093blByb3BlcnR5KG4pJiYodGhpcy5zdGF0ZXNbbl09dFtuXSl9O2YucHJvdG90eXBlLm11dGF0aW9ucz17c2V0RGF0YTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMsaT1lLl9kYXRhIT09dDtlLl9kYXRhPXQsZS5kYXRhPXUodHx8W10sZSksdGhpcy51cGRhdGVDdXJyZW50Um93KCksZS5yZXNlcnZlU2VsZWN0aW9uPyFmdW5jdGlvbigpe3ZhciB0PWUucm93S2V5O3Q/IWZ1bmN0aW9uKCl7dmFyIGk9ZS5zZWxlY3Rpb24scz1kKGksdCk7ZS5kYXRhLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49KDAsbC5nZXRSb3dJZGVudGl0eSkoZSx0KSxvPXNbbl07byYmKGlbby5pbmRleF09ZSl9KSxuLnVwZGF0ZUFsbFNlbGVjdGVkKCl9KCk6Y29uc29sZS53YXJuKCJXQVJOOiByb3dLZXkgaXMgcmVxdWlyZWQgd2hlbiByZXNlcnZlLXNlbGVjdGlvbiBpcyBlbmFibGVkLiIpfSgpOihpP3RoaXMuY2xlYXJTZWxlY3Rpb24oKTp0aGlzLmNsZWFuU2VsZWN0aW9uKCksdGhpcy51cGRhdGVBbGxTZWxlY3RlZCgpKSxvWyJkZWZhdWx0Il0ubmV4dFRpY2soZnVuY3Rpb24oKXtyZXR1cm4gbi50YWJsZS51cGRhdGVTY3JvbGxZKCl9KX0sY2hhbmdlU29ydENvbmRpdGlvbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2UuZGF0YT11KGUuZmlsdGVyZWREYXRhfHxlLl9kYXRhfHxbXSxlKSx0aGlzLnRhYmxlLiRlbWl0KCJzb3J0LWNoYW5nZSIse2NvbHVtbjp0aGlzLnN0YXRlcy5zb3J0aW5nQ29sdW1uLHByb3A6dGhpcy5zdGF0ZXMuc29ydFByb3Asb3JkZXI6dGhpcy5zdGF0ZXMuc29ydE9yZGVyfSksb1siZGVmYXVsdCJdLm5leHRUaWNrKGZ1bmN0aW9uKCl7cmV0dXJuIHQudGFibGUudXBkYXRlU2Nyb2xsWSgpfSl9LGZpbHRlckNoYW5nZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMsaT10LmNvbHVtbixzPXQudmFsdWVzO3MmJiFBcnJheS5pc0FycmF5KHMpJiYocz1bc10pO3ZhciBhPWkucHJvcGVydHk7YSYmKGUuZmlsdGVyc1tpLmlkXT1zKTt2YXIgcj1lLl9kYXRhLGQ9ZS5maWx0ZXJzO09iamVjdC5rZXlzKGQpLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZFtlXTtpZih0JiYwIT09dC5sZW5ndGgpe3ZhciBpPSgwLGwuZ2V0Q29sdW1uQnlJZCkobi5zdGF0ZXMsZSk7aSYmaS5maWx0ZXJNZXRob2QmJihyPXIuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB0LnNvbWUoZnVuY3Rpb24odCl7cmV0dXJuIGkuZmlsdGVyTWV0aG9kLmNhbGwobnVsbCx0LGUpfSl9KSl9fSksZS5maWx0ZXJlZERhdGE9cixlLmRhdGE9dShyLGUpLG9bImRlZmF1bHQiXS5uZXh0VGljayhmdW5jdGlvbigpe3JldHVybiBuLnRhYmxlLnVwZGF0ZVNjcm9sbFkoKX0pfSxpbnNlcnRDb2x1bW46ZnVuY3Rpb24oZSx0LG4saSl7dmFyIHM9ZS5fY29sdW1ucztpJiYocz1pLmNoaWxkcmVuLHN8fChzPWkuY2hpbGRyZW49W10pKSwidW5kZWZpbmVkIiE9dHlwZW9mIG4/cy5zcGxpY2UobiwwLHQpOnMucHVzaCh0KSwic2VsZWN0aW9uIj09PXQudHlwZSYmKGUuc2VsZWN0YWJsZT10LnNlbGVjdGFibGUsZS5yZXNlcnZlU2VsZWN0aW9uPXQucmVzZXJ2ZVNlbGVjdGlvbiksdGhpcy5zY2hlZHVsZUxheW91dCgpfSxyZW1vdmVDb2x1bW46ZnVuY3Rpb24oZSx0KXt2YXIgbj1lLl9jb2x1bW5zO24mJm4uc3BsaWNlKG4uaW5kZXhPZih0KSwxKSx0aGlzLnNjaGVkdWxlTGF5b3V0KCl9LHNldEhvdmVyUm93OmZ1bmN0aW9uKGUsdCl7ZS5ob3ZlclJvdz10fSxzZXRDdXJyZW50Um93OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS5jdXJyZW50Um93O2UuY3VycmVudFJvdz10LG4hPT10JiZ0aGlzLnRhYmxlLiRlbWl0KCJjdXJyZW50LWNoYW5nZSIsdCxuKX0scm93U2VsZWN0ZWRDaGFuZ2VkOmZ1bmN0aW9uKGUsdCl7dmFyIG49YyhlLHQpLGk9ZS5zZWxlY3Rpb247aWYobil7dmFyIHM9dGhpcy50YWJsZTtzLiRlbWl0KCJzZWxlY3Rpb24tY2hhbmdlIixpKSxzLiRlbWl0KCJzZWxlY3QiLGksdCl9dGhpcy51cGRhdGVBbGxTZWxlY3RlZCgpfSx0b2dnbGVBbGxTZWxlY3Rpb246KDAsclsiZGVmYXVsdCJdKSgxMCxmdW5jdGlvbihlKXt2YXIgdD1lLmRhdGF8fFtdLG49IWUuaXNBbGxTZWxlY3RlZCxpPXRoaXMuc3RhdGVzLnNlbGVjdGlvbixzPSExO3QuZm9yRWFjaChmdW5jdGlvbih0LGkpe2Uuc2VsZWN0YWJsZT9lLnNlbGVjdGFibGUuY2FsbChudWxsLHQsaSkmJmMoZSx0LG4pJiYocz0hMCk6YyhlLHQsbikmJihzPSEwKX0pO3ZhciBvPXRoaXMudGFibGU7cyYmby4kZW1pdCgic2VsZWN0aW9uLWNoYW5nZSIsaSksby4kZW1pdCgic2VsZWN0LWFsbCIsaSksZS5pc0FsbFNlbGVjdGVkPW59KX07dmFyIGg9ZnVuY3Rpb24gcChlKXt2YXIgdD1bXTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4/dC5wdXNoLmFwcGx5KHQscChlLmNoaWxkcmVuKSk6dC5wdXNoKGUpfSksdH07Zi5wcm90b3R5cGUudXBkYXRlQ29sdW1ucz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGVzLHQ9ZS5fY29sdW1uc3x8W107ZS5maXhlZENvbHVtbnM9dC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZml4ZWQ9PT0hMHx8ImxlZnQiPT09ZS5maXhlZH0pLGUucmlnaHRGaXhlZENvbHVtbnM9dC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuInJpZ2h0Ij09PWUuZml4ZWR9KSxlLmZpeGVkQ29sdW1ucy5sZW5ndGg+MCYmdFswXSYmInNlbGVjdGlvbiI9PT10WzBdLnR5cGUmJiF0WzBdLmZpeGVkJiYodFswXS5maXhlZD0hMCxlLmZpeGVkQ29sdW1ucy51bnNoaWZ0KHRbMF0pKSxlLm9yaWdpbkNvbHVtbnM9W10uY29uY2F0KGUuZml4ZWRDb2x1bW5zKS5jb25jYXQodC5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIWUuZml4ZWR9KSkuY29uY2F0KGUucmlnaHRGaXhlZENvbHVtbnMpLGUuY29sdW1ucz1oKGUub3JpZ2luQ29sdW1ucyksZS5pc0NvbXBsZXg9ZS5maXhlZENvbHVtbnMubGVuZ3RoPjB8fGUucmlnaHRGaXhlZENvbHVtbnMubGVuZ3RoPjB9LGYucHJvdG90eXBlLmlzU2VsZWN0ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuKHRoaXMuc3RhdGVzLnNlbGVjdGlvbnx8W10pLmluZGV4T2YoZSk+LTF9LGYucHJvdG90eXBlLmNsZWFyU2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZXM7ZS5pc0FsbFNlbGVjdGVkPSExO3ZhciB0PWUuc2VsZWN0aW9uO2Uuc2VsZWN0aW9uPVtdLHQubGVuZ3RoPjAmJnRoaXMudGFibGUuJGVtaXQoInNlbGVjdGlvbi1jaGFuZ2UiLGUuc2VsZWN0aW9uKX0sZi5wcm90b3R5cGUudG9nZ2xlUm93U2VsZWN0aW9uPWZ1bmN0aW9uKGUsdCl7dmFyIG49Yyh0aGlzLnN0YXRlcyxlLHQpO24mJnRoaXMudGFibGUuJGVtaXQoInNlbGVjdGlvbi1jaGFuZ2UiLHRoaXMuc3RhdGVzLnNlbGVjdGlvbil9LGYucHJvdG90eXBlLmNsZWFuU2VsZWN0aW9uPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZXMuc2VsZWN0aW9ufHxbXSx0PXRoaXMuc3RhdGVzLmRhdGEsbj10aGlzLnN0YXRlcy5yb3dLZXksaT12b2lkIDA7aWYobil7aT1bXTt2YXIgcz1kKGUsbiksbz1kKHQsbik7Zm9yKHZhciBhIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShhKSYmIW9bYV0mJmkucHVzaChzW2FdLnJvdyl9ZWxzZSBpPWUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiB0LmluZGV4T2YoZSk9PT0tMX0pO2kuZm9yRWFjaChmdW5jdGlvbih0KXtlLnNwbGljZShlLmluZGV4T2YodCksMSl9KSxpLmxlbmd0aCYmdGhpcy50YWJsZS4kZW1pdCgic2VsZWN0aW9uLWNoYW5nZSIsZSl9LGYucHJvdG90eXBlLnVwZGF0ZUFsbFNlbGVjdGVkPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zdGF0ZXMsdD1lLnNlbGVjdGlvbixuPWUucm93S2V5LGk9ZS5zZWxlY3RhYmxlLHM9ZS5kYXRhO2lmKCFzfHwwPT09cy5sZW5ndGgpcmV0dXJuIHZvaWQoZS5pc0FsbFNlbGVjdGVkPSExKTt2YXIgbz12b2lkIDA7biYmKG89ZChlLnNlbGVjdGlvbixuKSk7Zm9yKHZhciBhPWZ1bmN0aW9uKGUpe3JldHVybiBvPyEhb1soMCxsLmdldFJvd0lkZW50aXR5KShlLG4pXTp0LmluZGV4T2YoZSkhPT0tMX0scj0hMCx1PTAsYz0wLGY9cy5sZW5ndGg7YzxmO2MrKyl7dmFyIGg9c1tjXTtpZihpKXt2YXIgcD1pLmNhbGwobnVsbCxoLGMpO2lmKHApe2lmKCFhKGgpKXtyPSExO2JyZWFrfXUrK319ZWxzZXtpZighYShoKSl7cj0hMTticmVha311Kyt9fTA9PT11JiYocj0hMSksZS5pc0FsbFNlbGVjdGVkPXJ9LGYucHJvdG90eXBlLnNjaGVkdWxlTGF5b3V0PWZ1bmN0aW9uKCl7dGhpcy50YWJsZS5kZWJvdW5jZWRMYXlvdXQoKX0sZi5wcm90b3R5cGUudXBkYXRlQ3VycmVudFJvdz1mdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhdGVzLHQ9dGhpcy50YWJsZSxuPWUuZGF0YXx8W10saT1lLmN1cnJlbnRSb3c7bi5pbmRleE9mKGkpPT09LTEmJihlLmN1cnJlbnRSb3c9bnVsbCxlLmN1cnJlbnRSb3chPT1pJiZ0LiRlbWl0KCJjdXJyZW50LWNoYW5nZSIsbnVsbCxpKSl9LGYucHJvdG90eXBlLmNvbW1pdD1mdW5jdGlvbihlKXt2YXIgdD10aGlzLm11dGF0aW9ucztpZih0W2VdKXtmb3IodmFyIG49YXJndW1lbnRzLmxlbmd0aCxpPUFycmF5KG4+MT9uLTE6MCkscz0xO3M8bjtzKyspaVtzLTFdPWFyZ3VtZW50c1tzXTt0W2VdLmFwcGx5KHRoaXMsW3RoaXMuc3RhdGVzXS5jb25jYXQoaSkpfX0sdFsiZGVmYXVsdCJdPWZ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMDt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0saT12b2lkIDAscz0odC5nZXRTY3JvbGxCYXJXaWR0aD1mdW5jdGlvbigpe2lmKHZvaWQgMCE9PWkpcmV0dXJuIGk7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7ZS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iLGUuc3R5bGUud2lkdGg9IjEwMHB4IixlLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSIsZS5zdHlsZS50b3A9Ii05OTk5cHgiLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZSk7dmFyIHQ9ZS5vZmZzZXRXaWR0aDtlLnN0eWxlLm92ZXJmbG93PSJzY3JvbGwiO3ZhciBuPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO24uc3R5bGUud2lkdGg9IjEwMCUiLGUuYXBwZW5kQ2hpbGQobik7dmFyIHM9bi5vZmZzZXRXaWR0aDtyZXR1cm4gZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpLHQtc30sdC5nZXRDZWxsPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLnRhcmdldDt0JiYiSFRNTCIhPT10LnRhZ05hbWUudG9VcHBlckNhc2UoKTspe2lmKCJURCI9PT10LnRhZ05hbWUudG9VcHBlckNhc2UoKSlyZXR1cm4gdDt0PXQucGFyZW50Tm9kZX1yZXR1cm4gbnVsbH0sdC5nZXRWYWx1ZUJ5UGF0aD1mdW5jdGlvbihlLHQpe3Q9dHx8IiI7Zm9yKHZhciBuPXQuc3BsaXQoIi4iKSxpPWUscz1udWxsLG89MCxhPW4ubGVuZ3RoO288YTtvKyspe3ZhciByPW5bb107aWYoIWkpYnJlYWs7aWYobz09PWEtMSl7cz1pW3JdO2JyZWFrfWk9aVtyXX1yZXR1cm4gc30pLG89ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGwhPT1lJiYib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIGU/InVuZGVmaW5lZCI6bihlKSl9LGE9KHQub3JkZXJCeT1mdW5jdGlvbihlLHQsbixpKXtpZigic3RyaW5nIj09dHlwZW9mIG4mJihuPSJkZXNjZW5kaW5nIj09PW4/LTE6MSksIXQpcmV0dXJuIGU7dmFyIGE9biYmbjwwPy0xOjE7cmV0dXJuIGUuc2xpY2UoKS5zb3J0KGk/ZnVuY3Rpb24oZSx0KXtyZXR1cm4gaShlLHQpP2E6LWF9OmZ1bmN0aW9uKGUsbil7cmV0dXJuIiRrZXkiIT09dCYmKG8oZSkmJiIkdmFsdWUiaW4gZSYmKGU9ZS4kdmFsdWUpLG8obikmJiIkdmFsdWUiaW4gbiYmKG49bi4kdmFsdWUpKSxlPW8oZSk/cyhlLHQpOmUsbj1vKG4pP3Mobix0KTpuLGU9PT1uPzA6ZT5uP2E6LWF9KX0sdC5nZXRDb2x1bW5CeUlkPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbDtyZXR1cm4gZS5jb2x1bW5zLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5pZD09PXQmJihuPWUpfSksbn0pLHI9KHQuZ2V0Q29sdW1uQnlDZWxsPWZ1bmN0aW9uKGUsdCl7dmFyIG49KHQuY2xhc3NOYW1lfHwiIikubWF0Y2goL2VsLXRhYmxlX1teXHNdKy9nbSk7cmV0dXJuIG4/YShlLG5bMF0pOm51bGx9LG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJmaXJlZm94Iik+LTEpO3QubW91c2V3aGVlbD1mdW5jdGlvbihlLHQpe2UmJmUuYWRkRXZlbnRMaXN0ZW5lciYmZS5hZGRFdmVudExpc3RlbmVyKHI/IkRPTU1vdXNlU2Nyb2xsIjoibW91c2V3aGVlbCIsdCl9LHQuZ2V0Um93SWRlbnRpdHk9ZnVuY3Rpb24oZSx0KXtpZighZSl0aHJvdyBuZXcgRXJyb3IoInJvdyBpcyByZXF1aXJlZCB3aGVuIGdldCByb3cgaWRlbnRpdHkiKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/ZVt0XToiZnVuY3Rpb24iPT10eXBlb2YgdD90LmNhbGwobnVsbCxlKTp2b2lkIDB9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxMjQpLG89dm9pZCAwLGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe2kodGhpcyxlKSx0aGlzLnRhYmxlPW51bGwsdGhpcy5zdG9yZT1udWxsLHRoaXMuY29sdW1ucz1udWxsLHRoaXMuZml0PSEwLHRoaXMuc2hvd0hlYWRlcj0hMCx0aGlzLmhlaWdodD1udWxsLHRoaXMuc2Nyb2xsWD0hMSx0aGlzLnNjcm9sbFk9ITEsdGhpcy5ib2R5V2lkdGg9bnVsbCx0aGlzLmZpeGVkV2lkdGg9bnVsbCx0aGlzLnJpZ2h0Rml4ZWRXaWR0aD1udWxsLHRoaXMudGFibGVIZWlnaHQ9bnVsbCx0aGlzLmhlYWRlckhlaWdodD00NCx0aGlzLnZpZXdwb3J0SGVpZ2h0PW51bGwsdGhpcy5ib2R5SGVpZ2h0PW51bGwsdGhpcy5maXhlZEJvZHlIZWlnaHQ9bnVsbCx2b2lkIDA9PT1vJiYobz0oMCxzLmdldFNjcm9sbEJhcldpZHRoKSgpKSx0aGlzLmd1dHRlcldpZHRoPW87Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKHRoaXNbbl09dFtuXSk7aWYoIXRoaXMudGFibGUpdGhyb3cgbmV3IEVycm9yKCJ0YWJsZSBpcyByZXF1aXJlZCBmb3IgVGFibGUgTGF5b3V0Iik7aWYoIXRoaXMuc3RvcmUpdGhyb3cgbmV3IEVycm9yKCJzdG9yZSBpcyByZXF1aXJlZCBmb3IgVGFibGUgTGF5b3V0Iil9cmV0dXJuIGUucHJvdG90eXBlLnVwZGF0ZVNjcm9sbFk9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmhlaWdodDtpZigic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZSl7dmFyIHQ9dGhpcy50YWJsZS4kcmVmcy5ib2R5V3JhcHBlcjtpZih0aGlzLnRhYmxlLiRlbCYmdCl7dmFyIG49dC5xdWVyeVNlbGVjdG9yKCIuZWwtdGFibGVfX2JvZHkiKTt0aGlzLnNjcm9sbFk9bi5vZmZzZXRIZWlnaHQ+dC5vZmZzZXRIZWlnaHR9fX0sZS5wcm90b3R5cGUuc2V0SGVpZ2h0PWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMudGFibGUuJGVsOyJzdHJpbmciPT10eXBlb2YgZSYmL15cZCskLy50ZXN0KGUpJiYoZT1OdW1iZXIoZSkpLHRoaXMuaGVpZ2h0PWUsdCYmKGlzTmFOKGUpPyJzdHJpbmciPT10eXBlb2YgZSYmdGhpcy51cGRhdGVIZWlnaHQoKToodC5zdHlsZS5oZWlnaHQ9ZSsicHgiLHRoaXMudXBkYXRlSGVpZ2h0KCkpKX0sZS5wcm90b3R5cGUudXBkYXRlSGVpZ2h0PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50YWJsZUhlaWdodD10aGlzLnRhYmxlLiRlbC5jbGllbnRIZWlnaHQsdD10aGlzLnRhYmxlLiRyZWZzLmhlYWRlcldyYXBwZXI7aWYoIXRoaXMuc2hvd0hlYWRlcnx8dClpZih0aGlzLnNob3dIZWFkZXIpe3ZhciBuPXRoaXMuaGVhZGVySGVpZ2h0PXQub2Zmc2V0SGVpZ2h0LGk9ZS1uO251bGw9PT10aGlzLmhlaWdodHx8aXNOYU4odGhpcy5oZWlnaHQpJiYic3RyaW5nIiE9dHlwZW9mIHRoaXMuaGVpZ2h0fHwodGhpcy5ib2R5SGVpZ2h0PWkpLHRoaXMuZml4ZWRCb2R5SGVpZ2h0PXRoaXMuc2Nyb2xsWD9pLXRoaXMuZ3V0dGVyV2lkdGg6aSx0aGlzLnZpZXdwb3J0SGVpZ2h0PXRoaXMuc2Nyb2xsWD9lLXRoaXMuZ3V0dGVyV2lkdGg6ZX1lbHNlIHRoaXMuaGVhZGVySGVpZ2h0PTAsbnVsbD09PXRoaXMuaGVpZ2h0fHxpc05hTih0aGlzLmhlaWdodCkmJiJzdHJpbmciIT10eXBlb2YgdGhpcy5oZWlnaHR8fCh0aGlzLmJvZHlIZWlnaHQ9ZSksdGhpcy5maXhlZEJvZHlIZWlnaHQ9dGhpcy5zY3JvbGxYP2UtdGhpcy5ndXR0ZXJXaWR0aDplLHRoaXMudmlld3BvcnRIZWlnaHQ9dGhpcy5zY3JvbGxYP2UtdGhpcy5ndXR0ZXJXaWR0aDplfSxlLnByb3RvdHlwZS51cGRhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmZpdCx0PXRoaXMudGFibGUuY29sdW1ucyxuPXRoaXMudGFibGUuJGVsLmNsaWVudFdpZHRoLGk9MCxzPVtdO3QuZm9yRWFjaChmdW5jdGlvbihlKXtlLmlzQ29sdW1uR3JvdXA/cy5wdXNoLmFwcGx5KHMsZS5jb2x1bW5zKTpzLnB1c2goZSl9KTt2YXIgbz1zLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4ibnVtYmVyIiE9dHlwZW9mIGUud2lkdGh9KTtpZihvLmxlbmd0aD4wJiZlKXtpZihzLmZvckVhY2goZnVuY3Rpb24oZSl7aSs9ZS53aWR0aHx8ZS5taW5XaWR0aHx8ODB9KSxpPG4tdGhpcy5ndXR0ZXJXaWR0aCl7dGhpcy5zY3JvbGxYPSExO3ZhciBhPW4tdGhpcy5ndXR0ZXJXaWR0aC1pOzE9PT1vLmxlbmd0aD9vWzBdLnJlYWxXaWR0aD0ob1swXS5taW5XaWR0aHx8ODApK2E6IWZ1bmN0aW9uKCl7dmFyIGU9by5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gZSsodC5taW5XaWR0aHx8ODApfSwwKSx0PWEvZSxuPTA7by5mb3JFYWNoKGZ1bmN0aW9uKGUsaSl7aWYoMCE9PWkpe3ZhciBzPU1hdGguZmxvb3IoKGUubWluV2lkdGh8fDgwKSp0KTtuKz1zLGUucmVhbFdpZHRoPShlLm1pbldpZHRofHw4MCkrc319KSxvWzBdLnJlYWxXaWR0aD0ob1swXS5taW5XaWR0aHx8ODApK2Etbn0oKX1lbHNlIHRoaXMuc2Nyb2xsWD0hMCxvLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5yZWFsV2lkdGg9ZS5taW5XaWR0aH0pO3RoaXMuYm9keVdpZHRoPU1hdGgubWF4KGksbil9ZWxzZSBzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS53aWR0aHx8ZS5taW5XaWR0aD9lLnJlYWxXaWR0aD1lLndpZHRofHxlLm1pbldpZHRoOmUucmVhbFdpZHRoPTgwLGkrPWUucmVhbFdpZHRofSksdGhpcy5zY3JvbGxYPWk+bix0aGlzLmJvZHlXaWR0aD1pO3ZhciByPXRoaXMuc3RvcmUuc3RhdGVzLmZpeGVkQ29sdW1ucztpZihyLmxlbmd0aD4wKXt2YXIgbD0wO3IuZm9yRWFjaChmdW5jdGlvbihlKXtsKz1lLnJlYWxXaWR0aH0pLHRoaXMuZml4ZWRXaWR0aD1sfXZhciB1PXRoaXMuc3RvcmUuc3RhdGVzLnJpZ2h0Rml4ZWRDb2x1bW5zO2lmKHUubGVuZ3RoPjApe3ZhciBkPTA7dS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2QrPWUucmVhbFdpZHRofSksdGhpcy5yaWdodEZpeGVkV2lkdGg9ZH19LGV9KCk7dFsiZGVmYXVsdCJdPWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwO3ZhciBpPW4oMTI0KTt0WyJkZWZhdWx0Il09e3Byb3BzOntzdG9yZTp7cmVxdWlyZWQ6ITB9LGNvbnRleHQ6e30sbGF5b3V0OntyZXF1aXJlZDohMH0scm93Q2xhc3NOYW1lOltTdHJpbmcsRnVuY3Rpb25dLHJvd1N0eWxlOltPYmplY3QsRnVuY3Rpb25dLGZpeGVkOlN0cmluZyxoaWdobGlnaHQ6Qm9vbGVhbn0scmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLmNvbHVtbnMubWFwKGZ1bmN0aW9uKGUsbil7cmV0dXJuIHQuaXNDb2x1bW5IaWRkZW4obil9KTtyZXR1cm4gZSgidGFibGUiLHsiY2xhc3MiOiJlbC10YWJsZV9fYm9keSIsYXR0cnM6e2NlbGxzcGFjaW5nOiIwIixjZWxscGFkZGluZzoiMCIsYm9yZGVyOiIwIn19LFt0aGlzLl9sKHRoaXMuY29sdW1ucyxmdW5jdGlvbih0KXtyZXR1cm4gZSgiY29sIix7YXR0cnM6e25hbWU6dC5pZCx3aWR0aDp0LnJlYWxXaWR0aHx8dC53aWR0aH19LFtdKX0pLGUoInRib2R5IixudWxsLFt0aGlzLl9sKHRoaXMuZGF0YSxmdW5jdGlvbihpLHMpe3JldHVybiBlKCJ0ciIse3N0eWxlOnQucm93U3R5bGU/dC5nZXRSb3dTdHlsZShpLHMpOm51bGwsa2V5OnQuJHBhcmVudC5yb3dLZXk/dC5nZXRLZXlPZlJvdyhpLHMpOnMsb246e2RibGNsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0LmhhbmRsZURvdWJsZUNsaWNrKGUsaSl9LGNsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0LmhhbmRsZUNsaWNrKGUsaSl9LG1vdXNlZW50ZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuaGFuZGxlTW91c2VFbnRlcihzKX0sbW91c2VsZWF2ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5oYW5kbGVNb3VzZUxlYXZlKCl9fSwiY2xhc3MiOnQuZ2V0Um93Q2xhc3MoaSxzKX0sW3QuX2wodC5jb2x1bW5zLGZ1bmN0aW9uKG8sYSl7cmV0dXJuIGUoInRkIix7ImNsYXNzIjpbby5pZCxvLmFsaWduLG8uY2xhc3NOYW1lfHwiIixuW2FdPyJpcy1oaWRkZW4iOiIiXSxvbjp7bW91c2VlbnRlcjpmdW5jdGlvbihlKXtyZXR1cm4gdC5oYW5kbGVDZWxsTW91c2VFbnRlcihlLGkpfSxtb3VzZWxlYXZlOnQuaGFuZGxlQ2VsbE1vdXNlTGVhdmV9fSxbby5yZW5kZXJDZWxsLmNhbGwodC5fcmVuZGVyUHJveHksZSx7cm93OmksY29sdW1uOm8sJGluZGV4OnMsc3RvcmU6dC5zdG9yZSxfc2VsZjp0LmNvbnRleHR8fHQuJHBhcmVudC4kdm5vZGUuY29udGV4dH0pXSl9KSwhdC5maXhlZCYmdC5sYXlvdXQuc2Nyb2xsWSYmdC5sYXlvdXQuZ3V0dGVyV2lkdGg/ZSgidGQiLHsiY2xhc3MiOiJndXR0ZXIifSxbXSk6IiJdKX0pXSldKX0sd2F0Y2g6eyJzdG9yZS5zdGF0ZXMuaG92ZXJSb3ciOmZ1bmN0aW9uKGUsdCl7aWYodGhpcy5zdG9yZS5zdGF0ZXMuaXNDb21wbGV4KXt2YXIgbj10aGlzLiRlbDtpZihuKXt2YXIgaT1uLnF1ZXJ5U2VsZWN0b3JBbGwoInRib2R5ID4gdHIiKSxzPWlbdF0sbz1pW2VdO3MmJnMuY2xhc3NMaXN0LnJlbW92ZSgiaG92ZXItcm93IiksbyYmby5jbGFzc0xpc3QuYWRkKCJob3Zlci1yb3ciKX19fSwic3RvcmUuc3RhdGVzLmN1cnJlbnRSb3ciOmZ1bmN0aW9uKGUsdCl7aWYodGhpcy5oaWdobGlnaHQpe3ZhciBuPXRoaXMuJGVsO2lmKG4pe3ZhciBpPXRoaXMuc3RvcmUuc3RhdGVzLmRhdGEscz1uLnF1ZXJ5U2VsZWN0b3JBbGwoInRib2R5ID4gdHIiKSxvPXNbaS5pbmRleE9mKHQpXSxhPXNbaS5pbmRleE9mKGUpXTtvJiZvLmNsYXNzTGlzdC5yZW1vdmUoImN1cnJlbnQtcm93IiksYSYmYS5jbGFzc0xpc3QuYWRkKCJjdXJyZW50LXJvdyIpfX19fSxjb21wdXRlZDp7ZGF0YTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3JlLnN0YXRlcy5kYXRhfSxjb2x1bW5zQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZXMuY29sdW1ucy5sZW5ndGh9LGxlZnRGaXhlZENvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RvcmUuc3RhdGVzLmZpeGVkQ29sdW1ucy5sZW5ndGh9LHJpZ2h0Rml4ZWRDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3JlLnN0YXRlcy5yaWdodEZpeGVkQ29sdW1ucy5sZW5ndGh9LGNvbHVtbnM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZXMuY29sdW1uc319LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57dG9vbHRpcERpc2FibGVkOiEwfX0sbWV0aG9kczp7Z2V0S2V5T2ZSb3c6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLiRwYXJlbnQucm93S2V5O3JldHVybiBuPygwLGkuZ2V0Um93SWRlbnRpdHkpKGUsbik6dH0saXNDb2x1bW5IaWRkZW46ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuZml4ZWQ9PT0hMHx8ImxlZnQiPT09dGhpcy5maXhlZD9lPj10aGlzLmxlZnRGaXhlZENvdW50OiJyaWdodCI9PT10aGlzLmZpeGVkP2U8dGhpcy5jb2x1bW5zQ291bnQtdGhpcy5yaWdodEZpeGVkQ291bnQ6ZTx0aGlzLmxlZnRGaXhlZENvdW50fHxlPj10aGlzLmNvbHVtbnNDb3VudC10aGlzLnJpZ2h0Rml4ZWRDb3VudH0sZ2V0Um93U3R5bGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJvd1N0eWxlO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuP24uY2FsbChudWxsLGUsdCk6bn0sZ2V0Um93Q2xhc3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj1bXSxpPXRoaXMucm93Q2xhc3NOYW1lO3JldHVybiJzdHJpbmciPT10eXBlb2YgaT9uLnB1c2goaSk6ImZ1bmN0aW9uIj09dHlwZW9mIGkmJm4ucHVzaChpLmNhbGwobnVsbCxlLHQpfHwiIiksbi5qb2luKCIgIil9LGhhbmRsZUNlbGxNb3VzZUVudGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy4kcGFyZW50LHM9KDAsaS5nZXRDZWxsKShlKTtpZihzKXt2YXIgbz0oMCxpLmdldENvbHVtbkJ5Q2VsbCkobixzKSxhPW4uaG92ZXJTdGF0ZT17Y2VsbDpzLGNvbHVtbjpvLHJvdzp0fTtuLiRlbWl0KCJjZWxsLW1vdXNlLWVudGVyIixhLnJvdyxhLmNvbHVtbixhLmNlbGwsZSl9dmFyIHI9ZS50YXJnZXQucXVlcnlTZWxlY3RvcigiLmNlbGwiKTt0aGlzLnRvb2x0aXBEaXNhYmxlZD1yLnNjcm9sbFdpZHRoPD1yLm9mZnNldFdpZHRofSxoYW5kbGVDZWxsTW91c2VMZWF2ZTpmdW5jdGlvbihlKXt2YXIgdD0oMCxpLmdldENlbGwpKGUpO2lmKHQpe3ZhciBuPXRoaXMuJHBhcmVudC5ob3ZlclN0YXRlO3RoaXMuJHBhcmVudC4kZW1pdCgiY2VsbC1tb3VzZS1sZWF2ZSIsbi5yb3csbi5jb2x1bW4sbi5jZWxsLGUpfX0saGFuZGxlTW91c2VFbnRlcjpmdW5jdGlvbihlKXt0aGlzLnN0b3JlLmNvbW1pdCgic2V0SG92ZXJSb3ciLGUpfSxoYW5kbGVNb3VzZUxlYXZlOmZ1bmN0aW9uKCl7dGhpcy5zdG9yZS5jb21taXQoInNldEhvdmVyUm93IixudWxsKX0saGFuZGxlRG91YmxlQ2xpY2s6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLiRwYXJlbnQ7bi4kZW1pdCgicm93LWRibGNsaWNrIix0LGUpfSxoYW5kbGVDbGljazpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuJHBhcmVudCxzPSgwLGkuZ2V0Q2VsbCkoZSk7aWYocyl7dmFyIG89KDAsaS5nZXRDb2x1bW5CeUNlbGwpKG4scyk7byYmbi4kZW1pdCgiY2VsbC1jbGljayIsdCxvLHMsZSl9dGhpcy5zdG9yZS5jb21taXQoInNldEN1cnJlbnRSb3ciLHQpLG4uJGVtaXQoInJvdy1jbGljayIsdCxlKX19fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDk2KSxvPWkocyksYT1uKDMxKSxyPWkoYSksbD1uKDE0KSx1PWkobCksZD1uKDEyOCksYz1pKGQpLGY9ZnVuY3Rpb24gcChlKXt2YXIgdD1bXTtyZXR1cm4gZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4/KHQucHVzaChlKSx0LnB1c2guYXBwbHkodCxwKGUuY2hpbGRyZW4pKSk6dC5wdXNoKGUpfSksdH0saD1mdW5jdGlvbihlKXt2YXIgdD0xLG49ZnVuY3Rpb24gYShlLG4pe24mJihlLmxldmVsPW4ubGV2ZWwrMSx0PGUubGV2ZWwmJih0PWUubGV2ZWwpKSxlLmNoaWxkcmVuPyFmdW5jdGlvbigpe3ZhciB0PTEsbj0wO2UuY2hpbGRyZW4uZm9yRWFjaChmdW5jdGlvbihpKXt2YXIgcz1hKGksZSk7cz50JiYodD1zKSxuKz1pLmNvbFNwYW59KSxlLmNvbFNwYW49bn0oKTplLmNvbFNwYW49MX07ZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UubGV2ZWw9MSxuKGUpfSk7Zm9yKHZhciBpPVtdLHM9MDtzPHQ7cysrKWkucHVzaChbXSk7dmFyIG89ZihlKTtyZXR1cm4gby5mb3JFYWNoKGZ1bmN0aW9uKGUpe2UuY2hpbGRyZW4/ZS5yb3dTcGFuPTE6ZS5yb3dTcGFuPXQtZS5sZXZlbCsxLGlbZS5sZXZlbC0xXS5wdXNoKGUpfSksaX07dFsiZGVmYXVsdCJdPXtuYW1lOiJlbC10YWJsZS1oZWFkZXIiLHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLG49dGhpcy5zdG9yZS5zdGF0ZXMub3JpZ2luQ29sdW1ucyxpPWgobix0aGlzLmNvbHVtbnMpO3JldHVybiBlKCJ0YWJsZSIseyJjbGFzcyI6ImVsLXRhYmxlX19oZWFkZXIiLGF0dHJzOntjZWxsc3BhY2luZzoiMCIsY2VsbHBhZGRpbmc6IjAiLGJvcmRlcjoiMCJ9fSxbdGhpcy5fbCh0aGlzLmNvbHVtbnMsZnVuY3Rpb24odCl7cmV0dXJuIGUoImNvbCIse2F0dHJzOntuYW1lOnQuaWQsd2lkdGg6dC5yZWFsV2lkdGh8fHQud2lkdGh9fSxbXSl9KSwhdGhpcy5maXhlZCYmdGhpcy5sYXlvdXQuZ3V0dGVyV2lkdGg/ZSgiY29sIix7YXR0cnM6e25hbWU6Imd1dHRlciIsd2lkdGg6dGhpcy5sYXlvdXQuc2Nyb2xsWT90aGlzLmxheW91dC5ndXR0ZXJXaWR0aDoiIn19LFtdKToiIixlKCJ0aGVhZCIsbnVsbCxbdGhpcy5fbChpLGZ1bmN0aW9uKG4saSl7cmV0dXJuIGUoInRyIixudWxsLFt0Ll9sKG4sZnVuY3Rpb24obixzKXtyZXR1cm4gZSgidGgiLHthdHRyczp7Y29sc3BhbjpuLmNvbFNwYW4scm93c3BhbjpuLnJvd1NwYW59LG9uOnttb3VzZW1vdmU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuaGFuZGxlTW91c2VNb3ZlKGUsbil9LG1vdXNlb3V0OnQuaGFuZGxlTW91c2VPdXQsbW91c2Vkb3duOmZ1bmN0aW9uKGUpe3JldHVybiB0LmhhbmRsZU1vdXNlRG93bihlLG4pfSxjbGljazpmdW5jdGlvbihlKXtyZXR1cm4gdC5oYW5kbGVDbGljayhlLG4pfX0sImNsYXNzIjpbbi5pZCxuLm9yZGVyLG4uYWxpZ24sbi5jbGFzc05hbWV8fCIiLDA9PT1pJiZ0LmlzQ2VsbEhpZGRlbihzKT8iaXMtaGlkZGVuIjoiIixuLmNoaWxkcmVuPyIiOiJpcy1sZWFmIl19LFtlKCJkaXYiLHsiY2xhc3MiOlsiY2VsbCIsbi5maWx0ZXJlZFZhbHVlJiZuLmZpbHRlcmVkVmFsdWUubGVuZ3RoPjA/ImhpZ2hsaWdodCI6IiJdfSxbbi5yZW5kZXJIZWFkZXI/bi5yZW5kZXJIZWFkZXIuY2FsbCh0Ll9yZW5kZXJQcm94eSxlLHtjb2x1bW46biwkaW5kZXg6cyxzdG9yZTp0LnN0b3JlLF9zZWxmOnQuJHBhcmVudC4kdm5vZGUuY29udGV4dH0pOm4ubGFiZWwsbi5zb3J0YWJsZT9lKCJzcGFuIix7ImNsYXNzIjoiY2FyZXQtd3JhcHBlciIsb246e2NsaWNrOmZ1bmN0aW9uKGUpe3JldHVybiB0LmhhbmRsZUhlYWRlckNsaWNrKGUsbil9fX0sW2UoImkiLHsiY2xhc3MiOiJzb3J0LWNhcmV0IGFzY2VuZGluZyJ9LFtdKSxlKCJpIix7ImNsYXNzIjoic29ydC1jYXJldCBkZXNjZW5kaW5nIn0sW10pXSk6IiIsbi5maWx0ZXJhYmxlP2UoInNwYW4iLHsiY2xhc3MiOiJlbC10YWJsZV9fY29sdW1uLWZpbHRlci10cmlnZ2VyIixvbjp7Y2xpY2s6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuaGFuZGxlRmlsdGVyQ2xpY2soZSxuKX19fSxbZSgiaSIseyJjbGFzcyI6WyJlbC1pY29uLWFycm93LWRvd24iLG4uZmlsdGVyT3BlbmVkPyJlbC1pY29uLWFycm93LXVwIjoiIl19LFtdKV0pOiIiXSldKX0pLCF0LmZpeGVkJiZ0LmxheW91dC5ndXR0ZXJXaWR0aD9lKCJ0aCIseyJjbGFzcyI6Imd1dHRlciIsc3R5bGU6e3dpZHRoOnQubGF5b3V0LnNjcm9sbFk/dC5sYXlvdXQuZ3V0dGVyV2lkdGgrInB4IjoiMCJ9fSxbXSk6IiJdKX0pXSldKX0scHJvcHM6e2ZpeGVkOlN0cmluZyxzdG9yZTp7cmVxdWlyZWQ6ITB9LGxheW91dDp7cmVxdWlyZWQ6ITB9LGJvcmRlcjpCb29sZWFufSxjb21wb25lbnRzOntFbENoZWNrYm94Om9bImRlZmF1bHQiXSxFbFRhZzpyWyJkZWZhdWx0Il19LGNvbXB1dGVkOntpc0FsbFNlbGVjdGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RvcmUuc3RhdGVzLmlzQWxsU2VsZWN0ZWR9LGNvbHVtbnNDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3JlLnN0YXRlcy5jb2x1bW5zLmxlbmd0aH0sbGVmdEZpeGVkQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9yZS5zdGF0ZXMuZml4ZWRDb2x1bW5zLmxlbmd0aH0scmlnaHRGaXhlZENvdW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc3RvcmUuc3RhdGVzLnJpZ2h0Rml4ZWRDb2x1bW5zLmxlbmd0aH0sY29sdW1uczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnN0b3JlLnN0YXRlcy5jb2x1bW5zfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuZmlsdGVyUGFuZWxzPXt9fSxiZWZvcmVEZXN0cm95OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5maWx0ZXJQYW5lbHM7Zm9yKHZhciB0IGluIGUpZS5oYXNPd25Qcm9wZXJ0eSh0KSYmZVt0XSYmZVt0XS4kZGVzdHJveSghMCl9LG1ldGhvZHM6e2lzQ2VsbEhpZGRlbjpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5maXhlZD09PSEwfHwibGVmdCI9PT10aGlzLmZpeGVkP2U+PXRoaXMubGVmdEZpeGVkQ291bnQ6InJpZ2h0Ij09PXRoaXMuZml4ZWQ/ZTx0aGlzLmNvbHVtbnNDb3VudC10aGlzLnJpZ2h0Rml4ZWRDb3VudDplPHRoaXMubGVmdEZpeGVkQ291bnR8fGU+PXRoaXMuY29sdW1uc0NvdW50LXRoaXMucmlnaHRGaXhlZENvdW50fSx0b2dnbGVBbGxTZWxlY3Rpb246ZnVuY3Rpb24oKXt0aGlzLnN0b3JlLmNvbW1pdCgidG9nZ2xlQWxsU2VsZWN0aW9uIil9LGhhbmRsZUZpbHRlckNsaWNrOmZ1bmN0aW9uKGUsdCl7ZS5zdG9wUHJvcGFnYXRpb24oKTt2YXIgbj1lLnRhcmdldCxpPW4ucGFyZW50Tm9kZSxzPXRoaXMuJHBhcmVudCxvPXRoaXMuZmlsdGVyUGFuZWxzW3QuaWRdO3JldHVybiBvJiZ0LmZpbHRlck9wZW5lZD92b2lkKG8uc2hvd1BvcHBlcj0hMSk6KG98fChvPW5ldyB1WyJkZWZhdWx0Il0oY1siZGVmYXVsdCJdKSx0aGlzLmZpbHRlclBhbmVsc1t0LmlkXT1vLG8udGFibGU9cyxvLmNlbGw9aSxvLmNvbHVtbj10LG8uJG1vdW50KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSksdm9pZCBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7by5zaG93UG9wcGVyPSEwfSwxNikpfSxoYW5kbGVDbGljazpmdW5jdGlvbihlLHQpe3RoaXMuJHBhcmVudC4kZW1pdCgiaGVhZGVyLWNsaWNrIix0LGUpfSxoYW5kbGVNb3VzZURvd246ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3QuY2hpbGRyZW4mJnQuY2hpbGRyZW4ubGVuZ3RoPjB8fHRoaXMuZHJhZ2dpbmdDb2x1bW4mJnRoaXMuYm9yZGVyJiYhZnVuY3Rpb24oKXtuLmRyYWdnaW5nPSEwLG4uJHBhcmVudC5yZXNpemVQcm94eVZpc2libGU9ITA7dmFyIGk9bi4kcGFyZW50LiRlbCxzPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkubGVmdCxvPW4uJGVsLnF1ZXJ5U2VsZWN0b3IoInRoLiIrdC5pZCksYT1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLHI9YS5sZWZ0LXMrMzA7Cm8uY2xhc3NMaXN0LmFkZCgibm9jbGljayIpLG4uZHJhZ1N0YXRlPXtzdGFydE1vdXNlTGVmdDplLmNsaWVudFgsc3RhcnRMZWZ0OmEucmlnaHQtcyxzdGFydENvbHVtbkxlZnQ6YS5sZWZ0LXMsdGFibGVMZWZ0OnN9O3ZhciBsPW4uJHBhcmVudC4kcmVmcy5yZXNpemVQcm94eTtsLnN0eWxlLmxlZnQ9bi5kcmFnU3RhdGUuc3RhcnRMZWZ0KyJweCIsZG9jdW1lbnQub25zZWxlY3RzdGFydD1mdW5jdGlvbigpe3JldHVybiExfSxkb2N1bWVudC5vbmRyYWdzdGFydD1mdW5jdGlvbigpe3JldHVybiExfTt2YXIgdT1mdW5jdGlvbihlKXt2YXIgdD1lLmNsaWVudFgtbi5kcmFnU3RhdGUuc3RhcnRNb3VzZUxlZnQsaT1uLmRyYWdTdGF0ZS5zdGFydExlZnQrdDtsLnN0eWxlLmxlZnQ9TWF0aC5tYXgocixpKSsicHgifSxkPWZ1bmN0aW9uIGMoKXtpZihuLmRyYWdnaW5nKXt2YXIgZT1wYXJzZUludChsLnN0eWxlLmxlZnQsMTApLGk9ZS1uLmRyYWdTdGF0ZS5zdGFydENvbHVtbkxlZnQ7dC53aWR0aD10LnJlYWxXaWR0aD1pLG4uc3RvcmUuc2NoZWR1bGVMYXlvdXQoKSxkb2N1bWVudC5ib2R5LnN0eWxlLmN1cnNvcj0iIixuLmRyYWdnaW5nPSExLG4uZHJhZ2dpbmdDb2x1bW49bnVsbCxuLmRyYWdTdGF0ZT17fSxuLiRwYXJlbnQucmVzaXplUHJveHlWaXNpYmxlPSExfWRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsdSksZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsYyksZG9jdW1lbnQub25zZWxlY3RzdGFydD1udWxsLGRvY3VtZW50Lm9uZHJhZ3N0YXJ0PW51bGwsc2V0VGltZW91dChmdW5jdGlvbigpe28uY2xhc3NMaXN0LnJlbW92ZSgibm9jbGljayIpfSwwKX07ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix1KSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIixkKX0oKX0saGFuZGxlTW91c2VNb3ZlOmZ1bmN0aW9uKGUsdCl7aWYoISh0LmNoaWxkcmVuJiZ0LmNoaWxkcmVuLmxlbmd0aD4wKSl7Zm9yKHZhciBuPWUudGFyZ2V0O24mJiJUSCIhPT1uLnRhZ05hbWU7KW49bi5wYXJlbnROb2RlO2lmKHQmJnQucmVzaXphYmxlJiYhdGhpcy5kcmFnZ2luZyYmdGhpcy5ib3JkZXIpe3ZhciBpPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkscz1kb2N1bWVudC5ib2R5LnN0eWxlO2kud2lkdGg+MTImJmkucmlnaHQtZS5wYWdlWDw4PyhzLmN1cnNvcj0iY29sLXJlc2l6ZSIsdGhpcy5kcmFnZ2luZ0NvbHVtbj10KTp0aGlzLmRyYWdnaW5nfHwocy5jdXJzb3I9IiIsdGhpcy5kcmFnZ2luZ0NvbHVtbj1udWxsKX19fSxoYW5kbGVNb3VzZU91dDpmdW5jdGlvbigpe2RvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yPSIifSxoYW5kbGVIZWFkZXJDbGljazpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj1lLnRhcmdldDtuJiYiVEgiIT09bi50YWdOYW1lOyluPW4ucGFyZW50Tm9kZTtpZihuJiYiVEgiPT09bi50YWdOYW1lJiZuLmNsYXNzTGlzdC5jb250YWlucygibm9jbGljayIpKXJldHVybiB2b2lkIG4uY2xhc3NMaXN0LnJlbW92ZSgibm9jbGljayIpO2lmKHQuc29ydGFibGUpe3ZhciBpPXRoaXMuc3RvcmUuc3RhdGVzLHM9aS5zb3J0UHJvcCxvPXZvaWQgMCxhPWkuc29ydGluZ0NvbHVtbjthIT09dCYmKGEmJihhLm9yZGVyPW51bGwpLGkuc29ydGluZ0NvbHVtbj10LHM9dC5wcm9wZXJ0eSksdC5vcmRlcj8iYXNjZW5kaW5nIj09PXQub3JkZXI/bz10Lm9yZGVyPSJkZXNjZW5kaW5nIjoobz10Lm9yZGVyPW51bGwsaS5zb3J0aW5nQ29sdW1uPW51bGwscz1udWxsKTpvPXQub3JkZXI9ImFzY2VuZGluZyIsaS5zb3J0UHJvcD1zLGkuc29ydE9yZGVyPW8sdGhpcy5zdG9yZS5jb21taXQoImNoYW5nZVNvcnRDb25kaXRpb24iKX19fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2RyYWdnaW5nQ29sdW1uOm51bGwsZHJhZ2dpbmc6ITEsZHJhZ1N0YXRlOnt9fX19fSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMTI5KTt2YXIgbz1uKDEzMSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigyNCksbz1pKHMpLGE9bigxMSkscj1pKGEpLGw9bigzNyksdT1pKGwpLGQ9bigxMzApLGM9aShkKSxmPW4oOTYpLGg9aShmKSxwPW4oMTAwKSxtPWkocCk7dFsiZGVmYXVsdCJdPXtuYW1lOiJlbC10YWJsZS1maWx0ZXItcGFuZWwiLG1peGluczpbb1siZGVmYXVsdCJdLHJbImRlZmF1bHQiXV0sZGlyZWN0aXZlczp7Q2xpY2tvdXRzaWRlOnVbImRlZmF1bHQiXX0sY29tcG9uZW50czp7RWxDaGVja2JveDpoWyJkZWZhdWx0Il0sRWxDaGVja2JveEdyb3VwOm1bImRlZmF1bHQiXX0scHJvcHM6e3BsYWNlbWVudDp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJib3R0b20tZW5kIn19LGN1c3RvbVJlbmRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZSgiZGl2Iix7ImNsYXNzIjoiZWwtdGFibGUtZmlsdGVyIn0sW2UoImRpdiIseyJjbGFzcyI6ImVsLXRhYmxlLWZpbHRlcl9fY29udGVudCJ9LFtdKSxlKCJkaXYiLHsiY2xhc3MiOiJlbC10YWJsZS1maWx0ZXJfX2JvdHRvbSJ9LFtlKCJidXR0b24iLHtvbjp7Y2xpY2s6dGhpcy5oYW5kbGVDb25maXJtfX0sW3RoaXMudCgiZWwudGFibGUuY29uZmlybUZpbHRlciIpXSksZSgiYnV0dG9uIix7b246e2NsaWNrOnRoaXMuaGFuZGxlUmVzZXR9fSxbdGhpcy50KCJlbC50YWJsZS5yZXNldEZpbHRlciIpXSldKV0pfSxtZXRob2RzOntpc0FjdGl2ZTpmdW5jdGlvbihlKXtyZXR1cm4gZS52YWx1ZT09PXRoaXMuZmlsdGVyVmFsdWV9LGhhbmRsZU91dHNpZGVDbGljazpmdW5jdGlvbigpe3RoaXMuc2hvd1BvcHBlcj0hMX0saGFuZGxlQ29uZmlybTpmdW5jdGlvbigpe3RoaXMuY29uZmlybUZpbHRlcih0aGlzLmZpbHRlcmVkVmFsdWUpLHRoaXMuaGFuZGxlT3V0c2lkZUNsaWNrKCl9LGhhbmRsZVJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5maWx0ZXJlZFZhbHVlPVtdLHRoaXMuY29uZmlybUZpbHRlcih0aGlzLmZpbHRlcmVkVmFsdWUpLHRoaXMuaGFuZGxlT3V0c2lkZUNsaWNrKCl9LGhhbmRsZVNlbGVjdDpmdW5jdGlvbihlKXt0aGlzLmZpbHRlclZhbHVlPWUsZT90aGlzLmNvbmZpcm1GaWx0ZXIodGhpcy5maWx0ZXJlZFZhbHVlKTp0aGlzLmNvbmZpcm1GaWx0ZXIoW10pLHRoaXMuaGFuZGxlT3V0c2lkZUNsaWNrKCl9LGNvbmZpcm1GaWx0ZXI6ZnVuY3Rpb24oZSl7dGhpcy50YWJsZS5zdG9yZS5jb21taXQoImZpbHRlckNoYW5nZSIse2NvbHVtbjp0aGlzLmNvbHVtbix2YWx1ZXM6ZX0pfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybnt0YWJsZTpudWxsLGNlbGw6bnVsbCxjb2x1bW46bnVsbH19LGNvbXB1dGVkOntmaWx0ZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuY29sdW1uJiZ0aGlzLmNvbHVtbi5maWx0ZXJzfSxmaWx0ZXJWYWx1ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuKHRoaXMuY29sdW1uLmZpbHRlcmVkVmFsdWV8fFtdKVswXX0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuZmlsdGVyZWRWYWx1ZSYmKGU/dGhpcy5maWx0ZXJlZFZhbHVlLnNwbGljZSgwLDEsZSk6dGhpcy5maWx0ZXJlZFZhbHVlLnNwbGljZSgwLDEpKX19LGZpbHRlcmVkVmFsdWU6e2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmNvbHVtbj90aGlzLmNvbHVtbi5maWx0ZXJlZFZhbHVlfHxbXTpbXX0sc2V0OmZ1bmN0aW9uKGUpe3RoaXMuY29sdW1uJiYodGhpcy5jb2x1bW4uZmlsdGVyZWRWYWx1ZT1lKX19LG11bHRpcGxlOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuY29sdW1ufHx0aGlzLmNvbHVtbi5maWx0ZXJNdWx0aXBsZX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMucG9wcGVyRWxtPXRoaXMuJGVsLHRoaXMucmVmZXJlbmNlRWxtPXRoaXMuY2VsbCx0aGlzLnRhYmxlLiRyZWZzLmJvZHlXcmFwcGVyLmFkZEV2ZW50TGlzdGVuZXIoInNjcm9sbCIsZnVuY3Rpb24oKXtlLnVwZGF0ZVBvcHBlcigpfSksdGhpcy4kd2F0Y2goInNob3dQb3BwZXIiLGZ1bmN0aW9uKHQpe2UuY29sdW1uJiYoZS5jb2x1bW4uZmlsdGVyT3BlbmVkPXQpLHQ/Y1siZGVmYXVsdCJdLm9wZW4oZSk6Y1siZGVmYXVsdCJdLmNsb3NlKGUpfSl9fX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwO3ZhciBuPVtdO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixmdW5jdGlvbihlKXtuLmZvckVhY2goZnVuY3Rpb24odCl7dmFyIG49ZS50YXJnZXQ7dCYmdC4kZWwmJihuPT09dC4kZWx8fHQuJGVsLmNvbnRhaW5zKG4pfHx0LmhhbmRsZU91dHNpZGVDbGljayYmdC5oYW5kbGVPdXRzaWRlQ2xpY2soZSkpfSl9KSx0WyJkZWZhdWx0Il09e29wZW46ZnVuY3Rpb24oZSl7ZSYmbi5wdXNoKGUpfSxjbG9zZTpmdW5jdGlvbihlKXt2YXIgdD1uLmluZGV4T2YoZSk7dCE9PS0xJiZuLnNwbGljZShlLDEpfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJ0cmFuc2l0aW9uIix7YXR0cnM6e25hbWU6Im1kLWZhZGUtYm90dG9tIn19LFtlLm11bHRpcGxlP2UuX2goImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUuc2hvd1BvcHBlcixleHByZXNzaW9uOiJzaG93UG9wcGVyIn1dLHN0YXRpY0NsYXNzOiJlbC10YWJsZS1maWx0ZXIifSxbZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXRhYmxlLWZpbHRlcl9fY29udGVudCJ9LFtlLl9oKCJlbC1jaGVja2JveC1ncm91cCIse2RpcmVjdGl2ZXM6W3tuYW1lOiJtb2RlbCIscmF3TmFtZToidi1tb2RlbCIsdmFsdWU6ZS5maWx0ZXJlZFZhbHVlLGV4cHJlc3Npb246ImZpbHRlcmVkVmFsdWUifV0sc3RhdGljQ2xhc3M6ImVsLXRhYmxlLWZpbHRlcl9fY2hlY2tib3gtZ3JvdXAiLGRvbVByb3BzOnt2YWx1ZTplLmZpbHRlcmVkVmFsdWV9LG9uOntpbnB1dDpmdW5jdGlvbih0KXtlLmZpbHRlcmVkVmFsdWU9dH19fSxbZS5fbChlLmZpbHRlcnMsZnVuY3Rpb24odCl7cmV0dXJuIGUuX2goImVsLWNoZWNrYm94Iix7YXR0cnM6e2xhYmVsOnQudmFsdWV9fSxbZS5fcyh0LnRleHQpXSl9KV0pXSksZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXRhYmxlLWZpbHRlcl9fYm90dG9tIn0sW2UuX2goImJ1dHRvbiIseyJjbGFzcyI6eyJpcy1kaXNhYmxlZCI6MD09PWUuZmlsdGVyZWRWYWx1ZS5sZW5ndGh9LGF0dHJzOntkaXNhYmxlZDowPT09ZS5maWx0ZXJlZFZhbHVlLmxlbmd0aH0sb246e2NsaWNrOmUuaGFuZGxlQ29uZmlybX19LFtlLl9zKGUudCgiZWwudGFibGUuY29uZmlybUZpbHRlciIpKV0pLGUuX2goImJ1dHRvbiIse29uOntjbGljazplLmhhbmRsZVJlc2V0fX0sW2UuX3MoZS50KCJlbC50YWJsZS5yZXNldEZpbHRlciIpKV0pXSldKTplLl9oKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnNob3dQb3BwZXIsZXhwcmVzc2lvbjoic2hvd1BvcHBlciJ9XSxzdGF0aWNDbGFzczoiZWwtdGFibGUtZmlsdGVyIn0sW2UuX2goInVsIix7c3RhdGljQ2xhc3M6ImVsLXRhYmxlLWZpbHRlcl9fbGlzdCJ9LFtlLl9oKCJsaSIse3N0YXRpY0NsYXNzOiJlbC10YWJsZS1maWx0ZXJfX2xpc3QtaXRlbSIsImNsYXNzIjp7ImlzLWFjdGl2ZSI6IWUuZmlsdGVyVmFsdWV9LG9uOntjbGljazpmdW5jdGlvbih0KXtlLmhhbmRsZVNlbGVjdChudWxsKX19fSxbZS5fcyhlLnQoImVsLnRhYmxlLmNsZWFyRmlsdGVyIikpXSksZS5fbChlLmZpbHRlcnMsZnVuY3Rpb24odCl7cmV0dXJuIGUuX2goImxpIix7c3RhdGljQ2xhc3M6ImVsLXRhYmxlLWZpbHRlcl9fbGlzdC1pdGVtIiwiY2xhc3MiOnsiaXMtYWN0aXZlIjplLmlzQWN0aXZlKHQpfSxhdHRyczp7bGFiZWw6dC52YWx1ZX0sb246e2NsaWNrOmZ1bmN0aW9uKG4pe2UuaGFuZGxlU2VsZWN0KHQudmFsdWUpfX19LFtlLl9zKHQudGV4dCldKX0pXSldKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXRhYmxlIiwiY2xhc3MiOnsiZWwtdGFibGUtLWZpdCI6ZS5maXQsImVsLXRhYmxlLS1zdHJpcGVkIjplLnN0cmlwZSwiZWwtdGFibGUtLWJvcmRlciI6ZS5ib3JkZXIsImVsLXRhYmxlLS1lbmFibGUtcm93LWhvdmVyIjohZS5zdG9yZS5zdGF0ZXMuaXNDb21wbGV4LCJlbC10YWJsZS0tZW5hYmxlLXJvdy10cmFuc2l0aW9uIjohMH0sb246e21vdXNlbGVhdmU6ZnVuY3Rpb24odCl7ZS5oYW5kbGVNb3VzZUxlYXZlKHQpfX19LFtlLl9oKCJkaXYiLHtyZWY6ImhpZGRlbkNvbHVtbnMiLHN0YXRpY0NsYXNzOiJoaWRkZW4tY29sdW1ucyJ9LFtlLl90KCJkZWZhdWx0IildKSxlLnNob3dIZWFkZXI/ZS5faCgiZGl2Iix7cmVmOiJoZWFkZXJXcmFwcGVyIixzdGF0aWNDbGFzczoiZWwtdGFibGVfX2hlYWRlci13cmFwcGVyIn0sW2UuX2goInRhYmxlLWhlYWRlciIse3N0eWxlOnt3aWR0aDplLmxheW91dC5ib2R5V2lkdGg/ZS5sYXlvdXQuYm9keVdpZHRoKyJweCI6IiJ9LGF0dHJzOntzdG9yZTplLnN0b3JlLGxheW91dDplLmxheW91dCxib3JkZXI6ZS5ib3JkZXJ9fSldKTplLl9lKCksZS5faCgiZGl2Iix7cmVmOiJib2R5V3JhcHBlciIsc3RhdGljQ2xhc3M6ImVsLXRhYmxlX19ib2R5LXdyYXBwZXIiLHN0eWxlOntoZWlnaHQ6ZS5sYXlvdXQuYm9keUhlaWdodD9lLmxheW91dC5ib2R5SGVpZ2h0KyJweCI6IiJ9fSxbZS5faCgidGFibGUtYm9keSIse3N0eWxlOnt3aWR0aDplLmxheW91dC5ib2R5V2lkdGg/ZS5sYXlvdXQuYm9keVdpZHRoLShlLmxheW91dC5zY3JvbGxZP2UubGF5b3V0Lmd1dHRlcldpZHRoOjApKyJweCI6IiJ9LGF0dHJzOntjb250ZXh0OmUuY29udGV4dCxzdG9yZTplLnN0b3JlLGxheW91dDplLmxheW91dCwicm93LWNsYXNzLW5hbWUiOmUucm93Q2xhc3NOYW1lLCJyb3ctc3R5bGUiOmUucm93U3R5bGUsaGlnaGxpZ2h0OmUuaGlnaGxpZ2h0Q3VycmVudFJvd319KSxlLmRhdGEmJjAhPT1lLmRhdGEubGVuZ3RoP2UuX2UoKTplLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtdGFibGVfX2VtcHR5LWJsb2NrIn0sW2UuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtdGFibGVfX2VtcHR5LXRleHQifSxbZS5fcyhlLmVtcHR5VGV4dCldKV0pXSksZS5maXhlZENvbHVtbnMubGVuZ3RoPjA/ZS5faCgiZGl2Iix7cmVmOiJmaXhlZFdyYXBwZXIiLHN0YXRpY0NsYXNzOiJlbC10YWJsZV9fZml4ZWQiLHN0eWxlOnt3aWR0aDplLmxheW91dC5maXhlZFdpZHRoP2UubGF5b3V0LmZpeGVkV2lkdGgrInB4IjoiIixoZWlnaHQ6ZS5sYXlvdXQudmlld3BvcnRIZWlnaHQ/ZS5sYXlvdXQudmlld3BvcnRIZWlnaHQrInB4IjoiIn19LFtlLnNob3dIZWFkZXI/ZS5faCgiZGl2Iix7cmVmOiJmaXhlZEhlYWRlcldyYXBwZXIiLHN0YXRpY0NsYXNzOiJlbC10YWJsZV9fZml4ZWQtaGVhZGVyLXdyYXBwZXIifSxbZS5faCgidGFibGUtaGVhZGVyIix7c3R5bGU6e3dpZHRoOmUubGF5b3V0LmZpeGVkV2lkdGg/ZS5sYXlvdXQuZml4ZWRXaWR0aCsicHgiOiIifSxhdHRyczp7Zml4ZWQ6ImxlZnQiLGJvcmRlcjplLmJvcmRlcixzdG9yZTplLnN0b3JlLGxheW91dDplLmxheW91dH19KV0pOmUuX2UoKSxlLl9oKCJkaXYiLHtyZWY6ImZpeGVkQm9keVdyYXBwZXIiLHN0YXRpY0NsYXNzOiJlbC10YWJsZV9fZml4ZWQtYm9keS13cmFwcGVyIixzdHlsZTp7dG9wOmUubGF5b3V0LmhlYWRlckhlaWdodCsicHgiLGhlaWdodDplLmxheW91dC5maXhlZEJvZHlIZWlnaHQ/ZS5sYXlvdXQuZml4ZWRCb2R5SGVpZ2h0KyJweCI6IiJ9fSxbZS5faCgidGFibGUtYm9keSIse3N0eWxlOnt3aWR0aDplLmxheW91dC5maXhlZFdpZHRoP2UubGF5b3V0LmZpeGVkV2lkdGgrInB4IjoiIn0sYXR0cnM6e2ZpeGVkOiJsZWZ0IixzdG9yZTplLnN0b3JlLGxheW91dDplLmxheW91dCxoaWdobGlnaHQ6ZS5oaWdobGlnaHRDdXJyZW50Um93LCJyb3ctY2xhc3MtbmFtZSI6ZS5yb3dDbGFzc05hbWUsInJvdy1zdHlsZSI6ZS5yb3dTdHlsZX19KV0pXSk6ZS5fZSgpLGUucmlnaHRGaXhlZENvbHVtbnMubGVuZ3RoPjA/ZS5faCgiZGl2Iix7cmVmOiJyaWdodEZpeGVkV3JhcHBlciIsc3RhdGljQ2xhc3M6ImVsLXRhYmxlX19maXhlZC1yaWdodCIsc3R5bGU6e3dpZHRoOmUubGF5b3V0LnJpZ2h0Rml4ZWRXaWR0aD9lLmxheW91dC5yaWdodEZpeGVkV2lkdGgrInB4IjoiIixoZWlnaHQ6ZS5sYXlvdXQudmlld3BvcnRIZWlnaHQ/ZS5sYXlvdXQudmlld3BvcnRIZWlnaHQrInB4IjoiIixyaWdodDplLmxheW91dC5zY3JvbGxZP2UubGF5b3V0Lmd1dHRlcldpZHRoKyJweCI6IiJ9fSxbZS5zaG93SGVhZGVyP2UuX2goImRpdiIse3JlZjoicmlnaHRGaXhlZEhlYWRlcldyYXBwZXIiLHN0YXRpY0NsYXNzOiJlbC10YWJsZV9fZml4ZWQtaGVhZGVyLXdyYXBwZXIifSxbZS5faCgidGFibGUtaGVhZGVyIix7c3R5bGU6e3dpZHRoOmUubGF5b3V0LnJpZ2h0Rml4ZWRXaWR0aD9lLmxheW91dC5yaWdodEZpeGVkV2lkdGgrInB4IjoiIn0sYXR0cnM6e2ZpeGVkOiJyaWdodCIsYm9yZGVyOmUuYm9yZGVyLHN0b3JlOmUuc3RvcmUsbGF5b3V0OmUubGF5b3V0fX0pXSk6ZS5fZSgpLGUuX2goImRpdiIse3JlZjoicmlnaHRGaXhlZEJvZHlXcmFwcGVyIixzdGF0aWNDbGFzczoiZWwtdGFibGVfX2ZpeGVkLWJvZHktd3JhcHBlciIsc3R5bGU6e3RvcDplLmxheW91dC5oZWFkZXJIZWlnaHQrInB4IixoZWlnaHQ6ZS5sYXlvdXQuZml4ZWRCb2R5SGVpZ2h0P2UubGF5b3V0LmZpeGVkQm9keUhlaWdodCsicHgiOiIifX0sW2UuX2goInRhYmxlLWJvZHkiLHtzdHlsZTp7d2lkdGg6ZS5sYXlvdXQucmlnaHRGaXhlZFdpZHRoP2UubGF5b3V0LnJpZ2h0Rml4ZWRXaWR0aCsicHgiOiIifSxhdHRyczp7Zml4ZWQ6InJpZ2h0IixzdG9yZTplLnN0b3JlLGxheW91dDplLmxheW91dCwicm93LWNsYXNzLW5hbWUiOmUucm93Q2xhc3NOYW1lLCJyb3ctc3R5bGUiOmUucm93U3R5bGUsaGlnaGxpZ2h0OmUuaGlnaGxpZ2h0Q3VycmVudFJvd319KV0pXSk6ZS5fZSgpLGUuX2goImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUucmVzaXplUHJveHlWaXNpYmxlLGV4cHJlc3Npb246InJlc2l6ZVByb3h5VmlzaWJsZSJ9XSxyZWY6InJlc2l6ZVByb3h5IixzdGF0aWNDbGFzczoiZWwtdGFibGVfX2NvbHVtbi1yZXNpemUtcHJveHkifSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDEzNCksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9big5Niksbz1pKHMpLGE9bigzMSkscj1pKGEpLGw9bigxMzUpLHU9aShsKSxkPW4oMTI0KSxjPTEsZj17ImRlZmF1bHQiOntvcmRlcjoiIn0sc2VsZWN0aW9uOnt3aWR0aDo0OCxtaW5XaWR0aDo0OCxyZWFsV2lkdGg6NDgsb3JkZXI6IiJ9LGluZGV4Ont3aWR0aDo0OCxtaW5XaWR0aDo0OCxyZWFsV2lkdGg6NDgsb3JkZXI6IiJ9fSxwPXtzZWxlY3Rpb246e3JlbmRlckhlYWRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZSgiZWwtY2hlY2tib3giLHtuYXRpdmVPbjp7Y2xpY2s6dGhpcy50b2dnbGVBbGxTZWxlY3Rpb259LGRvbVByb3BzOnt2YWx1ZTp0aGlzLmlzQWxsU2VsZWN0ZWR9fSxbXSl9LHJlbmRlckNlbGw6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnJvdyxpPXQuY29sdW1uLHM9dC5zdG9yZSxvPXQuJGluZGV4O3JldHVybiBlKCJlbC1jaGVja2JveCIse2RvbVByb3BzOnt2YWx1ZTpzLmlzU2VsZWN0ZWQobil9LGF0dHJzOntkaXNhYmxlZDohIWkuc2VsZWN0YWJsZSYmIWkuc2VsZWN0YWJsZS5jYWxsKG51bGwsbixvKX0sb246e2lucHV0OmZ1bmN0aW9uKCl7cy5jb21taXQoInJvd1NlbGVjdGVkQ2hhbmdlZCIsbil9fX0sW10pfSxzb3J0YWJsZTohMSxyZXNpemFibGU6ITF9LGluZGV4OntyZW5kZXJIZWFkZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmNvbHVtbjtyZXR1cm4gbi5sYWJlbHx8IiMifSxyZW5kZXJDZWxsOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC4kaW5kZXg7cmV0dXJuIGUoImRpdiIsbnVsbCxbbisxXSl9LHNvcnRhYmxlOiExfX0sbT1mdW5jdGlvbihlLHQpe3ZhciBuPXt9OygwLHVbImRlZmF1bHQiXSkobixmW2V8fCJkZWZhdWx0Il0pO2Zvcih2YXIgaSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoaSkpe3ZhciBzPXRbaV07InVuZGVmaW5lZCIhPXR5cGVvZiBzJiYobltpXT1zKX1yZXR1cm4gbi5taW5XaWR0aHx8KG4ubWluV2lkdGg9ODApLG4ucmVhbFdpZHRoPW4ud2lkdGh8fG4ubWluV2lkdGgsbn0sZz1mdW5jdGlvbihlLHQpe3ZhciBuPXQucm93LGk9dC5jb2x1bW4scz1pLnByb3BlcnR5O3JldHVybiBpJiZpLmZvcm1hdHRlcj9pLmZvcm1hdHRlcihuLGkpOnMmJnMuaW5kZXhPZigiLiIpPT09LTE/bltzXTooMCxkLmdldFZhbHVlQnlQYXRoKShuLHMpfTt0WyJkZWZhdWx0Il09e25hbWU6ImVsLXRhYmxlLWNvbHVtbiIscHJvcHM6e3R5cGU6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiZGVmYXVsdCJ9LGxhYmVsOlN0cmluZyxjbGFzc05hbWU6U3RyaW5nLHByb3BlcnR5OlN0cmluZyxwcm9wOlN0cmluZyx3aWR0aDp7fSxtaW5XaWR0aDp7fSxyZW5kZXJIZWFkZXI6RnVuY3Rpb24sc29ydGFibGU6e3R5cGU6W0Jvb2xlYW4sU3RyaW5nXSwiZGVmYXVsdCI6ITF9LHNvcnRNZXRob2Q6RnVuY3Rpb24scmVzaXphYmxlOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiEwfSxjb250ZXh0Ont9LGFsaWduOlN0cmluZyxzaG93VG9vbHRpcFdoZW5PdmVyZmxvdzpCb29sZWFuLHNob3dPdmVyZmxvd1Rvb2x0aXA6Qm9vbGVhbixmaXhlZDpbQm9vbGVhbixTdHJpbmddLGZvcm1hdHRlcjpGdW5jdGlvbixzZWxlY3RhYmxlOkZ1bmN0aW9uLHJlc2VydmVTZWxlY3Rpb246Qm9vbGVhbixmaWx0ZXJNZXRob2Q6RnVuY3Rpb24sZmlsdGVyczpBcnJheSxmaWx0ZXJNdWx0aXBsZTp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMH19LHJlbmRlcjpmdW5jdGlvbigpe3JldHVybiBoKCJkaXYiLG51bGwsW3RoaXMuX3QoImRlZmF1bHQiKV0pfSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2lzU3ViQ29sdW1uOiExLGNvbHVtbnM6W119fSxiZWZvcmVDcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLnJvdz17fSx0aGlzLmNvbHVtbj17fSx0aGlzLiRpbmRleD0wfSxjb21wb25lbnRzOntFbENoZWNrYm94Om9bImRlZmF1bHQiXSxFbFRhZzpyWyJkZWZhdWx0Il19LGNvbXB1dGVkOntvd25lcjpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLiRwYXJlbnQ7ZSYmIWUudGFibGVJZDspZT1lLiRwYXJlbnQ7cmV0dXJuIGV9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmN1c3RvbVJlbmRlcj10aGlzLiRvcHRpb25zLnJlbmRlcix0aGlzLiRvcHRpb25zLnJlbmRlcj1mdW5jdGlvbih0KXtyZXR1cm4gdCgiZGl2IixudWxsLFtlLl90KCJkZWZhdWx0IildKX07dmFyIHQ9dGhpcy5jb2x1bW5JZD0odGhpcy4kcGFyZW50LnRhYmxlSWR8fHRoaXMuJHBhcmVudC5jb2x1bW5JZCsiXyIpKyJjb2x1bW5fIitjKyssbj10aGlzLiRwYXJlbnQsaT10aGlzLm93bmVyO3RoaXMuaXNTdWJDb2x1bW49aSE9PW47dmFyIHM9dGhpcy50eXBlLG89dGhpcy53aWR0aDt2b2lkIDAhPT1vJiYobz1wYXJzZUludChvLDEwKSxpc05hTihvKSYmKG89bnVsbCkpO3ZhciBhPXRoaXMubWluV2lkdGg7dm9pZCAwIT09YSYmKGE9cGFyc2VJbnQoYSwxMCksaXNOYU4oYSkmJihhPTgwKSk7dmFyIHI9ITEsbD1tKHMse2lkOnQsbGFiZWw6dGhpcy5sYWJlbCxjbGFzc05hbWU6dGhpcy5jbGFzc05hbWUscHJvcGVydHk6dGhpcy5wcm9wfHx0aGlzLnByb3BlcnR5LHR5cGU6cyxyZW5kZXJDZWxsOm51bGwscmVuZGVySGVhZGVyOnRoaXMucmVuZGVySGVhZGVyLG1pbldpZHRoOmEsd2lkdGg6byxpc0NvbHVtbkdyb3VwOnIsY29udGV4dDp0aGlzLmNvbnRleHQsYWxpZ246dGhpcy5hbGlnbj8iaXMtIit0aGlzLmFsaWduOm51bGwsc29ydGFibGU6dGhpcy5zb3J0YWJsZSxzb3J0TWV0aG9kOnRoaXMuc29ydE1ldGhvZCxyZXNpemFibGU6dGhpcy5yZXNpemFibGUsc2hvd092ZXJmbG93VG9vbHRpcDp0aGlzLnNob3dPdmVyZmxvd1Rvb2x0aXB8fHRoaXMuc2hvd1Rvb2x0aXBXaGVuT3ZlcmZsb3csZm9ybWF0dGVyOnRoaXMuZm9ybWF0dGVyLHNlbGVjdGFibGU6dGhpcy5zZWxlY3RhYmxlLHJlc2VydmVTZWxlY3Rpb246dGhpcy5yZXNlcnZlU2VsZWN0aW9uLGZpeGVkOnRoaXMuZml4ZWQsZmlsdGVyTWV0aG9kOnRoaXMuZmlsdGVyTWV0aG9kLGZpbHRlcnM6dGhpcy5maWx0ZXJzLGZpbHRlcmFibGU6dGhpcy5maWx0ZXJzfHx0aGlzLmZpbHRlck1ldGhvZCxmaWx0ZXJNdWx0aXBsZTp0aGlzLmZpbHRlck11bHRpcGxlLGZpbHRlck9wZW5lZDohMSxmaWx0ZXJlZFZhbHVlOltdfSk7KDAsdVsiZGVmYXVsdCJdKShsLHBbc118fHt9KTt2YXIgZD1sLnJlbmRlckNlbGwsZj10aGlzO2wucmVuZGVyQ2VsbD1mdW5jdGlvbihlLHQpe3JldHVybiBmLiR2bm9kZS5kYXRhLmlubGluZVRlbXBsYXRlJiYoZD1mdW5jdGlvbigpe2lmKHQuX3NlbGY9Zi5jb250ZXh0fHx0Ll9zZWxmLCJbb2JqZWN0IE9iamVjdF0iPT09T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQuX3NlbGYpKWZvcih2YXIgZSBpbiB0Ll9zZWxmKXQuaGFzT3duUHJvcGVydHkoZSl8fCh0W2VdPXQuX3NlbGZbZV0pO3JldHVybiB0Ll9zdGF0aWNUcmVlcz1mLl9zdGF0aWNUcmVlcyx0LiRvcHRpb25zLnN0YXRpY1JlbmRlckZucz1mLiRvcHRpb25zLnN0YXRpY1JlbmRlckZucyxmLmN1c3RvbVJlbmRlci5jYWxsKHQpfSksZHx8KGQ9ZyksZi5zaG93T3ZlcmZsb3dUb29sdGlwfHxmLnNob3dUb29sdGlwV2hlbk92ZXJmbG93P2UoImVsLXRvb2x0aXAiLHthdHRyczp7ZWZmZWN0OnRoaXMuZWZmZWN0LHBsYWNlbWVudDoidG9wIixkaXNhYmxlZDp0aGlzLnRvb2x0aXBEaXNhYmxlZH19LFtlKCJkaXYiLHsiY2xhc3MiOiJjZWxsIn0sW2QoZSx0KV0pLGUoInNwYW4iLHtzbG90OiJjb250ZW50In0sW2QoZSx0KV0pXSk6ZSgiZGl2Iix7ImNsYXNzIjoiY2VsbCJ9LFtkKGUsdCldKX0sdGhpcy5jb2x1bW5Db25maWc9bH0sZGVzdHJveWVkOmZ1bmN0aW9uKCl7dGhpcy4kcGFyZW50JiZ0aGlzLm93bmVyLnN0b3JlLmNvbW1pdCgicmVtb3ZlQ29sdW1uIix0aGlzLmNvbHVtbkNvbmZpZyl9LHdhdGNoOntsYWJlbDpmdW5jdGlvbihlKXt0aGlzLmNvbHVtbkNvbmZpZyYmKHRoaXMuY29sdW1uQ29uZmlnLmxhYmVsPWUpfSxwcm9wOmZ1bmN0aW9uKGUpe3RoaXMuY29sdW1uQ29uZmlnJiYodGhpcy5jb2x1bW5Db25maWcucHJvcGVydHk9ZSl9LHByb3BlcnR5OmZ1bmN0aW9uKGUpe3RoaXMuY29sdW1uQ29uZmlnJiYodGhpcy5jb2x1bW5Db25maWcucHJvcGVydHk9ZSl9LGZpbHRlcnM6ZnVuY3Rpb24oZSl7dGhpcy5jb2x1bW5Db25maWcmJih0aGlzLmNvbHVtbkNvbmZpZy5maWx0ZXJzPWUpfSxmaWx0ZXJNdWx0aXBsZTpmdW5jdGlvbihlKXt0aGlzLmNvbHVtbkNvbmZpZyYmKHRoaXMuY29sdW1uQ29uZmlnLmZpbHRlck11bHRpcGxlPWUpfSxhbGlnbjpmdW5jdGlvbihlKXt0aGlzLmNvbHVtbkNvbmZpZyYmKHRoaXMuY29sdW1uQ29uZmlnLmFsaWduPWU/ImlzLSIrZTpudWxsKX0sd2lkdGg6ZnVuY3Rpb24oZSl7dGhpcy5jb2x1bW5Db25maWcmJih0aGlzLmNvbHVtbkNvbmZpZy53aWR0aD1lLHRoaXMub3duZXIuc3RvcmUuc2NoZWR1bGVMYXlvdXQoKSl9LG1pbldpZHRoOmZ1bmN0aW9uKGUpe3RoaXMuY29sdW1uQ29uZmlnJiYodGhpcy5jb2x1bW5Db25maWcubWluV2lkdGg9ZSx0aGlzLm93bmVyLnN0b3JlLnNjaGVkdWxlTGF5b3V0KCkpfSxmaXhlZDpmdW5jdGlvbihlKXt0aGlzLmNvbHVtbkNvbmZpZyYmKHRoaXMuY29sdW1uQ29uZmlnLmZpeGVkPWUsdGhpcy5vd25lci5zdG9yZS5zY2hlZHVsZUxheW91dCgpKX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm93bmVyLHQ9dGhpcy4kcGFyZW50LG49dm9pZCAwO249dGhpcy5pc1N1YkNvbHVtbj9bXS5pbmRleE9mLmNhbGwodC4kZWwuY2hpbGRyZW4sdGhpcy4kZWwpOltdLmluZGV4T2YuY2FsbCh0LiRyZWZzLmhpZGRlbkNvbHVtbnMuY2hpbGRyZW4sdGhpcy4kZWwpLGUuc3RvcmUuY29tbWl0KCJpbnNlcnRDb2x1bW4iLHRoaXMuY29sdW1uQ29uZmlnLG4sdGhpcy5pc1N1YkNvbHVtbj90LmNvbHVtbkNvbmZpZzpudWxsKX19fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdFsiZGVmYXVsdCJdPWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xLG49YXJndW1lbnRzLmxlbmd0aDt0PG47dCsrKXt2YXIgaT1hcmd1bWVudHNbdF18fHt9O2Zvcih2YXIgcyBpbiBpKWlmKGkuaGFzT3duUHJvcGVydHkocykpe3ZhciBvPWlbc107dm9pZCAwIT09byYmKGVbc109byl9fXJldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDEzNyksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxMzgpLG89aShzKSxhPW4oMTQzKSxyPWkoYSksbD1uKDE2MSksdT1pKGwpLGQ9ZnVuY3Rpb24oZSl7cmV0dXJuImRhdGVyYW5nZSI9PT1lfHwiZGF0ZXRpbWVyYW5nZSI9PT1lP3VbImRlZmF1bHQiXTpyWyJkZWZhdWx0Il19O3RbImRlZmF1bHQiXT17bWl4aW5zOltvWyJkZWZhdWx0Il1dLG5hbWU6IkVsRGF0ZVBpY2tlciIscHJvcHM6e3R5cGU6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiZGF0ZSJ9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5wYW5lbD1kKHRoaXMudHlwZSl9fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDEzOSk7dmFyIG89bigxNDIpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTQpLG89aShzKSxhPW4oMzcpLHI9aShhKSxsPW4oMTQwKSx1PW4oMjQpLGQ9aSh1KSxjPW4oMTApLGY9aShjKSxoPXtwcm9wczp7YXBwZW5kVG9Cb2R5OmRbImRlZmF1bHQiXS5wcm9wcy5hcHBlbmRUb0JvZHksb2Zmc2V0OmRbImRlZmF1bHQiXS5wcm9wcy5vZmZzZXQsYm91bmRhcmllc1BhZGRpbmc6ZFsiZGVmYXVsdCJdLnByb3BzLmJvdW5kYXJpZXNQYWRkaW5nfSxtZXRob2RzOmRbImRlZmF1bHQiXS5tZXRob2RzLGRhdGE6ZFsiZGVmYXVsdCJdLmRhdGEsYmVmb3JlRGVzdHJveTpkWyJkZWZhdWx0Il0uYmVmb3JlRGVzdHJveX0scD0iIC0gIixtPXtkYXRlOiJ5eXl5LU1NLWRkIixtb250aDoieXl5eS1NTSIsZGF0ZXRpbWU6Inl5eXktTU0tZGQgSEg6bW06c3MiLHRpbWU6IkhIOm1tOnNzIix0aW1lcmFuZ2U6IkhIOm1tOnNzIixkYXRlcmFuZ2U6Inl5eXktTU0tZGQiLGRhdGV0aW1lcmFuZ2U6Inl5eXktTU0tZGQgSEg6bW06c3MiLHllYXI6Inl5eXkifSxnPVsiZGF0ZSIsImRhdGV0aW1lIiwidGltZSIsInRpbWUtc2VsZWN0Iiwid2VlayIsIm1vbnRoIiwieWVhciIsImRhdGVyYW5nZSIsInRpbWVyYW5nZSIsImRhdGV0aW1lcmFuZ2UiXSx2PWZ1bmN0aW9uKGUsdCl7cmV0dXJuKDAsbC5mb3JtYXREYXRlKShlLHQpfSx5PWZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9ZS5zcGxpdCgiOiIpLGUubGVuZ3RoPjEmJihlPWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKC0yKX0pKSxlPWUuam9pbigiOiIpLCgwLGwucGFyc2VEYXRlKShlLHQpfSxfPWZ1bmN0aW9uKGUsdCl7aWYoQXJyYXkuaXNBcnJheShlKSYmMj09PWUubGVuZ3RoKXt2YXIgbj1lWzBdLGk9ZVsxXTtpZihuJiZpKXJldHVybigwLGwuZm9ybWF0RGF0ZSkobix0KStwKygwLGwuZm9ybWF0RGF0ZSkoaSx0KX1yZXR1cm4iIn0sYj1mdW5jdGlvbihlLHQpe3ZhciBuPWUuc3BsaXQocCk7aWYoMj09PW4ubGVuZ3RoKXt2YXIgaT1uWzBdLnNwbGl0KCI6IikubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnNsaWNlKC0yKX0pLmpvaW4oIjoiKSxzPW5bMV0uc3BsaXQoIjoiKS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuc2xpY2UoLTIpfSkuam9pbigiOiIpO3JldHVyblsoMCxsLnBhcnNlRGF0ZSkoaSx0KSwoMCxsLnBhcnNlRGF0ZSkocyx0KV19cmV0dXJuW119LEM9eyJkZWZhdWx0Ijp7Zm9ybWF0dGVyOmZ1bmN0aW9uKGUpe3JldHVybiBlPyIiK2U6IiJ9LHBhcnNlcjpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwPT09ZXx8IiI9PT1lP251bGw6ZX19LHdlZWs6e2Zvcm1hdHRlcjpmdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgRGF0ZSl7dmFyIHQ9KDAsbC5nZXRXZWVrTnVtYmVyKShlKTtyZXR1cm4gZS5nZXRGdWxsWWVhcigpKyJ3IisodD45P3Q6IjAiK3QpfXJldHVybiBlfSxwYXJzZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9KGV8fCIiKS5zcGxpdCgidyIpO2lmKDI9PT10Lmxlbmd0aCl7dmFyIG49TnVtYmVyKHRbMF0pLGk9TnVtYmVyKHRbMV0pO2lmKCFpc05hTihuKSYmIWlzTmFOKGkpJiZpPDU0KXJldHVybiBlfXJldHVybiBudWxsfX0sZGF0ZTp7Zm9ybWF0dGVyOnYscGFyc2VyOnl9LGRhdGV0aW1lOntmb3JtYXR0ZXI6dixwYXJzZXI6eX0sZGF0ZXJhbmdlOntmb3JtYXR0ZXI6XyxwYXJzZXI6Yn0sZGF0ZXRpbWVyYW5nZTp7Zm9ybWF0dGVyOl8scGFyc2VyOmJ9LHRpbWVyYW5nZTp7Zm9ybWF0dGVyOl8scGFyc2VyOmJ9LHRpbWU6e2Zvcm1hdHRlcjp2LHBhcnNlcjp5fSxtb250aDp7Zm9ybWF0dGVyOnYscGFyc2VyOnl9LHllYXI6e2Zvcm1hdHRlcjp2LHBhcnNlcjp5fSxudW1iZXI6e2Zvcm1hdHRlcjpmdW5jdGlvbihlKXtyZXR1cm4gZT8iIitlOiIifSxwYXJzZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9TnVtYmVyKGUpO3JldHVybiBpc05hTihlKT9udWxsOnR9fX0sdz17bGVmdDoiYm90dG9tLXN0YXJ0IixjZW50ZXI6ImJvdHRvbS1jZW50ZXIiLHJpZ2h0OiJib3R0b20tZW5kIn07dFsiZGVmYXVsdCJdPXttaXhpbnM6W2ZbImRlZmF1bHQiXSxoXSxwcm9wczp7Zm9ybWF0OlN0cmluZyxyZWFkb25seTpCb29sZWFuLHBsYWNlaG9sZGVyOlN0cmluZyxkaXNhYmxlZDpCb29sZWFuLGVkaXRhYmxlOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiEwfSxhbGlnbjp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJsZWZ0In0sdmFsdWU6e30saGF2ZVRyaWdnZXI6e30scGlja2VyT3B0aW9uczp7fX0sZGlyZWN0aXZlczp7Q2xpY2tvdXRzaWRlOnJbImRlZmF1bHQiXX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntwaWNrZXJWaXNpYmxlOiExLHNob3dDbG9zZTohMSxpbnRlcm5hbFZhbHVlOiIifX0sd2F0Y2g6e3BpY2tlclZpc2libGU6ZnVuY3Rpb24oZSl7dGhpcy5yZWFkb25seXx8dGhpcy5kaXNhYmxlZHx8KGU/dGhpcy5zaG93UGlja2VyKCk6dGhpcy5oaWRlUGlja2VyKCkpfSxpbnRlcm5hbFZhbHVlOmZ1bmN0aW9uKGUpeyFlJiZ0aGlzLnBpY2tlciYmImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMucGlja2VyLmhhbmRsZUNsZWFyJiZ0aGlzLnBpY2tlci5oYW5kbGVDbGVhcigpLHRoaXMuZGlzcGF0Y2goIkVsRm9ybUl0ZW0iLCJlbC5mb3JtLmNoYW5nZSIpfSx2YWx1ZTp7aW1tZWRpYXRlOiEwLGhhbmRsZXI6ZnVuY3Rpb24oZSl7dGhpcy5pbnRlcm5hbFZhbHVlPWV9fX0sY29tcHV0ZWQ6e3ZhbHVlSXNFbXB0eTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuaW50ZXJuYWxWYWx1ZTtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9MCxuPWUubGVuZ3RoO3Q8bjt0KyspaWYoZVt0XSlyZXR1cm4hMX1lbHNlIGlmKGUpcmV0dXJuITE7cmV0dXJuITB9LHRyaWdnZXJDbGFzczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnR5cGUuaW5kZXhPZigidGltZSIpIT09LTE/ImVsLWljb24tdGltZSI6ImVsLWljb24tZGF0ZSJ9LHNlbGVjdGlvbk1vZGU6ZnVuY3Rpb24oKXtyZXR1cm4id2VlayI9PT10aGlzLnR5cGU/IndlZWsiOiJtb250aCI9PT10aGlzLnR5cGU/Im1vbnRoIjoieWVhciI9PT10aGlzLnR5cGU/InllYXIiOiJkYXkifSxoYXZlVHJpZ2dlcjpmdW5jdGlvbigpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2YgdGhpcy5zaG93VHJpZ2dlcj90aGlzLnNob3dUcmlnZ2VyOmcuaW5kZXhPZih0aGlzLnR5cGUpIT09LTF9LHZpc3VhbFZhbHVlOntnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmludGVybmFsVmFsdWUsdD0oQ1t0aGlzLnR5cGVdfHxDWyJkZWZhdWx0Il0pLmZvcm1hdHRlcixuPW1bdGhpcy50eXBlXTtyZXR1cm4gdChlLHRoaXMuZm9ybWF0fHxuKX0sc2V0OmZ1bmN0aW9uKGUpe2lmKGUpe3ZhciB0PXRoaXMudHlwZSxuPShDW3RdfHxDWyJkZWZhdWx0Il0pLnBhcnNlcixpPW4oZSx0aGlzLmZvcm1hdHx8bVt0XSk7cmV0dXJuIHZvaWQoaSYmKHRoaXMucGlja2VyLnZhbHVlPWkpKX10aGlzLnBpY2tlci52YWx1ZT1lfX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnM9e2JvdW5kYXJpZXNQYWRkaW5nOjAsZ3B1QWNjZWxlcmF0aW9uOiExfSx0aGlzLnBsYWNlbWVudD13W3RoaXMuYWxpZ25dfHx3LmxlZnR9LG1ldGhvZHM6e2hhbmRsZU1vdXNlRW50ZXJJY29uOmZ1bmN0aW9uKCl7dGhpcy5yZWFkb25seXx8dGhpcy5kaXNhYmxlZHx8dGhpcy52YWx1ZUlzRW1wdHl8fCh0aGlzLnNob3dDbG9zZT0hMCl9LGhhbmRsZUNsaWNrSWNvbjpmdW5jdGlvbigpe3RoaXMucmVhZG9ubHl8fHRoaXMuZGlzYWJsZWR8fCh0aGlzLnZhbHVlSXNFbXB0eT90aGlzLnBpY2tlclZpc2libGU9IXRoaXMucGlja2VyVmlzaWJsZToodGhpcy5pbnRlcm5hbFZhbHVlPSIiLHRoaXMuJGVtaXQoImlucHV0IiwiIikpKX0saGFuZGxlQ2xvc2U6ZnVuY3Rpb24oKXt0aGlzLnBpY2tlclZpc2libGU9ITF9LGhhbmRsZUZvY3VzOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy50eXBlO2cuaW5kZXhPZihlKT09PS0xfHx0aGlzLnBpY2tlclZpc2libGV8fCh0aGlzLnBpY2tlclZpc2libGU9ITApLHRoaXMuJGVtaXQoImZvY3VzIix0aGlzKX0saGFuZGxlQmx1cjpmdW5jdGlvbigpe3RoaXMuJGVtaXQoImJsdXIiLHRoaXMpLHRoaXMuZGlzcGF0Y2goIkVsRm9ybUl0ZW0iLCJlbC5mb3JtLmJsdXIiKX0saGFuZGxlS2V5ZG93bjpmdW5jdGlvbihlKXt2YXIgdD1lLmtleUNvZGUsbj1lLnRhcmdldCxpPW4uc2VsZWN0aW9uU3RhcnQscz1uLnNlbGVjdGlvbkVuZCxvPW4udmFsdWUubGVuZ3RoOzk9PT10P3RoaXMucGlja2VyVmlzaWJsZT0hMToxMz09PXQ/KHRoaXMucGlja2VyVmlzaWJsZT10aGlzLnBpY2tlci52aXNpYmxlPSExLHRoaXMudmlzdWFsVmFsdWU9bi52YWx1ZSxuLmJsdXIoKSk6Mzc9PT10PyhlLnByZXZlbnREZWZhdWx0KCkscz09PW8mJmk9PT1vP24uc2VsZWN0aW9uU3RhcnQ9by0yOmk+PTM/bi5zZWxlY3Rpb25TdGFydC09MzpuLnNlbGVjdGlvblN0YXJ0PTAsbi5zZWxlY3Rpb25FbmQ9bi5zZWxlY3Rpb25TdGFydCsyKTozOT09PXQmJihlLnByZXZlbnREZWZhdWx0KCksMD09PXMmJjA9PT1pP24uc2VsZWN0aW9uRW5kPTI6czw9by0zP24uc2VsZWN0aW9uRW5kKz0zOm4uc2VsZWN0aW9uRW5kPW8sbi5zZWxlY3Rpb25TdGFydD1uLnNlbGVjdGlvbkVuZC0yKX0saGlkZVBpY2tlcjpmdW5jdGlvbigpe3RoaXMucGlja2VyJiYodGhpcy5waWNrZXIucmVzZXRWaWV3JiZ0aGlzLnBpY2tlci5yZXNldFZpZXcoKSx0aGlzLnBpY2tlclZpc2libGU9dGhpcy5waWNrZXIudmlzaWJsZT0hMSx0aGlzLmRlc3Ryb3lQb3BwZXIoKSl9LHNob3dQaWNrZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKHRoaXMucGlja2VyKXRoaXMucGlja2VyVmlzaWJsZT10aGlzLnBpY2tlci52aXNpYmxlPSEwO2Vsc2V7dGhpcy5wYW5lbC5kZWZhdWx0VmFsdWU9dGhpcy5pbnRlcm5hbFZhbHVlLHRoaXMucGlja2VyPW5ldyBvWyJkZWZhdWx0Il0odGhpcy5wYW5lbCkuJG1vdW50KGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpKSx0aGlzLnBvcHBlckVsbT10aGlzLnBpY2tlci4kZWwsdGhpcy5waWNrZXIud2lkdGg9dGhpcy4kcmVmcy5yZWZlcmVuY2UuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgsdGhpcy5waWNrZXIuc2hvd1RpbWU9ImRhdGV0aW1lIj09PXRoaXMudHlwZXx8ImRhdGV0aW1lcmFuZ2UiPT09dGhpcy50eXBlLHRoaXMucGlja2VyLnNlbGVjdGlvbk1vZGU9dGhpcy5zZWxlY3Rpb25Nb2RlLHRoaXMuZm9ybWF0JiYodGhpcy5waWNrZXIuZm9ybWF0PXRoaXMuZm9ybWF0KTt2YXIgdD10aGlzLnBpY2tlck9wdGlvbnM7dCYmdC5zZWxlY3RhYmxlUmFuZ2UmJiFmdW5jdGlvbigpe3ZhciBuPXQuc2VsZWN0YWJsZVJhbmdlLGk9Qy5kYXRldGltZXJhbmdlLnBhcnNlcixzPW0udGltZXJhbmdlO249QXJyYXkuaXNBcnJheShuKT9uOltuXSxlLnBpY2tlci5zZWxlY3RhYmxlUmFuZ2U9bi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGkoZSxzKX0pfSgpLCJ0aW1lLXNlbGVjdCI9PT10aGlzLnR5cGUmJnQmJnRoaXMuJHdhdGNoKCJwaWNrZXJPcHRpb25zLm1pblRpbWUiLGZ1bmN0aW9uKHQpe2UucGlja2VyLm1pblRpbWU9dH0pO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJiJzZWxlY3RhYmxlUmFuZ2UiIT09biYmKHRoaXMucGlja2VyW25dPXRbbl0pO3RoaXMuJGVsLmFwcGVuZENoaWxkKHRoaXMucGlja2VyLiRlbCksdGhpcy5waWNrZXJWaXNpYmxlPXRoaXMucGlja2VyLnZpc2libGU9ITAsdGhpcy5waWNrZXIucmVzZXRWaWV3JiZ0aGlzLnBpY2tlci5yZXNldFZpZXcoKSx0aGlzLnBpY2tlci4kb24oImRvZGVzdHJveSIsdGhpcy5kb0Rlc3Ryb3kpLHRoaXMucGlja2VyLiRvbigicGljayIsZnVuY3Rpb24odCl7dmFyIG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXTtlLiRlbWl0KCJpbnB1dCIsdCksZS5waWNrZXJWaXNpYmxlPWUucGlja2VyLnZpc2libGU9bixlLnBpY2tlci5yZXNldFZpZXcmJmUucGlja2VyLnJlc2V0VmlldygpfSksdGhpcy5waWNrZXIuJG9uKCJzZWxlY3QtcmFuZ2UiLGZ1bmN0aW9uKHQsbil7c2V0VGltZW91dChmdW5jdGlvbigpe2UuJHJlZnMucmVmZXJlbmNlLnNldFNlbGVjdGlvblJhbmdlKHQsbiksZS4kcmVmcy5yZWZlcmVuY2UuZm9jdXMoKX0sMCl9KX10aGlzLnVwZGF0ZVBvcHBlcigpLHRoaXMuaW50ZXJuYWxWYWx1ZSBpbnN0YW5jZW9mIERhdGU/KHRoaXMucGlja2VyLmRhdGU9bmV3IERhdGUodGhpcy5pbnRlcm5hbFZhbHVlLmdldFRpbWUoKSksdGhpcy5waWNrZXIucmVzZXRWaWV3JiZ0aGlzLnBpY2tlci5yZXNldFZpZXcoKSk6dGhpcy5waWNrZXIudmFsdWU9dGhpcy5pbnRlcm5hbFZhbHVlLHRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCl7ZS5waWNrZXIuYWp1c3RTY3JvbGxUb3AmJmUucGlja2VyLmFqdXN0U2Nyb2xsVG9wKCl9KX19fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMCx0LmxpbWl0UmFuZ2U9dC5nZXRSYW5nZUhvdXJzPXQubmV4dE1vbnRoPXQucHJldk1vbnRoPXQuZ2V0V2Vla051bWJlcj10LmdldFN0YXJ0RGF0ZU9mTW9udGg9dC5EQVlfRFVSQVRJT049dC5nZXRGaXJzdERheU9mTW9udGg9dC5nZXREYXlDb3VudE9mTW9udGg9dC5wYXJzZURhdGU9dC5mb3JtYXREYXRlPXQudG9EYXRlPXZvaWQgMDt2YXIgcz1uKDE0MSksbz1pKHMpLGE9ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49W10saT1lO2k8PXQ7aSsrKW4ucHVzaChpKTtyZXR1cm4gbn0scj10LnRvRGF0ZT1mdW5jdGlvbihlKXtyZXR1cm4gZT1uZXcgRGF0ZShlKSxpc05hTihlLmdldFRpbWUoKSk/bnVsbDplfSxsPSh0LmZvcm1hdERhdGU9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT1yKGUpLGU/b1siZGVmYXVsdCJdLmZvcm1hdChlLHR8fCJ5eXl5LU1NLWRkIik6IiJ9LHQucGFyc2VEYXRlPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIG9bImRlZmF1bHQiXS5wYXJzZShlLHR8fCJ5eXl5LU1NLWRkIil9LHQuZ2V0RGF5Q291bnRPZk1vbnRoPWZ1bmN0aW9uKGUsdCl7cmV0dXJuIDM9PT10fHw1PT09dHx8OD09PXR8fDEwPT09dD8zMDoxPT09dD9lJTQ9PT0wJiZlJTEwMCE9PTB8fGUlNDAwPT09MD8yOToyODozMX0pLHU9KHQuZ2V0Rmlyc3REYXlPZk1vbnRoPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlKGUuZ2V0VGltZSgpKTtyZXR1cm4gdC5zZXREYXRlKDEpLHQuZ2V0RGF5KCl9LHQuREFZX0RVUkFUSU9OPTg2NGU1KTt0LmdldFN0YXJ0RGF0ZU9mTW9udGg9ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgRGF0ZShlLHQsMSksaT1uLmdldERheSgpO3JldHVybiAwPT09aT9uLnNldFRpbWUobi5nZXRUaW1lKCktNyp1KTpuLnNldFRpbWUobi5nZXRUaW1lKCktdSppKSxufSx0LmdldFdlZWtOdW1iZXI9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGUoZS5nZXRUaW1lKCkpO3Quc2V0SG91cnMoMCwwLDAsMCksdC5zZXREYXRlKHQuZ2V0RGF0ZSgpKzMtKHQuZ2V0RGF5KCkrNiklNyk7dmFyIG49bmV3IERhdGUodC5nZXRGdWxsWWVhcigpLDAsNCk7cmV0dXJuIDErTWF0aC5yb3VuZCgoKHQuZ2V0VGltZSgpLW4uZ2V0VGltZSgpKS84NjRlNS0zKyhuLmdldERheSgpKzYpJTcpLzcpfSx0LnByZXZNb250aD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEZ1bGxZZWFyKCksbj1lLmdldE1vbnRoKCksaT1lLmdldERhdGUoKSxzPTA9PT1uP3QtMTp0LG89MD09PW4/MTE6bi0xLGE9bChzLG8pO3JldHVybiBhPGkmJmUuc2V0RGF0ZShhKSxlLnNldE1vbnRoKG8pLGUuc2V0RnVsbFllYXIocyksbmV3IERhdGUoZS5nZXRUaW1lKCkpfSx0Lm5leHRNb250aD1mdW5jdGlvbihlKXt2YXIgdD1lLmdldEZ1bGxZZWFyKCksbj1lLmdldE1vbnRoKCksaT1lLmdldERhdGUoKSxzPTExPT09bj90KzE6dCxvPTExPT09bj8wOm4rMSxhPWwocyxvKTtyZXR1cm4gYTxpJiZlLnNldERhdGUoYSksZS5zZXRNb250aChvKSxlLnNldEZ1bGxZZWFyKHMpLG5ldyBEYXRlKGUuZ2V0VGltZSgpKX0sdC5nZXRSYW5nZUhvdXJzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49W107aWYoKGV8fFtdKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciB0PWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEhvdXJzKCl9KTtuPW4uY29uY2F0KGEodFswXSx0WzFdKSl9KSxuLmxlbmd0aClmb3IodmFyIGk9MDtpPDI0O2krKyl0W2ldPW4uaW5kZXhPZihpKT09PS0xO2Vsc2UgZm9yKHZhciBzPTA7czwyNDtzKyspdFtzXT0hMTtyZXR1cm4gdH0sdC5saW1pdFJhbmdlPWZ1bmN0aW9uKGUsdCl7aWYoIXR8fCF0Lmxlbmd0aClyZXR1cm4gZTt2YXIgbj10Lmxlbmd0aCxpPSJISDptbTpzcyI7ZT1vWyJkZWZhdWx0Il0ucGFyc2Uob1siZGVmYXVsdCJdLmZvcm1hdChlLGkpLGkpO2Zvcih2YXIgcz0wO3M8bjtzKyspe3ZhciBhPXRbc107aWYoZT49YVswXSYmZTw9YVsxXSlyZXR1cm4gZX12YXIgcj10WzBdWzBdLGw9dFswXVswXTtyZXR1cm4gdC5mb3JFYWNoKGZ1bmN0aW9uKGUpe2w9bmV3IERhdGUoTWF0aC5taW4oZVswXSxsKSkscj1uZXcgRGF0ZShNYXRoLm1heChlWzFdLHIpKX0pLGU8bD9sOnJ9fSxmdW5jdGlvbihlLHQsbil7dmFyIGk7IWZ1bmN0aW9uKHMpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUsdCl7Zm9yKHZhciBuPVtdLGk9MCxzPWUubGVuZ3RoO2k8cztpKyspbi5wdXNoKGVbaV0uc3Vic3RyKDAsdCkpO3JldHVybiBufWZ1bmN0aW9uIGEoZSl7cmV0dXJuIGZ1bmN0aW9uKHQsbixpKXt2YXIgcz1pW2VdLmluZGV4T2Yobi5jaGFyQXQoMCkudG9VcHBlckNhc2UoKStuLnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpKTt+cyYmKHQubW9udGg9cyl9fWZ1bmN0aW9uIHIoZSx0KXtmb3IoZT1TdHJpbmcoZSksdD10fHwyO2UubGVuZ3RoPHQ7KWU9IjAiK2U7cmV0dXJuIGV9dmFyIGw9e30sdT0vZHsxLDR9fE17MSw0fXx5eSg/Onl5KT98U3sxLDN9fERvfFpafChbSGhNc0RtXSlcMT98W2FBXXwiW14iXSoifCdbXiddKicvZyxkPS9cZFxkPy8sYz0vXGR7M30vLGY9L1xkezR9LyxoPS9bMC05XSpbJ2Etelx1MDBBMC1cdTA1RkZcdTA3MDAtXHVEN0ZGXHVGOTAwLVx1RkRDRlx1RkRGMC1cdUZGRUZdK3xbXHUwNjAwLVx1MDZGRlwvXSsoXHMqP1tcdTA2MDAtXHUwNkZGXSspezEsMn0vaSxwPWZ1bmN0aW9uKCl7fSxtPVsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxnPVsiSmFudWFyeSIsIkZlYnJ1YXJ5IiwiTWFyY2giLCJBcHJpbCIsIk1heSIsIkp1bmUiLCJKdWx5IiwiQXVndXN0IiwiU2VwdGVtYmVyIiwiT2N0b2JlciIsIk5vdmVtYmVyIiwiRGVjZW1iZXIiXSx2PW8oZywzKSx5PW8obSwzKTtsLmkxOG49e2RheU5hbWVzU2hvcnQ6eSxkYXlOYW1lczptLG1vbnRoTmFtZXNTaG9ydDp2LG1vbnRoTmFtZXM6ZyxhbVBtOlsiYW0iLCJwbSJdLERvRm46ZnVuY3Rpb24oZSl7cmV0dXJuIGUrWyJ0aCIsInN0IiwibmQiLCJyZCJdW2UlMTA+Mz8wOihlLWUlMTAhPT0xMCkqZSUxMF19fTt2YXIgXz17RDpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXREYXkoKX0sREQ6ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS5nZXREYXkoKSl9LERvOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuRG9GbihlLmdldERhdGUoKSl9LGQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0RGF0ZSgpfSxkZDpmdW5jdGlvbihlKXtyZXR1cm4gcihlLmdldERhdGUoKSl9LGRkZDpmdW5jdGlvbihlLHQpe3JldHVybiB0LmRheU5hbWVzU2hvcnRbZS5nZXREYXkoKV19LGRkZGQ6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5kYXlOYW1lc1tlLmdldERheSgpXX0sTTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRNb250aCgpKzF9LE1NOmZ1bmN0aW9uKGUpe3JldHVybiByKGUuZ2V0TW9udGgoKSsxKX0sTU1NOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQubW9udGhOYW1lc1Nob3J0W2UuZ2V0TW9udGgoKV19LE1NTU06ZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5tb250aE5hbWVzW2UuZ2V0TW9udGgoKV19LHl5OmZ1bmN0aW9uKGUpe3JldHVybiBTdHJpbmcoZS5nZXRGdWxsWWVhcigpKS5zdWJzdHIoMil9LHl5eXk6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0RnVsbFllYXIoKX0saDpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRIb3VycygpJTEyfHwxMn0saGg6ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS5nZXRIb3VycygpJTEyfHwxMil9LEg6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZ2V0SG91cnMoKX0sSEg6ZnVuY3Rpb24oZSl7cmV0dXJuIHIoZS5nZXRIb3VycygpKX0sbTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRNaW51dGVzKCl9LG1tOmZ1bmN0aW9uKGUpe3JldHVybiByKGUuZ2V0TWludXRlcygpKX0sczpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRTZWNvbmRzKCl9LHNzOmZ1bmN0aW9uKGUpe3JldHVybiByKGUuZ2V0U2Vjb25kcygpKX0sUzpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5yb3VuZChlLmdldE1pbGxpc2Vjb25kcygpLzEwMCl9LFNTOmZ1bmN0aW9uKGUpe3JldHVybiByKE1hdGgucm91bmQoZS5nZXRNaWxsaXNlY29uZHMoKS8xMCksMil9LFNTUzpmdW5jdGlvbihlKXtyZXR1cm4gcihlLmdldE1pbGxpc2Vjb25kcygpLDMpfSxhOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZ2V0SG91cnMoKTwxMj90LmFtUG1bMF06dC5hbVBtWzFdfSxBOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuZ2V0SG91cnMoKTwxMj90LmFtUG1bMF0udG9VcHBlckNhc2UoKTp0LmFtUG1bMV0udG9VcHBlckNhc2UoKX0sWlo6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5nZXRUaW1lem9uZU9mZnNldCgpO3JldHVybih0PjA/Ii0iOiIrIikrcigxMDAqTWF0aC5mbG9vcihNYXRoLmFicyh0KS82MCkrTWF0aC5hYnModCklNjAsNCl9fSxiPXtkOltkLGZ1bmN0aW9uKGUsdCl7ZS5kYXk9dH1dLE06W2QsZnVuY3Rpb24oZSx0KXtlLm1vbnRoPXQtMX1dLHl5OltkLGZ1bmN0aW9uKGUsdCl7dmFyIG49bmV3IERhdGUsaT0rKCIiK24uZ2V0RnVsbFllYXIoKSkuc3Vic3RyKDAsMik7ZS55ZWFyPSIiKyh0PjY4P2ktMTppKSt0fV0saDpbZCxmdW5jdGlvbihlLHQpe2UuaG91cj10fV0sbTpbZCxmdW5jdGlvbihlLHQpe2UubWludXRlPXR9XSxzOltkLGZ1bmN0aW9uKGUsdCl7ZS5zZWNvbmQ9dH1dLHl5eXk6W2YsZnVuY3Rpb24oZSx0KXtlLnllYXI9dH1dLFM6Wy9cZC8sZnVuY3Rpb24oZSx0KXtlLm1pbGxpc2Vjb25kPTEwMCp0fV0sU1M6Wy9cZHsyfS8sZnVuY3Rpb24oZSx0KXtlLm1pbGxpc2Vjb25kPTEwKnR9XSxTU1M6W2MsZnVuY3Rpb24oZSx0KXtlLm1pbGxpc2Vjb25kPXR9XSxEOltkLHBdLGRkZDpbaCxwXSxNTU06W2gsYSgibW9udGhOYW1lc1Nob3J0IildLE1NTU06W2gsYSgibW9udGhOYW1lcyIpXSxhOltoLGZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10LnRvTG93ZXJDYXNlKCk7aT09PW4uYW1QbVswXT9lLmlzUG09ITE6aT09PW4uYW1QbVsxXSYmKGUuaXNQbT0hMCl9XSxaWjpbL1tcK1wtXVxkXGQ6P1xkXGQvLGZ1bmN0aW9uKGUsdCl7dmFyIG4saT0odCsiIikubWF0Y2goLyhbXCtcLV18XGRcZCkvZ2kpO2kmJihuPSsoNjAqaVsxXSkrcGFyc2VJbnQoaVsyXSwxMCksZS50aW1lem9uZU9mZnNldD0iKyI9PT1pWzBdP246LW4pfV19O2IuREQ9Yi5ERCxiLmRkZGQ9Yi5kZGQsYi5Ebz1iLmRkPWIuZCxiLm1tPWIubSxiLmhoPWIuSD1iLkhIPWIuaCxiLk1NPWIuTSxiLnNzPWIucyxiLkE9Yi5hLGwubWFza3M9eyJkZWZhdWx0IjoiZGRkIE1NTSBkZCB5eXl5IEhIOm1tOnNzIixzaG9ydERhdGU6Ik0vRC95eSIsbWVkaXVtRGF0ZToiTU1NIGQsIHl5eXkiLGxvbmdEYXRlOiJNTU1NIGQsIHl5eXkiLGZ1bGxEYXRlOiJkZGRkLCBNTU1NIGQsIHl5eXkiLHNob3J0VGltZToiSEg6bW0iLG1lZGl1bVRpbWU6IkhIOm1tOnNzIixsb25nVGltZToiSEg6bW06c3MuU1NTIn0sbC5mb3JtYXQ9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW58fGwuaTE4bjtpZigibnVtYmVyIj09dHlwZW9mIGUmJihlPW5ldyBEYXRlKGUpKSwiW29iamVjdCBEYXRlXSIhPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoZSl8fGlzTmFOKGUuZ2V0VGltZSgpKSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgRGF0ZSBpbiBmZWNoYS5mb3JtYXQiKTtyZXR1cm4gdD1sLm1hc2tzW3RdfHx0fHxsLm1hc2tzWyJkZWZhdWx0Il0sdC5yZXBsYWNlKHUsZnVuY3Rpb24odCl7cmV0dXJuIHQgaW4gXz9fW3RdKGUsaSk6dC5zbGljZSgxLHQubGVuZ3RoLTEpfSl9LGwucGFyc2U9ZnVuY3Rpb24oZSx0LG4pe3ZhciBpPW58fGwuaTE4bjtpZigic3RyaW5nIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGZvcm1hdCBpbiBmZWNoYS5wYXJzZSIpO2lmKHQ9bC5tYXNrc1t0XXx8dCxlLmxlbmd0aD4xZTMpcmV0dXJuITE7dmFyIHM9ITAsbz17fTtpZih0LnJlcGxhY2UodSxmdW5jdGlvbih0KXtpZihiW3RdKXt2YXIgbj1iW3RdLGE9ZS5zZWFyY2goblswXSk7fmE/ZS5yZXBsYWNlKG5bMF0sZnVuY3Rpb24odCl7cmV0dXJuIG5bMV0obyx0LGkpLGU9ZS5zdWJzdHIoYSt0Lmxlbmd0aCksdH0pOnM9ITF9cmV0dXJuIGJbdF0/IiI6dC5zbGljZSgxLHQubGVuZ3RoLTEpfSksIXMpcmV0dXJuITE7dmFyIGE9bmV3IERhdGU7by5pc1BtPT09ITAmJm51bGwhPW8uaG91ciYmMTIhPT0rby5ob3VyP28uaG91cj0rby5ob3VyKzEyOm8uaXNQbT09PSExJiYxMj09PStvLmhvdXImJihvLmhvdXI9MCk7dmFyIHI7cmV0dXJuIG51bGwhPW8udGltZXpvbmVPZmZzZXQ/KG8ubWludXRlPSsoby5taW51dGV8fDApLStvLnRpbWV6b25lT2Zmc2V0LHI9bmV3IERhdGUoRGF0ZS5VVEMoby55ZWFyfHxhLmdldEZ1bGxZZWFyKCksby5tb250aHx8MCxvLmRheXx8MSxvLmhvdXJ8fDAsby5taW51dGV8fDAsby5zZWNvbmR8fDAsby5taWxsaXNlY29uZHx8MCkpKTpyPW5ldyBEYXRlKG8ueWVhcnx8YS5nZXRGdWxsWWVhcigpLG8ubW9udGh8fDAsby5kYXl8fDEsby5ob3VyfHwwLG8ubWludXRlfHwwLG8uc2Vjb25kfHwwLG8ubWlsbGlzZWNvbmR8fDApLHJ9LCJ1bmRlZmluZWQiIT10eXBlb2YgZSYmZS5leHBvcnRzP2UuZXhwb3J0cz1sOihpPWZ1bmN0aW9uKCl7cmV0dXJuIGx9LmNhbGwodCxuLHQsZSksISh2b2lkIDAhPT1pJiYoZS5leHBvcnRzPWkpKSl9KHRoaXMpfSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgic3BhbiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJjbGlja291dHNpZGUiLHJhd05hbWU6InYtY2xpY2tvdXRzaWRlIix2YWx1ZTplLmhhbmRsZUNsb3NlLGV4cHJlc3Npb246ImhhbmRsZUNsb3NlIn1dLHN0YXRpY0NsYXNzOiJlbC1kYXRlLWVkaXRvciIsImNsYXNzIjp7ImlzLWhhdmUtdHJpZ2dlciI6ZS5oYXZlVHJpZ2dlciwiaXMtYWN0aXZlIjplLnBpY2tlclZpc2libGUsImlzLWZpbGxlZCI6ISF0aGlzLmludGVybmFsVmFsdWV9fSxbZS5faCgiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwubGF6eSIsdmFsdWU6ZS52aXN1YWxWYWx1ZSxleHByZXNzaW9uOiJ2aXN1YWxWYWx1ZSIsbW9kaWZpZXJzOntsYXp5OiEwfX1dLHJlZjoicmVmZXJlbmNlIixzdGF0aWNDbGFzczoiZWwtZGF0ZS1lZGl0b3JfX2VkaXRvciIsImNsYXNzIjp7ImlzLWRpc2FibGVkIjplLmRpc2FibGVkfSxhdHRyczp7cmVhZG9ubHk6IWUuZWRpdGFibGV8fGUucmVhZG9ubHksZGlzYWJsZWQ6ZS5kaXNhYmxlZCx0eXBlOiJ0ZXh0IixwbGFjZWhvbGRlcjplLnBsYWNlaG9sZGVyfSxkb21Qcm9wczp7dmFsdWU6ZS5fcyhlLnZpc3VhbFZhbHVlKX0sb246e2ZvY3VzOmUuaGFuZGxlRm9jdXMsYmx1cjplLmhhbmRsZUJsdXIsa2V5ZG93bjplLmhhbmRsZUtleWRvd24sY2hhbmdlOmZ1bmN0aW9uKHQpe2UudmlzdWFsVmFsdWU9dC50YXJnZXQudmFsdWV9fX0pLGUuaGF2ZVRyaWdnZXI/ZS5faCgic3BhbiIse3N0YXRpY0NsYXNzOiJlbC1kYXRlLWVkaXRvcl9fdHJpZ2dlciBlbC1pY29uIiwiY2xhc3MiOltlLnNob3dDbG9zZT8iZWwtaWNvbi1jbG9zZSI6ZS50cmlnZ2VyQ2xhc3NdLG9uOntjbGljazpmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpLGUuaGFuZGxlQ2xpY2tJY29uKHQpfSxtb3VzZWVudGVyOmUuaGFuZGxlTW91c2VFbnRlckljb24sbW91c2VsZWF2ZTpmdW5jdGlvbih0KXtlLnNob3dDbG9zZT0hMX19fSk6ZS5fZSgpXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxNDQpO3ZhciBvPW4oMTYwKTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE0MCksbz1uKDExKSxhPWkobyk7dFsiZGVmYXVsdCJdPXttaXhpbnM6W2FbImRlZmF1bHQiXV0sd2F0Y2g6e3Nob3dUaW1lOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZSYmdGhpcy4kbmV4dFRpY2soZnVuY3Rpb24oZSl7dmFyIG49dC4kcmVmcy5pbnB1dDtuJiYodC5waWNrZXJXaWR0aD1uLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKzEwKX0pfSx2YWx1ZTpmdW5jdGlvbihlKXtpZihlPW5ldyBEYXRlKGUpLCFpc05hTihlKSl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlJiZ0aGlzLmRpc2FibGVkRGF0ZShuZXcgRGF0ZShlKSkpcmV0dXJuO3RoaXMuZGF0ZT1lLHRoaXMueWVhcj1lLmdldEZ1bGxZZWFyKCksdGhpcy5tb250aD1lLmdldE1vbnRoKCksdGhpcy4kZW1pdCgicGljayIsZSwhMCl9fSx0aW1lUGlja2VyVmlzaWJsZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2UmJnRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCl7cmV0dXJuIHQuJHJlZnMudGltZXBpY2tlci5hanVzdFNjcm9sbFRvcCgpfSl9LHNlbGVjdGlvbk1vZGU6ZnVuY3Rpb24oZSl7Im1vbnRoIj09PWUmJigieWVhciI9PT10aGlzLmN1cnJlbnRWaWV3JiYibW9udGgiPT09dGhpcy5jdXJyZW50Vmlld3x8KHRoaXMuY3VycmVudFZpZXc9Im1vbnRoIikpfSxkYXRlOmZ1bmN0aW9uKGUpe3RoaXMueWVhcnx8KHRoaXMueWVhcj1lLmdldEZ1bGxZZWFyKCksdGhpcy5tb250aD1lLmdldE1vbnRoKCkpfX0sbWV0aG9kczp7aGFuZGxlQ2xlYXI6ZnVuY3Rpb24oKXt0aGlzLmRhdGU9bmV3IERhdGUsdGhpcy4kZW1pdCgicGljayIsIiIpfSxyZXNldERhdGU6ZnVuY3Rpb24oKXt0aGlzLmRhdGU9bmV3IERhdGUodGhpcy5kYXRlKX0sc2hvd01vbnRoUGlja2VyOmZ1bmN0aW9uKCl7dGhpcy5jdXJyZW50Vmlldz0ibW9udGgifSxzaG93WWVhclBpY2tlcjpmdW5jdGlvbigpe3RoaXMuY3VycmVudFZpZXc9InllYXIifSxwcmV2TW9udGg6ZnVuY3Rpb24oKXt0aGlzLm1vbnRoLS0sdGhpcy5tb250aDwwJiYodGhpcy5tb250aD0xMSx0aGlzLnllYXItLSl9LG5leHRNb250aDpmdW5jdGlvbigpe3RoaXMubW9udGgrKyx0aGlzLm1vbnRoPjExJiYodGhpcy5tb250aD0wLHRoaXMueWVhcisrKX0sbmV4dFllYXI6ZnVuY3Rpb24oKXsieWVhciI9PT10aGlzLmN1cnJlbnRWaWV3P3RoaXMuJHJlZnMueWVhclRhYmxlLm5leHRUZW5ZZWFyKCk6KHRoaXMueWVhcisrLHRoaXMuZGF0ZS5zZXRGdWxsWWVhcih0aGlzLnllYXIpLHRoaXMucmVzZXREYXRlKCkpfSxwcmV2WWVhcjpmdW5jdGlvbigpeyJ5ZWFyIj09PXRoaXMuY3VycmVudFZpZXc/dGhpcy4kcmVmcy55ZWFyVGFibGUucHJldlRlblllYXIoKToodGhpcy55ZWFyLS0sdGhpcy5kYXRlLnNldEZ1bGxZZWFyKHRoaXMueWVhciksdGhpcy5yZXNldERhdGUoKSl9LGhhbmRsZVNob3J0Y3V0Q2xpY2s6ZnVuY3Rpb24oZSl7ZS5vbkNsaWNrJiZlLm9uQ2xpY2sodGhpcyl9LGhhbmRsZVRpbWVQaWNrOmZ1bmN0aW9uKGUsdCxuKXtpZihlKXt2YXIgaT1uZXcgRGF0ZSh0aGlzLmRhdGUuZ2V0VGltZSgpKSxzPWUuZ2V0SG91cnMoKSxvPWUuZ2V0TWludXRlcygpLGE9ZS5nZXRTZWNvbmRzKCk7aS5zZXRIb3VycyhzKSxpLnNldE1pbnV0ZXMobyksaS5zZXRTZWNvbmRzKGEpLHRoaXMuZGF0ZT1uZXcgRGF0ZShpLmdldFRpbWUoKSl9bnx8KHRoaXMudGltZVBpY2tlclZpc2libGU9dCl9LGhhbmRsZU1vbnRoUGljazpmdW5jdGlvbihlKXsKdGhpcy5tb250aD1lO3ZhciB0PXRoaXMuc2VsZWN0aW9uTW9kZTtpZigibW9udGgiIT09dCl0aGlzLmRhdGUuc2V0TW9udGgoZSksdGhpcy5jdXJyZW50Vmlldz0iZGF0ZSIsdGhpcy5yZXNldERhdGUoKTtlbHNle3RoaXMuZGF0ZS5zZXRNb250aChlKSx0aGlzLnllYXImJnRoaXMuZGF0ZS5zZXRGdWxsWWVhcih0aGlzLnllYXIpLHRoaXMucmVzZXREYXRlKCk7dmFyIG49bmV3IERhdGUodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCksZSwxKTt0aGlzLiRlbWl0KCJwaWNrIixuKX19LGhhbmRsZURhdGVQaWNrOmZ1bmN0aW9uKGUpe2lmKCJkYXkiPT09dGhpcy5zZWxlY3Rpb25Nb2RlKXRoaXMuc2hvd1RpbWV8fHRoaXMuJGVtaXQoInBpY2siLG5ldyBEYXRlKGUuZ2V0VGltZSgpKSksdGhpcy5kYXRlLnNldEZ1bGxZZWFyKGUuZ2V0RnVsbFllYXIoKSksdGhpcy5kYXRlLnNldE1vbnRoKGUuZ2V0TW9udGgoKSksdGhpcy5kYXRlLnNldERhdGUoZS5nZXREYXRlKCkpO2Vsc2UgaWYoIndlZWsiPT09dGhpcy5zZWxlY3Rpb25Nb2RlKXt2YXIgdD0oMCxzLmZvcm1hdERhdGUpKGUuZGF0ZSx0aGlzLmZvcm1hdHx8Inl5eXl3V1ciKSxuPXRoaXMud2Vlaz1lLndlZWs7dD0vV1cvLnRlc3QodCk/dC5yZXBsYWNlKC9XVy8sbjwxMD8iMCIrbjpuKTp0LnJlcGxhY2UoL1cvLG4pLHRoaXMuJGVtaXQoInBpY2siLHQpfXRoaXMucmVzZXREYXRlKCl9LGhhbmRsZVllYXJQaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV07dGhpcy55ZWFyPWUsdCYmKHRoaXMuZGF0ZS5zZXRGdWxsWWVhcihlKSwieWVhciI9PT10aGlzLnNlbGVjdGlvbk1vZGU/dGhpcy4kZW1pdCgicGljayIsbmV3IERhdGUoZSkpOnRoaXMuY3VycmVudFZpZXc9Im1vbnRoIix0aGlzLnJlc2V0RGF0ZSgpKX0sY2hhbmdlVG9Ob3c6ZnVuY3Rpb24oKXt0aGlzLmRhdGUuc2V0VGltZSgrbmV3IERhdGUpLHRoaXMuJGVtaXQoInBpY2siLG5ldyBEYXRlKHRoaXMuZGF0ZS5nZXRUaW1lKCkpKSx0aGlzLnJlc2V0RGF0ZSgpfSxjb25maXJtOmZ1bmN0aW9uKCl7dGhpcy4kZW1pdCgicGljayIsdGhpcy5kYXRlKX0scmVzZXRWaWV3OmZ1bmN0aW9uKCl7Im1vbnRoIj09PXRoaXMuc2VsZWN0aW9uTW9kZT90aGlzLmN1cnJlbnRWaWV3PSJtb250aCI6InllYXIiPT09dGhpcy5zZWxlY3Rpb25Nb2RlP3RoaXMuY3VycmVudFZpZXc9InllYXIiOnRoaXMuY3VycmVudFZpZXc9ImRhdGUiLCJ3ZWVrIiE9PXRoaXMuc2VsZWN0aW9uTW9kZSYmKHRoaXMueWVhcj10aGlzLmRhdGUuZ2V0RnVsbFllYXIoKSx0aGlzLm1vbnRoPXRoaXMuZGF0ZS5nZXRNb250aCgpKX19LGNvbXBvbmVudHM6e1RpbWVQaWNrZXI6bigxNDUpLFllYXJUYWJsZTpuKDE1MSksTW9udGhUYWJsZTpuKDE1NCksRGF0ZVRhYmxlOm4oMTU3KX0sbW91bnRlZDpmdW5jdGlvbigpeyJtb250aCI9PT10aGlzLnNlbGVjdGlvbk1vZGUmJih0aGlzLmN1cnJlbnRWaWV3PSJtb250aCIpLHRoaXMuZGF0ZSYmIXRoaXMueWVhciYmKHRoaXMueWVhcj10aGlzLmRhdGUuZ2V0RnVsbFllYXIoKSx0aGlzLm1vbnRoPXRoaXMuZGF0ZS5nZXRNb250aCgpKX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntwaWNrZXJXaWR0aDowLGRhdGU6bmV3IERhdGUsdmFsdWU6IiIsc2hvd1RpbWU6ITEsc2VsZWN0aW9uTW9kZToiZGF5IixzaG9ydGN1dHM6IiIsdmlzaWJsZTohMSxjdXJyZW50VmlldzoiZGF0ZSIsZGlzYWJsZWREYXRlOiIiLHllYXI6bnVsbCxtb250aDpudWxsLHdlZWs6bnVsbCxzaG93V2Vla051bWJlcjohMSx0aW1lUGlja2VyVmlzaWJsZTohMSx3aWR0aDowfX0sY29tcHV0ZWQ6e2Zvb3RlclZpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93VGltZX0sdmlzaWJsZVRpbWU6e2dldDpmdW5jdGlvbigpe3JldHVybigwLHMuZm9ybWF0RGF0ZSkodGhpcy5kYXRlLCJISDptbTpzcyIpfSxzZXQ6ZnVuY3Rpb24oZSl7aWYoZSl7dmFyIHQ9KDAscy5wYXJzZURhdGUpKGUsIkhIOm1tOnNzIik7dCYmKHQuc2V0RnVsbFllYXIodGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkpLHQuc2V0TW9udGgodGhpcy5kYXRlLmdldE1vbnRoKCkpLHQuc2V0RGF0ZSh0aGlzLmRhdGUuZ2V0RGF0ZSgpKSx0aGlzLmRhdGU9dCx0aGlzLiRyZWZzLnRpbWVwaWNrZXIudmFsdWU9dCx0aGlzLnRpbWVQaWNrZXJWaXNpYmxlPSExKX19fSx2aXNpYmxlRGF0ZTp7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuKDAscy5mb3JtYXREYXRlKSh0aGlzLmRhdGUpfSxzZXQ6ZnVuY3Rpb24oZSl7dmFyIHQ9KDAscy5wYXJzZURhdGUpKGUsInl5eXktTU0tZGQiKTt0JiYodC5zZXRIb3Vycyh0aGlzLmRhdGUuZ2V0SG91cnMoKSksdC5zZXRNaW51dGVzKHRoaXMuZGF0ZS5nZXRNaW51dGVzKCkpLHQuc2V0U2Vjb25kcyh0aGlzLmRhdGUuZ2V0U2Vjb25kcygpKSx0aGlzLmRhdGU9dCx0aGlzLnJlc2V0VmlldygpKX19LHllYXJMYWJlbDpmdW5jdGlvbigpe3ZhciBlPXRoaXMueWVhcjtpZighZSlyZXR1cm4iIjt2YXIgdD10aGlzLnQoImVsLmRhdGVwaWNrZXIueWVhciIpO2lmKCJ5ZWFyIj09PXRoaXMuY3VycmVudFZpZXcpe3ZhciBuPTEwKk1hdGguZmxvb3IoZS8xMCk7cmV0dXJuIG4rIiAiK3QrIi0iKyhuKzkpKyIgIit0fXJldHVybiB0aGlzLnllYXIrIiAiK3R9fX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxNDYpO3ZhciBvPW4oMTUwKTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE0MCksbz1uKDExKSxhPWkobyk7dFsiZGVmYXVsdCJdPXttaXhpbnM6W2FbImRlZmF1bHQiXV0sY29tcG9uZW50czp7VGltZVNwaW5uZXI6bigxNDcpfSxwcm9wczp7cGlja2VyV2lkdGg6e30sZGF0ZTp7ImRlZmF1bHQiOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBEYXRlfX0sdmlzaWJsZTpCb29sZWFufSx3YXRjaDp7dmlzaWJsZTpmdW5jdGlvbihlKXt0aGlzLmN1cnJlbnRWaXNpYmxlPWV9LHBpY2tlcldpZHRoOmZ1bmN0aW9uKGUpe3RoaXMud2lkdGg9ZX0sdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dm9pZCAwO2UgaW5zdGFuY2VvZiBEYXRlP3Q9KDAscy5saW1pdFJhbmdlKShlLHRoaXMuc2VsZWN0YWJsZVJhbmdlKTplfHwodD1uZXcgRGF0ZSksdGhpcy5oYW5kbGVDaGFuZ2Uoe2hvdXJzOnQuZ2V0SG91cnMoKSxtaW51dGVzOnQuZ2V0TWludXRlcygpLHNlY29uZHM6dC5nZXRTZWNvbmRzKCl9KX0sc2VsZWN0YWJsZVJhbmdlOmZ1bmN0aW9uKGUpe3RoaXMuJHJlZnMuc3Bpbm5lci5zZWxlY3RhYmxlUmFuZ2U9ZX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Zm9ybWF0OiJISDptbTpzcyIsdmFsdWU6IiIsaG91cnM6MCxtaW51dGVzOjAsc2Vjb25kczowLHNlbGVjdGFibGVSYW5nZTpbXSxjdXJyZW50RGF0ZTp0aGlzLiRvcHRpb25zLmRlZmF1bHRWYWx1ZXx8dGhpcy5kYXRlfHxuZXcgRGF0ZSxjdXJyZW50VmlzaWJsZTp0aGlzLnZpc2libGV8fCExLHdpZHRoOnRoaXMucGlja2VyV2lkdGh8fDB9fSxjb21wdXRlZDp7c2hvd1NlY29uZHM6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5mb3JtYXR8fCIiKS5pbmRleE9mKCJzcyIpIT09LTF9fSxtZXRob2RzOntoYW5kbGVDbGVhcjpmdW5jdGlvbigpe3RoaXMuJGVtaXQoInBpY2siLCIiKX0saGFuZGxlQ2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy4kZW1pdCgicGljayIpfSxoYW5kbGVDaGFuZ2U6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5ob3VycyYmKHRoaXMuY3VycmVudERhdGUuc2V0SG91cnMoZS5ob3VycyksdGhpcy5ob3Vycz10aGlzLmN1cnJlbnREYXRlLmdldEhvdXJzKCkpLHZvaWQgMCE9PWUubWludXRlcyYmKHRoaXMuY3VycmVudERhdGUuc2V0TWludXRlcyhlLm1pbnV0ZXMpLHRoaXMubWludXRlcz10aGlzLmN1cnJlbnREYXRlLmdldE1pbnV0ZXMoKSksdm9pZCAwIT09ZS5zZWNvbmRzJiYodGhpcy5jdXJyZW50RGF0ZS5zZXRTZWNvbmRzKGUuc2Vjb25kcyksdGhpcy5zZWNvbmRzPXRoaXMuY3VycmVudERhdGUuZ2V0U2Vjb25kcygpKSx0aGlzLmhhbmRsZUNvbmZpcm0oITApfSxzZXRTZWxlY3Rpb25SYW5nZTpmdW5jdGlvbihlLHQpe3RoaXMuJGVtaXQoInNlbGVjdC1yYW5nZSIsZSx0KX0saGFuZGxlQ29uZmlybTpmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdJiZhcmd1bWVudHNbMF0sdD1hcmd1bWVudHNbMV07aWYoIXQpe3ZhciBuPW5ldyBEYXRlKCgwLHMubGltaXRSYW5nZSkodGhpcy5jdXJyZW50RGF0ZSx0aGlzLnNlbGVjdGFibGVSYW5nZSkpO3RoaXMuJGVtaXQoInBpY2siLG4sZSx0KX19LGFqdXN0U2Nyb2xsVG9wOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHJlZnMuc3Bpbm5lci5hanVzdFNjcm9sbFRvcCgpfX0sY3JlYXRlZDpmdW5jdGlvbigpe3RoaXMuaG91cnM9dGhpcy5jdXJyZW50RGF0ZS5nZXRIb3VycygpLHRoaXMubWludXRlcz10aGlzLmN1cnJlbnREYXRlLmdldE1pbnV0ZXMoKSx0aGlzLnNlY29uZHM9dGhpcy5jdXJyZW50RGF0ZS5nZXRTZWNvbmRzKCl9LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCl7cmV0dXJuIGUuaGFuZGxlQ29uZmlybSghMCwhMCl9KX19fSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMTQ4KTt2YXIgbz1uKDE0OSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwO3ZhciBpPW4oMTQwKTt0WyJkZWZhdWx0Il09e3Byb3BzOntob3Vyczp7dHlwZTpOdW1iZXIsImRlZmF1bHQiOjB9LG1pbnV0ZXM6e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjowfSxzZWNvbmRzOnt0eXBlOk51bWJlciwiZGVmYXVsdCI6MH0sc2hvd1NlY29uZHM6e3R5cGU6Qm9vbGVhbiwiZGVmYXVsdCI6ITB9fSx3YXRjaDp7aG91cnNQcml2YXRlOmZ1bmN0aW9uKGUsdCl7ZT49MCYmZTw9MjN8fCh0aGlzLmhvdXJzUHJpdmF0ZT10KSx0aGlzLiRyZWZzLmhvdXIuc2Nyb2xsVG9wPU1hdGgubWF4KDAsMzIqKHRoaXMuaG91cnNQcml2YXRlLTIuNSkrODApLHRoaXMuJGVtaXQoImNoYW5nZSIse2hvdXJzOmV9KX0sbWludXRlc1ByaXZhdGU6ZnVuY3Rpb24oZSx0KXtlPj0wJiZlPD01OXx8KHRoaXMubWludXRlc1ByaXZhdGU9dCksdGhpcy4kcmVmcy5taW51dGUuc2Nyb2xsVG9wPU1hdGgubWF4KDAsMzIqKHRoaXMubWludXRlc1ByaXZhdGUtMi41KSs4MCksdGhpcy4kZW1pdCgiY2hhbmdlIix7bWludXRlczplfSl9LHNlY29uZHNQcml2YXRlOmZ1bmN0aW9uKGUsdCl7ZT49MCYmZTw9NTl8fCh0aGlzLnNlY29uZHNQcml2YXRlPXQpLHRoaXMuJHJlZnMuc2Vjb25kLnNjcm9sbFRvcD1NYXRoLm1heCgwLDMyKih0aGlzLnNlY29uZHNQcml2YXRlLTIuNSkrODApLHRoaXMuJGVtaXQoImNoYW5nZSIse3NlY29uZHM6ZX0pfX0sY29tcHV0ZWQ6e2hvdXJzTGlzdDpmdW5jdGlvbigpe3JldHVybigwLGkuZ2V0UmFuZ2VIb3VycykodGhpcy5zZWxlY3RhYmxlUmFuZ2UpfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntob3Vyc1ByaXZhdGU6MCxtaW51dGVzUHJpdmF0ZTowLHNlY29uZHNQcml2YXRlOjAsc2VsZWN0YWJsZVJhbmdlOltdfX0sbWV0aG9kczp7aGFuZGxlQ2xpY2s6ZnVuY3Rpb24oZSx0LG4pe3QuZGlzYWJsZWR8fCh0aGlzW2UrIlByaXZhdGUiXT10LnZhbHVlPj0wP3QudmFsdWU6dCx0aGlzLmVtaXRTZWxlY3RSYW5nZShlKSl9LGVtaXRTZWxlY3RSYW5nZTpmdW5jdGlvbihlKXsiaG91cnMiPT09ZT90aGlzLiRlbWl0KCJzZWxlY3QtcmFuZ2UiLDAsMik6Im1pbnV0ZXMiPT09ZT90aGlzLiRlbWl0KCJzZWxlY3QtcmFuZ2UiLDMsNSk6InNlY29uZHMiPT09ZSYmdGhpcy4kZW1pdCgic2VsZWN0LXJhbmdlIiw2LDgpfSxoYW5kbGVTY3JvbGw6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBuPXt9O25bZSsicyJdPU1hdGgubWluKE1hdGguZmxvb3IoKHQuJHJlZnNbZV0uc2Nyb2xsVG9wLTgwKS8zMiszKSw1OSksdC4kZW1pdCgiY2hhbmdlIixuKX0sMCl9LGFqdXN0U2Nyb2xsVG9wOmZ1bmN0aW9uKCl7dGhpcy4kcmVmcy5ob3VyLnNjcm9sbFRvcD1NYXRoLm1heCgwLDMyKih0aGlzLmhvdXJzLTIuNSkrODApLHRoaXMuJHJlZnMubWludXRlLnNjcm9sbFRvcD1NYXRoLm1heCgwLDMyKih0aGlzLm1pbnV0ZXMtMi41KSs4MCksdGhpcy4kcmVmcy5zZWNvbmQuc2Nyb2xsVG9wPU1hdGgubWF4KDAsMzIqKHRoaXMuc2Vjb25kcy0yLjUpKzgwKX19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC10aW1lLXNwaW5uZXIifSxbZS5faCgiZGl2Iix7cmVmOiJob3VyIixzdGF0aWNDbGFzczoiZWwtdGltZS1zcGlubmVyX193cmFwcGVyIixvbjp7bW91c2VlbnRlcjpmdW5jdGlvbih0KXtlLmVtaXRTZWxlY3RSYW5nZSgiaG91cnMiKX0sbW91c2V3aGVlbDpmdW5jdGlvbih0KXtlLmhhbmRsZVNjcm9sbCgiaG91ciIpfX19LFtlLl9oKCJ1bCIse3N0YXRpY0NsYXNzOiJlbC10aW1lLXNwaW5uZXJfX2xpc3QifSxbZS5fbChlLmhvdXJzTGlzdCxmdW5jdGlvbih0LG4pe3JldHVybiBlLl9oKCJsaSIse3N0YXRpY0NsYXNzOiJlbC10aW1lLXNwaW5uZXJfX2l0ZW0iLCJjbGFzcyI6e2FjdGl2ZTpuPT09ZS5ob3VycyxkaXNhYmxlZDp0fSxhdHRyczp7InRyYWNrLWJ5IjoiaG91ciJ9LGRvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKG4pfSxvbjp7Y2xpY2s6ZnVuY3Rpb24oaSl7ZS5oYW5kbGVDbGljaygiaG91cnMiLHt2YWx1ZTpuLGRpc2FibGVkOnR9LCEwKX19fSl9KV0pXSksZS5faCgiZGl2Iix7cmVmOiJtaW51dGUiLHN0YXRpY0NsYXNzOiJlbC10aW1lLXNwaW5uZXJfX3dyYXBwZXIiLG9uOnttb3VzZWVudGVyOmZ1bmN0aW9uKHQpe2UuZW1pdFNlbGVjdFJhbmdlKCJtaW51dGVzIil9LG1vdXNld2hlZWw6ZnVuY3Rpb24odCl7ZS5oYW5kbGVTY3JvbGwoIm1pbnV0ZSIpfX19LFtlLl9oKCJ1bCIse3N0YXRpY0NsYXNzOiJlbC10aW1lLXNwaW5uZXJfX2xpc3QifSxbZS5fbCg2MCxmdW5jdGlvbih0LG4pe3JldHVybiBlLl9oKCJsaSIse3N0YXRpY0NsYXNzOiJlbC10aW1lLXNwaW5uZXJfX2l0ZW0iLCJjbGFzcyI6e2FjdGl2ZTpuPT09ZS5taW51dGVzfSxkb21Qcm9wczp7dGV4dENvbnRlbnQ6ZS5fcyhuKX0sb246e2NsaWNrOmZ1bmN0aW9uKHQpe2UuaGFuZGxlQ2xpY2soIm1pbnV0ZXMiLG4sITApfX19KX0pXSldKSxlLl9oKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnNob3dTZWNvbmRzLGV4cHJlc3Npb246InNob3dTZWNvbmRzIn1dLHJlZjoic2Vjb25kIixzdGF0aWNDbGFzczoiZWwtdGltZS1zcGlubmVyX193cmFwcGVyIixvbjp7bW91c2VlbnRlcjpmdW5jdGlvbih0KXtlLmVtaXRTZWxlY3RSYW5nZSgic2Vjb25kcyIpfSxtb3VzZXdoZWVsOmZ1bmN0aW9uKHQpe2UuaGFuZGxlU2Nyb2xsKCJzZWNvbmQiKX19fSxbZS5faCgidWwiLHtzdGF0aWNDbGFzczoiZWwtdGltZS1zcGlubmVyX19saXN0In0sW2UuX2woNjAsZnVuY3Rpb24odCxuKXtyZXR1cm4gZS5faCgibGkiLHtzdGF0aWNDbGFzczoiZWwtdGltZS1zcGlubmVyX19pdGVtIiwiY2xhc3MiOnthY3RpdmU6bj09PWUuc2Vjb25kc30sZG9tUHJvcHM6e3RleHRDb250ZW50OmUuX3Mobil9LG9uOntjbGljazpmdW5jdGlvbih0KXtlLmhhbmRsZUNsaWNrKCJzZWNvbmRzIixuLCEwKX19fSl9KV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goInRyYW5zaXRpb24iLHthdHRyczp7bmFtZToibWQtZmFkZS1ib3R0b20ifSxvbjp7ImFmdGVyLWxlYXZlIjpmdW5jdGlvbih0KXtlLiRlbWl0KCJkb2Rlc3Ryb3kiKX19fSxbZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS5jdXJyZW50VmlzaWJsZSxleHByZXNzaW9uOiJjdXJyZW50VmlzaWJsZSJ9XSxzdGF0aWNDbGFzczoiZWwtdGltZS1wYW5lbCIsc3R5bGU6e3dpZHRoOmUud2lkdGgrInB4In19LFtlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtdGltZS1wYW5lbF9fY29udGVudCJ9LFtlLl9oKCJ0aW1lLXNwaW5uZXIiLHtyZWY6InNwaW5uZXIiLGF0dHJzOnsic2hvdy1zZWNvbmRzIjplLnNob3dTZWNvbmRzLGhvdXJzOmUuaG91cnMsbWludXRlczplLm1pbnV0ZXMsc2Vjb25kczplLnNlY29uZHN9LG9uOntjaGFuZ2U6ZS5oYW5kbGVDaGFuZ2UsInNlbGVjdC1yYW5nZSI6ZS5zZXRTZWxlY3Rpb25SYW5nZX19KV0pLGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC10aW1lLXBhbmVsX19mb290ZXIifSxbZS5faCgiYnV0dG9uIix7c3RhdGljQ2xhc3M6ImVsLXRpbWUtcGFuZWxfX2J0biBjYW5jZWwiLGF0dHJzOnt0eXBlOiJidXR0b24ifSxvbjp7Y2xpY2s6ZS5oYW5kbGVDYW5jZWx9fSxbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIuY2FuY2VsIikpXSksZS5faCgiYnV0dG9uIix7c3RhdGljQ2xhc3M6ImVsLXRpbWUtcGFuZWxfX2J0biBjb25maXJtIixhdHRyczp7dHlwZToiYnV0dG9uIn0sb246e2NsaWNrOmZ1bmN0aW9uKHQpe2UuaGFuZGxlQ29uZmlybSgpfX19LFtlLl9zKGUudCgiZWwuZGF0ZXBpY2tlci5jb25maXJtIikpXSldKV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxNTIpO3ZhciBvPW4oMTUzKTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIGk9bigzOSk7dFsiZGVmYXVsdCJdPXtwcm9wczp7ZGlzYWJsZWREYXRlOnt9LGRhdGU6e30seWVhcjp7fX0sY29tcHV0ZWQ6e3N0YXJ0WWVhcjpmdW5jdGlvbigpe3JldHVybiAxMCpNYXRoLmZsb29yKHRoaXMueWVhci8xMCl9fSxtZXRob2RzOntnZXRDZWxsU3R5bGU6ZnVuY3Rpb24oZSl7dmFyIHQ9e30sbj1uZXcgRGF0ZSh0aGlzLmRhdGUpO3JldHVybiBuLnNldEZ1bGxZZWFyKGUpLHQuZGlzYWJsZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMuZGlzYWJsZWREYXRlJiZ0aGlzLmRpc2FibGVkRGF0ZShuKSx0LmN1cnJlbnQ9dGhpcy55ZWFyPT09ZSx0fSxuZXh0VGVuWWVhcjpmdW5jdGlvbigpe3RoaXMuJGVtaXQoInBpY2siLHRoaXMueWVhcisxMCwhMSl9LHByZXZUZW5ZZWFyOmZ1bmN0aW9uKCl7dGhpcy4kZW1pdCgicGljayIsdGhpcy55ZWFyLTEwLCExKX0saGFuZGxlWWVhclRhYmxlQ2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7aWYoIkEiPT09dC50YWdOYW1lKXtpZigoMCxpLmhhc0NsYXNzKSh0LnBhcmVudE5vZGUsImRpc2FibGVkIikpcmV0dXJuO3ZhciBuPXQudGV4dENvbnRlbnR8fHQuaW5uZXJUZXh0O3RoaXMuJGVtaXQoInBpY2siLG4pfX19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goInRhYmxlIix7c3RhdGljQ2xhc3M6ImVsLXllYXItdGFibGUiLG9uOntjbGljazplLmhhbmRsZVllYXJUYWJsZUNsaWNrfX0sW2UuX2goInRib2R5IixbZS5faCgidHIiLFtlLl9oKCJ0ZCIse3N0YXRpY0NsYXNzOiJhdmFpbGFibGUiLCJjbGFzcyI6ZS5nZXRDZWxsU3R5bGUoZS5zdGFydFllYXIrMCl9LFtlLl9oKCJhIix7c3RhdGljQ2xhc3M6ImNlbGwifSxbZS5fcyhlLnN0YXJ0WWVhcildKV0pLGUuX2goInRkIix7c3RhdGljQ2xhc3M6ImF2YWlsYWJsZSIsImNsYXNzIjplLmdldENlbGxTdHlsZShlLnN0YXJ0WWVhcisxKX0sW2UuX2goImEiLHtzdGF0aWNDbGFzczoiY2VsbCJ9LFtlLl9zKGUuc3RhcnRZZWFyKzEpXSldKSxlLl9oKCJ0ZCIse3N0YXRpY0NsYXNzOiJhdmFpbGFibGUiLCJjbGFzcyI6ZS5nZXRDZWxsU3R5bGUoZS5zdGFydFllYXIrMil9LFtlLl9oKCJhIix7c3RhdGljQ2xhc3M6ImNlbGwifSxbZS5fcyhlLnN0YXJ0WWVhcisyKV0pXSksZS5faCgidGQiLHtzdGF0aWNDbGFzczoiYXZhaWxhYmxlIiwiY2xhc3MiOmUuZ2V0Q2VsbFN0eWxlKGUuc3RhcnRZZWFyKzMpfSxbZS5faCgiYSIse3N0YXRpY0NsYXNzOiJjZWxsIn0sW2UuX3MoZS5zdGFydFllYXIrMyldKV0pXSksZS5faCgidHIiLFtlLl9oKCJ0ZCIse3N0YXRpY0NsYXNzOiJhdmFpbGFibGUiLCJjbGFzcyI6ZS5nZXRDZWxsU3R5bGUoZS5zdGFydFllYXIrNCl9LFtlLl9oKCJhIix7c3RhdGljQ2xhc3M6ImNlbGwifSxbZS5fcyhlLnN0YXJ0WWVhcis0KV0pXSksZS5faCgidGQiLHtzdGF0aWNDbGFzczoiYXZhaWxhYmxlIiwiY2xhc3MiOmUuZ2V0Q2VsbFN0eWxlKGUuc3RhcnRZZWFyKzUpfSxbZS5faCgiYSIse3N0YXRpY0NsYXNzOiJjZWxsIn0sW2UuX3MoZS5zdGFydFllYXIrNSldKV0pLGUuX2goInRkIix7c3RhdGljQ2xhc3M6ImF2YWlsYWJsZSIsImNsYXNzIjplLmdldENlbGxTdHlsZShlLnN0YXJ0WWVhcis2KX0sW2UuX2goImEiLHtzdGF0aWNDbGFzczoiY2VsbCJ9LFtlLl9zKGUuc3RhcnRZZWFyKzYpXSldKSxlLl9oKCJ0ZCIse3N0YXRpY0NsYXNzOiJhdmFpbGFibGUiLCJjbGFzcyI6ZS5nZXRDZWxsU3R5bGUoZS5zdGFydFllYXIrNyl9LFtlLl9oKCJhIix7c3RhdGljQ2xhc3M6ImNlbGwifSxbZS5fcyhlLnN0YXJ0WWVhcis3KV0pXSldKSxlLl9oKCJ0ciIsW2UuX2goInRkIix7c3RhdGljQ2xhc3M6ImF2YWlsYWJsZSIsImNsYXNzIjplLmdldENlbGxTdHlsZShlLnN0YXJ0WWVhcis4KX0sW2UuX2goImEiLHtzdGF0aWNDbGFzczoiY2VsbCJ9LFtlLl9zKGUuc3RhcnRZZWFyKzgpXSldKSxlLl9oKCJ0ZCIse3N0YXRpY0NsYXNzOiJhdmFpbGFibGUiLCJjbGFzcyI6ZS5nZXRDZWxsU3R5bGUoZS5zdGFydFllYXIrOSl9LFtlLl9oKCJhIix7c3RhdGljQ2xhc3M6ImNlbGwifSxbZS5fcyhlLnN0YXJ0WWVhcis5KV0pXSksZS5fbSgwKSxlLl9tKDEpXSldKV0pfSxzdGF0aWNSZW5kZXJGbnM6W2Z1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgidGQiKX0sZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJ0ZCIpfV19fSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMTU1KTt2YXIgbz1uKDE1Nik7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxMSksbz1pKHMpLGE9bigzOSk7dFsiZGVmYXVsdCJdPXtwcm9wczp7ZGlzYWJsZWREYXRlOnt9LGRhdGU6e30sbW9udGg6e3R5cGU6TnVtYmVyfX0sbWl4aW5zOltvWyJkZWZhdWx0Il1dLG1ldGhvZHM6e2dldENlbGxTdHlsZTpmdW5jdGlvbihlKXt2YXIgdD17fSxuPW5ldyBEYXRlKHRoaXMuZGF0ZSk7cmV0dXJuIG4uc2V0TW9udGgoZSksdC5kaXNhYmxlZD0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcy5kaXNhYmxlZERhdGUmJnRoaXMuZGlzYWJsZWREYXRlKG4pLHQuY3VycmVudD10aGlzLm1vbnRoPT09ZSx0fSxoYW5kbGVNb250aFRhYmxlQ2xpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQ7aWYoIkEiPT09dC50YWdOYW1lJiYhKDAsYS5oYXNDbGFzcykodC5wYXJlbnROb2RlLCJkaXNhYmxlZCIpKXt2YXIgbj10LnBhcmVudE5vZGUuY2VsbEluZGV4LGk9dC5wYXJlbnROb2RlLnBhcmVudE5vZGUucm93SW5kZXgscz00Kmkrbjt0aGlzLiRlbWl0KCJwaWNrIixzKX19fX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJ0YWJsZSIse3N0YXRpY0NsYXNzOiJlbC1tb250aC10YWJsZSIsb246e2NsaWNrOmUuaGFuZGxlTW9udGhUYWJsZUNsaWNrfX0sW2UuX2goInRib2R5IixbZS5faCgidHIiLFtlLl9oKCJ0ZCIseyJjbGFzcyI6ZS5nZXRDZWxsU3R5bGUoMCl9LFtlLl9oKCJhIix7c3RhdGljQ2xhc3M6ImNlbGwifSxbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIubW9udGhzLmphbiIpKV0pXSksZS5faCgidGQiLHsiY2xhc3MiOmUuZ2V0Q2VsbFN0eWxlKDEpfSxbZS5faCgiYSIse3N0YXRpY0NsYXNzOiJjZWxsIn0sW2UuX3MoZS50KCJlbC5kYXRlcGlja2VyLm1vbnRocy5mZWIiKSldKV0pLGUuX2goInRkIix7ImNsYXNzIjplLmdldENlbGxTdHlsZSgyKX0sW2UuX2goImEiLHtzdGF0aWNDbGFzczoiY2VsbCJ9LFtlLl9zKGUudCgiZWwuZGF0ZXBpY2tlci5tb250aHMubWFyIikpXSldKSxlLl9oKCJ0ZCIseyJjbGFzcyI6ZS5nZXRDZWxsU3R5bGUoMyl9LFtlLl9oKCJhIix7c3RhdGljQ2xhc3M6ImNlbGwifSxbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIubW9udGhzLmFwciIpKV0pXSldKSxlLl9oKCJ0ciIsW2UuX2goInRkIix7ImNsYXNzIjplLmdldENlbGxTdHlsZSg0KX0sW2UuX2goImEiLHtzdGF0aWNDbGFzczoiY2VsbCJ9LFtlLl9zKGUudCgiZWwuZGF0ZXBpY2tlci5tb250aHMubWF5IikpXSldKSxlLl9oKCJ0ZCIseyJjbGFzcyI6ZS5nZXRDZWxsU3R5bGUoNSl9LFtlLl9oKCJhIix7c3RhdGljQ2xhc3M6ImNlbGwifSxbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIubW9udGhzLmp1biIpKV0pXSksZS5faCgidGQiLHsiY2xhc3MiOmUuZ2V0Q2VsbFN0eWxlKDYpfSxbZS5faCgiYSIse3N0YXRpY0NsYXNzOiJjZWxsIn0sW2UuX3MoZS50KCJlbC5kYXRlcGlja2VyLm1vbnRocy5qdWwiKSldKV0pLGUuX2goInRkIix7ImNsYXNzIjplLmdldENlbGxTdHlsZSg3KX0sW2UuX2goImEiLHtzdGF0aWNDbGFzczoiY2VsbCJ9LFtlLl9zKGUudCgiZWwuZGF0ZXBpY2tlci5tb250aHMuYXVnIikpXSldKV0pLGUuX2goInRyIixbZS5faCgidGQiLHsiY2xhc3MiOmUuZ2V0Q2VsbFN0eWxlKDgpfSxbZS5faCgiYSIse3N0YXRpY0NsYXNzOiJjZWxsIn0sW2UuX3MoZS50KCJlbC5kYXRlcGlja2VyLm1vbnRocy5zZXAiKSldKV0pLGUuX2goInRkIix7ImNsYXNzIjplLmdldENlbGxTdHlsZSg5KX0sW2UuX2goImEiLHtzdGF0aWNDbGFzczoiY2VsbCJ9LFtlLl9zKGUudCgiZWwuZGF0ZXBpY2tlci5tb250aHMub2N0IikpXSldKSxlLl9oKCJ0ZCIseyJjbGFzcyI6ZS5nZXRDZWxsU3R5bGUoMTApfSxbZS5faCgiYSIse3N0YXRpY0NsYXNzOiJjZWxsIn0sW2UuX3MoZS50KCJlbC5kYXRlcGlja2VyLm1vbnRocy5ub3YiKSldKV0pLGUuX2goInRkIix7ImNsYXNzIjplLmdldENlbGxTdHlsZSgxMSl9LFtlLl9oKCJhIix7c3RhdGljQ2xhc3M6ImNlbGwifSxbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIubW9udGhzLmRlYyIpKV0pXSldKV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxNTgpO3ZhciBvPW4oMTU5KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE0MCksbz1uKDM5KSxhPW4oMTEpLHI9aShhKSxsPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBEYXRlKGUpO3JldHVybiB0LnNldEhvdXJzKDAsMCwwLDApLHQuZ2V0VGltZSgpfTt0WyJkZWZhdWx0Il09e21peGluczpbclsiZGVmYXVsdCJdXSxwcm9wczp7ZGF0ZTp7fSx5ZWFyOnt9LG1vbnRoOnt9LHdlZWs6e30sc2VsZWN0aW9uTW9kZTp7ImRlZmF1bHQiOiJkYXkifSxzaG93V2Vla051bWJlcjp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMX0sZGlzYWJsZWREYXRlOnt9LG1pbkRhdGU6e30sbWF4RGF0ZTp7fSxyYW5nZVN0YXRlOnsiZGVmYXVsdCI6ZnVuY3Rpb24oKXtyZXR1cm57ZW5kRGF0ZTpudWxsLHNlbGVjdGluZzohMSxyb3c6bnVsbCxjb2x1bW46bnVsbH19fSx2YWx1ZTp7fX0sY29tcHV0ZWQ6e21vbnRoRGF0ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0RGF0ZSgpfSxzdGFydERhdGU6ZnVuY3Rpb24oKXtyZXR1cm4oMCxzLmdldFN0YXJ0RGF0ZU9mTW9udGgpKHRoaXMueWVhcix0aGlzLm1vbnRoKX0scm93czpmdW5jdGlvbiB1KCl7dmFyIGU9bmV3IERhdGUodGhpcy55ZWFyLHRoaXMubW9udGgsMSksdD0oMCxzLmdldEZpcnN0RGF5T2ZNb250aCkoZSksbj0oMCxzLmdldERheUNvdW50T2ZNb250aCkoZS5nZXRGdWxsWWVhcigpLGUuZ2V0TW9udGgoKSksaT0oMCxzLmdldERheUNvdW50T2ZNb250aCkoZS5nZXRGdWxsWWVhcigpLDA9PT1lLmdldE1vbnRoKCk/MTE6ZS5nZXRNb250aCgpLTEpO3Q9MD09PXQ/Nzp0O2Zvcih2YXIgdT10aGlzLnRhYmxlUm93cyxvPTEsYT12b2lkIDAscj10aGlzLnN0YXJ0RGF0ZSxkPXRoaXMuZGlzYWJsZWREYXRlLGM9bChuZXcgRGF0ZSksZj0wO2Y8NjtmKyspe3ZhciBoPXVbZl07dGhpcy5zaG93V2Vla051bWJlciYmKGhbMF18fChoWzBdPXt0eXBlOiJ3ZWVrIix0ZXh0OigwLHMuZ2V0V2Vla051bWJlcikobmV3IERhdGUoci5nZXRUaW1lKCkrcy5EQVlfRFVSQVRJT04qKDcqZisxKSkpfSkpO2Zvcih2YXIgcD0wO3A8NztwKyspe3ZhciBtPWhbdGhpcy5zaG93V2Vla051bWJlcj9wKzE6cF07bXx8KG09e3JvdzpmLGNvbHVtbjpwLHR5cGU6Im5vcm1hbCIsaW5SYW5nZTohMSxzdGFydDohMSxlbmQ6ITF9KSxtLnR5cGU9Im5vcm1hbCI7dmFyIGc9NypmK3Asdj1yLmdldFRpbWUoKStzLkRBWV9EVVJBVElPTipnO20uaW5SYW5nZT12Pj1sKHRoaXMubWluRGF0ZSkmJnY8PWwodGhpcy5tYXhEYXRlKSxtLnN0YXJ0PXRoaXMubWluRGF0ZSYmdj09PWwodGhpcy5taW5EYXRlKSxtLmVuZD10aGlzLm1heERhdGUmJnY9PT1sKHRoaXMubWF4RGF0ZSk7dmFyIHk9dj09PWM7eSYmKG0udHlwZT0idG9kYXkiKSwwPT09Zj9wPj10PyhtLnRleHQ9bysrLDI9PT1vJiYoYT03KmYrcCkpOihtLnRleHQ9aS0odC1wJTcpKzEsbS50eXBlPSJwcmV2LW1vbnRoIik6bzw9bj8obS50ZXh0PW8rKywyPT09byYmKGE9NypmK3ApKToobS50ZXh0PW8rKy1uLG0udHlwZT0ibmV4dC1tb250aCIpLG0uZGlzYWJsZWQ9ImZ1bmN0aW9uIj09dHlwZW9mIGQmJmQobmV3IERhdGUodikpLHRoaXMuJHNldChoLHRoaXMuc2hvd1dlZWtOdW1iZXI/cCsxOnAsbSl9aWYoIndlZWsiPT09dGhpcy5zZWxlY3Rpb25Nb2RlKXt2YXIgXz10aGlzLnNob3dXZWVrTnVtYmVyPzE6MCxiPXRoaXMuc2hvd1dlZWtOdW1iZXI/Nzo2LEM9dGhpcy5pc1dlZWtBY3RpdmUoaFtfKzFdKTtoW19dLmluUmFuZ2U9QyxoW19dLnN0YXJ0PUMsaFtiXS5pblJhbmdlPUMsaFtiXS5lbmQ9Q319cmV0dXJuIHUuZmlyc3REYXlQb3NpdGlvbj1hLHV9fSx3YXRjaDp7InJhbmdlU3RhdGUuZW5kRGF0ZSI6ZnVuY3Rpb24oZSl7dGhpcy5tYXJrUmFuZ2UoZSl9LG1pbkRhdGU6ZnVuY3Rpb24oZSx0KXtlJiYhdD8odGhpcy5yYW5nZVN0YXRlLnNlbGVjdGluZz0hMCx0aGlzLm1hcmtSYW5nZShlKSk6ZT90aGlzLm1hcmtSYW5nZSgpOih0aGlzLnJhbmdlU3RhdGUuc2VsZWN0aW5nPSExLHRoaXMubWFya1JhbmdlKGUpKX0sbWF4RGF0ZTpmdW5jdGlvbihlLHQpe2UmJiF0JiYodGhpcy5yYW5nZVN0YXRlLnNlbGVjdGluZz0hMSx0aGlzLm1hcmtSYW5nZShlKSx0aGlzLiRlbWl0KCJwaWNrIix7bWluRGF0ZTp0aGlzLm1pbkRhdGUsbWF4RGF0ZTp0aGlzLm1heERhdGV9KSl9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3RhYmxlUm93czpbW10sW10sW10sW10sW10sW11dfX0sbWV0aG9kczp7Z2V0Q2VsbENsYXNzZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5zZWxlY3Rpb25Nb2RlLG49dGhpcy5tb250aERhdGUsaT1bXTtyZXR1cm4ibm9ybWFsIiE9PWUudHlwZSYmInRvZGF5IiE9PWUudHlwZXx8ZS5kaXNhYmxlZD9pLnB1c2goZS50eXBlKTooaS5wdXNoKCJhdmFpbGFibGUiKSwidG9kYXkiPT09ZS50eXBlJiZpLnB1c2goInRvZGF5IikpLCJkYXkiIT09dHx8Im5vcm1hbCIhPT1lLnR5cGUmJiJ0b2RheSIhPT1lLnR5cGV8fHRoaXMueWVhciE9PXRoaXMuZGF0ZS5nZXRGdWxsWWVhcigpfHx0aGlzLm1vbnRoIT09dGhpcy5kYXRlLmdldE1vbnRoKCl8fG4hPT1OdW1iZXIoZS50ZXh0KXx8aS5wdXNoKCJjdXJyZW50IiksIWUuaW5SYW5nZXx8Im5vcm1hbCIhPT1lLnR5cGUmJiJ0b2RheSIhPT1lLnR5cGUmJiJ3ZWVrIiE9PXRoaXMuc2VsZWN0aW9uTW9kZXx8KGkucHVzaCgiaW4tcmFuZ2UiKSxlLnN0YXJ0JiZpLnB1c2goInN0YXJ0LWRhdGUiKSxlLmVuZCYmaS5wdXNoKCJlbmQtZGF0ZSIpKSxlLmRpc2FibGVkJiZpLnB1c2goImRpc2FibGVkIiksaS5qb2luKCIgIil9LGdldERhdGVPZkNlbGw6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnN0YXJ0RGF0ZTtyZXR1cm4gbmV3IERhdGUobi5nZXRUaW1lKCkrKDcqZSsodC0odGhpcy5zaG93V2Vla051bWJlcj8xOjApKSkqcy5EQVlfRFVSQVRJT04pfSxnZXRDZWxsQnlEYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuc3RhcnREYXRlLG49dGhpcy5yb3dzLGk9KGUtdCkvcy5EQVlfRFVSQVRJT04sbz1uW01hdGguZmxvb3IoaS83KV07cmV0dXJuIHRoaXMuc2hvd1dlZWtOdW1iZXI/b1tpJTcrMV06b1tpJTddfSxpc1dlZWtBY3RpdmU6ZnVuY3Rpb24oZSl7aWYoIndlZWsiIT09dGhpcy5zZWxlY3Rpb25Nb2RlKXJldHVybiExO3ZhciB0PW5ldyBEYXRlKHRoaXMueWVhcix0aGlzLm1vbnRoLDEpLG49dC5nZXRGdWxsWWVhcigpLGk9dC5nZXRNb250aCgpO3JldHVybiJwcmV2LW1vbnRoIj09PWUudHlwZSYmKHQuc2V0TW9udGgoMD09PWk/MTE6aS0xKSx0LnNldEZ1bGxZZWFyKDA9PT1pP24tMTpuKSksIm5leHQtbW9udGgiPT09ZS50eXBlJiYodC5zZXRNb250aCgxMT09PWk/MDppKzEpLHQuc2V0RnVsbFllYXIoMTE9PT1pP24rMTpuKSksdC5zZXREYXRlKHBhcnNlSW50KGUudGV4dCwxMCkpLCgwLHMuZ2V0V2Vla051bWJlcikodCk9PT10aGlzLndlZWt9LG1hcmtSYW5nZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnN0YXJ0RGF0ZTtlfHwoZT10aGlzLm1heERhdGUpO2Zvcih2YXIgbj10aGlzLnJvd3MsaT10aGlzLm1pbkRhdGUsbz0wLGE9bi5sZW5ndGg7bzxhO28rKylmb3IodmFyIHI9bltvXSx1PTAsZD1yLmxlbmd0aDt1PGQ7dSsrKWlmKCF0aGlzLnNob3dXZWVrTnVtYmVyfHwwIT09dSl7dmFyIGM9clt1XSxmPTcqbyt1Kyh0aGlzLnNob3dXZWVrTnVtYmVyPy0xOjApLGg9dC5nZXRUaW1lKCkrcy5EQVlfRFVSQVRJT04qZjtjLmluUmFuZ2U9aSYmaD49bChpKSYmaDw9bChlKSxjLnN0YXJ0PWkmJmg9PT1sKGkuZ2V0VGltZSgpKSxjLmVuZD1lJiZoPT09bChlLmdldFRpbWUoKSl9fSxoYW5kbGVNb3VzZU1vdmU6ZnVuY3Rpb24oZSl7aWYodGhpcy5yYW5nZVN0YXRlLnNlbGVjdGluZyl7dGhpcy4kZW1pdCgiY2hhbmdlcmFuZ2UiLHttaW5EYXRlOnRoaXMubWluRGF0ZSxtYXhEYXRlOnRoaXMubWF4RGF0ZSxyYW5nZVN0YXRlOnRoaXMucmFuZ2VTdGF0ZX0pO3ZhciB0PWUudGFyZ2V0O2lmKCJURCI9PT10LnRhZ05hbWUpe3ZhciBuPXQuY2VsbEluZGV4LGk9dC5wYXJlbnROb2RlLnJvd0luZGV4LTEscz10aGlzLnJhbmdlU3RhdGUsbz1zLnJvdyxhPXMuY29sdW1uO289PT1pJiZhPT09bnx8KHRoaXMucmFuZ2VTdGF0ZS5yb3c9aSx0aGlzLnJhbmdlU3RhdGUuY29sdW1uPW4sdGhpcy5yYW5nZVN0YXRlLmVuZERhdGU9dGhpcy5nZXREYXRlT2ZDZWxsKGksbikpfX19LGhhbmRsZUNsaWNrOmZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0O2lmKCJURCI9PT10LnRhZ05hbWUmJiEoMCxvLmhhc0NsYXNzKSh0LCJkaXNhYmxlZCIpJiYhKDAsby5oYXNDbGFzcykodCwid2VlayIpKXt2YXIgbj10aGlzLnNlbGVjdGlvbk1vZGU7IndlZWsiPT09biYmKHQ9dC5wYXJlbnROb2RlLmNlbGxzWzFdKTt2YXIgaT10aGlzLnllYXIsYT10aGlzLm1vbnRoLHI9dC5jZWxsSW5kZXgsbD10LnBhcmVudE5vZGUucm93SW5kZXgsdT10aGlzLnJvd3NbbC0xXVtyXSxkPXUudGV4dCxjPXQuY2xhc3NOYW1lLGY9bmV3IERhdGUodGhpcy55ZWFyLHRoaXMubW9udGgsMSksaD1jLmluZGV4T2YoInByZXYiKT09PS0xJiZjLmluZGV4T2YoIm5leHQiKT09PS0xO2lmKGMuaW5kZXhPZigicHJldiIpIT09LTE/KDA9PT1hPyhpLT0xLGE9MTEpOmEtPTEsZi5zZXRGdWxsWWVhcihpKSxmLnNldE1vbnRoKGEpKTpjLmluZGV4T2YoIm5leHQiKSE9PS0xJiYoMTE9PT1hPyhpKz0xLGE9MCk6YSs9MSxmLnNldEZ1bGxZZWFyKGkpLGYuc2V0TW9udGgoYSkpLGYuc2V0RGF0ZShwYXJzZUludChkLDEwKSksaCYmInJhbmdlIj09PXRoaXMuc2VsZWN0aW9uTW9kZSlpZih0aGlzLm1pbkRhdGUmJnRoaXMubWF4RGF0ZSl7dmFyIHA9bmV3IERhdGUoZi5nZXRUaW1lKCkpLG09bnVsbDt0aGlzLiRlbWl0KCJwaWNrIix7bWluRGF0ZTpwLG1heERhdGU6bX0sITEpLHRoaXMucmFuZ2VTdGF0ZS5zZWxlY3Rpbmc9ITAsdGhpcy5tYXJrUmFuZ2UodGhpcy5taW5EYXRlKX1lbHNlIGlmKHRoaXMubWluRGF0ZSYmIXRoaXMubWF4RGF0ZSlpZihmPj10aGlzLm1pbkRhdGUpe3ZhciBnPW5ldyBEYXRlKGYuZ2V0VGltZSgpKTt0aGlzLnJhbmdlU3RhdGUuc2VsZWN0aW5nPSExLHRoaXMuJGVtaXQoInBpY2siLHttaW5EYXRlOnRoaXMubWluRGF0ZSxtYXhEYXRlOmd9KX1lbHNle3ZhciB2PW5ldyBEYXRlKGYuZ2V0VGltZSgpKTt0aGlzLiRlbWl0KCJwaWNrIix7bWluRGF0ZTp2LG1heERhdGU6dGhpcy5tYXhEYXRlfSwhMSl9ZWxzZSBpZighdGhpcy5taW5EYXRlKXt2YXIgeT1uZXcgRGF0ZShmLmdldFRpbWUoKSk7dGhpcy4kZW1pdCgicGljayIse21pbkRhdGU6eSxtYXhEYXRlOnRoaXMubWF4RGF0ZX0sITEpLHRoaXMucmFuZ2VTdGF0ZS5zZWxlY3Rpbmc9ITAsdGhpcy5tYXJrUmFuZ2UodGhpcy5taW5EYXRlKX1pZigiZGF5Ij09PW4pdGhpcy4kZW1pdCgicGljayIsZik7ZWxzZSBpZigid2VlayI9PT1uKXt2YXIgXz0oMCxzLmdldFdlZWtOdW1iZXIpKGYpLGI9Zi5nZXRGdWxsWWVhcigpKyJ3IitfO3RoaXMuJGVtaXQoInBpY2siLHt5ZWFyOmYuZ2V0RnVsbFllYXIoKSx3ZWVrOl8sdmFsdWU6YixkYXRlOmZ9KX19fX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgidGFibGUiLHtzdGF0aWNDbGFzczoiZWwtZGF0ZS10YWJsZSIsImNsYXNzIjp7ImlzLXdlZWstbW9kZSI6IndlZWsiPT09ZS5zZWxlY3Rpb25Nb2RlfSxhdHRyczp7Y2VsbHNwYWNpbmc6IjAiLGNlbGxwYWRkaW5nOiIwIn0sb246e2NsaWNrOmUuaGFuZGxlQ2xpY2ssbW91c2Vtb3ZlOmUuaGFuZGxlTW91c2VNb3ZlfX0sW2UuX2goInRib2R5IixbZS5faCgidHIiLFtlLnNob3dXZWVrTnVtYmVyP2UuX2goInRoIixbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIud2VlayIpKV0pOmUuX2UoKSxlLl9oKCJ0aCIsW2UuX3MoZS50KCJlbC5kYXRlcGlja2VyLndlZWtzLnN1biIpKV0pLGUuX2goInRoIixbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIud2Vla3MubW9uIikpXSksZS5faCgidGgiLFtlLl9zKGUudCgiZWwuZGF0ZXBpY2tlci53ZWVrcy50dWUiKSldKSxlLl9oKCJ0aCIsW2UuX3MoZS50KCJlbC5kYXRlcGlja2VyLndlZWtzLndlZCIpKV0pLGUuX2goInRoIixbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIud2Vla3MudGh1IikpXSksZS5faCgidGgiLFtlLl9zKGUudCgiZWwuZGF0ZXBpY2tlci53ZWVrcy5mcmkiKSldKSxlLl9oKCJ0aCIsW2UuX3MoZS50KCJlbC5kYXRlcGlja2VyLndlZWtzLnNhdCIpKV0pXSksZS5fbChlLnJvd3MsZnVuY3Rpb24odCl7cmV0dXJuIGUuX2goInRyIix7c3RhdGljQ2xhc3M6ImVsLWRhdGUtdGFibGVfX3JvdyIsImNsYXNzIjp7Y3VycmVudDplLnZhbHVlJiZlLmlzV2Vla0FjdGl2ZSh0WzFdKX19LFtlLl9sKHQsZnVuY3Rpb24odCl7cmV0dXJuIGUuX2goInRkIix7ImNsYXNzIjplLmdldENlbGxDbGFzc2VzKHQpLGRvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKCJ0b2RheSI9PT10LnR5cGU/ZS50KCJlbC5kYXRlcGlja2VyLnRvZGF5Iik6dC50ZXh0KX19KX0pXSl9KV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJ0cmFuc2l0aW9uIix7YXR0cnM6e25hbWU6Im1kLWZhZGUtYm90dG9tIn0sb246eyJhZnRlci1sZWF2ZSI6ZnVuY3Rpb24odCl7ZS4kZW1pdCgiZG9kZXN0cm95Iil9fX0sW2UuX2goImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUudmlzaWJsZSxleHByZXNzaW9uOiJ2aXNpYmxlIn1dLHN0YXRpY0NsYXNzOiJlbC1waWNrZXItcGFuZWwgZWwtZGF0ZS1waWNrZXIiLCJjbGFzcyI6eyJoYXMtc2lkZWJhciI6ZS4kc2xvdHMuc2lkZWJhcnx8ZS5zaG9ydGN1dHMsImhhcy10aW1lIjplLnNob3dUaW1lfSxzdHlsZTp7d2lkdGg6ZS53aWR0aCsicHgifX0sW2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1waWNrZXItcGFuZWxfX2JvZHktd3JhcHBlciJ9LFtlLl90KCJzaWRlYmFyIiksZS5zaG9ydGN1dHM/ZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXBpY2tlci1wYW5lbF9fc2lkZWJhciJ9LFtlLl9sKGUuc2hvcnRjdXRzLGZ1bmN0aW9uKHQpe3JldHVybiBlLl9oKCJidXR0b24iLHtzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsX19zaG9ydGN1dCIsYXR0cnM6e3R5cGU6ImJ1dHRvbiJ9LG9uOntjbGljazpmdW5jdGlvbihuKXtlLmhhbmRsZVNob3J0Y3V0Q2xpY2sodCl9fX0sW2UuX3ModC50ZXh0KV0pfSldKTplLl9lKCksZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXBpY2tlci1wYW5lbF9fYm9keSJ9LFtlLnNob3dUaW1lP2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1kYXRlLXBpY2tlcl9fdGltZS1oZWFkZXIifSxbZS5faCgic3BhbiIse3N0YXRpY0NsYXNzOiJlbC1kYXRlLXBpY2tlcl9fZWRpdG9yLXdyYXAifSxbZS5faCgiaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwubGF6eSIsdmFsdWU6ZS52aXNpYmxlRGF0ZSxleHByZXNzaW9uOiJ2aXNpYmxlRGF0ZSIsbW9kaWZpZXJzOntsYXp5OiEwfX1dLHN0YXRpY0NsYXNzOiJlbC1kYXRlLXBpY2tlcl9fZWRpdG9yIixhdHRyczp7cGxhY2Vob2RlcjplLnQoImVsLmRhdGVwaWNrZXIuc2VsZWN0RGF0ZSIpLHR5cGU6InRleHQifSxkb21Qcm9wczp7dmFsdWU6ZS5fcyhlLnZpc2libGVEYXRlKX0sb246e2NoYW5nZTpmdW5jdGlvbih0KXtlLnZpc2libGVEYXRlPXQudGFyZ2V0LnZhbHVlfX19KV0pLGUuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtZGF0ZS1waWNrZXJfX2VkaXRvci13cmFwIn0sW2UuX2goImlucHV0Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsLmxhenkiLHZhbHVlOmUudmlzaWJsZVRpbWUsZXhwcmVzc2lvbjoidmlzaWJsZVRpbWUiLG1vZGlmaWVyczp7bGF6eTohMH19XSxyZWY6ImlucHV0IixzdGF0aWNDbGFzczoiZWwtZGF0ZS1waWNrZXJfX2VkaXRvciIsYXR0cnM6e3BsYWNlaG9kZXI6ZS50KCJlbC5kYXRlcGlja2VyLnNlbGVjdFRpbWUiKSx0eXBlOiJ0ZXh0In0sZG9tUHJvcHM6e3ZhbHVlOmUuX3MoZS52aXNpYmxlVGltZSl9LG9uOntmb2N1czpmdW5jdGlvbih0KXtlLnRpbWVQaWNrZXJWaXNpYmxlPSFlLnRpbWVQaWNrZXJWaXNpYmxlfSxjaGFuZ2U6ZnVuY3Rpb24odCl7ZS52aXNpYmxlVGltZT10LnRhcmdldC52YWx1ZX19fSksZS5faCgidGltZS1waWNrZXIiLHtyZWY6InRpbWVwaWNrZXIiLGF0dHJzOntkYXRlOmUuZGF0ZSwicGlja2VyLXdpZHRoIjplLnBpY2tlcldpZHRoLHZpc2libGU6ZS50aW1lUGlja2VyVmlzaWJsZX0sb246e3BpY2s6ZS5oYW5kbGVUaW1lUGlja319KV0pXSk6ZS5fZSgpLGUuX2goImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOiJ0aW1lIiE9PWUuY3VycmVudFZpZXcsZXhwcmVzc2lvbjoiY3VycmVudFZpZXcgIT09ICd0aW1lJyJ9XSxzdGF0aWNDbGFzczoiZWwtZGF0ZS1waWNrZXJfX2hlYWRlciJ9LFtlLl9oKCJidXR0b24iLHtzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0biBlbC1kYXRlLXBpY2tlcl9fcHJldi1idG4gZWwtaWNvbi1kLWFycm93LWxlZnQiLGF0dHJzOnt0eXBlOiJidXR0b24ifSxvbjp7Y2xpY2s6ZS5wcmV2WWVhcn19KSxlLl9oKCJidXR0b24iLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZToiZGF0ZSI9PT1lLmN1cnJlbnRWaWV3LGV4cHJlc3Npb246ImN1cnJlbnRWaWV3ID09PSAnZGF0ZScifV0sc3RhdGljQ2xhc3M6ImVsLXBpY2tlci1wYW5lbF9faWNvbi1idG4gZWwtZGF0ZS1waWNrZXJfX3ByZXYtYnRuIGVsLWljb24tYXJyb3ctbGVmdCIsYXR0cnM6e3R5cGU6ImJ1dHRvbiJ9LG9uOntjbGljazplLnByZXZNb250aH19KSxlLl9oKCJzcGFuIix7c3RhdGljQ2xhc3M6ImVsLWRhdGUtcGlja2VyX19oZWFkZXItbGFiZWwiLG9uOntjbGljazplLnNob3dZZWFyUGlja2VyfX0sW2UuX3MoZS55ZWFyTGFiZWwpXSksZS5faCgic3BhbiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOiJkYXRlIj09PWUuY3VycmVudFZpZXcsZXhwcmVzc2lvbjoiY3VycmVudFZpZXcgPT09ICdkYXRlJyJ9XSxzdGF0aWNDbGFzczoiZWwtZGF0ZS1waWNrZXJfX2hlYWRlci1sYWJlbCIsImNsYXNzIjp7YWN0aXZlOiJtb250aCI9PT1lLmN1cnJlbnRWaWV3fSxvbjp7Y2xpY2s6ZS5zaG93TW9udGhQaWNrZXJ9fSxbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIubW9udGgiKyhlLm1vbnRoKzEpKSldKSxlLl9oKCJidXR0b24iLHtzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0biBlbC1kYXRlLXBpY2tlcl9fbmV4dC1idG4gZWwtaWNvbi1kLWFycm93LXJpZ2h0IixhdHRyczp7dHlwZToiYnV0dG9uIn0sb246e2NsaWNrOmUubmV4dFllYXJ9fSksZS5faCgiYnV0dG9uIix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ImRhdGUiPT09ZS5jdXJyZW50VmlldyxleHByZXNzaW9uOiJjdXJyZW50VmlldyA9PT0gJ2RhdGUnIn1dLHN0YXRpY0NsYXNzOiJlbC1waWNrZXItcGFuZWxfX2ljb24tYnRuIGVsLWRhdGUtcGlja2VyX19uZXh0LWJ0biBlbC1pY29uLWFycm93LXJpZ2h0IixhdHRyczp7dHlwZToiYnV0dG9uIn0sb246e2NsaWNrOmUubmV4dE1vbnRofX0pXSksZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXBpY2tlci1wYW5lbF9fY29udGVudCJ9LFtlLl9oKCJkYXRlLXRhYmxlIix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ImRhdGUiPT09ZS5jdXJyZW50VmlldyxleHByZXNzaW9uOiJjdXJyZW50VmlldyA9PT0gJ2RhdGUnIn1dLGF0dHJzOnt5ZWFyOmUueWVhcixtb250aDplLm1vbnRoLGRhdGU6ZS5kYXRlLHdlZWs6ZS53ZWVrLCJzZWxlY3Rpb24tbW9kZSI6ZS5zZWxlY3Rpb25Nb2RlLCJkaXNhYmxlZC1kYXRlIjplLmRpc2FibGVkRGF0ZX0sZG9tUHJvcHM6e3ZhbHVlOmUudmFsdWV9LG9uOntwaWNrOmUuaGFuZGxlRGF0ZVBpY2t9fSksZS5faCgieWVhci10YWJsZSIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOiJ5ZWFyIj09PWUuY3VycmVudFZpZXcsZXhwcmVzc2lvbjoiY3VycmVudFZpZXcgPT09ICd5ZWFyJyJ9XSxyZWY6InllYXJUYWJsZSIsYXR0cnM6e3llYXI6ZS55ZWFyLGRhdGU6ZS5kYXRlLCJkaXNhYmxlZC1kYXRlIjplLmRpc2FibGVkRGF0ZX0sb246e3BpY2s6ZS5oYW5kbGVZZWFyUGlja319KSxlLl9oKCJtb250aC10YWJsZSIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOiJtb250aCI9PT1lLmN1cnJlbnRWaWV3LGV4cHJlc3Npb246ImN1cnJlbnRWaWV3ID09PSAnbW9udGgnIn1dLGF0dHJzOnttb250aDplLm1vbnRoLGRhdGU6ZS5kYXRlLCJkaXNhYmxlZC1kYXRlIjplLmRpc2FibGVkRGF0ZX0sb246e3BpY2s6ZS5oYW5kbGVNb250aFBpY2t9fSldKV0pXSksZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS5mb290ZXJWaXNpYmxlJiYiZGF0ZSI9PT1lLmN1cnJlbnRWaWV3LGV4cHJlc3Npb246ImZvb3RlclZpc2libGUgJiYgY3VycmVudFZpZXcgPT09ICdkYXRlJyJ9XSxzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsX19mb290ZXIifSxbZS5faCgiYSIse3N0YXRpY0NsYXNzOiJlbC1waWNrZXItcGFuZWxfX2xpbmstYnRuIixhdHRyczp7aHJlZjoiSmF2YVNjcmlwdDoifSxvbjp7Y2xpY2s6ZS5jaGFuZ2VUb05vd319LFtlLl9zKGUudCgiZWwuZGF0ZXBpY2tlci5ub3ciKSldKSxlLl9oKCJidXR0b24iLHtzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsX19idG4iLGF0dHJzOnt0eXBlOiJidXR0b24ifSxvbjp7Y2xpY2s6ZS5jb25maXJtfX0sW2UuX3MoZS50KCJlbC5kYXRlcGlja2VyLmNvbmZpcm0iKSldKV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDE2Mik7dmFyIG89bigxNjMpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTQwKSxvPW4oMTEpLGE9aShvKTt0WyJkZWZhdWx0Il09e21peGluczpbYVsiZGVmYXVsdCJdXSxjb21wdXRlZDp7YnRuRGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hKHRoaXMubWluRGF0ZSYmdGhpcy5tYXhEYXRlJiYhdGhpcy5zZWxlY3RpbmcpfSxsZWZ0TGFiZWw6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRlLmdldEZ1bGxZZWFyKCkrIiAiK3RoaXMudCgiZWwuZGF0ZXBpY2tlci55ZWFyIikrIiAiK3RoaXMudCgiZWwuZGF0ZXBpY2tlci5tb250aCIrKHRoaXMuZGF0ZS5nZXRNb250aCgpKzEpKX0scmlnaHRMYWJlbDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJpZ2h0RGF0ZS5nZXRGdWxsWWVhcigpKyIgIit0aGlzLnQoImVsLmRhdGVwaWNrZXIueWVhciIpKyIgIit0aGlzLnQoImVsLmRhdGVwaWNrZXIubW9udGgiKyh0aGlzLnJpZ2h0RGF0ZS5nZXRNb250aCgpKzEpKX0sbGVmdFllYXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRlLmdldEZ1bGxZZWFyKCl9LGxlZnRNb250aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRhdGUuZ2V0TW9udGgoKX0scmlnaHRZZWFyOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmlnaHREYXRlLmdldEZ1bGxZZWFyKCl9LHJpZ2h0TW9udGg6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yaWdodERhdGUuZ2V0TW9udGgoKX0sbWluVmlzaWJsZURhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5taW5EYXRlPygwLHMuZm9ybWF0RGF0ZSkodGhpcy5taW5EYXRlKToiIn0sbWF4VmlzaWJsZURhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXhEYXRlfHx0aGlzLm1pbkRhdGU/KDAscy5mb3JtYXREYXRlKSh0aGlzLm1heERhdGV8fHRoaXMubWluRGF0ZSk6IiJ9LG1pblZpc2libGVUaW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWluRGF0ZT8oMCxzLmZvcm1hdERhdGUpKHRoaXMubWluRGF0ZSwiSEg6bW06c3MiKToiIn0sbWF4VmlzaWJsZVRpbWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXhEYXRlfHx0aGlzLm1pbkRhdGU/KDAscy5mb3JtYXREYXRlKSh0aGlzLm1heERhdGV8fHRoaXMubWluRGF0ZSwiSEg6bW06c3MiKToiIn0scmlnaHREYXRlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IERhdGUodGhpcy5kYXRlKSx0PWUuZ2V0TW9udGgoKTtyZXR1cm4gZS5zZXREYXRlKDEpLDExPT09dD8oZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrMSksZS5zZXRNb250aCgwKSk6ZS5zZXRNb250aCh0KzEpLGV9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue21pblBpY2tlcldpZHRoOjAsbWF4UGlja2VyV2lkdGg6MCxkYXRlOm5ldyBEYXRlLG1pbkRhdGU6IiIsbWF4RGF0ZToiIixyYW5nZVN0YXRlOntlbmREYXRlOm51bGwsc2VsZWN0aW5nOiExLHJvdzpudWxsLGNvbHVtbjpudWxsfSxzaG93VGltZTohMSxzaG9ydGN1dHM6IiIsdmFsdWU6IiIsdmlzaWJsZToiIixkaXNhYmxlZERhdGU6IiIsbWluVGltZVBpY2tlclZpc2libGU6ITEsbWF4VGltZVBpY2tlclZpc2libGU6ITEsd2lkdGg6MH19LHdhdGNoOntzaG93VGltZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2UmJnRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKGUpe3ZhciBuPXQuJHJlZnMubWluSW5wdXQsaT10LiRyZWZzLm1heElucHV0O24mJih0Lm1pblBpY2tlcldpZHRoPW4uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgrMTApLGkmJih0Lm1heFBpY2tlcldpZHRoPWkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgrMTApfSl9LG1pbkRhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCl7aWYoZS5tYXhEYXRlJiZlLm1heERhdGU8ZS5taW5EYXRlKXt2YXIgdD0iSEg6bW06c3MiO2UuJHJlZnMubWF4VGltZVBpY2tlci5zZWxlY3RhYmxlUmFuZ2U9W1soMCxzLnBhcnNlRGF0ZSkoKDAscy5mb3JtYXREYXRlKShlLm1pbkRhdGUsdCksdCksKDAscy5wYXJzZURhdGUpKCIyMzo1OTo1OSIsdCldXX19KX0sbWluVGltZVBpY2tlclZpc2libGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztlJiZ0aGlzLiRuZXh0VGljayhmdW5jdGlvbigpe3JldHVybiB0LiRyZWZzLm1pblRpbWVQaWNrZXIuYWp1c3RTY3JvbGxUb3AoKX0pfSxtYXhUaW1lUGlja2VyVmlzaWJsZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO2UmJnRoaXMuJG5leHRUaWNrKGZ1bmN0aW9uKCl7cmV0dXJuIHQuJHJlZnMubWF4VGltZVBpY2tlci5hanVzdFNjcm9sbFRvcCgpfSl9LHZhbHVlOmZ1bmN0aW9uKGUpe2U/QXJyYXkuaXNBcnJheShlKSYmKHRoaXMubWluRGF0ZT1lWzBdPygwLHMudG9EYXRlKShlWzBdKTpudWxsLHRoaXMubWF4RGF0ZT1lWzFdPygwLHMudG9EYXRlKShlWzFdKTpudWxsKToodGhpcy5taW5EYXRlPW51bGwsdGhpcy5tYXhEYXRlPW51bGwpfX0sbWV0aG9kczp7aGFuZGxlQ2xlYXI6ZnVuY3Rpb24oKXt0aGlzLm1pbkRhdGU9bnVsbCx0aGlzLm1heERhdGU9bnVsbCx0aGlzLmhhbmRsZUNvbmZpcm0oKX0saGFuZGxlRGF0ZUlucHV0OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS50YXJnZXQudmFsdWUsaT0oMCxzLnBhcnNlRGF0ZSkobiwieXl5eS1NTS1kZCIpO2lmKGkpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLmRpc2FibGVkRGF0ZSYmdGhpcy5kaXNhYmxlZERhdGUobmV3IERhdGUoaSkpKXJldHVybjt2YXIgbz1uZXcgRGF0ZSgibWluIj09PXQ/dGhpcy5taW5EYXRlOnRoaXMubWF4RGF0ZSk7byYmKG8uc2V0RnVsbFllYXIoaS5nZXRGdWxsWWVhcigpKSxvLnNldE1vbnRoKGkuZ2V0TW9udGgoKSksby5zZXREYXRlKGkuZ2V0RGF0ZSgpKSl9fSxoYW5kbGVDaGFuZ2VSYW5nZTpmdW5jdGlvbihlKXt0aGlzLm1pbkRhdGU9ZS5taW5EYXRlLHRoaXMubWF4RGF0ZT1lLm1heERhdGUsdGhpcy5yYW5nZVN0YXRlPWUucmFuZ2VTdGF0ZX0saGFuZGxlRGF0ZUNoYW5nZTpmdW5jdGlvbihlLHQpe3ZhciBuPWUudGFyZ2V0LnZhbHVlLGk9KDAscy5wYXJzZURhdGUpKG4sInl5eXktTU0tZGQiKTtpZihpKXt2YXIgbz1uZXcgRGF0ZSgibWluIj09PXQ/dGhpcy5taW5EYXRlOnRoaXMubWF4RGF0ZSk7byYmKG8uc2V0RnVsbFllYXIoaS5nZXRGdWxsWWVhcigpKSxvLnNldE1vbnRoKGkuZ2V0TW9udGgoKSksby5zZXREYXRlKGkuZ2V0RGF0ZSgpKSksIm1pbiI9PT10P288dGhpcy5tYXhEYXRlJiYodGhpcy5taW5EYXRlPW5ldyBEYXRlKG8uZ2V0VGltZSgpKSk6bz50aGlzLm1pbkRhdGUmJih0aGlzLm1heERhdGU9bmV3IERhdGUoby5nZXRUaW1lKCkpLHRoaXMubWluRGF0ZSYmdGhpcy5taW5EYXRlPnRoaXMubWF4RGF0ZSYmKHRoaXMubWluRGF0ZT1udWxsKSl9fSxoYW5kbGVUaW1lQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIG49ZS50YXJnZXQudmFsdWUsaT0oMCxzLnBhcnNlRGF0ZSkobiwiSEg6bW06c3MiKTtpZihpKXt2YXIgbz1uZXcgRGF0ZSgibWluIj09PXQ/dGhpcy5taW5EYXRlOnRoaXMubWF4RGF0ZSk7byYmKG8uc2V0SG91cnMoaS5nZXRIb3VycygpKSxvLnNldE1pbnV0ZXMoaS5nZXRNaW51dGVzKCkpLG8uc2V0U2Vjb25kcyhpLmdldFNlY29uZHMoKSkpLCJtaW4iPT09dD9vPHRoaXMubWF4RGF0ZSYmKHRoaXMubWluRGF0ZT1uZXcgRGF0ZShvLmdldFRpbWUoKSkpOm8+dGhpcy5taW5EYXRlJiYodGhpcy5tYXhEYXRlPW5ldyBEYXRlKG8uZ2V0VGltZSgpKSksdGhpcy4kcmVmc1t0KyJUaW1lUGlja2VyIl0udmFsdWU9byx0aGlzW3QrIlRpbWVQaWNrZXJWaXNpYmxlIl09ITF9fSxoYW5kbGVSYW5nZVBpY2s6ZnVuY3Rpb24oZSl7dmFyIHQ9IShhcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXSl8fGFyZ3VtZW50c1sxXTt0aGlzLm1heERhdGU9PT1lLm1heERhdGUmJnRoaXMubWluRGF0ZT09PWUubWluRGF0ZXx8KHRoaXMubWF4RGF0ZT1lLm1heERhdGUsdGhpcy5taW5EYXRlPWUubWluRGF0ZSx0JiYodGhpcy5zaG93VGltZXx8dGhpcy4kZW1pdCgicGljayIsW3RoaXMubWluRGF0ZSx0aGlzLm1heERhdGVdKSkpfSxjaGFuZ2VUb1RvZGF5OmZ1bmN0aW9uKCl7dGhpcy5kYXRlPW5ldyBEYXRlfSxoYW5kbGVTaG9ydGN1dENsaWNrOmZ1bmN0aW9uKGUpe2Uub25DbGljayYmZS5vbkNsaWNrKHRoaXMpfSxyZXNldFZpZXc6ZnVuY3Rpb24oKXt0aGlzLm1pblRpbWVQaWNrZXJWaXNpYmxlPSExLHRoaXMubWF4VGltZVBpY2tlclZpc2libGU9ITF9LHNldFRpbWU6ZnVuY3Rpb24oZSx0KXt2YXIgbj1uZXcgRGF0ZShlLmdldFRpbWUoKSksaT10LmdldEhvdXJzKCkscz10LmdldE1pbnV0ZXMoKSxvPXQuZ2V0U2Vjb25kcygpO3JldHVybiBuLnNldEhvdXJzKGkpLG4uc2V0TWludXRlcyhzKSxuLnNldFNlY29uZHMobyksbmV3IERhdGUobi5nZXRUaW1lKCkpfSxoYW5kbGVNaW5UaW1lUGljazpmdW5jdGlvbihlLHQsbil7dGhpcy5taW5EYXRlPXRoaXMubWluRGF0ZXx8bmV3IERhdGUsZSYmKHRoaXMubWluRGF0ZT10aGlzLnNldFRpbWUodGhpcy5taW5EYXRlLGUpKSxufHwodGhpcy5taW5UaW1lUGlja2VyVmlzaWJsZT10KX0saGFuZGxlTWF4VGltZVBpY2s6ZnVuY3Rpb24oZSx0LG4pe2lmKCF0aGlzLm1heERhdGUpe3ZhciBpPW5ldyBEYXRlO2k+PXRoaXMubWluRGF0ZSYmKHRoaXMubWF4RGF0ZT1uZXcgRGF0ZSl9dGhpcy5tYXhEYXRlJiZlJiYodGhpcy5tYXhEYXRlPXRoaXMuc2V0VGltZSh0aGlzLm1heERhdGUsZSkpLG58fCh0aGlzLm1heFRpbWVQaWNrZXJWaXNpYmxlPXQpfSxwcmV2TW9udGg6ZnVuY3Rpb24oKXt0aGlzLmRhdGU9KDAscy5wcmV2TW9udGgpKHRoaXMuZGF0ZSl9LG5leHRNb250aDpmdW5jdGlvbigpe3RoaXMuZGF0ZT0oMCxzLm5leHRNb250aCkodGhpcy5kYXRlKX0sbmV4dFllYXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmRhdGU7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCkrMSksdGhpcy5yZXNldERhdGUoKX0scHJldlllYXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmRhdGU7ZS5zZXRGdWxsWWVhcihlLmdldEZ1bGxZZWFyKCktMSksdGhpcy5yZXNldERhdGUoKX0saGFuZGxlQ29uZmlybTpmdW5jdGlvbigpe3RoaXMuJGVtaXQoInBpY2siLFt0aGlzLm1pbkRhdGUsdGhpcy5tYXhEYXRlXSl9LHJlc2V0RGF0ZTpmdW5jdGlvbigpe3RoaXMuZGF0ZT1uZXcgRGF0ZSh0aGlzLmRhdGUpfX0sY29tcG9uZW50czp7VGltZVBpY2tlcjpuKDE0NSksRGF0ZVRhYmxlOm4oMTU3KX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOiJtZC1mYWRlLWJvdHRvbSJ9LG9uOnsiYWZ0ZXItbGVhdmUiOmZ1bmN0aW9uKHQpe2UuJGVtaXQoImRvZGVzdHJveSIpfX19LFtlLl9oKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnZpc2libGUsZXhwcmVzc2lvbjoidmlzaWJsZSJ9XSxzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsIGVsLWRhdGUtcmFuZ2UtcGlja2VyIiwiY2xhc3MiOnsiaGFzLXNpZGViYXIiOmUuJHNsb3RzLnNpZGViYXJ8fGUuc2hvcnRjdXRzLCJoYXMtdGltZSI6ZS5zaG93VGltZX0sc3R5bGU6e3dpZHRoOmUud2lkdGgrInB4In19LFtlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsX19ib2R5LXdyYXBwZXIifSxbZS5fdCgic2lkZWJhciIpLGUuc2hvcnRjdXRzP2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1waWNrZXItcGFuZWxfX3NpZGViYXIifSxbZS5fbChlLnNob3J0Y3V0cyxmdW5jdGlvbih0KXtyZXR1cm4gZS5faCgiYnV0dG9uIix7c3RhdGljQ2xhc3M6ImVsLXBpY2tlci1wYW5lbF9fc2hvcnRjdXQiLGF0dHJzOnt0eXBlOiJidXR0b24ifSxvbjp7Y2xpY2s6ZnVuY3Rpb24obil7ZS5oYW5kbGVTaG9ydGN1dENsaWNrKHQpfX19LFtlLl9zKHQudGV4dCldKX0pXSk6ZS5fZSgpLGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1waWNrZXItcGFuZWxfX2JvZHkifSxbZS5zaG93VGltZT9lLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtZGF0ZS1yYW5nZS1waWNrZXJfX3RpbWUtaGVhZGVyIn0sW2UuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2VkaXRvcnMtd3JhcCJ9LFtlLl9oKCJzcGFuIix7c3RhdGljQ2xhc3M6ImVsLWRhdGUtcmFuZ2UtcGlja2VyX190aW1lLXBpY2tlci13cmFwIn0sW2UuX2goImlucHV0Iix7c3RhdGljQ2xhc3M6ImVsLWRhdGUtcmFuZ2UtcGlja2VyX19lZGl0b3IiLGF0dHJzOntwbGFjZWhvbGRlcjplLnQoImVsLmRhdGVwaWNrZXIuc3RhcnREYXRlIikKfSxkb21Qcm9wczp7dmFsdWU6ZS5taW5WaXNpYmxlRGF0ZX0sb246e2lucHV0OmZ1bmN0aW9uKHQpe2UuaGFuZGxlRGF0ZUlucHV0KHQsIm1pbiIpfSxjaGFuZ2U6ZnVuY3Rpb24odCl7ZS5oYW5kbGVEYXRlQ2hhbmdlKHQsIm1pbiIpfX19KV0pLGUuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtZGF0ZS1yYW5nZS1waWNrZXJfX3RpbWUtcGlja2VyLXdyYXAifSxbZS5faCgiaW5wdXQiLHtzdGF0aWNDbGFzczoiZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2VkaXRvciIsYXR0cnM6e3BsYWNlaG9sZGVyOmUudCgiZWwuZGF0ZXBpY2tlci5zdGFydFRpbWUiKX0sZG9tUHJvcHM6e3ZhbHVlOmUubWluVmlzaWJsZVRpbWV9LG9uOntmb2N1czpmdW5jdGlvbih0KXtlLm1pblRpbWVQaWNrZXJWaXNpYmxlPSFlLm1pblRpbWVQaWNrZXJWaXNpYmxlfSxjaGFuZ2U6ZnVuY3Rpb24odCl7ZS5oYW5kbGVUaW1lQ2hhbmdlKHQsIm1pbiIpfX19KSxlLl9oKCJ0aW1lLXBpY2tlciIse3JlZjoibWluVGltZVBpY2tlciIsYXR0cnM6eyJwaWNrZXItd2lkdGgiOmUubWluUGlja2VyV2lkdGgsZGF0ZTplLm1pbkRhdGUsdmlzaWJsZTplLm1pblRpbWVQaWNrZXJWaXNpYmxlfSxvbjp7cGljazplLmhhbmRsZU1pblRpbWVQaWNrfX0pXSldKSxlLl9oKCJzcGFuIix7c3RhdGljQ2xhc3M6ImVsLWljb24tYXJyb3ctcmlnaHQifSksZS5faCgic3BhbiIse3N0YXRpY0NsYXNzOiJlbC1kYXRlLXJhbmdlLXBpY2tlcl9fZWRpdG9ycy13cmFwIGlzLXJpZ2h0In0sW2UuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtZGF0ZS1yYW5nZS1waWNrZXJfX3RpbWUtcGlja2VyLXdyYXAifSxbZS5faCgiaW5wdXQiLHtyZWY6Im1pbklucHV0IixzdGF0aWNDbGFzczoiZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2VkaXRvciIsYXR0cnM6e3BsYWNlaG9sZGVyOmUudCgiZWwuZGF0ZXBpY2tlci5lbmREYXRlIikscmVhZG9ubHk6IWUubWluRGF0ZX0sZG9tUHJvcHM6e3ZhbHVlOmUubWF4VmlzaWJsZURhdGV9LG9uOntpbnB1dDpmdW5jdGlvbih0KXtlLmhhbmRsZURhdGVJbnB1dCh0LCJtYXgiKX0sY2hhbmdlOmZ1bmN0aW9uKHQpe2UuaGFuZGxlRGF0ZUNoYW5nZSh0LCJtYXgiKX19fSldKSxlLl9oKCJzcGFuIix7c3RhdGljQ2xhc3M6ImVsLWRhdGUtcmFuZ2UtcGlja2VyX190aW1lLXBpY2tlci13cmFwIn0sW2UuX2goImlucHV0Iix7cmVmOiJtYXhJbnB1dCIsc3RhdGljQ2xhc3M6ImVsLWRhdGUtcmFuZ2UtcGlja2VyX19lZGl0b3IiLGF0dHJzOntwbGFjZWhvbGRlcjplLnQoImVsLmRhdGVwaWNrZXIuZW5kVGltZSIpLHJlYWRvbmx5OiFlLm1pbkRhdGV9LGRvbVByb3BzOnt2YWx1ZTplLm1heFZpc2libGVUaW1lfSxvbjp7Zm9jdXM6ZnVuY3Rpb24odCl7ZS5taW5EYXRlJiYoZS5tYXhUaW1lUGlja2VyVmlzaWJsZT0hZS5tYXhUaW1lUGlja2VyVmlzaWJsZSl9LGNoYW5nZTpmdW5jdGlvbih0KXtlLmhhbmRsZVRpbWVDaGFuZ2UodCwibWF4Iil9fX0pLGUuX2goInRpbWUtcGlja2VyIix7cmVmOiJtYXhUaW1lUGlja2VyIixhdHRyczp7InBpY2tlci13aWR0aCI6ZS5tYXhQaWNrZXJXaWR0aCxkYXRlOmUubWF4RGF0ZSx2aXNpYmxlOmUubWF4VGltZVBpY2tlclZpc2libGV9LG9uOntwaWNrOmUuaGFuZGxlTWF4VGltZVBpY2t9fSldKV0pXSk6ZS5fZSgpLGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1waWNrZXItcGFuZWxfX2NvbnRlbnQgZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2NvbnRlbnQgaXMtbGVmdCJ9LFtlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2hlYWRlciJ9LFtlLl9oKCJidXR0b24iLHtzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsX19pY29uLWJ0biBlbC1pY29uLWQtYXJyb3ctbGVmdCIsYXR0cnM6e3R5cGU6ImJ1dHRvbiJ9LG9uOntjbGljazplLnByZXZZZWFyfX0pLGUuX2goImJ1dHRvbiIse3N0YXRpY0NsYXNzOiJlbC1waWNrZXItcGFuZWxfX2ljb24tYnRuIGVsLWljb24tYXJyb3ctbGVmdCIsYXR0cnM6e3R5cGU6ImJ1dHRvbiJ9LG9uOntjbGljazplLnByZXZNb250aH19KSxlLl9oKCJkaXYiLFtlLl9zKGUubGVmdExhYmVsKV0pXSksZS5faCgiZGF0ZS10YWJsZSIse2F0dHJzOnsic2VsZWN0aW9uLW1vZGUiOiJyYW5nZSIsZGF0ZTplLmRhdGUseWVhcjplLmxlZnRZZWFyLG1vbnRoOmUubGVmdE1vbnRoLCJtaW4tZGF0ZSI6ZS5taW5EYXRlLCJtYXgtZGF0ZSI6ZS5tYXhEYXRlLCJyYW5nZS1zdGF0ZSI6ZS5yYW5nZVN0YXRlLCJkaXNhYmxlZC1kYXRlIjplLmRpc2FibGVkRGF0ZX0sb246e2NoYW5nZXJhbmdlOmUuaGFuZGxlQ2hhbmdlUmFuZ2UscGljazplLmhhbmRsZVJhbmdlUGlja319KV0pLGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1waWNrZXItcGFuZWxfX2NvbnRlbnQgZWwtZGF0ZS1yYW5nZS1waWNrZXJfX2NvbnRlbnQgaXMtcmlnaHQifSxbZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLWRhdGUtcmFuZ2UtcGlja2VyX19oZWFkZXIifSxbZS5faCgiYnV0dG9uIix7c3RhdGljQ2xhc3M6ImVsLXBpY2tlci1wYW5lbF9faWNvbi1idG4gZWwtaWNvbi1kLWFycm93LXJpZ2h0IixhdHRyczp7dHlwZToiYnV0dG9uIn0sb246e2NsaWNrOmUubmV4dFllYXJ9fSksZS5faCgiYnV0dG9uIix7c3RhdGljQ2xhc3M6ImVsLXBpY2tlci1wYW5lbF9faWNvbi1idG4gZWwtaWNvbi1hcnJvdy1yaWdodCIsYXR0cnM6e3R5cGU6ImJ1dHRvbiJ9LG9uOntjbGljazplLm5leHRNb250aH19KSxlLl9oKCJkaXYiLFtlLl9zKGUucmlnaHRMYWJlbCldKV0pLGUuX2goImRhdGUtdGFibGUiLHthdHRyczp7InNlbGVjdGlvbi1tb2RlIjoicmFuZ2UiLGRhdGU6ZS5yaWdodERhdGUseWVhcjplLnJpZ2h0WWVhcixtb250aDplLnJpZ2h0TW9udGgsIm1pbi1kYXRlIjplLm1pbkRhdGUsIm1heC1kYXRlIjplLm1heERhdGUsInJhbmdlLXN0YXRlIjplLnJhbmdlU3RhdGUsImRpc2FibGVkLWRhdGUiOmUuZGlzYWJsZWREYXRlfSxvbjp7Y2hhbmdlcmFuZ2U6ZS5oYW5kbGVDaGFuZ2VSYW5nZSxwaWNrOmUuaGFuZGxlUmFuZ2VQaWNrfX0pXSldKV0pLGUuc2hvd1RpbWU/ZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXBpY2tlci1wYW5lbF9fZm9vdGVyIn0sW2UuX2goImEiLHtzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsX19saW5rLWJ0biIsb246e2NsaWNrOmUuaGFuZGxlQ2xlYXJ9fSxbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIuY2xlYXIiKSldKSxlLl9oKCJidXR0b24iLHtzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsX19idG4iLGF0dHJzOnt0eXBlOiJidXR0b24iLGRpc2FibGVkOmUuYnRuRGlzYWJsZWR9LG9uOntjbGljazplLmhhbmRsZUNvbmZpcm19fSxbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIuY29uZmlybSIpKV0pXSk6ZS5fZSgpXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE2NSksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxMzgpLG89aShzKSxhPW4oMTY2KSxyPWkoYSk7dFsiZGVmYXVsdCJdPXttaXhpbnM6W29bImRlZmF1bHQiXV0sbmFtZToiRWxUaW1lU2VsZWN0IixjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy50eXBlPSJ0aW1lLXNlbGVjdCIsdGhpcy5wYW5lbD1yWyJkZWZhdWx0Il19fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDE2Nyk7dmFyIG89bigxNjgpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5zcGxpdCgiOiIpO2lmKHQubGVuZ3RoPj0yKXt2YXIgbj1wYXJzZUludCh0WzBdLDEwKSxpPXBhcnNlSW50KHRbMV0sMTApO3JldHVybntob3VyczpuLG1pbnV0ZXM6aX19cmV0dXJuIG51bGx9LGk9ZnVuY3Rpb24oZSx0KXt2YXIgaT1uKGUpLHM9bih0KSxvPWkubWludXRlcys2MCppLmhvdXJzLGE9cy5taW51dGVzKzYwKnMuaG91cnM7cmV0dXJuIG89PT1hPzA6bz5hPzE6LTF9LHM9ZnVuY3Rpb24oZSl7cmV0dXJuKGUuaG91cnM8MTA/IjAiK2UuaG91cnM6ZS5ob3VycykrIjoiKyhlLm1pbnV0ZXM8MTA/IjAiK2UubWludXRlczplLm1pbnV0ZXMpfSxvPWZ1bmN0aW9uKGUsdCl7dmFyIGk9bihlKSxvPW4odCksYT17aG91cnM6aS5ob3VycyxtaW51dGVzOmkubWludXRlc307cmV0dXJuIGEubWludXRlcys9by5taW51dGVzLGEuaG91cnMrPW8uaG91cnMsYS5ob3Vycys9TWF0aC5mbG9vcihhLm1pbnV0ZXMvNjApLGEubWludXRlcz1hLm1pbnV0ZXMlNjAscyhhKX07dFsiZGVmYXVsdCJdPXt3YXRjaDp7bWluVGltZTpmdW5jdGlvbihlKXt0aGlzLnZhbHVlJiZlJiZpKHRoaXMudmFsdWUsZSk9PT0tMSYmdGhpcy4kZW1pdCgicGljayIpfX0sbWV0aG9kczp7aGFuZGxlQ2xpY2s6ZnVuY3Rpb24oZSl7ZS5kaXNhYmxlZHx8dGhpcy4kZW1pdCgicGljayIsZS52YWx1ZSl9LGhhbmRsZUNsZWFyOmZ1bmN0aW9uKCl7dGhpcy4kZW1pdCgicGljayIsIiIpfX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntzdGFydDoiMDk6MDAiLGVuZDoiMTg6MDAiLHN0ZXA6IjAwOjMwIix2YWx1ZToiIix2aXNpYmxlOiExLG1pblRpbWU6IiIsd2lkdGg6MH19LGNvbXB1dGVkOntpdGVtczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuc3RhcnQsdD10aGlzLmVuZCxuPXRoaXMuc3RlcCxzPVtdO2lmKGUmJnQmJm4pZm9yKHZhciBhPWU7aShhLHQpPD0wOylzLnB1c2goe3ZhbHVlOmEsZGlzYWJsZWQ6aShhLHRoaXMubWluVGltZXx8Ii0xOi0xIik8PTB9KSxhPW8oYSxuKTtyZXR1cm4gc319fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goInRyYW5zaXRpb24iLHthdHRyczp7bmFtZToibWQtZmFkZS1ib3R0b20ifSxvbjp7ImFmdGVyLWxlYXZlIjpmdW5jdGlvbih0KXtlLiRlbWl0KCJkb2Rlc3Ryb3kiKX19fSxbZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS52aXNpYmxlLGV4cHJlc3Npb246InZpc2libGUifV0sc3RhdGljQ2xhc3M6ImVsLXBpY2tlci1wYW5lbCB0aW1lLXNlbGVjdCIsc3R5bGU6e3dpZHRoOmUud2lkdGgrInB4In19LFtlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtcGlja2VyLXBhbmVsX19jb250ZW50In0sW2UuX2woZS5pdGVtcyxmdW5jdGlvbih0KXtyZXR1cm4gZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6InRpbWUtc2VsZWN0LWl0ZW0iLCJjbGFzcyI6e3NlbGVjdGVkOmUudmFsdWU9PT10LnZhbHVlLGRpc2FibGVkOnQuZGlzYWJsZWR9LGF0dHJzOntkaXNhYmxlZDp0LmRpc2FibGVkfSxvbjp7Y2xpY2s6ZnVuY3Rpb24obil7ZS5oYW5kbGVDbGljayh0KX19fSxbZS5fcyh0LnZhbHVlKV0pfSldKV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxNzApLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTM4KSxvPWkocyksYT1uKDE0NSkscj1pKGEpLGw9bigxNzEpLHU9aShsKTt0WyJkZWZhdWx0Il09e21peGluczpbb1siZGVmYXVsdCJdXSxuYW1lOiJFbFRpbWVQaWNrZXIiLHByb3BzOntpc1JhbmdlOkJvb2xlYW59LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnR5cGU9dGhpcy5pc1JhbmdlPyJ0aW1lcmFuZ2UiOiJ0aW1lIix0aGlzLnBhbmVsPXRoaXMuaXNSYW5nZT91WyJkZWZhdWx0Il06clsiZGVmYXVsdCJdfX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxNzIpO3ZhciBvPW4oMTczKTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE0MCksbz1uKDExKSxhPWkobykscj0oMCxzLnBhcnNlRGF0ZSkoIjAwOjAwOjAwIiwiSEg6bW06c3MiKSxsPSgwLHMucGFyc2VEYXRlKSgiMjM6NTk6NTkiLCJISDptbTpzcyIpLHU9ZnVuY3Rpb24oZSx0KXt2YXIgbj0zNjAwKmUuZ2V0SG91cnMoKSs2MCplLmdldE1pbnV0ZXMoKStlLmdldFNlY29uZHMoKSxpPTM2MDAqdC5nZXRIb3VycygpKzYwKnQuZ2V0TWludXRlcygpK3QuZ2V0U2Vjb25kcygpO3JldHVybiBuPml9LGQ9ZnVuY3Rpb24gYyhlKXtlPUFycmF5LmlzQXJyYXkoZSk/ZTpbZV07dmFyIHQ9ZVswXXx8bmV3IERhdGUsbj1uZXcgRGF0ZTtuLnNldEhvdXJzKG4uZ2V0SG91cnMoKSsxKTt2YXIgaT1lWzFdfHxuO3JldHVybiB0Pmk/YygpOnttaW5UaW1lOnQsbWF4VGltZTppfX07dFsiZGVmYXVsdCJdPXttaXhpbnM6W2FbImRlZmF1bHQiXV0sY29tcG9uZW50czp7VGltZVNwaW5uZXI6bigxNDcpfSxjb21wdXRlZDp7c2hvd1NlY29uZHM6ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5mb3JtYXR8fCIiKS5pbmRleE9mKCJzcyIpIT09LTF9fSxwcm9wczpbInZhbHVlIl0sd2F0Y2g6e3ZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWQoZSk7dC5taW5UaW1lPT09dGhpcy5taW5UaW1lJiZ0Lm1heFRpbWU9PT10aGlzLm1heFRpbWV8fCh0aGlzLmhhbmRsZU1pbkNoYW5nZSh7aG91cnM6dC5taW5UaW1lLmdldEhvdXJzKCksbWludXRlczp0Lm1pblRpbWUuZ2V0TWludXRlcygpLHNlY29uZHM6dC5taW5UaW1lLmdldFNlY29uZHMoKX0pLHRoaXMuaGFuZGxlTWF4Q2hhbmdlKHtob3Vyczp0Lm1heFRpbWUuZ2V0SG91cnMoKSxtaW51dGVzOnQubWF4VGltZS5nZXRNaW51dGVzKCksc2Vjb25kczp0Lm1heFRpbWUuZ2V0U2Vjb25kcygpfSkpfX0sZGF0YTpmdW5jdGlvbigpe3ZhciBlPWQodGhpcy4kb3B0aW9ucy5kZWZhdWx0VmFsdWUpO3JldHVybnttaW5UaW1lOmUubWluVGltZSxtYXhUaW1lOmUubWF4VGltZSxidG5EaXNhYmxlZDp1KGUubWluVGltZSxlLm1heFRpbWUpLG1heEhvdXJzOmUubWF4VGltZS5nZXRIb3VycygpLG1heE1pbnV0ZXM6ZS5tYXhUaW1lLmdldE1pbnV0ZXMoKSxtYXhTZWNvbmRzOmUubWF4VGltZS5nZXRTZWNvbmRzKCksbWluSG91cnM6ZS5taW5UaW1lLmdldEhvdXJzKCksbWluTWludXRlczplLm1pblRpbWUuZ2V0TWludXRlcygpLG1pblNlY29uZHM6ZS5taW5UaW1lLmdldFNlY29uZHMoKSxmb3JtYXQ6IkhIOm1tOnNzIix2aXNpYmxlOiExLHdpZHRoOjB9fSxtZXRob2RzOntoYW5kbGVDbGVhcjpmdW5jdGlvbigpe3RoaXMuaGFuZGxlQ2FuY2VsKCl9LGhhbmRsZUNhbmNlbDpmdW5jdGlvbigpe3RoaXMuJGVtaXQoInBpY2siKX0saGFuZGxlQ2hhbmdlOmZ1bmN0aW9uKCl7dGhpcy5taW5UaW1lPnRoaXMubWF4VGltZXx8KHRoaXMuJHJlZnMubWluU3Bpbm5lci5zZWxlY3RhYmxlUmFuZ2U9W1tyLHRoaXMubWF4VGltZV1dLHRoaXMuJHJlZnMubWF4U3Bpbm5lci5zZWxlY3RhYmxlUmFuZ2U9W1t0aGlzLm1pblRpbWUsbF1dLHRoaXMuaGFuZGxlQ29uZmlybSghMCkpfSxoYW5kbGVNYXhDaGFuZ2U6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5ob3VycyYmKHRoaXMubWF4VGltZS5zZXRIb3VycyhlLmhvdXJzKSx0aGlzLm1heEhvdXJzPXRoaXMubWF4VGltZS5nZXRIb3VycygpKSx2b2lkIDAhPT1lLm1pbnV0ZXMmJih0aGlzLm1heFRpbWUuc2V0TWludXRlcyhlLm1pbnV0ZXMpLHRoaXMubWF4TWludXRlcz10aGlzLm1heFRpbWUuZ2V0TWludXRlcygpKSx2b2lkIDAhPT1lLnNlY29uZHMmJih0aGlzLm1heFRpbWUuc2V0U2Vjb25kcyhlLnNlY29uZHMpLHRoaXMubWF4U2Vjb25kcz10aGlzLm1heFRpbWUuZ2V0U2Vjb25kcygpKSx0aGlzLmhhbmRsZUNoYW5nZSgpfSxoYW5kbGVNaW5DaGFuZ2U6ZnVuY3Rpb24oZSl7dm9pZCAwIT09ZS5ob3VycyYmKHRoaXMubWluVGltZS5zZXRIb3VycyhlLmhvdXJzKSx0aGlzLm1pbkhvdXJzPXRoaXMubWluVGltZS5nZXRIb3VycygpKSx2b2lkIDAhPT1lLm1pbnV0ZXMmJih0aGlzLm1pblRpbWUuc2V0TWludXRlcyhlLm1pbnV0ZXMpLHRoaXMubWluTWludXRlcz10aGlzLm1pblRpbWUuZ2V0TWludXRlcygpKSx2b2lkIDAhPT1lLnNlY29uZHMmJih0aGlzLm1pblRpbWUuc2V0U2Vjb25kcyhlLnNlY29uZHMpLHRoaXMubWluU2Vjb25kcz10aGlzLm1pblRpbWUuZ2V0U2Vjb25kcygpKSx0aGlzLmhhbmRsZUNoYW5nZSgpfSxzZXRNaW5TZWxlY3Rpb25SYW5nZTpmdW5jdGlvbihlLHQpe3RoaXMuJGVtaXQoInNlbGVjdC1yYW5nZSIsZSx0KX0sc2V0TWF4U2VsZWN0aW9uUmFuZ2U6ZnVuY3Rpb24oZSx0KXt0aGlzLiRlbWl0KCJzZWxlY3QtcmFuZ2UiLGUrMTEsdCsxMSl9LGhhbmRsZUNvbmZpcm06ZnVuY3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXSYmYXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0mJmFyZ3VtZW50c1sxXSxuPXRoaXMuJHJlZnMubWluU3Bpbm5lci5zZWxlY3RhYmxlUmFuZ2UsaT10aGlzLiRyZWZzLm1heFNwaW5uZXIuc2VsZWN0YWJsZVJhbmdlO3RoaXMubWluVGltZT0oMCxzLmxpbWl0UmFuZ2UpKHRoaXMubWluVGltZSxuKSx0aGlzLm1heFRpbWU9KDAscy5saW1pdFJhbmdlKSh0aGlzLm1heFRpbWUsaSksdHx8dGhpcy4kZW1pdCgicGljayIsW3RoaXMubWluVGltZSx0aGlzLm1heFRpbWVdLGUsdCl9LGFqdXN0U2Nyb2xsVG9wOmZ1bmN0aW9uKCl7dGhpcy4kcmVmcy5taW5TcGlubmVyLmFqdXN0U2Nyb2xsVG9wKCksdGhpcy4kcmVmcy5tYXhTcGlubmVyLmFqdXN0U2Nyb2xsVG9wKCl9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLiRuZXh0VGljayhmdW5jdGlvbigpe3JldHVybiBlLmhhbmRsZUNvbmZpcm0oITAsITApfSl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goInRyYW5zaXRpb24iLHthdHRyczp7bmFtZToibWQtZmFkZS1ib3R0b20ifSxvbjp7ImFmdGVyLWxlYXZlIjpmdW5jdGlvbih0KXtlLiRlbWl0KCJkb2Rlc3Ryb3kiKX19fSxbZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS52aXNpYmxlLGV4cHJlc3Npb246InZpc2libGUifV0sc3RhdGljQ2xhc3M6ImVsLXRpbWUtcmFuZ2UtcGlja2VyIGVsLXBpY2tlci1wYW5lbCIsc3R5bGU6e3dpZHRoOmUud2lkdGgrInB4In19LFtlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtdGltZS1yYW5nZS1waWNrZXJfX2NvbnRlbnQifSxbZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXRpbWUtcmFuZ2UtcGlja2VyX19jZWxsIn0sW2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC10aW1lLXJhbmdlLXBpY2tlcl9faGVhZGVyIn0sW2UuX3MoZS50KCJlbC5kYXRlcGlja2VyLnN0YXJ0VGltZSIpKV0pLGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC10aW1lLXJhbmdlLXBpY2tlcl9fYm9keSBlbC10aW1lLXBhbmVsX19jb250ZW50In0sW2UuX2goInRpbWUtc3Bpbm5lciIse3JlZjoibWluU3Bpbm5lciIsYXR0cnM6eyJzaG93LXNlY29uZHMiOmUuc2hvd1NlY29uZHMsaG91cnM6ZS5taW5Ib3VycyxtaW51dGVzOmUubWluTWludXRlcyxzZWNvbmRzOmUubWluU2Vjb25kc30sb246e2NoYW5nZTplLmhhbmRsZU1pbkNoYW5nZSwic2VsZWN0LXJhbmdlIjplLnNldE1pblNlbGVjdGlvblJhbmdlfX0pXSldKSxlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtdGltZS1yYW5nZS1waWNrZXJfX2NlbGwifSxbZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXRpbWUtcmFuZ2UtcGlja2VyX19oZWFkZXIifSxbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIuZW5kVGltZSIpKV0pLGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC10aW1lLXJhbmdlLXBpY2tlcl9fYm9keSBlbC10aW1lLXBhbmVsX19jb250ZW50In0sW2UuX2goInRpbWUtc3Bpbm5lciIse3JlZjoibWF4U3Bpbm5lciIsYXR0cnM6eyJzaG93LXNlY29uZHMiOmUuc2hvd1NlY29uZHMsaG91cnM6ZS5tYXhIb3VycyxtaW51dGVzOmUubWF4TWludXRlcyxzZWNvbmRzOmUubWF4U2Vjb25kc30sb246e2NoYW5nZTplLmhhbmRsZU1heENoYW5nZSwic2VsZWN0LXJhbmdlIjplLnNldE1heFNlbGVjdGlvblJhbmdlfX0pXSldKV0pLGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC10aW1lLXBhbmVsX19mb290ZXIifSxbZS5faCgiYnV0dG9uIix7c3RhdGljQ2xhc3M6ImVsLXRpbWUtcGFuZWxfX2J0biBjYW5jZWwiLGF0dHJzOnt0eXBlOiJidXR0b24ifSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5oYW5kbGVDYW5jZWwoKX19fSxbZS5fcyhlLnQoImVsLmRhdGVwaWNrZXIuY2FuY2VsIikpXSksZS5faCgiYnV0dG9uIix7c3RhdGljQ2xhc3M6ImVsLXRpbWUtcGFuZWxfX2J0biBjb25maXJtIixhdHRyczp7dHlwZToiYnV0dG9uIixkaXNhYmxlZDplLmJ0bkRpc2FibGVkfSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5oYW5kbGVDb25maXJtKCl9fX0sW2UuX3MoZS50KCJlbC5kYXRlcGlja2VyLmNvbmZpcm0iKSldKV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE3NSksbz1pKHMpLGE9bigxNzgpLHI9aShhKSxsPW4oMTQpLHU9aShsKTt1WyJkZWZhdWx0Il0uZGlyZWN0aXZlKCJwb3BvdmVyIixyWyJkZWZhdWx0Il0pLG9bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuZGlyZWN0aXZlKCJwb3BvdmVyIixyWyJkZWZhdWx0Il0pLGUuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LG9bImRlZmF1bHQiXS5kaXJlY3RpdmU9clsiZGVmYXVsdCJdLHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxNzYpO3ZhciBvPW4oMTc3KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDI0KSxvPWkocyksYT1uKDM4KTt0WyJkZWZhdWx0Il09e25hbWU6ImVsLXBvcG92ZXIiLG1peGluczpbb1siZGVmYXVsdCJdXSxwcm9wczp7dHJpZ2dlcjp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJjbGljayIsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVyblsiY2xpY2siLCJmb2N1cyIsImhvdmVyIiwibWFudWFsIl0uaW5kZXhPZihlKT4tMX19LHRpdGxlOlN0cmluZyxjb250ZW50OlN0cmluZyxyZWZlcmVuY2U6e30scG9wcGVyQ2xhc3M6U3RyaW5nLHdpZHRoOnt9LHZpc2libGVBcnJvdzp7ImRlZmF1bHQiOiEwfSx0cmFuc2l0aW9uOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6ImZhZGUtaW4tbGluZWFyIn19LHdhdGNoOntzaG93UG9wcGVyOmZ1bmN0aW9uKGUsdCl7ZT90aGlzLiRlbWl0KCJzaG93Iik6dGhpcy4kZW1pdCgiaGlkZSIpfX0sbW91bnRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLnJlZmVyZW5jZXx8dGhpcy4kcmVmcy5yZWZlcmVuY2Usbj10aGlzLnBvcHBlcnx8dGhpcy4kcmVmcy5wb3BwZXI7aWYoIXQmJnRoaXMuJHNsb3RzLnJlZmVyZW5jZSYmdGhpcy4kc2xvdHMucmVmZXJlbmNlWzBdJiYodD10aGlzLnJlZmVyZW5jZUVsbT10aGlzLiRzbG90cy5yZWZlcmVuY2VbMF0uZWxtKSwiY2xpY2siPT09dGhpcy50cmlnZ2VyKSgwLGEub24pKHQsImNsaWNrIixmdW5jdGlvbigpe2Uuc2hvd1BvcHBlcj0hZS5zaG93UG9wcGVyfSksKDAsYS5vbikoZG9jdW1lbnQsImNsaWNrIixmdW5jdGlvbihpKXtlLiRlbCYmdCYmIWUuJGVsLmNvbnRhaW5zKGkudGFyZ2V0KSYmIXQuY29udGFpbnMoaS50YXJnZXQpJiZuJiYhbi5jb250YWlucyhpLnRhcmdldCkmJihlLnNob3dQb3BwZXI9ITEpfSk7ZWxzZSBpZigiaG92ZXIiPT09dGhpcy50cmlnZ2VyKSgwLGEub24pKHQsIm1vdXNlZW50ZXIiLHRoaXMuaGFuZGxlTW91c2VFbnRlciksKDAsYS5vbikobiwibW91c2VlbnRlciIsdGhpcy5oYW5kbGVNb3VzZUVudGVyKSwoMCxhLm9uKSh0LCJtb3VzZWxlYXZlIix0aGlzLmhhbmRsZU1vdXNlTGVhdmUpLCgwLGEub24pKG4sIm1vdXNlbGVhdmUiLHRoaXMuaGFuZGxlTW91c2VMZWF2ZSk7ZWxzZSBpZigiZm9jdXMiPT09dGhpcy50cmlnZ2VyKXt2YXIgaT0hMTtpZihbXS5zbGljZS5jYWxsKHQuY2hpbGRyZW4pLmxlbmd0aClmb3IodmFyIHM9dC5jaGlsZE5vZGVzLG89cy5sZW5ndGgscj0wO3I8bztyKyspaWYoIklOUFVUIj09PXNbcl0ubm9kZU5hbWV8fCJURVhUQVJFQSI9PT1zW3JdLm5vZGVOYW1lKXsoMCxhLm9uKShzW3JdLCJmb2N1cyIsZnVuY3Rpb24oKXtlLnNob3dQb3BwZXI9ITB9KSwoMCxhLm9uKShzW3JdLCJibHVyIixmdW5jdGlvbigpe2Uuc2hvd1BvcHBlcj0hMX0pLGk9ITA7YnJlYWt9aWYoaSlyZXR1cm47IklOUFVUIj09PXQubm9kZU5hbWV8fCJURVhUQVJFQSI9PT10Lm5vZGVOYW1lPygoMCxhLm9uKSh0LCJmb2N1cyIsZnVuY3Rpb24oKXtlLnNob3dQb3BwZXI9ITB9KSwoMCxhLm9uKSh0LCJibHVyIixmdW5jdGlvbigpe2Uuc2hvd1BvcHBlcj0hMX0pKTooKDAsYS5vbikodCwibW91c2Vkb3duIixmdW5jdGlvbigpe2Uuc2hvd1BvcHBlcj0hMH0pLCgwLGEub24pKHQsIm1vdXNldXAiLGZ1bmN0aW9uKCl7ZS5zaG93UG9wcGVyPSExfSkpfX0sbWV0aG9kczp7aGFuZGxlTW91c2VFbnRlcjpmdW5jdGlvbigpe3RoaXMuc2hvd1BvcHBlcj0hMCxjbGVhclRpbWVvdXQodGhpcy5fdGltZXIpfSxoYW5kbGVNb3VzZUxlYXZlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLl90aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5zaG93UG9wcGVyPSExfSwyMDApfX0sZGVzdHJveWVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5yZWZlcmVuY2U7KDAsYS5vZmYpKGUsIm1vdXNldXAiKSwoMCxhLm9mZikoZSwibW91c2Vkb3duIiksKDAsYS5vZmYpKGUsImZvY3VzIiksKDAsYS5vZmYpKGUsImJsdXIiKSwoMCxhLm9mZikoZSwibW91c2VsZWF2ZSIpLCgwLGEub2ZmKShlLCJtb3VzZWVudGVyIil9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goInNwYW4iLFtlLl9oKCJ0cmFuc2l0aW9uIix7YXR0cnM6e25hbWU6ZS50cmFuc2l0aW9ufSxvbjp7ImFmdGVyLWxlYXZlIjplLmRvRGVzdHJveX19LFtlLl9oKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnNob3dQb3BwZXIsZXhwcmVzc2lvbjoic2hvd1BvcHBlciJ9XSxyZWY6InBvcHBlciIsc3RhdGljQ2xhc3M6ImVsLXBvcG92ZXIiLCJjbGFzcyI6W2UucG9wcGVyQ2xhc3NdLHN0eWxlOnt3aWR0aDplLndpZHRoKyJweCJ9fSxbZS50aXRsZT9lLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtcG9wb3Zlcl9fdGl0bGUiLGRvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKGUudGl0bGUpfX0pOmUuX2UoKSxlLl90KCJkZWZhdWx0IixbZS5fcyhlLmNvbnRlbnQpXSldKV0pLGUuX3QoInJlZmVyZW5jZSIpXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0WyJkZWZhdWx0Il09e2JpbmQ6ZnVuY3Rpb24oZSx0LG4pe24uY29udGV4dC4kcmVmc1t0LmFyZ10uJHJlZnMucmVmZXJlbmNlPWV9fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE4MCksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigxODEpO3ZhciBvPW4oMTgyKTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDI0KSxvPWkocyk7dFsiZGVmYXVsdCJdPXtuYW1lOiJlbC10b29sdGlwIixtaXhpbnM6W29bImRlZmF1bHQiXV0scHJvcHM6e29wZW5EZWxheTp7dHlwZTpOdW1iZXIsImRlZmF1bHQiOjB9LGRpc2FibGVkOkJvb2xlYW4sbWFudWFsOkJvb2xlYW4sZWZmZWN0Ont0eXBlOlN0cmluZywiZGVmYXVsdCI6ImRhcmsifSxjb250ZW50OlN0cmluZyx2aXNpYmxlQXJyb3c6eyJkZWZhdWx0IjohMH0sdHJhbnNpdGlvbjp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJmYWRlLWluLWxpbmVhciJ9LG9wdGlvbnM6eyJkZWZhdWx0IjpmdW5jdGlvbigpe3JldHVybntib3VuZGFyaWVzUGFkZGluZzoxMCxncHVBY2NlbGVyYXRpb246ITF9fX19LG1ldGhvZHM6e2hhbmRsZVNob3dQb3BwZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMubWFudWFsfHwodGhpcy50aW1lb3V0PXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLnNob3dQb3BwZXI9ITB9LHRoaXMub3BlbkRlbGF5KSl9LGhhbmRsZUNsb3NlUG9wcGVyOmZ1bmN0aW9uKCl7dGhpcy5tYW51YWx8fChjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0KSx0aGlzLnNob3dQb3BwZXI9ITEpfX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXRvb2x0aXAiLG9uOnttb3VzZWVudGVyOmUuaGFuZGxlU2hvd1BvcHBlcixtb3VzZWxlYXZlOmUuaGFuZGxlQ2xvc2VQb3BwZXJ9fSxbZS5faCgiZGl2Iix7cmVmOiJyZWZlcmVuY2UiLHN0YXRpY0NsYXNzOiJlbC10b29sdGlwX19yZWwifSxbZS5fdCgiZGVmYXVsdCIpXSksZS5faCgidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOmUudHJhbnNpdGlvbn0sb246eyJhZnRlci1sZWF2ZSI6ZS5kb0Rlc3Ryb3l9fSxbZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6IWUuZGlzYWJsZWQmJmUuc2hvd1BvcHBlcixleHByZXNzaW9uOiIhZGlzYWJsZWQgJiYgc2hvd1BvcHBlciJ9XSxyZWY6InBvcHBlciIsc3RhdGljQ2xhc3M6ImVsLXRvb2x0aXBfX3BvcHBlciIsImNsYXNzIjpbImlzLSIrZS5lZmZlY3RdfSxbZS5fdCgiY29udGVudCIsW2UuX2goImRpdiIse2RvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKGUuY29udGVudCl9fSldKV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE4NCksbz1pKHMpO3RbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITAsdC5NZXNzYWdlQm94PXZvaWQgMDt2YXIgcz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sbz1uKDE0KSxhPWkobykscj1uKDE4NSksbD1pKHIpLHU9bigxMzUpLGQ9aSh1KSxjPXt0aXRsZTp2b2lkIDAsbWVzc2FnZToiIix0eXBlOiIiLHNob3dJbnB1dDohMSxzaG93Q2xvc2U6ITAsbW9kYWxGYWRlOiEwLGxvY2tTY3JvbGw6ITAsY2xvc2VPbkNsaWNrTW9kYWw6ITAsaW5wdXRWYWx1ZTpudWxsLGlucHV0UGxhY2Vob2xkZXI6IiIsaW5wdXRQYXR0ZXJuOm51bGwsaW5wdXRWYWxpZGF0b3I6bnVsbCxpbnB1dEVycm9yTWVzc2FnZToiIixzaG93Q29uZmlybUJ1dHRvbjohMCxzaG93Q2FuY2VsQnV0dG9uOiExLGNvbmZpcm1CdXR0b25Qb3NpdGlvbjoicmlnaHQiLGNvbmZpcm1CdXR0b25IaWdobGlnaHQ6ITEsY2FuY2VsQnV0dG9uSGlnaGxpZ2h0OiExLGNvbmZpcm1CdXR0b25UZXh0OiIiLGNhbmNlbEJ1dHRvblRleHQ6IiIsY29uZmlybUJ1dHRvbkNsYXNzOiIiLGNhbmNlbEJ1dHRvbkNsYXNzOiIifSxmPWFbImRlZmF1bHQiXS5leHRlbmQobFsiZGVmYXVsdCJdKSxoPXZvaWQgMCxwPXZvaWQgMCxtPVtdLGc9ZnVuY3Rpb24oZSl7aWYoaCl7dmFyIHQ9aC5jYWxsYmFjaztpZigiZnVuY3Rpb24iPT10eXBlb2YgdCYmKHAuc2hvd0lucHV0P3QocC5pbnB1dFZhbHVlLGUpOnQoZSkpLGgucmVzb2x2ZSl7dmFyIG49aC5vcHRpb25zLiR0eXBlOyJjb25maXJtIj09PW58fCJwcm9tcHQiPT09bj8iY29uZmlybSI9PT1lP3Auc2hvd0lucHV0P2gucmVzb2x2ZSh7dmFsdWU6cC5pbnB1dFZhbHVlLGFjdGlvbjplfSk6aC5yZXNvbHZlKGUpOiJjYW5jZWwiPT09ZSYmaC5yZWplY3QmJmgucmVqZWN0KGUpOmgucmVzb2x2ZShlKX19fSx2PWZ1bmN0aW9uKCl7cD1uZXcgZih7ZWw6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iil9KSxwLmNhbGxiYWNrPWd9LHk9ZnVuY3Rpb24oKXtpZihwfHx2KCksKCFwLnZhbHVlfHxwLmNsb3NlVGltZXIpJiZtLmxlbmd0aD4wKXtoPW0uc2hpZnQoKTt2YXIgZT1oLm9wdGlvbnM7Zm9yKHZhciB0IGluIGUpZS5oYXNPd25Qcm9wZXJ0eSh0KSYmKHBbdF09ZVt0XSk7dm9pZCAwPT09ZS5jYWxsYmFjayYmKHAuY2FsbGJhY2s9ZyksWyJtb2RhbCIsInNob3dDbG9zZSIsImNsb3NlT25DbGlja01vZGFsIiwiY2xvc2VPblByZXNzRXNjYXBlIl0uZm9yRWFjaChmdW5jdGlvbihlKXt2b2lkIDA9PT1wW2VdJiYocFtlXT0hMCl9KSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHAuJGVsKSxhWyJkZWZhdWx0Il0ubmV4dFRpY2soZnVuY3Rpb24oKXtwLnZhbHVlPSEwfSl9fSxfPWZ1bmN0aW9uIGIoZSx0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGU/KGU9e21lc3NhZ2U6ZX0sYXJndW1lbnRzWzFdJiYoZS50aXRsZT1hcmd1bWVudHNbMV0pLGFyZ3VtZW50c1syXSYmKGUudHlwZT1hcmd1bWVudHNbMl0pKTplLmNhbGxiYWNrJiYhdCYmKHQ9ZS5jYWxsYmFjayksInVuZGVmaW5lZCIhPXR5cGVvZiBQcm9taXNlP25ldyBQcm9taXNlKGZ1bmN0aW9uKG4saSl7bS5wdXNoKHtvcHRpb25zOigwLGRbImRlZmF1bHQiXSkoe30sYyxiLmRlZmF1bHRzLGUpLGNhbGxiYWNrOnQscmVzb2x2ZTpuLHJlamVjdDppfSkseSgpfSk6KG0ucHVzaCh7b3B0aW9uczooMCxkWyJkZWZhdWx0Il0pKHt9LGMsYi5kZWZhdWx0cyxlKSxjYWxsYmFjazp0fSksdm9pZCB5KCkpfTtfLnNldERlZmF1bHRzPWZ1bmN0aW9uKGUpe18uZGVmYXVsdHM9ZX0sXy5hbGVydD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiB0PyJ1bmRlZmluZWQiOnModCkpJiYobj10LHQ9IiIpLF8oKDAsZFsiZGVmYXVsdCJdKSh7dGl0bGU6dCxtZXNzYWdlOmUsJHR5cGU6ImFsZXJ0IixjbG9zZU9uUHJlc3NFc2NhcGU6ITEsY2xvc2VPbkNsaWNrTW9kYWw6ITF9LG4pKX0sXy5jb25maXJtPWZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4ib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIHQ/InVuZGVmaW5lZCI6cyh0KSkmJihuPXQsdD0iIiksXygoMCxkWyJkZWZhdWx0Il0pKHt0aXRsZTp0LG1lc3NhZ2U6ZSwkdHlwZToiY29uZmlybSIsc2hvd0NhbmNlbEJ1dHRvbjohMH0sbikpfSxfLnByb21wdD1mdW5jdGlvbihlLHQsbil7cmV0dXJuIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiB0PyJ1bmRlZmluZWQiOnModCkpJiYobj10LHQ9IiIpLF8oKDAsZFsiZGVmYXVsdCJdKSh7dGl0bGU6dCxtZXNzYWdlOmUsc2hvd0NhbmNlbEJ1dHRvbjohMCxzaG93SW5wdXQ6ITAsJHR5cGU6InByb21wdCJ9LG4pKX0sXy5jbG9zZT1mdW5jdGlvbigpe3AudmFsdWU9ITEsbT1bXSxoPW51bGx9LHRbImRlZmF1bHQiXT1fLHQuTWVzc2FnZUJveD1ffSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMTg2KTt2YXIgbz1uKDE4Nyk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigyNiksbz1pKHMpLGE9bigxMSkscj1pKGEpLGw9bigxNyksdT1pKGwpLGQ9bigxMTIpLGM9aShkKSxmPW4oMzkpLGg9bigxMikscD17c3VjY2VzczoiY2lyY2xlLWNoZWNrIixpbmZvOiJpbmZvcm1hdGlvbiIsd2FybmluZzoid2FybmluZyIsZXJyb3I6ImNpcmNsZS1jcm9zcyJ9O3RbImRlZmF1bHQiXT17bWl4aW5zOltvWyJkZWZhdWx0Il0sclsiZGVmYXVsdCJdXSxwcm9wczp7bW9kYWw6eyJkZWZhdWx0IjohMH0sbG9ja1Njcm9sbDp7ImRlZmF1bHQiOiEwfSxzaG93Q2xvc2U6e3R5cGU6Qm9vbGVhbiwiZGVmYXVsdCI6ITB9LGNsb3NlT25DbGlja01vZGFsOnsiZGVmYXVsdCI6ITB9LGNsb3NlT25QcmVzc0VzY2FwZTp7ImRlZmF1bHQiOiEwfX0sY29tcG9uZW50czp7RWxJbnB1dDp1WyJkZWZhdWx0Il0sRWxCdXR0b246Y1siZGVmYXVsdCJdfSxjb21wdXRlZDp7dHlwZUNsYXNzOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudHlwZSYmcFt0aGlzLnR5cGVdPyJlbC1pY29uLSIrcFt0aGlzLnR5cGVdOiIifSxjb25maXJtQnV0dG9uQ2xhc3NlczpmdW5jdGlvbigpe3JldHVybiJlbC1idXR0b24tLXByaW1hcnkgIit0aGlzLmNvbmZpcm1CdXR0b25DbGFzc30sY2FuY2VsQnV0dG9uQ2xhc3NlczpmdW5jdGlvbigpe3JldHVybiIiK3RoaXMuY2FuY2VsQnV0dG9uQ2xhc3N9fSxtZXRob2RzOntkb0Nsb3NlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLnZhbHVlPSExLHRoaXMuX2Nsb3Npbmc9ITAsdGhpcy5vbkNsb3NlJiZ0aGlzLm9uQ2xvc2UoKSx0aGlzLmxvY2tTY3JvbGwmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLm1vZGFsJiYiaGlkZGVuIiE9PWUuYm9keU92ZXJmbG93JiYoZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz1lLmJvZHlPdmVyZmxvdyxkb2N1bWVudC5ib2R5LnN0eWxlLnBhZGRpbmdSaWdodD1lLmJvZHlQYWRkaW5nUmlnaHQpLGUuYm9keU92ZXJmbG93PW51bGwsZS5ib2R5UGFkZGluZ1JpZ2h0PW51bGx9LDIwMCksdGhpcy5vcGVuZWQ9ITEsdGhpcy50cmFuc2l0aW9ufHx0aGlzLmRvQWZ0ZXJDbG9zZSgpfSxoYW5kbGVXcmFwcGVyQ2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmNsb3NlT25DbGlja01vZGFsJiZ0aGlzLmNsb3NlKCl9LGhhbmRsZUFjdGlvbjpmdW5jdGlvbihlKXtpZigicHJvbXB0IiE9PXRoaXMuJHR5cGV8fCJjb25maXJtIiE9PWV8fHRoaXMudmFsaWRhdGUoKSl7dmFyIHQ9dGhpcy5jYWxsYmFjazt0aGlzLnZhbHVlPSExLHQoZSl9fSx2YWxpZGF0ZTpmdW5jdGlvbigpe2lmKCJwcm9tcHQiPT09dGhpcy4kdHlwZSl7dmFyIGU9dGhpcy5pbnB1dFBhdHRlcm47aWYoZSYmIWUudGVzdCh0aGlzLmlucHV0VmFsdWV8fCIiKSlyZXR1cm4gdGhpcy5lZGl0b3JFcnJvck1lc3NhZ2U9dGhpcy5pbnB1dEVycm9yTWVzc2FnZXx8KDAsaC50KSgiZWwubWVzc2FnZWJveC5lcnJvciIpLCgwLGYuYWRkQ2xhc3MpKHRoaXMuJHJlZnMuaW5wdXQuJGVsLnF1ZXJ5U2VsZWN0b3IoImlucHV0IiksImludmFsaWQiKSwhMTt2YXIgdD10aGlzLmlucHV0VmFsaWRhdG9yO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXt2YXIgbj10KHRoaXMuaW5wdXRWYWx1ZSk7aWYobj09PSExKXJldHVybiB0aGlzLmVkaXRvckVycm9yTWVzc2FnZT10aGlzLmlucHV0RXJyb3JNZXNzYWdlfHwoMCxoLnQpKCJlbC5tZXNzYWdlYm94LmVycm9yIiksKDAsZi5hZGRDbGFzcykodGhpcy4kcmVmcy5pbnB1dC4kZWwucXVlcnlTZWxlY3RvcigiaW5wdXQiKSwiaW52YWxpZCIpLCExO2lmKCJzdHJpbmciPT10eXBlb2YgbilyZXR1cm4gdGhpcy5lZGl0b3JFcnJvck1lc3NhZ2U9biwhMX19cmV0dXJuIHRoaXMuZWRpdG9yRXJyb3JNZXNzYWdlPSIiLCgwLGYucmVtb3ZlQ2xhc3MpKHRoaXMuJHJlZnMuaW5wdXQuJGVsLnF1ZXJ5U2VsZWN0b3IoImlucHV0IiksImludmFsaWQiKSwhMH19LHdhdGNoOntpbnB1dFZhbHVlOmZ1bmN0aW9uKGUpeyJwcm9tcHQiPT09dGhpcy4kdHlwZSYmbnVsbCE9PWUmJnRoaXMudmFsaWRhdGUoKX0sdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczsiYWxlcnQiIT09dGhpcy4kdHlwZSYmImNvbmZpcm0iIT09dGhpcy4kdHlwZXx8dGhpcy4kbmV4dFRpY2soZnVuY3Rpb24oKXt0LiRyZWZzLmNvbmZpcm0uJGVsLmZvY3VzKCl9KSwicHJvbXB0Ij09PXRoaXMuJHR5cGUmJihlP3NldFRpbWVvdXQoZnVuY3Rpb24oKXt0LiRyZWZzLmlucHV0JiZ0LiRyZWZzLmlucHV0LiRlbCYmdC4kcmVmcy5pbnB1dC4kZWwucXVlcnlTZWxlY3RvcigiaW5wdXQiKS5mb2N1cygpfSw1MDApOih0aGlzLmVkaXRvckVycm9yTWVzc2FnZT0iIiwoMCxmLnJlbW92ZUNsYXNzKSh0aGlzLiRyZWZzLmlucHV0LiRlbC5xdWVyeVNlbGVjdG9yKCJpbnB1dCIpLCJpbnZhbGlkIikpKX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57dGl0bGU6dm9pZCAwLG1lc3NhZ2U6IiIsdHlwZToiIixzaG93SW5wdXQ6ITEsaW5wdXRWYWx1ZTpudWxsLGlucHV0UGxhY2Vob2xkZXI6IiIsaW5wdXRQYXR0ZXJuOm51bGwsaW5wdXRWYWxpZGF0b3I6bnVsbCxpbnB1dEVycm9yTWVzc2FnZToiIixzaG93Q29uZmlybUJ1dHRvbjohMCxzaG93Q2FuY2VsQnV0dG9uOiExLGNvbmZpcm1CdXR0b25UZXh0OiIiLGNhbmNlbEJ1dHRvblRleHQ6IiIsY29uZmlybUJ1dHRvbkNsYXNzOiIiLGNvbmZpcm1CdXR0b25EaXNhYmxlZDohMSxjYW5jZWxCdXR0b25DbGFzczoiIixlZGl0b3JFcnJvck1lc3NhZ2U6bnVsbCxjYWxsYmFjazpudWxsfX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOiJtc2dib3gtZmFkZSJ9fSxbZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS52YWx1ZSxleHByZXNzaW9uOiJ2YWx1ZSJ9XSxzdGF0aWNDbGFzczoiZWwtbWVzc2FnZS1ib3hfX3dyYXBwZXIiLG9uOntjbGljazpmdW5jdGlvbih0KXt0LnRhcmdldD09PXQuY3VycmVudFRhcmdldCYmZS5oYW5kbGVXcmFwcGVyQ2xpY2sodCl9fX0sW2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1tZXNzYWdlLWJveCJ9LFt2b2lkIDAhPT1lLnRpdGxlP2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1tZXNzYWdlLWJveF9faGVhZGVyIn0sW2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1tZXNzYWdlLWJveF9fdGl0bGUifSxbZS5fcyhlLnRpdGxlfHxlLnQoImVsLm1lc3NhZ2Vib3gudGl0bGUiKSldKSxlLnNob3dDbG9zZT9lLl9oKCJpIix7c3RhdGljQ2xhc3M6ImVsLW1lc3NhZ2UtYm94X19jbG9zZSBlbC1pY29uLWNsb3NlIixvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5oYW5kbGVBY3Rpb24oImNhbmNlbCIpfX19KTplLl9lKCldKTplLl9lKCksIiIhPT1lLm1lc3NhZ2U/ZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLW1lc3NhZ2UtYm94X19jb250ZW50In0sW2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1tZXNzYWdlLWJveF9fc3RhdHVzIiwiY2xhc3MiOltlLnR5cGVDbGFzc119KSxlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtbWVzc2FnZS1ib3hfX21lc3NhZ2UiLHN0eWxlOnsibWFyZ2luLWxlZnQiOmUudHlwZUNsYXNzPyI1MHB4IjoiMCJ9fSxbZS5faCgicCIsW2UuX3MoZS5tZXNzYWdlKV0pXSksZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS5zaG93SW5wdXQsZXhwcmVzc2lvbjoic2hvd0lucHV0In1dLHN0YXRpY0NsYXNzOiJlbC1tZXNzYWdlLWJveF9faW5wdXQifSxbZS5faCgiZWwtaW5wdXQiLHtkaXJlY3RpdmVzOlt7bmFtZToibW9kZWwiLHJhd05hbWU6InYtbW9kZWwiLHZhbHVlOmUuaW5wdXRWYWx1ZSxleHByZXNzaW9uOiJpbnB1dFZhbHVlIn1dLHJlZjoiaW5wdXQiLGF0dHJzOntwbGFjZWhvbGRlcjplLmlucHV0UGxhY2Vob2xkZXJ9LGRvbVByb3BzOnt2YWx1ZTplLmlucHV0VmFsdWV9LG9uOntpbnB1dDpmdW5jdGlvbih0KXtlLmlucHV0VmFsdWU9dH19fSksZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLW1lc3NhZ2UtYm94X19lcnJvcm1zZyIsc3R5bGU6e3Zpc2liaWxpdHk6ZS5lZGl0b3JFcnJvck1lc3NhZ2U/InZpc2libGUiOiJoaWRkZW4ifX0sW2UuX3MoZS5lZGl0b3JFcnJvck1lc3NhZ2UpXSldKV0pOmUuX2UoKSxlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtbWVzc2FnZS1ib3hfX2J0bnMifSxbZS5faCgiZWwtYnV0dG9uIix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS5zaG93Q2FuY2VsQnV0dG9uLGV4cHJlc3Npb246InNob3dDYW5jZWxCdXR0b24ifV0sImNsYXNzIjpbZS5jYW5jZWxCdXR0b25DbGFzc2VzXSxuYXRpdmVPbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5oYW5kbGVBY3Rpb24oImNhbmNlbCIpfX19LFtlLl9zKGUuY2FuY2VsQnV0dG9uVGV4dHx8ZS50KCJlbC5tZXNzYWdlYm94LmNhbmNlbCIpKV0pLGUuX2goImVsLWJ1dHRvbiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUuc2hvd0NvbmZpcm1CdXR0b24sZXhwcmVzc2lvbjoic2hvd0NvbmZpcm1CdXR0b24ifV0scmVmOiJjb25maXJtIiwiY2xhc3MiOltlLmNvbmZpcm1CdXR0b25DbGFzc2VzXSxuYXRpdmVPbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5oYW5kbGVBY3Rpb24oImNvbmZpcm0iKX19fSxbZS5fcyhlLmNvbmZpcm1CdXR0b25UZXh0fHxlLnQoImVsLm1lc3NhZ2Vib3guY29uZmlybSIpKV0pXSldKV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigxODkpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMTkwKTt2YXIgbz1uKDE5MSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0WyJkZWZhdWx0Il09e25hbWU6IkVsQnJlYWRjcnVtYiIscHJvcHM6e3NlcGFyYXRvcjp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiIvIn19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1icmVhZGNydW1iIn0sW2UuX3QoImRlZmF1bHQiKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTkzKSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDE5NCk7dmFyIG89bigxOTUpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdFsiZGVmYXVsdCJdPXtuYW1lOiJFbEJyZWFkY3J1bWJJdGVtIixwcm9wczp7dG86e30scmVwbGFjZTpCb29sZWFufSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3NlcGFyYXRvcjoiIn19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3RoaXMuc2VwYXJhdG9yPXRoaXMuJHBhcmVudC5zZXBhcmF0b3I7dmFyIHQ9dGhpcztpZih0aGlzLnRvKXt2YXIgbj10aGlzLiRyZWZzLmxpbms7bi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsZnVuY3Rpb24obil7dmFyIGk9ZS50bzt0LnJlcGxhY2U/dC4kcm91dGVyLnJlcGxhY2UoaSk6dC4kcm91dGVyLnB1c2goaSl9KX19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtYnJlYWRjcnVtYl9faXRlbSJ9LFtlLl9oKCJzcGFuIix7cmVmOiJsaW5rIixzdGF0aWNDbGFzczoiZWwtYnJlYWRjcnVtYl9faXRlbV9faW5uZXIifSxbZS5fdCgiZGVmYXVsdCIpXSksZS5faCgic3BhbiIse3N0YXRpY0NsYXNzOiJlbC1icmVhZGNydW1iX19zZXBhcmF0b3IifSxbZS5fcyhlLnNlcGFyYXRvcildKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTk3KSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDE5OCk7dmFyIG89bigxOTkpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdFsiZGVmYXVsdCJdPXtuYW1lOiJFbEZvcm0iLGNvbXBvbmVudE5hbWU6IkVsRm9ybSIscHJvcHM6e21vZGVsOk9iamVjdCxydWxlczpPYmplY3QsbGFiZWxQb3NpdGlvbjpTdHJpbmcsbGFiZWxXaWR0aDpTdHJpbmcsbGFiZWxTdWZmaXg6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiIn0saW5saW5lOkJvb2xlYW59LHdhdGNoOntydWxlczpmdW5jdGlvbigpe3RoaXMudmFsaWRhdGUoKX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57ZmllbGRzOltdfX0sY3JlYXRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy4kb24oImVsLmZvcm0uYWRkRmllbGQiLGZ1bmN0aW9uKHQpe3QmJmUuZmllbGRzLnB1c2godCl9KSx0aGlzLiRvbigiZWwuZm9ybS5yZW1vdmVGaWVsZCIsZnVuY3Rpb24odCl7dC5wcm9wJiZlLmZpZWxkcy5zcGxpY2UoZS5maWVsZHMuaW5kZXhPZih0KSwxKX0pfSxtZXRob2RzOntyZXNldEZpZWxkczpmdW5jdGlvbigpe3RoaXMuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oZSl7ZS5yZXNldEZpZWxkKCl9KX0sdmFsaWRhdGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPSEwO3RoaXMuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oaSxzKXtpLnZhbGlkYXRlKCIiLGZ1bmN0aW9uKGkpe2kmJihuPSExKSwiZnVuY3Rpb24iPT10eXBlb2YgZSYmcz09PXQuZmllbGRzLmxlbmd0aC0xJiZlKG4pfSl9KX0sdmFsaWRhdGVGaWVsZDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZmllbGRzLmZpbHRlcihmdW5jdGlvbih0KXtyZXR1cm4gdC5wcm9wPT09ZX0pWzBdO2lmKCFuKXRocm93IG5ldyBFcnJvcigibXVzdCBjYWxsIHZhbGlkYXRlRmllbGQgd2l0aCB2YWxpZCBwcm9wIHN0cmluZyEiKTtuLnZhbGlkYXRlKCIiLHQpfX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiZm9ybSIse3N0YXRpY0NsYXNzOiJlbC1mb3JtIiwiY2xhc3MiOltlLmxhYmVsUG9zaXRpb24/ImVsLWZvcm0tLWxhYmVsLSIrZS5sYWJlbFBvc2l0aW9uOiIiLHsiZWwtZm9ybS0taW5saW5lIjplLmlubGluZX1dfSxbZS5fdCgiZGVmYXVsdCIpXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigyMDEpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMjAyKTt2YXIgbz1uKDIyOCk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBzKCl7fWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1lO3Q9dC5yZXBsYWNlKC9cWyhcdyspXF0vZywiLiQxIiksdD10LnJlcGxhY2UoL15cLi8sIiIpO2Zvcih2YXIgaT10LnNwbGl0KCIuIikscz0wLG89aS5sZW5ndGg7czxvLTE7KytzKXt2YXIgYT1pW3NdO2lmKCEoYSBpbiBuKSl0aHJvdyBuZXcgRXJyb3IoInBsZWFzZSB0cmFuc2ZlciBhIHZhbGlkIHByb3AgcGF0aCB0byBmb3JtIGl0ZW0hIik7bj1uW2FdfXJldHVybntvOm4sazppW3NdLHY6bltpW3NdXX19dC5fX2VzTW9kdWxlPSEwO3ZhciBhPW4oMjAzKSxyPWkoYSksbD1uKDEwKSx1PWkobCk7dFsiZGVmYXVsdCJdPXtuYW1lOiJFbEZvcm1JdGVtIixjb21wb25lbnROYW1lOiJFbEZvcm1JdGVtIixtaXhpbnM6W3VbImRlZmF1bHQiXV0scHJvcHM6e2xhYmVsOlN0cmluZyxsYWJlbFdpZHRoOlN0cmluZyxwcm9wOlN0cmluZyxyZXF1aXJlZDpCb29sZWFuLHJ1bGVzOltPYmplY3QsQXJyYXldLGVycm9yOlN0cmluZyx2YWxpZGF0ZVN0YXR1czpTdHJpbmd9LHdhdGNoOntlcnJvcjpmdW5jdGlvbihlKXt0aGlzLnZhbGlkYXRlTWVzc2FnZT1lLHRoaXMudmFsaWRhdGVTdGF0ZT0iZXJyb3IifSx2YWxpZGF0ZVN0YXR1czpmdW5jdGlvbihlKXt0aGlzLnZhbGlkYXRlU3RhdGU9ZX19LGNvbXB1dGVkOntsYWJlbFN0eWxlOmZ1bmN0aW9uKCl7dmFyIGU9e30sdD10aGlzLmxhYmVsV2lkdGh8fHRoaXMuZm9ybS5sYWJlbFdpZHRoO3JldHVybiB0JiYoZS53aWR0aD10KSxlfSxjb250ZW50U3R5bGU6ZnVuY3Rpb24oKXt2YXIgZT17fSx0PXRoaXMubGFiZWxXaWR0aHx8dGhpcy5mb3JtLmxhYmVsV2lkdGg7cmV0dXJuIHQmJihlLm1hcmdpbkxlZnQ9dCksZX0sZm9ybTpmdW5jdGlvbigpe2Zvcih2YXIgZT10aGlzLiRwYXJlbnQ7IkVsRm9ybSIhPT1lLiRvcHRpb25zLmNvbXBvbmVudE5hbWU7KWU9ZS4kcGFyZW50O3JldHVybiBlfSxmaWVsZFZhbHVlOntjYWNoZTohMSxnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmZvcm0ubW9kZWw7aWYoZSYmdGhpcy5wcm9wKXt2YXIgdD10aGlzLnByb3A7cmV0dXJuIHQuaW5kZXhPZigiOiIpIT09LTEmJih0PXQucmVwbGFjZSgvOi8sIi4iKSksbyhlLHQpLnZ9fX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57dmFsaWRhdGVTdGF0ZToiIix2YWxpZGF0ZU1lc3NhZ2U6IiIsdmFsaWRhdGVEaXNhYmxlZDohMSx2YWxpZGF0b3I6e30saXNSZXF1aXJlZDohMX19LG1ldGhvZHM6e3ZhbGlkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06cyxpPXRoaXMuZ2V0RmlsdGVyZWRSdWxlKGUpO2lmKCFpfHwwPT09aS5sZW5ndGgpcmV0dXJuIG4oKSwhMDt0aGlzLnZhbGlkYXRlU3RhdGU9InZhbGlkYXRpbmciO3ZhciBvPXt9O29bdGhpcy5wcm9wXT1pO3ZhciBhPW5ldyByWyJkZWZhdWx0Il0obyksbD17fTtsW3RoaXMucHJvcF09dGhpcy5maWVsZFZhbHVlLGEudmFsaWRhdGUobCx7Zmlyc3RGaWVsZHM6ITB9LGZ1bmN0aW9uKGUsaSl7dC52YWxpZGF0ZVN0YXRlPWU/ImVycm9yIjoic3VjY2VzcyIsdC52YWxpZGF0ZU1lc3NhZ2U9ZT9lWzBdLm1lc3NhZ2U6IiIsbihlKX0pfSxyZXNldEZpZWxkOmZ1bmN0aW9uKCl7dGhpcy52YWxpZGF0ZVN0YXRlPSIiLHRoaXMudmFsaWRhdGVNZXNzYWdlPSIiO3ZhciBlPXRoaXMuZm9ybS5tb2RlbCx0PXRoaXMuZmllbGRWYWx1ZSxuPXRoaXMucHJvcDtuLmluZGV4T2YoIjoiKSE9PS0xJiYobj1uLnJlcGxhY2UoLzovLCIuIikpO3ZhciBpPW8oZSxuKTtBcnJheS5pc0FycmF5KHQpJiZ0Lmxlbmd0aD4wPyh0aGlzLnZhbGlkYXRlRGlzYWJsZWQ9ITAsaS5vW2kua109W10pOnQmJih0aGlzLnZhbGlkYXRlRGlzYWJsZWQ9ITAsaS5vW2kua109dGhpcy5pbml0aWFsVmFsdWUpfSxnZXRSdWxlczpmdW5jdGlvbigpe3ZhciBlPXRoaXMuZm9ybS5ydWxlcyx0PXRoaXMucnVsZXM7cmV0dXJuIGU9ZT9lW3RoaXMucHJvcF06W10sW10uY29uY2F0KHR8fGV8fFtdKX0sZ2V0RmlsdGVyZWRSdWxlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0UnVsZXMoKTtyZXR1cm4gdC5maWx0ZXIoZnVuY3Rpb24odCl7cmV0dXJuIXQudHJpZ2dlcnx8dC50cmlnZ2VyLmluZGV4T2YoZSkhPT0tMX0pfSxvbkZpZWxkQmx1cjpmdW5jdGlvbigpe3RoaXMudmFsaWRhdGUoImJsdXIiKX0sb25GaWVsZENoYW5nZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnZhbGlkYXRlRGlzYWJsZWQ/dm9pZCh0aGlzLnZhbGlkYXRlRGlzYWJsZWQ9ITEpOnZvaWQgdGhpcy52YWxpZGF0ZSgiY2hhbmdlIil9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztpZih0aGlzLnByb3Ape3RoaXMuZGlzcGF0Y2goIkVsRm9ybSIsImVsLmZvcm0uYWRkRmllbGQiLFt0aGlzXSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsImluaXRpYWxWYWx1ZSIse3ZhbHVlOnRoaXMuZmllbGRWYWx1ZX0pO3ZhciB0PXRoaXMuZ2V0UnVsZXMoKTt0Lmxlbmd0aCYmKHQuZXZlcnkoZnVuY3Rpb24odCl7aWYodC5yZXF1aXJlZClyZXR1cm4gZS5pc1JlcXVpcmVkPSEwLCExfSksdGhpcy4kb24oImVsLmZvcm0uYmx1ciIsdGhpcy5vbkZpZWxkQmx1ciksdGhpcy4kb24oImVsLmZvcm0uY2hhbmdlIix0aGlzLm9uRmllbGRDaGFuZ2UpKX19LGJlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmRpc3BhdGNoKCJFbEZvcm0iLCJlbC5mb3JtLnJlbW92ZUZpZWxkIixbdGhpc10pfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBzKGUpe3RoaXMucnVsZXM9bnVsbCx0aGlzLl9tZXNzYWdlcz1kLm1lc3NhZ2VzLHRoaXMuZGVmaW5lKGUpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciBpIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4saSkmJihlW2ldPW5baV0pfXJldHVybiBlfSxhPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2YgU3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1ib2w/InN5bWJvbCI6dHlwZW9mIGV9LHI9bigyMDQpLGw9bigyMDUpLHU9aShsKSxkPW4oMjI3KSxjPW4oMjA3KTtzLnByb3RvdHlwZT17bWVzc2FnZXM6ZnVuY3Rpb24oZSl7cmV0dXJuIGUmJih0aGlzLl9tZXNzYWdlcz0oMCxyLmRlZXBNZXJnZSkoKDAsZC5uZXdNZXNzYWdlcykoKSxlKSksdGhpcy5fbWVzc2FnZXN9LGRlZmluZTpmdW5jdGlvbihlKXtpZighZSl0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBjb25maWd1cmUgYSBzY2hlbWEgd2l0aCBubyBydWxlcyIpO2lmKCJvYmplY3QiIT09KCJ1bmRlZmluZWQiPT10eXBlb2YgZT8idW5kZWZpbmVkIjphKGUpKXx8QXJyYXkuaXNBcnJheShlKSl0aHJvdyBuZXcgRXJyb3IoIlJ1bGVzIG11c3QgYmUgYW4gb2JqZWN0Iik7CnRoaXMucnVsZXM9e307dmFyIHQ9dm9pZCAwLG49dm9pZCAwO2Zvcih0IGluIGUpZS5oYXNPd25Qcm9wZXJ0eSh0KSYmKG49ZVt0XSx0aGlzLnJ1bGVzW3RdPUFycmF5LmlzQXJyYXkobik/bjpbbl0pfSx2YWxpZGF0ZTpmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe2Z1bmN0aW9uIHQoZSl7QXJyYXkuaXNBcnJheShlKT9zPXMuY29uY2F0LmFwcGx5KHMsZSk6cy5wdXNoKGUpfXZhciBuPXZvaWQgMCxpPXZvaWQgMCxzPVtdLG89e307Zm9yKG49MDtuPGUubGVuZ3RoO24rKyl0KGVbbl0pO2lmKHMubGVuZ3RoKWZvcihuPTA7bjxzLmxlbmd0aDtuKyspaT1zW25dLmZpZWxkLG9baV09b1tpXXx8W10sb1tpXS5wdXNoKHNbbl0pO2Vsc2Ugcz1udWxsLG89bnVsbDtoKHMsbyl9dmFyIG49dGhpcyxpPWFyZ3VtZW50cy5sZW5ndGg8PTF8fHZvaWQgMD09PWFyZ3VtZW50c1sxXT97fTphcmd1bWVudHNbMV0sbD1hcmd1bWVudHNbMl0sdT1lLGY9aSxoPWw7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGYmJihoPWYsZj17fSksIXRoaXMucnVsZXN8fDA9PT1PYmplY3Qua2V5cyh0aGlzLnJ1bGVzKS5sZW5ndGgpcmV0dXJuIHZvaWQoaCYmaCgpKTtpZihmLm1lc3NhZ2VzKXt2YXIgcD10aGlzLm1lc3NhZ2VzKCk7cD09PWQubWVzc2FnZXMmJihwPSgwLGQubmV3TWVzc2FnZXMpKCkpLCgwLHIuZGVlcE1lcmdlKShwLGYubWVzc2FnZXMpLGYubWVzc2FnZXM9cH1lbHNlIGYubWVzc2FnZXM9dGhpcy5tZXNzYWdlcygpO2YuZXJyb3I9Yy5lcnJvcjt2YXIgbT12b2lkIDAsZz12b2lkIDAsdj17fSx5PWYua2V5c3x8T2JqZWN0LmtleXModGhpcy5ydWxlcyk7eS5mb3JFYWNoKGZ1bmN0aW9uKHQpe209bi5ydWxlc1t0XSxnPXVbdF0sbS5mb3JFYWNoKGZ1bmN0aW9uKGkpe3ZhciBzPWk7ImZ1bmN0aW9uIj09dHlwZW9mIHMudHJhbnNmb3JtJiYodT09PWUmJih1PW8oe30sdSkpLGc9dVt0XT1zLnRyYW5zZm9ybShnKSkscz0iZnVuY3Rpb24iPT10eXBlb2Ygcz97dmFsaWRhdG9yOnN9Om8oe30scykscy52YWxpZGF0b3I9bi5nZXRWYWxpZGF0aW9uTWV0aG9kKHMpLHMuZmllbGQ9dCxzLmZ1bGxGaWVsZD1zLmZ1bGxGaWVsZHx8dCxzLnR5cGU9bi5nZXRUeXBlKHMpLHMudmFsaWRhdG9yJiYodlt0XT12W3RdfHxbXSx2W3RdLnB1c2goe3J1bGU6cyx2YWx1ZTpnLHNvdXJjZTp1LGZpZWxkOnR9KSl9KX0pO3ZhciBfPXt9OygwLHIuYXN5bmNNYXApKHYsZixmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gbyh7fSx0LHtmdWxsRmllbGQ6bC5mdWxsRmllbGQrIi4iK2V9KX1mdW5jdGlvbiBpKCl7dmFyIGk9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJndW1lbnRzWzBdP1tdOmFyZ3VtZW50c1swXSxhPWk7aWYoQXJyYXkuaXNBcnJheShhKXx8KGE9W2FdKSxhLmxlbmd0aCYmKDAsci53YXJuaW5nKSgiYXN5bmMtdmFsaWRhdG9yOiIsYSksYS5sZW5ndGgmJmwubWVzc2FnZSYmKGE9W10uY29uY2F0KGwubWVzc2FnZSkpLGE9YS5tYXAoKDAsci5jb21wbGVtZW50RXJyb3IpKGwpKSwoZi5maXJzdHx8Zi5maWVsZEZpcnN0KSYmYS5sZW5ndGgpcmV0dXJuIF9bbC5maWVsZF09MSx0KGEpO2lmKHUpe2lmKGwucmVxdWlyZWQmJiFlLnZhbHVlKXJldHVybiBhPWwubWVzc2FnZT9bXS5jb25jYXQobC5tZXNzYWdlKS5tYXAoKDAsci5jb21wbGVtZW50RXJyb3IpKGwpKTpbZi5lcnJvcihsLCgwLHIuZm9ybWF0KShmLm1lc3NhZ2VzLnJlcXVpcmVkLGwuZmllbGQpKV0sdChhKTt2YXIgZD17fTtpZihsLmRlZmF1bHRGaWVsZClmb3IodmFyIGMgaW4gZS52YWx1ZSllLnZhbHVlLmhhc093blByb3BlcnR5KGMpJiYoZFtjXT1sLmRlZmF1bHRGaWVsZCk7ZD1vKHt9LGQsZS5ydWxlLmZpZWxkcyk7Zm9yKHZhciBoIGluIGQpaWYoZC5oYXNPd25Qcm9wZXJ0eShoKSl7dmFyIHA9QXJyYXkuaXNBcnJheShkW2hdKT9kW2hdOltkW2hdXTtkW2hdPXAubWFwKG4uYmluZChudWxsLGgpKX12YXIgbT1uZXcgcyhkKTttLm1lc3NhZ2VzKGYubWVzc2FnZXMpLGUucnVsZS5vcHRpb25zJiYoZS5ydWxlLm9wdGlvbnMubWVzc2FnZXM9Zi5tZXNzYWdlcyxlLnJ1bGUub3B0aW9ucy5lcnJvcj1mLmVycm9yKSxtLnZhbGlkYXRlKGUudmFsdWUsZS5ydWxlLm9wdGlvbnN8fGYsZnVuY3Rpb24oZSl7dChlJiZlLmxlbmd0aD9hLmNvbmNhdChlKTplKX0pfWVsc2UgdChhKX12YXIgbD1lLnJ1bGUsdT0hKCJvYmplY3QiIT09bC50eXBlJiYiYXJyYXkiIT09bC50eXBlfHwib2JqZWN0IiE9PWEobC5maWVsZHMpJiYib2JqZWN0IiE9PWEobC5kZWZhdWx0RmllbGQpKTt1PXUmJihsLnJlcXVpcmVkfHwhbC5yZXF1aXJlZCYmZS52YWx1ZSksbC5maWVsZD1lLmZpZWxkLGwudmFsaWRhdG9yKGwsZS52YWx1ZSxpLGUuc291cmNlLGYpfSxmdW5jdGlvbihlKXt0KGUpfSl9LGdldFR5cGU6ZnVuY3Rpb24oZSl7aWYodm9pZCAwPT09ZS50eXBlJiZlLnBhdHRlcm4gaW5zdGFuY2VvZiBSZWdFeHAmJihlLnR5cGU9InBhdHRlcm4iKSwiZnVuY3Rpb24iIT10eXBlb2YgZS52YWxpZGF0b3ImJmUudHlwZSYmIXVbImRlZmF1bHQiXS5oYXNPd25Qcm9wZXJ0eShlLnR5cGUpKXRocm93IG5ldyBFcnJvcigoMCxyLmZvcm1hdCkoIlVua25vd24gcnVsZSB0eXBlICVzIixlLnR5cGUpKTtyZXR1cm4gZS50eXBlfHwic3RyaW5nIn0sZ2V0VmFsaWRhdGlvbk1ldGhvZDpmdW5jdGlvbihlKXtpZigiZnVuY3Rpb24iPT10eXBlb2YgZS52YWxpZGF0b3IpcmV0dXJuIGUudmFsaWRhdG9yO3ZhciB0PU9iamVjdC5rZXlzKGUpO3JldHVybiAxPT09dC5sZW5ndGgmJiJyZXF1aXJlZCI9PT10WzBdP3VbImRlZmF1bHQiXS5yZXF1aXJlZDp1WyJkZWZhdWx0Il1bdGhpcy5nZXRUeXBlKGUpXXx8ITF9fSxzLnJlZ2lzdGVyPWZ1bmN0aW9uKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQpdGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgcmVnaXN0ZXIgYSB2YWxpZGF0b3IgYnkgdHlwZSwgdmFsaWRhdG9yIGlzIG5vdCBhIGZ1bmN0aW9uIik7dVsiZGVmYXVsdCJdW2VdPXR9LHMubWVzc2FnZXM9ZC5tZXNzYWdlcyx0WyJkZWZhdWx0Il09cyxlLmV4cG9ydHM9dFsiZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSx0KXt0LmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiJzdHJpbmciPT10eXBlb2YgZX0pJiZ2KGUsdCl9ZnVuY3Rpb24gcygpe2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1hcmd1bWVudHNbbl07dmFyIGk9MSxzPXRbMF0sbz10Lmxlbmd0aDtpZigiZnVuY3Rpb24iPT10eXBlb2YgcylyZXR1cm4gcy5hcHBseShudWxsLHQuc2xpY2UoMSkpO2lmKCJzdHJpbmciPT10eXBlb2Ygcyl7Zm9yKHZhciBhPVN0cmluZyhzKS5yZXBsYWNlKGcsZnVuY3Rpb24oZSl7aWYoIiUlIj09PWUpcmV0dXJuIiUiO2lmKGk+PW8pcmV0dXJuIGU7c3dpdGNoKGUpe2Nhc2UiJXMiOnJldHVybiBTdHJpbmcodFtpKytdKTtjYXNlIiVkIjpyZXR1cm4gTnVtYmVyKHRbaSsrXSk7Y2FzZSIlaiI6dHJ5e3JldHVybiBKU09OLnN0cmluZ2lmeSh0W2krK10pfWNhdGNoKG4pe3JldHVybiJbQ2lyY3VsYXJdIn1icmVhaztkZWZhdWx0OnJldHVybiBlfX0pLHI9dFtpXTtpPG87cj10WysraV0pYSs9IiAiK3I7cmV0dXJuIGF9cmV0dXJuIHN9ZnVuY3Rpb24gbyhlKXtyZXR1cm4ic3RyaW5nIj09PWV8fCJ1cmwiPT09ZXx8ImhleCI9PT1lfHwiZW1haWwiPT09ZX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIHZvaWQgMD09PWV8fG51bGw9PT1lfHwoISgiYXJyYXkiIT09dHx8IUFycmF5LmlzQXJyYXkoZSl8fGUubGVuZ3RoKXx8ISghbyh0KXx8InN0cmluZyIhPXR5cGVvZiBlfHxlKSl9ZnVuY3Rpb24gcihlKXtyZXR1cm4gMD09PU9iamVjdC5rZXlzKGUpLmxlbmd0aH1mdW5jdGlvbiBsKGUsdCxuKXtmdW5jdGlvbiBpKGUpe3MucHVzaC5hcHBseShzLGUpLG8rKyxvPT09YSYmbihzKX12YXIgcz1bXSxvPTAsYT1lLmxlbmd0aDtlLmZvckVhY2goZnVuY3Rpb24oZSl7dChlLGkpfSl9ZnVuY3Rpb24gdShlLHQsbil7ZnVuY3Rpb24gaShhKXtpZihhJiZhLmxlbmd0aClyZXR1cm4gdm9pZCBuKGEpO3ZhciByPXM7cys9MSxyPG8/dChlW3JdLGkpOm4oW10pfXZhciBzPTAsbz1lLmxlbmd0aDtpKFtdKX1mdW5jdGlvbiBkKGUpe3ZhciB0PVtdO3JldHVybiBPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3QucHVzaC5hcHBseSh0LGVbbl0pfSksdH1mdW5jdGlvbiBjKGUsdCxuLGkpe2lmKHQuZmlyc3Qpe3ZhciBzPWQoZSk7cmV0dXJuIHUocyxuLGkpfXZhciBvPXQuZmlyc3RGaWVsZHN8fFtdO289PT0hMCYmKG89T2JqZWN0LmtleXMoZSkpO3ZhciBhPU9iamVjdC5rZXlzKGUpLHI9YS5sZW5ndGgsYz0wLGY9W10saD1mdW5jdGlvbihlKXtmLnB1c2guYXBwbHkoZixlKSxjKyssYz09PXImJmkoZil9O2EuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgaT1lW3RdO28uaW5kZXhPZih0KSE9PS0xP3UoaSxuLGgpOmwoaSxuLGgpfSl9ZnVuY3Rpb24gZihlKXtyZXR1cm4gZnVuY3Rpb24odCl7cmV0dXJuIHQmJnQubWVzc2FnZT8odC5maWVsZD10LmZpZWxkfHxlLmZ1bGxGaWVsZCx0KTp7bWVzc2FnZTp0LGZpZWxkOnQuZmllbGR8fGUuZnVsbEZpZWxkfX19ZnVuY3Rpb24gaChlLHQpe2lmKHQpZm9yKHZhciBuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIGk9dFtuXTsib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIGk/InVuZGVmaW5lZCI6bShpKSkmJiJvYmplY3QiPT09bShlW25dKT9lW25dPXAoe30sZVtuXSxpKTplW25dPWl9cmV0dXJuIGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBwPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIGkgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixpKSYmKGVbaV09bltpXSl9cmV0dXJuIGV9LG09ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbD8ic3ltYm9sIjp0eXBlb2YgZX07dC53YXJuaW5nPWksdC5mb3JtYXQ9cyx0LmlzRW1wdHlWYWx1ZT1hLHQuaXNFbXB0eU9iamVjdD1yLHQuYXN5bmNNYXA9Yyx0LmNvbXBsZW1lbnRFcnJvcj1mLHQuZGVlcE1lcmdlPWg7dmFyIGc9LyVbc2RqJV0vZyx2PWZ1bmN0aW9uKCl7fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e3N0cmluZzpuKDIwNiksbWV0aG9kOm4oMjE0KSxudW1iZXI6bigyMTUpLCJib29sZWFuIjpuKDIxNikscmVnZXhwOm4oMjE3KSxpbnRlZ2VyOm4oMjE4KSwiZmxvYXQiOm4oMjE5KSxhcnJheTpuKDIyMCksb2JqZWN0Om4oMjIxKSwiZW51bSI6bigyMjIpLHBhdHRlcm46bigyMjMpLGVtYWlsOm4oMjI0KSx1cmw6bigyMjQpLGRhdGU6bigyMjUpLGhleDpuKDIyNCkscmVxdWlyZWQ6bigyMjYpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fWZ1bmN0aW9uIHMoZSx0LG4saSxzKXt2YXIgbz1bXSxsPWUucmVxdWlyZWR8fCFlLnJlcXVpcmVkJiZpLmhhc093blByb3BlcnR5KGUuZmllbGQpO2lmKGwpe2lmKCgwLHIuaXNFbXB0eVZhbHVlKSh0LCJzdHJpbmciKSYmIWUucmVxdWlyZWQpcmV0dXJuIG4oKTthWyJkZWZhdWx0Il0ucmVxdWlyZWQoZSx0LGksbyxzLCJzdHJpbmciKSwoMCxyLmlzRW1wdHlWYWx1ZSkodCwic3RyaW5nIil8fChhWyJkZWZhdWx0Il0udHlwZShlLHQsaSxvLHMpLGFbImRlZmF1bHQiXS5yYW5nZShlLHQsaSxvLHMpLGFbImRlZmF1bHQiXS5wYXR0ZXJuKGUsdCxpLG8scyksZS53aGl0ZXNwYWNlPT09ITAmJmFbImRlZmF1bHQiXS53aGl0ZXNwYWNlKGUsdCxpLG8scykpfW4obyl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMjA3KSxhPWkobykscj1uKDIwNCk7dFsiZGVmYXVsdCJdPXMsZS5leHBvcnRzPXRbImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdFsiZGVmYXVsdCJdPXtyZXF1aXJlZDpuKDIwOCksd2hpdGVzcGFjZTpuKDIwOSksdHlwZTpuKDIxMCkscmFuZ2U6bigyMTEpLCJlbnVtIjpuKDIxMikscGF0dGVybjpuKDIxMyl9LGUuZXhwb3J0cz10WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHRbImRlZmF1bHQiXT1lLHR9ZnVuY3Rpb24gcyhlLHQsbixpLHMsbyl7IWUucmVxdWlyZWR8fG4uaGFzT3duUHJvcGVydHkoZS5maWVsZCkmJiFhLmlzRW1wdHlWYWx1ZSh0LG8pfHxpLnB1c2goYS5mb3JtYXQocy5tZXNzYWdlcy5yZXF1aXJlZCxlLmZ1bGxGaWVsZCkpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDIwNCksYT1pKG8pO3RbImRlZmF1bHQiXT1zLGUuZXhwb3J0cz10WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHRbImRlZmF1bHQiXT1lLHR9ZnVuY3Rpb24gcyhlLHQsbixpLHMpeygvXlxzKyQvLnRlc3QodCl8fCIiPT09dCkmJmkucHVzaChhLmZvcm1hdChzLm1lc3NhZ2VzLndoaXRlc3BhY2UsZS5mdWxsRmllbGQpKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigyMDQpLGE9aShvKTt0WyJkZWZhdWx0Il09cyxlLmV4cG9ydHM9dFsiZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19ZnVuY3Rpb24gcyhlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHRbImRlZmF1bHQiXT1lLHR9ZnVuY3Rpb24gbyhlLHQsbixpLHMpe2lmKGUucmVxdWlyZWQmJnZvaWQgMD09PXQpcmV0dXJuIHZvaWQoMCxkWyJkZWZhdWx0Il0pKGUsdCxuLGkscyk7dmFyIG89WyJpbnRlZ2VyIiwiZmxvYXQiLCJhcnJheSIsInJlZ2V4cCIsIm9iamVjdCIsIm1ldGhvZCIsImVtYWlsIiwibnVtYmVyIiwiZGF0ZSIsInVybCIsImhleCJdLHI9ZS50eXBlO28uaW5kZXhPZihyKT4tMT9mW3JdKHQpfHxpLnB1c2gobC5mb3JtYXQocy5tZXNzYWdlcy50eXBlc1tyXSxlLmZ1bGxGaWVsZCxlLnR5cGUpKTpyJiYoInVuZGVmaW5lZCI9PXR5cGVvZiB0PyJ1bmRlZmluZWQiOmEodCkpIT09ZS50eXBlJiZpLnB1c2gobC5mb3JtYXQocy5tZXNzYWdlcy50eXBlc1tyXSxlLmZ1bGxGaWVsZCxlLnR5cGUpKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGE9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbD8ic3ltYm9sIjp0eXBlb2YgZX0scj1uKDIwNCksbD1zKHIpLHU9bigyMDgpLGQ9aSh1KSxjPXtlbWFpbDovXihbYS16MC05X1wuLV0rKUAoW1xkYS16XC4tXSspXC4oW2EtelwuXXsyLDZ9KSQvLHVybDpuZXcgUmVnRXhwKCJeKD8hbWFpbHRvOikoPzooPzpodHRwfGh0dHBzfGZ0cCk6Ly98Ly8pKD86XFxTKyg/OjpcXFMqKT9AKT8oPzooPzooPzpbMS05XVxcZD98MVxcZFxcZHwyWzAxXVxcZHwyMlswLTNdKSg/OlxcLig/OjE/XFxkezEsMn18MlswLTRdXFxkfDI1WzAtNV0pKXsyfSg/OlxcLig/OlswLTldXFxkP3wxXFxkXFxkfDJbMC00XVxcZHwyNVswLTRdKSl8KD86KD86W2EtelxcdTAwYTEtXFx1ZmZmZjAtOV0rLT8pKlthLXpcXHUwMGExLVxcdWZmZmYwLTldKykoPzpcXC4oPzpbYS16XFx1MDBhMS1cXHVmZmZmMC05XSstPykqW2EtelxcdTAwYTEtXFx1ZmZmZjAtOV0rKSooPzpcXC4oPzpbYS16XFx1MDBhMS1cXHVmZmZmXXsyLH0pKSl8bG9jYWxob3N0KSg/OjpcXGR7Miw1fSk/KD86KC98XFw/fCMpW15cXHNdKik/JCIsImkiKSxoZXg6L14jPyhbYS1mMC05XXs2fXxbYS1mMC05XXszfSkkL2l9LGY9e2ludGVnZXI6ZnVuY3Rpb24oZSl7cmV0dXJuIGYubnVtYmVyKGUpJiZwYXJzZUludChlLDEwKT09PWV9LCJmbG9hdCI6ZnVuY3Rpb24oZSl7cmV0dXJuIGYubnVtYmVyKGUpJiYhZi5pbnRlZ2VyKGUpfSxhcnJheTpmdW5jdGlvbihlKXtyZXR1cm4gQXJyYXkuaXNBcnJheShlKX0scmVnZXhwOmZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApcmV0dXJuITA7dHJ5e3JldHVybiEhbmV3IFJlZ0V4cChlKX1jYXRjaCh0KXtyZXR1cm4hMX19LGRhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0VGltZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUuZ2V0TW9udGgmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLmdldFllYXJ9LG51bWJlcjpmdW5jdGlvbihlKXtyZXR1cm4haXNOYU4oZSkmJiJudW1iZXIiPT10eXBlb2YgZX0sb2JqZWN0OmZ1bmN0aW9uKGUpe3JldHVybiJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2YgZT8idW5kZWZpbmVkIjphKGUpKSYmIWYuYXJyYXkoZSl9LG1ldGhvZDpmdW5jdGlvbihlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZX0sZW1haWw6ZnVuY3Rpb24oZSl7cmV0dXJuInN0cmluZyI9PXR5cGVvZiBlJiYhIWUubWF0Y2goYy5lbWFpbCl9LHVybDpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJiEhZS5tYXRjaChjLnVybCl9LGhleDpmdW5jdGlvbihlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIGUmJiEhZS5tYXRjaChjLmhleCl9fTt0WyJkZWZhdWx0Il09byxlLmV4cG9ydHM9dFsiZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0WyJkZWZhdWx0Il09ZSx0fWZ1bmN0aW9uIHMoZSx0LG4saSxzKXt2YXIgbz0ibnVtYmVyIj09dHlwZW9mIGUubGVuLHI9Im51bWJlciI9PXR5cGVvZiBlLm1pbixsPSJudW1iZXIiPT10eXBlb2YgZS5tYXgsdT10LGQ9bnVsbCxjPSJudW1iZXIiPT10eXBlb2YgdCxmPSJzdHJpbmciPT10eXBlb2YgdCxoPUFycmF5LmlzQXJyYXkodCk7cmV0dXJuIGM/ZD0ibnVtYmVyIjpmP2Q9InN0cmluZyI6aCYmKGQ9ImFycmF5IiksISFkJiYoKGZ8fGgpJiYodT10Lmxlbmd0aCksdm9pZChvP3UhPT1lLmxlbiYmaS5wdXNoKGEuZm9ybWF0KHMubWVzc2FnZXNbZF0ubGVuLGUuZnVsbEZpZWxkLGUubGVuKSk6ciYmIWwmJnU8ZS5taW4/aS5wdXNoKGEuZm9ybWF0KHMubWVzc2FnZXNbZF0ubWluLGUuZnVsbEZpZWxkLGUubWluKSk6bCYmIXImJnU+ZS5tYXg/aS5wdXNoKGEuZm9ybWF0KHMubWVzc2FnZXNbZF0ubWF4LGUuZnVsbEZpZWxkLGUubWF4KSk6ciYmbCYmKHU8ZS5taW58fHU+ZS5tYXgpJiZpLnB1c2goYS5mb3JtYXQocy5tZXNzYWdlc1tkXS5yYW5nZSxlLmZ1bGxGaWVsZCxlLm1pbixlLm1heCkpKSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMjA0KSxhPWkobyk7dFsiZGVmYXVsdCJdPXMsZS5leHBvcnRzPXRbImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdFsiZGVmYXVsdCJdPWUsdH1mdW5jdGlvbiBzKGUsdCxuLGkscyl7ZVtyXT1BcnJheS5pc0FycmF5KGVbcl0pP2Vbcl06W10sZVtyXS5pbmRleE9mKHQpPT09LTEmJmkucHVzaChhLmZvcm1hdChzLm1lc3NhZ2VzW3JdLGUuZnVsbEZpZWxkLGVbcl0uam9pbigiLCAiKSkpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDIwNCksYT1pKG8pLHI9ImVudW0iO3RbImRlZmF1bHQiXT1zLGUuZXhwb3J0cz10WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtpZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0dXJuIHRbImRlZmF1bHQiXT1lLHR9ZnVuY3Rpb24gcyhlLHQsbixpLHMpe2UucGF0dGVybiBpbnN0YW5jZW9mIFJlZ0V4cCYmKGUucGF0dGVybi50ZXN0KHQpfHxpLnB1c2goYS5mb3JtYXQocy5tZXNzYWdlcy5wYXR0ZXJuLm1pc21hdGNoLGUuZnVsbEZpZWxkLHQsZS5wYXR0ZXJuKSkpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDIwNCksYT1pKG8pO3RbImRlZmF1bHQiXT1zLGUuZXhwb3J0cz10WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBzKGUsdCxuLGkscyl7dmFyIG89W10sbD1lLnJlcXVpcmVkfHwhZS5yZXF1aXJlZCYmaS5oYXNPd25Qcm9wZXJ0eShlLmZpZWxkKTtpZihsKXtpZigoMCxyLmlzRW1wdHlWYWx1ZSkodCkmJiFlLnJlcXVpcmVkKXJldHVybiBuKCk7YVsiZGVmYXVsdCJdLnJlcXVpcmVkKGUsdCxpLG8scyksdm9pZCAwIT09dCYmYVsiZGVmYXVsdCJdLnR5cGUoZSx0LGksbyxzKX1uKG8pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDIwNyksYT1pKG8pLHI9bigyMDQpO3RbImRlZmF1bHQiXT1zLGUuZXhwb3J0cz10WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBzKGUsdCxuLGkscyl7dmFyIG89W10sbD1lLnJlcXVpcmVkfHwhZS5yZXF1aXJlZCYmaS5oYXNPd25Qcm9wZXJ0eShlLmZpZWxkKTtpZihsKXtpZigoMCxyLmlzRW1wdHlWYWx1ZSkodCkmJiFlLnJlcXVpcmVkKXJldHVybiBuKCk7YVsiZGVmYXVsdCJdLnJlcXVpcmVkKGUsdCxpLG8scyksdm9pZCAwIT09dCYmKGFbImRlZmF1bHQiXS50eXBlKGUsdCxpLG8scyksYVsiZGVmYXVsdCJdLnJhbmdlKGUsdCxpLG8scykpfW4obyl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMjA3KSxhPWkobykscj1uKDIwNCk7dFsiZGVmYXVsdCJdPXMsZS5leHBvcnRzPXRbImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fWZ1bmN0aW9uIHMoZSx0LG4saSxzKXt2YXIgYT1bXSxsPWUucmVxdWlyZWR8fCFlLnJlcXVpcmVkJiZpLmhhc093blByb3BlcnR5KGUuZmllbGQpO2lmKGwpe2lmKCgwLG8uaXNFbXB0eVZhbHVlKSh0KSYmIWUucmVxdWlyZWQpcmV0dXJuIG4oKTtyWyJkZWZhdWx0Il0ucmVxdWlyZWQoZSx0LGksYSxzKSx2b2lkIDAhPT10JiZyWyJkZWZhdWx0Il0udHlwZShlLHQsaSxhLHMpfW4oYSl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMjA0KSxhPW4oMjA3KSxyPWkoYSk7dFsiZGVmYXVsdCJdPXMsZS5leHBvcnRzPXRbImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fWZ1bmN0aW9uIHMoZSx0LG4saSxzKXt2YXIgbz1bXSxsPWUucmVxdWlyZWR8fCFlLnJlcXVpcmVkJiZpLmhhc093blByb3BlcnR5KGUuZmllbGQpO2lmKGwpe2lmKCgwLHIuaXNFbXB0eVZhbHVlKSh0KSYmIWUucmVxdWlyZWQpcmV0dXJuIG4oKTthWyJkZWZhdWx0Il0ucmVxdWlyZWQoZSx0LGksbyxzKSwoMCxyLmlzRW1wdHlWYWx1ZSkodCl8fGFbImRlZmF1bHQiXS50eXBlKGUsdCxpLG8scyl9bihvKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigyMDcpLGE9aShvKSxyPW4oMjA0KTt0WyJkZWZhdWx0Il09cyxlLmV4cG9ydHM9dFsiZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19ZnVuY3Rpb24gcyhlLHQsbixpLHMpe3ZhciBvPVtdLGw9ZS5yZXF1aXJlZHx8IWUucmVxdWlyZWQmJmkuaGFzT3duUHJvcGVydHkoZS5maWVsZCk7aWYobCl7aWYoKDAsci5pc0VtcHR5VmFsdWUpKHQpJiYhZS5yZXF1aXJlZClyZXR1cm4gbigpO2FbImRlZmF1bHQiXS5yZXF1aXJlZChlLHQsaSxvLHMpLHZvaWQgMCE9PXQmJihhWyJkZWZhdWx0Il0udHlwZShlLHQsaSxvLHMpLGFbImRlZmF1bHQiXS5yYW5nZShlLHQsaSxvLHMpKX1uKG8pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDIwNyksYT1pKG8pLHI9bigyMDQpO3RbImRlZmF1bHQiXT1zLGUuZXhwb3J0cz10WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBzKGUsdCxuLGkscyl7dmFyIG89W10sbD1lLnJlcXVpcmVkfHwhZS5yZXF1aXJlZCYmaS5oYXNPd25Qcm9wZXJ0eShlLmZpZWxkKTtpZihsKXtpZigoMCxyLmlzRW1wdHlWYWx1ZSkodCkmJiFlLnJlcXVpcmVkKXJldHVybiBuKCk7YVsiZGVmYXVsdCJdLnJlcXVpcmVkKGUsdCxpLG8scyksdm9pZCAwIT09dCYmKGFbImRlZmF1bHQiXS50eXBlKGUsdCxpLG8scyksYVsiZGVmYXVsdCJdLnJhbmdlKGUsdCxpLG8scykpfW4obyl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMjA3KSxhPWkobykscj1uKDIwNCk7dFsiZGVmYXVsdCJdPXMsZS5leHBvcnRzPXRbImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fWZ1bmN0aW9uIHMoZSx0LG4saSxzKXt2YXIgbz1bXSxsPWUucmVxdWlyZWR8fCFlLnJlcXVpcmVkJiZpLmhhc093blByb3BlcnR5KGUuZmllbGQpO2lmKGwpe2lmKCgwLHIuaXNFbXB0eVZhbHVlKSh0LCJhcnJheSIpJiYhZS5yZXF1aXJlZClyZXR1cm4gbigpO2FbImRlZmF1bHQiXS5yZXF1aXJlZChlLHQsaSxvLHMsImFycmF5IiksKDAsci5pc0VtcHR5VmFsdWUpKHQsImFycmF5Iil8fChhWyJkZWZhdWx0Il0udHlwZShlLHQsaSxvLHMpLGFbImRlZmF1bHQiXS5yYW5nZShlLHQsaSxvLHMpKX1uKG8pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDIwNyksYT1pKG8pLHI9bigyMDQpO3RbImRlZmF1bHQiXT1zLGUuZXhwb3J0cz10WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBzKGUsdCxuLGkscyl7dmFyIG89W10sbD1lLnJlcXVpcmVkfHwhZS5yZXF1aXJlZCYmaS5oYXNPd25Qcm9wZXJ0eShlLmZpZWxkKTtpZihsKXtpZigoMCxyLmlzRW1wdHlWYWx1ZSkodCkmJiFlLnJlcXVpcmVkKXJldHVybiBuKCk7YVsiZGVmYXVsdCJdLnJlcXVpcmVkKGUsdCxpLG8scyksdm9pZCAwIT09dCYmYVsiZGVmYXVsdCJdLnR5cGUoZSx0LGksbyxzKX1uKG8pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDIwNyksYT1pKG8pLHI9bigyMDQpO3RbImRlZmF1bHQiXT1zLGUuZXhwb3J0cz10WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBzKGUsdCxuLGkscyl7dmFyIG89W10sdT1lLnJlcXVpcmVkfHwhZS5yZXF1aXJlZCYmaS5oYXNPd25Qcm9wZXJ0eShlLmZpZWxkKTtpZih1KXtpZigoMCxyLmlzRW1wdHlWYWx1ZSkodCkmJiFlLnJlcXVpcmVkKXJldHVybiBuKCk7YVsiZGVmYXVsdCJdLnJlcXVpcmVkKGUsdCxpLG8scyksdCYmYVsiZGVmYXVsdCJdW2xdKGUsdCxpLG8scyl9bihvKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigyMDcpLGE9aShvKSxyPW4oMjA0KSxsPSJlbnVtIjt0WyJkZWZhdWx0Il09cyxlLmV4cG9ydHM9dFsiZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19ZnVuY3Rpb24gcyhlLHQsbixpLHMpe3ZhciBvPVtdLGw9ZS5yZXF1aXJlZHx8IWUucmVxdWlyZWQmJmkuaGFzT3duUHJvcGVydHkoZS5maWVsZCk7aWYobCl7aWYoKDAsci5pc0VtcHR5VmFsdWUpKHQsInN0cmluZyIpJiYhZS5yZXF1aXJlZClyZXR1cm4gbigpO2FbImRlZmF1bHQiXS5yZXF1aXJlZChlLHQsaSxvLHMpLCgwLHIuaXNFbXB0eVZhbHVlKSh0LCJzdHJpbmciKXx8YVsiZGVmYXVsdCJdLnBhdHRlcm4oZSx0LGksbyxzKX1uKG8pfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgbz1uKDIwNyksYT1pKG8pLHI9bigyMDQpO3RbImRlZmF1bHQiXT1zLGUuZXhwb3J0cz10WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBzKGUsdCxuLGkscyl7dmFyIG89ZS50eXBlLGw9W10sdT1lLnJlcXVpcmVkfHwhZS5yZXF1aXJlZCYmaS5oYXNPd25Qcm9wZXJ0eShlLmZpZWxkKTtpZih1KXtpZigoMCxyLmlzRW1wdHlWYWx1ZSkodCxvKSYmIWUucmVxdWlyZWQpcmV0dXJuIG4oKTthWyJkZWZhdWx0Il0ucmVxdWlyZWQoZSx0LGksbCxzLG8pLCgwLHIuaXNFbXB0eVZhbHVlKSh0LG8pfHxhWyJkZWZhdWx0Il0udHlwZShlLHQsaSxsLHMpfW4obCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMjA3KSxhPWkobykscj1uKDIwNCk7dFsiZGVmYXVsdCJdPXMsZS5leHBvcnRzPXRbImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fWZ1bmN0aW9uIHMoZSx0LG4saSxzKXt2YXIgbz1bXSxsPWUucmVxdWlyZWR8fCFlLnJlcXVpcmVkJiZpLmhhc093blByb3BlcnR5KGUuZmllbGQpO2lmKGwpe2lmKCgwLHIuaXNFbXB0eVZhbHVlKSh0KSYmIWUucmVxdWlyZWQpcmV0dXJuIG4oKTthWyJkZWZhdWx0Il0ucmVxdWlyZWQoZSx0LGksbyxzKSwoMCxyLmlzRW1wdHlWYWx1ZSkodCl8fChhWyJkZWZhdWx0Il0udHlwZShlLHQsaSxvLHMpLHQmJmFbImRlZmF1bHQiXS5yYW5nZShlLHQuZ2V0VGltZSgpLGksbyxzKSl9bihvKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89bigyMDcpLGE9aShvKSxyPW4oMjA0KTt0WyJkZWZhdWx0Il09cyxlLmV4cG9ydHM9dFsiZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19ZnVuY3Rpb24gcyhlLHQsbixpLHMpe3ZhciBhPVtdLGw9QXJyYXkuaXNBcnJheSh0KT8iYXJyYXkiOiJ1bmRlZmluZWQiPT10eXBlb2YgdD8idW5kZWZpbmVkIjpvKHQpO3JbImRlZmF1bHQiXS5yZXF1aXJlZChlLHQsaSxhLHMsbCksbihhKX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIG89ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBlfTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25zdHJ1Y3Rvcj09PVN5bWJvbD8ic3ltYm9sIjp0eXBlb2YgZX0sYT1uKDIwNykscj1pKGEpO3RbImRlZmF1bHQiXT1zLGUuZXhwb3J0cz10WyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXtyZXR1cm57ImRlZmF1bHQiOiJWYWxpZGF0aW9uIGVycm9yIG9uIGZpZWxkICVzIixyZXF1aXJlZDoiJXMgaXMgcmVxdWlyZWQiLCJlbnVtIjoiJXMgbXVzdCBiZSBvbmUgb2YgJXMiLHdoaXRlc3BhY2U6IiVzIGNhbm5vdCBiZSBlbXB0eSIsZGF0ZTp7Zm9ybWF0OiIlcyBkYXRlICVzIGlzIGludmFsaWQgZm9yIGZvcm1hdCAlcyIscGFyc2U6IiVzIGRhdGUgY291bGQgbm90IGJlIHBhcnNlZCwgJXMgaXMgaW52YWxpZCAiLGludmFsaWQ6IiVzIGRhdGUgJXMgaXMgaW52YWxpZCJ9LHR5cGVzOntzdHJpbmc6IiVzIGlzIG5vdCBhICVzIixtZXRob2Q6IiVzIGlzIG5vdCBhICVzIChmdW5jdGlvbikiLGFycmF5OiIlcyBpcyBub3QgYW4gJXMiLG9iamVjdDoiJXMgaXMgbm90IGFuICVzIixudW1iZXI6IiVzIGlzIG5vdCBhICVzIixkYXRlOiIlcyBpcyBub3QgYSAlcyIsImJvb2xlYW4iOiIlcyBpcyBub3QgYSAlcyIsaW50ZWdlcjoiJXMgaXMgbm90IGFuICVzIiwiZmxvYXQiOiIlcyBpcyBub3QgYSAlcyIscmVnZXhwOiIlcyBpcyBub3QgYSB2YWxpZCAlcyIsZW1haWw6IiVzIGlzIG5vdCBhIHZhbGlkICVzIix1cmw6IiVzIGlzIG5vdCBhIHZhbGlkICVzIixoZXg6IiVzIGlzIG5vdCBhIHZhbGlkICVzIn0sc3RyaW5nOntsZW46IiVzIG11c3QgYmUgZXhhY3RseSAlcyBjaGFyYWN0ZXJzIixtaW46IiVzIG11c3QgYmUgYXQgbGVhc3QgJXMgY2hhcmFjdGVycyIsbWF4OiIlcyBjYW5ub3QgYmUgbG9uZ2VyIHRoYW4gJXMgY2hhcmFjdGVycyIscmFuZ2U6IiVzIG11c3QgYmUgYmV0d2VlbiAlcyBhbmQgJXMgY2hhcmFjdGVycyJ9LG51bWJlcjp7bGVuOiIlcyBtdXN0IGVxdWFsICVzIixtaW46IiVzIGNhbm5vdCBiZSBsZXNzIHRoYW4gJXMiLG1heDoiJXMgY2Fubm90IGJlIGdyZWF0ZXIgdGhhbiAlcyIscmFuZ2U6IiVzIG11c3QgYmUgYmV0d2VlbiAlcyBhbmQgJXMifSxhcnJheTp7bGVuOiIlcyBtdXN0IGJlIGV4YWN0bHkgJXMgaW4gbGVuZ3RoIixtaW46IiVzIGNhbm5vdCBiZSBsZXNzIHRoYW4gJXMgaW4gbGVuZ3RoIixtYXg6IiVzIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gJXMgaW4gbGVuZ3RoIixyYW5nZToiJXMgbXVzdCBiZSBiZXR3ZWVuICVzIGFuZCAlcyBpbiBsZW5ndGgifSxwYXR0ZXJuOnttaXNtYXRjaDoiJXMgdmFsdWUgJXMgZG9lcyBub3QgbWF0Y2ggcGF0dGVybiAlcyJ9LGNsb25lOmZ1bmN0aW9uKCl7dmFyIGU9SlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzKSk7cmV0dXJuIGUuY2xvbmU9dGhpcy5jbG9uZSxlfX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pLHQubmV3TWVzc2FnZXM9bjt0Lm1lc3NhZ2VzPW4oKX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1mb3JtLWl0ZW0iLCJjbGFzcyI6eyJpcy1lcnJvciI6ImVycm9yIj09PWUudmFsaWRhdGVTdGF0ZSwiaXMtdmFsaWRhdGluZyI6InZhbGlkYXRpbmciPT09ZS52YWxpZGF0ZVN0YXRlLCJpcy1yZXF1aXJlZCI6ZS5pc1JlcXVpcmVkfHxlLnJlcXVpcmVkfX0sW2UubGFiZWw/ZS5faCgibGFiZWwiLHtzdGF0aWNDbGFzczoiZWwtZm9ybS1pdGVtX19sYWJlbCIsc3R5bGU6ZS5sYWJlbFN0eWxlfSxbIlxuICAgICIrZS5fcyhlLmxhYmVsK2UuZm9ybS5sYWJlbFN1ZmZpeCkrIlxuICAiXSk6ZS5fZSgpLGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1mb3JtLWl0ZW1fX2NvbnRlbnQiLHN0eWxlOmUuY29udGVudFN0eWxlfSxbZS5fdCgiZGVmYXVsdCIpLGUuX2goInRyYW5zaXRpb24iLHthdHRyczp7bmFtZToibWQtZmFkZS1ib3R0b20ifX0sWyJlcnJvciI9PT1lLnZhbGlkYXRlU3RhdGU/ZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLWZvcm0taXRlbV9fZXJyb3IifSxbZS5fcyhlLnZhbGlkYXRlTWVzc2FnZSldKTplLl9lKCldKV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigyMzApLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMjMxKSxzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPXtuYW1lOiJlbC10YWJzIixwcm9wczp7dHlwZTpTdHJpbmcsdGFiUG9zaXRpb246U3RyaW5nLGFjdGl2ZU5hbWU6U3RyaW5nLGNsb3NhYmxlOiExLHRhYldpZHRoOjB9LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Y2hpbGRyZW46bnVsbCxhY3RpdmVUYWI6bnVsbCxjdXJyZW50TmFtZTowLHBhbmVzOltdfX0sd2F0Y2g6e2FjdGl2ZU5hbWU6e2hhbmRsZXI6ZnVuY3Rpb24oZSl7dGhpcy5jdXJyZW50TmFtZT1lfX19LG1ldGhvZHM6e2hhbmRsZVRhYlJlbW92ZTpmdW5jdGlvbihlLHQpe3Quc3RvcFByb3BhZ2F0aW9uKCk7dmFyIG49dGhpcy4kY2hpbGRyZW4saT1uLmluZGV4T2YoZSk7aWYoZS4kZGVzdHJveSghMCksZS5pbmRleD09PXRoaXMuY3VycmVudE5hbWUpe3ZhciBzPW5baV0sbz1uW2ktMV07dGhpcy5jdXJyZW50TmFtZT1zP3MuaW5kZXg6bz9vLmluZGV4OiItMSJ9dGhpcy4kZW1pdCgidGFiLXJlbW92ZSIsZSksdGhpcy4kZm9yY2VVcGRhdGUoKX0saGFuZGxlVGFiQ2xpY2s6ZnVuY3Rpb24oZSx0KXt0aGlzLmN1cnJlbnROYW1lPWUuaW5kZXgsdGhpcy4kZW1pdCgidGFiLWNsaWNrIixlLHQpfSxjYWxjQmFyU3R5bGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO2lmKHRoaXMudHlwZXx8IXRoaXMuJHJlZnMudGFicylyZXR1cm57fTt2YXIgdD17fSxuPTAsaT0wO3JldHVybiB0aGlzLiRjaGlsZHJlbi5ldmVyeShmdW5jdGlvbih0LHMpe3ZhciBvPWUuJHJlZnMudGFic1tzXTtyZXR1cm4hIW8mJih0LmluZGV4IT09ZS5jdXJyZW50TmFtZT8obis9by5jbGllbnRXaWR0aCwhMCk6KGk9by5jbGllbnRXaWR0aCwhMSkpfSksdC53aWR0aD1pKyJweCIsdC50cmFuc2Zvcm09InRyYW5zbGF0ZVgoIituKyJweCkiLHR9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmN1cnJlbnROYW1lPXRoaXMuYWN0aXZlTmFtZXx8dGhpcy4kY2hpbGRyZW5bMF0uaW5kZXh8fCIxIix0aGlzLiRuZXh0VGljayhmdW5jdGlvbigpe2UuJGZvcmNlVXBkYXRlKCl9KX0scmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj10aGlzLnR5cGUsaT0odGhpcy5wYW5lcyx0aGlzLmhhbmRsZVRhYlJlbW92ZSkscz10aGlzLmhhbmRsZVRhYkNsaWNrLG89dGhpcy5jdXJyZW50TmFtZSxhPXRoaXMuY2FsY0JhclN0eWxlKCkscj1uP251bGw6ZSgiZGl2Iix7ImNsYXNzIjoiZWwtdGFic19fYWN0aXZlLWJhciIsc3R5bGU6YX0sW10pLGw9dGhpcy4kY2hpbGRyZW4ubWFwKGZ1bmN0aW9uKG4sYSl7dmFyIGw9ZSgic3BhbiIseyJjbGFzcyI6eyJlbC1pY29uLWNsb3NlIjohMH0sb246e2NsaWNrOmZ1bmN0aW9uKGUpe2kobixlKX19fSksdT1lKCJkaXYiLHsiY2xhc3MiOnsiZWwtdGFic19faXRlbSI6ITAsImlzLWFjdGl2ZSI6bz09PW4uaW5kZXgsImlzLWRpc2FibGVkIjpuLmRpc2FibGVkLCJpcy1jbG9zYWJsZSI6bi5pc0Nsb3NhYmxlfSxyZWY6InRhYnMiLHJlZkluRm9yOiEwLG9uOntjbGljazpmdW5jdGlvbihlKXtzKG4sZSl9fX0sW24ubGFiZWxDb250ZW50P24ubGFiZWxDb250ZW50LmNhbGwodC5fcmVuZGVyUHJveHksZSk6bi5sYWJlbCxuLmlzQ2xvc2FibGU/bDpudWxsLDA9PT1hP3I6bnVsbF0pO3JldHVybiB1fSk7cmV0dXJuIGUoImRpdiIseyJjbGFzcyI6eyJlbC10YWJzIjohMCwiZWwtdGFicy0tY2FyZCI6ImNhcmQiPT09biwiZWwtdGFicy0tYm9yZGVyLWNhcmQiOiJib3JkZXItY2FyZCI9PT1ufX0sW2UoImRpdiIseyJjbGFzcyI6ImVsLXRhYnNfX2hlYWRlciJ9LFtsXSksZSgiZGl2Iix7ImNsYXNzIjoiZWwtdGFic19fY29udGVudCJ9LFt0aGlzLiRzbG90c1siZGVmYXVsdCJdXSldKX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjMzKSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDIzNCk7dmFyIG89bigyMzUpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9e25hbWU6ImVsLXRhYi1wYW5lIixwcm9wczp7bGFiZWw6U3RyaW5nLGxhYmVsQ29udGVudDpGdW5jdGlvbixuYW1lOlN0cmluZyxjbG9zYWJsZTpCb29sZWFufSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2NvdW50ZXI6MCx0cmFuc2l0aW9uOiIiLHBhbmVTdHlsZTp7cG9zaXRpb246InJlbGF0aXZlIn0saXNDbG9zYWJsZTpudWxsLGluZGV4OiIifX0sY3JlYXRlZDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuJG9wdGlvbnMucHJvcHNEYXRhO2UmJiJ1bmRlZmluZWQiIT10eXBlb2YgZS5jbG9zYWJsZT90aGlzLmlzQ2xvc2FibGU9IiI9PT1lLmNsb3NhYmxlfHxlLmNsb3NhYmxlOnRoaXMuaXNDbG9zYWJsZT10aGlzLiRwYXJlbnQuY2xvc2FibGUsdGhpcy5pbmRleHx8KHRoaXMuaW5kZXg9dGhpcy4kcGFyZW50LiRjaGlsZHJlbi5pbmRleE9mKHRoaXMpKzErIiIpLHRoaXMuJHBhcmVudC5wYW5lcyYmdGhpcy4kcGFyZW50LnBhbmVzLnB1c2godGhpcyl9LGNvbXB1dGVkOntzaG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJHBhcmVudC5jdXJyZW50TmFtZT09PXRoaXMuaW5kZXh9fSxkZXN0cm95ZWQ6ZnVuY3Rpb24oKXt0aGlzLiRlbCYmdGhpcy4kZWwucGFyZW50Tm9kZSYmdGhpcy4kZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLiRlbCk7dmFyIGU9dGhpcy4kcGFyZW50LnBhbmVzO2UmJmUuc3BsaWNlKHRoaXMsZS5pbmRleE9mKHRoaXMpKX0sd2F0Y2g6e25hbWU6e2ltbWVkaWF0ZTohMCxoYW5kbGVyOmZ1bmN0aW9uKGUpe3RoaXMuaW5kZXg9ZX19LGNsb3NhYmxlOmZ1bmN0aW9uKGUpe3RoaXMuaXNDbG9zYWJsZT1lfSwiJHBhcmVudC5jdXJyZW50TmFtZSI6ZnVuY3Rpb24oZSx0KXt0aGlzLmluZGV4PT09ZSYmKHRoaXMudHJhbnNpdGlvbj1lPnQ/InNsaWRlSW5SaWdodCI6InNsaWRlSW5MZWZ0IiksdGhpcy5pbmRleD09PXQmJih0aGlzLnRyYW5zaXRpb249dD5lPyJzbGlkZUluUmlnaHQiOiJzbGlkZUluTGVmdCIpfX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS5zaG93JiZlLiRzbG90c1siZGVmYXVsdCJdLGV4cHJlc3Npb246InNob3cgJiYgJHNsb3RzLmRlZmF1bHQifV0sc3RhdGljQ2xhc3M6ImVsLXRhYi1wYW5lIn0sW2UuX3QoImRlZmF1bHQiKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjM3KSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDIzOCk7dmFyIG89bigyNDYpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjM5KSxvPWkocyksYT1uKDEyKTt0WyJkZWZhdWx0Il09e25hbWU6ImVsLXRyZWUiLHByb3BzOntkYXRhOnt0eXBlOkFycmF5fSxlbXB0eVRleHQ6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjpmdW5jdGlvbigpe3JldHVybigwLGEudCkoImVsLnRyZWUuZW1wdHlUZXh0Iil9fSxub2RlS2V5OlN0cmluZyxjaGVja1N0cmljdGx5OkJvb2xlYW4sZGVmYXVsdEV4cGFuZEFsbDpCb29sZWFuLGF1dG9FeHBhbmRQYXJlbnQ6e3R5cGU6Qm9vbGVhbiwiZGVmYXVsdCI6ITB9LGRlZmF1bHRDaGVja2VkS2V5czpBcnJheSxkZWZhdWx0RXhwYW5kZWRLZXlzOkFycmF5LHJlbmRlckNvbnRlbnQ6RnVuY3Rpb24sc2hvd0NoZWNrYm94Ont0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiExfSxwcm9wczp7ImRlZmF1bHQiOmZ1bmN0aW9uKCl7cmV0dXJue2NoaWxkcmVuOiJjaGlsZHJlbiIsbGFiZWw6ImxhYmVsIixpY29uOiJpY29uIn19fSxsYXp5Ont0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiExfSxoaWdobGlnaHRDdXJyZW50OkJvb2xlYW4sbG9hZDpGdW5jdGlvbixmaWx0ZXJOb2RlTWV0aG9kOkZ1bmN0aW9ufSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy5pc1RyZWU9ITAsdGhpcy5zdG9yZT1uZXcgb1siZGVmYXVsdCJdKHtrZXk6dGhpcy5ub2RlS2V5LGRhdGE6dGhpcy5kYXRhLGxhenk6dGhpcy5sYXp5LHByb3BzOnRoaXMucHJvcHMsbG9hZDp0aGlzLmxvYWQsY2hlY2tTdHJpY3RseTp0aGlzLmNoZWNrU3RyaWN0bHksZGVmYXVsdENoZWNrZWRLZXlzOnRoaXMuZGVmYXVsdENoZWNrZWRLZXlzLGRlZmF1bHRFeHBhbmRlZEtleXM6dGhpcy5kZWZhdWx0RXhwYW5kZWRLZXlzLGF1dG9FeHBhbmRQYXJlbnQ6dGhpcy5hdXRvRXhwYW5kUGFyZW50LGRlZmF1bHRFeHBhbmRBbGw6dGhpcy5kZWZhdWx0RXhwYW5kQWxsLGZpbHRlck5vZGVNZXRob2Q6dGhpcy5maWx0ZXJOb2RlTWV0aG9kfSksdGhpcy5yb290PXRoaXMuc3RvcmUucm9vdH0sZGF0YTpmdW5jdGlvbigpe3JldHVybntzdG9yZTpudWxsLHJvb3Q6bnVsbCxjdXJyZW50Tm9kZTpudWxsfX0sY29tcG9uZW50czp7RWxUcmVlTm9kZTpuKDI0Mil9LGNvbXB1dGVkOntjaGlsZHJlbjp7c2V0OmZ1bmN0aW9uKGUpe3RoaXMuZGF0YT1lfSxnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kYXRhfX19LHdhdGNoOntkZWZhdWx0Q2hlY2tlZEtleXM6ZnVuY3Rpb24oZSl7dGhpcy5zdG9yZS5kZWZhdWx0Q2hlY2tlZEtleXM9ZSx0aGlzLnN0b3JlLnNldERlZmF1bHRDaGVja2VkS2V5KGUpfSxkZWZhdWx0RXhwYW5kZWRLZXlzOmZ1bmN0aW9uKGUpe3RoaXMuc3RvcmUuZGVmYXVsdEV4cGFuZGVkS2V5cz1lLHRoaXMuc3RvcmUuc2V0RGVmYXVsdEV4cGFuZGVkS2V5cyhlKX0sZGF0YTpmdW5jdGlvbihlKXt0aGlzLnN0b3JlLnNldERhdGEoZSl9fSxtZXRob2RzOntmaWx0ZXI6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuZmlsdGVyTm9kZU1ldGhvZCl0aHJvdyBuZXcgRXJyb3IoIltUcmVlXSBmaWx0ZXJOb2RlTWV0aG9kIGlzIHJlcXVpcmVkIHdoZW4gZmlsdGVyIik7dGhpcy5zdG9yZS5maWx0ZXIoZSl9LGdldE5vZGVLZXk6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLm5vZGVLZXk7cmV0dXJuIG4mJmU/ZS5kYXRhW25dOnR9LGdldENoZWNrZWROb2RlczpmdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5zdG9yZS5nZXRDaGVja2VkTm9kZXMoZSl9LGdldENoZWNrZWRLZXlzOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnN0b3JlLmdldENoZWNrZWRLZXlzKGUpfSxzZXRDaGVja2VkTm9kZXM6ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5ub2RlS2V5KXRocm93IG5ldyBFcnJvcigiW1RyZWVdIG5vZGVLZXkgaXMgcmVxdWlyZWQgaW4gc2V0Q2hlY2tlZE5vZGVzIik7dGhpcy5zdG9yZS5zZXRDaGVja2VkTm9kZXMoZSx0KX0sc2V0Q2hlY2tlZEtleXM6ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5ub2RlS2V5KXRocm93IG5ldyBFcnJvcigiW1RyZWVdIG5vZGVLZXkgaXMgcmVxdWlyZWQgaW4gc2V0Q2hlY2tlZE5vZGVzIik7dGhpcy5zdG9yZS5zZXRDaGVja2VkS2V5cyhlLHQpfSxzZXRDaGVja2VkOmZ1bmN0aW9uKGUsdCxuKXt0aGlzLnN0b3JlLnNldENoZWNrZWQoZSx0LG4pfX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19ZnVuY3Rpb24gcyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfXQuX19lc01vZHVsZT0hMDt2YXIgbz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX0sYT1uKDI0MCkscj1pKGEpLGw9bigyNDEpLHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ZhciBuPXRoaXM7cyh0aGlzLGUpO2Zvcih2YXIgaSBpbiB0KXQuaGFzT3duUHJvcGVydHkoaSkmJih0aGlzW2ldPXRbaV0pO2lmKHRoaXMubm9kZXNNYXA9e30sdGhpcy5yb290PW5ldyByWyJkZWZhdWx0Il0oe2RhdGE6dGhpcy5kYXRhLHN0b3JlOnRoaXN9KSx0aGlzLmxhenkmJnRoaXMubG9hZCl7dmFyIG89dGhpcy5sb2FkO28odGhpcy5yb290LGZ1bmN0aW9uKGUpe24ucm9vdC5kb0NyZWF0ZUNoaWxkcmVuKGUpLG4uX2luaXREZWZhdWx0Q2hlY2tlZE5vZGVzKCl9KX1lbHNlIHRoaXMuX2luaXREZWZhdWx0Q2hlY2tlZE5vZGVzKCl9cmV0dXJuIGUucHJvdG90eXBlLmZpbHRlcj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmZpbHRlck5vZGVNZXRob2Qsbj1mdW5jdGlvbiBpKG4pe3ZhciBzPW4ucm9vdD9uLnJvb3QuY2hpbGROb2RlczpuLmNoaWxkTm9kZXM7aWYocy5mb3JFYWNoKGZ1bmN0aW9uKG4pe24udmlzaWJsZT10LmNhbGwobixlLG4uZGF0YSxuKSxpKG4pfSksIW4udmlzaWJsZSYmcy5sZW5ndGgpe3ZhciBvPSEwO3MuZm9yRWFjaChmdW5jdGlvbihlKXtlLnZpc2libGUmJihvPSExKX0pLG4ucm9vdD9uLnJvb3QudmlzaWJsZT1vPT09ITE6bi52aXNpYmxlPW89PT0hMX1uLnZpc2libGUmJiFuLmlzTGVhZiYmbi5leHBhbmQoKX07bih0aGlzKX0sZS5wcm90b3R5cGUuc2V0RGF0YT1mdW5jdGlvbihlKXt2YXIgdD1lIT09dGhpcy5yb290LmRhdGE7dGhpcy5yb290LnNldERhdGEoZSksdCYmdGhpcy5faW5pdERlZmF1bHRDaGVja2VkTm9kZXMoKX0sZS5wcm90b3R5cGUuZ2V0Tm9kZT1mdW5jdGlvbihlKXt2YXIgdD0ib2JqZWN0IiE9PSgidW5kZWZpbmVkIj09dHlwZW9mIGU/InVuZGVmaW5lZCI6byhlKSk/ZTooMCxsLmdldE5vZGVLZXkpKHRoaXMua2V5LGUpO3JldHVybiB0aGlzLm5vZGVzTWFwW3RdfSxlLnByb3RvdHlwZS5pbnNlcnRCZWZvcmU9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldE5vZGUodCk7bi5wYXJlbnQuaW5zZXJ0QmVmb3JlKHtkYXRhOmV9LG4pfSxlLnByb3RvdHlwZS5pbnNlcnRBZnRlcj1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0Tm9kZSh0KTtuLnBhcmVudC5pbnNlcnRBZnRlcih7ZGF0YTplfSxuKX0sZS5wcm90b3R5cGUucmVtb3ZlPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0Tm9kZShlKTt0JiZ0LnBhcmVudC5yZW1vdmVDaGlsZCh0KX0sZS5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0aW9uKGUsdCl7dmFyIG49dD90aGlzLmdldE5vZGUodCk6dGhpcy5yb290O24mJm4uaW5zZXJ0Q2hpbGQoe2RhdGE6ZX0pfSxlLnByb3RvdHlwZS5faW5pdERlZmF1bHRDaGVja2VkTm9kZXM9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy5kZWZhdWx0Q2hlY2tlZEtleXN8fFtdLG49dGhpcy5ub2Rlc01hcDt0LmZvckVhY2goZnVuY3Rpb24odCl7dmFyIGk9blt0XTtpJiZpLnNldENoZWNrZWQoITAsIWUuY2hlY2tTdHJpY3RseSl9KX0sZS5wcm90b3R5cGUuX2luaXREZWZhdWx0Q2hlY2tlZE5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kZWZhdWx0Q2hlY2tlZEtleXN8fFtdO3QuaW5kZXhPZihlLmtleSkhPT0tMSYmZS5zZXRDaGVja2VkKCEwLCF0aGlzLmNoZWNrU3RyaWN0bHkpfSxlLnByb3RvdHlwZS5zZXREZWZhdWx0Q2hlY2tlZEtleT1mdW5jdGlvbihlKXtlIT09dGhpcy5kZWZhdWx0Q2hlY2tlZEtleXMmJih0aGlzLmRlZmF1bHRDaGVja2VkS2V5cz1lLHRoaXMuX2luaXREZWZhdWx0Q2hlY2tlZE5vZGVzKCkpfSxlLnByb3RvdHlwZS5yZWdpc3Rlck5vZGU9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5rZXk7aWYodCYmZSYmZS5kYXRhKXt2YXIgbj1lLmtleTtuJiYodGhpcy5ub2Rlc01hcFtlLmtleV09ZSl9fSxlLnByb3RvdHlwZS5kZXJlZ2lzdGVyTm9kZT1mdW5jdGlvbihlKXt2YXIgdD10aGlzLmtleTt0JiZlJiZlLmRhdGEmJmRlbGV0ZSB0aGlzLm5vZGVzTWFwW2Uua2V5XX0sZS5wcm90b3R5cGUuZ2V0Q2hlY2tlZE5vZGVzPWZ1bmN0aW9uKGUpe3ZhciB0PVtdLG49ZnVuY3Rpb24gaShuKXt2YXIgcz1uLnJvb3Q/bi5yb290LmNoaWxkTm9kZXM6bi5jaGlsZE5vZGVzO3MuZm9yRWFjaChmdW5jdGlvbihuKXsoIWUmJm4uY2hlY2tlZHx8ZSYmbi5pc0xlYWYmJm4uY2hlY2tlZCkmJnQucHVzaChuLmRhdGEpLGkobil9KX07cmV0dXJuIG4odGhpcyksdH0sZS5wcm90b3R5cGUuZ2V0Q2hlY2tlZEtleXM9ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5rZXksbj10aGlzLl9nZXRBbGxOb2RlcygpLGk9W107cmV0dXJuIG4uZm9yRWFjaChmdW5jdGlvbihuKXsoIWV8fGUmJm4uaXNMZWFmKSYmbi5jaGVja2VkJiZpLnB1c2goKG4uZGF0YXx8e30pW3RdKX0pLGl9LGUucHJvdG90eXBlLl9nZXRBbGxOb2Rlcz1mdW5jdGlvbigpe3ZhciBlPVtdLHQ9dGhpcy5ub2Rlc01hcDtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZlLnB1c2godFtuXSk7cmV0dXJuIGV9LGUucHJvdG90eXBlLl9zZXRDaGVja2VkS2V5cz1mdW5jdGlvbihlLHQsbil7dmFyIGk9dGhpcyxzPXRoaXMuX2dldEFsbE5vZGVzKCk7cy5zb3J0KGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUubGV2ZWw+dC5sZXZlbD8tMToxfSkscy5mb3JFYWNoKGZ1bmN0aW9uKHMpeyghdHx8dCYmcy5pc0xlYWYpJiZzLnNldENoZWNrZWQoISFuWyhzLmRhdGF8fHt9KVtlXV0sIWkuY2hlY2tTdHJpY3RseSl9KX0sZS5wcm90b3R5cGUuc2V0Q2hlY2tlZE5vZGVzPWZ1bmN0aW9uKGUpe3ZhciB0PSEoYXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0pfHxhcmd1bWVudHNbMV0sbj10aGlzLmtleSxpPXt9O2UuZm9yRWFjaChmdW5jdGlvbihlKXtpWyhlfHx7fSlbbl1dPSEwfSksdGhpcy5fc2V0Q2hlY2tlZEtleXMobix0LGkpfSxlLnByb3RvdHlwZS5zZXRDaGVja2VkS2V5cz1mdW5jdGlvbihlKXt2YXIgdD0hKGFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdKXx8YXJndW1lbnRzWzFdO3RoaXMuZGVmYXVsdENoZWNrZWRLZXlzPWU7dmFyIG49dGhpcy5rZXksaT17fTtlLmZvckVhY2goZnVuY3Rpb24oZSl7aVtlXT0hMH0pLHRoaXMuX3NldENoZWNrZWRLZXlzKG4sdCxpKX0sZS5wcm90b3R5cGUuc2V0RGVmYXVsdEV4cGFuZGVkS2V5cz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2U9ZXx8W10sdGhpcy5kZWZhdWx0RXhwYW5kZWRLZXlzPWUsZS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPXQuZ2V0Tm9kZShlKTtuJiZuLmV4cGFuZChudWxsLHQuYXV0b0V4cGFuZFBhcmVudCl9KX0sZS5wcm90b3R5cGUuc2V0Q2hlY2tlZD1mdW5jdGlvbihlLHQsbil7dmFyIGk9dGhpcy5nZXROb2RlKGUpO2kmJmkuc2V0Q2hlY2tlZCghIXQsbil9LGV9KCk7dFsiZGVmYXVsdCJdPXV9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBzKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dC5fX2VzTW9kdWxlPSEwO3ZhciBvPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgaT10W25dO2kuZW51bWVyYWJsZT1pLmVudW1lcmFibGV8fCExLGkuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBpJiYoaS53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsaS5rZXksaSl9fXJldHVybiBmdW5jdGlvbih0LG4saSl7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksaSYmZSh0LGkpLHR9fSgpLGE9bigxMzUpLHI9aShhKSxsPW4oMjQxKSx1PWZ1bmN0aW9uKGUpe2Zvcih2YXIgdD1lLmNoaWxkTm9kZXMsbj0hMCxpPSEwLHM9MCxvPXQubGVuZ3RoO3M8bztzKyspe3ZhciBhPXRbc107KGEuY2hlY2tlZCE9PSEwfHxhLmluZGV0ZXJtaW5hdGUpJiYobj0hMSksKGEuY2hlY2tlZCE9PSExfHxhLmluZGV0ZXJtaW5hdGUpJiYoaT0hMSl9bj9lLnNldENoZWNrZWQoITApOm58fGk/aSYmZS5zZXRDaGVja2VkKCExKTplLnNldENoZWNrZWQoImhhbGYiKX0sZD1mdW5jdGlvbihlLHQpe3ZhciBuPWUuc3RvcmUucHJvcHMsaT1lLmRhdGF8fHt9LHM9blt0XTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygcz9zKGksZSk6InN0cmluZyI9PXR5cGVvZiBzP2lbc106InVuZGVmaW5lZCI9PXR5cGVvZiBzPyIiOnZvaWQgMH0sYz0wLGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3ModGhpcyxlKSx0aGlzLmlkPWMrKyx0aGlzLnRleHQ9bnVsbCx0aGlzLmNoZWNrZWQ9ITEsdGhpcy5pbmRldGVybWluYXRlPSExLHRoaXMuZGF0YT1udWxsLHRoaXMuZXhwYW5kZWQ9ITEsdGhpcy5wYXJlbnQ9bnVsbCx0aGlzLnZpc2libGU9ITA7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKHRoaXNbbl09dFtuXSk7dGhpcy5sZXZlbD0wLHRoaXMubG9hZGVkPSExLHRoaXMuY2hpbGROb2Rlcz1bXSx0aGlzLmxvYWRpbmc9ITEsdGhpcy5wYXJlbnQmJih0aGlzLmxldmVsPXRoaXMucGFyZW50LmxldmVsKzEpO3ZhciBpPXRoaXMuc3RvcmU7aWYoIWkpdGhyb3cgbmV3IEVycm9yKCJbTm9kZV1zdG9yZSBpcyByZXF1aXJlZCEiKTtpLnJlZ2lzdGVyTm9kZSh0aGlzKTt2YXIgbz1pLnByb3BzO2lmKG8mJiJ1bmRlZmluZWQiIT10eXBlb2Ygby5pc0xlYWYpe3ZhciBhPWQodGhpcywiaXNMZWFmIik7ImJvb2xlYW4iPT10eXBlb2YgYSYmKHRoaXMuaXNMZWFmQnlVc2VyPWEpfWlmKGkubGF6eSE9PSEwJiZ0aGlzLmRhdGE/KHRoaXMuc2V0RGF0YSh0aGlzLmRhdGEpLGkuZGVmYXVsdEV4cGFuZEFsbCYmKHRoaXMuZXhwYW5kZWQ9ITApKTp0aGlzLmxldmVsPjAmJmkubGF6eSYmaS5kZWZhdWx0RXhwYW5kQWxsJiZ0aGlzLmV4cGFuZCgpLHRoaXMuZGF0YSl7dmFyIHI9aS5kZWZhdWx0RXhwYW5kZWRLZXlzLGw9aS5rZXk7bCYmciYmci5pbmRleE9mKHRoaXMua2V5KSE9PS0xJiZ0aGlzLmV4cGFuZChudWxsLGkuYXV0b0V4cGFuZFBhcmVudCksaS5sYXp5JiZpLl9pbml0RGVmYXVsdENoZWNrZWROb2RlKHRoaXMpLHRoaXMudXBkYXRlTGVhZlN0YXRlKCl9fXJldHVybiBlLnByb3RvdHlwZS5zZXREYXRhPWZ1bmN0aW9uKGUpe0FycmF5LmlzQXJyYXkoZSl8fCgwLGwubWFya05vZGVEYXRhKSh0aGlzLGUpLHRoaXMuZGF0YT1lLHRoaXMuY2hpbGROb2Rlcz1bXTt2YXIgdD12b2lkIDA7dD0wPT09dGhpcy5sZXZlbCYmdGhpcy5kYXRhIGluc3RhbmNlb2YgQXJyYXk/dGhpcy5kYXRhOmQodGhpcywiY2hpbGRyZW4iKXx8W107Zm9yKHZhciBuPTAsaT10Lmxlbmd0aDtuPGk7bisrKXRoaXMuaW5zZXJ0Q2hpbGQoe2RhdGE6dFtuXX0pfSxlLnByb3RvdHlwZS5pbnNlcnRDaGlsZD1mdW5jdGlvbih0LG4pe2lmKCF0KXRocm93IG5ldyBFcnJvcigiaW5zZXJ0Q2hpbGQgZXJyb3I6IGNoaWxkIGlzIHJlcXVpcmVkLiIpO3QgaW5zdGFuY2VvZiBlfHwoKDAsclsiZGVmYXVsdCJdKSh0LHtwYXJlbnQ6dGhpcyxzdG9yZTp0aGlzLnN0b3JlfSksdD1uZXcgZSh0KSksdC5sZXZlbD10aGlzLmxldmVsKzEsInVuZGVmaW5lZCI9PXR5cGVvZiBufHxuPDA/dGhpcy5jaGlsZE5vZGVzLnB1c2godCk6dGhpcy5jaGlsZE5vZGVzLnNwbGljZShuLDAsdCksdGhpcy51cGRhdGVMZWFmU3RhdGUoKX0sZS5wcm90b3R5cGUuaW5zZXJ0QmVmb3JlPWZ1bmN0aW9uKGUsdCl7dmFyIG49dm9pZCAwO3QmJihuPXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpKSx0aGlzLmluc2VydENoaWxkKGUsbil9LGUucHJvdG90eXBlLmluc2VydEFmdGVyPWZ1bmN0aW9uKGUsdCl7dmFyIG49dm9pZCAwO3QmJihuPXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKHQpLG4hPT0tMSYmKG4rPTEpKSx0aGlzLmluc2VydENoaWxkKGUsbil9LGUucHJvdG90eXBlLnJlbW92ZUNoaWxkPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuY2hpbGROb2Rlcy5pbmRleE9mKGUpO3Q+LTEmJih0aGlzLnN0b3JlJiZ0aGlzLnN0b3JlLmRlcmVnaXN0ZXJOb2RlKGUpLAplLnBhcmVudD1udWxsLHRoaXMuY2hpbGROb2Rlcy5zcGxpY2UodCwxKSksdGhpcy51cGRhdGVMZWFmU3RhdGUoKX0sZS5wcm90b3R5cGUucmVtb3ZlQ2hpbGRCeURhdGE9ZnVuY3Rpb24oZSl7dmFyIHQ9bnVsbDt0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaChmdW5jdGlvbihuKXtuLmRhdGE9PT1lJiYodD1uKX0pLHQmJnRoaXMucmVtb3ZlQ2hpbGQodCl9LGUucHJvdG90eXBlLmV4cGFuZD1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMsaT1mdW5jdGlvbigpe2lmKHQpZm9yKHZhciBpPW4ucGFyZW50O2kubGV2ZWw+MDspaS5leHBhbmRlZD0hMCxpPWkucGFyZW50O24uZXhwYW5kZWQ9ITAsZSYmZSgpfTt0aGlzLnNob3VsZExvYWREYXRhKCk/dGhpcy5sb2FkRGF0YShmdW5jdGlvbihlKXtlIGluc3RhbmNlb2YgQXJyYXkmJmkoKX0pOmkoKX0sZS5wcm90b3R5cGUuZG9DcmVhdGVDaGlsZHJlbj1mdW5jdGlvbihlKXt2YXIgdD10aGlzLG49YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOnt9O2UuZm9yRWFjaChmdW5jdGlvbihlKXt0Lmluc2VydENoaWxkKCgwLHJbImRlZmF1bHQiXSkoe2RhdGE6ZX0sbikpfSl9LGUucHJvdG90eXBlLmNvbGxhcHNlPWZ1bmN0aW9uKCl7dGhpcy5leHBhbmRlZD0hMX0sZS5wcm90b3R5cGUuc2hvdWxkTG9hZERhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zdG9yZS5sYXp5PT09ITAmJnRoaXMuc3RvcmUubG9hZCYmIXRoaXMubG9hZGVkfSxlLnByb3RvdHlwZS51cGRhdGVMZWFmU3RhdGU9ZnVuY3Rpb24oKXtpZih0aGlzLnN0b3JlLmxhenk9PT0hMCYmdGhpcy5sb2FkZWQhPT0hMCYmInVuZGVmaW5lZCIhPXR5cGVvZiB0aGlzLmlzTGVhZkJ5VXNlcilyZXR1cm4gdm9pZCh0aGlzLmlzTGVhZj10aGlzLmlzTGVhZkJ5VXNlcik7dmFyIGU9dGhpcy5jaGlsZE5vZGVzO3JldHVybiF0aGlzLnN0b3JlLmxhenl8fHRoaXMuc3RvcmUubGF6eT09PSEwJiZ0aGlzLmxvYWRlZD09PSEwP3ZvaWQodGhpcy5pc0xlYWY9IWV8fDA9PT1lLmxlbmd0aCk6dm9pZCh0aGlzLmlzTGVhZj0hMSl9LGUucHJvdG90eXBlLnNldENoZWNrZWQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzO3RoaXMuaW5kZXRlcm1pbmF0ZT0iaGFsZiI9PT1lLHRoaXMuY2hlY2tlZD1lPT09ITA7dmFyIGk9ZnVuY3Rpb24oKXtpZih0KWZvcih2YXIgaT1uLmNoaWxkTm9kZXMscz0wLG89aS5sZW5ndGg7czxvO3MrKyl7dmFyIGE9aVtzXTthLnNldENoZWNrZWQoZSE9PSExLHQpfX07IXRoaXMuc3RvcmUuY2hlY2tTdHJpY3RseSYmdGhpcy5zaG91bGRMb2FkRGF0YSgpP3RoaXMubG9hZERhdGEoZnVuY3Rpb24oKXtpKCl9LHtjaGVja2VkOmUhPT0hMX0pOmkoKTt2YXIgcz10aGlzLnBhcmVudDtzJiYwIT09cy5sZXZlbCYmKHRoaXMuc3RvcmUuY2hlY2tTdHJpY3RseXx8dShzKSl9LGUucHJvdG90eXBlLmdldENoaWxkcmVuPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5kYXRhO2lmKCFlKXJldHVybiBudWxsO3ZhciB0PXRoaXMuc3RvcmUucHJvcHMsbj0iY2hpbGRyZW4iO3JldHVybiB0JiYobj10LmNoaWxkcmVufHwiY2hpbGRyZW4iKSx2b2lkIDA9PT1lW25dJiYoZVtuXT1udWxsKSxlW25dfSxlLnByb3RvdHlwZS51cGRhdGVDaGlsZHJlbj1mdW5jdGlvbigpe3ZhciBlPXRoaXMsdD10aGlzLmdldENoaWxkcmVuKCl8fFtdLG49dGhpcy5jaGlsZE5vZGVzLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5kYXRhfSksaT17fSxzPVtdO3QuZm9yRWFjaChmdW5jdGlvbihlLHQpe2VbbC5OT0RFX0tFWV0/aVtlW2wuTk9ERV9LRVldXT17aW5kZXg6dCxkYXRhOmV9OnMucHVzaCh7aW5kZXg6dCxkYXRhOmV9KX0pLG4uZm9yRWFjaChmdW5jdGlvbih0KXtpW3RbbC5OT0RFX0tFWV1dfHxlLnJlbW92ZUNoaWxkQnlEYXRhKHQpfSkscy5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPXQuaW5kZXgsaT10LmRhdGE7ZS5pbnNlcnRDaGlsZCh7ZGF0YTppfSxuKX0pLHRoaXMudXBkYXRlTGVhZlN0YXRlKCl9LGUucHJvdG90eXBlLmxvYWREYXRhPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsbj1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e307aWYodGhpcy5zdG9yZS5sYXp5IT09ITB8fCF0aGlzLnN0b3JlLmxvYWR8fHRoaXMubG9hZGVkfHx0aGlzLmxvYWRpbmcpZSYmZS5jYWxsKHRoaXMpO2Vsc2V7dGhpcy5sb2FkaW5nPSEwO3ZhciBpPWZ1bmN0aW9uKGkpe3QubG9hZGVkPSEwLHQubG9hZGluZz0hMSx0LmNoaWxkTm9kZXM9W10sdC5kb0NyZWF0ZUNoaWxkcmVuKGksbiksdC51cGRhdGVMZWFmU3RhdGUoKSxlJiZlLmNhbGwodCxpKX07dGhpcy5zdG9yZS5sb2FkKHRoaXMsaSl9fSxvKGUsW3trZXk6ImxhYmVsIixnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZCh0aGlzLCJsYWJlbCIpfX0se2tleToiaWNvbiIsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGQodGhpcywiaWNvbiIpfX0se2tleToia2V5IixnZXQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnN0b3JlLmtleTtyZXR1cm4gdGhpcy5kYXRhP3RoaXMuZGF0YVtlXTpudWxsfX1dKSxlfSgpO3RbImRlZmF1bHQiXT1mfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIG49dC5OT0RFX0tFWT0iJHRyZWVOb2RlSWQiO3QubWFya05vZGVEYXRhPWZ1bmN0aW9uKGUsdCl7dFtuXXx8T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7dmFsdWU6ZS5pZCxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMSx3cml0YWJsZTohMX0pfSx0LmdldE5vZGVLZXk9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT90W2VdOnRbbl19fSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMjQzKTt2YXIgbz1uKDI0NSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigyNDQpLG89aShzKSxhPW4oOTYpLHI9aShhKTt0WyJkZWZhdWx0Il09e25hbWU6ImVsLXRyZWUtbm9kZSIscHJvcHM6e25vZGU6eyJkZWZhdWx0IjpmdW5jdGlvbigpe3JldHVybnt9fX0scHJvcHM6e30scmVuZGVyQ29udGVudDpGdW5jdGlvbn0sY29tcG9uZW50czp7RWxDaGVja2JveDpyWyJkZWZhdWx0Il0sQ29sbGFwc2VUcmFuc2l0aW9uOm9bImRlZmF1bHQiXSxOb2RlQ29udGVudDp7cHJvcHM6e25vZGU6e3JlcXVpcmVkOiEwfX0scmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuJHBhcmVudCxuPXRoaXMubm9kZSxpPW4uZGF0YSxzPW4uc3RvcmU7cmV0dXJuIHQucmVuZGVyQ29udGVudD90LnJlbmRlckNvbnRlbnQuY2FsbCh0Ll9yZW5kZXJQcm94eSxlLHtfc2VsZjp0LnRyZWUuJHZub2RlLmNvbnRleHQsbm9kZTpuLGRhdGE6aSxzdG9yZTpzfSk6ZSgic3BhbiIseyJjbGFzcyI6ImVsLXRyZWUtbm9kZV9fbGFiZWwifSxbdGhpcy5ub2RlLmxhYmVsXSl9fX0sZGF0YTpmdW5jdGlvbigpe3JldHVybnt0cmVlOm51bGwsZXhwYW5kZWQ6ITEsY2hpbGROb2RlUmVuZGVyZWQ6ITEsc2hvd0NoZWNrYm94OiExLG9sZENoZWNrZWQ6bnVsbCxvbGRJbmRldGVybWluYXRlOm51bGx9fSx3YXRjaDp7Im5vZGUuaW5kZXRlcm1pbmF0ZSI6ZnVuY3Rpb24oZSl7dGhpcy5oYW5kbGVTZWxlY3RDaGFuZ2UodGhpcy5ub2RlLmNoZWNrZWQsZSl9LCJub2RlLmNoZWNrZWQiOmZ1bmN0aW9uKGUpe3RoaXMuaGFuZGxlU2VsZWN0Q2hhbmdlKGUsdGhpcy5ub2RlLmluZGV0ZXJtaW5hdGUpfSwibm9kZS5leHBhbmRlZCI6ZnVuY3Rpb24oZSl7dGhpcy5leHBhbmRlZD1lLGUmJih0aGlzLmNoaWxkTm9kZVJlbmRlcmVkPSEwKX19LG1ldGhvZHM6e2dldE5vZGVLZXk6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnRyZWUubm9kZUtleTtyZXR1cm4gbiYmZT9lLmRhdGFbbl06dH0saGFuZGxlU2VsZWN0Q2hhbmdlOmZ1bmN0aW9uKGUsdCl7dGhpcy5vbGRDaGVja2VkIT09ZSYmdGhpcy5vbGRJbmRldGVybWluYXRlIT09dCYmdGhpcy50cmVlLiRlbWl0KCJjaGVjay1jaGFuZ2UiLHRoaXMubm9kZS5kYXRhLGUsdCksdGhpcy5vbGRDaGVja2VkPWUsdGhpcy5pbmRldGVybWluYXRlPXR9LGhhbmRsZUNsaWNrOmZ1bmN0aW9uKCl7dGhpcy50cmVlLmN1cnJlbnROb2RlPXRoaXN9LGhhbmRsZUV4cGFuZEljb25DbGljazpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldDsiRElWIiE9PXQudGFnTmFtZS50b1VwcGVyQ2FzZSgpJiYiRElWIiE9PXQucGFyZW50Tm9kZS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpfHwiTEFCRUwiPT09dC5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpfHwodGhpcy5leHBhbmRlZD90aGlzLm5vZGUuY29sbGFwc2UoKTp0aGlzLm5vZGUuZXhwYW5kKCksdGhpcy50cmVlLiRlbWl0KCJub2RlLWNsaWNrIix0aGlzLm5vZGUuZGF0YSx0aGlzLm5vZGUsdGhpcykpfSxoYW5kbGVVc2VyQ2xpY2s6ZnVuY3Rpb24oKXt0aGlzLm5vZGUuaW5kZXRlcm1pbmF0ZSYmdGhpcy5ub2RlLnNldENoZWNrZWQodGhpcy5ub2RlLmNoZWNrZWQsIXRoaXMudHJlZS5jaGVja1N0cmljdGx5KX0saGFuZGxlQ2hlY2tDaGFuZ2U6ZnVuY3Rpb24oZSl7dGhpcy5ub2RlLmluZGV0ZXJtaW5hdGV8fHRoaXMubm9kZS5zZXRDaGVja2VkKGUudGFyZ2V0LmNoZWNrZWQsIXRoaXMudHJlZS5jaGVja1N0cmljdGx5KX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy4kcGFyZW50O3QuaXNUcmVlP3RoaXMudHJlZT10OnRoaXMudHJlZT10LnRyZWU7dmFyIG49dGhpcy50cmVlO258fGNvbnNvbGUud2FybigiQ2FuIG5vdCBmaW5kIG5vZGUncyB0cmVlLiIpO3ZhciBpPW4ucHJvcHN8fHt9LHM9aS5jaGlsZHJlbnx8ImNoaWxkcmVuIjt0aGlzLiR3YXRjaCgibm9kZS5kYXRhLiIrcyxmdW5jdGlvbigpe2Uubm9kZS51cGRhdGVDaGlsZHJlbigpfSksdGhpcy5zaG93Q2hlY2tib3g9bi5zaG93Q2hlY2tib3gsdGhpcy5ub2RlLmV4cGFuZGVkJiYodGhpcy5leHBhbmRlZD0hMCx0aGlzLmNoaWxkTm9kZVJlbmRlcmVkPSEwKX19fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dC5fX2VzTW9kdWxlPSEwO3ZhciBpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSgpe24odGhpcyxlKX1yZXR1cm4gZS5wcm90b3R5cGUuYmVmb3JlRW50ZXI9ZnVuY3Rpb24oZSl7ZS5kYXRhc2V0fHwoZS5kYXRhc2V0PXt9KSxlLmRhdGFzZXQub2xkUGFkZGluZ1RvcD1lLnN0eWxlLnBhZGRpbmdUb3AsZS5kYXRhc2V0Lm9sZFBhZGRpbmdCb3R0b209ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGUuc3R5bGUuaGVpZ2h0PSIwIixlLnN0eWxlLnBhZGRpbmdUb3A9MCxlLnN0eWxlLnBhZGRpbmdCb3R0b209MH0sZS5wcm90b3R5cGUuZW50ZXI9ZnVuY3Rpb24oZSl7ZS5kYXRhc2V0Lm9sZE92ZXJmbG93PWUuc3R5bGUub3ZlcmZsb3csZS5zdHlsZS5kaXNwbGF5PSJibG9jayIsMCE9PWUuc2Nyb2xsSGVpZ2h0PyhlLnN0eWxlLmhlaWdodD1lLnNjcm9sbEhlaWdodCsicHgiLGUuc3R5bGUucGFkZGluZ1RvcD1lLmRhdGFzZXQub2xkUGFkZGluZ1RvcCxlLnN0eWxlLnBhZGRpbmdCb3R0b209ZS5kYXRhc2V0Lm9sZFBhZGRpbmdCb3R0b20pOihlLnN0eWxlLmhlaWdodD0iIixlLnN0eWxlLnBhZGRpbmdUb3A9ZS5kYXRhc2V0Lm9sZFBhZGRpbmdUb3AsZS5zdHlsZS5wYWRkaW5nQm90dG9tPWUuZGF0YXNldC5vbGRQYWRkaW5nQm90dG9tKSxlLnN0eWxlLm92ZXJmbG93PSJoaWRkZW4ifSxlLnByb3RvdHlwZS5hZnRlckVudGVyPWZ1bmN0aW9uKGUpe2Uuc3R5bGUuZGlzcGxheT0iIixlLnN0eWxlLmhlaWdodD0iIixlLnN0eWxlLm92ZXJmbG93PWUuZGF0YXNldC5vbGRPdmVyZmxvd30sZS5wcm90b3R5cGUuYmVmb3JlTGVhdmU9ZnVuY3Rpb24oZSl7ZS5kYXRhc2V0fHwoZS5kYXRhc2V0PXt9KSxlLmRhdGFzZXQub2xkUGFkZGluZ1RvcD1lLnN0eWxlLnBhZGRpbmdUb3AsZS5kYXRhc2V0Lm9sZFBhZGRpbmdCb3R0b209ZS5zdHlsZS5wYWRkaW5nQm90dG9tLGUuZGF0YXNldC5vbGRPdmVyZmxvdz1lLnN0eWxlLm92ZXJmbG93LGUuc3R5bGUuZGlzcGxheT0iYmxvY2siLDAhPT1lLnNjcm9sbEhlaWdodCYmKGUuc3R5bGUuaGVpZ2h0PWUuc2Nyb2xsSGVpZ2h0KyJweCIpLGUuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiJ9LGUucHJvdG90eXBlLmxlYXZlPWZ1bmN0aW9uKGUpezAhPT1lLnNjcm9sbEhlaWdodCYmc2V0VGltZW91dChmdW5jdGlvbigpe2Uuc3R5bGUuaGVpZ2h0PTAsZS5zdHlsZS5wYWRkaW5nVG9wPTAsZS5zdHlsZS5wYWRkaW5nQm90dG9tPTB9KX0sZS5wcm90b3R5cGUuYWZ0ZXJMZWF2ZT1mdW5jdGlvbihlKXtlLnN0eWxlLmRpc3BsYXk9ZS5zdHlsZS5oZWlnaHQ9IiIsZS5zdHlsZS5vdmVyZmxvdz1lLmRhdGFzZXQub2xkT3ZlcmZsb3csZS5zdHlsZS5wYWRkaW5nVG9wPWUuZGF0YXNldC5vbGRQYWRkaW5nVG9wLGUuc3R5bGUucGFkZGluZ0JvdHRvbT1lLmRhdGFzZXQub2xkUGFkZGluZ0JvdHRvbX0sZX0oKTt0WyJkZWZhdWx0Il09e2Z1bmN0aW9uYWw6ITAscmVuZGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5jaGlsZHJlbixzPXtvbjpuZXcgaX07cmV0dXJuIG49bi5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuZGF0YVsiY2xhc3MiXT1bImNvbGxhcHNlLXRyYW5zaXRpb24iXSxlfSksZSgidHJhbnNpdGlvbiIscyxuKX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiZGl2Iix7ZGlyZWN0aXZlczpbe25hbWU6InNob3ciLHJhd05hbWU6InYtc2hvdyIsdmFsdWU6ZS5ub2RlLnZpc2libGUsZXhwcmVzc2lvbjoibm9kZS52aXNpYmxlIn1dLHN0YXRpY0NsYXNzOiJlbC10cmVlLW5vZGUiLCJjbGFzcyI6eyJpcy1leHBhbmRlZCI6ZS5jaGlsZE5vZGVSZW5kZXJlZCYmZS5leHBhbmRlZCwiaXMtY3VycmVudCI6ZS50cmVlLmN1cnJlbnROb2RlPT09ZS5fc2VsZiwiaXMtaGlkZGVuIjohZS5ub2RlLnZpc2libGV9LG9uOntjbGljazpmdW5jdGlvbih0KXt0LnN0b3BQcm9wYWdhdGlvbigpLGUuaGFuZGxlQ2xpY2sodCl9fX0sW2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC10cmVlLW5vZGVfX2NvbnRlbnQiLHN0eWxlOnsicGFkZGluZy1sZWZ0IjoxNiooZS5ub2RlLmxldmVsLTEpKyJweCJ9LG9uOntjbGljazplLmhhbmRsZUV4cGFuZEljb25DbGlja319LFtlLl9oKCJzcGFuIix7c3RhdGljQ2xhc3M6ImVsLXRyZWUtbm9kZV9fZXhwYW5kLWljb24iLCJjbGFzcyI6eyJpcy1sZWFmIjplLm5vZGUuaXNMZWFmLGV4cGFuZGVkOiFlLm5vZGUuaXNMZWFmJiZlLmV4cGFuZGVkfX0pLGUuc2hvd0NoZWNrYm94P2UuX2goImVsLWNoZWNrYm94Iix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTplLm5vZGUuY2hlY2tlZCxleHByZXNzaW9uOiJub2RlLmNoZWNrZWQifV0sYXR0cnM6e2luZGV0ZXJtaW5hdGU6ZS5ub2RlLmluZGV0ZXJtaW5hdGV9LGRvbVByb3BzOnt2YWx1ZTplLm5vZGUuY2hlY2tlZH0sb246e2NoYW5nZTplLmhhbmRsZUNoZWNrQ2hhbmdlLGlucHV0OmZ1bmN0aW9uKHQpe2Uubm9kZS5jaGVja2VkPXR9fSxuYXRpdmVPbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5oYW5kbGVVc2VyQ2xpY2sodCl9fX0pOmUuX2UoKSxlLm5vZGUubG9hZGluZz9lLl9oKCJzcGFuIix7c3RhdGljQ2xhc3M6ImVsLXRyZWUtbm9kZV9fbG9hZGluZy1pY29uIGVsLWljb24tbG9hZGluZyJ9KTplLl9lKCksZS5faCgibm9kZS1jb250ZW50Iix7YXR0cnM6e25vZGU6ZS5ub2RlfX0pXSksZS5faCgiY29sbGFwc2UtdHJhbnNpdGlvbiIsW2UuX2goImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUuZXhwYW5kZWQsZXhwcmVzc2lvbjoiZXhwYW5kZWQifV0sc3RhdGljQ2xhc3M6ImVsLXRyZWUtbm9kZV9fY2hpbGRyZW4ifSxbZS5fbChlLm5vZGUuY2hpbGROb2RlcyxmdW5jdGlvbih0KXtyZXR1cm4gZS5faCgiZWwtdHJlZS1ub2RlIix7a2V5OmUuZ2V0Tm9kZUtleSh0KSxhdHRyczp7InJlbmRlci1jb250ZW50IjplLnJlbmRlckNvbnRlbnQsbm9kZTp0fX0pfSldKV0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtdHJlZSIsImNsYXNzIjp7ImVsLXRyZWUtLWhpZ2hsaWdodC1jdXJyZW50IjplLmhpZ2hsaWdodEN1cnJlbnR9fSxbZS5fbChlLnJvb3QuY2hpbGROb2RlcyxmdW5jdGlvbih0KXtyZXR1cm4gZS5faCgiZWwtdHJlZS1ub2RlIix7a2V5OmUuZ2V0Tm9kZUtleSh0KSxhdHRyczp7bm9kZTp0LHByb3BzOmUucHJvcHMsInJlbmRlci1jb250ZW50IjplLnJlbmRlckNvbnRlbnR9fSl9KSxlLnJvb3QuY2hpbGROb2RlcyYmMCE9PWUucm9vdC5jaGlsZE5vZGVzLmxlbmd0aD9lLl9lKCk6ZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXRyZWVfX2VtcHR5LWJsb2NrIn0sW2UuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtdHJlZV9fZW1wdHktdGV4dCJ9LFtlLl9zKGUuZW1wdHlUZXh0KV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDI0OCksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigyNDkpO3ZhciBvPW4oMjUwKTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwO3ZhciBuPXtzdWNjZXNzOiJlbC1pY29uLWNpcmNsZS1jaGVjayIsd2FybmluZzoiZWwtaWNvbi13YXJuaW5nIixlcnJvcjoiZWwtaWNvbi1jaXJjbGUtY3Jvc3MifTt0WyJkZWZhdWx0Il09e25hbWU6ImVsLWFsZXJ0Iixwcm9wczp7dGl0bGU6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiIixyZXF1aXJlZDohMH0sZGVzY3JpcHRpb246e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiIn0sdHlwZTp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJpbmZvIn0sY2xvc2FibGU6e3R5cGU6Qm9vbGVhbiwiZGVmYXVsdCI6ITB9LGNsb3NlVGV4dDp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiIifSxzaG93SWNvbjp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMX0scmVuZGVyQ29udGVudDpGdW5jdGlvbn0sZGF0YTpmdW5jdGlvbigpe3JldHVybnt2aXNpYmxlOiEwfX0sY29tcG9uZW50czp7ZGVzY0NvbnRlbnQ6e3JlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLiRwYXJlbnQ7cmV0dXJuIHQucmVuZGVyQ29udGVudD90LnJlbmRlckNvbnRlbnQoZSk6dC5kZXNjcmlwdGlvbj9lKCJwIix7ImNsYXNzIjoiZWwtYWxlcnRfX2Rlc2NyaXB0aW9uIn0sW3QuZGVzY3JpcHRpb25dKToiIn19fSxtZXRob2RzOntjbG9zZTpmdW5jdGlvbigpe3RoaXMudmlzaWJsZT0hMSx0aGlzLiRlbWl0KCJjbG9zZSIpfX0sY29tcHV0ZWQ6e3R5cGVDbGFzczpmdW5jdGlvbigpe3JldHVybiJlbC1hbGVydC0tIit0aGlzLnR5cGV9LGljb25DbGFzczpmdW5jdGlvbigpe3JldHVybiBuW3RoaXMudHlwZV18fCJlbC1pY29uLWluZm9ybWF0aW9uIn0saXNCaWdJY29uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVzY3JpcHRpb24/ImlzLWJpZyI6IiJ9LGlzQm9sZFRpdGxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZGVzY3JpcHRpb24/ImlzLWJvbGQiOiIifX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOiJlbC1hbGVydC1mYWRlIn19LFtlLl9oKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnZpc2libGUsZXhwcmVzc2lvbjoidmlzaWJsZSJ9XSxzdGF0aWNDbGFzczoiZWwtYWxlcnQiLCJjbGFzcyI6W2UudHlwZUNsYXNzXX0sW2Uuc2hvd0ljb24/ZS5faCgiaSIse3N0YXRpY0NsYXNzOiJlbC1hbGVydF9faWNvbiIsImNsYXNzIjpbZS5pY29uQ2xhc3MsZS5pc0JpZ0ljb25dfSk6ZS5fZSgpLGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1hbGVydF9fY29udGVudCJ9LFtlLnRpdGxlP2UuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtYWxlcnRfX3RpdGxlIiwiY2xhc3MiOltlLmlzQm9sZFRpdGxlXX0sW2UuX3MoZS50aXRsZSldKTplLl9lKCksZS5faCgiZGVzYy1jb250ZW50IiksZS5faCgiaSIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUuY2xvc2FibGUsZXhwcmVzc2lvbjoiY2xvc2FibGUifV0sc3RhdGljQ2xhc3M6ImVsLWFsZXJ0X19jbG9zZWJ0biIsImNsYXNzIjp7ImlzLWN1c3RvbWVkIjoiIiE9PWUuY2xvc2VUZXh0LCJlbC1pY29uLWNsb3NlIjoiIj09PWUuY2xvc2VUZXh0fSxvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS5jbG9zZSgpfX19LFtlLl9zKGUuY2xvc2VUZXh0KV0pXSldKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjUyKSxvPWkocyk7dFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE0KSxvPWkocyksYT1uKDI2KSxyPW9bImRlZmF1bHQiXS5leHRlbmQobigyNTMpKSxsPXZvaWQgMCx1PVtdLGQ9MSxjPWZ1bmN0aW9uIGYoZSl7ZT1lfHx7fTt2YXIgdD1lLm9uQ2xvc2Usbj0ibm90aWZpY2F0aW9uXyIrZCsrO2Uub25DbG9zZT1mdW5jdGlvbigpe2YuY2xvc2Uobix0KX0sbD1uZXcgcih7ZGF0YTplfSksbC5pZD1uLGwudm09bC4kbW91bnQoKSxkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGwudm0uJGVsKSxsLnZtLnZpc2libGU9ITAsbC5kb209bC52bS4kZWwsbC5kb20uc3R5bGUuekluZGV4PWEuUG9wdXBNYW5hZ2VyLm5leHRaSW5kZXgoKTtmb3IodmFyIGk9ZS5vZmZzZXR8fDAscz1pLG89MCxjPXUubGVuZ3RoO288YztvKyspcys9dVtvXS4kZWwub2Zmc2V0SGVpZ2h0KzE2O3JldHVybiBzKz0xNixsLnRvcD1zLHUucHVzaChsKSxsLnZtfTtbInN1Y2Nlc3MiLCJ3YXJuaW5nIiwiaW5mbyIsImVycm9yIl0uZm9yRWFjaChmdW5jdGlvbihlKXtjW2VdPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmKHQ9e21lc3NhZ2U6dH0pLHQudHlwZT1lLGModCl9fSksYy5jbG9zZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj12b2lkIDAsaT12b2lkIDAscz0wLG89dS5sZW5ndGg7czxvO3MrKylpZihlPT09dVtzXS5pZCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQodVtzXSksbj1zLGk9dVtzXS5kb20ub2Zmc2V0SGVpZ2h0LHUuc3BsaWNlKHMsMSk7YnJlYWt9aWYobz4xKWZvcihzPW47czxvLTE7cysrKXVbc10uZG9tLnN0eWxlLnRvcD1wYXJzZUludCh1W3NdLmRvbS5zdHlsZS50b3AsMTApLWktMTYrInB4In0sdFsiZGVmYXVsdCJdPWN9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigyNTQpO3ZhciBvPW4oMjU1KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwO3ZhciBuPXtzdWNjZXNzOiJjaXJjbGUtY2hlY2siLGluZm86ImluZm9ybWF0aW9uIix3YXJuaW5nOiJ3YXJuaW5nIixlcnJvcjoiY2lyY2xlLWNyb3NzIn07dFsiZGVmYXVsdCJdPXtkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3Zpc2libGU6ITEsdGl0bGU6IiIsbWVzc2FnZToiIixkdXJhdGlvbjo0NTAwLHR5cGU6IiIsb25DbG9zZTpudWxsLGNsb3NlZDohMSx0b3A6bnVsbCx0aW1lcjpudWxsfX0sY29tcHV0ZWQ6e3R5cGVDbGFzczpmdW5jdGlvbigpe3JldHVybiB0aGlzLnR5cGUmJm5bdGhpcy50eXBlXT8iZWwtaWNvbi0iK25bdGhpcy50eXBlXToiIn19LHdhdGNoOntjbG9zZWQ6ZnVuY3Rpb24oZSl7ZSYmKHRoaXMudmlzaWJsZT0hMSx0aGlzLiRlbC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIix0aGlzLmRlc3Ryb3lFbGVtZW50KSl9fSxtZXRob2RzOntkZXN0cm95RWxlbWVudDpmdW5jdGlvbigpe3RoaXMuJGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLHRoaXMuZGVzdHJveUVsZW1lbnQpLHRoaXMuJGRlc3Ryb3koITApLHRoaXMuJGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy4kZWwpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuY2xvc2VkPSEwLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9uQ2xvc2UmJnRoaXMub25DbG9zZSgpfSxjbGVhclRpbWVyOmZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpfSxzdGFydFRpbWVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmR1cmF0aW9uPjAmJih0aGlzLnRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmNsb3NlZHx8ZS5jbG9zZSgpfSx0aGlzLmR1cmF0aW9uKSl9fSxtb3VudGVkOmZ1bmN0aW9uKCl7dmFyIGU9dGhpczt0aGlzLmR1cmF0aW9uPjAmJih0aGlzLnRpbWVyPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmNsb3NlZHx8ZS5jbG9zZSgpfSx0aGlzLmR1cmF0aW9uKSl9fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goInRyYW5zaXRpb24iLHthdHRyczp7bmFtZToiZWwtbm90aWZpY2F0aW9uLWZhZGUifX0sW2UuX2goImRpdiIse2RpcmVjdGl2ZXM6W3tuYW1lOiJzaG93IixyYXdOYW1lOiJ2LXNob3ciLHZhbHVlOmUudmlzaWJsZSxleHByZXNzaW9uOiJ2aXNpYmxlIn1dLHN0YXRpY0NsYXNzOiJlbC1ub3RpZmljYXRpb24iLHN0eWxlOnt0b3A6ZS50b3A/ZS50b3ArInB4IjoiYXV0byJ9LG9uOnttb3VzZWVudGVyOmZ1bmN0aW9uKHQpe2UuY2xlYXJUaW1lcigpfSxtb3VzZWxlYXZlOmZ1bmN0aW9uKHQpe2Uuc3RhcnRUaW1lcigpfX19LFtlLnR5cGU/ZS5faCgiaSIse3N0YXRpY0NsYXNzOiJlbC1ub3RpZmljYXRpb25fX2ljb24iLCJjbGFzcyI6W2UudHlwZUNsYXNzXX0pOmUuX2UoKSxlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtbm90aWZpY2F0aW9uX19ncm91cCIsc3R5bGU6eyJtYXJnaW4tbGVmdCI6ZS50eXBlQ2xhc3M/IjU1cHgiOiIwIn19LFtlLl9oKCJzcGFuIixbZS5fcyhlLnRpdGxlKV0pLGUuX2goInAiLFtlLl9zKGUubWVzc2FnZSldKSxlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtbm90aWZpY2F0aW9uX19jbG9zZUJ0biBlbC1pY29uLWNsb3NlIixvbjp7Y2xpY2s6ZS5jbG9zZX19KV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDI1Nyksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigyNTgpO3ZhciBvPW4oMjYwKTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDgwKSxvPWkocyksYT1uKDE3OSkscj1pKGEpLGw9bigyNTkpO3RbImRlZmF1bHQiXT17bmFtZToiRWxTbGlkZXIiLHByb3BzOnttaW46e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjowfSxtYXg6e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjoxMDB9LHN0ZXA6e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjoxfSxkZWZhdWx0VmFsdWU6e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjowfSx2YWx1ZTp7dHlwZTpOdW1iZXIsImRlZmF1bHQiOjB9LHNob3dJbnB1dDp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMX0sc2hvd1N0b3BzOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiExfSxkaXNhYmxlZDp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMX19LGNvbXBvbmVudHM6e0VsSW5wdXROdW1iZXI6b1siZGVmYXVsdCJdLEVsVG9vbHRpcDpyWyJkZWZhdWx0Il19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57cHJlY2lzaW9uOjAsaW5wdXRWYWx1ZTpudWxsLHRpbWVvdXQ6bnVsbCxob3ZlcmluZzohMSxkcmFnZ2luZzohMSxzdGFydFg6MCxjdXJyZW50WDowLHN0YXJ0UG9zOjAsbmV3UG9zOm51bGwsb2xkVmFsdWU6dGhpcy52YWx1ZSxjdXJyZW50UG9zaXRpb246KHRoaXMudmFsdWUtdGhpcy5taW4pLyh0aGlzLm1heC10aGlzLm1pbikqMTAwKyIlIn19LHdhdGNoOntpbnB1dFZhbHVlOmZ1bmN0aW9uKGUpe3RoaXMuJGVtaXQoImlucHV0IixOdW1iZXIoZSkpfSx2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3JldHVybiB0aGlzLiRuZXh0VGljayhmdW5jdGlvbigpe3QudXBkYXRlUG9wcGVyKCl9KSwibnVtYmVyIiE9dHlwZW9mIGV8fGlzTmFOKGUpfHxlPHRoaXMubWluP3ZvaWQgdGhpcy4kZW1pdCgiaW5wdXQiLHRoaXMubWluKTplPnRoaXMubWF4P3ZvaWQgdGhpcy4kZW1pdCgiaW5wdXQiLHRoaXMubWF4KToodGhpcy5pbnB1dFZhbHVlPWUsdm9pZCB0aGlzLnNldFBvc2l0aW9uKDEwMCooZS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKSkpfX0sbWV0aG9kczp7aGFuZGxlTW91c2VFbnRlcjpmdW5jdGlvbigpe3RoaXMuaG92ZXJpbmc9ITAsdGhpcy4kcmVmcy50b29sdGlwLnNob3dQb3BwZXI9ITB9LGhhbmRsZU1vdXNlTGVhdmU6ZnVuY3Rpb24oKXt0aGlzLmhvdmVyaW5nPSExLHRoaXMuJHJlZnMudG9vbHRpcC5zaG93UG9wcGVyPSExfSx1cGRhdGVQb3BwZXI6ZnVuY3Rpb24oKXt0aGlzLiRyZWZzLnRvb2x0aXAudXBkYXRlUG9wcGVyKCl9LHNldFBvc2l0aW9uOmZ1bmN0aW9uKGUpe2U8MD9lPTA6ZT4xMDAmJihlPTEwMCk7dmFyIHQ9MTAwLygodGhpcy5tYXgtdGhpcy5taW4pL3RoaXMuc3RlcCksbj1NYXRoLnJvdW5kKGUvdCksaT1uKnQqKHRoaXMubWF4LXRoaXMubWluKSouMDErdGhpcy5taW47aT1wYXJzZUZsb2F0KGkudG9GaXhlZCh0aGlzLnByZWNpc2lvbikpLHRoaXMuJGVtaXQoImlucHV0IixpKSx0aGlzLmN1cnJlbnRQb3NpdGlvbj0odGhpcy52YWx1ZS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKSoxMDArIiUiLHRoaXMuZHJhZ2dpbmd8fHRoaXMudmFsdWUhPT10aGlzLm9sZFZhbHVlJiYodGhpcy4kZW1pdCgiY2hhbmdlIix0aGlzLnZhbHVlKSx0aGlzLm9sZFZhbHVlPXRoaXMudmFsdWUpfSxvblNsaWRlckNsaWNrOmZ1bmN0aW9uKGUpe2lmKCF0aGlzLmRpc2FibGVkKXt2YXIgdD10aGlzLiRyZWZzLnNsaWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5sZWZ0O3RoaXMuc2V0UG9zaXRpb24oKGUuY2xpZW50WC10KS90aGlzLiRzbGlkZXJXaWR0aCoxMDApfX0sb25JbnB1dENoYW5nZTpmdW5jdGlvbigpeyIiIT09dGhpcy52YWx1ZSYmKGlzTmFOKHRoaXMudmFsdWUpfHx0aGlzLnNldFBvc2l0aW9uKDEwMCoodGhpcy52YWx1ZS10aGlzLm1pbikvKHRoaXMubWF4LXRoaXMubWluKSkpfSxvbkRyYWdTdGFydDpmdW5jdGlvbihlKXt0aGlzLmRyYWdnaW5nPSEwLHRoaXMuc3RhcnRYPWUuY2xpZW50WCx0aGlzLnN0YXJ0UG9zPXBhcnNlSW50KHRoaXMuY3VycmVudFBvc2l0aW9uLDEwKX0sb25EcmFnZ2luZzpmdW5jdGlvbihlKXtpZih0aGlzLmRyYWdnaW5nKXt0aGlzLiRyZWZzLnRvb2x0aXAuc2hvd1BvcHBlcj0hMCx0aGlzLmN1cnJlbnRYPWUuY2xpZW50WDt2YXIgdD0odGhpcy5jdXJyZW50WC10aGlzLnN0YXJ0WCkvdGhpcy4kc2xpZGVyV2lkdGgqMTAwO3RoaXMubmV3UG9zPXRoaXMuc3RhcnRQb3MrdCx0aGlzLnNldFBvc2l0aW9uKHRoaXMubmV3UG9zKX19LG9uRHJhZ0VuZDpmdW5jdGlvbigpe3RoaXMuZHJhZ2dpbmcmJih0aGlzLmRyYWdnaW5nPSExLHRoaXMuJHJlZnMudG9vbHRpcC5zaG93UG9wcGVyPSExLHRoaXMuc2V0UG9zaXRpb24odGhpcy5uZXdQb3MpLHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLHRoaXMub25EcmFnZ2luZyksd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNldXAiLHRoaXMub25EcmFnRW5kKSl9LG9uQnV0dG9uRG93bjpmdW5jdGlvbihlKXt0aGlzLmRpc2FibGVkfHwodGhpcy5vbkRyYWdTdGFydChlKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIix0aGlzLm9uRHJhZ2dpbmcpLHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZXVwIix0aGlzLm9uRHJhZ0VuZCkpfX0sY29tcHV0ZWQ6eyRzbGlkZXJXaWR0aDpmdW5jdGlvbigpe3JldHVybiBwYXJzZUludCgoMCxsLmdldFN0eWxlKSh0aGlzLiRyZWZzLnNsaWRlciwid2lkdGgiKSwxMCl9LHN0b3BzOmZ1bmN0aW9uKCl7Zm9yKHZhciBlPSh0aGlzLm1heC10aGlzLnZhbHVlKS90aGlzLnN0ZXAsdD1wYXJzZUZsb2F0KHRoaXMuY3VycmVudFBvc2l0aW9uKSxuPTEwMCp0aGlzLnN0ZXAvKHRoaXMubWF4LXRoaXMubWluKSxpPVtdLHM9MTtzPGU7cysrKWkucHVzaCh0K3Mqbik7cmV0dXJuIGl9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7Im51bWJlciIhPXR5cGVvZiB0aGlzLnZhbHVlfHxpc05hTih0aGlzLnZhbHVlKXx8dGhpcy52YWx1ZTx0aGlzLm1pbj90aGlzLiRlbWl0KCJpbnB1dCIsdGhpcy5taW4pOnRoaXMudmFsdWU+dGhpcy5tYXgmJnRoaXMuJGVtaXQoImlucHV0Iix0aGlzLm1heCk7dmFyIGU9W3RoaXMubWluLHRoaXMubWF4LHRoaXMuc3RlcF0ubWFwKGZ1bmN0aW9uKGUpe3ZhciB0PSgiIitlKS5zcGxpdCgiLiIpWzFdO3JldHVybiB0P3QubGVuZ3RoOjB9KTt0aGlzLnByZWNpc2lvbj1NYXRoLm1heC5hcHBseShudWxsLGUpLHRoaXMuaW5wdXRWYWx1ZT10aGlzLmlucHV0VmFsdWV8fHRoaXMudmFsdWV9fX0sZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UoaSxmdW5jdGlvbihlLHQsbixpKXtyZXR1cm4gaT9uLnRvVXBwZXJDYXNlKCk6bn0pLnJlcGxhY2UocywiTW96JDEiKX12YXIgaT0vKFtcOlwtXF9dKyguKSkvZyxzPS9ebW96KFtBLVpdKS8sbz1OdW1iZXIoZG9jdW1lbnQuZG9jdW1lbnRNb2RlKSxhPW88OT9mdW5jdGlvbihlLHQpe2lmKCFlfHwhdClyZXR1cm4gbnVsbDt0PW4odCksImZsb2F0Ij09PXQmJih0PSJzdHlsZUZsb2F0Iik7dHJ5e3N3aXRjaCh0KXtjYXNlIm9wYWNpdHkiOnRyeXtyZXR1cm4gZS5maWx0ZXJzLml0ZW0oImFscGhhIikub3BhY2l0eS8xMDB9Y2F0Y2goaSl7cmV0dXJuIDF9YnJlYWs7ZGVmYXVsdDpyZXR1cm4gZS5zdHlsZVt0XXx8ZS5jdXJyZW50U3R5bGU/ZS5jdXJyZW50U3R5bGVbdF06bnVsbH19Y2F0Y2goaSl7cmV0dXJuIGUuc3R5bGVbdF19fTpmdW5jdGlvbihlLHQpe2lmKCFlfHwhdClyZXR1cm4gbnVsbDt0PW4odCksImZsb2F0Ij09PXQmJih0PSJjc3NGbG9hdCIpO3RyeXt2YXIgaT1kb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKGUsIiIpO3JldHVybiBlLnN0eWxlW3RdfHxpP2lbdF06bnVsbH1jYXRjaChzKXtyZXR1cm4gZS5zdHlsZVt0XX19LHI9ZnVuY3Rpb24oZSx0LGkpe2lmKGUmJnQpaWYoIm9iamVjdCI9PXR5cGVvZiB0KWZvcih2YXIgcyBpbiB0KXQuaGFzT3duUHJvcGVydHkocykmJnIoZSxzLHRbc10pO2Vsc2UgdD1uKHQpLCJvcGFjaXR5Ij09PXQmJm88OT9lLnN0eWxlLmZpbHRlcj1pc05hTihpKT8iIjoiYWxwaGEob3BhY2l0eT0iKzEwMCppKyIpIjplLnN0eWxlW3RdPWl9O2UuZXhwb3J0cz17Z2V0U3R5bGU6YSxzZXRTdHlsZTpyfX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1zbGlkZXIifSxbZS5zaG93SW5wdXQ/ZS5faCgiZWwtaW5wdXQtbnVtYmVyIix7ZGlyZWN0aXZlczpbe25hbWU6Im1vZGVsIixyYXdOYW1lOiJ2LW1vZGVsIix2YWx1ZTplLmlucHV0VmFsdWUsZXhwcmVzc2lvbjoiaW5wdXRWYWx1ZSJ9XSxyZWY6ImlucHV0IixzdGF0aWNDbGFzczoiZWwtc2xpZGVyX19pbnB1dCIsYXR0cnM6e3N0ZXA6ZS5zdGVwLGRpc2FibGVkOmUuZGlzYWJsZWQsbWluOmUubWluLG1heDplLm1heCxzaXplOiJzbWFsbCJ9LGRvbVByb3BzOnt2YWx1ZTplLmlucHV0VmFsdWV9LG9uOntpbnB1dDpmdW5jdGlvbih0KXtlLmlucHV0VmFsdWU9dH19LG5hdGl2ZU9uOntrZXl1cDpmdW5jdGlvbih0KXtlLm9uSW5wdXRDaGFuZ2UodCl9fX0pOmUuX2UoKSxlLl9oKCJkaXYiLHtyZWY6InNsaWRlciIsc3RhdGljQ2xhc3M6ImVsLXNsaWRlcl9fcnVud2F5IiwiY2xhc3MiOnsic2hvdy1pbnB1dCI6ZS5zaG93SW5wdXQsZGlzYWJsZWQ6ZS5kaXNhYmxlZH0sb246e2NsaWNrOmUub25TbGlkZXJDbGlja319LFtlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtc2xpZGVyX19iYXIiLHN0eWxlOnt3aWR0aDplLmN1cnJlbnRQb3NpdGlvbn19KSxlLl9oKCJkaXYiLHtyZWY6ImJ1dHRvbiIsc3RhdGljQ2xhc3M6ImVsLXNsaWRlcl9fYnV0dG9uLXdyYXBwZXIiLCJjbGFzcyI6e2hvdmVyOmUuaG92ZXJpbmcsZHJhZ2dpbmc6ZS5kcmFnZ2luZ30sc3R5bGU6e2xlZnQ6ZS5jdXJyZW50UG9zaXRpb259LG9uOnttb3VzZWVudGVyOmUuaGFuZGxlTW91c2VFbnRlcixtb3VzZWxlYXZlOmUuaGFuZGxlTW91c2VMZWF2ZSxtb3VzZWRvd246ZS5vbkJ1dHRvbkRvd259fSxbZS5faCgiZWwtdG9vbHRpcCIse3JlZjoidG9vbHRpcCIsYXR0cnM6e3BsYWNlbWVudDoidG9wIn19LFtlLl9oKCJzcGFuIix7c2xvdDoiY29udGVudCJ9LFtlLl9zKGUudmFsdWUpXSksZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXNsaWRlcl9fYnV0dG9uIiwiY2xhc3MiOntob3ZlcjplLmhvdmVyaW5nLGRyYWdnaW5nOmUuZHJhZ2dpbmd9fSldKV0pLGUuX2woZS5zdG9wcyxmdW5jdGlvbih0KXtyZXR1cm4gZS5zaG93U3RvcHM/ZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXNsaWRlcl9fc3RvcCIsc3R5bGU6e2xlZnQ6dCsiJSJ9fSk6ZS5fZSgpfSldKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjYyKSxvPWkocyksYT1uKDI2Nikscj1pKGEpO3RbImRlZmF1bHQiXT17aW5zdGFsbDpmdW5jdGlvbihlKXtlLnVzZShvWyJkZWZhdWx0Il0pLGUucHJvdG90eXBlLiRsb2FkaW5nPXJbImRlZmF1bHQiXX0sZGlyZWN0aXZlOm9bImRlZmF1bHQiXSxzZXJ2aWNlOnJbImRlZmF1bHQiXX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX12YXIgcz1uKDE0KSxvPWkocyksYT1uKDM5KSxyPW9bImRlZmF1bHQiXS5leHRlbmQobigyNjMpKTt0Lmluc3RhbGw9ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVuY3Rpb24odCxpKXtpLnZhbHVlP2UubmV4dFRpY2soZnVuY3Rpb24oKXtpLm1vZGlmaWVycy5mdWxsc2NyZWVuPyh0Lm9yaWdpbmFsUG9zaXRpb249ZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbix0Lm9yaWdpbmFsT3ZlcmZsb3c9ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdywoMCxhLmFkZENsYXNzKSh0Lm1hc2ssImlzLWZ1bGxzY3JlZW4iKSxuKGRvY3VtZW50LmJvZHksdCxpKSk6KCgwLGEucmVtb3ZlQ2xhc3MpKHQubWFzaywiaXMtZnVsbHNjcmVlbiIpLGkubW9kaWZpZXJzLmJvZHk/KHQub3JpZ2luYWxQb3NpdGlvbj1kb2N1bWVudC5ib2R5LnN0eWxlLnBvc2l0aW9uLFsidG9wIiwibGVmdCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49InRvcCI9PT1lPyJzY3JvbGxUb3AiOiJzY3JvbGxMZWZ0Ijt0Lm1hc2tTdHlsZVtlXT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2VdK2RvY3VtZW50LmJvZHlbbl0rZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50W25dKyJweCJ9KSxbImhlaWdodCIsIndpZHRoIl0uZm9yRWFjaChmdW5jdGlvbihlKXt0Lm1hc2tTdHlsZVtlXT10LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2VdKyJweCJ9KSxuKGRvY3VtZW50LmJvZHksdCxpKSk6KHQub3JpZ2luYWxQb3NpdGlvbj10LnN0eWxlLnBvc2l0aW9uLG4odCx0LGkpKSl9KTp0LmRvbVZpc2libGUmJih0Lm1hc2suc3R5bGUuZGlzcGxheT0ibm9uZSIsdC5kb21WaXNpYmxlPSExLGkubW9kaWZpZXJzLmZ1bGxzY3JlZW4mJiJoaWRkZW4iIT09dC5vcmlnaW5hbE92ZXJmbG93JiYoZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdz10Lm9yaWdpbmFsT3ZlcmZsb3cpLGkubW9kaWZpZXJzLmZ1bGxzY3JlZW58fGkubW9kaWZpZXJzLmJvZHk/ZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbj10Lm9yaWdpbmFsUG9zaXRpb246dC5zdHlsZS5wb3NpdGlvbj10Lm9yaWdpbmFsUG9zaXRpb24pfSxuPWZ1bmN0aW9uKGUsdCxuKXt0LmRvbVZpc2libGV8fChPYmplY3Qua2V5cyh0Lm1hc2tTdHlsZSkuZm9yRWFjaChmdW5jdGlvbihlKXt0Lm1hc2suc3R5bGVbZV09dC5tYXNrU3R5bGVbZV19KSwiYWJzb2x1dGUiIT09dC5vcmlnaW5hbFBvc2l0aW9uJiYoZS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxuLm1vZGlmaWVycy5mdWxsc2NyZWVuJiZuLm1vZGlmaWVycy5sb2NrJiYoZS5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIiksdC5tYXNrLnN0eWxlLmRpc3BsYXk9ImJsb2NrIix0LmRvbVZpc2libGU9ITAsZS5hcHBlbmRDaGlsZCh0Lm1hc2spLHQuZG9tSW5zZXJ0ZWQ9ITApfTtlLmRpcmVjdGl2ZSgibG9hZGluZyIse2JpbmQ6ZnVuY3Rpb24oZSxuKXt2YXIgaT1uZXcgcih7ZWw6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IiksZGF0YTp7dGV4dDplLmdldEF0dHJpYnV0ZSgiZWxlbWVudC1sb2FkaW5nLXRleHQiKSxmdWxsc2NyZWVuOiEhbi5tb2RpZmllcnMuZnVsbHNjcmVlbn19KTtlLm1hc2s9aS4kZWwsZS5tYXNrU3R5bGU9e30sdChlLG4pfSx1cGRhdGU6ZnVuY3Rpb24oZSxuKXtuLm9sZFZhbHVlIT09bi52YWx1ZSYmdChlLG4pfSx1bmJpbmQ6ZnVuY3Rpb24oZSx0KXtlLmRvbUluc2VydGVkJiYodC5tb2RpZmllcnMuZnVsbHNjcmVlbnx8dC5tb2RpZmllcnMuYm9keT9kb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGUubWFzayk6ZS5tYXNrJiZlLm1hc2sucGFyZW50Tm9kZSYmZS5tYXNrLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZS5tYXNrKSl9fSl9fSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMjY0KTt2YXIgbz1uKDI2NSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0WyJkZWZhdWx0Il09e2RhdGE6ZnVuY3Rpb24oKXtyZXR1cm57dGV4dDpudWxsLGZ1bGxzY3JlZW46ITAsY3VzdG9tQ2xhc3M6IiJ9fX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtbG9hZGluZy1tYXNrIiwiY2xhc3MiOltlLmN1c3RvbUNsYXNzLHsiaXMtZnVsbHNjcmVlbiI6ZS5mdWxsc2NyZWVufV19LFtlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtbG9hZGluZy1zcGlubmVyIn0sW2UuX2goInN2ZyIse3N0YXRpY0NsYXNzOiJjaXJjdWxhciIsYXR0cnM6e3ZpZXdCb3g6IjI1IDI1IDUwIDUwIn19LFtlLl9oKCJjaXJjbGUiLHtzdGF0aWNDbGFzczoicGF0aCIsYXR0cnM6e2N4OiI1MCIsY3k6IjUwIixyOiIyMCIsZmlsbDoibm9uZSJ9fSldKSxlLnRleHQ/ZS5faCgicCIse3N0YXRpY0NsYXNzOiJlbC1sb2FkaW5nLXRleHQifSxbZS5fcyhlLnRleHQpXSk6ZS5fZSgpXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE0KSxvPWkocyksYT1uKDI2Mykscj1pKGEpLGw9bigxMzUpLHU9aShsKSxkPW9bImRlZmF1bHQiXS5leHRlbmQoclsiZGVmYXVsdCJdKSxjPXt0ZXh0Om51bGwsZnVsbHNjcmVlbjohMCxib2R5OiExLGxvY2s6ITEsY3VzdG9tQ2xhc3M6IiJ9LGY9dm9pZCAwO2QucHJvdG90eXBlLm9yaWdpbmFsUG9zaXRpb249IiIsZC5wcm90b3R5cGUub3JpZ2luYWxPdmVyZmxvdz0iIixkLnByb3RvdHlwZS5jbG9zZT1mdW5jdGlvbigpe3RoaXMuZnVsbHNjcmVlbiYmImhpZGRlbiIhPT10aGlzLm9yaWdpbmFsT3ZlcmZsb3cmJihkb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93PXRoaXMub3JpZ2luYWxPdmVyZmxvdyksdGhpcy5mdWxsc2NyZWVufHx0aGlzLmJvZHk/ZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbj10aGlzLm9yaWdpbmFsUG9zaXRpb246dGhpcy50YXJnZXQuc3R5bGUucG9zaXRpb249dGhpcy5vcmlnaW5hbFBvc2l0aW9uLHRoaXMuZnVsbHNjcmVlbiYmKGY9dm9pZCAwKSx0aGlzLiRlbCYmdGhpcy4kZWwucGFyZW50Tm9kZSYmdGhpcy4kZWwucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLiRlbCksdGhpcy4kZGVzdHJveSgpfTt2YXIgaD1mdW5jdGlvbihlLHQsbil7dmFyIGk9e307ZS5mdWxsc2NyZWVuPyhuLm9yaWdpbmFsUG9zaXRpb249ZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbixuLm9yaWdpbmFsT3ZlcmZsb3c9ZG9jdW1lbnQuYm9keS5zdHlsZS5vdmVyZmxvdyk6ZS5ib2R5PyhuLm9yaWdpbmFsUG9zaXRpb249ZG9jdW1lbnQuYm9keS5zdHlsZS5wb3NpdGlvbixbInRvcCIsImxlZnQiXS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPSJ0b3AiPT09dD8ic2Nyb2xsVG9wIjoic2Nyb2xsTGVmdCI7aVt0XT1lLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0XStkb2N1bWVudC5ib2R5W25dK2RvY3VtZW50LmRvY3VtZW50RWxlbWVudFtuXSsicHgifSksWyJoZWlnaHQiLCJ3aWR0aCJdLmZvckVhY2goZnVuY3Rpb24odCl7aVt0XT1lLnRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVt0XSsicHgifSkpOm4ub3JpZ2luYWxQb3NpdGlvbj10LnN0eWxlLnBvc2l0aW9uLE9iamVjdC5rZXlzKGkpLmZvckVhY2goZnVuY3Rpb24oZSl7bi4kZWwuc3R5bGVbZV09aVtlXX0pfSxwPWZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJndW1lbnRzWzBdOnt9O2lmKGU9KDAsdVsiZGVmYXVsdCJdKSh7fSxjLGUpLCJzdHJpbmciPT10eXBlb2YgZS50YXJnZXQmJihlLnRhcmdldD1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKGUudGFyZ2V0KSksZS50YXJnZXQ9ZS50YXJnZXR8fGRvY3VtZW50LmJvZHksZS50YXJnZXQhPT1kb2N1bWVudC5ib2R5P2UuZnVsbHNjcmVlbj0hMTplLmJvZHk9ITAsZS5mdWxsc2NyZWVuJiZmKXJldHVybiBmO3ZhciB0PWUuYm9keT9kb2N1bWVudC5ib2R5OmUudGFyZ2V0LG49bmV3IGQoe2VsOmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLGRhdGE6ZX0pO3JldHVybiBoKGUsdCxuKSwiYWJzb2x1dGUiIT09bi5vcmlnaW5hbFBvc2l0aW9uJiYodC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSxlLmZ1bGxzY3JlZW4mJmUubG9jayYmKHQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIpLHQuYXBwZW5kQ2hpbGQobi4kZWwpLGUuZnVsbHNjcmVlbiYmKGY9biksbn07dFsiZGVmYXVsdCJdPXB9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9bigyNjgpLG89aShzKTtvWyJkZWZhdWx0Il0uaW5zdGFsbD1mdW5jdGlvbihlKXtlLmNvbXBvbmVudChvWyJkZWZhdWx0Il0ubmFtZSxvWyJkZWZhdWx0Il0pfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMjY5KTt2YXIgbz1uKDI3MCk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0WyJkZWZhdWx0Il09e25hbWU6IkVsSWNvbiIscHJvcHM6e25hbWU6U3RyaW5nfX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJpIix7ImNsYXNzIjoiZWwtaWNvbi0iK2UubmFtZX0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjcyKSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDI3Myk7dmFyIG89bigyNzQpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdFsiZGVmYXVsdCJdPXtuYW1lOiJFbFJvdyIscHJvcHM6e2d1dHRlcjpOdW1iZXIsdHlwZTpTdHJpbmcsanVzdGlmeTp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJzdGFydCJ9LGFsaWduOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6InRvcCJ9fSxjb21wdXRlZDp7c3R5bGU6ZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gdGhpcy5ndXR0ZXImJihlLm1hcmdpbkxlZnQ9Ii0iK3RoaXMuZ3V0dGVyLzIrInB4IixlLm1hcmdpblJpZ2h0PWUubWFyZ2luTGVmdCksZX19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1yb3ciLCJjbGFzcyI6WyJzdGFydCIhPT1lLmp1c3RpZnk/ImlzLWp1c3RpZnktIitlLmp1c3RpZnk6IiIsInRvcCIhPT1lLmFsaWduPyJpcy1hbGlnbi0iK2UuYWxpZ246IiIseyJlbC1yb3ctLWZsZXgiOiJmbGV4Ij09PWUudHlwZX1dLHN0eWxlOmUuc3R5bGV9LFtlLl90KCJkZWZhdWx0IildKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDI3Niksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMDt2YXIgbj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sJiZlIT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgZX07dFsiZGVmYXVsdCJdPXtuYW1lOiJFbENvbCIscHJvcHM6e3NwYW46e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjoyNH0sb2Zmc2V0Ok51bWJlcixwdWxsOk51bWJlcixwdXNoOk51bWJlcix4czpbTnVtYmVyLE9iamVjdF0sc206W051bWJlcixPYmplY3RdLG1kOltOdW1iZXIsT2JqZWN0XSxsZzpbTnVtYmVyLE9iamVjdF19LGNvbXB1dGVkOntndXR0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kcGFyZW50Lmd1dHRlcn0sc3R5bGU6ZnVuY3Rpb24oKXt2YXIgZT17fTtyZXR1cm4gdGhpcy5ndXR0ZXImJihlLnBhZGRpbmdMZWZ0PXRoaXMuZ3V0dGVyLzIrInB4IixlLnBhZGRpbmdSaWdodD1lLnBhZGRpbmdMZWZ0KSxlfX0scmVuZGVyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMsaT10aGlzLnN0eWxlLHM9W107cmV0dXJuWyJzcGFuIiwib2Zmc2V0IiwicHVsbCIsInB1c2giXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3RbZV0mJnMucHVzaCgic3BhbiIhPT1lPyJlbC1jb2wtIitlKyItIit0W2VdOiJlbC1jb2wtIit0W2VdKX0pLFsieHMiLCJzbSIsIm1kIiwibGciXS5mb3JFYWNoKGZ1bmN0aW9uKGUpeyJudW1iZXIiPT10eXBlb2YgdFtlXT9zLnB1c2goImVsLWNvbC0iK2UrIi0iK3RbZV0pOiJvYmplY3QiPT09bih0W2VdKSYmIWZ1bmN0aW9uKCl7dmFyIG49dFtlXTtPYmplY3Qua2V5cyhuKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3MucHVzaCgic3BhbiIhPT10PyJlbC1jb2wtIitlKyItIit0KyItIituW3RdOiJlbC1jb2wtIitlKyItIituW3RdKX0pfSgpfSksZSgiZGl2Iix7ImNsYXNzIjpbImVsLWNvbCIsc10sc3R5bGU6aX0sW3RoaXMuJHNsb3RzWyJkZWZhdWx0Il1dKX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjc4KSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDI3OSkscz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucyksZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6eyJkZWZhdWx0IjplfX1mdW5jdGlvbiBzKCl7fXQuX19lc01vZHVsZT0hMDt2YXIgbz1uKDI4MCksYT1pKG8pLHI9bigyODcpLGw9aShyKSx1PW4oMjk0KSxkPWkodSksYz1uKDI4MiksZj1pKGMpO3RbImRlZmF1bHQiXT17bmFtZToiZWwtdXBsb2FkIixjb21wb25lbnRzOntFbFByb2dyZXNzOmZbImRlZmF1bHQiXSxVcGxvYWRMaXN0OmFbImRlZmF1bHQiXSxVcGxvYWQ6bFsiZGVmYXVsdCJdLElmcmFtZVVwbG9hZDpkWyJkZWZhdWx0Il19LHByb3BzOnthY3Rpb246e3R5cGU6U3RyaW5nLHJlcXVpcmVkOiEwfSxoZWFkZXJzOnt0eXBlOk9iamVjdCwiZGVmYXVsdCI6ZnVuY3Rpb24oKXtyZXR1cm57fX19LGRhdGE6T2JqZWN0LG11bHRpcGxlOkJvb2xlYW4sbmFtZTp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJmaWxlIn0sd2l0aENyZWRlbnRpYWxzOkJvb2xlYW4sdGh1bWJuYWlsTW9kZTpCb29sZWFuLHNob3dVcGxvYWRMaXN0Ont0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiEwfSxhY2NlcHQ6U3RyaW5nLHR5cGU6e3R5cGU6U3RyaW5nLCJkZWZhdWx0Ijoic2VsZWN0In0sYmVmb3JlVXBsb2FkOkZ1bmN0aW9uLG9uUmVtb3ZlOnt0eXBlOkZ1bmN0aW9uLCJkZWZhdWx0IjpzfSxvbkNoYW5nZTp7dHlwZTpGdW5jdGlvbiwiZGVmYXVsdCI6c30sb25QcmV2aWV3Ont0eXBlOkZ1bmN0aW9uLCJkZWZhdWx0IjpzfSxvblN1Y2Nlc3M6e3R5cGU6RnVuY3Rpb24sImRlZmF1bHQiOnN9LG9uRXJyb3I6e3R5cGU6RnVuY3Rpb24sImRlZmF1bHQiOnN9LGRlZmF1bHRGaWxlTGlzdDp7dHlwZTpBcnJheSwiZGVmYXVsdCI6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2ZpbGVMaXN0OltdLGRyYWdPdmVyOiExLGRyYWdpbmc6ITEsdGVtcEluZGV4OjF9fSxtZXRob2RzOntoYW5kbGVTdGFydDpmdW5jdGlvbihlKXtlLnVpZD1EYXRlLm5vdygpK3RoaXMudGVtcEluZGV4Kys7dmFyIHQ9e3N0YXR1czoidXBsb2FkaW5nIixuYW1lOmUubmFtZSxzaXplOmUuc2l6ZSxwZXJjZW50YWdlOjAsdWlkOmUudWlkLHNob3dQcm9ncmVzczohMH07aWYodGhpcy50aHVtYm5haWxNb2RlKXRyeXt0LnVybD1VUkwuY3JlYXRlT2JqZWN0VVJMKGUpfWNhdGNoKG4pe3JldHVybiB2b2lkIGNvbnNvbGUubG9nKG4pfXRoaXMuZmlsZUxpc3QucHVzaCh0KX0saGFuZGxlUHJvZ3Jlc3M6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmdldEZpbGUodCk7bi5wZXJjZW50YWdlPWUucGVyY2VudHx8MH0saGFuZGxlU3VjY2VzczpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0RmlsZSh0KTtuJiYobi5zdGF0dXM9ImZpbmlzaGVkIixuLnJlc3BvbnNlPWUsdGhpcy5vblN1Y2Nlc3MoZSxuLHRoaXMuZmlsZUxpc3QpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLnNob3dQcm9ncmVzcz0hMX0sMWUzKSl9LGhhbmRsZUVycm9yOmZ1bmN0aW9uKGUsdCxuKXt2YXIgaT10aGlzLmdldEZpbGUobikscz10aGlzLmZpbGVMaXN0O2kuc3RhdHVzPSJmYWlsIixzLnNwbGljZShzLmluZGV4T2YoaSksMSksdGhpcy5vbkVycm9yKGUsdCxuKX0saGFuZGxlUmVtb3ZlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZmlsZUxpc3Q7dC5zcGxpY2UodC5pbmRleE9mKGUpLDEpLHRoaXMub25SZW1vdmUoZSx0KX0sZ2V0RmlsZTpmdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuZmlsZUxpc3Q7cmV0dXJuIG4uZXZlcnkoZnVuY3Rpb24obil7cmV0dXJuIHQ9ZS51aWQ9PT1uLnVpZD9uOm51bGwsIXR9KSx0fSxoYW5kbGVQcmV2aWV3OmZ1bmN0aW9uKGUpeyJmaW5pc2hlZCI9PT1lLnN0YXR1cyYmdGhpcy5vblByZXZpZXcoZSl9LGNsZWFyRmlsZXM6ZnVuY3Rpb24oKXt0aGlzLmZpbGVMaXN0PVtdfX0sd2F0Y2g6e2RlZmF1bHRGaWxlTGlzdDp7aW1tZWRpYXRlOiEwLGhhbmRsZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpczt0aGlzLmZpbGVMaXN0PWUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLnN0YXR1cz0iZmluaXNoZWQiLGUucGVyY2VudGFnZT0xMDAsZS51aWQ9RGF0ZS5ub3coKSt0LnRlbXBJbmRleCsrLGV9KX19fSxyZW5kZXI6ZnVuY3Rpb24oZSl7dmFyIHQ7dGhpcy5zaG93VXBsb2FkTGlzdCYmIXRoaXMudGh1bWJuYWlsTW9kZSYmdGhpcy5maWxlTGlzdC5sZW5ndGgmJih0PWUoYVsiZGVmYXVsdCJdLHthdHRyczp7ZmlsZXM6dGhpcy5maWxlTGlzdH0sb246e3JlbW92ZTp0aGlzLmhhbmRsZVJlbW92ZSxwcmV2aWV3OnRoaXMuaGFuZGxlUHJldmlld319LFtdKSk7dmFyIG49e3Byb3BzOnt0eXBlOnRoaXMudHlwZSxhY3Rpb246dGhpcy5hY3Rpb24sbXVsdGlwbGU6dGhpcy5tdWx0aXBsZSwiYmVmb3JlLXVwbG9hZCI6dGhpcy5iZWZvcmVVcGxvYWQsIndpdGgtY3JlZGVudGlhbHMiOnRoaXMud2l0aENyZWRlbnRpYWxzLGhlYWRlcnM6dGhpcy5oZWFkZXJzLG5hbWU6dGhpcy5uYW1lLGRhdGE6dGhpcy5kYXRhLGFjY2VwdDp0aGlzLnRodW1ibmFpbE1vZGU/ImltYWdlLyoiOnRoaXMuYWNjZXB0LCJvbi1zdGFydCI6dGhpcy5oYW5kbGVTdGFydCwib24tcHJvZ3Jlc3MiOnRoaXMuaGFuZGxlUHJvZ3Jlc3MsIm9uLXN1Y2Nlc3MiOnRoaXMuaGFuZGxlU3VjY2Vzcywib24tZXJyb3IiOnRoaXMuaGFuZGxlRXJyb3IsIm9uLXByZXZpZXciOnRoaXMuaGFuZGxlUHJldmlldywib24tcmVtb3ZlIjp0aGlzLmhhbmRsZVJlbW92ZX0scmVmOiJ1cGxvYWQtaW5uZXIifSxpPSJ1bmRlZmluZWQiIT10eXBlb2YgRm9ybURhdGE/ZSgidXBsb2FkIixuLFt0aGlzLiRzbG90c1siZGVmYXVsdCJdXSk6ZSgiaWZyYW1lVXBsb2FkIixuLFt0aGlzLiRzbG90c1siZGVmYXVsdCJdXSk7cmV0dXJuInNlbGVjdCI9PT10aGlzLnR5cGU/ZSgiZGl2Iix7ImNsYXNzIjoiZWwtdXBsb2FkIn0sW3QsaSx0aGlzLiRzbG90cy50aXBdKToiZHJhZyI9PT10aGlzLnR5cGU/ZSgiZGl2Iix7ImNsYXNzIjoiZWwtdXBsb2FkIn0sW2ksdGhpcy4kc2xvdHMudGlwLHRdKTp2b2lkIDB9fX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDI4MSk7dmFyIG89bigyODYpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTEpLG89aShzKSxhPW4oMjgyKSxyPWkoYSk7dFsiZGVmYXVsdCJdPXttaXhpbnM6W29bImRlZmF1bHQiXV0sY29tcG9uZW50czp7RWxQcm9ncmVzczpyWyJkZWZhdWx0Il19LHByb3BzOntmaWxlczp7dHlwZTpBcnJheSwiZGVmYXVsdCI6ZnVuY3Rpb24oKXtyZXR1cm5bXX19fSxtZXRob2RzOntwYXJzZVBlcmNlbnRhZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIHBhcnNlSW50KGUsMTApfX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjgzKSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKTsKfSx0WyJkZWZhdWx0Il09b1siZGVmYXVsdCJdfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMjg0KTt2YXIgbz1uKDI4NSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMCx0WyJkZWZhdWx0Il09e25hbWU6IkVsUHJvZ3Jlc3MiLHByb3BzOnt0eXBlOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6ImxpbmUiLHZhbGlkYXRvcjpmdW5jdGlvbihlKXtyZXR1cm5bImxpbmUiLCJjaXJjbGUiXS5pbmRleE9mKGUpPi0xfX0scGVyY2VudGFnZTp7dHlwZTpOdW1iZXIsImRlZmF1bHQiOjAscmVxdWlyZWQ6ITAsdmFsaWRhdG9yOmZ1bmN0aW9uKGUpe3JldHVybiBlPj0wJiZlPD0xMDB9fSxzdGF0dXM6e3R5cGU6U3RyaW5nfSxzdHJva2VXaWR0aDp7dHlwZTpOdW1iZXIsImRlZmF1bHQiOjZ9LHRleHRJbnNpZGU6e3R5cGU6Qm9vbGVhbiwiZGVmYXVsdCI6ITF9LHdpZHRoOnt0eXBlOk51bWJlciwiZGVmYXVsdCI6MTI2fSxzaG93VGV4dDp7dHlwZTpCb29sZWFuLCJkZWZhdWx0IjohMH19LGNvbXB1dGVkOntiYXJTdHlsZTpmdW5jdGlvbigpe3ZhciBlPXt9O3JldHVybiBlLndpZHRoPXRoaXMucGVyY2VudGFnZSsiJSIsZX0scmVsYXRpdmVTdHJva2VXaWR0aDpmdW5jdGlvbigpe3JldHVybih0aGlzLnN0cm9rZVdpZHRoL3RoaXMud2lkdGgqMTAwKS50b0ZpeGVkKDEpfSx0cmFja1BhdGg6ZnVuY3Rpb24oKXt2YXIgZT1wYXJzZUludCg1MC1wYXJzZUZsb2F0KHRoaXMucmVsYXRpdmVTdHJva2VXaWR0aCkvMiwxMCk7cmV0dXJuIk0gNTAgNTAgbSAwIC0iK2UrIiBhICIrZSsiICIrZSsiIDAgMSAxIDAgIisyKmUrIiBhICIrZSsiICIrZSsiIDAgMSAxIDAgLSIrMiplfSxwZXJpbWV0ZXI6ZnVuY3Rpb24oKXt2YXIgZT01MC1wYXJzZUZsb2F0KHRoaXMucmVsYXRpdmVTdHJva2VXaWR0aCkvMjtyZXR1cm4gMipNYXRoLlBJKmV9LGNpcmNsZVBhdGhTdHlsZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucGVyaW1ldGVyO3JldHVybntzdHJva2VEYXNoYXJyYXk6ZSsicHgsIitlKyJweCIsc3Ryb2tlRGFzaG9mZnNldDooMS10aGlzLnBlcmNlbnRhZ2UvMTAwKSplKyJweCIsdHJhbnNpdGlvbjoic3Ryb2tlLWRhc2hvZmZzZXQgMC42cyBlYXNlIDBzLCBzdHJva2UgMC42cyBlYXNlIn19LHN0cm9rZTpmdW5jdGlvbigpe3ZhciBlO3N3aXRjaCh0aGlzLnN0YXR1cyl7Y2FzZSJzdWNjZXNzIjplPSIjMTNjZTY2IjticmVhaztjYXNlImV4Y2VwdGlvbiI6ZT0iI2ZmNDk0OSI7YnJlYWs7ZGVmYXVsdDplPSIjMjBhMGZmIn1yZXR1cm4gZX0saWNvbkNsYXNzOmZ1bmN0aW9uKCl7cmV0dXJuImxpbmUiPT09dGhpcy50eXBlPyJzdWNjZXNzIj09PXRoaXMuc3RhdHVzPyJlbC1pY29uLWNpcmNsZS1jaGVjayI6ImVsLWljb24tY2lyY2xlLWNyb3NzIjoic3VjY2VzcyI9PT10aGlzLnN0YXR1cz8iZWwtaWNvbi1jaGVjayI6ImVsLWljb24tY2xvc2UifSxwcm9ncmVzc1RleHRTaXplOmZ1bmN0aW9uKCl7cmV0dXJuImxpbmUiPT09dGhpcy50eXBlPzEyKy40KnRoaXMuc3Ryb2tlV2lkdGg6LjExMTExMSp0aGlzLndpZHRoKzJ9fX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtcHJvZ3Jlc3MiLCJjbGFzcyI6WyJlbC1wcm9ncmVzcy0tIitlLnR5cGUsZS5zdGF0dXM/ImlzLSIrZS5zdGF0dXM6IiIseyJlbC1wcm9ncmVzcy0td2l0aG91dC10ZXh0IjohZS5zaG93VGV4dCwiZWwtcHJvZ3Jlc3MtLXRleHQtaW5zaWRlIjplLnRleHRJbnNpZGV9XX0sWyJsaW5lIj09PWUudHlwZT9lLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtcHJvZ3Jlc3MtYmFyIn0sW2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1wcm9ncmVzcy1iYXJfX291dGVyIixzdHlsZTp7aGVpZ2h0OmUuc3Ryb2tlV2lkdGgrInB4In19LFtlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtcHJvZ3Jlc3MtYmFyX19pbm5lciIsc3R5bGU6ZS5iYXJTdHlsZX0sW2Uuc2hvd1RleHQmJmUudGV4dEluc2lkZT9lLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtcHJvZ3Jlc3MtYmFyX19pbm5lclRleHQifSxbZS5fcyhlLnBlcmNlbnRhZ2UpKyIlIl0pOmUuX2UoKV0pXSldKTplLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtcHJvZ3Jlc3MtY2lyY2xlIixzdHlsZTp7aGVpZ2h0OmUud2lkdGgrInB4Iix3aWR0aDplLndpZHRoKyJweCJ9fSxbZS5faCgic3ZnIix7YXR0cnM6e3ZpZXdCb3g6IjAgMCAxMDAgMTAwIn19LFtlLl9oKCJwYXRoIix7c3RhdGljQ2xhc3M6ImVsLXByb2dyZXNzLWNpcmNsZV9fdHJhY2siLGF0dHJzOntkOmUudHJhY2tQYXRoLHN0cm9rZToiI2U1ZTlmMiIsInN0cm9rZS13aWR0aCI6ZS5yZWxhdGl2ZVN0cm9rZVdpZHRoLGZpbGw6Im5vbmUifX0pLGUuX2goInBhdGgiLHtzdGF0aWNDbGFzczoiZWwtcHJvZ3Jlc3MtY2lyY2xlX19wYXRoIixzdHlsZTplLmNpcmNsZVBhdGhTdHlsZSxhdHRyczp7ZDplLnRyYWNrUGF0aCwic3Ryb2tlLWxpbmVjYXAiOiJyb3VuZCIsc3Ryb2tlOmUuc3Ryb2tlLCJzdHJva2Utd2lkdGgiOmUucmVsYXRpdmVTdHJva2VXaWR0aCxmaWxsOiJub25lIn19KV0pXSksZS5zaG93VGV4dCYmIWUudGV4dEluc2lkZT9lLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtcHJvZ3Jlc3NfX3RleHQiLHN0eWxlOntmb250U2l6ZTplLnByb2dyZXNzVGV4dFNpemUrInB4In19LFtlLnN0YXR1cz9lLl9oKCJpIix7ImNsYXNzIjplLmljb25DbGFzc30pOltlLl9zKGUucGVyY2VudGFnZSkrIiUiXV0pOmUuX2UoKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgidHJhbnNpdGlvbi1ncm91cCIse3N0YXRpY0NsYXNzOiJlbC11cGxvYWRfX2ZpbGVzIixhdHRyczp7dGFnOiJ1bCIsbmFtZToibGlzdCJ9fSxbZS5fbChlLmZpbGVzLGZ1bmN0aW9uKHQpe3JldHVybiBlLl9oKCJsaSIse2tleTp0LHN0YXRpY0NsYXNzOiJlbC11cGxvYWRfX2ZpbGUiLCJjbGFzcyI6eyJpcy1maW5pc2hlZCI6ImZpbmlzaGVkIj09PXQuc3RhdHVzfSxvbjp7Y2xpY2s6ZnVuY3Rpb24obil7ZS4kZW1pdCgiY2xpY2tGaWxlIix0KX19fSxbZS5faCgiYSIse3N0YXRpY0NsYXNzOiJlbC11cGxvYWRfX2ZpbGVfX25hbWUiLG9uOntjbGljazpmdW5jdGlvbihuKXtlLiRlbWl0KCJwcmV2aWV3Iix0KX19fSxbZS5faCgiaSIse3N0YXRpY0NsYXNzOiJlbC1pY29uLWRvY3VtZW50In0pLGUuX3ModC5uYW1lKSsiXG4gICAgIl0pLGUuX2goInNwYW4iLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZToiZmluaXNoZWQiPT09dC5zdGF0dXMsZXhwcmVzc2lvbjoiZmlsZS5zdGF0dXMgPT09ICdmaW5pc2hlZCcifV0sc3RhdGljQ2xhc3M6ImVsLXVwbG9hZF9fYnRuLWRlbGV0ZSIsb246e2NsaWNrOmZ1bmN0aW9uKG4pe2UuJGVtaXQoInJlbW92ZSIsdCl9fX0sW2UuX3MoZS50KCJlbC51cGxvYWQuZGVsZXRlIikpXSksdC5zaG93UHJvZ3Jlc3M/ZS5faCgiZWwtcHJvZ3Jlc3MiLHthdHRyczp7InN0cm9rZS13aWR0aCI6MixwZXJjZW50YWdlOmUucGFyc2VQZXJjZW50YWdlKHQucGVyY2VudGFnZSksc3RhdHVzOiJmaW5pc2hlZCI9PT10LnN0YXR1cyYmdC5zaG93UHJvZ3Jlc3M/InN1Y2Nlc3MiOiIifX0pOmUuX2UoKV0pfSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDI4OCk7dmFyIG89bigyOTMpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjg5KSxvPWkocyksYT1uKDI5MCkscj1pKGEpO3RbImRlZmF1bHQiXT17Y29tcG9uZW50czp7Q292ZXI6clsiZGVmYXVsdCJdfSxwcm9wczp7dHlwZTpTdHJpbmcsYWN0aW9uOnt0eXBlOlN0cmluZyxyZXF1aXJlZDohMH0sbmFtZTp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJmaWxlIn0sZGF0YTpPYmplY3QsaGVhZGVyczpPYmplY3Qsd2l0aENyZWRlbnRpYWxzOkJvb2xlYW4sbXVsdGlwbGU6Qm9vbGVhbixhY2NlcHQ6U3RyaW5nLG9uU3RhcnQ6RnVuY3Rpb24sb25Qcm9ncmVzczpGdW5jdGlvbixvblN1Y2Nlc3M6RnVuY3Rpb24sb25FcnJvcjpGdW5jdGlvbixiZWZvcmVVcGxvYWQ6RnVuY3Rpb24sb25QcmV2aWV3Ont0eXBlOkZ1bmN0aW9uLCJkZWZhdWx0IjpmdW5jdGlvbigpe319LG9uUmVtb3ZlOnt0eXBlOkZ1bmN0aW9uLCJkZWZhdWx0IjpmdW5jdGlvbigpe319fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue2RyYWdPdmVyOiExLG1vdXNlb3ZlcjohMX19LGNvbXB1dGVkOntsYXN0ZXN0RmlsZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuJHBhcmVudC5maWxlTGlzdDtyZXR1cm4gZVtlLmxlbmd0aC0xXX0sc2hvd0NvdmVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5sYXN0ZXN0RmlsZTtyZXR1cm4gdGhpcy50aHVtYm5haWxNb2RlJiZlJiYiZmFpbCIhPT1lLnN0YXR1c30sdGh1bWJuYWlsTW9kZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRwYXJlbnQudGh1bWJuYWlsTW9kZX19LG1ldGhvZHM6e2lzSW1hZ2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaW5kZXhPZigiaW1hZ2UiKSE9PS0xfSxoYW5kbGVDaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJnZXQuZmlsZXM7dCYmKHRoaXMudXBsb2FkRmlsZXModCksdGhpcy4kcmVmcy5pbnB1dC52YWx1ZT1udWxsKX0sdXBsb2FkRmlsZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcyxuPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpO3RoaXMubXVsdGlwbGV8fChuPW4uc2xpY2UoMCwxKSksMCE9PW4ubGVuZ3RoJiZuLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIG49dC5pc0ltYWdlKGUudHlwZSk7dC50aHVtYm5haWxNb2RlJiYhbnx8dC51cGxvYWQoZSl9KX0sdXBsb2FkOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYoIXRoaXMuYmVmb3JlVXBsb2FkKXJldHVybiB0aGlzLnBvc3QoZSk7dmFyIG49dGhpcy5iZWZvcmVVcGxvYWQoZSk7biYmbi50aGVuP24udGhlbihmdW5jdGlvbihuKXsiW29iamVjdCBGaWxlXSI9PT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwobik/dC5wb3N0KG4pOnQucG9zdChlKX0sZnVuY3Rpb24oKXt9KTpuIT09ITEmJnRoaXMucG9zdChlKX0scG9zdDpmdW5jdGlvbihlKXt2YXIgdD10aGlzO3RoaXMub25TdGFydChlKTt2YXIgbj1uZXcgRm9ybURhdGE7bi5hcHBlbmQodGhpcy5uYW1lLGUpLCgwLG9bImRlZmF1bHQiXSkoe2hlYWRlcnM6dGhpcy5oZWFkZXJzLHdpdGhDcmVkZW50aWFsczp0aGlzLndpdGhDcmVkZW50aWFscyxmaWxlOmUsZGF0YTp0aGlzLmRhdGEsZmlsZW5hbWU6dGhpcy5uYW1lLGFjdGlvbjp0aGlzLmFjdGlvbixvblByb2dyZXNzOmZ1bmN0aW9uKG4pe3Qub25Qcm9ncmVzcyhuLGUpfSxvblN1Y2Nlc3M6ZnVuY3Rpb24obil7dC5vblN1Y2Nlc3MobixlKX0sb25FcnJvcjpmdW5jdGlvbihuLGkpe3Qub25FcnJvcihuLGksZSl9fSl9LG9uRHJvcDpmdW5jdGlvbihlKXt0aGlzLmRyYWdPdmVyPSExLHRoaXMudXBsb2FkRmlsZXMoZS5kYXRhVHJhbnNmZXIuZmlsZXMpfSxoYW5kbGVDbGljazpmdW5jdGlvbigpe3RoaXMuJHJlZnMuaW5wdXQuY2xpY2soKX19fX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQsbil7dmFyIGk9ImZhaWwgdG8gcG9zdCAiK2UrIiAiK24uc3RhdHVzKyInIixzPW5ldyBFcnJvcihpKTtyZXR1cm4gcy5zdGF0dXM9bi5zdGF0dXMscy5tZXRob2Q9InBvc3QiLHMudXJsPWUsc31mdW5jdGlvbiBpKGUpe3ZhciB0PWUucmVzcG9uc2VUZXh0fHxlLnJlc3BvbnNlO2lmKCF0KXJldHVybiB0O3RyeXtyZXR1cm4gSlNPTi5wYXJzZSh0KX1jYXRjaChuKXtyZXR1cm4gdH19ZnVuY3Rpb24gcyhlKXtpZigidW5kZWZpbmVkIiE9dHlwZW9mIFhNTEh0dHBSZXF1ZXN0KXt2YXIgdD1uZXcgWE1MSHR0cFJlcXVlc3Qscz1lLmFjdGlvbjt0LnVwbG9hZCYmKHQudXBsb2FkLm9ucHJvZ3Jlc3M9ZnVuY3Rpb24odCl7dC50b3RhbD4wJiYodC5wZXJjZW50PXQubG9hZGVkL3QudG90YWwqMTAwKSxlLm9uUHJvZ3Jlc3ModCl9KTt2YXIgbz1uZXcgRm9ybURhdGE7ZS5kYXRhJiZPYmplY3Qua2V5cyhlLmRhdGEpLm1hcChmdW5jdGlvbih0KXtvLmFwcGVuZCh0LGUuZGF0YVt0XSl9KSxvLmFwcGVuZChlLmZpbGVuYW1lLGUuZmlsZSksdC5vbmVycm9yPWZ1bmN0aW9uKHQpe2Uub25FcnJvcih0KX0sdC5vbmxvYWQ9ZnVuY3Rpb24oKXtyZXR1cm4gdC5zdGF0dXM8MjAwfHx0LnN0YXR1cz49MzAwP2Uub25FcnJvcihuKHMsZSx0KSxpKHQpKTp2b2lkIGUub25TdWNjZXNzKGkodCkpfSx0Lm9wZW4oInBvc3QiLHMsITApLGUud2l0aENyZWRlbnRpYWxzJiYid2l0aENyZWRlbnRpYWxzImluIHQmJih0LndpdGhDcmVkZW50aWFscz0hMCk7dmFyIGE9ZS5oZWFkZXJzfHx7fTtudWxsIT09YVsiWC1SZXF1ZXN0ZWQtV2l0aCJdJiZ0LnNldFJlcXVlc3RIZWFkZXIoIlgtUmVxdWVzdGVkLVdpdGgiLCJYTUxIdHRwUmVxdWVzdCIpO2Zvcih2YXIgciBpbiBhKWEuaGFzT3duUHJvcGVydHkocikmJm51bGwhPT1hW3JdJiZ0LnNldFJlcXVlc3RIZWFkZXIocixhW3JdKTt0LnNlbmQobyl9fXQuX19lc01vZHVsZT0hMCx0WyJkZWZhdWx0Il09c30sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDI5MSk7dmFyIG89bigyOTIpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMTEpLG89aShzKSxhPW4oMjgyKSxyPWkoYSk7dFsiZGVmYXVsdCJdPXttaXhpbnM6W29bImRlZmF1bHQiXV0sY29tcG9uZW50czp7RWxQcm9ncmVzczpyWyJkZWZhdWx0Il19LHByb3BzOntpbWFnZTp7fSxvblByZXZpZXc6e3R5cGU6RnVuY3Rpb24sImRlZmF1bHQiOmZ1bmN0aW9uKCl7fX0sb25SZW1vdmU6e3R5cGU6RnVuY3Rpb24sImRlZmF1bHQiOmZ1bmN0aW9uKCl7fX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57bW91c2VvdmVyOiExfX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5pbWFnZT9lLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtZHJhZ2dlcl9fY292ZXIiLG9uOntjbGljazpmdW5jdGlvbihlKXtlLnN0b3BQcm9wYWdhdGlvbigpfX19LFtlLl9oKCJ0cmFuc2l0aW9uIix7YXR0cnM6e25hbWU6ImZhZGUtaW4ifX0sWyJ1cGxvYWRpbmciPT09ZS5pbWFnZS5zdGF0dXM/ZS5faCgiZWwtcHJvZ3Jlc3MiLHtzdGF0aWNDbGFzczoiZWwtZHJhZ2dlcl9fY292ZXJfX3Byb2dyZXNzIixhdHRyczp7cGVyY2VudGFnZTplLmltYWdlLnBlcmNlbnRhZ2UsInNob3ctdGV4dCI6ITEsc3RhdHVzOiJmaW5pc2hlZCI9PT1lLmltYWdlLnN0YXR1cz8ic3VjY2VzcyI6IiJ9fSk6ZS5fZSgpXSksImZpbmlzaGVkIj09PWUuaW1hZ2Uuc3RhdHVzP2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1kcmFnZ2VyX19jb3Zlcl9fY29udGVudCIsb246e21vdXNlZW50ZXI6ZnVuY3Rpb24odCl7ZS5tb3VzZW92ZXI9ITB9LG1vdXNlbGVhdmU6ZnVuY3Rpb24odCl7ZS5tb3VzZW92ZXI9ITF9fX0sW2UuX2goImltZyIse2F0dHJzOntzcmM6ZS5pbWFnZS51cmx9fSksZS5faCgidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOiJmYWRlLWluIn19LFtlLl9oKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLm1vdXNlb3ZlcixleHByZXNzaW9uOiJtb3VzZW92ZXIifV0sc3RhdGljQ2xhc3M6ImVsLWRyYWdnZXJfX2NvdmVyX19pbnRlcmFjdCJ9LFtlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtZHJhZ2dlZXJfX2NvdmVyX19idG5zIn0sW2UuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiYnRuIixvbjp7Y2xpY2s6ZnVuY3Rpb24odCl7ZS4kcGFyZW50LmhhbmRsZUNsaWNrKCl9fX0sW2UuX2goImkiLHtzdGF0aWNDbGFzczoiZWwtaWNvbi11cGxvYWQyIn0pLGUuX2goInNwYW4iLFtlLl9zKGUudCgiZWwudXBsb2FkLmNvbnRpbnVlIikpXSldKSxlLl9oKCJzcGFuIix7c3RhdGljQ2xhc3M6ImJ0biIsb246e2NsaWNrOmZ1bmN0aW9uKHQpe2Uub25QcmV2aWV3KGUuaW1hZ2UpfX19LFtlLl9oKCJpIix7c3RhdGljQ2xhc3M6ImVsLWljb24tdmlldyJ9KSxlLl9oKCJzcGFuIixbZS5fcyhlLnQoImVsLnVwbG9hZC5wcmV2aWV3IikpXSldKSxlLl9oKCJzcGFuIix7c3RhdGljQ2xhc3M6ImJ0biIsb246e2NsaWNrOmZ1bmN0aW9uKHQpe2Uub25SZW1vdmUoZS5pbWFnZSl9fX0sW2UuX2goImkiLHtzdGF0aWNDbGFzczoiZWwtaWNvbi1kZWxldGUyIn0pLGUuX2goInNwYW4iLFtlLl9zKGUudCgiZWwudXBsb2FkLmRlbGV0ZSIpKV0pXSldKV0pXSksZS5faCgidHJhbnNpdGlvbiIse2F0dHJzOntuYW1lOiJtZC1mYWRlLXRvcCJ9fSxbZS5faCgiaDQiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLm1vdXNlb3ZlcixleHByZXNzaW9uOiJtb3VzZW92ZXIifV0sc3RhdGljQ2xhc3M6ImVsLWRyYWdnZXJfX2NvdmVyX190aXRsZSJ9LFtlLl9zKGUuaW1hZ2UubmFtZSldKV0pXSk6ZS5fZSgpXSk6ZS5fZSgpfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXVwbG9hZF9faW5uZXIiLCJjbGFzcyI6eyJlbC1kcmFnZ2VyIjoiZHJhZyI9PT1lLnR5cGUsImlzLWRyYWdPdmVyIjplLmRyYWdPdmVyLCJpcy1zaG93Q292ZXIiOmUuc2hvd0NvdmVyfSxvbjp7Y2xpY2s6ZS5oYW5kbGVDbGljayxkcm9wOmZ1bmN0aW9uKHQpe3QucHJldmVudERlZmF1bHQoKSxlLm9uRHJvcCh0KX0sZHJhZ292ZXI6ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLGUuZHJhZ092ZXI9ITB9LGRyYWdsZWF2ZTpmdW5jdGlvbih0KXt0LnByZXZlbnREZWZhdWx0KCksZS5kcmFnT3Zlcj0hMX19fSxbZS5zaG93Q292ZXI/ZS5faCgiY292ZXIiLHthdHRyczp7aW1hZ2U6ZS5sYXN0ZXN0RmlsZSwib24tcHJldmlldyI6ZS5vblByZXZpZXcsIm9uLXJlbW92ZSI6ZS5vblJlbW92ZX19KTplLl90KCJkZWZhdWx0IiksZS5faCgiaW5wdXQiLHtyZWY6ImlucHV0IixzdGF0aWNDbGFzczoiZWwtdXBsb2FkX19pbnB1dCIsYXR0cnM6e3R5cGU6ImZpbGUiLG11bHRpcGxlOmUubXVsdGlwbGUsYWNjZXB0OmUuYWNjZXB0fSxvbjp7Y2hhbmdlOmUuaGFuZGxlQ2hhbmdlfX0pXSl9LHN0YXRpY1JlbmRlckZuczpbXX19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigyOTUpLHM9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjkwKSxvPWkocyk7dFsiZGVmYXVsdCJdPXtjb21wb25lbnRzOntDb3ZlcjpvWyJkZWZhdWx0Il19LHByb3BzOnt0eXBlOlN0cmluZyxkYXRhOnt9LGFjdGlvbjp7dHlwZTpTdHJpbmcscmVxdWlyZWQ6ITB9LG5hbWU6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiZmlsZSJ9LHdpdGhDcmVkZW50aWFsczpCb29sZWFuLGFjY2VwdDpTdHJpbmcsb25TdGFydDpGdW5jdGlvbixvblByb2dyZXNzOkZ1bmN0aW9uLG9uU3VjY2VzczpGdW5jdGlvbixvbkVycm9yOkZ1bmN0aW9uLGJlZm9yZVVwbG9hZDpGdW5jdGlvbixvblByZXZpZXc6e3R5cGU6RnVuY3Rpb24sImRlZmF1bHQiOmZ1bmN0aW9uKCl7fX0sb25SZW1vdmU6e3R5cGU6RnVuY3Rpb24sImRlZmF1bHQiOmZ1bmN0aW9uKCl7fX19LGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57ZHJhZ092ZXI6ITEsbW91c2VvdmVyOiExLGRvbWFpbjoiIixmaWxlOm51bGwsZGlzYWJsZWQ6ITF9fSxjb21wdXRlZDp7bGFzdGVzdEZpbGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLiRwYXJlbnQuZmlsZUxpc3Q7cmV0dXJuIGVbZS5sZW5ndGgtMV19LHNob3dDb3ZlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubGFzdGVzdEZpbGU7cmV0dXJuIHRoaXMudGh1bWJuYWlsTW9kZSYmZSYmImZhaWwiIT09ZS5zdGF0dXN9LHRodW1ibmFpbE1vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kcGFyZW50LnRodW1ibmFpbE1vZGV9fSxtZXRob2RzOntpc0ltYWdlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmluZGV4T2YoImltYWdlIikhPT0tMX0saGFuZGxlQ2xpY2s6ZnVuY3Rpb24oKXt0aGlzLmRpc2FibGVkfHx0aGlzLiRyZWZzLmlucHV0LmNsaWNrKCl9LGhhbmRsZUNoYW5nZTpmdW5jdGlvbihlKXt2YXIgdD1lLnRhcmdldC5maWxlc1swXTt0aGlzLmZpbGU9dCx0aGlzLm9uU3RhcnQodCk7dmFyIG49dGhpcy5nZXRGb3JtTm9kZSgpLGk9dGhpcy5nZXRGb3JtRGF0YU5vZGUoKSxzPXRoaXMuZGF0YTsiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cyh0KSk7dmFyIG89W107Zm9yKHZhciBhIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShhKSYmby5wdXNoKCc8aW5wdXQgbmFtZT0iJythKyciIHZhbHVlPSInK3NbYV0rJyIvPicpO2kuaW5uZXJIVE1MPW8uam9pbigiIiksbi5zdWJtaXQoKSxpLmlubmVySFRNTD0iIix0aGlzLmRpc2FibGVkPSEwfSxnZXRGb3JtTm9kZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRyZWZzLmZvcm19LGdldEZvcm1EYXRhTm9kZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiRyZWZzLmRhdGF9LG9uRHJvcDpmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCksdGhpcy5kcmFnT3Zlcj0hMSx0aGlzLnVwbG9hZEZpbGVzKGUuZGF0YVRyYW5zZmVyLmZpbGVzKX0saGFuZGxlRHJhZ292ZXI6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMub25Ecm9wPSEwfSxoYW5kbGVEcmFnbGVhdmU6ZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMub25Ecm9wPSExfSxvbmxvYWQ6ZnVuY3Rpb24oZSl7dGhpcy5kaXNhYmxlZD0hMX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIixmdW5jdGlvbih0KXt2YXIgbj1uZXcgVVJMKGUuYWN0aW9uKS5vcmlnaW47aWYodC5vcmlnaW4hPT1uKXJldHVybiExO3ZhciBpPXQuZGF0YTsic3VjY2VzcyI9PT1pLnJlc3VsdD9lLm9uU3VjY2VzcyhpLGUuZmlsZSk6ImZhaWxlZCI9PT1pLnJlc3VsdCYmZS5vblN1Y2Nlc3MoaSxlLmZpbGUpfSwhMSl9LHJlbmRlcjpmdW5jdGlvbihlKXt2YXIgdD1lKCJjb3ZlciIse2F0dHJzOntpbWFnZTp0aGlzLmxhc3Rlc3RGaWxlLG9uUHJldmlldzp0aGlzLm9uUHJldmlldyxvblJlbW92ZTp0aGlzLm9uUmVtb3ZlfX0sW10pLG49ImZyYW1lLSIrRGF0ZS5ub3coKTtyZXR1cm4gZSgiZGl2Iix7ImNsYXNzIjp7ImVsLXVwbG9hZF9faW5uZXIiOiEwLCJlbC1kcmFnZ2VyIjoiZHJhZyI9PT10aGlzLnR5cGUsImlzLWRyYWdPdmVyIjp0aGlzLmRyYWdPdmVyLCJpcy1zaG93Q292ZXIiOnRoaXMuc2hvd0NvdmVyfSxvbjp7Y2xpY2s6dGhpcy5oYW5kbGVDbGlja30sbmF0aXZlT246e2Ryb3A6dGhpcy5vbkRyb3AsZHJhZ292ZXI6dGhpcy5oYW5kbGVEcmFnb3ZlcixkcmFnbGVhdmU6dGhpcy5oYW5kbGVEcmFnbGVhdmV9fSxbZSgiaWZyYW1lIix7b246e2xvYWQ6dGhpcy5vbmxvYWR9LHJlZjoiaWZyYW1lIixhdHRyczp7bmFtZTpufX0sW10pLGUoImZvcm0iLHtyZWY6ImZvcm0iLGF0dHJzOnthY3Rpb246dGhpcy5hY3Rpb24sdGFyZ2V0Om4sZW5jdHlwZToibXVsdGlwYXJ0L2Zvcm0tZGF0YSIsbWV0aG9kOiJQT1NUIn19LFtlKCJpbnB1dCIseyJjbGFzcyI6ImVsLXVwbG9hZF9faW5wdXQiLGF0dHJzOnt0eXBlOiJmaWxlIixuYW1lOiJmaWxlIixhY2NlcHQ6dGhpcy5hY2NlcHR9LHJlZjoiaW5wdXQiLG9uOntjaGFuZ2U6dGhpcy5oYW5kbGVDaGFuZ2V9fSxbXSksZSgiaW5wdXQiLHthdHRyczp7dHlwZToiaGlkZGVuIixuYW1lOiJkb2N1bWVudERvbWFpbiIsdmFsdWU6ZG9jdW1lbnQuZG9tYWlufX0sW10pLGUoInNwYW4iLHtyZWY6ImRhdGEifSxbXSldKSx0aGlzLnNob3dDb3Zlcj90OnRoaXMuJHNsb3RzWyJkZWZhdWx0Il1dKX19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMjk3KSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDI5OCk7dmFyIG89bigyOTkpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdFsiZGVmYXVsdCJdPXtuYW1lOiJFbFNwaW5uZXIiLHByb3BzOnt0eXBlOlN0cmluZyxyYWRpdXM6e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjoxMDB9LHN0cm9rZVdpZHRoOnt0eXBlOk51bWJlciwiZGVmYXVsdCI6NX0sc3Ryb2tlQ29sb3I6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiI2VmZWZlZiJ9fX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJzcGFuIix7c3RhdGljQ2xhc3M6ImVsLXNwaW5uZXIifSxbZS5faCgic3ZnIix7c3RhdGljQ2xhc3M6ImVsLXNwaW5uZXItaW5uZXIiLHN0eWxlOnt3aWR0aDplLnJhZGl1cy8yKyJweCIsaGVpZ2h0OmUucmFkaXVzLzIrInB4In0sYXR0cnM6e3ZpZXdCb3g6IjAgMCA1MCA1MCJ9fSxbZS5faCgiY2lyY2xlIix7c3RhdGljQ2xhc3M6InBhdGgiLGF0dHJzOntjeDoiMjUiLGN5OiIyNSIscjoiMjAiLGZpbGw6Im5vbmUiLHN0cm9rZTplLnN0cm9rZUNvbG9yLCJzdHJva2Utd2lkdGgiOmUuc3Ryb2tlV2lkdGh9fSldKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMzAxKSxvPWkocyk7dFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDE0KSxvPWkocyksYT1uKDI2KSxyPW9bImRlZmF1bHQiXS5leHRlbmQobigzMDIpKSxsPXZvaWQgMCx1PVtdLGQ9MSxjPWZ1bmN0aW9uIGYoZSl7ZT1lfHx7fSwic3RyaW5nIj09dHlwZW9mIGUmJihlPXttZXNzYWdlOmV9KTt2YXIgdD1lLm9uQ2xvc2Usbj0ibWVzc2FnZV8iK2QrKztyZXR1cm4gZS5vbkNsb3NlPWZ1bmN0aW9uKCl7Zi5jbG9zZShuLHQpfSxsPW5ldyByKHtkYXRhOmV9KSxsLmlkPW4sbC52bT1sLiRtb3VudCgpLGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobC52bS4kZWwpLGwudm0udmlzaWJsZT0hMCxsLmRvbT1sLnZtLiRlbCxsLmRvbS5zdHlsZS56SW5kZXg9YS5Qb3B1cE1hbmFnZXIubmV4dFpJbmRleCgpLHUucHVzaChsKSxsLnZtfTtbInN1Y2Nlc3MiLCJ3YXJuaW5nIiwiaW5mbyIsImVycm9yIl0uZm9yRWFjaChmdW5jdGlvbihlKXtjW2VdPWZ1bmN0aW9uKHQpe3JldHVybiJzdHJpbmciPT10eXBlb2YgdCYmKHQ9e21lc3NhZ2U6dH0pLHQudHlwZT1lLGModCl9fSksYy5jbG9zZT1mdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wLGk9dS5sZW5ndGg7bjxpO24rKylpZihlPT09dVtuXS5pZCl7ImZ1bmN0aW9uIj09dHlwZW9mIHQmJnQodVtuXSksdS5zcGxpY2UobiwxKTticmVha319LHRbImRlZmF1bHQiXT1jfSxmdW5jdGlvbihlLHQsbil7dmFyIGkscztpPW4oMzAzKTt2YXIgbz1uKDMwOSk7cz1pPWl8fHt9LCJvYmplY3QiIT10eXBlb2YgaVsiZGVmYXVsdCJdJiYiZnVuY3Rpb24iIT10eXBlb2YgaVsiZGVmYXVsdCJdfHwocz1pPWlbImRlZmF1bHQiXSksImZ1bmN0aW9uIj09dHlwZW9mIHMmJihzPXMub3B0aW9ucykscy5yZW5kZXI9by5yZW5kZXIscy5zdGF0aWNSZW5kZXJGbnM9by5zdGF0aWNSZW5kZXJGbnMsZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHRbImRlZmF1bHQiXT17ZGF0YTpmdW5jdGlvbigpe3JldHVybnt2aXNpYmxlOiExLG1lc3NhZ2U6IiIsZHVyYXRpb246M2UzLHR5cGU6ImluZm8iLG9uQ2xvc2U6bnVsbCxzaG93Q2xvc2U6ITEsY2xvc2VkOiExLHRpbWVyOm51bGx9fSxjb21wdXRlZDp7dHlwZUltZzpmdW5jdGlvbigpe3JldHVybiBuKDMwNCkoIi4vIit0aGlzLnR5cGUrIi5zdmciKX19LHdhdGNoOntjbG9zZWQ6ZnVuY3Rpb24oZSl7ZSYmKHRoaXMudmlzaWJsZT0hMSx0aGlzLiRlbC5hZGRFdmVudExpc3RlbmVyKCJ0cmFuc2l0aW9uZW5kIix0aGlzLmRlc3Ryb3lFbGVtZW50KSl9fSxtZXRob2RzOntkZXN0cm95RWxlbWVudDpmdW5jdGlvbigpe3RoaXMuJGVsLnJlbW92ZUV2ZW50TGlzdGVuZXIoInRyYW5zaXRpb25lbmQiLHRoaXMuZGVzdHJveUVsZW1lbnQpLHRoaXMuJGRlc3Ryb3koITApLHRoaXMuJGVsLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy4kZWwpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuY2xvc2VkPSEwLCJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzLm9uQ2xvc2UmJnRoaXMub25DbG9zZSh0aGlzKX0sY2xlYXJUaW1lcjpmdW5jdGlvbigpe2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKX0sc3RhcnRUaW1lcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7dGhpcy5kdXJhdGlvbj4wJiYodGhpcy50aW1lcj1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5jbG9zZWR8fGUuY2xvc2UoKX0sdGhpcy5kdXJhdGlvbikpfX0sbW91bnRlZDpmdW5jdGlvbigpe3RoaXMuc3RhcnRUaW1lcigpfX19LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiBpKGUpe3JldHVybiBuKHMoZSkpfWZ1bmN0aW9uIHMoZSl7cmV0dXJuIG9bZV18fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IEVycm9yKCJDYW5ub3QgZmluZCBtb2R1bGUgJyIrZSsiJy4iKX0oKX12YXIgbz17Ii4vZXJyb3Iuc3ZnIjozMDUsIi4vaW5mby5zdmciOjMwNiwiLi9zdWNjZXNzLnN2ZyI6MzA3LCIuL3dhcm5pbmcuc3ZnIjozMDh9O2kua2V5cz1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhvKX0saS5yZXNvbHZlPXMsZS5leHBvcnRzPWksaS5pZD0zMDR9LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPSJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBEOTRiV3dnZG1WeWMybHZiajBpTVM0d0lpQmxibU52WkdsdVp6MGlWVlJHTFRnaUlITjBZVzVrWVd4dmJtVTlJbTV2SWo4K0NqeHpkbWNnZDJsa2RHZzlJalF3Y0hnaUlHaGxhV2RvZEQwaU5EQndlQ0lnZG1sbGQwSnZlRDBpTUNBd0lEUXdJRFF3SWlCMlpYSnphVzl1UFNJeExqRWlJSGh0Ykc1elBTSm9kSFJ3T2k4dmQzZDNMbmN6TG05eVp5OHlNREF3TDNOMlp5SWdlRzFzYm5NNmVHeHBibXM5SW1oMGRIQTZMeTkzZDNjdWR6TXViM0puTHpFNU9Ua3ZlR3hwYm1zaVBnb2dJQ0FnUENFdExTQkhaVzVsY21GMGIzSTZJRk5yWlhSamFDQXpPUzR4SUNnek1UY3lNQ2tnTFNCb2RIUndPaTh2ZDNkM0xtSnZhR1Z0YVdGdVkyOWthVzVuTG1OdmJTOXphMlYwWTJnZ0xTMCtDaUFnSUNBOGRHbDBiR1UrYVdOdmJsOWtZVzVuWlhJOEwzUnBkR3hsUGdvZ0lDQWdQR1JsYzJNK1EzSmxZWFJsWkNCM2FYUm9JRk5yWlhSamFDNDhMMlJsYzJNK0NpQWdJQ0E4WkdWbWN6NDhMMlJsWm5NK0NpQWdJQ0E4WnlCcFpEMGlSV3hsYldWdWRDMW5kV2xrWld4cGJtVXRkakF1TWk0MElpQnpkSEp2YTJVOUltNXZibVVpSUhOMGNtOXJaUzEzYVdSMGFEMGlNU0lnWm1sc2JEMGlibTl1WlNJZ1ptbHNiQzF5ZFd4bFBTSmxkbVZ1YjJSa0lqNEtJQ0FnSUNBZ0lDQThaeUJwWkQwaVRXVnpjMkZuWlNJZ2RISmhibk5tYjNKdFBTSjBjbUZ1YzJ4aGRHVW9MVFl3TGpBd01EQXdNQ3dnTFRNek1pNHdNREF3TURBcElqNEtJQ0FnSUNBZ0lDQWdJQ0FnUEdjZ2FXUTlJdVc0cHVXQXZ1V1FrVi9rdjZIbWdhOGlJSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0RZd0xqQXdNREF3TUN3Z016TXlMakF3TURBd01Da2lQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQR2NnYVdROUlsSmxZM1JoYm1kc1pTMHlJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOFp5QnBaRDBpYVdOdmJsOWtZVzVuWlhJaVBnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOGNtVmpkQ0JwWkQwaVVtVmpkR0Z1WjJ4bExUSWlJR1pwYkd3OUlpTkdSalE1TkRraUlIZzlJakFpSUhrOUlqQWlJSGRwWkhSb1BTSTBNQ0lnYUdWcFoyaDBQU0kwTUNJK1BDOXlaV04wUGdvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4Y0dGMGFDQmtQU0pOTWpVdU9ERTNNall5Tnl3eE5pNHpORFV4TnprMklFTXlOUzQ1TXprd09UQXlMREUyTGpJeU16TTBPRE1nTWpZc01UWXVNRGMyTVRReE9DQXlOaXd4TlM0NU1ETTFOVEl6SUVNeU5pd3hOUzQzTXpBNU5qSTRJREkxTGprek9UQTVNRElzTVRVdU5UZ3pOelUyTXlBeU5TNDRNVGN5TmpJM0xERTFMalEyTVRreU9Ea2dUREkwTGpVd056WXhOVGNzTVRRdU1UZ3lOelF4TVNCRE1qUXVNemcxTnpnNE1pd3hOQzR3TmpBNU1UTTNJREkwTGpJME16WTFOelVzTVRRZ01qUXVNRGd4TWpFNU5pd3hOQ0JETWpNdU9URTROemd4Tnl3eE5DQXlNeTQzTnpZMk5URXNNVFF1TURZd09URXpOeUF5TXk0Mk5UUTRNak0xTERFMExqRTRNamMwTVRFZ1RESXdMREUzTGpnek56VTJNelVnVERFMkxqTXhORGN5TVRZc01UUXVNVGd5TnpReE1TQkRNVFl1TVRreU9Ea3dNaXd4TkM0d05qQTVNVE0zSURFMkxqQTFNRGMxT1RVc01UUWdNVFV1T0RnNE16SXhOaXd4TkNCRE1UVXVOekkxT0RnM05pd3hOQ0F4TlM0MU9ETTNOVFk1TERFMExqQTJNRGt4TXpjZ01UVXVORFl4T1RJNU5Dd3hOQzR4T0RJM05ERXhJRXd4TkM0eE5USXlPREkwTERFMUxqUTJNVGt5T0RrZ1F6RTBMakExTURjMU9ESXNNVFV1TlRnek56VTJNeUF4TkN3eE5TNDNNekE1TmpJNElERTBMREUxTGprd016VTFNak1nUXpFMExERTJMakEzTmpFME1UZ2dNVFF1TURVd056VTRNaXd4Tmk0eU1qTXpORGd6SURFMExqRTFNakk0TWpRc01UWXVNelExTVRjNU5pQk1NVGN1T0RNM05UWXdPQ3d5TUM0d01EQXdNREU1SUV3eE5DNHhOVEl5T0RJMExESXpMalkxTkRneU5ETWdRekUwTGpBMU1EYzFPRElzTWpNdU56YzJOalV4TnlBeE5Dd3lNeTQ1TWpNNE5UZ3lJREUwTERJMExqQTVOalEwTnpjZ1F6RTBMREkwTGpJMk9UQXpOeklnTVRRdU1EVXdOelU0TWl3eU5DNDBNVFl5TkRNM0lERTBMakUxTWpJNE1qUXNNalF1TlRNNE1EY3hNU0JNTVRVdU5EWXhPVEk1TkN3eU5TNDRNVGN5TlRnNUlFTXhOUzQxT0RNM05UWTVMREkxTGprek9UQTROak1nTVRVdU56STFPRGczTml3eU5pQXhOUzQ0T0Rnek1qRTJMREkySUVNeE5pNHdOVEEzTlRrMUxESTJJREUyTGpFNU1qZzVNRElzTWpVdU9UTTVNRGcyTXlBeE5pNHpNVFEzTWpFMkxESTFMamd4TnpJMU9Ea2dUREl3TERJeUxqRTJNalF6TmpVZ1RESXpMalkxTkRneU16VXNNalV1T0RFM01qVTRPU0JETWpNdU56YzJOalV4TERJMUxqa3pPVEE0TmpNZ01qTXVPVEU0TnpneE55d3lOaUF5TkM0d09ERXlNVGsyTERJMklFTXlOQzR5TkRNMk5UYzFMREkySURJMExqTTROVGM0T0RJc01qVXVPVE01TURnMk15QXlOQzQxTURjMk1UVTNMREkxTGpneE56STFPRGtnVERJMUxqZ3hOekkyTWpjc01qUXVOVE00TURjeE1TQkRNalV1T1RNNU1Ea3dNaXd5TkM0ME1UWXlORE0zSURJMkxESTBMakkyT1RBek56SWdNallzTWpRdU1EazJORFEzTnlCRE1qWXNNak11T1RJek9EVTRNaUF5TlM0NU16a3dPVEF5TERJekxqYzNOalkxTVRjZ01qVXVPREUzTWpZeU55d3lNeTQyTlRRNE1qUXpJRXd5TWk0eE16RTVPREEwTERJd0xqQXdNREF3TVRrZ1RESTFMamd4TnpJMk1qY3NNVFl1TXpRMU1UYzVOaUJhSWlCcFpEMGlVR0YwYUNJZ1ptbHNiRDBpSTBaR1JrWkdSaUkrUEM5d1lYUm9QZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dlp6NEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEd3ZaejRLSUNBZ0lDQWdJQ0FnSUNBZ1BDOW5QZ29nSUNBZ0lDQWdJRHd2Wno0S0lDQWdJRHd2Wno0S1BDOXpkbWMrIn0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9ImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEQ5NGJXd2dkbVZ5YzJsdmJqMGlNUzR3SWlCbGJtTnZaR2x1WnowaVZWUkdMVGdpSUhOMFlXNWtZV3h2Ym1VOUltNXZJajgrQ2p4emRtY2dkMmxrZEdnOUlqUXdjSGdpSUdobGFXZG9kRDBpTkRCd2VDSWdkbWxsZDBKdmVEMGlNQ0F3SURRd0lEUXdJaUIyWlhKemFXOXVQU0l4TGpFaUlIaHRiRzV6UFNKb2RIUndPaTh2ZDNkM0xuY3pMbTl5Wnk4eU1EQXdMM04yWnlJZ2VHMXNibk02ZUd4cGJtczlJbWgwZEhBNkx5OTNkM2N1ZHpNdWIzSm5MekU1T1RrdmVHeHBibXNpUGdvZ0lDQWdQQ0V0TFNCSFpXNWxjbUYwYjNJNklGTnJaWFJqYUNBek9TNHhJQ2d6TVRjeU1Da2dMU0JvZEhSd09pOHZkM2QzTG1KdmFHVnRhV0Z1WTI5a2FXNW5MbU52YlM5emEyVjBZMmdnTFMwK0NpQWdJQ0E4ZEdsMGJHVSthV052Ymw5cGJtWnZQQzkwYVhSc1pUNEtJQ0FnSUR4a1pYTmpQa055WldGMFpXUWdkMmwwYUNCVGEyVjBZMmd1UEM5a1pYTmpQZ29nSUNBZ1BHUmxabk0rUEM5a1pXWnpQZ29nSUNBZ1BHY2dhV1E5SWtWc1pXMWxiblF0WjNWcFpHVnNhVzVsTFhZd0xqSXVOQ0lnYzNSeWIydGxQU0p1YjI1bElpQnpkSEp2YTJVdGQybGtkR2c5SWpFaUlHWnBiR3c5SW01dmJtVWlJR1pwYkd3dGNuVnNaVDBpWlhabGJtOWtaQ0krQ2lBZ0lDQWdJQ0FnUEdjZ2FXUTlJazFsYzNOaFoyVWlJSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0MwMk1DNHdNREF3TURBc0lDMHhOVEl1TURBd01EQXdLU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lEeG5JR2xrUFNMbHVLYmxnTDdsa0pGZjVMK2g1b0d2SWlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZzJNQzR3TURBd01EQXNJREUxTWk0d01EQXdNREFwSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4bklHbGtQU0pTWldOMFlXNW5iR1V0TWlJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQR2NnYVdROUltbGpiMjVmYVc1bWJ5SStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHlaV04wSUdsa1BTSlNaV04wWVc1bmJHVXRNaUlnWm1sc2JEMGlJelV3UWtaR1JpSWdlRDBpTUNJZ2VUMGlNQ0lnZDJsa2RHZzlJalF3SWlCb1pXbG5hSFE5SWpRd0lqNDhMM0psWTNRK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4d1lYUm9JR1E5SWsweU1TNDJNVFV6T0RRMkxESTJMalUwTXpJd09Ua2dRekl4TGpZeE5UTTRORFlzTWpZdU9UUTNPRGMxTVNBeU1TNDBOVGd6TXpRNExESTNMakk1TVRnek5qZ2dNakV1TVRRME1qTXdPQ3d5Tnk0MU56VXhNREk1SUVNeU1DNDRNekF4TWpZNExESTNMamcxT0RNMk9Ea2dNakF1TkRRNE56RTVOQ3d5T0NBeU1Dd3lPQ0JETVRrdU5UVXhNamd3Tml3eU9DQXhPUzR4TmprNE56TXlMREkzTGpnMU9ETTJPRGtnTVRndU9EVTFOelk1TWl3eU55NDFOelV4TURJNUlFTXhPQzQxTkRFMk5qVXlMREkzTGpJNU1UZ3pOamdnTVRndU16ZzBOakUxTkN3eU5pNDVORGM0TnpVeElERTRMak00TkRZeE5UUXNNall1TlRRek1qQTVPU0JNTVRndU16ZzBOakUxTkN3eE9TNDNORFE0TlRZZ1F6RTRMak00TkRZeE5UUXNNVGt1TXpRd01Ua3dOeUF4T0M0MU5ERTJOalV5TERFNExqazVOakl5T1NBeE9DNDROVFUzTmpreUxERTRMamN4TWprMk15QkRNVGt1TVRZNU9EY3pNaXd4T0M0ME1qazJPVFk1SURFNUxqVTFNVEk0TURZc01UZ3VNamc0TURZMU9DQXlNQ3d4T0M0eU9EZ3dOalU0SUVNeU1DNDBORGczTVRrMExERTRMakk0T0RBMk5UZ2dNakF1T0RNd01USTJPQ3d4T0M0ME1qazJPVFk1SURJeExqRTBOREl6TURnc01UZ3VOekV5T1RZeklFTXlNUzQwTlRnek16UTRMREU0TGprNU5qSXlPU0F5TVM0Mk1UVXpPRFEyTERFNUxqTTBNREU1TURjZ01qRXVOakUxTXpnME5pd3hPUzQzTkRRNE5UWWdUREl4TGpZeE5UTTRORFlzTWpZdU5UUXpNakE1T1NCYUlFMHlNQ3d4TlM0NE1EUXlPVGd4SUVNeE9TNDBORFEwTkRJM0xERTFMamd3TkRJNU9ERWdNVGd1T1RjeU1qSTBMREUxTGpZeE9UTTJPRGNnTVRndU5UZ3pNek16TXl3eE5TNHlORGsxTURRMklFTXhPQzR4T1RRME5ESTNMREUwTGpnM09UWTBNRFlnTVRnc01UUXVORE13TlRJMU5TQXhPQ3d4TXk0NU1ESXhORGt4SUVNeE9Dd3hNeTR6TnpNM056STJJREU0TGpFNU5EUTBNamNzTVRJdU9USTBOalUzTlNBeE9DNDFPRE16TXpNekxERXlMalUxTkRjNU16VWdRekU0TGprM01qSXlOQ3d4TWk0eE9EUTVNamsxSURFNUxqUTBORFEwTWpjc01USWdNakFzTVRJZ1F6SXdMalUxTlRVMU56TXNNVElnTWpFdU1ESTNOemMyTERFeUxqRTRORGt5T1RVZ01qRXVOREUyTmpZMk55d3hNaTQxTlRRM09UTTFJRU15TVM0NE1EVTFOVGN6TERFeUxqa3lORFkxTnpVZ01qSXNNVE11TXpjek56Y3lOaUF5TWl3eE15NDVNREl4TkRreElFTXlNaXd4TkM0ME16QTFNalUxSURJeExqZ3dOVFUxTnpNc01UUXVPRGM1TmpRd05pQXlNUzQwTVRZMk5qWTNMREUxTGpJME9UVXdORFlnUXpJeExqQXlOemMzTml3eE5TNDJNVGt6TmpnM0lESXdMalUxTlRVMU56TXNNVFV1T0RBME1qazRNU0F5TUN3eE5TNDRNRFF5T1RneElGb2lJR2xrUFNKRGIyMWlhVzVsWkMxVGFHRndaU0lnWm1sc2JEMGlJMFpHUmtaR1JpSStQQzl3WVhSb1Bnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Wno0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dlp6NEtJQ0FnSUNBZ0lDQWdJQ0FnUEM5blBnb2dJQ0FnSUNBZ0lEd3ZaejRLSUNBZ0lEd3ZaejRLUEM5emRtYysifSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lJSE4wWVc1a1lXeHZibVU5SW01dklqOCtDanh6ZG1jZ2QybGtkR2c5SWpRd2NIZ2lJR2hsYVdkb2REMGlOREJ3ZUNJZ2RtbGxkMEp2ZUQwaU1DQXdJRFF3SURRd0lpQjJaWEp6YVc5dVBTSXhMakVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lQZ29nSUNBZ1BDRXRMU0JIWlc1bGNtRjBiM0k2SUZOclpYUmphQ0F6T1M0eElDZ3pNVGN5TUNrZ0xTQm9kSFJ3T2k4dmQzZDNMbUp2YUdWdGFXRnVZMjlrYVc1bkxtTnZiUzl6YTJWMFkyZ2dMUzArQ2lBZ0lDQThkR2wwYkdVK2FXTnZibDl6ZFdOalpYTnpQQzkwYVhSc1pUNEtJQ0FnSUR4a1pYTmpQa055WldGMFpXUWdkMmwwYUNCVGEyVjBZMmd1UEM5a1pYTmpQZ29nSUNBZ1BHUmxabk0rUEM5a1pXWnpQZ29nSUNBZ1BHY2dhV1E5SWtWc1pXMWxiblF0WjNWcFpHVnNhVzVsTFhZd0xqSXVOQ0lnYzNSeWIydGxQU0p1YjI1bElpQnpkSEp2YTJVdGQybGtkR2c5SWpFaUlHWnBiR3c5SW01dmJtVWlJR1pwYkd3dGNuVnNaVDBpWlhabGJtOWtaQ0krQ2lBZ0lDQWdJQ0FnUEdjZ2FXUTlJazFsYzNOaFoyVWlJSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0MwMk1DNHdNREF3TURBc0lDMHlNVEl1TURBd01EQXdLU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lEeG5JR2xrUFNMbHVLYmxnTDdsa0pGZjVMK2g1b0d2SWlCMGNtRnVjMlp2Y20wOUluUnlZVzV6YkdGMFpTZzJNQzR3TURBd01EQXNJREl4TWk0d01EQXdNREFwSWo0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR4bklHbGtQU0pTWldOMFlXNW5iR1V0TWlJK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQR2NnYVdROUltbGpiMjVmYzNWalkyVnpjeUkrQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHh5WldOMElHbGtQU0pTWldOMFlXNW5iR1V0TWlJZ1ptbHNiRDBpSXpFelEwVTJOaUlnZUQwaU1DSWdlVDBpTUNJZ2QybGtkR2c5SWpRd0lpQm9aV2xuYUhROUlqUXdJajQ4TDNKbFkzUStDaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lEeHdZWFJvSUdROUlrMHlOeTQ0TWpVMU9ERTBMREUzTGpFME9EUXpOVGNnVERFNUxqQXhOelEwTERJMUxqZ3lPREV5TVRNZ1F6RTRMamt3TVRFMk1Ea3NNalV1T1RReU56QTRNeUF4T0M0M05qVTFNRE16TERJMklERTRMall4TURRMk55d3lOaUJETVRndU5EVTFOREkzTERJMklERTRMak14T1RjMk9UTXNNalV1T1RReU56QTRNeUF4T0M0eU1ETTBPRFkxTERJMUxqZ3lPREV5TVRNZ1RERTRMakF5T1RBM01UWXNNalV1TmpVMk1qVWdUREV6TGpFM05EUXhPRFlzTWpBdU9EUXpOelVnUXpFekxqQTFPREV6T1RVc01qQXVOekk1TVRZeklERXpMREl3TGpVNU5UUTRNemNnTVRNc01qQXVORFF5TnpBME55QkRNVE1zTWpBdU1qZzVPVEk1TXlBeE15NHdOVGd4TXprMUxESXdMakUxTmpJMUlERXpMakUzTkRReE9EWXNNakF1TURReE5qWTJOeUJNTVRRdU16WTJNamMzTWl3eE9DNDROamN4T0RVM0lFTXhOQzQwT0RJMU5pd3hPQzQzTlRJMk1ESXpJREUwTGpZeE9ESXhOemNzTVRndU5qazFNekV3TnlBeE5DNDNOek15TlRjM0xERTRMalk1TlRNeE1EY2dRekUwTGpreU9ESTVOQ3d4T0M0Mk9UVXpNVEEzSURFMUxqQTJNemsxTVRZc01UZ3VOelV5TmpBeU15QXhOUzR4T0RBeU16QTNMREU0TGpnMk56RTROVGNnVERFNExqWXhNRFEyTnl3eU1pNHlOell3TXpnZ1RESTFMamd4T1RjMk9UTXNNVFV1TVRjeE9EY3hNeUJETWpVdU9UTTJNRFE0TkN3eE5TNHdOVGN5T0RnZ01qWXVNRGN4TnpBMkxERTFJREkyTGpJeU5qYzBNak1zTVRVZ1F6STJMak00TVRjNE1qTXNNVFVnTWpZdU5URTNORFFzTVRVdU1EVTNNamc0SURJMkxqWXpNemN5TWpnc01UVXVNVGN4T0RjeE15Qk1NamN1T0RJMU5UZ3hOQ3d4Tmk0ek5EWXpOVEl6SUVNeU55NDVOREU0TmpBMUxERTJMalEyTURrek5UY2dNamdzTVRZdU5UazBOakUxSURJNExERTJMamMwTnpNNU5DQkRNamdzTVRZdU9UQXdNVGN6SURJM0xqazBNVGcyTURVc01UY3VNRE16T0RVeU15QXlOeTQ0TWpVMU9ERTBMREUzTGpFME9EUXpOVGNnVERJM0xqZ3lOVFU0TVRRc01UY3VNVFE0TkRNMU55QmFJaUJwWkQwaVVHRjBhQ0lnWm1sc2JEMGlJMFpHUmtaR1JpSStQQzl3WVhSb1Bnb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRHd2Wno0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUR3dlp6NEtJQ0FnSUNBZ0lDQWdJQ0FnUEM5blBnb2dJQ0FnSUNBZ0lEd3ZaejRLSUNBZ0lEd3ZaejRLUEM5emRtYysifSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz0iZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQRDk0Yld3Z2RtVnljMmx2YmowaU1TNHdJaUJsYm1OdlpHbHVaejBpVlZSR0xUZ2lJSE4wWVc1a1lXeHZibVU5SW01dklqOCtDanh6ZG1jZ2QybGtkR2c5SWpRd2NIZ2lJR2hsYVdkb2REMGlOREJ3ZUNJZ2RtbGxkMEp2ZUQwaU1DQXdJRFF3SURRd0lpQjJaWEp6YVc5dVBTSXhMakVpSUhodGJHNXpQU0pvZEhSd09pOHZkM2QzTG5jekxtOXlaeTh5TURBd0wzTjJaeUlnZUcxc2JuTTZlR3hwYm1zOUltaDBkSEE2THk5M2QzY3Vkek11YjNKbkx6RTVPVGt2ZUd4cGJtc2lQZ29nSUNBZ1BDRXRMU0JIWlc1bGNtRjBiM0k2SUZOclpYUmphQ0F6T1M0eElDZ3pNVGN5TUNrZ0xTQm9kSFJ3T2k4dmQzZDNMbUp2YUdWdGFXRnVZMjlrYVc1bkxtTnZiUzl6YTJWMFkyZ2dMUzArQ2lBZ0lDQThkR2wwYkdVK2FXTnZibDkzWVhKdWFXNW5QQzkwYVhSc1pUNEtJQ0FnSUR4a1pYTmpQa055WldGMFpXUWdkMmwwYUNCVGEyVjBZMmd1UEM5a1pYTmpQZ29nSUNBZ1BHUmxabk0rUEM5a1pXWnpQZ29nSUNBZ1BHY2dhV1E5SWxCaFoyVXRNU0lnYzNSeWIydGxQU0p1YjI1bElpQnpkSEp2YTJVdGQybGtkR2c5SWpFaUlHWnBiR3c5SW01dmJtVWlJR1pwYkd3dGNuVnNaVDBpWlhabGJtOWtaQ0krQ2lBZ0lDQWdJQ0FnUEdjZ2FXUTlJazFsYzNOaFoyVWlJSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0MwMk1DNHdNREF3TURBc0lDMHlOekl1TURBd01EQXdLU0krQ2lBZ0lDQWdJQ0FnSUNBZ0lEeG5JR2xrUFNMbHVLYmxnTDdsa0pGZjVMK2g1b0d2TFdOdmNIa2lJSFJ5WVc1elptOXliVDBpZEhKaGJuTnNZWFJsS0RZd0xqQXdNREF3TUN3Z01qY3lMakF3TURBd01Da2lQZ29nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdQR2NnYVdROUlsSmxZM1JoYm1kc1pTMHlJajRLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOFp5QnBaRDBpYVdOdmJsOTNZWEp1YVc1bklqNEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1BISmxZM1FnYVdROUlsSmxZM1JoYm1kc1pTMHlJaUJtYVd4c1BTSWpSamRDUVRKQklpQjRQU0l3SWlCNVBTSXdJaUIzYVdSMGFEMGlOREFpSUdobGFXZG9kRDBpTkRBaVBqd3ZjbVZqZEQ0S0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnUEhCaGRHZ2daRDBpVFRJeExqWXhOVE00TkRZc01qWXVOVFF6TWpBNU9TQkRNakV1TmpFMU16ZzBOaXd5Tmk0NU5EYzROelV4SURJeExqUTFPRE16TkRnc01qY3VNamt4T0RNMk9DQXlNUzR4TkRReU16QTRMREkzTGpVM05URXdNamtnUXpJd0xqZ3pNREV5Tmpnc01qY3VPRFU0TXpZNE9TQXlNQzQwTkRnM01UazBMREk0SURJd0xESTRJRU14T1M0MU5URXlPREEyTERJNElERTVMakUyT1RnM016SXNNamN1T0RVNE16WTRPU0F4T0M0NE5UVTNOamt5TERJM0xqVTNOVEV3TWprZ1F6RTRMalUwTVRZMk5USXNNamN1TWpreE9ETTJPQ0F4T0M0ek9EUTJNVFUwTERJMkxqazBOemczTlRFZ01UZ3VNemcwTmpFMU5Dd3lOaTQxTkRNeU1EazVJRXd4T0M0ek9EUTJNVFUwTERFNUxqYzBORGcxTmlCRE1UZ3VNemcwTmpFMU5Dd3hPUzR6TkRBeE9UQTNJREU0TGpVME1UWTJOVElzTVRndU9UazJNakk1SURFNExqZzFOVGMyT1RJc01UZ3VOekV5T1RZeklFTXhPUzR4TmprNE56TXlMREU0TGpReU9UWTVOamtnTVRrdU5UVXhNamd3Tml3eE9DNHlPRGd3TmpVNElESXdMREU0TGpJNE9EQTJOVGdnUXpJd0xqUTBPRGN4T1RRc01UZ3VNamc0TURZMU9DQXlNQzQ0TXpBeE1qWTRMREU0TGpReU9UWTVOamtnTWpFdU1UUTBNak13T0N3eE9DNDNNVEk1TmpNZ1F6SXhMalExT0RNek5EZ3NNVGd1T1RrMk1qSTVJREl4TGpZeE5UTTRORFlzTVRrdU16UXdNVGt3TnlBeU1TNDJNVFV6T0RRMkxERTVMamMwTkRnMU5pQk1NakV1TmpFMU16ZzBOaXd5Tmk0MU5ETXlNRGs1SUZvZ1RUSXdMREUxTGpnd05ESTVPREVnUXpFNUxqUTBORFEwTWpjc01UVXVPREEwTWprNE1TQXhPQzQ1TnpJeU1qUXNNVFV1TmpFNU16WTROeUF4T0M0MU9ETXpNek16TERFMUxqSTBPVFV3TkRZZ1F6RTRMakU1TkRRME1qY3NNVFF1T0RjNU5qUXdOaUF4T0N3eE5DNDBNekExTWpVMUlERTRMREV6TGprd01qRTBPVEVnUXpFNExERXpMak0zTXpjM01qWWdNVGd1TVRrME5EUXlOeXd4TWk0NU1qUTJOVGMxSURFNExqVTRNek16TXpNc01USXVOVFUwTnprek5TQkRNVGd1T1RjeU1qSTBMREV5TGpFNE5Ea3lPVFVnTVRrdU5EUTBORFF5Tnl3eE1pQXlNQ3d4TWlCRE1qQXVOVFUxTlRVM015d3hNaUF5TVM0d01qYzNOellzTVRJdU1UZzBPVEk1TlNBeU1TNDBNVFkyTmpZM0xERXlMalUxTkRjNU16VWdRekl4TGpnd05UVTFOek1zTVRJdU9USTBOalUzTlNBeU1pd3hNeTR6TnpNM056STJJREl5TERFekxqa3dNakUwT1RFZ1F6SXlMREUwTGpRek1EVXlOVFVnTWpFdU9EQTFOVFUzTXl3eE5DNDROemsyTkRBMklESXhMalF4TmpZMk5qY3NNVFV1TWpRNU5UQTBOaUJETWpFdU1ESTNOemMyTERFMUxqWXhPVE0yT0RjZ01qQXVOVFUxTlRVM015d3hOUzQ0TURReU9UZ3hJREl3TERFMUxqZ3dOREk1T0RFZ1dpSWdhV1E5SWtOdmJXSnBibVZrTFZOb1lYQmxJaUJtYVd4c1BTSWpSa1pHUmtaR0lpQjBjbUZ1YzJadmNtMDlJblJ5WVc1emJHRjBaU2d5TUM0d01EQXdNREFzSURJd0xqQXdNREF3TUNrZ2MyTmhiR1VvTVN3Z0xURXBJSFJ5WVc1emJHRjBaU2d0TWpBdU1EQXdNREF3TENBdE1qQXVNREF3TURBd0tTQWlQand2Y0dGMGFENEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0E4TDJjK0NpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBOEwyYytDaUFnSUNBZ0lDQWdJQ0FnSUR3dlp6NEtJQ0FnSUNBZ0lDQThMMmMrQ2lBZ0lDQThMMmMrQ2p3dmMzWm5QZz09In0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goInRyYW5zaXRpb24iLHthdHRyczp7bmFtZToiZWwtbWVzc2FnZS1mYWRlIn19LFtlLl9oKCJkaXYiLHtkaXJlY3RpdmVzOlt7bmFtZToic2hvdyIscmF3TmFtZToidi1zaG93Iix2YWx1ZTplLnZpc2libGUsZXhwcmVzc2lvbjoidmlzaWJsZSJ9XSxzdGF0aWNDbGFzczoiZWwtbWVzc2FnZSIsb246e21vdXNlZW50ZXI6ZS5jbGVhclRpbWVyLG1vdXNlbGVhdmU6ZS5zdGFydFRpbWVyfX0sW2UuX2goImltZyIse3N0YXRpY0NsYXNzOiJlbC1tZXNzYWdlX19pY29uIixhdHRyczp7c3JjOmUudHlwZUltZyxhbHQ6IiJ9fSksZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLW1lc3NhZ2VfX2dyb3VwIn0sW2UuX2goInAiLFtlLl9zKGUubWVzc2FnZSldKSxlLnNob3dDbG9zZT9lLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtbWVzc2FnZV9fY2xvc2VCdG4gZWwtaWNvbi1jbG9zZSIsb246e2NsaWNrOmUuY2xvc2V9fSk6ZS5fZSgpXSldKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMzExKSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDMxMik7dmFyIG89bigzMTMpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt0Ll9fZXNNb2R1bGU9ITAsdFsiZGVmYXVsdCJdPXtuYW1lOiJlbC1iYWRnZSIscHJvcHM6e3ZhbHVlOnt9LG1heDpOdW1iZXIsaXNEb3Q6Qm9vbGVhbn0sY29tcHV0ZWQ6e2NvbnRlbnQ6ZnVuY3Rpb24oKXtpZighdGhpcy5pc0RvdCl7dmFyIGU9dGhpcy52YWx1ZSx0PXRoaXMubWF4O3JldHVybiJudW1iZXIiPT10eXBlb2YgZSYmIm51bWJlciI9PXR5cGVvZiB0JiZ0PGU/dCsiKyI6ZX19fX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtYmFkZ2UifSxbZS5fdCgiZGVmYXVsdCIpLGUuX2goInN1cCIse3N0YXRpY0NsYXNzOiJlbC1iYWRnZV9fY29udGVudCIsImNsYXNzIjp7ImlzLWZpeGVkIjplLiRzbG90c1siZGVmYXVsdCJdLCJpcy1kb3QiOmUuaXNEb3R9LGRvbVByb3BzOnt0ZXh0Q29udGVudDplLl9zKGUuY29udGVudCl9fSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDMxNSksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigzMTYpO3ZhciBvPW4oMzE3KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHRbImRlZmF1bHQiXT17bmFtZToiZWwtY2FyZCIscHJvcHM6WyJoZWFkZXIiLCJib2R5U3R5bGUiXX19LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPXtyZW5kZXI6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVybiBlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtY2FyZCJ9LFtlLiRzbG90cy5oZWFkZXJ8fGUuaGVhZGVyP2UuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1jYXJkX19oZWFkZXIifSxbZS5fdCgiaGVhZGVyIixbZS5fcyhlLmhlYWRlcildKV0pOmUuX2UoKSxlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtY2FyZF9fYm9keSIsc3R5bGU6ZS5ib2R5U3R5bGV9LFtlLl90KCJkZWZhdWx0IildKV0pfSxzdGF0aWNSZW5kZXJGbnM6W119fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOnsiZGVmYXVsdCI6ZX19dC5fX2VzTW9kdWxlPSEwO3ZhciBzPW4oMzE5KSxvPWkocyk7b1siZGVmYXVsdCJdLmluc3RhbGw9ZnVuY3Rpb24oZSl7ZS5jb21wb25lbnQob1siZGVmYXVsdCJdLm5hbWUsb1siZGVmYXVsdCJdKX0sdFsiZGVmYXVsdCJdPW9bImRlZmF1bHQiXX0sZnVuY3Rpb24oZSx0LG4pe3ZhciBpLHM7aT1uKDMyMCk7dmFyIG89bigzMjEpO3M9aT1pfHx7fSwib2JqZWN0IiE9dHlwZW9mIGlbImRlZmF1bHQiXSYmImZ1bmN0aW9uIiE9dHlwZW9mIGlbImRlZmF1bHQiXXx8KHM9aT1pWyJkZWZhdWx0Il0pLCJmdW5jdGlvbiI9PXR5cGVvZiBzJiYocz1zLm9wdGlvbnMpLHMucmVuZGVyPW8ucmVuZGVyLHMuc3RhdGljUmVuZGVyRm5zPW8uc3RhdGljUmVuZGVyRm5zLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMDt2YXIgaT1uKDM5KTt0WyJkZWZhdWx0Il09e25hbWU6ImVsLXJhdGUiLGRhdGE6ZnVuY3Rpb24oKXtyZXR1cm57Y2xhc3NNYXA6e30sY29sb3JNYXA6e30sY2xhc3NlczpudWxsLHBvaW50ZXJBdExlZnRIYWxmOiExLGN1cnJlbnRWYWx1ZTp0aGlzLnZhbHVlLGhvdmVySW5kZXg6LTF9fSxwcm9wczp7dmFsdWU6e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjowfSxsb3dUaHJlc2hvbGQ6e3R5cGU6TnVtYmVyLCJkZWZhdWx0IjoyfSxoaWdoVGhyZXNob2xkOnt0eXBlOk51bWJlciwiZGVmYXVsdCI6NH0sbWF4Ont0eXBlOk51bWJlciwiZGVmYXVsdCI6NX0sY29sb3JzOnt0eXBlOkFycmF5LCJkZWZhdWx0IjpmdW5jdGlvbigpe3JldHVyblsiI0Y3QkEyQSIsIiNGN0JBMkEiLCIjRjdCQTJBIl19fSx2b2lkQ29sb3I6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiI0M2RDFERSJ9LGRpc2FibGVkVm9pZENvbG9yOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6IiNFRkYyRjcifSxpY29uQ2xhc3Nlczp7dHlwZTpBcnJheSwiZGVmYXVsdCI6ZnVuY3Rpb24oKXtyZXR1cm5bImVsLWljb24tc3Rhci1vbiIsImVsLWljb24tc3Rhci1vbiIsImVsLWljb24tc3Rhci1vbiJdfX0sdm9pZEljb25DbGFzczp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJlbC1pY29uLXN0YXItb2ZmIn0sZGlzYWJsZWRWb2lkSWNvbkNsYXNzOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6ImVsLWljb24tc3Rhci1vbiJ9LGRpc2FibGVkOnt0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiExfSxhbGxvd0hhbGY6e3R5cGU6Qm9vbGVhbiwiZGVmYXVsdCI6ITF9LHNob3dUZXh0Ont0eXBlOkJvb2xlYW4sImRlZmF1bHQiOiExfSx0ZXh0Q29sb3I6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiMWYyZDNkIn0sdGV4dHM6e3R5cGU6QXJyYXksImRlZmF1bHQiOmZ1bmN0aW9uKCl7cmV0dXJuWyLmnoHlt64iLCLlpLHmnJsiLCLkuIDoiKwiLCLmu6HmhI8iLCLmg4rllpwiXX19LHRleHRUZW1wbGF0ZTp7dHlwZTpTdHJpbmcsImRlZmF1bHQiOiJ7dmFsdWV9In19LGNvbXB1dGVkOnt0ZXh0OmZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIGU9dGhpcy5kaXNhYmxlZD90aGlzLnRleHRUZW1wbGF0ZS5yZXBsYWNlKC9ce1xzKnZhbHVlXHMqXH0vLHRoaXMudmFsdWUpOnRoaXMudGV4dHNbTWF0aC5jZWlsKHRoaXMuY3VycmVudFZhbHVlKS0xXX0sZGVjaW1hbFN0eWxlOmZ1bmN0aW9uKCl7dmFyIGU9IiI7cmV0dXJuIHRoaXMuZGlzYWJsZWQmJihlPSh0aGlzLnZhbHVlRGVjaW1hbDw1MD8wOjUwKSsiJSIpLHRoaXMuYWxsb3dIYWxmJiYoZT0iNTAlIikse2NvbG9yOnRoaXMuYWN0aXZlQ29sb3Isd2lkdGg6ZX19LHZhbHVlRGVjaW1hbDpmdW5jdGlvbigpe3JldHVybiAxMDAqdGhpcy52YWx1ZS0xMDAqTWF0aC5mbG9vcih0aGlzLnZhbHVlKX0sZGVjaW1hbEljb25DbGFzczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFZhbHVlRnJvbU1hcCh0aGlzLnZhbHVlLHRoaXMuY2xhc3NNYXApfSx2b2lkQ2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kaXNhYmxlZD90aGlzLmNsYXNzTWFwLmRpc2FibGVkVm9pZENsYXNzOnRoaXMuY2xhc3NNYXAudm9pZENsYXNzfSxhY3RpdmVDbGFzczpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFZhbHVlRnJvbU1hcCh0aGlzLmN1cnJlbnRWYWx1ZSx0aGlzLmNsYXNzTWFwKX0sYWN0aXZlQ29sb3I6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZUZyb21NYXAodGhpcy5jdXJyZW50VmFsdWUsdGhpcy5jb2xvck1hcCl9LGNsYXNzZXM6ZnVuY3Rpb24oKXt2YXIgZT1bXSx0PTAsbj10aGlzLmN1cnJlbnRWYWx1ZTtmb3IodGhpcy5hbGxvd0hhbGYmJnRoaXMuY3VycmVudFZhbHVlIT09TWF0aC5mbG9vcih0aGlzLmN1cnJlbnRWYWx1ZSkmJm4tLTt0PG47dCsrKWUucHVzaCh0aGlzLmFjdGl2ZUNsYXNzKTtmb3IoO3Q8dGhpcy5tYXg7dCsrKWUucHVzaCh0aGlzLnZvaWRDbGFzcyk7cmV0dXJuIGV9fSx3YXRjaDp7dmFsdWU6ZnVuY3Rpb24oZSl7dGhpcy4kZW1pdCgiY2hhbmdlIixlKSx0aGlzLmN1cnJlbnRWYWx1ZT1lfX0sbWV0aG9kczp7Z2V0VmFsdWVGcm9tTWFwOmZ1bmN0aW9uKGUsdCl7dmFyIG49IiI7cmV0dXJuIG49ZTw9dGhpcy5sb3dUaHJlc2hvbGQ/dC5sb3dDb2xvcnx8dC5sb3dDbGFzczplPj10aGlzLmhpZ2hUaHJlc2hvbGQ/dC5oaWdoQ29sb3J8fHQuaGlnaENsYXNzOnQubWVkaXVtQ29sb3J8fHQubWVkaXVtQ2xhc3M7Cn0sc2hvd0RlY2ltYWxJY29uOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZGlzYWJsZWQmJnRoaXMudmFsdWVEZWNpbWFsPjAmJmUtMTx0aGlzLnZhbHVlJiZlPnRoaXMudmFsdWUsbj10aGlzLmFsbG93SGFsZiYmdGhpcy5wb2ludGVyQXRMZWZ0SGFsZiYmKGUtLjUpLnRvRml4ZWQoMSk9PT10aGlzLmN1cnJlbnRWYWx1ZS50b0ZpeGVkKDEpO3JldHVybiB0fHxufSxnZXRJY29uU3R5bGU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5kaXNhYmxlZD90aGlzLmNvbG9yTWFwLmRpc2FibGVkVm9pZENvbG9yOnRoaXMuY29sb3JNYXAudm9pZENvbG9yO3JldHVybntjb2xvcjplPD10aGlzLmN1cnJlbnRWYWx1ZT90aGlzLmFjdGl2ZUNvbG9yOnR9fSxzZWxlY3RWYWx1ZTpmdW5jdGlvbihlKXt0aGlzLmRpc2FibGVkfHwodGhpcy5hbGxvd0hhbGYmJnRoaXMucG9pbnRlckF0TGVmdEhhbGY/dGhpcy4kZW1pdCgiaW5wdXQiLHRoaXMuY3VycmVudFZhbHVlKTp0aGlzLiRlbWl0KCJpbnB1dCIsZSkpfSxzZXRDdXJyZW50VmFsdWU6ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5kaXNhYmxlZCl7aWYodGhpcy5hbGxvd0hhbGYpe3ZhciBuPXQudGFyZ2V0OygwLGkuaGFzQ2xhc3MpKG4sImVsLXJhdGVfX2l0ZW0iKSYmKG49bi5xdWVyeVNlbGVjdG9yKCIuZWwtcmF0ZV9faWNvbiIpKSwoMCxpLmhhc0NsYXNzKShuLCJlbC1yYXRlX19kZWNpbWFsIikmJihuPW4ucGFyZW50Tm9kZSksdGhpcy5wb2ludGVyQXRMZWZ0SGFsZj0yKnQub2Zmc2V0WDw9bi5jbGllbnRXaWR0aCx0aGlzLmN1cnJlbnRWYWx1ZT10aGlzLnBvaW50ZXJBdExlZnRIYWxmP2UtLjU6ZX1lbHNlIHRoaXMuY3VycmVudFZhbHVlPWU7dGhpcy5ob3ZlckluZGV4PWV9fSxyZXNldEN1cnJlbnRWYWx1ZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWR8fCh0aGlzLmFsbG93SGFsZiYmKHRoaXMucG9pbnRlckF0TGVmdEhhbGY9dGhpcy52YWx1ZSE9PU1hdGguZmxvb3IodGhpcy52YWx1ZSkpLHRoaXMuY3VycmVudFZhbHVlPXRoaXMudmFsdWUsdGhpcy5ob3ZlckluZGV4PS0xKX19LGNyZWF0ZWQ6ZnVuY3Rpb24oKXt0aGlzLnZhbHVlfHx0aGlzLiRlbWl0KCJpbnB1dCIsMCksdGhpcy5jbGFzc01hcD17bG93Q2xhc3M6dGhpcy5pY29uQ2xhc3Nlc1swXSxtZWRpdW1DbGFzczp0aGlzLmljb25DbGFzc2VzWzFdLGhpZ2hDbGFzczp0aGlzLmljb25DbGFzc2VzWzJdLHZvaWRDbGFzczp0aGlzLnZvaWRJY29uQ2xhc3MsZGlzYWJsZWRWb2lkQ2xhc3M6dGhpcy5kaXNhYmxlZFZvaWRJY29uQ2xhc3N9LHRoaXMuY29sb3JNYXA9e2xvd0NvbG9yOnRoaXMuY29sb3JzWzBdLG1lZGl1bUNvbG9yOnRoaXMuY29sb3JzWzFdLGhpZ2hDb2xvcjp0aGlzLmNvbG9yc1syXSx2b2lkQ29sb3I6dGhpcy52b2lkQ29sb3IsZGlzYWJsZWRWb2lkQ29sb3I6dGhpcy5kaXNhYmxlZFZvaWRDb2xvcn19fX0sZnVuY3Rpb24oZSx0KXtlLmV4cG9ydHM9e3JlbmRlcjpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1yYXRlIn0sW2UuX2woZS5tYXgsZnVuY3Rpb24odCl7cmV0dXJuIGUuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtcmF0ZV9faXRlbSIsc3R5bGU6e2N1cnNvcjplLmRpc2FibGVkPyJhdXRvIjoicG9pbnRlciJ9LG9uOnttb3VzZW1vdmU6ZnVuY3Rpb24obil7ZS5zZXRDdXJyZW50VmFsdWUodCxuKX0sbW91c2VsZWF2ZTplLnJlc2V0Q3VycmVudFZhbHVlLGNsaWNrOmZ1bmN0aW9uKG4pe2Uuc2VsZWN0VmFsdWUodCl9fX0sW2UuX2goImkiLHtzdGF0aWNDbGFzczoiZWwtcmF0ZV9faWNvbiIsImNsYXNzIjpbZS5jbGFzc2VzW3QtMV0se2hvdmVyOmUuaG92ZXJJbmRleD09PXR9XSxzdHlsZTplLmdldEljb25TdHlsZSh0KX0sW2Uuc2hvd0RlY2ltYWxJY29uKHQpP2UuX2goImkiLHtzdGF0aWNDbGFzczoiZWwtcmF0ZV9fZGVjaW1hbCIsImNsYXNzIjplLmRlY2ltYWxJY29uQ2xhc3Msc3R5bGU6ZS5kZWNpbWFsU3R5bGV9KTplLl9lKCldKV0pfSksZS5zaG93VGV4dD9lLl9oKCJzcGFuIix7c3RhdGljQ2xhc3M6ImVsLXJhdGVfX3RleHQiLHN0eWxlOntjb2xvcjplLnRleHRDb2xvcn19LFtlLl9zKGUudGV4dCldKTplLl9lKCldKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDMyMyksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigzMjQpO3ZhciBvPW4oMzI1KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHRbImRlZmF1bHQiXT17bmFtZToiZWwtc3RlcHMiLHByb3BzOntzcGFjZTpOdW1iZXIsYWN0aXZlOk51bWJlcixkaXJlY3Rpb246e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoiaG9yaXpvbnRhbCJ9LGFsaWduQ2VudGVyOkJvb2xlYW4sZmluaXNoU3RhdHVzOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6ImZpbmlzaCJ9LHByb2Nlc3NTdGF0dXM6e3R5cGU6U3RyaW5nLCJkZWZhdWx0IjoicHJvY2VzcyJ9fSxkYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3N0ZXBzOltdfX0sd2F0Y2g6e2FjdGl2ZTpmdW5jdGlvbihlLHQpe3RoaXMuJGVtaXQoImNoYW5nZSIsZSx0KX19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt0aGlzLnN0ZXBzLmZvckVhY2goZnVuY3Rpb24oZSx0KXtlLmluZGV4PXR9KX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXN0ZXBzIiwiY2xhc3MiOlsiaXMtIitlLmRpcmVjdGlvbl19LFtlLl90KCJkZWZhdWx0IildKX0sc3RhdGljUmVuZGVyRm5zOltdfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBpKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ImRlZmF1bHQiOmV9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1uKDMyNyksbz1pKHMpO29bImRlZmF1bHQiXS5pbnN0YWxsPWZ1bmN0aW9uKGUpe2UuY29tcG9uZW50KG9bImRlZmF1bHQiXS5uYW1lLG9bImRlZmF1bHQiXSl9LHRbImRlZmF1bHQiXT1vWyJkZWZhdWx0Il19LGZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzO2k9bigzMjgpO3ZhciBvPW4oMzI5KTtzPWk9aXx8e30sIm9iamVjdCIhPXR5cGVvZiBpWyJkZWZhdWx0Il0mJiJmdW5jdGlvbiIhPXR5cGVvZiBpWyJkZWZhdWx0Il18fChzPWk9aVsiZGVmYXVsdCJdKSwiZnVuY3Rpb24iPT10eXBlb2YgcyYmKHM9cy5vcHRpb25zKSxzLnJlbmRlcj1vLnJlbmRlcixzLnN0YXRpY1JlbmRlckZucz1vLnN0YXRpY1JlbmRlckZucyxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dC5fX2VzTW9kdWxlPSEwLHRbImRlZmF1bHQiXT17bmFtZToiZWwtc3RlcCIscHJvcHM6e3RpdGxlOlN0cmluZyxpY29uOlN0cmluZyxkZXNjcmlwdGlvbjpTdHJpbmcsc3RhdHVzOnt0eXBlOlN0cmluZywiZGVmYXVsdCI6IndhaXQifX0sZGF0YTpmdW5jdGlvbigpe3JldHVybntpbmRleDotMSxzdHlsZTp7fSxsaW5lU3R5bGU6e30sbWFpbk9mZnNldDowLGN1cnJlbnRTdGF0dXM6dGhpcy5zdGF0dXN9fSxjcmVhdGVkOmZ1bmN0aW9uKCl7dGhpcy4kcGFyZW50LnN0ZXBzLnB1c2godGhpcyl9LG1ldGhvZHM6e3VwZGF0ZVN0YXR1czpmdW5jdGlvbihlKXt2YXIgdD10aGlzLiRwYXJlbnQuJGNoaWxkcmVuW3RoaXMuaW5kZXgtMV07ZT50aGlzLmluZGV4P3RoaXMuY3VycmVudFN0YXR1cz10aGlzLiRwYXJlbnQuZmluaXNoU3RhdHVzOmU9PT10aGlzLmluZGV4P3RoaXMuY3VycmVudFN0YXR1cz10aGlzLiRwYXJlbnQucHJvY2Vzc1N0YXR1czp0aGlzLmN1cnJlbnRTdGF0dXM9IndhaXQiLHQmJnQuY2FsY1Byb2dyZXNzKHRoaXMuY3VycmVudFN0YXR1cyl9LGNhbGNQcm9ncmVzczpmdW5jdGlvbihlKXt2YXIgdD0xMDAsbj17fTtuLnRyYW5zaXRpb25EZWxheT0xNTAqdGhpcy5pbmRleCsibXMiLGU9PT10aGlzLiRwYXJlbnQucHJvY2Vzc1N0YXR1cz90PTUwOiJ3YWl0Ij09PWUmJih0PTAsbi50cmFuc2l0aW9uRGVsYXk9LTE1MCp0aGlzLmluZGV4KyJtcyIpLCJ2ZXJ0aWNhbCI9PT10aGlzLiRwYXJlbnQuZGlyZWN0aW9uP24uaGVpZ2h0PXQrIiUiOm4ud2lkdGg9dCsiJSIsdGhpcy5saW5lU3R5bGU9bn19LG1vdW50ZWQ6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9dGhpcy4kcGFyZW50LG49dC5zcGFjZT90LnNwYWNlKyJweCI6MTAwL3Quc3RlcHMubGVuZ3RoKyIlIjsiaG9yaXpvbnRhbCI9PT10LmRpcmVjdGlvbj8odGhpcy5zdHlsZT17d2lkdGg6bn0sdC5hbGlnbkNlbnRlciYmKHRoaXMubWFpbk9mZnNldD0tdGhpcy4kcmVmcy50aXRsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aC8yKzE2KyJweCIpKTp0LnN0ZXBzW3Quc3RlcHMubGVuZ3RoLTFdIT09dGhpcyYmKHRoaXMuc3R5bGU9e2hlaWdodDpufSk7dmFyIGk9dGhpcy4kd2F0Y2goImluZGV4IixmdW5jdGlvbih0KXtlLiR3YXRjaCgiJHBhcmVudC5hY3RpdmUiLGUudXBkYXRlU3RhdHVzLHtpbW1lZGlhdGU6ITB9KSxpKCl9KX19fSxmdW5jdGlvbihlLHQpe2UuZXhwb3J0cz17cmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXN0ZXAiLCJjbGFzcyI6WyJpcy0iK2UuJHBhcmVudC5kaXJlY3Rpb25dLHN0eWxlOmUuc3R5bGV9LFtlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtc3RlcF9faGVhZCIsImNsYXNzIjpbImlzLSIrZS5jdXJyZW50U3RhdHVzLHsiaXMtdGV4dCI6IWUuaWNvbn1dfSxbZS5faCgiZGl2Iix7c3RhdGljQ2xhc3M6ImVsLXN0ZXBfX2xpbmUiLCJjbGFzcyI6WyJpcy0iK2UuJHBhcmVudC5kaXJlY3Rpb24seyJpcy1pY29uIjplLmljb259XX0sW2UuX2goImkiLHtzdGF0aWNDbGFzczoiZWwtc3RlcF9fbGluZS1pbm5lciIsc3R5bGU6ZS5saW5lU3R5bGV9KV0pLGUuX2goInNwYW4iLHtzdGF0aWNDbGFzczoiZWwtc3RlcF9faWNvbiJ9LFsic3VjY2VzcyIhPT1lLmN1cnJlbnRTdGF0dXMmJiJlcnJvciIhPT1lLmN1cnJlbnRTdGF0dXM/ZS5fdCgiaWNvbiIsW2UuaWNvbj9lLl9oKCJpIix7ImNsYXNzIjpbImVsLWljb24tIitlLmljb25dfSk6ZS5faCgiZGl2IixbZS5fcyhlLmluZGV4KzEpXSldKTplLl9oKCJpIix7ImNsYXNzIjpbImVsLWljb24tIisoInN1Y2Nlc3MiPT09ZS5jdXJyZW50U3RhdHVzPyJjaGVjayI6ImNsb3NlIildfSldKV0pLGUuX2goImRpdiIse3N0YXRpY0NsYXNzOiJlbC1zdGVwX19tYWluIixzdHlsZTp7bWFyZ2luTGVmdDplLm1haW5PZmZzZXR9fSxbZS5faCgiZGl2Iix7cmVmOiJ0aXRsZSIsc3RhdGljQ2xhc3M6ImVsLXN0ZXBfX3RpdGxlIiwiY2xhc3MiOlsiaXMtIitlLmN1cnJlbnRTdGF0dXNdfSxbZS5fdCgidGl0bGUiLFtlLl9zKGUudGl0bGUpXSldKSxlLl9oKCJkaXYiLHtzdGF0aWNDbGFzczoiZWwtc3RlcF9fZGVzY3JpcHRpb24iLCJjbGFzcyI6WyJpcy0iK2UuY3VycmVudFN0YXR1c119LFtlLl90KCJkZXNjcmlwdGlvbiIsW2UuX3MoZS5kZXNjcmlwdGlvbildKV0pXSldKX0sc3RhdGljUmVuZGVyRm5zOltdfX1dKX0pOw=="></script>
</head>
<body style="background-color:white;">
<div id="app">
<p><el-tree :data="data" :props="defaultProps" @node-click="handleNodeClick"></el-tree></p>
</div>
<div id="htmlwidget-c2cef319bfbfe167fab4" class="vue html-widget" style="width:960px;height:500px;">
</div>
<script type="application/json" data-for="htmlwidget-c2cef319bfbfe167fab4">{"x":{"el":"#app","data":{"data":{"children":[{"id":"A","children":[{"id":"A.1","children":[{"id":"A.1.a","x":8.8819,"colname":"index3"},{"id":"A.1.b","x":0.5587,"colname":"index3"},{"id":"A.1.c","x":1.8943,"colname":"index3"}],"colname":"index2"},{"id":"A.2","children":[{"id":"A.2.a","x":1.062,"colname":"index3"},{"id":"A.2.b","x":0.2693,"colname":"index3"},{"id":"A.2.c","x":4.3805,"colname":"index3"},{"id":"A.2.d","x":0.3251,"colname":"index3"},{"id":"A.2.e","x":4.3063,"colname":"index3"},{"id":"A.2.f","x":0.6836,"colname":"index3"}],"colname":"index2"},{"id":"A.3","children":[{"id":"A.3.a","x":0.7828,"colname":"index3"},{"id":"A.3.b","x":0.0754,"colname":"index3"},{"id":"A.3.c","x":0.185,"colname":"index3"}],"colname":"index2"}],"colname":"index1"},{"id":"B","children":[{"id":"B.1","children":[{"id":"B.1.a","x":8.1954,"colname":"index3"},{"id":"B.1.b","x":1.7589,"colname":"index3"},{"id":"B.1.c","x":0.5923,"colname":"index3"},{"id":"B.1.d","x":1.7047,"colname":"index3"}],"colname":"index2"},{"id":"B.2","children":[],"x":0.4227,"colname":"index2"},{"id":"B.3","children":[{"id":"B.3.a","x":1.2251,"colname":"index3"},{"id":"B.3.b","x":2.4111,"colname":"index3"},{"id":"B.3.c","x":0.7876,"colname":"index3"},{"id":"B.3.d","x":0.8394,"colname":"index3"},{"id":"B.3.e","x":3.8927,"colname":"index3"},{"id":"B.3.f","x":0.5104,"colname":"index3"}],"colname":"index2"},{"id":"B.4","children":[{"id":"B.4.a","x":0.3146,"colname":"index3"},{"id":"B.4.b","x":0.6046,"colname":"index3"}],"colname":"index2"},{"id":"B.5","children":[{"id":"B.5.a","x":0.2599,"colname":"index3"},{"id":"B.5.b","x":2.6359,"colname":"index3"},{"id":"B.5.c","x":0.7785,"colname":"index3"}],"colname":"index2"},{"id":"B.6","children":[{"id":"B.6.a","x":5.2702,"colname":"index3"},{"id":"B.6.b","x":0.6698,"colname":"index3"}],"colname":"index2"}],"colname":"index1"},{"id":"C","children":[{"id":"C.1","children":[{"id":"C.1.a","x":1.5572,"colname":"index3"},{"id":"C.1.b","x":1.1992,"colname":"index3"},{"id":"C.1.c","x":0.5606,"colname":"index3"}],"colname":"index2"},{"id":"C.2","children":[],"x":1.0846,"colname":"index2"}],"colname":"index1"},{"id":"D","children":[{"id":"D.1","children":[{"id":"D.1.a","x":0.354,"colname":"index3"},{"id":"D.1.b","x":4.4899,"colname":"index3"},{"id":"D.1.c","x":0.4829,"colname":"index3"},{"id":"D.1.d","x":0.8635,"colname":"index3"}],"colname":"index2"},{"id":"D.2","children":[{"id":"D.2.a","x":0.3585,"colname":"index3"},{"id":"D.2.b","x":1.2135,"colname":"index3"},{"id":"D.2.c","x":1.1185,"colname":"index3"},{"id":"D.2.d","x":0.9169,"colname":"index3"},{"id":"D.2.e","x":0.9565,"colname":"index3"}],"colname":"index2"}],"colname":"index1"}],"id":"root"},"defaultProps":{"children":"children","label":"id"}},"methods":{"handleNodeClick":"function(data){console.log(data)}"}},"evals":["methods.handleNodeClick"],"jsHooks":[]}</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment