my-orders-tickets-widget 1.0.0-beta.50 → 1.0.0-beta.52

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2207,14 +2207,14 @@ const Filter = _ref => {
2207
2207
  let {
2208
2208
  onFilter,
2209
2209
  onReset,
2210
- filter
2210
+ filter,
2211
+ activeFiltersCount
2211
2212
  } = _ref;
2212
2213
  const {
2213
2214
  t
2214
2215
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_5__.useTranslation)();
2215
2216
  const [showFilterList, setShowFilterList] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
2216
2217
  const [showDatepicker, setShowDatepicker] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
2217
- const [filterNumActive, setFilterNumActive] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(null);
2218
2218
  const filterRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);
2219
2219
  const handleFilterClickOutside = event => {
2220
2220
  if (filterRef.current && !filterRef.current.contains(event.target)) {
@@ -2230,31 +2230,11 @@ const Filter = _ref => {
2230
2230
  document.removeEventListener("click", handleFilterClickOutside, false);
2231
2231
  };
2232
2232
  }, [showFilterList]);
2233
- const MARGIN_RIGHT_WITH_BADGE = 1;
2234
- const ADD_FILTER_NUMBER = 1;
2235
- const calculateActiveFilters = filters => {
2236
- let count = 0;
2237
- Object.entries(filters).forEach(_ref2 => {
2238
- let [, value] = _ref2;
2239
- if (Array.isArray(value)) {
2240
- count += value.length;
2241
- } else if (typeof value === "string" && value.trim() !== "") {
2242
- count += ADD_FILTER_NUMBER;
2243
- } else if (typeof value === "number" && value > 0) {
2244
- count += ADD_FILTER_NUMBER;
2245
- }
2246
- });
2247
- return count;
2248
- };
2249
- (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
2250
- setFilterNumActive(calculateActiveFilters(filter));
2251
- }, [filter]);
2252
2233
  const toggle = () => {
2253
2234
  setShowFilterList(!showFilterList);
2254
2235
  setShowDatepicker(!showDatepicker);
2255
2236
  };
2256
2237
  const handleFilterReset = () => {
2257
- setFilterNumActive(0);
2258
2238
  onReset();
2259
2239
  toggle();
2260
2240
  };
@@ -2270,10 +2250,10 @@ const Filter = _ref => {
2270
2250
  },
2271
2251
  onClick: toggle,
2272
2252
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Badge, {
2273
- badgeContent: filterNumActive,
2253
+ badgeContent: activeFiltersCount,
2274
2254
  color: "primary",
2275
2255
  sx: {
2276
- mr: filterNumActive > 0 ? MARGIN_RIGHT_WITH_BADGE : ""
2256
+ mr: 1
2277
2257
  },
2278
2258
  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_15__.jsx)((_mui_icons_material_FilterList__WEBPACK_IMPORTED_MODULE_3___default()), {
2279
2259
  fontSize: "large",
@@ -2326,13 +2306,14 @@ const Filter = _ref => {
2326
2306
  Filter.propTypes = {
2327
2307
  onFilter: (prop_types__WEBPACK_IMPORTED_MODULE_1___default().func)
2328
2308
  };
2329
- const mapStateToProps = _ref3 => {
2309
+ const mapStateToProps = _ref2 => {
2330
2310
  let {
2331
2311
  widgetState
2332
- } = _ref3;
2312
+ } = _ref2;
2333
2313
  return {
2334
2314
  sort: widgetState.sort,
2335
- filter: widgetState.filter
2315
+ filter: widgetState.filter,
2316
+ activeFiltersCount: widgetState.activeFiltersCount
2336
2317
  };
2337
2318
  };
2338
2319
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,react_redux__WEBPACK_IMPORTED_MODULE_6__.connect)(mapStateToProps, {})(Filter));
@@ -2590,21 +2571,24 @@ __webpack_require__.r(__webpack_exports__);
2590
2571
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
2591
2572
  /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! prop-types */ "prop-types");
2592
2573
  /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_1__);
2593
- /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material/styles */ "@mui/material/styles");
2594
- /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__);
2595
- /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/icons-material/Search */ "@mui/icons-material/Search");
2596
- /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3__);
2597
- /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/icons-material/Close */ "@mui/icons-material/Close");
2598
- /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4__);
2599
- /* harmony import */ var _mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/material/InputBase */ "@mui/material/InputBase");
2600
- /* harmony import */ var _mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5__);
2601
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2602
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_6__);
2603
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-i18next */ "react-i18next");
2604
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_7__);
2605
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
2606
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2607
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
2574
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-redux */ "react-redux");
2575
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_2__);
2576
+ /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material/styles */ "@mui/material/styles");
2577
+ /* harmony import */ var _mui_material_styles__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material_styles__WEBPACK_IMPORTED_MODULE_3__);
2578
+ /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/icons-material/Search */ "@mui/icons-material/Search");
2579
+ /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_4__);
2580
+ /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/icons-material/Close */ "@mui/icons-material/Close");
2581
+ /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_5__);
2582
+ /* harmony import */ var _mui_material_InputBase__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/material/InputBase */ "@mui/material/InputBase");
2583
+ /* harmony import */ var _mui_material_InputBase__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_material_InputBase__WEBPACK_IMPORTED_MODULE_6__);
2584
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @mui/material */ "@mui/material");
2585
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_7__);
2586
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react-i18next */ "react-i18next");
2587
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_8__);
2588
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
2589
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
2590
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__);
2591
+
2608
2592
 
2609
2593
 
2610
2594
 
@@ -2615,28 +2599,28 @@ __webpack_require__.r(__webpack_exports__);
2615
2599
 
2616
2600
 
2617
2601
 
2618
- const SearchContainer = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)("div")(() => ({
2602
+ const SearchContainer = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_3__.styled)("div")(() => ({
2619
2603
  position: "relative",
2620
2604
  marginRight: "0",
2621
2605
  marginLeft: "0",
2622
2606
  width: "100%",
2623
2607
  display: "block"
2624
2608
  }));
2625
- const SearchIconWrapper = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)("div")(() => ({
2609
+ const SearchIconWrapper = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_3__.styled)("div")(() => ({
2626
2610
  height: "100%",
2627
2611
  position: "absolute",
2628
2612
  display: "flex",
2629
2613
  alignItems: "center",
2630
2614
  justifyContent: "center"
2631
2615
  }));
2632
- const StyledInputBase = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)((_mui_material_InputBase__WEBPACK_IMPORTED_MODULE_5___default()))(() => ({
2616
+ const StyledInputBase = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_3__.styled)((_mui_material_InputBase__WEBPACK_IMPORTED_MODULE_6___default()))(() => ({
2633
2617
  color: "inherit",
2634
2618
  borderBottom: "1px solid rgba(0, 0, 0, 0.42)",
2635
2619
  paddingLeft: "25px",
2636
2620
  paddingRight: "25px",
2637
2621
  fontSize: "1em"
2638
2622
  }));
2639
- const CloseIconWrapper = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_2__.styled)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4___default()))(() => ({
2623
+ const CloseIconWrapper = (0,_mui_material_styles__WEBPACK_IMPORTED_MODULE_3__.styled)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_5___default()))(() => ({
2640
2624
  padding: "2px",
2641
2625
  fontSize: "1.5em",
2642
2626
  height: "100%",
@@ -2653,11 +2637,14 @@ const Search = _ref => {
2653
2637
  let {
2654
2638
  onSearch
2655
2639
  } = _ref;
2640
+ const {
2641
+ filter
2642
+ } = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(state => state.widgetState || {}, react_redux__WEBPACK_IMPORTED_MODULE_2__.shallowEqual);
2656
2643
  const {
2657
2644
  t
2658
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_7__.useTranslation)();
2659
- const [showClose, setShowClose] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
2645
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_8__.useTranslation)();
2660
2646
  const [searchValue, setSearchValue] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)("");
2647
+ const showCloseBtn = !!filter[_actions__WEBPACK_IMPORTED_MODULE_9__.FILTER_VAR_ORDER_NUMBER];
2661
2648
  const onKeyDown = event => {
2662
2649
  const {
2663
2650
  key,
@@ -2669,27 +2656,28 @@ const Search = _ref => {
2669
2656
  } = event;
2670
2657
  if (key === "Enter") {
2671
2658
  onSearch({
2672
- [_actions__WEBPACK_IMPORTED_MODULE_8__.FILTER_VAR_ORDER_NUMBER]: value
2659
+ [_actions__WEBPACK_IMPORTED_MODULE_9__.FILTER_VAR_ORDER_NUMBER]: value
2673
2660
  });
2674
- setShowClose(true);
2675
2661
  }
2676
2662
  };
2677
2663
  const resetSearch = () => {
2678
2664
  setSearchValue("");
2679
2665
  onSearch({
2680
- [_actions__WEBPACK_IMPORTED_MODULE_8__.FILTER_VAR_ORDER_NUMBER]: ""
2666
+ [_actions__WEBPACK_IMPORTED_MODULE_9__.FILTER_VAR_ORDER_NUMBER]: ""
2681
2667
  });
2682
- setShowClose(true);
2683
- setShowClose(false);
2684
2668
  };
2685
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_6__.Box, {
2686
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(SearchContainer, {
2687
- children: [showClose && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(CloseIconWrapper, {
2669
+ (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
2670
+ // we need this when search is reset from outside this component
2671
+ setSearchValue(filter[_actions__WEBPACK_IMPORTED_MODULE_9__.FILTER_VAR_ORDER_NUMBER]);
2672
+ }, [filter[_actions__WEBPACK_IMPORTED_MODULE_9__.FILTER_VAR_ORDER_NUMBER]]);
2673
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_7__.Box, {
2674
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(SearchContainer, {
2675
+ children: [showCloseBtn && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(CloseIconWrapper, {
2688
2676
  onClick: resetSearch,
2689
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_4___default()), {})
2690
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(SearchIconWrapper, {
2691
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_3___default()), {})
2692
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(StyledInputBase, {
2677
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_5___default()), {})
2678
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(SearchIconWrapper, {
2679
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)((_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_4___default()), {})
2680
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(StyledInputBase, {
2693
2681
  placeholder: t("order_search.order_number"),
2694
2682
  inputProps: {
2695
2683
  "aria-label": "search"
@@ -3312,25 +3300,13 @@ __webpack_require__.r(__webpack_exports__);
3312
3300
  /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3313
3301
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux");
3314
3302
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
3315
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-i18next */ "react-i18next");
3316
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_2__);
3317
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @mui/material */ "@mui/material");
3318
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_3__);
3319
- /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/icons-material/Search */ "@mui/icons-material/Search");
3320
- /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_4__);
3321
- /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/icons-material/Close */ "@mui/icons-material/Close");
3322
- /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_5__);
3323
- /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-infinite-scroll-component */ "react-infinite-scroll-component");
3324
- /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_6__);
3325
- /* harmony import */ var _OrdersList__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../OrdersList */ "./src/components/OrdersList/index.js");
3326
- /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
3327
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/MyOrdersTickets/styles.module.scss");
3328
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3329
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__);
3330
-
3331
-
3332
-
3333
-
3303
+ /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-infinite-scroll-component */ "react-infinite-scroll-component");
3304
+ /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_2__);
3305
+ /* harmony import */ var _OrdersList__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OrdersList */ "./src/components/OrdersList/index.js");
3306
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
3307
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/MyOrdersTickets/styles.module.scss");
3308
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3309
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
3334
3310
 
3335
3311
 
3336
3312
 
@@ -3342,53 +3318,197 @@ const MyOrdersTickets = _ref => {
3342
3318
  let {
3343
3319
  fetchData
3344
3320
  } = _ref;
3345
- const {
3346
- t
3347
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
3348
3321
  const {
3349
3322
  summit,
3350
3323
  memberOrders,
3351
3324
  orders_current_page,
3352
3325
  orders_last_page
3353
3326
  } = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.widgetState || {}, react_redux__WEBPACK_IMPORTED_MODULE_1__.shallowEqual);
3354
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)("div", {
3327
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("div", {
3355
3328
  id: "infiniteWrapper",
3356
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.myOrdersWrapper,
3357
- children: [" ", memberOrders !== null && memberOrders !== void 0 && memberOrders.length ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_6___default()), {
3329
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.myOrdersWrapper,
3330
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_2___default()), {
3358
3331
  dataLength: memberOrders === null || memberOrders === void 0 ? void 0 : memberOrders.length,
3359
- next: () => fetchData(orders_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_8__.ONE_PAGE_NEXT),
3332
+ next: () => fetchData(orders_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_4__.ONE_PAGE_NEXT),
3360
3333
  hasMore: orders_current_page < orders_last_page,
3361
3334
  scrollThreshold: 1,
3362
- children: memberOrders === null || memberOrders === void 0 ? void 0 : memberOrders.map(order => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_OrdersList__WEBPACK_IMPORTED_MODULE_7__["default"], {
3335
+ children: memberOrders === null || memberOrders === void 0 ? void 0 : memberOrders.map(order => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_OrdersList__WEBPACK_IMPORTED_MODULE_3__["default"], {
3363
3336
  order: order,
3364
3337
  summit: summit
3365
3338
  }, order.number + order.id))
3366
- }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
3367
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.noOrdersFound,
3368
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
3369
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.noOrdersIconWrapper,
3370
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)((_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_4___default()), {
3371
- sx: {
3372
- fontSize: 44,
3373
- color: "#0000008F"
3374
- }
3375
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_5___default()), {
3376
- sx: {
3377
- fontSize: 18,
3378
- position: "absolute",
3379
- top: 0,
3380
- right: 0,
3381
- color: "#0000008F"
3382
- }
3383
- })]
3384
- }), t("orders.no_orders")]
3385
- })]
3339
+ })
3386
3340
  });
3387
3341
  };
3388
3342
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MyOrdersTickets);
3389
3343
 
3390
3344
  /***/ }),
3391
3345
 
3346
+ /***/ "./src/components/NoTicketsFound/TicketsIcon.js":
3347
+ /*!******************************************************!*\
3348
+ !*** ./src/components/NoTicketsFound/TicketsIcon.js ***!
3349
+ \******************************************************/
3350
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3351
+
3352
+ __webpack_require__.r(__webpack_exports__);
3353
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3354
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
3355
+ /* harmony export */ });
3356
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
3357
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3358
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3359
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__);
3360
+
3361
+
3362
+ const TicketsIcon = () => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsxs)("svg", {
3363
+ width: "129",
3364
+ height: "80",
3365
+ viewBox: "0 0 129 80",
3366
+ fill: "none",
3367
+ xmlns: "http://www.w3.org/2000/svg",
3368
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("path", {
3369
+ d: "M125.122 36.4781C124.814 37.5112 123.738 38.0891 122.661 38.0376C118.506 37.8386 114.593 40.4754 113.349 44.6412C112.105 48.8073 113.932 53.1576 117.517 55.2697C118.446 55.8169 119.028 56.8899 118.72 57.9231L116.369 65.7967C116.053 66.8551 114.939 67.457 113.881 67.141L30.7675 42.3271C29.7091 42.0112 29.1072 40.897 29.4232 39.8386L40.3439 3.26016C40.6599 2.20176 41.774 1.59991 42.8324 1.9159L125.946 26.7297C127.004 27.0457 127.606 28.1599 127.29 29.2183L125.122 36.4781Z",
3370
+ fill: "white"
3371
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("path", {
3372
+ d: "M113.349 44.6412L112.391 44.3551L112.391 44.3552L113.349 44.6412ZM117.517 55.2697L117.009 56.1312L117.517 55.2697ZM122.661 38.0376L122.709 37.0387C118.105 36.8183 113.769 39.7381 112.391 44.3551L113.349 44.6412L114.307 44.9274C115.416 41.2127 118.906 38.8589 122.614 39.0364L122.661 38.0376ZM113.349 44.6412L112.391 44.3552C111.012 48.9725 113.038 53.7915 117.009 56.1312L117.517 55.2697L118.024 54.4081C114.826 52.5238 113.198 48.6421 114.307 44.9273L113.349 44.6412ZM118.72 57.9231L117.762 57.637L115.411 65.5106L116.369 65.7967L117.327 66.0828L119.678 58.2091L118.72 57.9231ZM113.881 67.141L114.167 66.1828L31.0535 41.3689L30.7675 42.3271L30.4814 43.2854L113.595 68.0992L113.881 67.141ZM29.4232 39.8386L30.3814 40.1247L41.3021 3.54624L40.3439 3.26016L39.3857 2.97409L28.465 39.5525L29.4232 39.8386ZM42.8324 1.9159L42.5464 2.87411L125.66 27.6879L125.946 26.7297L126.232 25.7715L43.1185 0.957697L42.8324 1.9159ZM127.29 29.2183L126.332 28.9322L124.164 36.192L125.122 36.4781L126.081 36.7642L128.248 29.5044L127.29 29.2183ZM125.946 26.7297L125.66 27.6879C126.189 27.8459 126.49 28.403 126.332 28.9322L127.29 29.2183L128.248 29.5044C128.722 27.9168 127.819 26.2455 126.232 25.7715L125.946 26.7297ZM30.7675 42.3271L31.0535 41.3689C30.5243 41.2109 30.2234 40.6539 30.3814 40.1247L29.4232 39.8386L28.465 39.5525C27.991 41.1401 28.8938 42.8114 30.4814 43.2854L30.7675 42.3271ZM116.369 65.7967L115.411 65.5106C115.253 66.0398 114.696 66.3408 114.167 66.1828L113.881 67.141L113.595 68.0992C115.182 68.5732 116.853 67.6704 117.327 66.0828L116.369 65.7967ZM117.517 55.2697L117.009 56.1312C117.653 56.5105 117.905 57.157 117.762 57.637L118.72 57.9231L119.678 58.2091C120.152 56.6228 119.239 55.1234 118.024 54.4081L117.517 55.2697ZM40.3439 3.26016L41.3021 3.54624C41.4601 3.01704 42.0171 2.71611 42.5464 2.87411L42.8324 1.9159L43.1185 0.957697C41.5309 0.48371 39.8596 1.38648 39.3857 2.97409L40.3439 3.26016ZM122.661 38.0376L122.614 39.0364C124.021 39.1038 125.607 38.3505 126.081 36.7642L125.122 36.4781L124.164 36.192C124.021 36.672 123.456 37.0744 122.709 37.0387L122.661 38.0376Z",
3373
+ fill: "#BDBDBD"
3374
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("path", {
3375
+ d: "M107.903 22.6758L96.5696 60.6379",
3376
+ stroke: "#BDBDBD",
3377
+ strokeWidth: "2",
3378
+ strokeLinecap: "round",
3379
+ strokeDasharray: "2 5"
3380
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("path", {
3381
+ d: "M91.742 45.8952C91.7419 46.9734 90.8765 47.8347 89.8297 48.0933C85.7906 49.0913 82.7959 52.7376 82.7953 57.0852C82.7948 61.4329 85.7887 65.0792 89.8276 66.0779C90.8742 66.3367 91.7394 67.1983 91.7392 68.2764L91.7382 76.4935C91.7381 77.5981 90.8426 78.4934 89.738 78.4933L2.99972 78.4827C1.89515 78.4825 0.999825 77.587 0.99996 76.4824L1.00464 38.3086C1.00477 37.204 1.90031 36.3087 3.00488 36.3088L89.7432 36.3195C90.8477 36.3196 91.7431 37.2151 91.7429 38.3197L91.742 45.8952Z",
3382
+ fill: "white"
3383
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("path", {
3384
+ d: "M82.7953 57.0852L81.7953 57.0851L81.7953 57.0851L82.7953 57.0852ZM89.8297 48.0933L90.0696 49.0641L89.8297 48.0933ZM89.8297 48.0933L89.5899 47.1225C85.115 48.2281 81.796 52.2667 81.7953 57.0851L82.7953 57.0852L83.7953 57.0854C83.7958 53.2084 86.4663 49.9544 90.0696 49.0641L89.8297 48.0933ZM82.7953 57.0852L81.7953 57.0851C81.7947 61.9036 85.1129 65.9422 89.5875 67.0487L89.8276 66.0779L90.0676 65.1071C86.4644 64.2162 83.7948 60.9622 83.7953 57.0853L82.7953 57.0852ZM91.7392 68.2764L90.7392 68.2763L90.7382 76.4934L91.7382 76.4935L92.7382 76.4937L92.7392 68.2766L91.7392 68.2764ZM89.738 78.4933L89.7381 77.4933L2.99984 77.4827L2.99972 78.4827L2.9996 79.4827L89.7379 79.4933L89.738 78.4933ZM0.99996 76.4824L1.99996 76.4825L2.00464 38.3087L1.00464 38.3086L0.00463776 38.3085L-3.96075e-05 76.4823L0.99996 76.4824ZM3.00488 36.3088L3.00476 37.3088L89.743 37.3195L89.7432 36.3195L89.7433 35.3195L3.00501 35.3088L3.00488 36.3088ZM91.7429 38.3197L90.7429 38.3196L90.742 45.8951L91.742 45.8952L92.742 45.8953L92.7429 38.3198L91.7429 38.3197ZM89.7432 36.3195L89.743 37.3195C90.2953 37.3195 90.743 37.7673 90.7429 38.3196L91.7429 38.3197L92.7429 38.3198C92.7431 36.663 91.4001 35.3197 89.7433 35.3195L89.7432 36.3195ZM2.99972 78.4827L2.99984 77.4827C2.44755 77.4826 1.99989 77.0348 1.99996 76.4825L0.99996 76.4824L-3.96075e-05 76.4823C-0.000242619 78.1392 1.34274 79.4825 2.9996 79.4827L2.99972 78.4827ZM91.7382 76.4935L90.7382 76.4934C90.7382 77.0457 90.2904 77.4934 89.7381 77.4933L89.738 78.4933L89.7379 79.4933C91.3947 79.4935 92.738 78.1505 92.7382 76.4937L91.7382 76.4935ZM89.8276 66.0779L89.5875 67.0487C90.3128 67.228 90.7393 67.7754 90.7392 68.2763L91.7392 68.2764L92.7392 68.2766C92.7395 66.6211 91.4356 65.4454 90.0676 65.1071L89.8276 66.0779ZM1.00464 38.3086L2.00464 38.3087C2.00471 37.7564 2.45248 37.3088 3.00476 37.3088L3.00488 36.3088L3.00501 35.3088C1.34815 35.3086 0.00484077 36.6516 0.00463776 38.3085L1.00464 38.3086ZM89.8297 48.0933L90.0696 49.0641C91.4376 48.7261 92.7418 47.5508 92.742 45.8953L91.742 45.8952L90.742 45.8951C90.7419 46.396 90.3153 46.9433 89.5899 47.1225L89.8297 48.0933Z",
3385
+ fill: "#BDBDBD"
3386
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_1__.jsx)("path", {
3387
+ d: "M71.2949 37.5957L71.2901 77.2136",
3388
+ stroke: "#BDBDBD",
3389
+ strokeWidth: "2",
3390
+ strokeLinecap: "round",
3391
+ strokeDasharray: "2 5"
3392
+ })]
3393
+ });
3394
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TicketsIcon);
3395
+
3396
+ /***/ }),
3397
+
3398
+ /***/ "./src/components/NoTicketsFound/index.js":
3399
+ /*!************************************************!*\
3400
+ !*** ./src/components/NoTicketsFound/index.js ***!
3401
+ \************************************************/
3402
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
3403
+
3404
+ __webpack_require__.r(__webpack_exports__);
3405
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
3406
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
3407
+ /* harmony export */ });
3408
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
3409
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
3410
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux");
3411
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
3412
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
3413
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
3414
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
3415
+ /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
3416
+ /* harmony import */ var _TicketsIcon__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./TicketsIcon */ "./src/components/NoTicketsFound/TicketsIcon.js");
3417
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
3418
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/NoTicketsFound/styles.module.scss");
3419
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3420
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
3421
+
3422
+
3423
+
3424
+
3425
+
3426
+
3427
+
3428
+
3429
+ const NoTicketsFound = _ref => {
3430
+ let {
3431
+ pageView,
3432
+ onClick
3433
+ } = _ref;
3434
+ const {
3435
+ summit,
3436
+ loading
3437
+ } = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.widgetState || {});
3438
+ const {
3439
+ t
3440
+ } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
3441
+ const getContent = () => {
3442
+ const mailtoTag = /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)("a", {
3443
+ href: "mailto:".concat(summit.support_email),
3444
+ children: t("general.contact_support")
3445
+ });
3446
+ switch (pageView) {
3447
+ case _utils_constants__WEBPACK_IMPORTED_MODULE_5__.TABS.ORDERS:
3448
+ {
3449
+ return {
3450
+ title: t("no_results.orders.title"),
3451
+ body: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
3452
+ children: [t("no_results.orders.body"), " ", mailtoTag, "."]
3453
+ }),
3454
+ buttonLabel: t("labels.assigned_to_me")
3455
+ };
3456
+ }
3457
+ case _utils_constants__WEBPACK_IMPORTED_MODULE_5__.TABS.TICKETS:
3458
+ {
3459
+ return {
3460
+ title: t("no_results.assigned.title"),
3461
+ body: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
3462
+ children: [t("no_results.assigned.body"), " ", mailtoTag, "."]
3463
+ }),
3464
+ buttonLabel: t("orders.title")
3465
+ };
3466
+ }
3467
+ default:
3468
+ {
3469
+ return {
3470
+ title: t("no_results.filter.title"),
3471
+ body: t("no_results.filter.body"),
3472
+ buttonLabel: t("filter.clear_filters")
3473
+ };
3474
+ }
3475
+ }
3476
+ };
3477
+ const {
3478
+ title,
3479
+ body,
3480
+ buttonLabel
3481
+ } = getContent();
3482
+ if (loading) return null;
3483
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
3484
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.wrapper,
3485
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
3486
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.iconWrapper,
3487
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_TicketsIcon__WEBPACK_IMPORTED_MODULE_4__["default"], {})
3488
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Typography, {
3489
+ variant: "h6",
3490
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.title,
3491
+ children: title
3492
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Typography, {
3493
+ variant: "body1",
3494
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.body,
3495
+ sx: {
3496
+ color: "text.secondary"
3497
+ },
3498
+ children: body
3499
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Button, {
3500
+ variant: "contained",
3501
+ color: "primary",
3502
+ size: "large",
3503
+ onClick: onClick,
3504
+ children: buttonLabel
3505
+ })]
3506
+ });
3507
+ };
3508
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (NoTicketsFound);
3509
+
3510
+ /***/ }),
3511
+
3392
3512
  /***/ "./src/components/OrderSummary/OrderSummaryTable.js":
3393
3513
  /*!**********************************************************!*\
3394
3514
  !*** ./src/components/OrderSummary/OrderSummaryTable.js ***!
@@ -3580,8 +3700,10 @@ __webpack_require__.r(__webpack_exports__);
3580
3700
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
3581
3701
  /* harmony import */ var _utils_ticketUtils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/ticketUtils */ "./src/utils/ticketUtils.js");
3582
3702
  /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrderSummary/styles.module.scss");
3583
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3584
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
3703
+ /* harmony import */ var _utils_summitUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../../utils/summitUtils */ "./src/utils/summitUtils.js");
3704
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3705
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__);
3706
+
3585
3707
 
3586
3708
 
3587
3709
 
@@ -3601,13 +3723,18 @@ const RefundEmailSupport = _ref => {
3601
3723
  const {
3602
3724
  t
3603
3725
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
3726
+ const {
3727
+ isStarted
3728
+ } = (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_7__.useSummitDetails)({
3729
+ summit
3730
+ });
3604
3731
  const now = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.useNow)();
3605
3732
  const isInRefundablePeriod = summit.registration_allowed_refund_request_till_date > now;
3606
3733
  const atLeastOneRefundableTicket = (0,_utils_ticketUtils__WEBPACK_IMPORTED_MODULE_5__.ticketsRefundable)(tickets);
3607
- const isRefundable = !!(isInRefundablePeriod && atLeastOneRefundableTicket);
3734
+ const isRefundable = !!(isInRefundablePeriod && !isStarted && atLeastOneRefundableTicket);
3608
3735
  const hasRefundRequests = tickets === null || tickets === void 0 ? void 0 : tickets.some(t => t.refund_requests.length > 0);
3609
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
3610
- children: [isRefundable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3736
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.Fragment, {
3737
+ children: [isRefundable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3611
3738
  "aria-label": "refund request button",
3612
3739
  role: "button",
3613
3740
  className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton, "\n ").concat(submitRequest ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.refundDisabled : ""),
@@ -3616,7 +3743,7 @@ const RefundEmailSupport = _ref => {
3616
3743
  onClick: onRefundClick,
3617
3744
  disabled: submitRequest,
3618
3745
  children: t("order_summary.request_refund")
3619
- }), hasRefundRequests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3746
+ }), hasRefundRequests && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3620
3747
  "aria-label": "refund details button",
3621
3748
  role: "button",
3622
3749
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton,
@@ -3624,7 +3751,7 @@ const RefundEmailSupport = _ref => {
3624
3751
  size: "large",
3625
3752
  onClick: onRefundDetailClick,
3626
3753
  children: t("order_summary.refund_details")
3627
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3754
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_8__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
3628
3755
  "aria-label": "email support button",
3629
3756
  role: "button",
3630
3757
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.orderSummaryButton,
@@ -3758,23 +3885,11 @@ __webpack_require__.r(__webpack_exports__);
3758
3885
  /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
3759
3886
  /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-infinite-scroll-component */ "react-infinite-scroll-component");
3760
3887
  /* harmony import */ var react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_2__);
3761
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-i18next */ "react-i18next");
3762
- /* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_3__);
3763
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @mui/material */ "@mui/material");
3764
- /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_4__);
3765
- /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @mui/icons-material/Search */ "@mui/icons-material/Search");
3766
- /* harmony import */ var _mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_5__);
3767
- /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @mui/icons-material/Close */ "@mui/icons-material/Close");
3768
- /* harmony import */ var _mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_6__);
3769
- /* harmony import */ var _OrderListTickets__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./OrderListTickets */ "./src/components/OrdersList/OrderListTickets.js");
3770
- /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
3771
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
3772
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3773
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__);
3774
-
3775
-
3776
-
3777
-
3888
+ /* harmony import */ var _OrderListTickets__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./OrderListTickets */ "./src/components/OrdersList/OrderListTickets.js");
3889
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
3890
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
3891
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
3892
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__);
3778
3893
 
3779
3894
 
3780
3895
 
@@ -3786,28 +3901,25 @@ const AssignToMe = _ref => {
3786
3901
  let {
3787
3902
  fetchData
3788
3903
  } = _ref;
3789
- const {
3790
- t
3791
- } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_3__.useTranslation)();
3792
3904
  const {
3793
3905
  summit,
3794
3906
  userTickets,
3795
3907
  user_tickets_current_page,
3796
3908
  user_tickets_last_page
3797
3909
  } = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.widgetState || {}, react_redux__WEBPACK_IMPORTED_MODULE_1__.shallowEqual);
3798
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)("div", {
3799
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.orderTicketContainer,
3800
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)("div", {
3910
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("div", {
3911
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.orderTicketContainer,
3912
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("div", {
3801
3913
  id: "assignedToMeWrapper",
3802
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.assignedToMeWrapper,
3803
- children: userTickets !== null && userTickets !== void 0 && userTickets.length ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_2___default()), {
3914
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.assignedToMeWrapper,
3915
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_2___default()), {
3804
3916
  dataLength: userTickets === null || userTickets === void 0 ? void 0 : userTickets.length,
3805
- next: () => fetchData(user_tickets_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_8__.ONE_PAGE_NEXT),
3917
+ next: () => fetchData(user_tickets_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_4__.ONE_PAGE_NEXT),
3806
3918
  hasMore: user_tickets_current_page < user_tickets_last_page,
3807
3919
  scrollThreshold: 1,
3808
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)("div", {
3809
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.ticketListContainer,
3810
- children: userTickets.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_OrderListTickets__WEBPACK_IMPORTED_MODULE_7__["default"], {
3920
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)("div", {
3921
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.ticketListContainer,
3922
+ children: userTickets.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_6__.jsx)(_OrderListTickets__WEBPACK_IMPORTED_MODULE_3__["default"], {
3811
3923
  ticket: ticket,
3812
3924
  summit: summit,
3813
3925
  isRefundModal: false,
@@ -3816,25 +3928,6 @@ const AssignToMe = _ref => {
3816
3928
  isExternalAssignedTicket: true
3817
3929
  }, ticket.id))
3818
3930
  })
3819
- }) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Box, {
3820
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.noTicketsFound,
3821
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_4__.Box, {
3822
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_9__.noOrdersIconWrapper,
3823
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)((_mui_icons_material_Search__WEBPACK_IMPORTED_MODULE_5___default()), {
3824
- sx: {
3825
- fontSize: 44,
3826
- color: "#0000008F"
3827
- }
3828
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)((_mui_icons_material_Close__WEBPACK_IMPORTED_MODULE_6___default()), {
3829
- sx: {
3830
- fontSize: 18,
3831
- position: "absolute",
3832
- top: 0,
3833
- right: 0,
3834
- color: "#0000008F"
3835
- }
3836
- })]
3837
- }), t("tickets.no_tickets")]
3838
3931
  })
3839
3932
  })
3840
3933
  });
@@ -4048,13 +4141,13 @@ const OrderListItem = _ref => {
4048
4141
  role: "button",
4049
4142
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.viewMoreButton,
4050
4143
  onClick: onViewMore,
4051
- children: t("orders-tickets.view_more")
4144
+ children: t("general.view_more")
4052
4145
  }) : "", (slicedTickets === null || slicedTickets === void 0 ? void 0 : slicedTickets.length) > _utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT && (slicedTickets === null || slicedTickets === void 0 ? void 0 : slicedTickets.length) === (order === null || order === void 0 ? void 0 : order.tickets_total) ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4053
4146
  "aria-label": "view less button",
4054
4147
  role: "button",
4055
4148
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_6__.viewMoreButton,
4056
4149
  onClick: onViewLess,
4057
- children: t("orders-tickets.view_less")
4150
+ children: t("general.view_less")
4058
4151
  }) : ""]
4059
4152
  });
4060
4153
  };
@@ -4156,10 +4249,6 @@ const TicketCTAs = _ref => {
4156
4249
  });
4157
4250
  }
4158
4251
  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
4159
- sx: {
4160
- justifyContent: "end",
4161
- width: "100%"
4162
- },
4163
4252
  alignItems: "center",
4164
4253
  direction: "row",
4165
4254
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
@@ -4286,15 +4375,8 @@ const OrderListTickets = _ref2 => {
4286
4375
  })]
4287
4376
  })]
4288
4377
  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
4289
- sx: {
4290
- display: "flex",
4291
- flexWrap: "wrap",
4292
- width: "100%"
4293
- },
4378
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.ticketFooter,
4294
4379
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
4295
- sx: {
4296
- minWidth: "300px"
4297
- },
4298
4380
  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_17__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_7__["default"], {
4299
4381
  ticket: ticket
4300
4382
  })
@@ -5401,6 +5483,82 @@ const SummitHeader = () => {
5401
5483
 
5402
5484
  /***/ }),
5403
5485
 
5486
+ /***/ "./src/components/TabWrapper/index.js":
5487
+ /*!********************************************!*\
5488
+ !*** ./src/components/TabWrapper/index.js ***!
5489
+ \********************************************/
5490
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
5491
+
5492
+ __webpack_require__.r(__webpack_exports__);
5493
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
5494
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
5495
+ /* harmony export */ });
5496
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
5497
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
5498
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ "react-redux");
5499
+ /* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_redux__WEBPACK_IMPORTED_MODULE_1__);
5500
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @mui/material */ "@mui/material");
5501
+ /* harmony import */ var _mui_material__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_mui_material__WEBPACK_IMPORTED_MODULE_2__);
5502
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
5503
+ /* harmony import */ var _SummitHeader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../SummitHeader */ "./src/components/SummitHeader/index.js");
5504
+ /* harmony import */ var _NoTicketsFound__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../NoTicketsFound */ "./src/components/NoTicketsFound/index.js");
5505
+ /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
5506
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
5507
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__);
5508
+
5509
+
5510
+
5511
+
5512
+
5513
+
5514
+
5515
+
5516
+ const TabWrapper = _ref => {
5517
+ let {
5518
+ tab,
5519
+ children,
5520
+ setTab
5521
+ } = _ref;
5522
+ const {
5523
+ memberOrders,
5524
+ userTickets,
5525
+ activeFiltersCount
5526
+ } = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.widgetState || {});
5527
+ const dispatch = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useDispatch)();
5528
+ const tickets = tab === _utils_constants__WEBPACK_IMPORTED_MODULE_6__.TABS.TICKETS ? userTickets : memberOrders;
5529
+ const hasTickets = tickets.length > 0;
5530
+ const isFiltered = activeFiltersCount > 0;
5531
+ const clearFilters = () => {
5532
+ dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_3__.resetFilter)());
5533
+ };
5534
+ const getPageView = () => {
5535
+ if (isFiltered) return "filter";
5536
+ return tab === _utils_constants__WEBPACK_IMPORTED_MODULE_6__.TABS.TICKETS ? _utils_constants__WEBPACK_IMPORTED_MODULE_6__.TABS.TICKETS : _utils_constants__WEBPACK_IMPORTED_MODULE_6__.TABS.ORDERS;
5537
+ };
5538
+ const getOnClick = () => {
5539
+ if (isFiltered) return clearFilters;
5540
+ const tabToLink = tab === _utils_constants__WEBPACK_IMPORTED_MODULE_6__.TABS.TICKETS ? _utils_constants__WEBPACK_IMPORTED_MODULE_6__.TABS.ORDERS : _utils_constants__WEBPACK_IMPORTED_MODULE_6__.TABS.TICKETS;
5541
+ return () => setTab(tabToLink);
5542
+ };
5543
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
5544
+ children: [!hasTickets && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_NoTicketsFound__WEBPACK_IMPORTED_MODULE_5__["default"], {
5545
+ pageView: getPageView(),
5546
+ onClick: getOnClick()
5547
+ }), hasTickets && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.Fragment, {
5548
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_2__.Box, {
5549
+ sx: {
5550
+ pt: 6,
5551
+ pb: 3
5552
+ },
5553
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_7__.jsx)(_SummitHeader__WEBPACK_IMPORTED_MODULE_4__["default"], {})
5554
+ }), children]
5555
+ })]
5556
+ });
5557
+ };
5558
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TabWrapper);
5559
+
5560
+ /***/ }),
5561
+
5404
5562
  /***/ "./src/components/TicketAssign/components/DelegateForm/index.js":
5405
5563
  /*!**********************************************************************!*\
5406
5564
  !*** ./src/components/TicketAssign/components/DelegateForm/index.js ***!
@@ -6989,8 +7147,9 @@ __webpack_require__.r(__webpack_exports__);
6989
7147
  /* harmony import */ var _MyOrdersTickets__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../MyOrdersTickets */ "./src/components/MyOrdersTickets/index.js");
6990
7148
  /* harmony import */ var _OrdersList_AssignedToMe__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../OrdersList/AssignedToMe */ "./src/components/OrdersList/AssignedToMe.js");
6991
7149
  /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
6992
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
6993
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__);
7150
+ /* harmony import */ var _TabWrapper__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../TabWrapper */ "./src/components/TabWrapper/index.js");
7151
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
7152
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__);
6994
7153
 
6995
7154
 
6996
7155
 
@@ -7001,10 +7160,8 @@ __webpack_require__.r(__webpack_exports__);
7001
7160
 
7002
7161
 
7003
7162
 
7004
- const WidgetTabs = _ref => {
7005
- let {
7006
- title
7007
- } = _ref;
7163
+
7164
+ const WidgetTabs = () => {
7008
7165
  const {
7009
7166
  t
7010
7167
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)();
@@ -7021,7 +7178,7 @@ const WidgetTabs = _ref => {
7021
7178
  } = (0,react_redux__WEBPACK_IMPORTED_MODULE_2__.useSelector)(state => state.widgetState);
7022
7179
  const theme = (0,_mui_material__WEBPACK_IMPORTED_MODULE_3__.useTheme)();
7023
7180
  const isMobile = (0,_mui_material__WEBPACK_IMPORTED_MODULE_3__.useMediaQuery)(theme.breakpoints.down("lg"));
7024
- const handleTabChange = (_, newTab) => {
7181
+ const handleTabChange = (ev, newTab) => {
7025
7182
  setTab(newTab);
7026
7183
  };
7027
7184
  const fetchAssignedTickets = page => dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.getUserTickets)({
@@ -7059,29 +7216,31 @@ const WidgetTabs = _ref => {
7059
7216
  }
7060
7217
  }
7061
7218
  }, [ticketsFullyLoaded]);
7062
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
7219
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
7063
7220
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_5__.tabWrapper,
7064
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Tabs, {
7221
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Tabs, {
7065
7222
  value: tab,
7066
7223
  onChange: handleTabChange,
7067
7224
  variant: isMobile ? "fullWidth" : "standard",
7068
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Tab, {
7225
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Tab, {
7069
7226
  label: t("orders.title"),
7070
7227
  value: _utils_constants__WEBPACK_IMPORTED_MODULE_4__.TABS.ORDERS
7071
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Tab, {
7228
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Tab, {
7072
7229
  label: t("labels.assigned_to_me"),
7073
7230
  value: _utils_constants__WEBPACK_IMPORTED_MODULE_4__.TABS.TICKETS
7074
7231
  })]
7075
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Divider, {}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
7076
- sx: {
7077
- pt: 6,
7078
- pb: 3
7079
- },
7080
- children: title
7081
- }), tab === _utils_constants__WEBPACK_IMPORTED_MODULE_4__.TABS.ORDERS && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_MyOrdersTickets__WEBPACK_IMPORTED_MODULE_6__["default"], {
7082
- fetchData: fetchOrderTickets
7083
- }), tab === _utils_constants__WEBPACK_IMPORTED_MODULE_4__.TABS.TICKETS && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrdersList_AssignedToMe__WEBPACK_IMPORTED_MODULE_7__["default"], {
7084
- fetchData: fetchAssignedTickets
7232
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Divider, {}), tab === _utils_constants__WEBPACK_IMPORTED_MODULE_4__.TABS.ORDERS && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_TabWrapper__WEBPACK_IMPORTED_MODULE_9__["default"], {
7233
+ tab: _utils_constants__WEBPACK_IMPORTED_MODULE_4__.TABS.ORDERS,
7234
+ setTab: setTab,
7235
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_MyOrdersTickets__WEBPACK_IMPORTED_MODULE_6__["default"], {
7236
+ fetchData: fetchOrderTickets
7237
+ })
7238
+ }), tab === _utils_constants__WEBPACK_IMPORTED_MODULE_4__.TABS.TICKETS && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_TabWrapper__WEBPACK_IMPORTED_MODULE_9__["default"], {
7239
+ tab: _utils_constants__WEBPACK_IMPORTED_MODULE_4__.TABS.TICKETS,
7240
+ setTab: setTab,
7241
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_10__.jsx)(_OrdersList_AssignedToMe__WEBPACK_IMPORTED_MODULE_7__["default"], {
7242
+ fetchData: fetchAssignedTickets
7243
+ })
7085
7244
  })]
7086
7245
  });
7087
7246
  };
@@ -7113,11 +7272,10 @@ __webpack_require__.r(__webpack_exports__);
7113
7272
  /* harmony import */ var _CustomDialog_Context__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../CustomDialog/Context */ "./src/components/CustomDialog/Context.js");
7114
7273
  /* harmony import */ var _CustomDialog__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../CustomDialog */ "./src/components/CustomDialog/index.js");
7115
7274
  /* harmony import */ var _Filters__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../Filters */ "./src/components/Filters/index.js");
7116
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/WidgetWrapper/styles.module.scss");
7117
- /* harmony import */ var _WidgetTabs__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../WidgetTabs */ "./src/components/WidgetTabs/index.js");
7118
- /* harmony import */ var _SummitHeader__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../SummitHeader */ "./src/components/SummitHeader/index.js");
7119
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
7120
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__);
7275
+ /* harmony import */ var _WidgetTabs__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../WidgetTabs */ "./src/components/WidgetTabs/index.js");
7276
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/WidgetWrapper/styles.module.scss");
7277
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
7278
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__);
7121
7279
  /**
7122
7280
  * Copyright 2024 OpenStack Foundation
7123
7281
  * Licensed under the Apache License, Version 2.0 (the "License");
@@ -7143,7 +7301,6 @@ __webpack_require__.r(__webpack_exports__);
7143
7301
 
7144
7302
 
7145
7303
 
7146
-
7147
7304
  const WidgetWrapper = () => {
7148
7305
  const {
7149
7306
  t
@@ -7176,10 +7333,10 @@ const WidgetWrapper = () => {
7176
7333
  const onSort = sortValue => {
7177
7334
  dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_4__.changeSort)(sortValue));
7178
7335
  };
7179
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsxs)(_CustomTheme__WEBPACK_IMPORTED_MODULE_5__["default"], {
7180
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_Loader__WEBPACK_IMPORTED_MODULE_6__["default"], {
7336
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsxs)(_CustomTheme__WEBPACK_IMPORTED_MODULE_5__["default"], {
7337
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Loader__WEBPACK_IMPORTED_MODULE_6__["default"], {
7181
7338
  open: loading
7182
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_CustomDialog__WEBPACK_IMPORTED_MODULE_8__["default"], {
7339
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_CustomDialog__WEBPACK_IMPORTED_MODULE_8__["default"], {
7183
7340
  open: !!message,
7184
7341
  onClose: () => {
7185
7342
  setMessage(null);
@@ -7187,12 +7344,12 @@ const WidgetWrapper = () => {
7187
7344
  },
7188
7345
  body: message === null || message === void 0 ? void 0 : message.body,
7189
7346
  title: message === null || message === void 0 ? void 0 : message.title
7190
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_Filters__WEBPACK_IMPORTED_MODULE_9__["default"], {
7347
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_Filters__WEBPACK_IMPORTED_MODULE_9__["default"], {
7191
7348
  onFilter: onFilter,
7192
7349
  onSort: onSort,
7193
7350
  onSearch: onFilter,
7194
7351
  onReset: onReset
7195
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
7352
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
7196
7353
  sx: {
7197
7354
  padding: {
7198
7355
  xs: 2,
@@ -7200,17 +7357,15 @@ const WidgetWrapper = () => {
7200
7357
  lg: 0
7201
7358
  }
7202
7359
  },
7203
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)("h3", {
7204
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.ticketsTitleText,
7360
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)("h3", {
7361
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_11__.ticketsTitleText,
7205
7362
  children: filterValues ? t("labels.search_results", {
7206
7363
  filter: filterValues
7207
7364
  }) : t("labels.tickets")
7208
7365
  })
7209
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_CustomDialog_Context__WEBPACK_IMPORTED_MODULE_7__["default"].Provider, {
7366
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_CustomDialog_Context__WEBPACK_IMPORTED_MODULE_7__["default"].Provider, {
7210
7367
  value: (setMessage, setMessageCallback),
7211
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_WidgetTabs__WEBPACK_IMPORTED_MODULE_11__["default"], {
7212
- title: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_13__.jsx)(_SummitHeader__WEBPACK_IMPORTED_MODULE_12__["default"], {})
7213
- })
7368
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_12__.jsx)(_WidgetTabs__WEBPACK_IMPORTED_MODULE_10__["default"], {})
7214
7369
  })]
7215
7370
  });
7216
7371
  };
@@ -7517,6 +7672,7 @@ const DEFAULT_STATE = {
7517
7672
  current_tab: _utils_constants__WEBPACK_IMPORTED_MODULE_4__.TABS.ORDERS,
7518
7673
  sort: {},
7519
7674
  filter: DEFAULT_FILTER_STATE,
7675
+ activeFiltersCount: 0,
7520
7676
  orders_current_page: 0,
7521
7677
  orders_last_page: 0,
7522
7678
  orders_per_page: 5,
@@ -7556,9 +7712,11 @@ const WidgetReducer = function () {
7556
7712
  case _actions__WEBPACK_IMPORTED_MODULE_3__.RESET_FILTER:
7557
7713
  return _objectSpread(_objectSpread({}, state), {}, {
7558
7714
  filter: DEFAULT_FILTER_STATE,
7715
+ activeFiltersCount: 0,
7559
7716
  sort: {},
7560
7717
  orders_current_page: 1,
7561
- orders_last_page: 1
7718
+ orders_last_page: 1,
7719
+ loading: true
7562
7720
  });
7563
7721
  case _actions__WEBPACK_IMPORTED_MODULE_3__.SET_STATE:
7564
7722
  return _objectSpread(_objectSpread({}, state), payload);
@@ -7581,8 +7739,11 @@ const WidgetReducer = function () {
7581
7739
  });
7582
7740
  case _actions__WEBPACK_IMPORTED_MODULE_3__.CHANGE_FILTER:
7583
7741
  {
7742
+ const newFilters = _objectSpread(_objectSpread({}, state.filter), payload);
7743
+ const newActiveCount = (0,_utils__WEBPACK_IMPORTED_MODULE_5__.calculateActiveFilters)(newFilters);
7584
7744
  return _objectSpread(_objectSpread({}, state), {}, {
7585
- filter: _objectSpread(_objectSpread({}, state.filter), payload)
7745
+ filter: _objectSpread(_objectSpread({}, state.filter), payload),
7746
+ activeFiltersCount: newActiveCount
7586
7747
  });
7587
7748
  }
7588
7749
  case _actions__WEBPACK_IMPORTED_MODULE_3__.CHANGE_SORT:
@@ -7640,15 +7801,19 @@ const WidgetReducer = function () {
7640
7801
  var _data$;
7641
7802
  return o.id === ((_data$ = data[0]) === null || _data$ === void 0 ? void 0 : _data$.order_id);
7642
7803
  });
7643
- if ((0,_utils__WEBPACK_IMPORTED_MODULE_5__.hasLoadedAllData)(current_page, formerOrder === null || formerOrder === void 0 ? void 0 : formerOrder.memberTickets, total)) return state;
7644
- const updatedOrder = _objectSpread(_objectSpread({}, formerOrder), {}, {
7645
- memberTickets: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_4__.FIRST_PAGE ? data : [...formerOrder.memberTickets, ...data],
7646
- tickets_page_current: current_page,
7647
- tickets_page_last: last_page,
7648
- tickets_total: total
7804
+ const newOrders = memberOrders.map(mo => {
7805
+ var _data$2;
7806
+ if (mo.id !== ((_data$2 = data[0]) === null || _data$2 === void 0 ? void 0 : _data$2.order_id)) return mo;
7807
+ const newTickets = current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_4__.FIRST_PAGE ? data : [...formerOrder.memberTickets, ...data];
7808
+ return _objectSpread(_objectSpread({}, mo), {}, {
7809
+ memberTickets: newTickets,
7810
+ tickets_page_current: current_page,
7811
+ tickets_page_last: last_page,
7812
+ tickets_total: total
7813
+ });
7649
7814
  });
7650
7815
  return _objectSpread(_objectSpread({}, state), {}, {
7651
- memberOrders: memberOrders.map(mo => mo.id === updatedOrder.id ? updatedOrder : mo)
7816
+ memberOrders: newOrders
7652
7817
  });
7653
7818
  }
7654
7819
  case _actions__WEBPACK_IMPORTED_MODULE_3__.UPDATE_TICKETS_REFUND_REQUESTED:
@@ -7939,6 +8104,7 @@ const TABS = {
7939
8104
 
7940
8105
  __webpack_require__.r(__webpack_exports__);
7941
8106
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8107
+ /* harmony export */ calculateActiveFilters: () => (/* binding */ calculateActiveFilters),
7942
8108
  /* harmony export */ calculateOrderTotals: () => (/* binding */ calculateOrderTotals),
7943
8109
  /* harmony export */ defaultCurrentTime: () => (/* binding */ defaultCurrentTime),
7944
8110
  /* harmony export */ formatCurrency: () => (/* binding */ formatCurrency),
@@ -8070,6 +8236,20 @@ const hasLoadedAllData = (currentPage, data, total) => {
8070
8236
  if (currentPage > _constants__WEBPACK_IMPORTED_MODULE_4__.FIRST_PAGE && dataLength > 0 && dataLength === total) res = true;
8071
8237
  return res;
8072
8238
  };
8239
+ const calculateActiveFilters = filters => {
8240
+ let count = 0;
8241
+ Object.entries(filters).forEach(_ref3 => {
8242
+ let [, value] = _ref3;
8243
+ if (Array.isArray(value)) {
8244
+ count += value.length;
8245
+ } else if (typeof value === "string" && value.trim() !== "") {
8246
+ count++;
8247
+ } else if (typeof value === "number" && value > 0) {
8248
+ count++;
8249
+ }
8250
+ });
8251
+ return count;
8252
+ };
8073
8253
 
8074
8254
  /***/ }),
8075
8255
 
@@ -8569,6 +8749,29 @@ var _3 = "noOrdersIconWrapper___tPTmY";
8569
8749
 
8570
8750
 
8571
8751
 
8752
+ /***/ }),
8753
+
8754
+ /***/ "./src/components/NoTicketsFound/styles.module.scss":
8755
+ /*!**********************************************************!*\
8756
+ !*** ./src/components/NoTicketsFound/styles.module.scss ***!
8757
+ \**********************************************************/
8758
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8759
+
8760
+ __webpack_require__.r(__webpack_exports__);
8761
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8762
+ /* harmony export */ body: () => (/* binding */ _1),
8763
+ /* harmony export */ iconWrapper: () => (/* binding */ _2),
8764
+ /* harmony export */ title: () => (/* binding */ _3),
8765
+ /* harmony export */ wrapper: () => (/* binding */ _4)
8766
+ /* harmony export */ });
8767
+ // extracted by mini-css-extract-plugin
8768
+ var _1 = "body___AWdiL";
8769
+ var _2 = "iconWrapper___mzevK";
8770
+ var _3 = "title___M242m";
8771
+ var _4 = "wrapper___QswCP";
8772
+
8773
+
8774
+
8572
8775
  /***/ }),
8573
8776
 
8574
8777
  /***/ "./src/components/OrderSummary/styles.module.scss":
@@ -8619,24 +8822,23 @@ __webpack_require__.r(__webpack_exports__);
8619
8822
  /* harmony export */ disabledRefund: () => (/* binding */ _9),
8620
8823
  /* harmony export */ display_none: () => (/* binding */ _a),
8621
8824
  /* harmony export */ label: () => (/* binding */ _b),
8622
- /* harmony export */ noOrdersIconWrapper: () => (/* binding */ _c),
8623
- /* harmony export */ noTicketsFound: () => (/* binding */ _d),
8624
- /* harmony export */ orderTicketContainer: () => (/* binding */ _e),
8625
- /* harmony export */ orderTicketInfo: () => (/* binding */ _f),
8626
- /* harmony export */ orderTicketInfoContainer: () => (/* binding */ _10),
8627
- /* harmony export */ orderWrapper: () => (/* binding */ _11),
8628
- /* harmony export */ reassignButton: () => (/* binding */ _12),
8629
- /* harmony export */ refundButtons: () => (/* binding */ _13),
8630
- /* harmony export */ refundModal: () => (/* binding */ _14),
8631
- /* harmony export */ selected: () => (/* binding */ _15),
8632
- /* harmony export */ tabButtons: () => (/* binding */ _16),
8633
- /* harmony export */ ticketActionButtons: () => (/* binding */ _17),
8634
- /* harmony export */ ticketListContainer: () => (/* binding */ _18),
8635
- /* harmony export */ ticketNo: () => (/* binding */ _19),
8636
- /* harmony export */ ticketOwnerEmail: () => (/* binding */ _1a),
8637
- /* harmony export */ ticketTicketType: () => (/* binding */ _1b),
8638
- /* harmony export */ viewFinishTicketButton: () => (/* binding */ _1c),
8639
- /* harmony export */ viewMoreButton: () => (/* binding */ _1d)
8825
+ /* harmony export */ orderTicketContainer: () => (/* binding */ _c),
8826
+ /* harmony export */ orderTicketInfo: () => (/* binding */ _d),
8827
+ /* harmony export */ orderTicketInfoContainer: () => (/* binding */ _e),
8828
+ /* harmony export */ orderWrapper: () => (/* binding */ _f),
8829
+ /* harmony export */ reassignButton: () => (/* binding */ _10),
8830
+ /* harmony export */ refundButtons: () => (/* binding */ _11),
8831
+ /* harmony export */ refundModal: () => (/* binding */ _12),
8832
+ /* harmony export */ selected: () => (/* binding */ _13),
8833
+ /* harmony export */ tabButtons: () => (/* binding */ _14),
8834
+ /* harmony export */ ticketActionButtons: () => (/* binding */ _15),
8835
+ /* harmony export */ ticketFooter: () => (/* binding */ _16),
8836
+ /* harmony export */ ticketListContainer: () => (/* binding */ _17),
8837
+ /* harmony export */ ticketNo: () => (/* binding */ _18),
8838
+ /* harmony export */ ticketOwnerEmail: () => (/* binding */ _19),
8839
+ /* harmony export */ ticketTicketType: () => (/* binding */ _1a),
8840
+ /* harmony export */ viewFinishTicketButton: () => (/* binding */ _1b),
8841
+ /* harmony export */ viewMoreButton: () => (/* binding */ _1c)
8640
8842
  /* harmony export */ });
8641
8843
  // extracted by mini-css-extract-plugin
8642
8844
  var _1 = "assignTicketButton___zzLsc";
@@ -8650,24 +8852,23 @@ var _8 = "checkbox___XZJpb";
8650
8852
  var _9 = "disabledRefund___Sffl7";
8651
8853
  var _a = "display_none___CqpL3";
8652
8854
  var _b = "label___zXDWz";
8653
- var _c = "noOrdersIconWrapper___efyrp";
8654
- var _d = "noTicketsFound___jLoco";
8655
- var _e = "orderTicketContainer___ZJLzk";
8656
- var _f = "orderTicketInfo___gemqB";
8657
- var _10 = "orderTicketInfoContainer____p66V";
8658
- var _11 = "orderWrapper___yDBAo";
8659
- var _12 = "reassignButton___RojM5";
8660
- var _13 = "refundButtons___jDl4H";
8661
- var _14 = "refundModal___EqgPF";
8662
- var _15 = "selected___HWGNc";
8663
- var _16 = "tabButtons___xTyJA";
8664
- var _17 = "ticketActionButtons___rpSMQ";
8665
- var _18 = "ticketListContainer___cfmrr";
8666
- var _19 = "ticketNo___a2iM9";
8667
- var _1a = "ticketOwnerEmail___Zt4OE";
8668
- var _1b = "ticketTicketType___Zq_f0";
8669
- var _1c = "viewFinishTicketButton___HF6Im";
8670
- var _1d = "viewMoreButton___K_1zT";
8855
+ var _c = "orderTicketContainer___ZJLzk";
8856
+ var _d = "orderTicketInfo___gemqB";
8857
+ var _e = "orderTicketInfoContainer____p66V";
8858
+ var _f = "orderWrapper___yDBAo";
8859
+ var _10 = "reassignButton___RojM5";
8860
+ var _11 = "refundButtons___jDl4H";
8861
+ var _12 = "refundModal___EqgPF";
8862
+ var _13 = "selected___HWGNc";
8863
+ var _14 = "tabButtons___xTyJA";
8864
+ var _15 = "ticketActionButtons___rpSMQ";
8865
+ var _16 = "ticketFooter___j3bdi";
8866
+ var _17 = "ticketListContainer___cfmrr";
8867
+ var _18 = "ticketNo___a2iM9";
8868
+ var _19 = "ticketOwnerEmail___Zt4OE";
8869
+ var _1a = "ticketTicketType___Zq_f0";
8870
+ var _1b = "viewFinishTicketButton___HF6Im";
8871
+ var _1c = "viewMoreButton___K_1zT";
8671
8872
 
8672
8873
 
8673
8874
 
@@ -9458,7 +9659,7 @@ module.exports = require("yup");
9458
9659
  \**********************************/
9459
9660
  /***/ ((module) => {
9460
9661
 
9461
- module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
9662
+ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!","view_more":"View more","view_less":"View less","contact_support":"contact support"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders..."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear","clear_filters":"Clear Filters"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}},"no_results":{"assigned":{"title":"No tickets found assigned to you","body":"We did not find any tickets assigned to this account.\\n You may still have orders with tickets assigned to others.\\n If this seems incorrect please "},"filter":{"title":"No results found","body":"Try using fewer filters or clearing them to see more results."},"orders":{"title":"No orders found","body":"We did not find any orders associated with your account.\\nYou may still have tickets assigned to you.\\nIf this seems incorrect please "}}}');
9462
9663
 
9463
9664
  /***/ }),
9464
9665
 
@@ -9468,7 +9669,7 @@ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sig
9468
9669
  \**********************************/
9469
9670
  /***/ ((module) => {
9470
9671
 
9471
- module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders-tickets":{"loading":"Loading your orders and tickets...","empty-title":"It appears you have not placed any orders and no tickets have been assigned to you.","empty-text":"If you believe this is incorrect please email <a href=\\"mailto:{{support_email}}\\">{{support_email}}</a>. Thank you!","view_more":"View more","view_less":"View less"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders...","no_orders":"No results found."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response","no_tickets":"No results found."},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}}}');
9672
+ module.exports = /*#__PURE__*/JSON.parse('{"landing":{"sign_out":"Sign out","sign_in":"FNid Sign In","not_logged_in":"You are not logged in. Please log in to continue:"},"errors":{"error":"Error","user_not_authz":"Hold on. Your user is not authorized!.","user_not_set":"Hold on. Can not get any valid user.","session_expired":"Hold on. Your session expired!","server_error":"There was a problem with our server, please contact admin.","not_allowed":"You are not allowed here, please login with another user to access this page.","refund_unsuccessful":"Some of the refund requests were unsucessful. Please try again."},"general":{"continue":"Continue","save_and_continue":"Save and Continue","back":"Back","pay_now":"Pay Now","confirm":"Confirm","yes":"Yes","no":"No","cancel":"Cancel","finish":"Finish","copy_to_clipboard":"Copy to clipboard","copied":"Copied!","view_more":"View more","view_less":"View less","contact_support":"contact support"},"labels":{"tickets":"Tickets","summary":"Summary","assigned_to_me":"Assigned Tickets","search_results":"Search results for {{filter}}"},"order_summary":{"order_summary":"Order Summary","order_no":"Order number","discounts":"Discount","refunds":"Refund","request_refund":"Request a Refund","refund_details":"Your Refund Details","taxes":"Taxes","total":"Total Due","amount_paid":"Amount Paid","copy_order_number":"Copy Order Number"},"event_info":{"about_title":"About the event","about_desc":"a description","directions":"Get Directions","calendar":"Add to Calendar"},"step_one":{"choose_tickets":"Choose your ticket(s)","choose_tickets_desc":"a description","expiration":"Ticket(s) available until ","free":"Free","sold_out":"Sold Out","no_tickets":"No tickets for sale!","getfnid":"Create an FNid","signin":"Sign In"},"step_two":{"basic_info":"Purchaser Information","required":"Required fields","have_account":"Do you have an FNid account?","sign_in":"Sign in","sign_in_account":"to autopopulate this info and manage this order.","first_name":"First Name","last_name":"Last Name","email":"Email","company":"Company","tickets":"Tickets","ticket":"Ticket","asterisks_bold":"NOTE: Ticket(s) can be assigned later.","asterisks":"Ticket holders will immediately receive an email to finalize their attendee information.","code":"Promo Code:","assign":"Assign to:","add_ticket":"Add additional ticket(s) to this order","no_tickets":"No tickets selected.","disclaimer_in_person_title":"Attention","placeholders":{"coupon":"Coupon (Optional)","email":"Attendee Email (Optional)"},"validator":{"first_name":"Please enter your First Name.","last_name":"Please enter your Last Name.","company":"Please enter your Company.","email":"Please enter a valid Email."}},"step_three":{"payment_info":"Payment Information","required":"Required fields","payment_subtitle":"a subtitle...","cardholder_name":"Cardholder Name","card_number":"Card Number","expiration":"Expiration & Code","billing_info":"Billing Information","billing_subtitle":"a subtitle...","billing_country":"Country","billing_address":"Address","billing_address_two":"Address 2","billing_city":"City","billing_state":"State","billing_zipcode":"ZIP Code","stripe_errors":{"cardNumber":"Please enter a valid Credit Card.","cardExpiry":"Please enter the card expiration.","cardCvc":"Please enter the card cvc."},"validator":{"billing_country":"Please enter the billing Country.","billing_address":"Please enter the billing Address.","billing_city":"Please enter the billing City.","billing_state":"Please enter the billing State.","billing_zipcode":"Please enter the billing ZipCode."}},"step_four":{"thank_you":"Thank you for your order!","subtitle":"Your Order is Now Complete","member_exclamation":"You are signed in with your FNid and will use it to log in to the event on show days. ","member_text":"You may proceed directly to the \\"","member_link_tickets":"My Tickets","member_text_1":"\\" page to review your ticket(s) and complete any required details. Visit the \\"","member_link_orders":"My Orders","member_text_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","required_text":"PLEASE NOTE! Ticket(s) must be assigned and all additional details must be completed before official ticket(s) are issued.","register_text":"An FNid is required to manage order(s) and assign ticket(s) ","register_link_text":"create one","register_text_2":" with the email ","register_text_3":" used for this purchase, you will then be able to manage your order.","register_email_bold":"You will now receive an email with a one-click link to create a password for your FNid.","register_email_1":"Your FNid will allow you to access the event. Visit the \\"","register_email_orders":"My Orders","register_email_2":"\\" page to manage your purchase, assign ticket(s), and edit attendee details.","help_text":"For further assistance, please email ","order_no":"ORDER NUMBER","manage":"My Orders","getfnid":"Create an FNid","signin":"Sign In"},"guests":{"invalid_thanks":"Thanks for coming to fill in the remaining details so we can issue your ticket.","invalid_text_1":"Unfortunately the link in your email has expired. Not to worry we will send you a fresh link. Click here or the button below to get a new link.","invalid_button":"Send New Link","invalid_contact":"If you have any problems please email","hash_regenerated":"Please check your new link in your email","completed_text_1":"Thank you for completing your additional details. Your ticket has now been issued. Please use your FNid to access the event.","completed_button":"Download Ticket to","completed_text_2":"You will also receive an email confirmation.","cancel":"Cancel","save":"Save"},"orders":{"title":"My Orders with Tickets","purchased":"Purchased on","empty":"There are no active orders so far","loading":"Loading orders..."},"no-summit":{"not-found":"","select-list":"Please select from available shows:"},"order_info":{"print":"Print","resend":"Resend Receipt","download":"Download Ticket PDF","cancel_order":"Request to Refund All Tickets","cancel_ticket":"Cancel Ticket","email_support":"Email Support","directions":"Get Directions","calendar":"Add to Calendar"},"order_status":{"complete":"Ticket(s) assigned and issued","incomplete":"Additional attendee details required before ticket(s) can be issued","pending":"Pending confirmation","cancelled":"Cancelled","error":"Payment error","processing":"Payment processing","past":"Past"},"tickets":{"title":"External Tickets Assigned to Me","empty":"There are no tickets so far","loading":"Loading tickets...","save_message":"Thank you! Your information has been saved and ticket updated.","assign_success_message":"The ticket was successfully assigned.","reassign_success_message":"The ticket was successfully reassigned.","unassign_success_message":"The ticket was successfully unassigned.","notify_success_message":"Notification was sent to ticket holder.","refund_request_success_1":"Your refund request has been requested successfully","refund_request_success_2":"Please allow 24 - 48 hours for a response"},"ticket_status":{"unassigned":"Unassigned","incomplete":"Required details needed","complete":"Ready to use","cancelled":"Cancelled","past":"Past","ticket_no":"Ticket #","assigned_to":"Assigned to","assigned_by":"Assigned by","manage_for":"Manage for","attendee_status_unassigned":"Attendee unassigned","view_tickets":"View Tickets","hide_tickets":"Hide Tickets","view_ticket":"View Ticket","reassign_ticket":"Reassign","assign_ticket":"Assign Ticket","status_unassigned":"Unassigned","status_complete":"Completed","status_incomplete":"Incomplete","status_refund_requested":"Refund Requested","status_details_required":"Some tickets in this order require additional details before the ticket(s) can be issued.","status_cancelled":"Cancelled","finish_ticket":"Finish Ticket","select_ticket_refund":"Select the ticket(s) for a refund:","select_all":"Select All","select_cancel":"Cancel","copy_ticket_number":"Copy Ticket Number","refund_request_approved":"Approved","refund_request_rejected":"Rejected","refund_request_pending":"Requested"},"nav_bar":{"my-orders":"My Orders","my-tickets":"My Tickets"},"ticket_popup":{"tab_assign":"Assign","tab_reassign":"Reassign","tab_refund":"Refund","tab_edit":"Edit Details","tab_edit_read_only":"Details","tab_notify":"Notify Ticket Holder","assign_text":"Select the option to assign this ticket","assign_or":"Or","assign_me":"Assign to Me","assign_this":"Assign this Ticket","assign_want_text":"I want to assign this ticket to someone else!","assign_someone":"Assign to this person","assign_ticket":"Assign this Ticket","assign_expire":"Ability to assign ticket expires in ","assign_days":"days","reassign_printed_ticket":"Ticket may not be reassigned because this badge has already been printed.","reassign_text":"Select the option to reassign this ticket from","reassign_want_text":"I want to reassign this ticket to someone else!","reassign_before":"before","reassign_enter_email":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","reassign_check":"Clean all fields","reassign_me":"Reassign to Me","reassign_someone":"Reassign to this person","edit_basic_info":"Attendee Information","edit_required":"Required","edit_email":"Ticket assigned to email:","assign_note":"Note: Should the ticket holder wish to change their name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","edit_first_name":"First Name","edit_first_name_placeholder":"Attendee First Name","edit_last_name":"Last Name","edit_last_name_placeholder":"Attendee Last Name","edit_company":"Company","edit_company_placeholder":"Attendee Company","edit_required_star":"*","edit_preferences":"Additional Details","notify_text_1":"All required details must be completed before","notify_text_2":"Clicking the \\"Resend Notification\\" button will generate an email to","notify_text_3":"with instructions on how to provide their required attendee information. Once the details are complete, their official ticket will be issued and sent to","notify_message":"Personal Message","notify_message_condition":"(Optional)","notify_button":"Resend Notification","cancel_ticket":"Request a refund for this ticket","save_changes":"Save Changes","saving_changes":"Saving Changes","do_it_later":"Do this later","do_it_later_exp":"You may fill in the required information now or complete this step on the \'My Orders\' page later."},"confirm_popup":{"question_title_cancel":"Refund Ticket","question_text_select_refund":"Select the ticket you want a refund","question_text_confirm_refund":"Are you sure you want to request a refund for the below ticket(s)?","question_text_cancel":"Are you sure you want to request a refund of this ticket?","question_title_cancel_order":"Refund Order","question_text_cancel_order":"Are you sure you want to request a refund of this entire order ?","question_title_assign":"Assign Request","question_text_assign":"Are you sure you want to clean all the fields?","question_title_unassign":"Unassign Request","question_text_unassign":"Are you sure you want to unassign this ticket?","question_title_reassign":"Reassign Request","question_text_reassign":"Are you sure you want to reassign this ticket?","question_title_save":"Save","question_text_save":"","question_title_notification":"Notification Request","question_text_notification":"","question_text_confirm":"Are you sure?","cancel":"Cancel","accept":"Yes","success_title":"Request Submitted","success_text":"An email notification has been sent to","success_button":"Got it"},"invitees":{"validation_error":"Invitation error","entity_not_found":"Invitation not found"},"signin":{"add_code_title_p1":"Add the","add_code_title_p2":"digit code below","email_reception_error_p1":"Didn\'t receive it? Check your spam folder or","email_reception_error_p2":"resend email","email_sent":"We\'ve sent a code to the email","go_back_title_p1":"or go back and","go_back_title_p2":"try another way","invalid_email_addr":"Please enter a valid email adress","login_with_title":"Log in with one of the following","retry":"Please try again.","send_code_option":"or get a login code emailed to you","verify_btn":"Verify","wrong_code":"The code you entered is incorrect.","fn_login_btn":"Continue with FNid","fb_login_btn":"Continue with Facebook","ln_login_btn":"Sign in with LinkedIn","ap_login_btn":"Continue with Apple","ok_login_btn":"Continue with Okta"},"logout_popup":{"title":"Re-login required","message":"You are not logged in anymore. Please log in to continue.","close_btn":"Re-login"},"filter":{"filter":"Filter","purchased_on":"Purchased on","clear":"Clear","clear_filters":"Clear Filters"},"sort":{"sort":"Sort","new_first":"Newest first","old_first":"Oldest first"},"order_search":{"order_number":"Search order number"},"ticket_detail":{"purchased_by":"Purchased by","status":"ready to use","qr_note":"When you check in you will be able to scan the QR code directly from your device. Or you can:","download":"Download","send":"Send to email","sent":"Email sent!","attendee_information":"Attendee Information","email":"Email","manage_for":"Manage for: ","first_name":"First Name","last_name":"Last Name","attendee_first_name":"First Name","attendee_last_name":"Last Name","attendee_company":"Company","delegated_to":"Delegated to:","aditional_details":"Additional details","save":"save changes","cancel":"cancel","info_note":"Note: Should the ticket holder wish to change name or company info, they can do so by logging into the event site and clicking on the profile icon (located on the far right of the top navigation bar).","saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"ticket_assign":{"header_assign":{"title":"Assign ticket","purchased_by":"Purchased by","assigned_to":"This ticket have been assigned to","delegated":"This ticket was assigned to you so you can manage it on behalf of","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"header_reassign":{"title":"REASSIGN ticket","choose_option":"Below you can assign the ticket to yourself, assign it to someone else, or manage the ticket for someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","choose_option_no_delegate":"Below you can assign the ticket to yourself or assign it to someone else. We will notify the previous ticketholder via email that the ticket is no longer assigned to them.","assigned_to":"This ticket is currently assigned to","reassigned_to":"You have assigned the ticket to","delegated":"You are now managing the ticket for","yourself":"yourself","answer_your_eq":"You may enter the required information now to complete the ticket, or you may select \\"Complete Later\\".","answer_others_eq":"You may enter the required information for them to complete the ticket, or select \\"Complete Later\\" to let them do it.","complete_later":"Complete Later"},"assign_to_me":"Assign to me","assign_to_other":"Assign to someone else","manage_ticket":"Manage ticket for someone else","reassign_form":{"title":"I want to assign this ticket to someone else:","body":"Enter the email of the person you would like to assign the ticket to below. Please note! An email will be sent to the below address with instructions on how to complete any additional information required to issue their ticket.","new_attendee_email":"New attendee email","personal_message":"Personal Message (optional)","cancel":"cancel","save":"assign to this person"},"delegate_form":{"first_name":"First Name","last_name":"Last Name","email":"Email (optional)","title":"I want to manage this ticket for someone else:","body":"Enter the name of the person you would like to manage the ticket for below. Managing a ticket keeps it under your control. To give someone control you should assign it to the person instead.","save":"MANAGE FOR THIS PERSON","cancel":"cancel"},"extra_questions_form":{"cancel":"complete later","save":"save","disclaimer_label":"I agree with the above."},"saving_error":"Error saving ticket","saving_success":"Ticket Saved!","saving_success_description":"ticket saved successfully"},"validation":{"required_question":"This question is required","required_field":"Required field","first_name":{"string":"Enter first name","required":"First name is required"},"last_name":{"string":"Enter last name","required":"Last name is required"},"email":{"string":"Enter email","format":"Must be a valid email address","required":"Email is required"},"text":{"string":"Enter text"},"checkbox":{"required":"Field must be checked"},"company":{"required":"Company is required"}},"no_results":{"assigned":{"title":"No tickets found assigned to you","body":"We did not find any tickets assigned to this account.\\n You may still have orders with tickets assigned to others.\\n If this seems incorrect please "},"filter":{"title":"No results found","body":"Try using fewer filters or clearing them to see more results."},"orders":{"title":"No orders found","body":"We did not find any orders associated with your account.\\nYou may still have tickets assigned to you.\\nIf this seems incorrect please "}}}');
9472
9673
 
9473
9674
  /***/ })
9474
9675
 
@@ -9648,4 +9849,4 @@ MyOrdersMyTicketsWidget.propTypes = {
9648
9849
  /******/ })()
9649
9850
  ;
9650
9851
  });
9651
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNELE87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGdUQ7QUFDMUI7QUFDaUQ7QUFDTTtBQUNyQztBQUNwQjtBQUM0QztBQVE1QztBQUVwQixNQUFNb0IsV0FBVyxHQUFHLGFBQWE7QUFDakMsTUFBTUMsWUFBWSxHQUFHLGNBQWM7QUFDbkMsTUFBTUMsZUFBZSxHQUFHLGlCQUFpQjtBQUN6QyxNQUFNQyxTQUFTLEdBQUcsV0FBVztBQUM3QixNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxXQUFXLEdBQUcsYUFBYTs7QUFFeEM7QUFDTyxNQUFNQyxlQUFlLEdBQUcsWUFBWTtBQUNwQyxNQUFNQyxZQUFZLEdBQUcsY0FBYztBQUNuQyxNQUFNQyxtQkFBbUIsR0FBRyxxQkFBcUI7QUFDakQsTUFBTUMsa0JBQWtCLEdBQUcsb0JBQW9COztBQUV0RDtBQUNPLE1BQU1DLHVCQUF1QixHQUFHLHlCQUF5QjtBQUN6RCxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxZQUFZLEdBQUcsY0FBYztBQUNuQyxNQUFNQyxjQUFjLEdBQUcsZ0JBQWdCO0FBQ3ZDLE1BQU1DLHNCQUFzQixHQUFHLHdCQUF3QjtBQUN2RCxNQUFNQyxhQUFhLEdBQUcsZUFBZTtBQUNyQyxNQUFNQyxlQUFlLEdBQUcsaUJBQWlCO0FBQ3pDLE1BQU1DLGFBQWEsR0FBRyxlQUFlO0FBQ3JDLE1BQU1DLG1CQUFtQixHQUFHLHFCQUFxQjtBQUNqRCxNQUFNQyxvQkFBb0IsR0FBRyxzQkFBc0I7QUFDbkQsTUFBTUMsMEJBQTBCLEdBQUcsNEJBQTRCO0FBQy9ELE1BQU1DLHdCQUF3QixHQUFHLDBCQUEwQjtBQUMzRCxNQUFNQyxrQkFBa0IsR0FBRyxvQkFBb0I7QUFDL0MsTUFBTUMsdUJBQXVCLEdBQUcseUJBQXlCO0FBQ3pELE1BQU1DLG9CQUFvQixHQUFHO0VBQ2xDQyxLQUFLLEVBQUUsZ0JBQWdCO0VBQ3ZCQyxTQUFTLEVBQUUscUJBQXFCO0VBQ2hDQyxRQUFRLEVBQUUsb0JBQW9CO0VBQzlCQyxPQUFPLEVBQUUsa0JBQWtCO0VBQzNCQyxrQkFBa0IsRUFBRSxxQkFBcUI7RUFDekNDLGNBQWMsRUFBRTtBQUNsQixDQUFDO0FBQ00sTUFBTUMsK0JBQStCLEdBQzFDLGlDQUFpQzs7QUFFbkM7QUFDTyxNQUFNQyx5QkFBeUIsR0FBRywyQkFBMkI7QUFDN0QsTUFBTUMsd0JBQXdCLEdBQUcsMEJBQTBCO0FBQzNELE1BQU1DLGtCQUFrQixHQUFHLG9CQUFvQjtBQUMvQyxNQUFNQyxRQUFRLEdBQUcsVUFBVTs7QUFFbEM7QUFDTyxNQUFNQyxVQUFVLEdBQUcsWUFBWTtBQUMvQixNQUFNQyx3QkFBd0IsR0FBRywwQkFBMEI7QUFDM0QsTUFBTUMsMEJBQTBCLEdBQUcsNEJBQTRCO0FBQy9ELE1BQU1DLHdCQUF3QixHQUFHLDBCQUEwQjtBQUUzRCxNQUFNQyxXQUFXLEdBQUdBLENBQUEsS0FBT0MsUUFBUSxJQUFLO0VBQzdDQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDZ0MsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRU0sTUFBTThCLFVBQVUsR0FBR0EsQ0FBQSxLQUFPRCxRQUFRLElBQUs7RUFDNUNBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUNtQixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFFTSxNQUFNNEMsV0FBVyxHQUFHQSxDQUFBLEtBQU9GLFFBQVEsSUFBSztFQUM3Q0EsUUFBUSxDQUFDN0QsMkZBQVksQ0FBQ29CLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVNLE1BQU00QyxVQUFVLEdBQUdBLENBQUEsS0FBT0gsUUFBUSxJQUFLO0VBQzVDQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDcUIsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBRU0sTUFBTTRDLGVBQWUsR0FBR0EsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLEtBQU1OLFFBQVEsSUFBSztFQUM3REEsUUFBUSxDQUFDN0QsMkZBQVksQ0FBQ3NCLFNBQVMsQ0FBQyxDQUFDO0lBQUU0QyxNQUFNO0lBQUVDO0VBQUssQ0FBQyxDQUFDLENBQUM7QUFDckQsQ0FBQzs7QUFFRDtBQUNPLE1BQU1DLGVBQWUsR0FBRyxpQkFBaUI7QUFDekMsTUFBTUMsd0JBQXdCLEdBQUcsMEJBQTBCO0FBQzNELE1BQU1DLHNCQUFzQixHQUFHLHdCQUF3QjtBQUN2RCxNQUFNQywwQkFBMEIsR0FBRyw0QkFBNEI7QUFDL0QsTUFBTUMsdUJBQXVCLEdBQUcseUJBQXlCO0FBQ3pELE1BQU1DLG9CQUFvQixHQUFHLHNCQUFzQjtBQUNuRCxNQUFNQyxvQkFBb0IsR0FBRyxzQkFBc0I7QUFDbkQsTUFBTUMsdUJBQXVCLEdBQUcseUJBQXlCOztBQUVoRTtBQUNPLE1BQU1DLFlBQVksR0FBSUMsTUFBTSxJQUFNaEIsUUFBUSxJQUFLO0VBQ3BEQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDd0IsYUFBYSxDQUFDLENBQUNxRCxNQUFNLENBQUMsQ0FBQztBQUMvQyxDQUFDO0FBRU0sTUFBTUMsVUFBVSxHQUFJQyxJQUFJLElBQU1sQixRQUFRLElBQUs7RUFDaERBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUN5QixXQUFXLENBQUMsQ0FBQ3NELElBQUksQ0FBQyxDQUFDO0FBQzNDLENBQUM7O0FBRUQ7QUFDQSxNQUFNQyxXQUFXLEdBQUdBLENBQUNDLFNBQVMsRUFBRUMsVUFBVSxLQUFLO0VBQzdDLE1BQU1MLE1BQU0sR0FBRyxFQUFFO0VBQ2pCLElBQUlJLFNBQVMsQ0FBQ2IsZUFBZSxFQUFFO0lBQzdCUyxNQUFNLENBQUNNLElBQUksYUFBQUMsTUFBQSxDQUFhSCxTQUFTLENBQUNJLEtBQUssUUFBQUQsTUFBQSxDQUFLSCxTQUFTLENBQUNLLEtBQUssQ0FBRSxDQUFDO0VBQ2hFO0VBQ0EsSUFDRUwsU0FBUyxDQUFDWix3QkFBd0IsSUFDbENZLFNBQVMsQ0FBQ1osd0JBQXdCLENBQUNrQixNQUFNLEdBQUcsQ0FBQyxFQUM3QztJQUNBLE1BQU1DLFVBQVUsR0FDZE4sVUFBVSxLQUFLaEUsa0RBQUksQ0FBQ3VFLE1BQU0sR0FDdEIsMkJBQTJCLEdBQzNCLG1CQUFtQjtJQUN6QlosTUFBTSxDQUFDTSxJQUFJLElBQUFDLE1BQUEsQ0FDTkksVUFBVSxRQUFBSixNQUFBLENBQUtILFNBQVMsQ0FBQ1osd0JBQXdCLENBQUNxQixJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2pFLENBQUM7RUFDSDtFQUNBLElBQ0VULFNBQVMsQ0FBQ1gsc0JBQXNCLElBQ2hDVyxTQUFTLENBQUNYLHNCQUFzQixDQUFDaUIsTUFBTSxHQUFHLENBQUMsRUFDM0M7SUFDQSxNQUFNQyxVQUFVLEdBQ2ROLFVBQVUsS0FBS2hFLGtEQUFJLENBQUN1RSxNQUFNLEdBQUcsaUJBQWlCLEdBQUcsZ0JBQWdCO0lBQ25FWixNQUFNLENBQUNNLElBQUksSUFBQUMsTUFBQSxDQUNOSSxVQUFVLFFBQUFKLE1BQUEsQ0FBS0gsU0FBUyxDQUFDWCxzQkFBc0IsQ0FBQ29CLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDL0QsQ0FBQztFQUNIO0VBQ0EsSUFBSVQsU0FBUyxDQUFDViwwQkFBMEIsRUFBRTtJQUN4QyxNQUFNaUIsVUFBVSxHQUNkTixVQUFVLEtBQUtoRSxrREFBSSxDQUFDdUUsTUFBTSxHQUFHLHFCQUFxQixHQUFHLGFBQWE7SUFDcEVaLE1BQU0sQ0FBQ00sSUFBSSxJQUFBQyxNQUFBLENBQUlJLFVBQVUsUUFBQUosTUFBQSxDQUFLSCxTQUFTLENBQUNWLDBCQUEwQixDQUFFLENBQUM7RUFDdkU7RUFDQSxJQUFJVSxTQUFTLENBQUNULHVCQUF1QixFQUFFO0lBQ3JDLE1BQU1nQixVQUFVLEdBQ2ROLFVBQVUsS0FBS2hFLGtEQUFJLENBQUN1RSxNQUFNLEdBQUcsc0JBQXNCLEdBQUcsY0FBYztJQUN0RVosTUFBTSxDQUFDTSxJQUFJLElBQUFDLE1BQUEsQ0FBSUksVUFBVSxRQUFBSixNQUFBLENBQUtILFNBQVMsQ0FBQ1QsdUJBQXVCLENBQUUsQ0FBQztFQUNwRTtFQUNBLElBQUlTLFNBQVMsQ0FBQ1Asb0JBQW9CLEVBQUU7SUFDbEMsTUFBTWMsVUFBVSxHQUFHTixVQUFVLEtBQUtoRSxrREFBSSxDQUFDdUUsTUFBTSxHQUFHLFFBQVEsR0FBRyxjQUFjO0lBQ3pFWixNQUFNLENBQUNNLElBQUksSUFBQUMsTUFBQSxDQUNOSSxVQUFVLEVBQUFKLE1BQUEsQ0FBR0gsU0FBUyxDQUFDUCxvQkFBb0IsS0FBSyxNQUFNLEdBQUcsS0FBSyxHQUFHLElBQUksQ0FDMUUsQ0FBQztFQUNIO0VBQ0EsSUFBSU8sU0FBUyxDQUFDUixvQkFBb0IsRUFBRTtJQUNsQyxNQUFNZSxVQUFVLEdBQ2ROLFVBQVUsS0FBS2hFLGtEQUFJLENBQUN1RSxNQUFNLEdBQUcsb0JBQW9CLEdBQUcsWUFBWTtJQUNsRVosTUFBTSxDQUFDTSxJQUFJLElBQUFDLE1BQUEsQ0FBSUksVUFBVSxRQUFBSixNQUFBLENBQUtILFNBQVMsQ0FBQ1Isb0JBQW9CLENBQUUsQ0FBQztFQUNqRTtFQUNBLElBQUlRLFNBQVMsQ0FBQ04sdUJBQXVCLEVBQUU7SUFDckNFLE1BQU0sQ0FBQ00sSUFBSSxZQUFBQyxNQUFBLENBQVlILFNBQVMsQ0FBQ04sdUJBQXVCLENBQUUsQ0FBQztFQUM3RDtFQUNBLE9BQU9FLE1BQU07QUFDZixDQUFDO0FBRUQsTUFBTWMsZ0JBQWdCLEdBQUlDLFNBQVMsSUFBTUEsU0FBUyxLQUFLLEtBQUssR0FBRyxHQUFHLEdBQUcsR0FBSTs7QUFFekU7QUFDQSxNQUFNQyxrQkFBa0IsR0FBR0EsQ0FBQ0MsT0FBTyxFQUFFQyxRQUFRLEtBQU1sQyxRQUFRLElBQUs7RUFDOURBLFFBQVEsQ0FBQzdELDJGQUFZLENBQUN1QixhQUFhLENBQUMsQ0FBQ3VFLE9BQU8sQ0FBQyxDQUFDO0VBQzlDLElBQUlDLFFBQVEsRUFBRUEsUUFBUSxDQUFDLENBQUM7QUFDMUIsQ0FBQztBQUVELE1BQU1DLHNCQUFzQixHQUFHQSxDQUFDQyxHQUFHLEVBQUVDLEdBQUcsS0FBTXJDLFFBQVEsSUFBSztFQUN6REEsUUFBUSxDQUFDOUQsK0ZBQWdCLENBQUNrRyxHQUFHLEVBQUVDLEdBQUcsRUFBRUwsa0JBQWtCLENBQUMsQ0FBQztBQUMxRCxDQUFDO0FBRUQsTUFBTU0sdUJBQXVCLEdBQUlDLFFBQVEsSUFBTXZDLFFBQVEsSUFBSztFQUMxRCxNQUFNd0MsSUFBSSxHQUFHRCxRQUFRLENBQUNFLE1BQU07RUFDNUIsSUFBSUMsR0FBRztFQUNQMUMsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDdkIsUUFBUWdHLElBQUk7SUFDVixLQUFLdkYseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckJ5RixHQUFHLEdBQUc3RixnREFBTSxDQUFDLHVCQUF1QixDQUFDO01BQ3JDO0lBQ0YsS0FBS0kseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckJ5RixHQUFHLEdBQUc3RixnREFBTSxDQUFDLHdCQUF3QixDQUFDO01BQ3RDO0lBQ0YsS0FBS0kseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckJ5RixHQUFHLEdBQUcsRUFBRTtNQUNSRSxNQUFNLENBQUNDLE9BQU8sQ0FBQ04sUUFBUSxDQUFDTyxNQUFNLENBQUMsQ0FBQ0MsT0FBTyxDQUFDQyxJQUFBLElBQWtCO1FBQUEsSUFBakIsQ0FBQ0MsR0FBRyxFQUFFQyxLQUFLLENBQUMsR0FBQUYsSUFBQTtRQUNuRCxJQUFJRyxNQUFNLENBQUNDLEtBQUssQ0FBQ0gsR0FBRyxDQUFDLEVBQUU7VUFDckJQLEdBQUcsTUFBQW5CLE1BQUEsQ0FBTW1CLEdBQUcsT0FBQW5CLE1BQUEsQ0FBSTBCLEdBQUcsT0FBSTtRQUN6QjtRQUVBUCxHQUFHLE1BQUFuQixNQUFBLENBQU1tQixHQUFHLE9BQUFuQixNQUFBLENBQUkyQixLQUFLLFVBQU87TUFDOUIsQ0FBQyxDQUFDO01BQ0Y7SUFDRixLQUFLakcseURBQVcsQ0FBQyxLQUFLLENBQUM7TUFDckJ5RixHQUFHLEdBQUc3RixnREFBTSxDQUFDLHFCQUFxQixDQUFDO01BQ25DO0lBQ0Y7TUFDRTZGLEdBQUcsR0FBR0gsUUFBUSxDQUFDYyxVQUFVO0VBQzdCO0VBRUFyRCxRQUFRLENBQUNnQyxrQkFBa0IsQ0FBQztJQUFFc0IsS0FBSyxFQUFFekcsZ0RBQU0sQ0FBQyxjQUFjLENBQUM7SUFBRTBHLElBQUksRUFBRWI7RUFBSSxDQUFDLENBQUMsQ0FBQztBQUM1RSxDQUFDOztBQUVEO0FBQ08sTUFBTWMsYUFBYSxHQUN4QkMsS0FBQTtFQUFBLElBQUM7SUFDQ0MsSUFBSSxHQUFHdkcsd0RBQVU7SUFDakJ3RyxPQUFPLEdBQUczRyxvRUFBc0I7SUFDaENnRSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ1hFLElBQUksR0FBRyxDQUFDO0VBQ1YsQ0FBQyxHQUFBdUMsS0FBQTtFQUFBLE9BQ0QsT0FBT3pELFFBQVEsRUFBRTRELFFBQVEsRUFBQUMsS0FBQSxLQUFxQjtJQUFBLElBQW5CO01BQUVDO0lBQVcsQ0FBQyxHQUFBRCxLQUFBO0lBQ3ZDLE1BQU07TUFDSkUsV0FBVyxFQUFFO1FBQUUxRDtNQUFPO0lBQ3hCLENBQUMsR0FBR3VELFFBQVEsQ0FBQyxDQUFDO0lBRWQsTUFBTUksV0FBVyxHQUFHLE1BQU1qSCxpRUFBb0IsQ0FBQyxDQUFDO0lBRWhELElBQUksQ0FBQ2lILFdBQVcsRUFBRSxPQUFPbEgsOERBQWlCLENBQUMsQ0FBQztJQUU1Q2tELFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU0wSCxNQUFNLEdBQUc7TUFDYkMsWUFBWSxFQUFFRixXQUFXO01BQ3pCRyxLQUFLLEVBQUUsVUFBVTtNQUNqQixVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUM7TUFDNUJDLFNBQVMsRUFBRSxNQUFNO01BQ2pCVixJQUFJO01BQ0pXLFFBQVEsRUFBRVY7SUFDWixDQUFDO0lBRUQsSUFBSWYsTUFBTSxDQUFDMEIsSUFBSSxDQUFDdEQsTUFBTSxDQUFDLENBQUNVLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDbEMsTUFBTTZDLE9BQU8sR0FBR3BELFdBQVcsQ0FBQ0gsTUFBTSxFQUFFM0Qsa0RBQUksQ0FBQ3VFLE1BQU0sQ0FBQztNQUNoRHFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUdBLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHTSxPQUFPLENBQUM7SUFDMUQ7SUFDQSxJQUFJM0IsTUFBTSxDQUFDMEIsSUFBSSxDQUFDcEQsSUFBSSxDQUFDLENBQUNRLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDaEN1QyxNQUFNLENBQUNFLEtBQUssTUFBQTVDLE1BQUEsQ0FBTU8sZ0JBQWdCLENBQUNaLElBQUksQ0FBQ2EsU0FBUyxDQUFDLEVBQUFSLE1BQUEsQ0FBR0wsSUFBSSxDQUFDc0QsSUFBSSxDQUFFO0lBQ2xFO0lBRUEsT0FBT25JLHlGQUFVLENBQ2YsSUFBSSxFQUNKRiwyRkFBWSxDQUFDMEIsZUFBZSxDQUFDLEtBQUEwRCxNQUFBLENBQzFCdUMsVUFBVSxzQkFBQXZDLE1BQUEsQ0FBbUJsQixNQUFNLENBQUNvRSxFQUFFLGlCQUN6Q3RDLHNCQUFzQixFQUN0QjtNQUFFbkIsTUFBTTtNQUFFRTtJQUFLLENBQ2pCLENBQUMsQ0FBQytDLE1BQU0sQ0FBQyxDQUFDakUsUUFBUSxDQUFDLENBQ2hCMEUsSUFBSSxDQUFFekMsT0FBTyxJQUFLO01BQ2pCakMsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBT3lGLE9BQU87SUFDaEIsQ0FBQyxDQUFDLENBQ0QwQyxLQUFLLENBQUVDLENBQUMsSUFBSztNQUNaNUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBT29JLENBQUM7SUFDVixDQUFDLENBQUM7RUFDTixDQUFDO0FBQUE7QUFFSSxNQUFNQyxnQkFBZ0IsR0FBSUMsT0FBTyxJQUFLLE1BQU85RSxRQUFRLElBQzFEQSxRQUFRLENBQUM3RCwyRkFBWSxDQUFDNEIsbUJBQW1CLENBQUMsQ0FBQytHLE9BQU8sQ0FBQyxDQUFDOztBQUV0RDtBQUNPLE1BQU1DLE9BQU8sR0FBSXpFLElBQUksSUFBTU4sUUFBUSxJQUN4Q0EsUUFBUSxDQUFDN0QsMkZBQVksQ0FBQ3VELFFBQVEsQ0FBQyxDQUFDWSxJQUFJLENBQUMsQ0FBQzs7QUFFeEM7O0FBRU8sTUFBTTBFLGNBQWMsR0FDekJDLEtBQUE7RUFBQSxJQUFDO0lBQ0N2QixJQUFJLEdBQUd2Ryx3REFBVTtJQUNqQndHLE9BQU8sR0FBRzNHLG9FQUFzQjtJQUNoQ2dFLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDWEUsSUFBSSxHQUFHLENBQUM7RUFDVixDQUFDLEdBQUErRCxLQUFBO0VBQUEsT0FDRCxPQUFPakYsUUFBUSxFQUFFNEQsUUFBUSxFQUFBc0IsS0FBQSxLQUFxQjtJQUFBLElBQW5CO01BQUVwQjtJQUFXLENBQUMsR0FBQW9CLEtBQUE7SUFDdkMsTUFBTTtNQUNKbkIsV0FBVyxFQUFFO1FBQUUxRCxNQUFNO1FBQUVDO01BQUs7SUFDOUIsQ0FBQyxHQUFHc0QsUUFBUSxDQUFDLENBQUM7SUFDZCxNQUFNO01BQUV1QjtJQUFZLENBQUMsR0FBRzdFLElBQUk7SUFDNUIsSUFBSSxDQUFDRCxNQUFNLEVBQUUsT0FBTytFLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7SUFDcEMsTUFBTXJCLFdBQVcsR0FBRyxNQUFNakgsaUVBQW9CLENBQUMsQ0FBQztJQUVoRCxJQUFJLENBQUNpSCxXQUFXLEVBQUUsT0FBT2xILDhEQUFpQixDQUFDLENBQUM7SUFFNUMsTUFBTXdJLE1BQU0sR0FBRyxDQUNiLFVBQVUsRUFDVix3QkFBd0IsRUFDeEIsdUJBQXVCLEVBQ3ZCLG1CQUFtQixFQUNuQixVQUFVLEVBQ1YsYUFBYSxFQUNiLGtCQUFrQixFQUNsQixpQkFBaUIsRUFDakIsY0FBYyxFQUNkLFlBQVksQ0FDYjtJQUNEdEYsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7SUFDeEIsTUFBTTBILE1BQU0sR0FBRztNQUNiQyxZQUFZLEVBQUVGLFdBQVc7TUFDekIsVUFBVSxFQUFFLENBQUMsY0FBYyxxQkFBQXpDLE1BQUEsQ0FBcUI0RCxXQUFXLENBQUNWLEVBQUUsRUFBRztNQUNqRWMsTUFBTSxFQUFFLDhDQUE4QztNQUN0RHBCLEtBQUssRUFBRSxLQUFLO01BQ1ptQixNQUFNLEVBQUVBLE1BQU0sQ0FBQ3pELElBQUksQ0FBQyxHQUFHLENBQUM7TUFDeEJ1QyxTQUFTLEVBQUUscUJBQXFCO01BQ2hDVixJQUFJO01BQ0pXLFFBQVEsRUFBRVY7SUFDWixDQUFDO0lBQ0QsSUFBSWYsTUFBTSxDQUFDMEIsSUFBSSxDQUFDdEQsTUFBTSxDQUFDLENBQUNVLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDbEMsTUFBTTZDLE9BQU8sR0FBR3BELFdBQVcsQ0FBQ0gsTUFBTSxFQUFFM0Qsa0RBQUksQ0FBQ21JLE9BQU8sQ0FBQztNQUNqRHZCLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUdBLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRSxHQUFHTSxPQUFPLENBQUM7SUFDMUQ7SUFDQSxJQUFJM0IsTUFBTSxDQUFDMEIsSUFBSSxDQUFDcEQsSUFBSSxDQUFDLENBQUNRLE1BQU0sR0FBRyxDQUFDLEVBQUU7TUFDaEN1QyxNQUFNLENBQUNFLEtBQUssTUFBQTVDLE1BQUEsQ0FBTU8sZ0JBQWdCLENBQUNaLElBQUksQ0FBQ2EsU0FBUyxDQUFDLEVBQUFSLE1BQUEsQ0FBR0wsSUFBSSxDQUFDc0QsSUFBSSxDQUFFO0lBQ2xFO0lBQ0EsT0FBT25JLHlGQUFVLENBQ2YsSUFBSSxFQUNKRiwyRkFBWSxDQUFDOEIsdUJBQXVCLENBQUMsS0FBQXNELE1BQUEsQ0FDbEN1QyxVQUFVLHNCQUFBdkMsTUFBQSxDQUFtQmxCLE1BQU0sQ0FBQ29FLEVBQUUsNkJBQ3pDdEMsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FDaEIwRSxJQUFJLENBQUMsTUFBTTtNQUNWMUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDLENBQ0RtSSxLQUFLLENBQUVDLENBQUMsSUFBSztNQUNaNUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBT29JLENBQUM7SUFDVixDQUFDLENBQUM7RUFDTixDQUFDO0FBQUE7QUFFSSxNQUFNYSxpQkFBaUIsR0FDNUJDLEtBQUE7RUFBQSxJQUFDO0lBQ0NaLE9BQU87SUFDUHBCLElBQUksR0FBR3ZHLHdEQUFVO0lBQ2pCd0csT0FBTyxHQUFHM0csb0VBQXNCO0lBQ2hDZ0UsTUFBTTtJQUNORTtFQUNGLENBQUMsR0FBQXdFLEtBQUE7RUFBQSxPQUNELE9BQU8xRixRQUFRLEVBQUU0RCxRQUFRLEVBQUErQixLQUFBLEtBQXFCO0lBQUEsSUFBbkI7TUFBRTdCO0lBQVcsQ0FBQyxHQUFBNkIsS0FBQTtJQUN2QzNGLFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0lBQ3hCLE1BQU15SCxXQUFXLEdBQUcsTUFBTWpILGlFQUFvQixDQUFDLENBQUM7SUFFaEQsSUFBSSxDQUFDaUgsV0FBVyxFQUFFLE9BQU9sSCw4REFBaUIsQ0FBQyxDQUFDO0lBRTVDLE1BQU1tSCxNQUFNLEdBQUc7TUFDYkMsWUFBWSxFQUFFRixXQUFXO01BQ3pCLFVBQVUsRUFBRSxFQUFFO01BQ2RzQixNQUFNLEVBQUUsWUFBWTtNQUNwQkMsTUFBTSxFQUNKLGdKQUFnSjtNQUNsSnBCLEtBQUssRUFBRSxLQUFLO01BQ1pDLFNBQVMsRUFBRSxxQkFBcUI7TUFDaENWLElBQUk7TUFDSlcsUUFBUSxFQUFFVjtJQUNaLENBQUM7SUFDRCxJQUFJZixNQUFNLENBQUMwQixJQUFJLENBQUN0RCxNQUFNLENBQUMsQ0FBQ1UsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNsQyxNQUFNNkMsT0FBTyxHQUFHcEQsV0FBVyxDQUFDSCxNQUFNLEVBQUUzRCxrREFBSSxDQUFDbUksT0FBTyxDQUFDO01BQ2pEdkIsTUFBTSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsR0FBR0EsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUdNLE9BQU8sQ0FBQztJQUMxRDtJQUNBLElBQUkzQixNQUFNLENBQUMwQixJQUFJLENBQUNwRCxJQUFJLENBQUMsQ0FBQ1EsTUFBTSxHQUFHLENBQUMsRUFBRTtNQUNoQ3VDLE1BQU0sQ0FBQ0UsS0FBSyxNQUFBNUMsTUFBQSxDQUFNTyxnQkFBZ0IsQ0FBQ1osSUFBSSxDQUFDYSxTQUFTLENBQUMsRUFBQVIsTUFBQSxDQUFHTCxJQUFJLENBQUNzRCxJQUFJLENBQUU7SUFDbEU7SUFDQSxPQUFPbkkseUZBQVUsQ0FDZixJQUFJLEVBQ0pGLDJGQUFZLENBQUN1QyxvQkFBb0IsQ0FBQyxLQUFBNkMsTUFBQSxDQUMvQnVDLFVBQVUsaUNBQUF2QyxNQUFBLENBQThCdUQsT0FBTyxlQUNsRDNDLHNCQUNGLENBQUMsQ0FBQzhCLE1BQU0sQ0FBQyxDQUFDakUsUUFBUSxDQUFDLENBQ2hCMEUsSUFBSSxDQUFFekMsT0FBTyxJQUFLO01BQ2pCakMsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsT0FBT3lGLE9BQU87SUFDaEIsQ0FBQyxDQUFDLENBQ0QwQyxLQUFLLENBQUVDLENBQUMsSUFBSztNQUNaNUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkJ3RCxRQUFRLENBQUM3RCwyRkFBWSxDQUFDd0MsMEJBQTBCLENBQUMsQ0FBQztNQUNsRCxPQUFPaUcsQ0FBQztJQUNWLENBQUMsQ0FBQztFQUNOLENBQUM7QUFBQTtBQUVJLE1BQU1nQixrQkFBa0IsR0FDNUJDLE1BQU0sSUFDUCxPQUFPN0YsUUFBUSxFQUFFNEQsUUFBUSxFQUFBa0MsS0FBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUVoQztFQUFXLENBQUMsR0FBQWdDLEtBQUE7RUFDdkMsTUFBTTlCLFdBQVcsR0FBRyxNQUFNakgsaUVBQW9CLENBQUMsQ0FBQztFQUVoRCxJQUFJLENBQUNpSCxXQUFXLEVBQUUsT0FBT2xILDhEQUFpQixDQUFDLENBQUM7RUFFNUMsTUFBTTtJQUFFaUo7RUFBUSxDQUFDLEdBQUdGLE1BQU07RUFFMUI3RixRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNdUksT0FBTyxHQUFHZSxNQUFNLENBQUMxQixLQUFLLEdBQUcwQixNQUFNLENBQUMxQixLQUFLLENBQUNNLEVBQUUsR0FBR29CLE1BQU0sQ0FBQ0csUUFBUTtFQUVoRSxNQUFNL0IsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUY7RUFDaEIsQ0FBQztFQUVELE9BQU8xSCx5RkFBVSxDQUNmLElBQUksRUFDSkgsMkZBQVksQ0FBQ3NDLG1CQUFtQixDQUFDLEtBQUE4QyxNQUFBLENBQzlCdUMsVUFBVSxpQ0FBQXZDLE1BQUEsQ0FBOEJ1RCxPQUFPLGVBQUF2RCxNQUFBLENBQVlzRSxNQUFNLENBQUNwQixFQUFFLHlCQUN2RTtJQUFFc0I7RUFBUSxDQUFDLEVBQ1g1RCxzQkFDRixDQUFDLENBQUM4QixNQUFNLENBQUMsQ0FBQ2pFLFFBQVEsQ0FBQyxDQUNoQjBFLElBQUksQ0FBQyxNQUFNO0lBQ1YxRSxRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FDRG1JLEtBQUssQ0FBRUMsQ0FBQyxJQUFLO0lBQ1o1RSxRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztJQUN2QixPQUFPb0ksQ0FBQztFQUNWLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFSSxNQUFNcUIsWUFBWSxHQUN2QkMsS0FBQTtFQUFBLElBQUM7SUFBRUw7RUFBTyxDQUFDLEdBQUFLLEtBQUE7RUFBQTtJQUNYO0lBQ0EsT0FBT2xHLFFBQVEsRUFBRTRELFFBQVEsRUFBQXVDLE1BQUEsS0FBcUI7TUFBQSxJQUFuQjtRQUFFckM7TUFBVyxDQUFDLEdBQUFxQyxNQUFBO01BQ3ZDLE1BQU1uQyxXQUFXLEdBQUcsTUFBTWpILGlFQUFvQixDQUFDLENBQUM7TUFFaEQsSUFBSSxDQUFDaUgsV0FBVyxFQUFFLE9BQU9sSCw4REFBaUIsQ0FBQyxDQUFDO01BRTVDa0QsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7TUFFeEIsTUFBTXVJLE9BQU8sR0FBR2UsTUFBTSxDQUFDMUIsS0FBSyxHQUFHMEIsTUFBTSxDQUFDMUIsS0FBSyxDQUFDTSxFQUFFLEdBQUdvQixNQUFNLENBQUNHLFFBQVE7TUFFaEUsTUFBTS9CLE1BQU0sR0FBRztRQUNiQyxZQUFZLEVBQUVGLFdBQVc7UUFDekJ1QixNQUFNLEVBQUUsNkJBQTZCO1FBQ3JDRCxNQUFNLEVBQUU7TUFDVixDQUFDO01BRUQsT0FBT2xKLDRGQUFhLENBQ2xCLElBQUksRUFDSkQsMkZBQVksQ0FBQ3FDLGFBQWEsQ0FBQyxLQUFBK0MsTUFBQSxDQUN4QnVDLFVBQVUsaUNBQUF2QyxNQUFBLENBQThCdUQsT0FBTyxlQUFBdkQsTUFBQSxDQUFZc0UsTUFBTSxDQUFDcEIsRUFBRSxjQUN2RSxDQUFDLENBQUMsRUFDRnRDLHNCQUNGLENBQUMsQ0FBQzhCLE1BQU0sQ0FBQyxDQUFDakUsUUFBUSxDQUFDLENBQ2hCMEUsSUFBSSxDQUFFekMsT0FBTyxJQUFLO1FBQ2pCakMsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkIsT0FBT3lGLE9BQU87TUFDaEIsQ0FBQyxDQUFDLENBQ0QwQyxLQUFLLENBQUVDLENBQUMsSUFBSztRQUNaNUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7UUFDdkIsT0FBT29JLENBQUM7TUFDVixDQUFDLENBQUM7SUFDTjtFQUFDO0FBQUE7QUFFSSxNQUFNd0IsaUJBQWlCLEdBQzVCQyxNQUFBO0VBQUEsSUFBQztJQUFFQztFQUFRLENBQUMsR0FBQUQsTUFBQTtFQUFBLE9BQ1osTUFBT3JHLFFBQVEsSUFBSztJQUNsQixNQUFNdUcsS0FBSyxHQUFHOUosOENBQU0sQ0FBQ1csaUVBQW1CLENBQUM7SUFDekMsTUFBTW9KLG9CQUFvQixHQUFHRixPQUFPLENBQUNHLEdBQUcsQ0FBRVosTUFBTSxJQUM5Q1UsS0FBSyxDQUFDLE1BQU12RyxRQUFRLENBQUNpRyxZQUFZLENBQUM7TUFBRUo7SUFBTyxDQUFDLENBQUMsQ0FBQyxDQUNoRCxDQUFDO0lBQ0QsT0FBT1QsT0FBTyxDQUFDc0IsR0FBRyxDQUFDLENBQUMsR0FBR0Ysb0JBQW9CLENBQUMsQ0FBQyxDQUMxQzlCLElBQUksQ0FBRXJDLEdBQUcsSUFBSztNQUNiLE1BQU1zRSxxQkFBcUIsR0FBR3RFLEdBQUcsQ0FDOUJyQixNQUFNLENBQUU0RixDQUFDO1FBQUEsSUFBQUMsV0FBQTtRQUFBLFFBQUFBLFdBQUEsR0FBS0QsQ0FBQyxDQUFDckUsUUFBUSxjQUFBc0UsV0FBQSxnQkFBQUEsV0FBQSxHQUFWQSxXQUFBLENBQVlDLGVBQWUsY0FBQUQsV0FBQSx1QkFBM0JBLFdBQUEsQ0FBNkJuRixNQUFNO01BQUEsRUFBQyxDQUNsRCtFLEdBQUcsQ0FBRUcsQ0FBQyxJQUFLQSxDQUFDLENBQUNyRSxRQUFRLENBQUM7TUFDekIsT0FBT29FLHFCQUFxQjtJQUM5QixDQUFDLENBQUMsQ0FDRGhDLEtBQUssQ0FBRUMsQ0FBQyxJQUFLQSxDQUFDLENBQUM7RUFDcEIsQ0FBQztBQUFBOztBQUVIO0FBQ08sTUFBTW1DLDRCQUE0QixHQUN0Q0Msc0JBQXNCLElBQU1oSCxRQUFRLElBQ25DQSxRQUFRLENBQ043RCwyRkFBWSxDQUFDbUQsK0JBQStCLENBQUMsQ0FBQzBILHNCQUFzQixDQUN0RSxDQUFDOztBQUVMOztBQUVPLE1BQU1DLGlCQUFpQixHQUMzQkMsVUFBVSxJQUNYLE9BQU9sSCxRQUFRLEVBQUU0RCxRQUFRLEVBQUF1RCxNQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRXJEO0VBQVcsQ0FBQyxHQUFBcUQsTUFBQTtFQUN2QyxNQUFNO0lBQ0pwRCxXQUFXLEVBQUU7TUFBRTFEO0lBQU87RUFDeEIsQ0FBQyxHQUFHdUQsUUFBUSxDQUFDLENBQUM7RUFFZCxNQUFNSSxXQUFXLEdBQUcsTUFBTWpILGlFQUFvQixDQUFDLENBQUM7RUFFaEQsSUFBSSxDQUFDaUgsV0FBVyxFQUFFLE9BQU9sSCw4REFBaUIsQ0FBQyxDQUFDO0VBRTVDLE1BQU1tSCxNQUFNLEdBQUc7SUFDYlAsSUFBSSxFQUFFLENBQUM7SUFDUFcsUUFBUSxFQUFFbkgsNERBQWM7SUFDeEJxSSxNQUFNLEVBQUUsMkNBQTJDO0lBQ25EckIsWUFBWSxFQUFFRixXQUFXO0lBQ3pCLFVBQVUsRUFBRTtFQUNkLENBQUM7RUFFRCxNQUFNb0QsUUFBUSxNQUFBN0YsTUFBQSxDQUFNdUMsVUFBVSxzQkFBQXZDLE1BQUEsQ0FBbUJsQixNQUFNLENBQUNvRSxFQUFFLGlCQUFBbEQsTUFBQSxDQUFjMkYsVUFBVSw2QkFBMEI7RUFFNUcsT0FBTzdLLHlGQUFVLENBQ2YsSUFBSSxFQUNKRiwyRkFBWSxDQUFDMkMsdUJBQXVCLENBQUMsRUFDckNzSSxRQUFRLEVBQ1JqRixzQkFDRixDQUFDLENBQUM4QixNQUFNLENBQUMsQ0FBQ2pFLFFBQVEsQ0FBQyxDQUFDMEUsSUFBSSxDQUFDLE1BQU07SUFDN0IxRSxRQUFRLENBQUN4RCwwRkFBVyxDQUFDLENBQUMsQ0FBQztFQUN6QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRUksTUFBTTZLLFNBQVMsR0FDcEJBLENBQUNDLFFBQVEsRUFBRXhDLE9BQU8sS0FDbEIsT0FBTzlFLFFBQVEsRUFBRTRELFFBQVEsRUFBQTJELE1BQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFekQ7RUFBVyxDQUFDLEdBQUF5RCxNQUFBO0VBQ3ZDLE1BQU12RCxXQUFXLEdBQUcsTUFBTWpILGlFQUFvQixDQUFDLENBQUM7RUFFaEQsSUFBSSxDQUFDaUgsV0FBVyxFQUFFLE9BQU9sSCw4REFBaUIsQ0FBQyxDQUFDO0VBRTVDa0QsUUFBUSxDQUFDekQsMkZBQVksQ0FBQyxDQUFDLENBQUM7RUFFeEIsTUFBTTBILE1BQU0sR0FBRztJQUNiQyxZQUFZLEVBQUVGLFdBQVc7SUFDekJ1QixNQUFNLEVBQ0oseUZBQXlGO0lBQzNGbkIsU0FBUyxFQUNQLDRGQUE0RjtJQUM5RmtCLE1BQU0sRUFDSjtFQUNKLENBQUM7RUFFRCxNQUFNOEIsUUFBUSxNQUFBN0YsTUFBQSxDQUFNdUMsVUFBVSxpQ0FBQXZDLE1BQUEsQ0FBOEJ1RCxPQUFPLGVBQUF2RCxNQUFBLENBQVkrRixRQUFRLENBQUU7RUFFekYsT0FBT2pMLHlGQUFVLENBQ2ZGLDJGQUFZLENBQUNnQyxZQUFZLENBQUMsRUFDMUJoQywyRkFBWSxDQUFDaUMsY0FBYyxDQUFDLEVBQzVCZ0osUUFBUSxFQUNSakYsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FBQ3dILE9BQU8sQ0FBQyxNQUFNO0lBQ2hDeEgsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVILE1BQU1pTCxlQUFlLEdBQUlDLE1BQU0sSUFBSztFQUNsQyxNQUFNQyxnQkFBZ0IsR0FBQUMsYUFBQSxLQUFRRixNQUFNLENBQUU7RUFFdEMsSUFBSSxDQUFDQSxNQUFNLENBQUNHLGdCQUFnQixDQUFDcEQsRUFBRSxFQUFFO0lBQy9Ca0QsZ0JBQWdCLENBQUNFLGdCQUFnQixHQUFHSCxNQUFNLENBQUNHLGdCQUFnQjtFQUM3RCxDQUFDLE1BQU07SUFDTCxPQUFPRixnQkFBZ0IsQ0FBQ0UsZ0JBQWdCO0lBQ3hDRixnQkFBZ0IsQ0FBQ0csbUJBQW1CLEdBQUdKLE1BQU0sQ0FBQ0csZ0JBQWdCLENBQUNwRCxFQUFFO0VBQ25FO0VBRUEsT0FBT2tELGdCQUFnQjtBQUN6QixDQUFDO0FBRU0sTUFBTUksY0FBYyxHQUN6QkEsQ0FBQ0MsSUFBSSxFQUFFN0ksT0FBTyxFQUFFOEksV0FBVyxLQUMzQixDQUFDakksUUFBUSxFQUFFNEQsUUFBUSxFQUFBc0UsTUFBQSxLQUF3QjtFQUFBLElBQUFDLG9CQUFBO0VBQUEsSUFBdEI7SUFBRUM7RUFBYyxDQUFDLEdBQUFGLE1BQUE7RUFDcEMsTUFBTTtJQUNKbkUsV0FBVyxFQUFFO01BQUV6RDtJQUFLO0VBQ3RCLENBQUMsR0FBR3NELFFBQVEsQ0FBQyxDQUFDO0VBQ2QsTUFBTTtJQUFFdUI7RUFBWSxDQUFDLEdBQUc3RSxJQUFJOztFQUU1QjtFQUNBO0VBQ0E7RUFDQSxNQUFNO0lBQ0orSCxjQUFjO0lBQ2RDLG1CQUFtQjtJQUNuQkMsa0JBQWtCO0lBQ2xCVjtFQUNGLENBQUMsR0FBR0csSUFBSTtFQUNSLE1BQU1RLFVBQVUsR0FBRyxDQUFBUCxXQUFXLGFBQVhBLFdBQVcsZ0JBQUFFLG9CQUFBLEdBQVhGLFdBQVcsQ0FBRVEsT0FBTyxjQUFBTixvQkFBQSx1QkFBcEJBLG9CQUFBLENBQXNCMUQsRUFBRSxNQUFJd0QsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVTLFVBQVU7RUFDdEUsTUFBTUMsS0FBSyxHQUFHeEQsV0FBVyxDQUFDbkcsS0FBSyxLQUFLcUosY0FBYztFQUNsRCxNQUFNTyxjQUFjLEdBQ2xCZixnQkFBZ0IsQ0FBQ3JELElBQUksS0FBS3JGLE9BQU8sSUFDakNtSixtQkFBbUIsS0FBS25ELFdBQVcsQ0FBQzBELFVBQVUsSUFDOUNOLGtCQUFrQixLQUFLcEQsV0FBVyxDQUFDMkQsU0FBUztFQUU5QyxJQUFJSCxLQUFLLElBQUksQ0FBQ0gsVUFBVSxJQUFJSSxjQUFjLEVBQUU7SUFDMUMsTUFBTUcsVUFBVSxHQUFHO01BQ2pCRixVQUFVLEVBQUVQLG1CQUFtQjtNQUMvQlEsU0FBUyxFQUFFUCxrQkFBa0I7TUFDN0JwSixPQUFPLEVBQUUwSSxnQkFBZ0IsQ0FBQ3JELElBQUksSUFBSXFEO0lBQ3BDLENBQUM7O0lBRUQ7SUFDQU8sYUFBYSxDQUFDVyxVQUFVLENBQUM7RUFDM0I7QUFDRixDQUFDO0FBRUksTUFBTUMsaUJBQWlCLEdBQzVCQSxDQUFDbkQsTUFBTSxFQUFFb0QsT0FBTyxLQUNoQixPQUFPakosUUFBUSxFQUFFNEQsUUFBUSxFQUFBc0YsTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUVwRjtFQUFXLENBQUMsR0FBQW9GLE1BQUE7RUFDdkMsTUFBTWxGLFdBQVcsR0FBRyxNQUFNakgsaUVBQW9CLENBQUMsQ0FBQztFQUVoRCxJQUFJLENBQUNpSCxXQUFXLEVBQUUsT0FBT2xILDhEQUFpQixDQUFDLENBQUM7RUFFNUNrRCxRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNMEgsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUYsV0FBVztJQUN6QnVCLE1BQU0sRUFDSjtFQUNKLENBQUM7RUFFRCxNQUFNNEQsT0FBTyxHQUFHek0sNEZBQVUsQ0FBQyxDQUFDO0VBQzVCLElBQUl5QyxPQUFPLEdBQUcsRUFBRTtFQUNoQixJQUFJZ0ssT0FBTyxFQUFFO0lBQ1gsSUFBSTtNQUNGLE1BQU1DLFFBQVEsR0FBRyxJQUFJeE0seURBQWUsQ0FBQyxDQUFDO01BQ3RDLE1BQU15TSxHQUFHLEdBQUdELFFBQVEsQ0FBQ0UsTUFBTSxDQUFDSCxPQUFPLENBQUM7TUFDcENoSyxPQUFPLEdBQUdrSyxHQUFHLENBQUNwSCxPQUFPLENBQUM5QyxPQUFPO0lBQy9CLENBQUMsQ0FBQyxPQUFPeUYsQ0FBQyxFQUFFO01BQ1YyRSxPQUFPLENBQUNDLEdBQUcsQ0FBQyxPQUFPLEVBQUU1RSxDQUFDLENBQUM7TUFDdkIsT0FBT1EsT0FBTyxDQUFDQyxNQUFNLENBQUMsQ0FBQztJQUN6QjtFQUNGO0VBRUEsTUFBTXNDLGdCQUFnQixHQUFHRixlQUFlLENBQUN3QixPQUFPLENBQUM7RUFFakQsT0FBTzNNLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDK0IsYUFBYSxDQUFDLEtBQUFxRCxNQUFBLENBQ3hCdUMsVUFBVSw2Q0FBQXZDLE1BQUEsQ0FBMENzRSxNQUFNLENBQUNwQixFQUFFLEdBQ2hFa0QsZ0JBQWdCLEVBQ2hCeEYsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FDaEIwRSxJQUFJLENBQUMsWUFBWTtJQUNoQjFFLFFBQVEsQ0FBQytILGNBQWMsQ0FBQ2tCLE9BQU8sRUFBRTlKLE9BQU8sRUFBRTBHLE1BQU0sQ0FBQzRELEtBQUssQ0FBQyxDQUFDO0lBQ3hEekosUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDLENBQ0RtSSxLQUFLLENBQUVDLENBQUMsSUFBSztJQUNaNUUsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsT0FBT29JLENBQUM7RUFDVixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUksTUFBTThFLGNBQWMsR0FDekIsU0FBQUEsQ0FBQzVFLE9BQU8sRUFBRXdDLFFBQVEsRUFBRWUsY0FBYztFQUFBLElBQUV0QyxPQUFPLEdBQUE0RCxTQUFBLENBQUFqSSxNQUFBLFFBQUFpSSxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLElBQUk7RUFBQSxPQUNsRCxPQUFPM0osUUFBUSxFQUFFNEQsUUFBUSxFQUFBaUcsTUFBQSxLQUFxQjtJQUFBLElBQW5CO01BQUUvRjtJQUFXLENBQUMsR0FBQStGLE1BQUE7SUFDdkMsTUFBTTdGLFdBQVcsR0FBRyxNQUFNakgsaUVBQW9CLENBQUMsQ0FBQztJQUVoRCxNQUFNa0YsT0FBTyxHQUFHO01BQUVvRztJQUFlLENBQUM7SUFDbEMsSUFBSXRDLE9BQU8sRUFBRTlELE9BQU8sQ0FBQzhELE9BQU8sR0FBR0EsT0FBTztJQUV0QyxJQUFJLENBQUMvQixXQUFXLEVBQUUsT0FBT2xILDhEQUFpQixDQUFDLENBQUM7SUFFNUNrRCxRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztJQUV4QixNQUFNMEgsTUFBTSxHQUFHO01BQ2JDLFlBQVksRUFBRUYsV0FBVztNQUN6QnVCLE1BQU0sRUFDSiw4RUFBOEU7TUFDaEZuQixTQUFTLEVBQUUscUNBQXFDO01BQ2hEa0IsTUFBTSxFQUNKO0lBQ0osQ0FBQztJQUVELE9BQU9oSix5RkFBVSxDQUNmLElBQUksRUFDSkgsMkZBQVksQ0FBQ21DLGFBQWEsQ0FBQyxLQUFBaUQsTUFBQSxDQUN4QnVDLFVBQVUsaUNBQUF2QyxNQUFBLENBQThCdUQsT0FBTyxlQUFBdkQsTUFBQSxDQUFZK0YsUUFBUSxnQkFDdEVyRixPQUFPLEVBQ1BFLHNCQUNGLENBQUMsQ0FBQzhCLE1BQU0sQ0FBQyxDQUFDakUsUUFBUSxDQUFDLENBQUN3SCxPQUFPLENBQUMsTUFBTTtNQUNoQ3hILFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztFQUNKLENBQUM7QUFBQTtBQUVJLE1BQU1zTixjQUFjLEdBQ3pCQSxDQUFDaEYsT0FBTyxFQUFFd0MsUUFBUSxFQUFFdEksS0FBSyxFQUFFK0csT0FBTyxLQUNsQyxPQUFPL0YsUUFBUSxFQUFFNEQsUUFBUSxFQUFBbUcsTUFBQSxLQUFxQjtFQUFBLElBQW5CO0lBQUVqRztFQUFXLENBQUMsR0FBQWlHLE1BQUE7RUFDdkMsTUFBTS9GLFdBQVcsR0FBRyxNQUFNakgsaUVBQW9CLENBQUMsQ0FBQztFQUVoRCxJQUFJLENBQUNpSCxXQUFXLEVBQUUsT0FBT2xILDhEQUFpQixDQUFDLENBQUM7RUFFNUNrRCxRQUFRLENBQUN6RCwyRkFBWSxDQUFDLENBQUMsQ0FBQztFQUV4QixNQUFNMEgsTUFBTSxHQUFHO0lBQ2JDLFlBQVksRUFBRUYsV0FBVztJQUN6QnVCLE1BQU0sRUFBRTtFQUNWLENBQUM7RUFFRCxPQUFPbkosNEZBQWEsQ0FDbEIsSUFBSSxFQUNKRCwyRkFBWSxDQUFDa0Msc0JBQXNCLENBQUMsS0FBQWtELE1BQUEsQ0FDakN1QyxVQUFVLGlDQUFBdkMsTUFBQSxDQUE4QnVELE9BQU8sZUFBQXZELE1BQUEsQ0FBWStGLFFBQVEsZ0JBQ3RFLENBQUMsQ0FBQyxFQUNGbkYsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FBQzBFLElBQUksQ0FBQyxNQUN2QjFFLFFBQVEsQ0FBQzBKLGNBQWMsQ0FBQzVFLE9BQU8sRUFBRXdDLFFBQVEsRUFBRXRJLEtBQUssRUFBRStHLE9BQU8sQ0FBQyxDQUM1RCxDQUFDO0FBQ0gsQ0FBQztBQUVJLE1BQU1pRSxjQUFjLEdBQ3pCQSxDQUFDbEYsT0FBTyxFQUFFd0MsUUFBUSxFQUFFckksU0FBUyxFQUFFQyxRQUFRLEVBQUVGLEtBQUssS0FDOUMsT0FBT2dCLFFBQVEsRUFBRTRELFFBQVEsRUFBQXFHLE1BQUEsS0FBcUI7RUFBQSxJQUFuQjtJQUFFbkc7RUFBVyxDQUFDLEdBQUFtRyxNQUFBO0VBQ3ZDLE1BQU1qRyxXQUFXLEdBQUcsTUFBTWpILGlFQUFvQixDQUFDLENBQUM7RUFDaEQsTUFBTTtJQUNKZ0gsV0FBVyxFQUFFO01BQUUxRDtJQUFPO0VBQ3hCLENBQUMsR0FBR3VELFFBQVEsQ0FBQyxDQUFDO0VBQ2QsTUFBTTNCLE9BQU8sR0FBRztJQUNkcUcsbUJBQW1CLEVBQUVySixTQUFTO0lBQzlCc0osa0JBQWtCLEVBQUVySixRQUFRO0lBQzVCbUosY0FBYyxFQUFFcko7RUFDbEIsQ0FBQztFQUVELElBQUksQ0FBQ2dGLFdBQVcsRUFBRSxPQUFPbEgsOERBQWlCLENBQUMsQ0FBQztFQUU1Q2tELFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU0wSCxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFRixXQUFXO0lBQ3pCdUIsTUFBTSxFQUNKLDhFQUE4RTtJQUNoRm5CLFNBQVMsRUFBRSxxQ0FBcUM7SUFDaERrQixNQUFNLEVBQ0o7RUFDSixDQUFDO0VBRUQsT0FBT2hKLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDb0MsZUFBZSxDQUFDLEtBQUFnRCxNQUFBLENBQzFCdUMsVUFBVSxzQkFBQXZDLE1BQUEsQ0FBbUJsQixNQUFNLENBQUNvRSxFQUFFLGNBQUFsRCxNQUFBLENBQVd1RCxPQUFPLGVBQUF2RCxNQUFBLENBQVkrRixRQUFRLGdCQUMvRXJGLE9BQU8sRUFDUEUsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FBQ3dILE9BQU8sQ0FBQyxNQUFNO0lBQ2hDeEgsUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7RUFDekIsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQUVJLE1BQU0wTixrQkFBa0IsR0FDN0JBLENBQUNyRSxNQUFNLEVBQUVvRCxPQUFPLEtBQ2hCLE9BQU9qSixRQUFRLEVBQUU0RCxRQUFRLEVBQUF1RyxNQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRXJHO0VBQVcsQ0FBQyxHQUFBcUcsTUFBQTtFQUN2QyxNQUFNbkcsV0FBVyxHQUFHLE1BQU1qSCxpRUFBb0IsQ0FBQyxDQUFDO0VBRWhELElBQUksQ0FBQ2lILFdBQVcsRUFBRSxPQUFPbEgsOERBQWlCLENBQUMsQ0FBQztFQUU1Q2tELFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU0wSCxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFRixXQUFXO0lBQ3pCdUIsTUFBTSxFQUNKLG1IQUFtSDtJQUNySG5CLFNBQVMsRUFBRSxxQ0FBcUM7SUFDaERrQixNQUFNLEVBQ0o7RUFDSixDQUFDO0VBRUQsT0FBT2hKLHlGQUFVLENBQ2YsSUFBSSxFQUNKSCwyRkFBWSxDQUFDK0IsYUFBYSxDQUFDLEtBQUFxRCxNQUFBLENBQ3hCdUMsVUFBVSw2Q0FBQXZDLE1BQUEsQ0FBMENzRSxNQUFNLENBQUNwQixFQUFFLEdBQ2hFd0UsT0FBTyxFQUNQOUcsc0JBQ0YsQ0FBQyxDQUFDOEIsTUFBTSxDQUFDLENBQUNqRSxRQUFRLENBQUMsQ0FDaEIwRSxJQUFJLENBQUMsWUFBWTtJQUNoQjFFLFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDO0VBQ3pCLENBQUMsQ0FBQyxDQUNEbUksS0FBSyxDQUFFQyxDQUFDLElBQUs7SUFDWjVFLFFBQVEsQ0FBQ3hELDBGQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLE9BQU9vSSxDQUFDO0VBQ1YsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVJLE1BQU13RixZQUFZLEdBQ3RCdkUsTUFBTSxJQUNQLE9BQU83RixRQUFRLEVBQUU0RCxRQUFRLEVBQUF5RyxNQUFBLEtBQXFCO0VBQUEsSUFBbkI7SUFBRXZHO0VBQVcsQ0FBQyxHQUFBdUcsTUFBQTtFQUN2QyxNQUFNckcsV0FBVyxHQUFHLE1BQU1qSCxpRUFBb0IsQ0FBQyxDQUFDO0VBRWhELElBQUksQ0FBQ2lILFdBQVcsRUFBRSxPQUFPbEgsOERBQWlCLENBQUMsQ0FBQztFQUU1Q2tELFFBQVEsQ0FBQ3pELDJGQUFZLENBQUMsQ0FBQyxDQUFDO0VBRXhCLE1BQU0wSCxNQUFNLEdBQUc7SUFDYkMsWUFBWSxFQUFFRjtFQUNoQixDQUFDO0VBRUQsTUFBTWMsT0FBTyxHQUFHZSxNQUFNLENBQUMxQixLQUFLLEdBQUcwQixNQUFNLENBQUMxQixLQUFLLENBQUNNLEVBQUUsR0FBR29CLE1BQU0sQ0FBQ0csUUFBUTtFQUVoRSxNQUFNc0UsV0FBVyxHQUFHM04sa0dBQW1CLENBQUNzSCxNQUFNLENBQUM7RUFDL0MsTUFBTXNHLE1BQU0sTUFBQWhKLE1BQUEsQ0FBTXVDLFVBQVUsaUNBQUF2QyxNQUFBLENBQThCdUQsT0FBTyxlQUFBdkQsTUFBQSxDQUFZc0UsTUFBTSxDQUFDcEIsRUFBRSxXQUFBbEQsTUFBQSxDQUFRK0ksV0FBVyxDQUFFO0VBRTNHLE9BQU9FLEtBQUssQ0FBQ0QsTUFBTSxFQUFFO0lBQ25CRSxZQUFZLEVBQUUsTUFBTTtJQUNwQkMsT0FBTyxFQUFFO01BQUUsY0FBYyxFQUFFO0lBQWtCO0VBQy9DLENBQUMsQ0FBQyxDQUNDaEcsSUFBSSxDQUFFbkMsUUFBUSxJQUFLO0lBQ2xCLElBQUksQ0FBQ0EsUUFBUSxDQUFDb0ksRUFBRSxFQUFFO01BQ2hCM0ssUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7TUFDdkIsTUFBTStGLFFBQVE7SUFDaEIsQ0FBQyxNQUFNO01BQ0wsT0FBT0EsUUFBUSxDQUFDcUksSUFBSSxDQUFDLENBQUM7SUFDeEI7RUFDRixDQUFDLENBQUMsQ0FDRGxHLElBQUksQ0FBRW1HLEdBQUcsSUFBSztJQUNiN0ssUUFBUSxDQUFDeEQsMEZBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkIsTUFBTXNPLElBQUksR0FBR0MsUUFBUSxDQUFDQyxhQUFhLENBQUMsR0FBRyxDQUFDO0lBQ3hDLE1BQU1DLEdBQUcsR0FBR0MsTUFBTSxDQUFDQyxHQUFHLENBQUNDLGVBQWUsQ0FBQ1AsR0FBRyxDQUFDO0lBQzNDQyxJQUFJLENBQUNPLElBQUksR0FBR0osR0FBRztJQUNmSCxJQUFJLENBQUNRLFFBQVEsR0FBRyxZQUFZO0lBQzVCUixJQUFJLENBQUNTLGFBQWEsQ0FBQyxJQUFJQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7RUFDN0MsQ0FBQyxDQUFDLENBQ0Q3RyxLQUFLLENBQUNyQyx1QkFBdUIsQ0FBQztBQUNuQyxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcHlCSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDWTtBQUNYO0FBQ0Q7QUFDd0I7QUFDcEI7QUFDcUI7QUFDa0Q7QUFDaEM7QUFBQTtBQUU5RSxNQUFNa0ssWUFBWSxHQUFHeEosSUFBQSxJQU1mO0VBQUEsSUFOZ0I7SUFDcEI2QyxNQUFNO0lBQ054RixNQUFNO0lBQ05oQixjQUFjO0lBQ2RvTixRQUFRO0lBQ1JDO0VBQ0YsQ0FBQyxHQUFBMUosSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFFOUIsTUFBTWdCLE1BQU0sR0FBR2QsaURBQVMsQ0FBQztJQUN2QmUsYUFBYSxFQUFFVCxnRUFBWSxDQUFDdEcsTUFBTSxDQUFDNEQsS0FBSyxFQUFFcEssY0FBYyxFQUFFLENBQUMsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUM7SUFDMUV3TixnQkFBZ0IsRUFBRVgseUVBQXFCLENBQ3JDN00sY0FBYyxFQUNkLEtBQUssRUFDTGdCLE1BQU0sQ0FBQ3lNLGlDQUNULENBQUM7SUFDREwsUUFBUSxFQUFHTSxNQUFNLElBQUs7TUFDcEIsTUFBTUMsZUFBZSxHQUFHYixnRUFBWSxDQUNsQ3RHLE1BQU0sQ0FBQzRELEtBQUssRUFDWnBLLGNBQWMsRUFDZDBOLE1BQU0sRUFDTixLQUFLLEVBQ0wsSUFBSSxFQUNKLElBQ0YsQ0FBQztNQUNELE9BQU9OLFFBQVEsQ0FBQ08sZUFBZSxDQUFDO0lBQ2xDLENBQUM7SUFDREMsa0JBQWtCLEVBQUU7RUFDdEIsQ0FBQyxDQUFDOztFQUVGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQWpCLG1FQUFnQixDQUFDVyxNQUFNLEVBQUUsZ0JBQWdCLENBQUM7RUFFMUMsSUFBSSxDQUFBdE4sY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVxQyxNQUFNLE1BQUssQ0FBQyxFQUFFLE9BQU8sSUFBSTtFQUU3QyxvQkFDRTZLLHdEQUFBO0lBQU1FLFFBQVEsRUFBRUUsTUFBTSxDQUFDTyxZQUFhO0lBQUNDLFVBQVU7SUFBQUMsUUFBQSxnQkFDN0NiLHdEQUFBLENBQUNYLDhDQUFHO01BQUF3QixRQUFBLGdCQUNGZix1REFBQSxDQUFDUCw2REFBb0I7UUFBQ3pNLGNBQWMsRUFBRUEsY0FBZTtRQUFDc04sTUFBTSxFQUFFQTtNQUFPLENBQUUsQ0FBQyxFQUN2RXRNLE1BQU0sQ0FBQ2dOLCtCQUErQixpQkFDckNoQix1REFBQSxDQUFDSiw4R0FBc0I7UUFDckJVLE1BQU0sRUFBRUEsTUFBTztRQUNmVyxVQUFVLEVBQUVqTixNQUFNLENBQUNnTiwrQkFBZ0M7UUFDbkRFLFVBQVUsRUFBRWxOLE1BQU0sQ0FBQ3lNO01BQWtDLENBQ3RELENBQ0Y7SUFBQSxDQUNFLENBQUMsZUFDTlQsdURBQUEsQ0FBQ04sbURBQVU7TUFDVHlCLFNBQVMsRUFBRTdLLENBQUMsQ0FBQyx5Q0FBeUMsQ0FBRTtNQUN4RDhLLFdBQVcsRUFBRTlLLENBQUMsQ0FBQywyQ0FBMkMsQ0FBRTtNQUM1RCtKLE9BQU8sRUFBRUEsT0FBUTtNQUNqQmdCLFFBQVEsRUFBRWYsTUFBTSxDQUFDZ0I7SUFBYSxDQUMvQixDQUFDO0VBQUEsQ0FDRSxDQUFDO0FBRVgsQ0FBQztBQUVEbkIsWUFBWSxDQUFDb0IsU0FBUyxHQUFHO0VBQ3ZCL0gsTUFBTSxFQUFFNkYsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DbE4sTUFBTSxFQUFFcUwsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DbE8sY0FBYyxFQUFFcU0seURBQWUsQ0FBQzZCLFVBQVU7RUFDMUNkLFFBQVEsRUFBRWYsd0RBQWMsQ0FBQzZCLFVBQVU7RUFDbkNiLE9BQU8sRUFBRWhCLHdEQUFjLENBQUM2QjtBQUMxQixDQUFDO0FBRUQsaUVBQWVmLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsR0Q7QUFDUztBQUMyQjtBQUN0QjtBQUNPO0FBQ1M7QUFFVDtBQUFBO0FBRS9DLE1BQU00QixZQUFZLEdBQUcsRUFBRTtBQUV2QixNQUFNQyxRQUFRLEdBQUdyTCxJQUFBLElBT1g7RUFBQSxJQVBZO0lBQ2hCc0wsSUFBSTtJQUNKQyxXQUFXO0lBQ1hDLFFBQVEsR0FBRyxLQUFLO0lBQ2hCQyxTQUFTLEdBQUcsSUFBSTtJQUNoQkMsUUFBUSxHQUFHLEtBQUs7SUFDaEJDLEtBQUssR0FBR1A7RUFDVixDQUFDLEdBQUFwTCxJQUFBO0VBQ0MsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNaUQsZ0JBQWdCLEdBQUdMLFdBQVcsSUFBSTVMLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztFQUN0RSxNQUFNLENBQUNrTSxPQUFPLEVBQUVDLFVBQVUsQ0FBQyxHQUFHckQscURBQWMsQ0FBQ21ELGdCQUFnQixDQUFDO0VBQzlELE1BQU1JLFVBQVUsTUFBQXpOLE1BQUEsQ0FBTWtOLFNBQVMsSUFBSU4sMERBQWdCLE9BQUE1TSxNQUFBLENBQ2pEbU4sUUFBUSxJQUFJUCx5REFBZSxDQUMzQjtFQUVGLE1BQU1jLFVBQVUsR0FBR0EsQ0FBQSxLQUFNO0lBQ3ZCQyxTQUFTLENBQUNDLFNBQVMsQ0FBQ0MsU0FBUyxDQUFDZCxJQUFJLENBQUM7SUFDbkNRLFVBQVUsQ0FBQ25NLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0lBQy9CME0sVUFBVSxDQUFDLE1BQU07TUFDZlAsVUFBVSxDQUFDRixnQkFBZ0IsQ0FBQztJQUM5QixDQUFDLEVBQUVWLDZEQUFlLENBQUM7RUFDckIsQ0FBQztFQUVELG9CQUNFM0IsdURBQUE7SUFBSytDLFNBQVMsRUFBRW5CLHdEQUFlO0lBQUFmLFFBQUEsZ0JBQzdCZixzREFBQTtNQUFNaUQsU0FBUyxFQUFFTixVQUFXO01BQUNRLEtBQUssRUFBRTtRQUFFYjtNQUFNLENBQUU7TUFBQXZCLFFBQUEsRUFDM0NrQjtJQUFJLENBQ0QsQ0FBQyxFQUNOLENBQUNFLFFBQVEsaUJBQ1JuQyxzREFBQSxDQUFDNEIsa0RBQU87TUFBQzNLLEtBQUssRUFBRXVMLE9BQVE7TUFBQXpCLFFBQUEsZUFDdEJmLHNEQUFBLENBQUMyQix3RUFBZTtRQUNkc0IsU0FBUyxFQUFFbkIseURBQWdCO1FBQzNCdUIsT0FBTyxFQUFFVCxVQUFXO1FBQ3BCLGVBQVk7TUFBb0IsQ0FDakM7SUFBQyxDQUNLLENBQ1Y7RUFBQSxDQUNFLENBQUM7QUFFVixDQUFDO0FBRURaLFFBQVEsQ0FBQ1QsU0FBUyxHQUFHO0VBQ25CVSxJQUFJLEVBQUU1QywwREFBZ0I7RUFDdEI2QyxXQUFXLEVBQUU3QywwREFBZ0I7RUFDN0I4QyxRQUFRLEVBQUU5Qyx3REFBYztFQUN4QitDLFNBQVMsRUFBRS9DLHdEQUFjO0VBQ3pCZ0QsUUFBUSxFQUFFaEQsd0RBQWM7RUFDeEJpRCxLQUFLLEVBQUVqRCwwREFBZ0JtRTtBQUN6QixDQUFDO0FBRUQsaUVBQWV4QixRQUFROzs7Ozs7Ozs7Ozs7Ozs7O0FDN0RlO0FBRXRDLE1BQU0wQixtQkFBbUIsR0FBRztFQUMxQkMsVUFBVSxFQUFFQSxDQUFBLEtBQU0sQ0FBQyxDQUFDO0VBQ3BCQyxrQkFBa0IsRUFBRUEsQ0FBQSxLQUFNLENBQUM7QUFDN0IsQ0FBQztBQUVELE1BQU1DLG1CQUFtQixnQkFBR0osb0RBQWEsQ0FBQ0MsbUJBQW1CLENBQUM7QUFFOUQsaUVBQWVHLG1CQUFtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1RSO0FBQ1M7QUFNWjtBQUFBO0FBRXZCLE1BQU1LLFlBQVksR0FBR3ZOLElBQUE7RUFBQSxJQUFDO0lBQUV3TixJQUFJO0lBQUU5RCxPQUFPO0lBQUVwSixLQUFLO0lBQUVtTjtFQUFLLENBQUMsR0FBQXpOLElBQUE7RUFBQSxvQkFDbER1Six1REFBQSxDQUFDNEQsaURBQU07SUFDTEssSUFBSSxFQUFFQSxJQUFLO0lBQ1g5RCxPQUFPLEVBQUVBLE9BQVE7SUFDakIsbUJBQWdCLG9CQUFvQjtJQUNwQyxvQkFBaUIsMEJBQTBCO0lBQUFVLFFBQUEsZ0JBRTNDZixzREFBQSxDQUFDaUUsc0RBQVc7TUFBQzdMLEVBQUUsRUFBQyxvQkFBb0I7TUFBQTJJLFFBQUEsRUFBRTlKO0lBQUssQ0FBYyxDQUFDLGVBQzFEK0ksc0RBQUEsQ0FBQytELHdEQUFhO01BQUFoRCxRQUFBLGVBQ1pmLHNEQUFBLENBQUNnRSw0REFBaUI7UUFDaEI1TCxFQUFFLEVBQUMsMEJBQTBCO1FBQzdCaU0sdUJBQXVCLEVBQUU7VUFBRUMsTUFBTSxFQUFFRjtRQUFLO01BQUUsQ0FDM0M7SUFBQyxDQUNXLENBQUM7RUFBQSxDQUNWLENBQUM7QUFBQSxDQUNWO0FBRURGLFlBQVksQ0FBQzNDLFNBQVMsR0FBRztFQUN2QjRDLElBQUksRUFBRTlFLHdEQUFjO0VBQ3BCZ0IsT0FBTyxFQUFFaEIsd0RBQWM7RUFDdkJwSSxLQUFLLEVBQUVvSSwwREFBZ0I7RUFDdkIrRSxJQUFJLEVBQUUvRSwwREFBZ0JpRTtBQUN4QixDQUFDO0FBRUQsaUVBQWVZLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pDRDtBQUNvQjtBQUNLO0FBQ2hCO0FBQUE7QUFFbkMsSUFBSU8sU0FBUyxHQUFHLEVBQUU7QUFDbEIsSUFBSSxPQUFPNUYsTUFBTSxLQUFLLFdBQVcsRUFBRTtFQUNqQztFQUNBLE1BQU02RixJQUFJLEdBQUdoRyxRQUFRLENBQUNpRyxlQUFlOztFQUVyQztFQUNBRixTQUFTLEdBQUdHLGdCQUFnQixDQUFDRixJQUFJLENBQUMsQ0FBQ0csZ0JBQWdCLENBQ2pELHlCQUNGLENBQUM7QUFDSDtBQUVBLE1BQU1DLEtBQUssR0FBR04saUVBQVcsQ0FBQztFQUN4Qk8sT0FBTyxFQUFFO0lBQ1BDLE9BQU8sRUFBRTtNQUNQQyxJQUFJLEVBQUVSO0lBQ1IsQ0FBQztJQUNEeEMsSUFBSSxFQUFFO01BQ0orQyxPQUFPLEVBQUUsV0FBVztNQUNwQkUsU0FBUyxFQUFFO0lBQ2I7RUFDRixDQUFDO0VBQ0RDLFVBQVUsRUFBRTtJQUNWQyxLQUFLLEVBQUU7TUFDTEMsUUFBUSxFQUFFO0lBQ1osQ0FBQztJQUNEQyxFQUFFLEVBQUU7TUFDRkQsUUFBUSxFQUFFLE9BQU87TUFDakJFLFVBQVUsRUFBRSxHQUFHO01BQ2YsOEJBQThCLEVBQUU7UUFDOUJDLFlBQVksRUFBRTtNQUNoQjtJQUNGLENBQUM7SUFDREMsRUFBRSxFQUFFO01BQ0ZKLFFBQVEsRUFBRSxPQUFPO01BQ2pCRSxVQUFVLEVBQUUsR0FBRztNQUNmLDhCQUE4QixFQUFFO1FBQzlCQyxZQUFZLEVBQUU7TUFDaEI7SUFDRjtFQUNGLENBQUM7RUFDREUsVUFBVSxFQUFFO0lBQ1ZDLGlCQUFpQixFQUFFO01BQ2pCQyxjQUFjLEVBQUU7UUFDZGxCLElBQUksRUFBRTtVQUNKVyxRQUFRLEVBQUU7UUFDWjtNQUNGO0lBQ0YsQ0FBQztJQUNEUSxTQUFTLEVBQUU7TUFDVEQsY0FBYyxFQUFFO1FBQ2RsQixJQUFJLEVBQUU7VUFDSlcsUUFBUSxFQUFFLEtBQUs7VUFDZkUsVUFBVSxFQUFFLEdBQUc7VUFDZk8sVUFBVSxFQUFFO1FBQ2Q7TUFDRjtJQUNGLENBQUM7SUFDREMsTUFBTSxFQUFFO01BQ05ILGNBQWMsRUFBRTtRQUNkbEIsSUFBSSxFQUFFO1VBQ0pXLFFBQVEsRUFBRSxNQUFNO1VBQ2hCVyxLQUFLLEVBQUUsV0FBVztVQUNsQixnQkFBZ0IsRUFBRTtZQUNoQkEsS0FBSyxFQUFFO1VBQ1Q7UUFDRjtNQUNGO0lBQ0YsQ0FBQztJQUNEQyxPQUFPLEVBQUU7TUFDUEwsY0FBYyxFQUFFO1FBQ2RNLFNBQVMsRUFBRTtVQUNUQyxlQUFlLEVBQUU7UUFDbkI7TUFDRjtJQUNGO0VBQ0Y7QUFDRixDQUFDLENBQUM7QUFFRixNQUFNQyxXQUFXLEdBQUd6UCxJQUFBO0VBQUEsSUFBQztJQUFFb0s7RUFBUyxDQUFDLEdBQUFwSyxJQUFBO0VBQUEsb0JBQy9CcUosc0RBQUEsQ0FBQ3VFLHdEQUFhO0lBQUNPLEtBQUssRUFBRUEsS0FBTTtJQUFBL0QsUUFBQSxFQUFFQTtFQUFRLENBQWdCLENBQUM7QUFBQSxDQUN4RDtBQUVEcUYsV0FBVyxDQUFDN0UsU0FBUyxHQUFHO0VBQ3RCUixRQUFRLEVBQUUxQix3REFBYyxDQUFDNkI7QUFDM0IsQ0FBQztBQUVELGlFQUFla0YsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzRkE7QUFDUztBQVFaO0FBQ29CO0FBQUE7QUFFM0MsTUFBTVUseUJBQXlCLEdBQUduUSxJQUFBLElBVzVCO0VBQUEsSUFBQW9RLGdCQUFBO0VBQUEsSUFYNkI7TUFDakNDLFFBQVE7TUFDUkMsaUJBQWlCLEdBQUcsRUFBRTtNQUN0QkMsVUFBVSxHQUFHLEtBQUs7TUFDbEJuRyxRQUFRO01BQ1JsSyxLQUFLO01BQ0xzUSxRQUFRO01BQ1JDLGFBQWE7TUFDYkMsS0FBSztNQUNMQztJQUVGLENBQUMsR0FBQTNRLElBQUE7SUFESTRRLElBQUksR0FBQUMscUZBQUEsQ0FBQTdRLElBQUEsRUFBQThRLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdPLElBQUksRUFBRTZPLFFBQVEsQ0FBQzVPLEVBQUUsQ0FBQztFQUN2RCxNQUFNdVAsYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTlGLFVBQVUsR0FBRzhGLFFBQVEsQ0FBQ1ksU0FBUztFQUNyQyxNQUFNQyxpQkFBaUIsR0FBR2IsUUFBUSxDQUFDYyxtQkFBbUI7RUFFdEQsTUFBTUMsZUFBZSxHQUNuQixFQUFBaEIsZ0JBQUEsR0FBQUMsUUFBUSxDQUFDdEcsTUFBTSxjQUFBcUcsZ0JBQUEsdUJBQWZBLGdCQUFBLENBQWlCM00sR0FBRyxDQUFFNE4sR0FBRyxLQUFNO0lBQzdCQyxLQUFLLEVBQUVELEdBQUcsQ0FBQ0MsS0FBSztJQUNoQnBSLEtBQUssRUFBRW1SLEdBQUcsQ0FBQzVQLEVBQUUsQ0FBQzhQLFFBQVEsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFFWCxNQUFNQyx3QkFBd0IsR0FBR0EsQ0FBQ0MsT0FBTyxFQUFFSixHQUFHLEtBQUs7SUFDakQsTUFBTUssVUFBVSxHQUFHeFIsS0FBSyxJQUFJLEVBQUU7SUFDOUIsTUFBTXlSLG1CQUFtQixHQUN2QlQsaUJBQWlCLEtBQUssQ0FBQyxJQUFJUSxVQUFVLENBQUNoVCxNQUFNLEtBQUt3UyxpQkFBaUI7SUFDcEUsSUFBSVUsUUFBUTtJQUVaLElBQUlILE9BQU8sRUFBRTtNQUNYRyxRQUFRLEdBQUdELG1CQUFtQixHQUFHRCxVQUFVLEdBQUcsQ0FBQyxHQUFHQSxVQUFVLEVBQUVMLEdBQUcsQ0FBQztJQUNwRSxDQUFDLE1BQU07TUFDTE8sUUFBUSxHQUFHRixVQUFVLENBQUMxVCxNQUFNLENBQUU2VCxDQUFDLElBQUtBLENBQUMsS0FBS1IsR0FBRyxDQUFDO0lBQ2hEO0lBRUFaLGFBQWEsQ0FBQ00sWUFBWSxFQUFFYSxRQUFRLENBQUM7RUFDdkMsQ0FBQztFQUVELG9CQUNFdkksc0RBQUE7SUFFRTVILEVBQUUsS0FBQWxELE1BQUEsQ0FBS3dTLFlBQVksZUFBYTtJQUNoQ3pFLFNBQVMsRUFBRWdFLGlCQUFrQjtJQUFBbEcsUUFBQSxlQUU3QmIsdURBQUEsQ0FBQ3FHLHNEQUFXO01BQ1ZsRixRQUFRLEVBQUU2RixVQUFXO01BQ3JCdUIsUUFBUSxFQUFFdkgsVUFBVztNQUNyQndILFNBQVM7TUFDVEMsTUFBTSxFQUFDLFFBQVE7TUFDZnRCLEtBQUssRUFBRUEsS0FBTTtNQUFBdEcsUUFBQSxnQkFFYmYsc0RBQUEsQ0FBQzJHLG9EQUFTO1FBQUE1RixRQUFBLEVBQUU0RztNQUFhLENBQVksQ0FBQyxFQUNyQ04sS0FBSyxpQkFBSXJILHNEQUFBLENBQUMwRyx5REFBYztRQUFBM0YsUUFBQSxFQUFFdUcsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUMsZUFDOUR0SCxzREFBQSxDQUFDeUcsb0RBQVM7UUFBQTFGLFFBQUEsRUFDUGdILGVBQWUsQ0FBQzNOLEdBQUcsQ0FBRXdPLEVBQUUsaUJBQ3RCNUksc0RBQUEsQ0FBQ3dHLDJEQUFnQjtVQUVmck8sSUFBSSxFQUFFdVAsWUFBYTtVQUNuQm1CLE9BQU8sZUFDTDdJLHNEQUFBLENBQUNzRyxtREFBUSxFQUFBL0ssYUFBQTtZQUNQNk0sT0FBTyxFQUFFdlIsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVpUyxRQUFRLENBQUNGLEVBQUUsQ0FBQy9SLEtBQUssQ0FBRTtZQUNuQ3NRLFFBQVEsRUFBRzRCLEVBQUUsSUFDWFosd0JBQXdCLENBQUNZLEVBQUUsQ0FBQ0MsTUFBTSxDQUFDWixPQUFPLEVBQUVRLEVBQUUsQ0FBQy9SLEtBQUs7WUFFdEQ7VUFBQSxHQUNJMFEsSUFBSSxDQUNULENBQ0Y7VUFDRFUsS0FBSyxFQUFFVyxFQUFFLENBQUNYO1FBQU0sR0FaWFcsRUFBRSxDQUFDWCxLQWFULENBQ0Y7TUFBQyxDQUNPLENBQUMsRUFDWGxILFFBQVE7SUFBQSxDQUNFO0VBQUMsR0FqQ1QyRyxZQWtDRixDQUFDO0FBRVYsQ0FBQztBQUVEWix5QkFBeUIsQ0FBQ3ZGLFNBQVMsR0FBRztFQUNwQ3lGLFFBQVEsRUFBRTNILDBEQUFnQixDQUFDNkIsVUFBVTtFQUNyQ3JLLEtBQUssRUFBRXdJLHlEQUFlO0VBQ3RCNEgsaUJBQWlCLEVBQUU1SCwwREFBZ0I7RUFDbkM2SCxVQUFVLEVBQUU3SCx3REFBYztFQUMxQjhILFFBQVEsRUFBRTlILHdEQUFjLENBQUM2QixVQUFVO0VBQ25DSCxRQUFRLEVBQUUxQix3REFBYztFQUN4QitILGFBQWEsRUFBRS9ILHdEQUFjO0VBQzdCZ0ksS0FBSyxFQUFFaEksd0RBQWM7RUFDckJpSSxVQUFVLEVBQUVqSSwwREFBZ0JpRTtBQUM5QixDQUFDO0FBRUQsaUVBQWV3RCx5QkFBeUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0R2Q7QUFDUztBQU1aO0FBQ21EO0FBQy9CO0FBQUE7QUFFM0MsTUFBTW9DLHFCQUFxQixHQUFHdlMsSUFBQSxJQVV4QjtFQUFBLElBVnlCO01BQzdCcVEsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQm5HLFFBQVE7TUFDUmxLLEtBQUs7TUFDTHdRLEtBQUs7TUFDTEMsVUFBVTtNQUNWRjtJQUVGLENBQUMsR0FBQXpRLElBQUE7SUFESTRRLElBQUksR0FBQUMscUZBQUEsQ0FBQTdRLElBQUEsRUFBQThRLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdPLElBQUksRUFBRTZPLFFBQVEsQ0FBQzVPLEVBQUUsQ0FBQztFQUN2RCxNQUFNdVAsYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTlGLFVBQVUsR0FBRzhGLFFBQVEsQ0FBQ1ksU0FBUztFQUVyQyxvQkFDRTVILHNEQUFBO0lBRUU1SCxFQUFFLEtBQUFsRCxNQUFBLENBQUt3UyxZQUFZLGVBQWE7SUFDaEN6RSxTQUFTLEVBQUVnRSxpQkFBa0I7SUFBQWxHLFFBQUEsZUFFN0JiLHVEQUFBLENBQUNxRyxzREFBVztNQUFDbUMsU0FBUztNQUFDQyxNQUFNLEVBQUMsUUFBUTtNQUFDdEIsS0FBSyxFQUFFQSxLQUFNO01BQUF0RyxRQUFBLGdCQUNsRGYsc0RBQUEsQ0FBQ3dHLDJEQUFnQjtRQUNmMkMsRUFBRSxFQUFFO1VBQUVDLFVBQVUsRUFBRTtRQUFhLENBQUU7UUFDakNQLE9BQU8sZUFDTDdJLHNEQUFBLENBQUNzRyxtREFBUSxFQUFBL0ssYUFBQTtVQUNQcEQsSUFBSSxFQUFFdVAsWUFBYTtVQUNuQlUsT0FBTyxFQUFFLENBQUMsQ0FBQ3ZSLEtBQU07VUFDakJvUixLQUFLLGVBQUVqSSxzREFBQSxDQUFDaUosNEZBQU87WUFBQWxJLFFBQUEsRUFBRTRHO1VBQWEsQ0FBVSxDQUFFO1VBQzFDd0IsRUFBRSxFQUFFO1lBQUVFLFNBQVMsRUFBRSxDQUFDO1VBQUU7VUFDcEI7UUFBQSxHQUNJOUIsSUFBSSxDQUNULENBQ0Y7UUFDRFUsS0FBSyxlQUFFakksc0RBQUEsQ0FBQ2lKLDRGQUFPO1VBQUFsSSxRQUFBLEVBQUU0RztRQUFhLENBQVUsQ0FBRTtRQUMxQ3RHLFFBQVEsRUFBRTZGLFVBQVc7UUFDckJ1QixRQUFRLEVBQUV2SDtNQUFXLENBQ3RCLENBQUMsRUFDREgsUUFBUSxFQUNSc0csS0FBSyxpQkFBSXJILHNEQUFBLENBQUMwRyx5REFBYztRQUFBM0YsUUFBQSxFQUFFdUcsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUM7SUFBQSxDQUNuRDtFQUFDLEdBdkJUSSxZQXdCRixDQUFDO0FBRVYsQ0FBQztBQUVEd0IscUJBQXFCLENBQUMzSCxTQUFTLEdBQUc7RUFDaEN5RixRQUFRLEVBQUUzSCwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDckNySyxLQUFLLEVBQUV3SSx3REFBYztFQUNyQjRILGlCQUFpQixFQUFFNUgsMERBQWdCO0VBQ25DNkgsVUFBVSxFQUFFN0gsd0RBQWM7RUFDMUIwQixRQUFRLEVBQUUxQix3REFBYztFQUN4QitILGFBQWEsRUFBRS9ILHdEQUFjO0VBQzdCZ0ksS0FBSyxFQUFFaEksd0RBQWM7RUFDckJpSSxVQUFVLEVBQUVqSSwwREFBZ0JpRTtBQUM5QixDQUFDO0FBRUQsaUVBQWU0RixxQkFBcUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkVWO0FBQ1M7QUFDdUM7QUFDL0I7QUFBQTtBQUUzQyxNQUFNTyxxQkFBcUIsR0FBRzlTLElBQUEsSUFTeEI7RUFBQSxJQUFBb1EsZ0JBQUE7RUFBQSxJQVR5QjtNQUM3QkMsUUFBUTtNQUNSQyxpQkFBaUIsR0FBRyxFQUFFO01BQ3RCQyxVQUFVLEdBQUcsS0FBSztNQUNsQkUsYUFBYTtNQUNickcsUUFBUTtNQUNSc0csS0FBSztNQUNMQztJQUVGLENBQUMsR0FBQTNRLElBQUE7SUFESTRRLElBQUksR0FBQUMscUZBQUEsQ0FBQTdRLElBQUEsRUFBQThRLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdPLElBQUksRUFBRTZPLFFBQVEsQ0FBQzVPLEVBQUUsQ0FBQztFQUN2RCxNQUFNdVAsYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTlGLFVBQVUsR0FBRzhGLFFBQVEsQ0FBQ1ksU0FBUztFQUVyQyxNQUFNRyxlQUFlLEdBQ25CLEVBQUFoQixnQkFBQSxHQUFBQyxRQUFRLENBQUN0RyxNQUFNLGNBQUFxRyxnQkFBQSx1QkFBZkEsZ0JBQUEsQ0FBaUIzTSxHQUFHLENBQUU0TixHQUFHLEtBQU07SUFDN0JDLEtBQUssRUFBRUQsR0FBRyxDQUFDQyxLQUFLO0lBQ2hCcFIsS0FBSyxFQUFFbVIsR0FBRyxDQUFDNVA7RUFDYixDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFFWCxvQkFDRTRILHNEQUFBO0lBRUU1SCxFQUFFLEtBQUFsRCxNQUFBLENBQUt3UyxZQUFZLGVBQWE7SUFDaEN6RSxTQUFTLEVBQUVnRSxpQkFBa0I7SUFBQWxHLFFBQUEsZUFFN0JiLHVEQUFBLENBQUNxRyxzREFBVztNQUNWbEYsUUFBUSxFQUFFNkYsVUFBVztNQUNyQnVCLFFBQVEsRUFBRXZILFVBQVc7TUFDckJ3SCxTQUFTO01BQ1RDLE1BQU0sRUFBQyxRQUFRO01BQ2Z0QixLQUFLLEVBQUVBLEtBQU07TUFBQXRHLFFBQUEsZ0JBRWJmLHNEQUFBLENBQUNzSixxREFBVTtRQUFDbFIsRUFBRSxLQUFBbEQsTUFBQSxDQUFLd1MsWUFBWSxXQUFTO1FBQUEzRyxRQUFBLEVBQUU0RztNQUFhLENBQWEsQ0FBQyxlQUNyRTNILHNEQUFBLENBQUN3SixpREFBTSxFQUFBak8sYUFBQSxDQUFBQSxhQUFBO1FBQ0xtTyxPQUFPLEtBQUF4VSxNQUFBLENBQUt3UyxZQUFZLFdBQVM7UUFDakN2UCxJQUFJLEVBQUV1UCxZQUFhO1FBQ25CdFAsRUFBRSxFQUFFc1AsWUFBYTtRQUNqQk8sS0FBSyxFQUFFTjtRQUNQO01BQUEsR0FDSUosSUFBSTtRQUNScEUsS0FBSyxFQUFFO1VBQUVxQyxZQUFZLEVBQUU7UUFBRyxDQUFFO1FBQUF6RSxRQUFBLEVBRTNCZ0gsZUFBZSxDQUFDM04sR0FBRyxDQUFFd08sRUFBRSxpQkFDdEI1SSxzREFBQSxDQUFDdUosbURBQVE7VUFBZ0IxUyxLQUFLLEVBQUUrUixFQUFFLENBQUMvUixLQUFNO1VBQUFrSyxRQUFBLEVBQ3RDNkgsRUFBRSxDQUFDWDtRQUFLLEdBRElXLEVBQUUsQ0FBQ1gsS0FFUixDQUNYO01BQUMsRUFDSSxDQUFDLEVBQ1JsSCxRQUFRO0lBQUEsQ0FDRTtFQUFDLEdBNUJUMkcsWUE2QkYsQ0FBQztBQUVWLENBQUM7QUFFRCtCLHFCQUFxQixDQUFDbEksU0FBUyxHQUFHO0VBQ2hDeUYsUUFBUSxFQUFFM0gsMERBQWdCLENBQUM2QixVQUFVO0VBQ3JDK0YsaUJBQWlCLEVBQUU1SCwwREFBZ0I7RUFDbkM2SCxVQUFVLEVBQUU3SCx3REFBYztFQUMxQjBCLFFBQVEsRUFBRTFCLHdEQUFjO0VBQ3hCZ0ksS0FBSyxFQUFFaEksd0RBQWM7RUFDckJpSSxVQUFVLEVBQUVqSSwwREFBZ0I7RUFDNUIrSCxhQUFhLEVBQUUvSCx3REFBY3FDO0FBQy9CLENBQUM7QUFFRCxpRUFBZStILHFCQUFxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN0RVY7QUFDUztBQVFaO0FBQ29CO0FBQUE7QUFFM0MsTUFBTUksc0JBQXNCLEdBQUdsVCxJQUFBLElBU3pCO0VBQUEsSUFBQW9RLGdCQUFBO0VBQUEsSUFUMEI7TUFDOUJDLFFBQVE7TUFDUkMsaUJBQWlCLEdBQUcsRUFBRTtNQUN0QkMsVUFBVSxHQUFHLEtBQUs7TUFDbEJuRyxRQUFRO01BQ1JzRyxLQUFLO01BQ0xDLFVBQVU7TUFDVkY7SUFFRixDQUFDLEdBQUF6USxJQUFBO0lBREk0USxJQUFJLEdBQUFDLHFGQUFBLENBQUE3USxJQUFBLEVBQUE4USxTQUFBO0VBRVAsTUFBTUMsWUFBWSxHQUFHYiw4Q0FBTSxDQUFDRyxRQUFRLENBQUM3TyxJQUFJLEVBQUU2TyxRQUFRLENBQUM1TyxFQUFFLENBQUM7RUFDdkQsTUFBTXVQLGFBQWEsR0FBR2YsZ0RBQVEsQ0FBQ0ksUUFBUSxDQUFDO0VBQ3hDLE1BQU05RixVQUFVLEdBQUc4RixRQUFRLENBQUNZLFNBQVM7RUFFckMsTUFBTUcsZUFBZSxHQUNuQixFQUFBaEIsZ0JBQUEsR0FBQUMsUUFBUSxDQUFDdEcsTUFBTSxjQUFBcUcsZ0JBQUEsdUJBQWZBLGdCQUFBLENBQWlCM00sR0FBRyxDQUFFNE4sR0FBRyxLQUFNO0lBQzdCQyxLQUFLLEVBQUVELEdBQUcsQ0FBQ0MsS0FBSztJQUNoQnBSLEtBQUssRUFBRW1SLEdBQUcsQ0FBQzVQLEVBQUUsQ0FBQzhQLFFBQVEsQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FBQyxLQUFJLEVBQUU7RUFFWCxvQkFDRWxJLHNEQUFBO0lBRUU1SCxFQUFFLEtBQUFsRCxNQUFBLENBQUt3UyxZQUFZLGVBQWE7SUFDaEN6RSxTQUFTLEVBQUVnRSxpQkFBa0I7SUFBQWxHLFFBQUEsZUFFN0JiLHVEQUFBLENBQUNxRyxzREFBVztNQUNWbEYsUUFBUSxFQUFFNkYsVUFBVztNQUNyQnVCLFFBQVEsRUFBRXZILFVBQVc7TUFDckJ3SCxTQUFTO01BQ1RDLE1BQU0sRUFBQyxRQUFRO01BQ2Z0QixLQUFLLEVBQUVBLEtBQU07TUFBQXRHLFFBQUEsZ0JBRWJmLHNEQUFBLENBQUMyRyxvREFBUztRQUFDdk8sRUFBRSxLQUFBbEQsTUFBQSxDQUFLd1MsWUFBWSxXQUFTO1FBQUEzRyxRQUFBLEVBQUU0RztNQUFhLENBQVksQ0FBQyxFQUNsRU4sS0FBSyxpQkFBSXJILHNEQUFBLENBQUMwRyx5REFBYztRQUFBM0YsUUFBQSxFQUFFdUcsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUMsZUFDOUR0SCxzREFBQSxDQUFDNEoscURBQVUsRUFBQXJPLGFBQUEsQ0FBQUEsYUFBQTtRQUNULHNCQUFBckcsTUFBQSxDQUFvQndTLFlBQVksV0FBUztRQUN6Q3ZQLElBQUksRUFBRXVQO1FBQ047TUFBQSxHQUNJSCxJQUFJO1FBQUF4RyxRQUFBLEVBRVBnSCxlQUFlLENBQUMzTixHQUFHLENBQUV3TyxFQUFFLGlCQUN0QjVJLHNEQUFBLENBQUN3RywyREFBZ0I7VUFFZjNQLEtBQUssRUFBRStSLEVBQUUsQ0FBQy9SLEtBQU07VUFDaEJnUyxPQUFPLGVBQUU3SSxzREFBQSxDQUFDMkosZ0RBQUssSUFBRSxDQUFFO1VBQ25CMUIsS0FBSyxFQUFFVyxFQUFFLENBQUNYO1FBQU0sR0FIWFcsRUFBRSxDQUFDWCxLQUlULENBQ0Y7TUFBQyxFQUNRLENBQUMsRUFDWmxILFFBQVE7SUFBQSxDQUNFO0VBQUMsR0E3QlQyRyxZQThCRixDQUFDO0FBRVYsQ0FBQztBQUVEbUMsc0JBQXNCLENBQUN0SSxTQUFTLEdBQUc7RUFDakN5RixRQUFRLEVBQUUzSCwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDckMrRixpQkFBaUIsRUFBRTVILDBEQUFnQjtFQUNuQzZILFVBQVUsRUFBRTdILHdEQUFjO0VBQzFCMEIsUUFBUSxFQUFFMUIsd0RBQWM7RUFDeEJnSSxLQUFLLEVBQUVoSSx3REFBYztFQUNyQmlJLFVBQVUsRUFBRWpJLDBEQUFnQjtFQUM1QitILGFBQWEsRUFBRS9ILHdEQUFjcUM7QUFDL0IsQ0FBQztBQUVELGlFQUFlbUksc0JBQXNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlFWDtBQUNTO0FBQ2tCO0FBQ1Y7QUFBQTtBQUUzQyxNQUFNRSxpQkFBaUIsR0FBR3BULElBQUEsSUFPcEI7RUFBQSxJQVBxQjtNQUN6QnFRLFFBQVE7TUFDUkMsaUJBQWlCLEdBQUcsRUFBRTtNQUN0QkMsVUFBVSxHQUFHLEtBQUs7TUFDbEJuRyxRQUFRO01BQ1JxRztJQUVGLENBQUMsR0FBQXpRLElBQUE7SUFESTRRLElBQUksR0FBQUMscUZBQUEsQ0FBQTdRLElBQUEsRUFBQThRLFNBQUE7RUFFUCxNQUFNQyxZQUFZLEdBQUdiLDhDQUFNLENBQUNHLFFBQVEsQ0FBQzdPLElBQUksRUFBRTZPLFFBQVEsQ0FBQzVPLEVBQUUsQ0FBQztFQUN2RCxNQUFNdVAsYUFBYSxHQUFHZixnREFBUSxDQUFDSSxRQUFRLENBQUM7RUFDeEMsTUFBTTlGLFVBQVUsR0FBRzhGLFFBQVEsQ0FBQ1ksU0FBUztFQUVyQyxvQkFDRTVILHNEQUFBO0lBRUU1SCxFQUFFLEtBQUFsRCxNQUFBLENBQUt3UyxZQUFZLGVBQWE7SUFDaEN6RSxTQUFTLEVBQUVnRSxpQkFBa0I7SUFBQWxHLFFBQUEsZUFFN0JiLHVEQUFBLENBQUN1RyxvREFBUztNQUFBMUYsUUFBQSxnQkFDUmYsc0RBQUEsQ0FBQzhKLG9EQUFTLEVBQUF2TyxhQUFBO1FBQ1JwRCxJQUFJLEVBQUV1UCxZQUFhO1FBQ25CTyxLQUFLLEVBQUVOLGFBQWM7UUFDckJ0RyxRQUFRLEVBQUU2RixVQUFXO1FBQ3JCdUIsUUFBUSxFQUFFdkgsVUFBVztRQUNyQndILFNBQVM7UUFDVEMsTUFBTSxFQUFDO1FBQ1A7TUFBQSxHQUNJcEIsSUFBSSxDQUNULENBQUMsRUFDRHhHLFFBQVE7SUFBQSxDQUNBO0VBQUMsR0FoQlAyRyxZQWlCRixDQUFDO0FBRVYsQ0FBQztBQUVEcUMsaUJBQWlCLENBQUN4SSxTQUFTLEdBQUc7RUFDNUJ5RixRQUFRLEVBQUUzSCwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDckMrRixpQkFBaUIsRUFBRTVILDBEQUFnQjtFQUNuQzZILFVBQVUsRUFBRTdILHdEQUFjO0VBQzFCMEIsUUFBUSxFQUFFMUIsd0RBQWM7RUFDeEIrSCxhQUFhLEVBQUUvSCx3REFBY3FDO0FBQy9CLENBQUM7QUFFRCxpRUFBZXFJLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUNWO0FBRWYsTUFBTU0sU0FBUyxHQUFHQSxDQUFDeFQsS0FBSyxFQUFFeVQsSUFBSSxLQUFLO0VBQ3hDLE1BQU01SixNQUFNLEdBQUc0SixJQUFJLENBQUNDLGFBQWE7RUFFakMsSUFBSSxDQUFDMVQsS0FBSyxFQUFFLE9BQU8sS0FBSztFQUV4QixJQUFJMlQsS0FBSyxDQUFDQyxPQUFPLENBQUM1VCxLQUFLLENBQUMsRUFBRTtJQUN4QixJQUFJLENBQUNBLEtBQUssQ0FBQ3hCLE1BQU0sRUFBRSxPQUFPLEtBQUs7SUFDL0IsSUFBSVcsR0FBRyxHQUFHc1UsSUFBSSxDQUFDSSxzQkFBc0IsS0FBSyxLQUFLO0lBQy9DaEssTUFBTSxDQUFDaEssT0FBTyxDQUFFOFIsQ0FBQyxJQUFLO01BQ3BCLElBQUk4QixJQUFJLENBQUNJLHNCQUFzQixLQUFLLEtBQUssRUFBRTtRQUN6QzFVLEdBQUcsR0FBR0EsR0FBRyxJQUFJYSxLQUFLLENBQUNpUyxRQUFRLENBQUNOLENBQUMsQ0FBQztNQUNoQyxDQUFDLE1BQU07UUFDTDtRQUNBeFMsR0FBRyxHQUFHQSxHQUFHLElBQUlhLEtBQUssQ0FBQ2lTLFFBQVEsQ0FBQ04sQ0FBQyxDQUFDO01BQ2hDO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsT0FBT3hTLEdBQUc7RUFDWjtFQUNBLE9BQU8wSyxNQUFNLENBQUNvSSxRQUFRLENBQUNqUyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXFSLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDM0MsQ0FBQztBQUVNLE1BQU15QyxlQUFlLEdBQUdBLENBQUNMLElBQUksRUFBRU0sVUFBVSxLQUFLO0VBQ25ELElBQUlOLElBQUksQ0FBQ08sVUFBVSxLQUFLLFNBQVMsRUFBRTtJQUNqQyxJQUFJUCxJQUFJLENBQUNRLG9CQUFvQixLQUFLLE9BQU8sRUFBRTtNQUN6QyxPQUFPLENBQUMsQ0FBQ0YsVUFBVTtJQUNyQjtJQUNBO0lBQ0EsT0FBTyxDQUFDQSxVQUFVO0VBQ3BCO0VBQ0E7RUFDQSxJQUFJTixJQUFJLENBQUNRLG9CQUFvQixLQUFLLE9BQU8sRUFBRTtJQUN6QyxPQUFPLENBQUNGLFVBQVU7RUFDcEI7RUFDQSxPQUFPLENBQUMsQ0FBQ0EsVUFBVTtBQUNyQixDQUFDO0FBRU0sTUFBTS9ELE1BQU0sR0FBR0EsQ0FBQzVFLElBQUksRUFBRThJLFVBQVUsS0FBSztFQUMxQyxNQUFNQyxNQUFNLEdBQUcvSSxJQUFJLENBQUNnSixXQUFXLENBQUMsQ0FBQztFQUNqQyxVQUFBL1YsTUFBQSxDQUFVOFYsTUFBTSxDQUFDRSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLE9BQUFoVyxNQUFBLENBQUk2VixVQUFVO0FBQy9ELENBQUM7QUFFTSxNQUFNbkUsUUFBUSxHQUFJdUUsQ0FBQztFQUFBLElBQUFDLFFBQUE7RUFBQSxRQUN4QjtJQUNBRCxDQUFDLGFBQURBLENBQUMsZ0JBQUFDLFFBQUEsR0FBREQsQ0FBQyxDQUFFbEQsS0FBSyxjQUFBbUQsUUFBQSx1QkFBUkEsUUFBQSxDQUFVRixPQUFPLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDQSxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsSUFBSTtFQUFDO0FBQUE7QUFFeEQsTUFBTUcsVUFBVSxHQUFJQyxNQUFNLElBQUs7RUFDcEMsSUFBSSxDQUFDQSxNQUFNLEVBQUUsT0FBTyxLQUFLO0VBQ3pCO0VBQ0EsSUFBSWQsS0FBSyxDQUFDQyxPQUFPLENBQUNhLE1BQU0sQ0FBQyxFQUFFLE9BQU9BLE1BQU0sQ0FBQ2pXLE1BQU0sR0FBRyxDQUFDO0VBQ25ELElBQUksT0FBT2lXLE1BQU0sS0FBSyxRQUFRLEVBQUUsT0FBT0EsTUFBTSxDQUFDalcsTUFBTSxHQUFHLENBQUM7RUFDeEQsSUFBSSxPQUFPaVcsTUFBTSxLQUFLLFFBQVEsRUFBRSxPQUFPQSxNQUFNLEdBQUcsQ0FBQztFQUNqRCxJQUFJLE9BQU9BLE1BQU0sS0FBSyxTQUFTLEVBQUUsT0FBT0EsTUFBTTtFQUM5QyxPQUFPLEtBQUs7QUFDZCxDQUFDO0FBRU0sTUFBTUMsaUJBQWlCLEdBQUdBLENBQUNELE1BQU0sRUFBRUUsVUFBVSxLQUFLO0VBQ3ZELE1BQU1DLFdBQVcsR0FBR2pCLEtBQUssQ0FBQ0MsT0FBTyxDQUFDYSxNQUFNLENBQUMsR0FBR0EsTUFBTSxHQUFHLENBQUNBLE1BQU0sQ0FBQztFQUU3RCxPQUFPRyxXQUFXLENBQUNDLElBQUksQ0FBRWxELENBQUMsSUFBSztJQUM3QixJQUFJZ0MsS0FBSyxDQUFDQyxPQUFPLENBQUNlLFVBQVUsQ0FBQyxFQUFFO01BQzdCLE9BQU9BLFVBQVUsQ0FBQzFDLFFBQVEsQ0FBQ04sQ0FBQyxDQUFDO0lBQy9CO0lBQ0EsT0FBT0EsQ0FBQyxLQUFLZ0QsVUFBVTtFQUN6QixDQUFDLENBQUM7QUFDSixDQUFDO0FBRU0sTUFBTUcsbUJBQW1CLEdBQUlSLENBQUMsSUFBSztFQUN4QyxRQUFRQSxDQUFDLENBQUNTLElBQUk7SUFDWixLQUFLNUIsNkRBQXFCO01BQ3hCLE9BQU8sS0FBSztJQUNkLEtBQUtJLG9FQUE0QjtNQUMvQixPQUFPLElBQUk7SUFDYixLQUFLSCxpRUFBeUI7TUFDNUIsT0FBTyxFQUFFO0lBQ1gsS0FBS0Usb0VBQTRCO0lBQ2pDLEtBQUtELDZEQUFxQjtNQUN4QixPQUFPLEVBQUU7SUFDWDtNQUNFLE9BQU8sRUFBRTtFQUNiO0FBQ0YsQ0FBQztBQUVNLE1BQU0yQixZQUFZLEdBQUdBLENBQUNDLEdBQUcsRUFBRUYsSUFBSSxLQUFLO0VBQ3pDLFFBQVFBLElBQUk7SUFDVixLQUFLNUIsNkRBQXFCO01BQ3hCLE9BQU84QixHQUFHLEtBQUssTUFBTTtJQUN2QixLQUFLN0IsaUVBQXlCO01BQzVCLE9BQU8sQ0FBQTZCLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUksRUFBRTtJQUM5QixLQUFLNUIsb0VBQTRCO0lBQ2pDLEtBQUtELDZEQUFxQjtNQUN4QixPQUFPNEIsR0FBRyxJQUFJLEVBQUU7SUFDbEIsS0FBSzFCLG9FQUE0QjtNQUMvQixPQUFPMEIsR0FBRyxJQUFJLElBQUk7SUFDcEI7TUFDRSxPQUFPQSxHQUFHO0VBQ2Q7QUFDRixDQUFDO0FBRU0sTUFBTUUscUJBQXFCLEdBQUlwUCxPQUFPLElBQUs7RUFDaEQsTUFBTTtNQUNKWixjQUFjO01BQ2RDLG1CQUFtQjtNQUNuQkMsa0JBQWtCO01BQ2xCVixnQkFBZ0I7TUFDaEJ5UTtJQUVGLENBQUMsR0FBR3JQLE9BQU87SUFETnNQLGVBQWUsR0FBQTFFLHFGQUFBLENBQ2hCNUssT0FBTyxFQUFBNkssU0FBQTtFQUVYLE1BQU0wRSxXQUFXLEdBQUc1VixNQUFNLENBQUNDLE9BQU8sQ0FBQzBWLGVBQWUsQ0FBQyxDQUFDOVIsR0FBRyxDQUFDekQsSUFBQTtJQUFBLElBQUMsQ0FBQ0MsR0FBRyxFQUFFQyxLQUFLLENBQUMsR0FBQUYsSUFBQTtJQUFBLE9BQU07TUFDekV5VixXQUFXLEVBQUVDLFFBQVEsQ0FBQ3pWLEdBQUcsQ0FBQ21WLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQ08sR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7TUFDL0NoQixNQUFNLEVBQUUsQ0FBQXpVLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFcVIsUUFBUSxDQUFDLENBQUMsS0FBSTtJQUMvQixDQUFDO0VBQUEsQ0FBQyxDQUFDO0VBRUgsT0FBTztJQUNMbE0sY0FBYztJQUNkQyxtQkFBbUI7SUFDbkJDLGtCQUFrQjtJQUNsQlYsZ0JBQWdCO0lBQ2hCeVEsbUJBQW1CO0lBQ25CQyxlQUFlLEVBQUVDO0VBQ25CLENBQUM7QUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqSU0sTUFBTUksaUJBQWlCLEdBQUcsTUFBTTtBQUNoQyxNQUFNQyxxQkFBcUIsR0FBRyxVQUFVO0FBQ3hDLE1BQU14QyxxQkFBcUIsR0FBRyxVQUFVO0FBQ3hDLE1BQU1JLDRCQUE0QixHQUFHLGlCQUFpQjtBQUN0RCxNQUFNRixxQkFBcUIsR0FBRyxVQUFVO0FBQ3hDLE1BQU1ELHlCQUF5QixHQUFHLGNBQWM7QUFDaEQsTUFBTUUsNEJBQTRCLEdBQUcsaUJBQWlCO0FBQ3RELE1BQU1zQyx3QkFBd0IsR0FBRyxhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1ByRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFPUDtBQVNQO0FBQzBDO0FBQ1E7QUFDRTtBQUNNO0FBQ1I7QUFBQTtBQUV2RSxNQUFNQyx5QkFBeUIsR0FBSUMsWUFBWSxJQUFLO0VBQ2xELFFBQVFBLFlBQVk7SUFDbEIsS0FBS0gsNkRBQXFCO0lBQzFCLEtBQUtELHlEQUFpQjtNQUFFO1FBQ3RCLE9BQU94QyxxRUFBaUI7TUFDMUI7SUFDQSxLQUFLQyw2REFBcUI7TUFBRTtRQUMxQixPQUFPZCx5RUFBcUI7TUFDOUI7SUFDQSxLQUFLa0Isb0VBQTRCO01BQUU7UUFDakMsT0FBT1AsMEVBQXNCO01BQy9CO0lBQ0EsS0FBS0ksaUVBQXlCO01BQUU7UUFDOUIsT0FBT25ELDZFQUF5QjtNQUNsQztJQUNBLEtBQUtxRCxvRUFBNEI7SUFDakMsS0FBS0QsNkRBQXFCO01BQUU7UUFDMUIsT0FBT1QseUVBQXFCO01BQzlCO0lBQ0E7TUFBUztRQUNQLE9BQU9ySyx1REFBYztNQUN2QjtFQUNGO0FBQ0YsQ0FBQztBQUVELE1BQU1LLG9CQUFvQixHQUFHOUksSUFBQSxJQU92QjtFQUFBLElBUHdCO0lBQzVCM0QsY0FBYztJQUNkaVEsU0FBUyxHQUFHLGdCQUFnQjtJQUM1QmdFLGlCQUFpQixHQUFHLGVBQWU7SUFDbkM0RixRQUFRLEdBQUcsS0FBSztJQUNoQkMsU0FBUyxHQUFHLElBQUk7SUFDaEJ4TTtFQUNGLENBQUMsR0FBQTNKLElBQUE7RUFDQyxNQUFNb1csVUFBVSxHQUFHQSxDQUFDekMsSUFBSSxFQUFFNUMsWUFBWSxLQUFLO0lBQ3pDLE1BQU1rRCxVQUFVLEdBQUdQLDREQUFTLENBQUMvSixNQUFNLENBQUNJLE1BQU0sQ0FBQ2dILFlBQVksQ0FBQyxFQUFFNEMsSUFBSSxDQUFDO0lBQy9ELE1BQU0wQyxTQUFTLEdBQUdyQyxrRUFBZSxDQUFDTCxJQUFJLEVBQUVNLFVBQVUsQ0FBQztJQUVuRCxJQUFJb0MsU0FBUyxFQUFFO01BQ2I7TUFDQSxPQUFPQyxjQUFjLENBQUMzQyxJQUFJLENBQUM0QyxZQUFZLENBQUM7SUFDMUM7SUFFQSxPQUFPLElBQUk7RUFDYixDQUFDO0VBRUQsTUFBTUQsY0FBYyxHQUFJOUIsQ0FBQyxJQUFLO0lBQUEsSUFBQWdDLHFCQUFBO0lBQzVCLE1BQU16RixZQUFZLEdBQUdiLHlEQUFNLENBQUNzRSxDQUFDLENBQUNoVCxJQUFJLEVBQUVnVCxDQUFDLENBQUMvUyxFQUFFLENBQUM7SUFDekM7SUFDQSxNQUFNOE8sVUFBVSxHQUNiLENBQUM0RixTQUFTLElBQUl6Qiw2REFBVSxDQUFDL0ssTUFBTSxDQUFDSSxNQUFNLENBQUNnSCxZQUFZLENBQUMsQ0FBQyxJQUFLbUYsUUFBUTtJQUNyRSxNQUFNTyxzQkFBc0IsR0FBR1YseUJBQXlCLENBQUN2QixDQUFDLENBQUNTLElBQUksQ0FBQztJQUVoRSxNQUFNeUIsV0FBVyxHQUFHO01BQ2xCeFcsS0FBSyxFQUFFeUosTUFBTSxDQUFDSSxNQUFNLENBQUNnSCxZQUFZLENBQUM7TUFDbENQLFFBQVEsRUFBRTdHLE1BQU0sQ0FBQ2dOLFlBQVk7TUFDN0JDLE1BQU0sRUFBRWpOLE1BQU0sQ0FBQ2tOLFVBQVU7TUFDekJuRyxLQUFLLEVBQ0gvRyxNQUFNLENBQUNtTixPQUFPLENBQUMvRixZQUFZLENBQUMsSUFBSWdHLE9BQU8sQ0FBQ3BOLE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQ2lSLFlBQVksQ0FBQyxDQUFDO01BQ3RFSixVQUFVLEVBQUVoSCxNQUFNLENBQUNtTixPQUFPLENBQUMvRixZQUFZLENBQUMsSUFBSXBILE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQ2lSLFlBQVksQ0FBQztNQUN2RU4sYUFBYSxFQUFFOUcsTUFBTSxDQUFDOEc7SUFDeEIsQ0FBQztJQUVELG9CQUNFcEgsdURBQUEsQ0FBQ29OLHNCQUFzQixFQUFBN1IsYUFBQSxDQUFBQSxhQUFBO01BRXJCeUwsUUFBUSxFQUFFbUUsQ0FBRTtNQUNabEUsaUJBQWlCLEVBQUVBLGlCQUFrQjtNQUNyQ0MsVUFBVSxFQUFFQTtNQUNaO0lBQUEsR0FDSW1HLFdBQVc7TUFBQXRNLFFBQUEsR0FBQW9NLHFCQUFBLEdBRWRoQyxDQUFDLENBQUN3QyxrQkFBa0IsY0FBQVIscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFzQi9TLEdBQUcsQ0FBRWtRLElBQUksSUFBS3lDLFVBQVUsQ0FBQ3pDLElBQUksRUFBRTVDLFlBQVksQ0FBQztJQUFDLElBUC9EQSxZQVFpQixDQUFDO0VBRTdCLENBQUM7RUFFRCxvQkFBTzFILHVEQUFBO0lBQUtpRCxTQUFTLEVBQUVBLFNBQVU7SUFBQWxDLFFBQUEsRUFBRS9OLGNBQWMsQ0FBQ29ILEdBQUcsQ0FBQzZTLGNBQWM7RUFBQyxDQUFNLENBQUM7QUFDOUUsQ0FBQztBQUVEeE4sb0JBQW9CLENBQUM4QixTQUFTLEdBQUc7RUFDL0J2TyxjQUFjLEVBQUVxTSx5REFBZSxDQUFDNkIsVUFBVTtFQUMxQytCLFNBQVMsRUFBRTVELDBEQUFnQjtFQUMzQjRILGlCQUFpQixFQUFFNUgsMERBQWdCO0VBQ25DeU4sU0FBUyxFQUFFek4sd0RBQWM7RUFDekJ3TixRQUFRLEVBQUV4Tix3REFBY2tFO0FBQzFCLENBQUM7QUFFRCxpRUFBZTlELG9CQUFvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVISztBQUNnQjtBQUNyQjtBQVVaO0FBQ3FDO0FBQ2I7QUFDWTtBQUFBO0FBRTNELE1BQU0wTyxjQUFjLEdBQUd4WCxJQUFBLElBQWtCO0VBQUEsSUFBakI7SUFBRXlYO0VBQVMsQ0FBQyxHQUFBelgsSUFBQTtFQUNsQyxNQUFNO0lBQ0poQyxNQUFNLEVBQUU7TUFBRU4sMEJBQTBCLEVBQUVnYTtJQUFhO0VBQ3JELENBQUMsR0FBR1Qsd0RBQVcsQ0FBRVUsS0FBSyxJQUFLQSxLQUFLLENBQUM1VyxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUVtVyxxREFBWSxDQUFDO0VBRWpFLE1BQU0sQ0FBQ1UsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRzlMLCtDQUFRLENBQUMsQ0FBQyxDQUFDMkwsWUFBWSxDQUFDO0VBRTVELE1BQU1JLGNBQWMsR0FBRyxDQUNyQjtJQUFFNVgsS0FBSyxFQUFFLElBQUk7SUFBRW9SLEtBQUssRUFBRTtFQUFLLENBQUMsRUFDNUI7SUFBRXBSLEtBQUssRUFBRSxhQUFhO0lBQUVvUixLQUFLLEVBQUU7RUFBZSxDQUFDLEVBQy9DO0lBQUVwUixLQUFLLEVBQUUsUUFBUTtJQUFFb1IsS0FBSyxFQUFFO0VBQVMsQ0FBQyxDQUNyQztFQUVELE1BQU15RyxrQkFBa0IsR0FBR0EsQ0FBQzNGLEVBQUUsRUFBRWxTLEtBQUssS0FBSztJQUN4QyxNQUFNOFgsU0FBUyxHQUFHOVgsS0FBSztJQUN2QnVYLFFBQVEsQ0FBQztNQUNQLENBQUMvWixnRUFBMEIsR0FBR3NhO0lBQ2hDLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxvQkFDRXpPLHVEQUFBLENBQUNYLDhDQUFHO0lBQUF3QixRQUFBLGdCQUNGZixzREFBQSxDQUFDOE4scURBQVU7TUFDVDdXLEtBQUssRUFBQyxVQUFVO01BQ2hCZ00sU0FBUyxFQUFFbkIsNkRBQW9CO01BQy9CdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1tTCxhQUFhLENBQUMsQ0FBQ0QsVUFBVSxDQUFFO01BQzFDTSxNQUFNLGVBQ0o3TyxzREFBQSxDQUFDK04scURBQVU7UUFBQyxjQUFXLFFBQVE7UUFBQ2UsYUFBYTtRQUFBL04sUUFBQSxlQUMzQ2Ysc0RBQUEsQ0FBQ2tPLHVFQUFjO1VBQ2IvSyxLQUFLLEVBQUU7WUFDTDRMLFNBQVMsRUFBRVIsVUFBVSxHQUFHLGdCQUFnQixHQUFHLGNBQWM7WUFDekRTLFVBQVUsRUFBRTtVQUNkO1FBQUUsQ0FDSDtNQUFDLENBQ1E7SUFDYixDQUNGLENBQUMsZUFDRmhQLHNEQUFBLENBQUNnTyxtREFBUTtNQUFDaUIsRUFBRSxFQUFFVixVQUFXO01BQUNXLE9BQU8sRUFBQyxNQUFNO01BQUNDLGFBQWE7TUFBQXBPLFFBQUEsZUFDcERmLHNEQUFBLENBQUNpTyxzREFBVztRQUNWOUUsRUFBRSxFQUFFO1VBQ0ZpRyxFQUFFLEVBQUUsQ0FBQztVQUNMakosZUFBZSxFQUFFLFdBQVc7VUFDNUIsY0FBYyxFQUFFO1lBQ2RrSixFQUFFLEVBQUU7VUFDTjtRQUNGLENBQUU7UUFBQXRPLFFBQUEsZUFFRmYsc0RBQUEsQ0FBQzRKLHFEQUFVO1VBQUMvUyxLQUFLLEVBQUV3WCxZQUFhO1VBQUNsSCxRQUFRLEVBQUV1SCxrQkFBbUI7VUFBQTNOLFFBQUEsRUFDM0QwTixjQUFjLENBQUNyVSxHQUFHLENBQUVrVixRQUFRLGlCQUMzQnRQLHNEQUFBLENBQUNULDhDQUFHO1lBQ0Y0SixFQUFFLEVBQUU7Y0FBRWlHLEVBQUUsRUFBRTtZQUFFLENBQUU7WUFBQXJPLFFBQUEsZUFHZGYsc0RBQUEsQ0FBQ3dHLDJEQUFnQjtjQUNmcUMsT0FBTyxlQUNMN0ksc0RBQUEsQ0FBQzJKLGdEQUFLO2dCQUNKOVMsS0FBSyxFQUFFeVksUUFBUSxDQUFDelksS0FBTTtnQkFDdEJzUyxFQUFFLEVBQUU7a0JBQ0Ysb0JBQW9CLEVBQUU7b0JBQUU5RCxRQUFRLEVBQUU7a0JBQUcsQ0FBQztrQkFDdEMsZUFBZSxFQUFFO29CQUFFVyxLQUFLLEVBQUU7a0JBQVU7Z0JBQ3RDO2NBQUUsQ0FDSCxDQUNGO2NBQ0RpQyxLQUFLLEVBQUVxSCxRQUFRLENBQUNySCxLQUFNO2NBQ3RCa0IsRUFBRSxFQUFFO2dCQUNGLDhCQUE4QixFQUFFO2tCQUM5QjlELFFBQVEsRUFBRTtnQkFDWjtjQUNGO1lBQUUsQ0FDSDtVQUFDLDJCQUFBblEsTUFBQSxDQWxCMkJvYSxRQUFRLENBQUNySCxLQUFLLE1BbUJ4QyxDQUNOO1FBQUMsQ0FDUTtNQUFDLENBQ0Y7SUFBQyxDQUNOLENBQUM7RUFBQSxDQUNSLENBQUM7QUFFVixDQUFDO0FBRURrRyxjQUFjLENBQUM1TSxTQUFTLEdBQUc7RUFDekI2TSxRQUFRLEVBQUUvTyx3REFBY3FDO0FBQzFCLENBQUM7QUFFRCxpRUFBZXlNLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwR3NCO0FBQ0s7QUFDckI7QUFTWjtBQUNxQztBQUNiO0FBQ1U7QUFBQTtBQUV6RCxNQUFNcUIsa0JBQWtCLEdBQUc3WSxJQUFBLElBQWtCO0VBQUEsSUFBakI7SUFBRXlYO0VBQVMsQ0FBQyxHQUFBelgsSUFBQTtFQUN0QyxNQUFNO0lBQ0ozQyxNQUFNLEVBQUU7TUFBRXliO0lBQXFCLENBQUM7SUFDaEM5YSxNQUFNLEVBQUU7TUFBRVIsd0JBQXdCLEVBQUVrYTtJQUFhO0VBQ25ELENBQUMsR0FBR1Qsd0RBQVcsQ0FBRVUsS0FBSyxJQUFLQSxLQUFLLENBQUM1VyxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUVtVyxxREFBWSxDQUFDO0VBRWpFLE1BQU0sQ0FBQ1UsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRzlMLCtDQUFRLENBQUMsQ0FBQyxDQUFDMkwsWUFBWSxDQUFDaFosTUFBTSxDQUFDO0VBRW5FLE1BQU1xWixrQkFBa0IsR0FBSTdYLEtBQUssSUFBSztJQUNwQyxNQUFNNlksVUFBVSxHQUFHckIsWUFBWSxhQUFaQSxZQUFZLGVBQVpBLFlBQVksQ0FBRXZGLFFBQVEsQ0FBQ2pTLEtBQUssQ0FBQyxHQUM1Q3dYLFlBQVksQ0FBQzFaLE1BQU0sQ0FBRWdiLENBQUMsSUFBS0EsQ0FBQyxLQUFLOVksS0FBSyxDQUFDLEdBQ3ZDLENBQUMsR0FBR3dYLFlBQVksRUFBRXhYLEtBQUssQ0FBQztJQUM1QnVYLFFBQVEsQ0FBQztNQUNQLENBQUNqYSw4REFBd0IsR0FBR3ViO0lBQzlCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFREgsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2RmLGFBQWEsQ0FBQyxDQUFDLENBQUNILFlBQVksQ0FBQ2haLE1BQU0sQ0FBQztFQUN0QyxDQUFDLEVBQUUsQ0FBQ2daLFlBQVksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFbk8sdURBQUEsQ0FBQ1gsOENBQUc7SUFBQXdCLFFBQUEsZ0JBQ0ZmLHNEQUFBLENBQUM4TixxREFBVTtNQUNUN1csS0FBSyxFQUFDLGVBQWU7TUFDckJnTSxTQUFTLEVBQUVuQiw2REFBb0I7TUFDL0J1QixPQUFPLEVBQUVBLENBQUEsS0FBTW1MLGFBQWEsQ0FBQyxDQUFDRCxVQUFVLENBQUU7TUFDMUNNLE1BQU0sZUFDSjdPLHNEQUFBLENBQUMrTixxREFBVTtRQUFDLGNBQVcsUUFBUTtRQUFDZSxhQUFhO1FBQUEvTixRQUFBLGVBQzNDZixzREFBQSxDQUFDa08sdUVBQWM7VUFDYi9LLEtBQUssRUFBRTtZQUNMNEwsU0FBUyxFQUFFUixVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsY0FBYztZQUN6RFMsVUFBVSxFQUFFO1VBQ2Q7UUFBRSxDQUNIO01BQUMsQ0FDUTtJQUNiLENBQ0YsQ0FBQyxlQUNGaFAsc0RBQUEsQ0FBQ2dPLG1EQUFRO01BQUNpQixFQUFFLEVBQUVWLFVBQVc7TUFBQ1csT0FBTyxFQUFDLE1BQU07TUFBQ0MsYUFBYTtNQUFBcE8sUUFBQSxlQUNwRGYsc0RBQUEsQ0FBQ2lPLHNEQUFXO1FBQ1Y5RSxFQUFFLEVBQUU7VUFDRmlHLEVBQUUsRUFBRSxDQUFDO1VBQ0xqSixlQUFlLEVBQUUsV0FBVztVQUM1QixjQUFjLEVBQUU7WUFDZGtKLEVBQUUsRUFBRTtVQUNOO1FBQ0YsQ0FBRTtRQUFBdE8sUUFBQSxFQUVEME8sb0JBQW9CLENBQUNyVixHQUFHLENBQUV3VixFQUFFLGlCQUMzQjVQLHNEQUFBLENBQUNULDhDQUFHO1VBQUM0SixFQUFFLEVBQUU7WUFBRWlHLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFBQXJPLFFBQUEsZUFDakJmLHNEQUFBLENBQUN3RywyREFBZ0I7WUFDZnFDLE9BQU8sZUFDTDdJLHNEQUFBLENBQUNzRyxtREFBUTtjQUNQYSxRQUFRLEVBQUVBLENBQUEsS0FBTXVILGtCQUFrQixDQUFDa0IsRUFBRSxDQUFDeFgsRUFBRSxDQUFFO2NBQzFDZ1EsT0FBTyxFQUFFaUcsWUFBWSxDQUFDdkYsUUFBUSxDQUFDOEcsRUFBRSxDQUFDeFgsRUFBRSxDQUFFO2NBQ3RDK1EsRUFBRSxFQUFFO2dCQUNGLG9CQUFvQixFQUFFO2tCQUFFOUQsUUFBUSxFQUFFO2dCQUFHLENBQUM7Z0JBQ3RDLGVBQWUsRUFBRTtrQkFDZlcsS0FBSyxFQUFFO2dCQUNUO2NBQ0Y7WUFBRSxDQUNILENBQ0Y7WUFDRGlDLEtBQUssRUFBRTJILEVBQUUsQ0FBQ3pYLElBQUs7WUFDZmdSLEVBQUUsRUFBRTtjQUNGLDhCQUE4QixFQUFFO2dCQUM5QjlELFFBQVEsRUFBRTtjQUNaO1lBQ0Y7VUFBRSxDQUNIO1FBQUMsMkJBQUFuUSxNQUFBLENBcEI2QzBhLEVBQUUsQ0FBQ3pYLElBQUksTUFxQm5ELENBQ047TUFBQyxDQUNTO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDUixDQUFDO0FBRVYsQ0FBQztBQUVEcVgsa0JBQWtCLENBQUNqTyxTQUFTLEdBQUc7RUFDN0I2TSxRQUFRLEVBQUUvTyx3REFBY3FDO0FBQzFCLENBQUM7QUFFRCxpRUFBZThOLGtCQUFrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRzBCO0FBQ3hCO0FBQ0s7QUFDb0I7QUFTckM7QUFDd0I7QUFDVDtBQUNTO0FBQ087QUFRL0I7QUFDMkI7QUFDSjtBQUNKO0FBQ0k7QUFDRTtBQUFBO0FBRWhELE1BQU1rQixNQUFNLEdBQUcvWixJQUFBLElBQW1DO0VBQUEsSUFBbEM7SUFBRXlYLFFBQVE7SUFBRXVDLE9BQU87SUFBRWhjO0VBQU8sQ0FBQyxHQUFBZ0MsSUFBQTtFQUMzQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQ3NSLGNBQWMsRUFBRUMsaUJBQWlCLENBQUMsR0FBR25PLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQzNELE1BQU0sQ0FBQ29PLGNBQWMsRUFBRUMsaUJBQWlCLENBQUMsR0FBR3JPLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQzNELE1BQU0sQ0FBQ3NPLGVBQWUsRUFBRUMsa0JBQWtCLENBQUMsR0FBR3ZPLCtDQUFRLENBQUMsSUFBSSxDQUFDO0VBQzVELE1BQU13TyxTQUFTLEdBQUdyQiw2Q0FBTSxDQUFDLElBQUksQ0FBQztFQUM5QixNQUFNc0Isd0JBQXdCLEdBQUlDLEtBQUssSUFBSztJQUMxQyxJQUFJRixTQUFTLENBQUNHLE9BQU8sSUFBSSxDQUFDSCxTQUFTLENBQUNHLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDRixLQUFLLENBQUNwSSxNQUFNLENBQUMsRUFBRTtNQUNsRSxJQUFJNEgsY0FBYyxFQUFFO1FBQ2xCQyxpQkFBaUIsQ0FBQyxLQUFLLENBQUM7UUFDeEJFLGlCQUFpQixDQUFDLEtBQUssQ0FBQztNQUMxQjtJQUNGO0VBQ0YsQ0FBQztFQUNEeEIsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2Q3USxRQUFRLENBQUM2UyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUVKLHdCQUF3QixFQUFFLEtBQUssQ0FBQztJQUNuRSxPQUFPLE1BQU07TUFDWHpTLFFBQVEsQ0FBQzhTLG1CQUFtQixDQUFDLE9BQU8sRUFBRUwsd0JBQXdCLEVBQUUsS0FBSyxDQUFDO0lBQ3hFLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ1AsY0FBYyxDQUFDLENBQUM7RUFFcEIsTUFBTWEsdUJBQXVCLEdBQUcsQ0FBQztFQUNqQyxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDO0VBRTNCLE1BQU1DLHNCQUFzQixHQUFJelosT0FBTyxJQUFLO0lBQzFDLElBQUkwWixLQUFLLEdBQUcsQ0FBQztJQUNicmIsTUFBTSxDQUFDQyxPQUFPLENBQUMwQixPQUFPLENBQUMsQ0FBQ3hCLE9BQU8sQ0FBQ1UsS0FBQSxJQUFlO01BQUEsSUFBZCxHQUFHUCxLQUFLLENBQUMsR0FBQU8sS0FBQTtNQUN4QyxJQUFJb1QsS0FBSyxDQUFDQyxPQUFPLENBQUM1VCxLQUFLLENBQUMsRUFBRTtRQUN4QithLEtBQUssSUFBSS9hLEtBQUssQ0FBQ3hCLE1BQU07TUFDdkIsQ0FBQyxNQUFNLElBQUksT0FBT3dCLEtBQUssS0FBSyxRQUFRLElBQUlBLEtBQUssQ0FBQ2diLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQzNERCxLQUFLLElBQUlGLGlCQUFpQjtNQUM1QixDQUFDLE1BQU0sSUFBSSxPQUFPN2EsS0FBSyxLQUFLLFFBQVEsSUFBSUEsS0FBSyxHQUFHLENBQUMsRUFBRTtRQUNqRCthLEtBQUssSUFBSUYsaUJBQWlCO01BQzVCO0lBQ0YsQ0FBQyxDQUFDO0lBQ0YsT0FBT0UsS0FBSztFQUNkLENBQUM7RUFFRHJDLGdEQUFTLENBQUMsTUFBTTtJQUNkMEIsa0JBQWtCLENBQUNVLHNCQUFzQixDQUFDaGQsTUFBTSxDQUFDLENBQUM7RUFDcEQsQ0FBQyxFQUFFLENBQUNBLE1BQU0sQ0FBQyxDQUFDO0VBRVosTUFBTW1kLE1BQU0sR0FBR0EsQ0FBQSxLQUFNO0lBQ25CakIsaUJBQWlCLENBQUMsQ0FBQ0QsY0FBYyxDQUFDO0lBQ2xDRyxpQkFBaUIsQ0FBQyxDQUFDRCxjQUFjLENBQUM7RUFDcEMsQ0FBQztFQUVELE1BQU1pQixpQkFBaUIsR0FBR0EsQ0FBQSxLQUFNO0lBQzlCZCxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7SUFDckJOLE9BQU8sQ0FBQyxDQUFDO0lBQ1RtQixNQUFNLENBQUMsQ0FBQztFQUNWLENBQUM7RUFFRCxvQkFDRTVSLHdEQUFBLENBQUNYLDhDQUFHO0lBQUMwRCxTQUFTLEVBQUVuQixnRUFBdUI7SUFBQ21RLEdBQUcsRUFBRWYsU0FBVTtJQUFBblEsUUFBQSxnQkFDckRiLHdEQUFBLENBQUM0UCw0REFBSztNQUNKMUcsVUFBVSxFQUFDLFFBQVE7TUFDbkIxVCxTQUFTLEVBQUMsS0FBSztNQUNmeVQsRUFBRSxFQUFFO1FBQUUrSSxFQUFFLEVBQUUsQ0FBQztRQUFFN0MsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUNyQmhNLE9BQU8sRUFBRXlPLE1BQU87TUFBQS9RLFFBQUEsZ0JBRWhCZix1REFBQSxDQUFDZ1EsZ0RBQUs7UUFDSm1DLFlBQVksRUFBRW5CLGVBQWdCO1FBQzlCaEwsS0FBSyxFQUFDLFNBQVM7UUFDZm1ELEVBQUUsRUFBRTtVQUFFaUosRUFBRSxFQUFFcEIsZUFBZSxHQUFHLENBQUMsR0FBR1MsdUJBQXVCLEdBQUc7UUFBRyxDQUFFO1FBQUExUSxRQUFBLGVBRS9EZix1REFBQSxDQUFDK1AsdUVBQWM7VUFBQzFLLFFBQVEsRUFBQyxPQUFPO1VBQUNwQyxTQUFTLEVBQUVuQiwyREFBaUJ1UTtRQUFDLENBQUU7TUFBQyxDQUM1RCxDQUFDLGVBQ1JyUyx1REFBQTtRQUFNaUQsU0FBUyxFQUFFbkIsNERBQW1CO1FBQUFmLFFBQUEsRUFBRXpLLENBQUMsQ0FBQyxlQUFlO01BQUMsQ0FBTyxDQUFDO0lBQUEsQ0FDM0QsQ0FBQyxlQUNSMEosdURBQUEsQ0FBQ1QsOENBQUc7TUFDRjBELFNBQVMsS0FBQS9OLE1BQUEsQ0FBSzRNLG9FQUEwQixPQUFBNU0sTUFBQSxDQUFJNE0sMERBQWdCLE9BQUE1TSxNQUFBLENBQzFEMGIsY0FBYyxHQUFHOU8sK0RBQXFCLEdBQUcsRUFBRSxDQUMxQztNQUFBZixRQUFBLGVBRUhmLHVEQUFBLENBQUNvUSxnREFBSztRQUFDcUMsU0FBUyxFQUFFLENBQUU7UUFBQ3hQLFNBQVMsRUFBRW5CLHdFQUErQjtRQUFBZixRQUFBLGVBQzdEYix3REFBQSxDQUFDZ1EsK0NBQUk7VUFBQ3lDLE9BQU8sRUFBQyxVQUFVO1VBQUE1UixRQUFBLGdCQUN0QmYsdURBQUEsQ0FBQzhOLHFEQUFVO1lBQ1Q3VyxLQUFLLEVBQUMsU0FBUztZQUNmNFgsTUFBTSxlQUNKN08sdURBQUEsQ0FBQ2lRLGlEQUFNO2NBQ0xuQixhQUFhO2NBQ2I2RCxPQUFPLEVBQUMsTUFBTTtjQUNkdFAsT0FBTyxFQUFFME8saUJBQWtCO2NBQzNCOU8sU0FBUyxFQUFFbkIsNERBQW1CO2NBQUFmLFFBQUEsRUFFN0J6SyxDQUFDLENBQUMsY0FBYztZQUFDLENBQ1o7VUFDVCxDQUNGLENBQUMsZUFDRjBKLHVEQUFBLENBQUNtUSxrREFBTyxJQUFFLENBQUMsZUFDWG5RLHVEQUFBLENBQUN3UCwyREFBa0I7WUFDakI5TyxNQUFNLEVBQUUvTCxNQUFNLENBQUNSLDhEQUF3QixDQUFFO1lBQ3pDaWEsUUFBUSxFQUFHTyxTQUFTLElBQUtQLFFBQVEsQ0FBQ08sU0FBUztVQUFFLENBQzlDLENBQUMsZUFDRjNPLHVEQUFBLENBQUNtTyx3REFBYztZQUNiek4sTUFBTSxFQUFFL0wsTUFBTSxDQUFDTixnRUFBMEIsQ0FBRTtZQUMzQytaLFFBQVEsRUFBR08sU0FBUyxJQUFLUCxRQUFRLENBQUNPLFNBQVM7VUFBRSxDQUM5QyxDQUFDLGVBQ0YzTyx1REFBQSxDQUFDdVEsc0RBQVk7WUFDWDdQLE1BQU0sRUFBRS9MLE1BQU0sQ0FBQ0wsNkRBQXVCLENBQUU7WUFDeEM4WixRQUFRLEVBQUdPLFNBQVMsSUFBS1AsUUFBUSxDQUFDTyxTQUFTO1VBQUUsQ0FDOUMsQ0FBQyxlQUNGM08sdURBQUEsQ0FBQ3NRLDBEQUFnQjtZQUNmNVAsTUFBTSxFQUFFL0wsTUFBTSxDQUFDUCw0REFBc0IsQ0FBRTtZQUN2Q2dhLFFBQVEsRUFBR08sU0FBUyxJQUFLUCxRQUFRLENBQUNPLFNBQVM7VUFBRSxDQUM5QyxDQUFDLGVBQ0YzTyx1REFBQSxDQUFDeVEseURBQWU7WUFDZC9QLE1BQU0sRUFBRS9MLE1BQU0sQ0FBQ0osMERBQW9CLENBQUU7WUFDckM2WixRQUFRLEVBQUdPLFNBQVMsSUFBS1AsUUFBUSxDQUFDTyxTQUFTO1VBQUUsQ0FDOUMsQ0FBQyxlQUNGM08sdURBQUEsQ0FBQ3dRLHdEQUFjO1lBQ2I5UCxNQUFNLEVBQUUvTCxNQUFNLENBQUNILDBEQUFvQixDQUFFO1lBQ3JDNFosUUFBUSxFQUFHTyxTQUFTLElBQUtQLFFBQVEsQ0FBQ08sU0FBUztVQUFFLENBQzlDLENBQUM7UUFBQSxDQUNFO01BQUMsQ0FDRjtJQUFDLENBQ0wsQ0FBQztFQUFBLENBQ0gsQ0FBQztBQUVWLENBQUM7QUFFRCtCLE1BQU0sQ0FBQ25QLFNBQVMsR0FBRztFQUNqQjZNLFFBQVEsRUFBRS9PLHdEQUFjcUM7QUFDMUIsQ0FBQztBQUVELE1BQU1tUixlQUFlLEdBQUdyYixLQUFBO0VBQUEsSUFBQztJQUFFRTtFQUFZLENBQUMsR0FBQUYsS0FBQTtFQUFBLE9BQU07SUFDNUMzQyxJQUFJLEVBQUU2QyxXQUFXLENBQUM3QyxJQUFJO0lBQ3RCRixNQUFNLEVBQUUrQyxXQUFXLENBQUMvQztFQUN0QixDQUFDO0FBQUEsQ0FBQztBQUVGLGlFQUFlMGIsb0RBQU8sQ0FBQ3dDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDbkMsTUFBTSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEtYO0FBQ2dCO0FBQ3JCO0FBVVo7QUFDcUM7QUFDYjtBQUNNO0FBQUE7QUFFckQsTUFBTUYsY0FBYyxHQUFHN1osSUFBQSxJQUFrQjtFQUFBLElBQWpCO0lBQUV5WDtFQUFTLENBQUMsR0FBQXpYLElBQUE7RUFDbEMsTUFBTTtJQUNKaEMsTUFBTSxFQUFFO01BQUVILG9CQUFvQixFQUFFNlo7SUFBYTtFQUMvQyxDQUFDLEdBQUdULHdEQUFXLENBQUVVLEtBQUssSUFBS0EsS0FBSyxDQUFDNVcsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFbVcscURBQVksQ0FBQztFQUVqRSxNQUFNLENBQUNVLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUc5TCwrQ0FBUSxDQUFDLENBQUMsQ0FBQzJMLFlBQVksQ0FBQztFQUU1RCxNQUFNSSxjQUFjLEdBQUcsQ0FDckI7SUFBRTVYLEtBQUssRUFBRSxNQUFNO0lBQUVvUixLQUFLLEVBQUU7RUFBTyxDQUFDLEVBQ2hDO0lBQUVwUixLQUFLLEVBQUUsTUFBTTtJQUFFb1IsS0FBSyxFQUFFO0VBQU8sQ0FBQyxDQUNqQztFQUVELE1BQU15RyxrQkFBa0IsR0FBR0EsQ0FBQzNGLEVBQUUsRUFBRWxTLEtBQUssS0FBSztJQUN4QyxNQUFNOFgsU0FBUyxHQUFHOVgsS0FBSztJQUN2QnVYLFFBQVEsQ0FBQztNQUNQLENBQUM1WiwwREFBb0IsR0FBR21hO0lBQzFCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFRCxvQkFDRXpPLHVEQUFBLENBQUNYLDhDQUFHO0lBQUF3QixRQUFBLGdCQUNGZixzREFBQSxDQUFDOE4scURBQVU7TUFDVDdXLEtBQUssRUFBQyxhQUFhO01BQ25CZ00sU0FBUyxFQUFFbkIsNkRBQW9CO01BQy9CdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1tTCxhQUFhLENBQUMsQ0FBQ0QsVUFBVSxDQUFFO01BQzFDTSxNQUFNLGVBQ0o3TyxzREFBQSxDQUFDK04scURBQVU7UUFBQyxjQUFXLFFBQVE7UUFBQ2UsYUFBYTtRQUFBL04sUUFBQSxlQUMzQ2Ysc0RBQUEsQ0FBQ2tPLHVFQUFjO1VBQ2IvSyxLQUFLLEVBQUU7WUFDTDRMLFNBQVMsRUFBRVIsVUFBVSxHQUFHLGdCQUFnQixHQUFHLGNBQWM7WUFDekRTLFVBQVUsRUFBRTtVQUNkO1FBQUUsQ0FDSDtNQUFDLENBQ1E7SUFDYixDQUNGLENBQUMsZUFDRmhQLHNEQUFBLENBQUNnTyxtREFBUTtNQUFDaUIsRUFBRSxFQUFFVixVQUFXO01BQUNXLE9BQU8sRUFBQyxNQUFNO01BQUNDLGFBQWE7TUFBQXBPLFFBQUEsZUFDcERmLHNEQUFBLENBQUNpTyxzREFBVztRQUNWOUUsRUFBRSxFQUFFO1VBQ0ZpRyxFQUFFLEVBQUUsQ0FBQztVQUNMakosZUFBZSxFQUFFLFdBQVc7VUFDNUIsY0FBYyxFQUFFO1lBQ2RrSixFQUFFLEVBQUU7VUFDTjtRQUNGLENBQUU7UUFBQXRPLFFBQUEsZUFFRmYsc0RBQUEsQ0FBQzRKLHFEQUFVO1VBQUMvUyxLQUFLLEVBQUV3WCxZQUFhO1VBQUNsSCxRQUFRLEVBQUV1SCxrQkFBbUI7VUFBQTNOLFFBQUEsRUFDM0QwTixjQUFjLENBQUNyVSxHQUFHLENBQUVrVixRQUFRLGlCQUMzQnRQLHNEQUFBLENBQUNULDhDQUFHO1lBQ0Y0SixFQUFFLEVBQUU7Y0FBRWlHLEVBQUUsRUFBRTtZQUFFLENBQUU7WUFBQXJPLFFBQUEsZUFHZGYsc0RBQUEsQ0FBQ3dHLDJEQUFnQjtjQUNmcUMsT0FBTyxlQUNMN0ksc0RBQUEsQ0FBQzJKLGdEQUFLO2dCQUNKOVMsS0FBSyxFQUFFeVksUUFBUSxDQUFDelksS0FBTTtnQkFDdEJzUyxFQUFFLEVBQUU7a0JBQ0Ysb0JBQW9CLEVBQUU7b0JBQUU5RCxRQUFRLEVBQUU7a0JBQUcsQ0FBQztrQkFDdEMsZUFBZSxFQUFFO29CQUFFVyxLQUFLLEVBQUU7a0JBQVU7Z0JBQ3RDO2NBQUUsQ0FDSCxDQUNGO2NBQ0RpQyxLQUFLLEVBQUVxSCxRQUFRLENBQUNySCxLQUFNO2NBQ3RCa0IsRUFBRSxFQUFFO2dCQUNGLDhCQUE4QixFQUFFO2tCQUM5QjlELFFBQVEsRUFBRTtnQkFDWjtjQUNGO1lBQUUsQ0FDSDtVQUFDLDJCQUFBblEsTUFBQSxDQWxCMkJvYSxRQUFRLENBQUNySCxLQUFLLE1BbUJ4QyxDQUNOO1FBQUMsQ0FDUTtNQUFDLENBQ0Y7SUFBQyxDQUNOLENBQUM7RUFBQSxDQUNSLENBQUM7QUFFVixDQUFDO0FBRUR1SSxjQUFjLENBQUNqUCxTQUFTLEdBQUc7RUFDekI2TSxRQUFRLEVBQUUvTyx3REFBY3FDO0FBQzFCLENBQUM7QUFFRCxpRUFBZThPLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRzhCO0FBQ0g7QUFDckI7QUFRWjtBQUNxQztBQUNiO0FBQ007QUFBQTtBQUVyRCxNQUFNQyxlQUFlLEdBQUc5WixJQUFBLElBQWtCO0VBQUEsSUFBakI7SUFBRXlYO0VBQVMsQ0FBQyxHQUFBelgsSUFBQTtFQUNuQyxNQUFNO0lBQ0poQyxNQUFNLEVBQUU7TUFBRUosb0JBQW9CLEVBQUU4WjtJQUFhO0VBQy9DLENBQUMsR0FBR1Qsd0RBQVcsQ0FBRVUsS0FBSyxJQUFLQSxLQUFLLENBQUM1VyxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUVtVyxxREFBWSxDQUFDO0VBRWpFLE1BQU0sQ0FBQ1UsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRzlMLCtDQUFRLENBQUMsQ0FBQyxDQUFDMkwsWUFBWSxDQUFDO0VBQzVELE1BQU0sQ0FBQ3lFLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUdyUSwrQ0FBUSxDQUFDMkwsWUFBWSxJQUFJLEVBQUUsQ0FBQztFQUU5RCxNQUFNMkUsYUFBYSxHQUFHbkQsNkNBQU0sQ0FBQyxJQUFJLENBQUM7RUFDbEMsTUFBTW9ELGNBQWMsR0FBRyxHQUFHO0VBRTFCMUQsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2R3RCxZQUFZLENBQUMxRSxZQUFZLElBQUksRUFBRSxDQUFDO0lBQ2hDRyxhQUFhLENBQUMsQ0FBQyxDQUFDSCxZQUFZLENBQUM7RUFDL0IsQ0FBQyxFQUFFLENBQUNBLFlBQVksQ0FBQyxDQUFDO0VBRWxCLE1BQU1LLGtCQUFrQixHQUFJM0YsRUFBRSxJQUFLO0lBQ2pDLE1BQU1tSyxZQUFZLEdBQUduSyxFQUFFLENBQUNDLE1BQU0sQ0FBQ25TLEtBQUs7SUFDcEM7SUFDQWtjLFlBQVksQ0FBQ0csWUFBWSxDQUFDOztJQUUxQjtJQUNBLElBQUlGLGFBQWEsQ0FBQzNCLE9BQU8sRUFBRTtNQUN6QjhCLFlBQVksQ0FBQ0gsYUFBYSxDQUFDM0IsT0FBTyxDQUFDO0lBQ3JDOztJQUVBO0lBQ0EyQixhQUFhLENBQUMzQixPQUFPLEdBQUdyTyxVQUFVLENBQUMsTUFBTTtNQUN2Q29MLFFBQVEsQ0FBQztRQUNQLENBQUM3WiwwREFBb0IsR0FBRzJlO01BQzFCLENBQUMsQ0FBQztJQUNKLENBQUMsRUFBRUQsY0FBYyxDQUFDO0VBQ3BCLENBQUM7RUFFRDFELGdEQUFTLENBQUMsTUFBTTtJQUNkO0lBQ0EsSUFBSXlELGFBQWEsQ0FBQzNCLE9BQU8sRUFBRTtNQUN6QjhCLFlBQVksQ0FBQ0gsYUFBYSxDQUFDM0IsT0FBTyxDQUFDO0lBQ3JDO0VBQ0YsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLG9CQUNFblIsdURBQUEsQ0FBQ1gsOENBQUc7SUFBQXdCLFFBQUEsZ0JBQ0ZmLHNEQUFBLENBQUM4TixxREFBVTtNQUNUN1csS0FBSyxFQUFDLFlBQVk7TUFDbEJnTSxTQUFTLEVBQUVuQiw2REFBb0I7TUFDL0J1QixPQUFPLEVBQUVBLENBQUEsS0FBTW1MLGFBQWEsQ0FBQyxDQUFDRCxVQUFVLENBQUU7TUFDMUNNLE1BQU0sZUFDSjdPLHNEQUFBLENBQUMrTixxREFBVTtRQUFDLGNBQVcsUUFBUTtRQUFDZSxhQUFhO1FBQUEvTixRQUFBLGVBQzNDZixzREFBQSxDQUFDa08sdUVBQWM7VUFDYi9LLEtBQUssRUFBRTtZQUNMNEwsU0FBUyxFQUFFUixVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsY0FBYztZQUN6RFMsVUFBVSxFQUFFO1VBQ2Q7UUFBRSxDQUNIO01BQUMsQ0FDUTtJQUNiLENBQ0YsQ0FBQyxlQUNGaFAsc0RBQUEsQ0FBQ2dPLG1EQUFRO01BQUNpQixFQUFFLEVBQUVWLFVBQVc7TUFBQ1csT0FBTyxFQUFDLE1BQU07TUFBQ0MsYUFBYTtNQUFBcE8sUUFBQSxlQUNwRGYsc0RBQUEsQ0FBQ2lPLHNEQUFXO1FBQ1Y5RSxFQUFFLEVBQUU7VUFDRmhELGVBQWUsRUFBRSxXQUFXO1VBQzVCLGNBQWMsRUFBRTtZQUNkaUosRUFBRSxFQUFFO1VBQ047UUFDRixDQUFFO1FBQUFyTyxRQUFBLGVBRUZmLHNEQUFBLENBQUM4SixvREFBUztVQUNSNkksT0FBTyxFQUFDLFVBQVU7VUFDbEJTLFdBQVcsRUFBQyxrQkFBa0I7VUFDOUJ2YyxLQUFLLEVBQUVpYyxTQUFVO1VBQ2pCM0wsUUFBUSxFQUFFdUgsa0JBQW1CO1VBQzdCaEcsU0FBUztRQUFBLENBQ1Y7TUFBQyxDQUNTO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDUixDQUFDO0FBRVYsQ0FBQztBQUVEK0gsZUFBZSxDQUFDbFAsU0FBUyxHQUFHO0VBQzFCNk0sUUFBUSxFQUFFL08sd0RBQWNxQztBQUMxQixDQUFDO0FBRUQsaUVBQWUrTyxlQUFlOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuR1U7QUFDTDtBQUNXO0FBQ007QUFDRjtBQUNGO0FBQ1o7QUFDVztBQUNTO0FBQUE7QUFFeEQsTUFBTWdELGVBQWUsR0FBR0osNERBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPO0VBQzNDSyxRQUFRLEVBQUUsVUFBVTtFQUNwQkMsV0FBVyxFQUFFLEdBQUc7RUFDaEJDLFVBQVUsRUFBRSxHQUFHO0VBQ2Z0UixLQUFLLEVBQUUsTUFBTTtFQUNidVIsT0FBTyxFQUFFO0FBQ1gsQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNQyxpQkFBaUIsR0FBR1QsNERBQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPO0VBQzdDVSxNQUFNLEVBQUUsTUFBTTtFQUNkTCxRQUFRLEVBQUUsVUFBVTtFQUNwQkcsT0FBTyxFQUFFLE1BQU07RUFDZnpLLFVBQVUsRUFBRSxRQUFRO0VBQ3BCNEssY0FBYyxFQUFFO0FBQ2xCLENBQUMsQ0FBQyxDQUFDO0FBQ0gsTUFBTUMsZUFBZSxHQUFHWiw0REFBTSxDQUFDRyxnRUFBUyxDQUFDLENBQUMsT0FBTztFQUMvQ3hOLEtBQUssRUFBRSxTQUFTO0VBQ2hCa08sWUFBWSxFQUFFLCtCQUErQjtFQUM3Q0MsV0FBVyxFQUFFLE1BQU07RUFDbkJDLFlBQVksRUFBRSxNQUFNO0VBQ3BCL08sUUFBUSxFQUFFO0FBQ1osQ0FBQyxDQUFDLENBQUM7QUFDSCxNQUFNZ1AsZ0JBQWdCLEdBQUdoQiw0REFBTSxDQUFDRSxrRUFBUyxDQUFDLENBQUMsT0FBTztFQUNoRGUsT0FBTyxFQUFFLEtBQUs7RUFDZGpQLFFBQVEsRUFBRSxPQUFPO0VBQ2pCME8sTUFBTSxFQUFFLE1BQU07RUFDZEwsUUFBUSxFQUFFLFVBQVU7RUFDcEJhLEdBQUcsRUFBRSxHQUFHO0VBQ1JDLEtBQUssRUFBRSxHQUFHO0VBQ1ZYLE9BQU8sRUFBRSxNQUFNO0VBQ2Z6SyxVQUFVLEVBQUUsUUFBUTtFQUNwQjRLLGNBQWMsRUFBRSxRQUFRO0VBQ3hCUyxNQUFNLEVBQUUsU0FBUztFQUNqQkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQyxDQUFDLENBQUM7QUFFSCxNQUFNQyxNQUFNLEdBQUdoZSxJQUFBLElBQWtCO0VBQUEsSUFBakI7SUFBRWllO0VBQVMsQ0FBQyxHQUFBamUsSUFBQTtFQUMxQixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQ3VWLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUdwUywrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUNqRCxNQUFNLENBQUNxUyxXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHdFMsK0NBQVEsQ0FBQyxFQUFFLENBQUM7RUFDbEQsTUFBTXVTLFNBQVMsR0FBSTdELEtBQUssSUFBSztJQUMzQixNQUFNO01BQ0p4YSxHQUFHO01BQ0hzZSxXQUFXLEVBQUU7UUFDWGxNLE1BQU0sRUFBRTtVQUFFblM7UUFBTTtNQUNsQjtJQUNGLENBQUMsR0FBR3VhLEtBQUs7SUFDVCxJQUFJeGEsR0FBRyxLQUFLLE9BQU8sRUFBRTtNQUNuQmdlLFFBQVEsQ0FBQztRQUNQLENBQUNuZ0IsNkRBQXVCLEdBQUdvQztNQUM3QixDQUFDLENBQUM7TUFDRmllLFlBQVksQ0FBQyxJQUFJLENBQUM7SUFDcEI7RUFDRixDQUFDO0VBQ0QsTUFBTUssV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEJILGNBQWMsQ0FBQyxFQUFFLENBQUM7SUFDbEJKLFFBQVEsQ0FBQztNQUNQLENBQUNuZ0IsNkRBQXVCLEdBQUc7SUFDN0IsQ0FBQyxDQUFDO0lBQ0ZxZ0IsWUFBWSxDQUFDLElBQUksQ0FBQztJQUNsQkEsWUFBWSxDQUFDLEtBQUssQ0FBQztFQUNyQixDQUFDO0VBQ0Qsb0JBQ0U5VSxzREFBQSxDQUFDVCw4Q0FBRztJQUFBd0IsUUFBQSxlQUNGYix1REFBQSxDQUFDdVQsZUFBZTtNQUFBMVMsUUFBQSxHQUNiOFQsU0FBUyxpQkFDUjdVLHNEQUFBLENBQUNxVSxnQkFBZ0I7UUFBQ2hSLE9BQU8sRUFBRThSLFdBQVk7UUFBQXBVLFFBQUEsZUFDckNmLHNEQUFBLENBQUN1VCxrRUFBUyxJQUFFO01BQUMsQ0FDRyxDQUNuQixlQUNEdlQsc0RBQUEsQ0FBQzhULGlCQUFpQjtRQUFBL1MsUUFBQSxlQUNoQmYsc0RBQUEsQ0FBQ3NULG1FQUFVLElBQUU7TUFBQyxDQUNHLENBQUMsZUFDcEJ0VCxzREFBQSxDQUFDaVUsZUFBZTtRQUNkYixXQUFXLEVBQUU5YyxDQUFDLENBQUMsMkJBQTJCLENBQUU7UUFDNUM4ZSxVQUFVLEVBQUU7VUFBRSxZQUFZLEVBQUU7UUFBUyxDQUFFO1FBQ3ZDdmUsS0FBSyxFQUFFa2UsV0FBWTtRQUNuQjVOLFFBQVEsRUFBRzVPLENBQUMsSUFBS3ljLGNBQWMsQ0FBQ3pjLENBQUMsQ0FBQ3lRLE1BQU0sQ0FBQ25TLEtBQUssQ0FBRTtRQUNoRG9lLFNBQVMsRUFBRUE7TUFBVSxDQUN0QixDQUFDO0lBQUEsQ0FDYTtFQUFDLENBQ2YsQ0FBQztBQUVWLENBQUM7QUFFRE4sTUFBTSxDQUFDcFQsU0FBUyxHQUFHO0VBQ2pCcVQsUUFBUSxFQUFFdlYsd0RBQWNxQztBQUMxQixDQUFDO0FBRUQsaUVBQWVpVCxNQUFNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsR3NDO0FBQ25CO0FBQ1c7QUFDYTtBQUNqQjtBQUNBO0FBQUE7QUFFL0MsTUFBTVcsSUFBSSxHQUFHM2UsSUFBQSxJQUFnQjtFQUFBLElBQWY7SUFBRTRlO0VBQU8sQ0FBQyxHQUFBNWUsSUFBQTtFQUN0QixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0sQ0FBQ2tXLFFBQVEsRUFBRUMsV0FBVyxDQUFDLEdBQUcvUywrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUMvQyxNQUFNZ1QsT0FBTyxHQUFHN0YsNkNBQU0sQ0FBQyxJQUFJLENBQUM7RUFDNUIsTUFBTThGLHNCQUFzQixHQUFJdkUsS0FBSyxJQUFLO0lBQ3hDLElBQUlzRSxPQUFPLENBQUNyRSxPQUFPLElBQUksQ0FBQ3FFLE9BQU8sQ0FBQ3JFLE9BQU8sQ0FBQ0MsUUFBUSxDQUFDRixLQUFLLENBQUNwSSxNQUFNLENBQUMsRUFBRTtNQUM5RHlNLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDcEI7RUFDRixDQUFDO0VBQ0RsRyxnREFBUyxDQUFDLE1BQU07SUFDZDdRLFFBQVEsQ0FBQzZTLGdCQUFnQixDQUFDLE9BQU8sRUFBRW9FLHNCQUFzQixFQUFFLEtBQUssQ0FBQztJQUNqRSxPQUFPLE1BQU07TUFDWGpYLFFBQVEsQ0FBQzhTLG1CQUFtQixDQUFDLE9BQU8sRUFBRW1FLHNCQUFzQixFQUFFLEtBQUssQ0FBQztJQUN0RSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNILFFBQVEsQ0FBQyxDQUFDO0VBRWQsTUFBTTFELE1BQU0sR0FBR0EsQ0FBQSxLQUFNO0lBQ25CMkQsV0FBVyxDQUFDLENBQUNELFFBQVEsQ0FBQztFQUN4QixDQUFDO0VBQ0Qsb0JBQ0V0Vix1REFBQSxDQUFDWCw4Q0FBRztJQUFDMEQsU0FBUyxFQUFFbkIsOERBQXFCO0lBQUN1QixPQUFPLEVBQUV5TyxNQUFPO0lBQUEvUSxRQUFBLGdCQUNwRGIsdURBQUEsQ0FBQzRQLDREQUFLO01BQ0ptQyxHQUFHLEVBQUV5RCxPQUFRO01BQ2J0TSxVQUFVLEVBQUMsUUFBUTtNQUNuQjFULFNBQVMsRUFBQyxLQUFLO01BQ2Z5VCxFQUFFLEVBQUU7UUFBRStJLEVBQUUsRUFBRSxDQUFDO1FBQUU3QyxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUF0TyxRQUFBLGdCQUVyQmYsc0RBQUEsQ0FBQ3FWLHlFQUFnQjtRQUFDaFEsUUFBUSxFQUFDLE9BQU87UUFBQ3BDLFNBQVMsRUFBRW5CLHlEQUFlK1Q7TUFBQyxDQUFFLENBQUMsZUFDakU3VixzREFBQTtRQUFNaUQsU0FBUyxFQUFFbkIsMERBQWlCO1FBQUFmLFFBQUEsRUFBRXpLLENBQUMsQ0FBQyxXQUFXO01BQUMsQ0FBTyxDQUFDO0lBQUEsQ0FDckQsQ0FBQyxFQUNQa2YsUUFBUSxpQkFDUHRWLHVEQUFBLENBQUNrUSxnREFBSztNQUNKcUMsU0FBUyxFQUFFLENBQUU7TUFDYnhQLFNBQVMsS0FBQS9OLE1BQUEsQ0FBSzRNLGtFQUF3QixPQUFBNU0sTUFBQSxDQUFJNE0sMERBQWdCLENBQUc7TUFBQWYsUUFBQSxnQkFFN0RmLHNEQUFBLENBQUNpUSxpREFBTTtRQUNMbkIsYUFBYTtRQUNiNkQsT0FBTyxFQUFDLE1BQU07UUFDZDFQLFNBQVMsRUFBRW5CLHNEQUFhO1FBQ3hCdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1rUyxNQUFNLENBQUM7VUFBRTdmLFNBQVMsRUFBRSxNQUFNO1VBQUV5QyxJQUFJLEVBQUU7UUFBVSxDQUFDLENBQUU7UUFBQTRJLFFBQUEsRUFFN0R6SyxDQUFDLENBQUMsZ0JBQWdCO01BQUMsQ0FDZCxDQUFDLGVBQ1QwSixzREFBQSxDQUFDaVEsaURBQU07UUFDTG5CLGFBQWE7UUFDYjZELE9BQU8sRUFBQyxNQUFNO1FBQ2QxUCxTQUFTLEVBQUVuQixzREFBYTtRQUN4QnVCLE9BQU8sRUFBRUEsQ0FBQSxLQUFNa1MsTUFBTSxDQUFDO1VBQUU3ZixTQUFTLEVBQUUsS0FBSztVQUFFeUMsSUFBSSxFQUFFO1FBQVUsQ0FBQyxDQUFFO1FBQUE0SSxRQUFBLEVBRTVEekssQ0FBQyxDQUFDLGdCQUFnQjtNQUFDLENBQ2QsQ0FBQztJQUFBLENBQ0osQ0FDUjtFQUFBLENBQ0UsQ0FBQztBQUVWLENBQUM7QUFFRCxpRUFBZWdmLElBQUk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoRXFCO0FBQ2dCO0FBQ3JCO0FBVVo7QUFDcUM7QUFDYjtBQUNTO0FBQUE7QUFFeEQsTUFBTS9FLFlBQVksR0FBRzVaLElBQUEsSUFBa0I7RUFBQSxJQUFqQjtJQUFFeVg7RUFBUyxDQUFDLEdBQUF6WCxJQUFBO0VBQ2hDLE1BQU07SUFDSmhDLE1BQU0sRUFBRTtNQUFFTCx1QkFBdUIsRUFBRStaO0lBQWE7RUFDbEQsQ0FBQyxHQUFHVCx3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRW1XLHFEQUFZLENBQUM7RUFFakUsTUFBTSxDQUFDVSxVQUFVLEVBQUVDLGFBQWEsQ0FBQyxHQUFHOUwsK0NBQVEsQ0FBQyxDQUFDLENBQUMyTCxZQUFZLENBQUM7RUFFNUQsTUFBTUksY0FBYyxHQUFHLENBQ3JCO0lBQUU1WCxLQUFLLEVBQUUsWUFBWTtJQUFFb1IsS0FBSyxFQUFFO0VBQWEsQ0FBQyxFQUM1QztJQUFFcFIsS0FBSyxFQUFFLFVBQVU7SUFBRW9SLEtBQUssRUFBRTtFQUFXLENBQUMsQ0FDekM7RUFFRCxNQUFNeUcsa0JBQWtCLEdBQUdBLENBQUMzRixFQUFFLEVBQUVsUyxLQUFLLEtBQUs7SUFDeEMsTUFBTThYLFNBQVMsR0FBRzlYLEtBQUs7SUFDdkJ1WCxRQUFRLENBQUM7TUFDUCxDQUFDOVosNkRBQXVCLEdBQUdxYTtJQUM3QixDQUFDLENBQUM7RUFDSixDQUFDO0VBRUQsb0JBQ0V6Tyx1REFBQSxDQUFDWCw4Q0FBRztJQUFBd0IsUUFBQSxnQkFDRmYsc0RBQUEsQ0FBQzhOLHFEQUFVO01BQ1Q3VyxLQUFLLEVBQUMsUUFBUTtNQUNkZ00sU0FBUyxFQUFFbkIsNkRBQW9CO01BQy9CdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1tTCxhQUFhLENBQUMsQ0FBQ0QsVUFBVSxDQUFFO01BQzFDTSxNQUFNLGVBQ0o3TyxzREFBQSxDQUFDK04scURBQVU7UUFBQyxjQUFXLFFBQVE7UUFBQ2UsYUFBYTtRQUFBL04sUUFBQSxlQUMzQ2Ysc0RBQUEsQ0FBQ2tPLHVFQUFjO1VBQ2IvSyxLQUFLLEVBQUU7WUFDTDRMLFNBQVMsRUFBRVIsVUFBVSxHQUFHLGdCQUFnQixHQUFHLGNBQWM7WUFDekRTLFVBQVUsRUFBRTtVQUNkO1FBQUUsQ0FDSDtNQUFDLENBQ1E7SUFDYixDQUNGLENBQUMsZUFDRmhQLHNEQUFBLENBQUNnTyxtREFBUTtNQUFDaUIsRUFBRSxFQUFFVixVQUFXO01BQUNXLE9BQU8sRUFBQyxNQUFNO01BQUNDLGFBQWE7TUFBQXBPLFFBQUEsZUFDcERmLHNEQUFBLENBQUNpTyxzREFBVztRQUNWOUUsRUFBRSxFQUFFO1VBQ0ZpRyxFQUFFLEVBQUUsQ0FBQztVQUNMakosZUFBZSxFQUFFLFdBQVc7VUFDNUIsY0FBYyxFQUFFO1lBQ2RrSixFQUFFLEVBQUU7VUFDTjtRQUNGLENBQUU7UUFBQXRPLFFBQUEsZUFFRmYsc0RBQUEsQ0FBQzRKLHFEQUFVO1VBQUMvUyxLQUFLLEVBQUV3WCxZQUFhO1VBQUNsSCxRQUFRLEVBQUV1SCxrQkFBbUI7VUFBQTNOLFFBQUEsRUFDM0QwTixjQUFjLENBQUNyVSxHQUFHLENBQUVrVixRQUFRLGlCQUMzQnRQLHNEQUFBLENBQUNULDhDQUFHO1lBQ0Y0SixFQUFFLEVBQUU7Y0FBRWlHLEVBQUUsRUFBRTtZQUFFLENBQUU7WUFBQXJPLFFBQUEsZUFHZGYsc0RBQUEsQ0FBQ3dHLDJEQUFnQjtjQUNmcUMsT0FBTyxlQUNMN0ksc0RBQUEsQ0FBQzJKLGdEQUFLO2dCQUNKOVMsS0FBSyxFQUFFeVksUUFBUSxDQUFDelksS0FBTTtnQkFDdEJzUyxFQUFFLEVBQUU7a0JBQ0Ysb0JBQW9CLEVBQUU7b0JBQUU5RCxRQUFRLEVBQUU7a0JBQUcsQ0FBQztrQkFDdEMsZUFBZSxFQUFFO29CQUFFVyxLQUFLLEVBQUU7a0JBQVU7Z0JBQ3RDO2NBQUUsQ0FDSCxDQUNGO2NBQ0RpQyxLQUFLLEVBQUVxSCxRQUFRLENBQUNySCxLQUFNO2NBQ3RCa0IsRUFBRSxFQUFFO2dCQUNGLDhCQUE4QixFQUFFO2tCQUM5QjlELFFBQVEsRUFBRTtnQkFDWjtjQUNGO1lBQUUsQ0FDSDtVQUFDLDJCQUFBblEsTUFBQSxDQWxCMkJvYSxRQUFRLENBQUNySCxLQUFLLE1BbUJ4QyxDQUNOO1FBQUMsQ0FDUTtNQUFDLENBQ0Y7SUFBQyxDQUNOLENBQUM7RUFBQSxDQUNSLENBQUM7QUFFVixDQUFDO0FBRURzSSxZQUFZLENBQUNoUCxTQUFTLEdBQUc7RUFDdkI2TSxRQUFRLEVBQUUvTyx3REFBY3FDO0FBQzFCLENBQUM7QUFFRCxpRUFBZTZPLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuR3dCO0FBQ0s7QUFDckI7QUFTWjtBQUNxQztBQUNiO0FBQ1E7QUFBQTtBQUV2RCxNQUFNRCxnQkFBZ0IsR0FBRzNaLElBQUEsSUFBa0I7RUFBQSxJQUFqQjtJQUFFeVg7RUFBUyxDQUFDLEdBQUF6WCxJQUFBO0VBQ3BDLE1BQU07SUFDSjNDLE1BQU0sRUFBRTtNQUFFZ2lCO0lBQWEsQ0FBQztJQUN4QnJoQixNQUFNLEVBQUU7TUFBRVAsc0JBQXNCLEVBQUVpYTtJQUFhO0VBQ2pELENBQUMsR0FBR1Qsd0RBQVcsQ0FBRVUsS0FBSyxJQUFLQSxLQUFLLENBQUM1VyxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQUVtVyxxREFBWSxDQUFDO0VBRWpFLE1BQU0sQ0FBQ1UsVUFBVSxFQUFFQyxhQUFhLENBQUMsR0FBRzlMLCtDQUFRLENBQUMsQ0FBQyxDQUFDMkwsWUFBWSxDQUFDaFosTUFBTSxDQUFDO0VBRW5FLE1BQU1xWixrQkFBa0IsR0FBSTdYLEtBQUssSUFBSztJQUNwQyxNQUFNNlksVUFBVSxHQUFHckIsWUFBWSxhQUFaQSxZQUFZLGVBQVpBLFlBQVksQ0FBRXZGLFFBQVEsQ0FBQ2pTLEtBQUssQ0FBQyxHQUM1Q3dYLFlBQVksQ0FBQzFaLE1BQU0sQ0FBRWdiLENBQUMsSUFBS0EsQ0FBQyxLQUFLOVksS0FBSyxDQUFDLEdBQ3ZDLENBQUMsR0FBR3dYLFlBQVksRUFBRXhYLEtBQUssQ0FBQztJQUM1QnVYLFFBQVEsQ0FBQztNQUNQLENBQUNoYSw0REFBc0IsR0FBR3NiO0lBQzVCLENBQUMsQ0FBQztFQUNKLENBQUM7RUFFREgsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2RmLGFBQWEsQ0FBQyxDQUFDLENBQUNILFlBQVksQ0FBQ2haLE1BQU0sQ0FBQztFQUN0QyxDQUFDLEVBQUUsQ0FBQ2daLFlBQVksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFbk8sdURBQUEsQ0FBQ1gsOENBQUc7SUFBQXdCLFFBQUEsZ0JBQ0ZmLHNEQUFBLENBQUM4TixxREFBVTtNQUNUN1csS0FBSyxFQUFDLGFBQWE7TUFDbkJnTSxTQUFTLEVBQUVuQiw2REFBb0I7TUFDL0J1QixPQUFPLEVBQUVBLENBQUEsS0FBTW1MLGFBQWEsQ0FBQyxDQUFDRCxVQUFVLENBQUU7TUFDMUNNLE1BQU0sZUFDSjdPLHNEQUFBLENBQUMrTixxREFBVTtRQUFDLGNBQVcsUUFBUTtRQUFDZSxhQUFhO1FBQUEvTixRQUFBLGVBQzNDZixzREFBQSxDQUFDa08sdUVBQWM7VUFDYi9LLEtBQUssRUFBRTtZQUNMNEwsU0FBUyxFQUFFUixVQUFVLEdBQUcsZ0JBQWdCLEdBQUcsY0FBYztZQUN6RFMsVUFBVSxFQUFFO1VBQ2Q7UUFBRSxDQUNIO01BQUMsQ0FDUTtJQUNiLENBQ0YsQ0FBQyxlQUNGaFAsc0RBQUEsQ0FBQ2dPLG1EQUFRO01BQUNpQixFQUFFLEVBQUVWLFVBQVc7TUFBQ1csT0FBTyxFQUFDLE1BQU07TUFBQ0MsYUFBYTtNQUFBcE8sUUFBQSxlQUNwRGYsc0RBQUEsQ0FBQ2lPLHNEQUFXO1FBQ1Y5RSxFQUFFLEVBQUU7VUFDRmlHLEVBQUUsRUFBRSxDQUFDO1VBQ0xqSixlQUFlLEVBQUUsV0FBVztVQUM1QixjQUFjLEVBQUU7WUFDZGtKLEVBQUUsRUFBRTtVQUNOO1FBQ0YsQ0FBRTtRQUFBdE8sUUFBQSxFQUVEaVYsWUFBWSxDQUFDNWIsR0FBRyxDQUFFd1YsRUFBRSxpQkFDbkI1UCxzREFBQSxDQUFDVCw4Q0FBRztVQUFDNEosRUFBRSxFQUFFO1lBQUVpRyxFQUFFLEVBQUU7VUFBRSxDQUFFO1VBQUFyTyxRQUFBLGVBQ2pCZixzREFBQSxDQUFDd0csMkRBQWdCO1lBQ2ZxQyxPQUFPLGVBQ0w3SSxzREFBQSxDQUFDc0csbURBQVE7Y0FDUGEsUUFBUSxFQUFFQSxDQUFBLEtBQU11SCxrQkFBa0IsQ0FBQ2tCLEVBQUUsQ0FBQ3hYLEVBQUUsQ0FBRTtjQUMxQ2dRLE9BQU8sRUFBRWlHLFlBQVksQ0FBQ3ZGLFFBQVEsQ0FBQzhHLEVBQUUsQ0FBQ3hYLEVBQUUsQ0FBRTtjQUN0QytRLEVBQUUsRUFBRTtnQkFDRixvQkFBb0IsRUFBRTtrQkFBRTlELFFBQVEsRUFBRTtnQkFBRyxDQUFDO2dCQUN0QyxlQUFlLEVBQUU7a0JBQ2ZXLEtBQUssRUFBRTtnQkFDVDtjQUNGO1lBQUUsQ0FDSCxDQUNGO1lBQ0RpQyxLQUFLLEVBQUUySCxFQUFFLENBQUN6WCxJQUFLO1lBQ2ZnUixFQUFFLEVBQUU7Y0FDRiw4QkFBOEIsRUFBRTtnQkFDOUI5RCxRQUFRLEVBQUU7Y0FDWjtZQUNGO1VBQUUsQ0FDSDtRQUFDLDJCQUFBblEsTUFBQSxDQXBCNkMwYSxFQUFFLENBQUN6WCxJQUFJLE1BcUJuRCxDQUNOO01BQUMsQ0FDUztJQUFDLENBQ04sQ0FBQztFQUFBLENBQ1IsQ0FBQztBQUVWLENBQUM7QUFFRG1ZLGdCQUFnQixDQUFDL08sU0FBUyxHQUFHO0VBQzNCNk0sUUFBUSxFQUFFL08sd0RBQWNxQztBQUMxQixDQUFDO0FBRUQsaUVBQWU0TyxnQkFBZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEdMO0FBQ1M7QUFDRTtBQUNQO0FBQ0o7QUFDSTtBQUNpQjtBQUFBO0FBRS9DLE1BQU00RixPQUFPLEdBQUd2ZixJQUFBO0VBQUEsSUFBQztJQUFFeVgsUUFBUTtJQUFFbUgsTUFBTTtJQUFFWCxRQUFRO0lBQUVqRTtFQUFRLENBQUMsR0FBQWhhLElBQUE7RUFBQSxvQkFDdER1Six1REFBQSxDQUFDK1YsK0NBQUk7SUFBQ3pELFNBQVM7SUFBQzJELE9BQU8sRUFBQyxVQUFVO0lBQUMvTSxVQUFVLEVBQUMsUUFBUTtJQUFBckksUUFBQSxnQkFDcERiLHVEQUFBLENBQUMrViwrQ0FBSTtNQUNIRyxJQUFJO01BQ0pDLEVBQUUsRUFBRSxDQUFFO01BQ043RCxTQUFTO01BQ1Q4QixPQUFPLEVBQUUsQ0FBRTtNQUNYZ0MsR0FBRyxFQUFFLENBQUU7TUFDUHJULFNBQVMsRUFBRW5CLG9FQUEyQjtNQUN0Q3FILEVBQUUsRUFBRTtRQUFFK0ksRUFBRSxFQUFFLENBQUM7UUFBRTdDLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQXRPLFFBQUEsZ0JBRXJCZixzREFBQSxDQUFDaVcsK0NBQUk7UUFBQ0csSUFBSTtRQUFBclYsUUFBQSxlQUNSZixzREFBQSxDQUFDMFEsK0NBQU07VUFBQ3RDLFFBQVEsRUFBRUEsUUFBUztVQUFDdUMsT0FBTyxFQUFFQTtRQUFRLENBQUU7TUFBQyxDQUM1QyxDQUFDLGVBQ1AzUSxzREFBQSxDQUFDaVcsK0NBQUk7UUFBQ0csSUFBSTtRQUFBclYsUUFBQSxlQUNSZixzREFBQSxDQUFDc1YsNkNBQUk7VUFBQ0MsTUFBTSxFQUFFQTtRQUFPLENBQUU7TUFBQyxDQUNwQixDQUFDO0lBQUEsQ0FDSCxDQUFDLGVBQ1B2VixzREFBQSxDQUFDaVcsK0NBQUk7TUFBQ0csSUFBSTtNQUFDQyxFQUFFLEVBQUUsQ0FBRTtNQUFDN0QsU0FBUztNQUFDd0IsY0FBYyxFQUFDLFVBQVU7TUFBQWpULFFBQUEsZUFDbkRmLHNEQUFBLENBQUMyVSwrQ0FBTTtRQUFDQyxRQUFRLEVBQUVBO01BQVMsQ0FBRTtJQUFDLENBQzFCLENBQUM7RUFBQSxDQUNILENBQUM7QUFBQSxDQUNSO0FBRURzQixPQUFPLENBQUMzVSxTQUFTLEdBQUc7RUFDbEI2TSxRQUFRLEVBQUUvTyx3REFBYztFQUN4QmtXLE1BQU0sRUFBRWxXLHdEQUFjO0VBQ3RCdVYsUUFBUSxFQUFFdlYsd0RBQWM7RUFDeEJzUixPQUFPLEVBQUV0Uix3REFBY3FDO0FBQ3pCLENBQUM7QUFFRCxpRUFBZXdVLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkN0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDUztBQUVHO0FBQUE7QUFFL0MsTUFBTXhXLFVBQVUsR0FBRy9JLElBQUE7RUFBQSxJQUFDO0lBQUV3SyxTQUFTO0lBQUVDLFdBQVc7SUFBRWYsT0FBTztJQUFFZ0I7RUFBUyxDQUFDLEdBQUExSyxJQUFBO0VBQUEsb0JBQy9EdUosdURBQUEsQ0FBQ1gsOENBQUc7SUFBQzBELFNBQVMsRUFBRW5CLHVEQUFjO0lBQUFmLFFBQUEsZ0JBQzVCZixzREFBQSxDQUFDaVEsaURBQU07TUFDTGhOLFNBQVMsRUFBRW5CLDBEQUFpQjtNQUM1QmtFLEtBQUssRUFBQyxTQUFTO01BQ2YwUSxJQUFJLEVBQUMsT0FBTztNQUNaL0QsT0FBTyxFQUFDLFVBQVU7TUFDbEJ0UCxPQUFPLEVBQUVoRCxPQUFRO01BQ2pCZ0IsUUFBUSxFQUFFQSxRQUFTO01BQUFOLFFBQUEsRUFFbEJLO0lBQVcsQ0FDTixDQUFDLGVBQ1RwQixzREFBQSxDQUFDaVEsaURBQU07TUFDTHJFLElBQUksRUFBQyxRQUFRO01BQ2IzSSxTQUFTLEVBQUVuQix3REFBZTtNQUMxQjZRLE9BQU8sRUFBQyxXQUFXO01BQ25CM00sS0FBSyxFQUFDLFNBQVM7TUFDZjBRLElBQUksRUFBQyxPQUFPO01BQ1pyVixRQUFRLEVBQUVBLFFBQVM7TUFBQU4sUUFBQSxFQUVsQkk7SUFBUyxDQUNKLENBQUM7RUFBQSxDQUNOLENBQUM7QUFBQSxDQUNQO0FBRUR6QixVQUFVLENBQUM2QixTQUFTLEdBQUc7RUFDckJKLFNBQVMsRUFBRTlCLDBEQUFnQjtFQUMzQitCLFdBQVcsRUFBRS9CLDBEQUFnQjtFQUM3QmdCLE9BQU8sRUFBRWhCLHdEQUFjO0VBQ3ZCZ0MsUUFBUSxFQUFFaEMsd0RBQWNrRTtBQUMxQixDQUFDO0FBRUQsaUVBQWU3RCxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuREM7QUFDd0I7QUFDSDtBQUFBO0FBRS9DLFNBQVNtWCxVQUFVQSxDQUFBbGdCLElBQUEsRUFBNkM7RUFBQSxJQUE1QztJQUFFK0MsT0FBTztJQUFFc00sS0FBSztJQUFFckQsVUFBVTtJQUFFbVU7RUFBVyxDQUFDLEdBQUFuZ0IsSUFBQTtFQUM1RCxvQkFDRXVKLHVEQUFBO0lBQ0UrQyxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSXlOLFVBQVUsSUFBSUEsVUFBVSxDQUFHO0lBQzlEUSxLQUFLLEVBQUU7TUFBRTZDO0lBQU0sQ0FBRTtJQUNqQixlQUFhOFEsVUFBVztJQUFBL1YsUUFBQSxnQkFFeEJmLHNEQUFBLENBQUM0VyxrRUFBUztNQUFDek4sRUFBRSxFQUFFO1FBQUVuRDtNQUFNO0lBQUUsQ0FBRSxDQUFDLEVBQzNCdE0sT0FBTztFQUFBLENBQ0osQ0FBQztBQUVYO0FBRUEsaUVBQWVtZCxVQUFVOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDakJDO0FBQ1M7QUFDd0I7QUFBQTtBQUUzRCxNQUFNSyxNQUFNLEdBQUd2Z0IsSUFBQTtFQUFBLElBQUM7SUFBRXdOO0VBQUssQ0FBQyxHQUFBeE4sSUFBQTtFQUFBO0lBQUE7SUFDdEI7SUFDQXFKLHNEQUFBLENBQUNnWCxtREFBUTtNQUFDN1MsSUFBSSxFQUFFQSxJQUFLO01BQUNnRixFQUFFLEVBQUdyRSxLQUFLLEtBQU07UUFBRTRQLE1BQU0sRUFBRTVQLEtBQUssQ0FBQzRQLE1BQU0sQ0FBQ3lDLE1BQU0sR0FBRztNQUFFLENBQUMsQ0FBRTtNQUFBcFcsUUFBQSxlQUN6RWYsc0RBQUEsQ0FBQ2lYLDJEQUFnQjtRQUFDalIsS0FBSyxFQUFDO01BQVMsQ0FBRTtJQUFDLENBQzVCO0VBQUM7QUFBQSxDQUNaO0FBRURrUixNQUFNLENBQUMzVixTQUFTLEdBQUc7RUFDakI0QyxJQUFJLEVBQUU5RSx3REFBY2tFO0FBQ3RCLENBQUM7QUFFRCxpRUFBZTJULE1BQU07Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2ZLO0FBQzhCO0FBQ1Q7QUFDWDtBQUNnQjtBQUNGO0FBQ1c7QUFDdEI7QUFDZTtBQUVQO0FBQUE7QUFFL0MsTUFBTUssZUFBZSxHQUFHNWdCLElBQUEsSUFBbUI7RUFBQSxJQUFsQjtJQUFFNmdCO0VBQVUsQ0FBQyxHQUFBN2dCLElBQUE7RUFDcEMsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNO0lBQUV0TCxNQUFNO0lBQUV5akIsWUFBWTtJQUFFQyxtQkFBbUI7SUFBRUM7RUFBaUIsQ0FBQyxHQUNuRS9KLHdEQUFXLENBQUVVLEtBQUssSUFBS0EsS0FBSyxDQUFDNVcsV0FBVyxJQUFJLENBQUMsQ0FBQyxFQUFFbVcscURBQVksQ0FBQztFQUUvRCxvQkFDRTNOLHdEQUFBO0lBQUs5SCxFQUFFLEVBQUMsaUJBQWlCO0lBQUM2SyxTQUFTLEVBQUVuQixnRUFBdUI7SUFBQWYsUUFBQSxHQUN6RCxHQUFHLEVBQ0gwVyxZQUFZLGFBQVpBLFlBQVksZUFBWkEsWUFBWSxDQUFFcGlCLE1BQU0sZ0JBQ25CMkssdURBQUEsQ0FBQ29YLHdFQUFjO01BQ2JTLFVBQVUsRUFBRUosWUFBWSxhQUFaQSxZQUFZLHVCQUFaQSxZQUFZLENBQUVwaUIsTUFBTztNQUNqQ3lpQixJQUFJLEVBQUVBLENBQUEsS0FBTU4sU0FBUyxDQUFDRSxtQkFBbUIsR0FBR0osMkRBQWEsQ0FBRTtNQUMzRFMsT0FBTyxFQUFFTCxtQkFBbUIsR0FBR0MsZ0JBQWlCO01BQ2hESyxlQUFlLEVBQUUsQ0FBRTtNQUFBalgsUUFBQSxFQUVsQjBXLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFcmQsR0FBRyxDQUFFdEMsS0FBSyxpQkFDdkJrSSx1REFBQSxDQUFDcVgsbURBQVU7UUFFVHZmLEtBQUssRUFBRUEsS0FBTTtRQUNiOUQsTUFBTSxFQUFFQTtNQUFPLEdBRlY4RCxLQUFLLENBQUMwTCxNQUFNLEdBQUcxTCxLQUFLLENBQUNNLEVBRzNCLENBQ0Y7SUFBQyxDQUNZLENBQUMsZ0JBRWpCOEgsd0RBQUEsQ0FBQ1gsOENBQUc7TUFBQzBELFNBQVMsRUFBRW5CLDhEQUFxQjtNQUFBZixRQUFBLGdCQUNuQ2Isd0RBQUEsQ0FBQ1gsOENBQUc7UUFBQzBELFNBQVMsRUFBRW5CLG9FQUEyQjtRQUFBZixRQUFBLGdCQUN6Q2YsdURBQUEsQ0FBQ3NULG1FQUFVO1VBQUNuSyxFQUFFLEVBQUU7WUFBRTlELFFBQVEsRUFBRSxFQUFFO1lBQUVXLEtBQUssRUFBRTtVQUFZO1FBQUUsQ0FBRSxDQUFDLGVBQ3hEaEcsdURBQUEsQ0FBQ3VULGtFQUFTO1VBQ1JwSyxFQUFFLEVBQUU7WUFDRjlELFFBQVEsRUFBRSxFQUFFO1lBQ1pxTyxRQUFRLEVBQUUsVUFBVTtZQUNwQmEsR0FBRyxFQUFFLENBQUM7WUFDTkMsS0FBSyxFQUFFLENBQUM7WUFDUnhPLEtBQUssRUFBRTtVQUNUO1FBQUUsQ0FDSCxDQUFDO01BQUEsQ0FDQyxDQUFDLEVBQ0wxUCxDQUFDLENBQUMsa0JBQWtCLENBQUM7SUFBQSxDQUNuQixDQUNOO0VBQUEsQ0FDRSxDQUFDO0FBRVYsQ0FBQztBQUVELGlFQUFlaWhCLGVBQWU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4REo7QUFDUztBQUNZO0FBQ0w7QUFDRTtBQUN1QjtBQUNwQjtBQUFBO0FBRS9DLE1BQU1lLGlCQUFpQixHQUFHM2hCLElBQUEsSUFBdUI7RUFBQSxJQUF0QjtJQUFFbUIsS0FBSztJQUFFOUQ7RUFBTyxDQUFDLEdBQUEyQyxJQUFBO0VBQzFDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUFFaVosYUFBYTtJQUFFQyxXQUFXO0lBQUVDLFVBQVU7SUFBRUMsV0FBVztJQUFFQztFQUFjLENBQUMsR0FDMUVSLDREQUFvQixDQUFDO0lBQUVyZ0IsS0FBSztJQUFFOUQ7RUFBTyxDQUFDLENBQUM7RUFDekMsTUFBTTRrQixPQUFPLEdBQUcsR0FBRztFQUVuQixvQkFDRTFZLHVEQUFBLENBQUNYLDhDQUFHO0lBQUMwRCxTQUFTLEVBQUVuQixrRUFBeUI7SUFBQWYsUUFBQSxHQUN0QyxDQUFBNFgsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUV0akIsTUFBTSxJQUFHLENBQUMsaUJBQ3hCMkssc0RBQUEsQ0FBQXFZLHVEQUFBO01BQUF0WCxRQUFBLEVBQ0c0WCxhQUFhLENBQUN2ZSxHQUFHLENBQUVaLE1BQU0sSUFBSztRQUM3QixNQUFNc2YsV0FBVyxHQUNkdGYsTUFBTSxDQUFDdWYsR0FBRyxJQUFJdmYsTUFBTSxDQUFDd2YsV0FBVyxDQUFDQyxJQUFJLEdBQUdMLE9BQU8sQ0FBQyxHQUFJQSxPQUFPO1FBRTlELG9CQUNFMVksdURBQUEsQ0FBQytWLCtDQUFJO1VBQ0h6RCxTQUFTO1VBRVRySixFQUFFLEVBQUU7WUFBRWtHLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFDZCxlQUFZLHdCQUF3QjtVQUFBdE8sUUFBQSxnQkFFcENmLHNEQUFBLENBQUNpVywrQ0FBSTtZQUFDSSxFQUFFLEVBQUUsQ0FBRTtZQUFDRCxJQUFJO1lBQUFyVixRQUFBLGVBQ2ZiLHVEQUFBO2NBQUFhLFFBQUEsR0FBTSxHQUNILEVBQUN2SCxNQUFNLENBQUN1ZixHQUFHLEVBQUMsR0FBQyxFQUFDdmYsTUFBTSxDQUFDd2YsV0FBVyxDQUFDN2dCLElBQUk7WUFBQSxDQUNsQztVQUFDLENBQ0gsQ0FBQyxlQUNQNkgsc0RBQUEsQ0FBQ2lXLCtDQUFJO1lBQUNJLEVBQUUsRUFBRSxDQUFFO1lBQUNELElBQUk7WUFBQzhDLEtBQUssRUFBQyxPQUFPO1lBQUFuWSxRQUFBLEVBQzVCcVgsc0RBQWMsQ0FBQ1UsV0FBVyxFQUFFO2NBQUVLLFFBQVEsRUFBRXJoQixLQUFLLENBQUNxaEI7WUFBUyxDQUFDO1VBQUMsQ0FDdEQsQ0FBQztRQUFBLGVBQUFqa0IsTUFBQSxDQVhVc0UsTUFBTSxDQUFDd2YsV0FBVyxDQUFDSSxPQUFPLENBWXZDLENBQUM7TUFFWCxDQUFDO0lBQUMsQ0FDRixDQUNILEVBQ0F0aEIsS0FBSyxDQUFDdWhCLGVBQWUsR0FBRyxDQUFDLGlCQUN4Qm5aLHVEQUFBLENBQUMrViwrQ0FBSTtNQUFDekQsU0FBUztNQUFDckosRUFBRSxFQUFFO1FBQUVrRyxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUF0TyxRQUFBLGdCQUM1QmYsc0RBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQXJWLFFBQUEsRUFDZHpLLENBQUMsQ0FBQyx5QkFBeUI7TUFBQyxDQUN6QixDQUFDLGVBQ1A0Six1REFBQSxDQUFDK1YsK0NBQUk7UUFBQ0ksRUFBRSxFQUFFLENBQUU7UUFBQ0QsSUFBSTtRQUFDOEMsS0FBSyxFQUFDLE9BQU87UUFBQW5ZLFFBQUEsR0FBQyxHQUM3QixFQUFDd1gsYUFBYTtNQUFBLENBQ1gsQ0FBQztJQUFBLENBQ0gsQ0FDUCxFQUNBemdCLEtBQUssQ0FBQ3doQixZQUFZLEdBQUcsQ0FBQyxpQkFDckJwWix1REFBQSxDQUFDK1YsK0NBQUk7TUFBQ3pELFNBQVM7TUFBQ3JKLEVBQUUsRUFBRTtRQUFFa0csRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdE8sUUFBQSxnQkFDNUJmLHNEQUFBLENBQUNpVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUFyVixRQUFBLEVBQ2R6SyxDQUFDLENBQUMscUJBQXFCO01BQUMsQ0FDckIsQ0FBQyxlQUNQMEosc0RBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQzhDLEtBQUssRUFBQyxPQUFPO1FBQUFuWSxRQUFBLEVBQzVCMFg7TUFBVSxDQUNQLENBQUM7SUFBQSxDQUNILENBQ1AsRUFDQTNnQixLQUFLLENBQUMxQixNQUFNLEtBQUssTUFBTSxpQkFDdEI4Six1REFBQSxDQUFDK1YsK0NBQUk7TUFBQ3pELFNBQVM7TUFBQ3JKLEVBQUUsRUFBRTtRQUFFa0csRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdE8sUUFBQSxnQkFDNUJmLHNEQUFBLENBQUNpVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUFyVixRQUFBLEVBQ2R6SyxDQUFDLENBQUMsMkJBQTJCO01BQUMsQ0FDM0IsQ0FBQyxlQUNQNEosdURBQUEsQ0FBQytWLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQzhDLEtBQUssRUFBQyxPQUFPO1FBQUFuWSxRQUFBLEdBQUMsR0FDN0IsRUFBQzJYLFdBQVc7TUFBQSxDQUNULENBQUM7SUFBQSxDQUNILENBQ1AsRUFDQUYsV0FBVyxHQUFHLENBQUMsaUJBQ2R0WSx1REFBQSxDQUFDK1YsK0NBQUk7TUFBQ3pELFNBQVM7TUFBQ3JKLEVBQUUsRUFBRTtRQUFFa0csRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdE8sUUFBQSxnQkFDNUJmLHNEQUFBLENBQUNpVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUFyVixRQUFBLEVBQ2R6SyxDQUFDLENBQUMsdUJBQXVCO01BQUMsQ0FDdkIsQ0FBQyxlQUNQMEosc0RBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQzhDLEtBQUssRUFBQyxPQUFPO1FBQUFuWSxRQUFBLEVBQzVCeVg7TUFBVyxDQUNSLENBQUM7SUFBQSxDQUNILENBQ1AsZUFDRHhZLHNEQUFBLENBQUNtUSw4REFBTyxJQUFFLENBQUMsZUFDWGpRLHVEQUFBLENBQUMrViwrQ0FBSTtNQUFDekQsU0FBUztNQUFDckosRUFBRSxFQUFFO1FBQUUrSSxFQUFFLEVBQUUsQ0FBQztRQUFFN0MsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdE8sUUFBQSxnQkFDbkNmLHNEQUFBLENBQUNpVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDRCxJQUFJO1FBQUFyVixRQUFBLEVBQ2R6SyxDQUFDLENBQUMscUJBQXFCO01BQUMsQ0FDckIsQ0FBQyxlQUNQMEosc0RBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUNELElBQUk7UUFBQzhDLEtBQUssRUFBQyxPQUFPO1FBQUFuWSxRQUFBLEVBQzVCakosS0FBSyxDQUFDMUIsTUFBTSxLQUFLLE1BQU0sR0FBRyxPQUFPLEdBQUdzaUI7TUFBVyxDQUM1QyxDQUFDO0lBQUEsQ0FDSCxDQUFDO0VBQUEsQ0FDSixDQUFDO0FBRVYsQ0FBQztBQUVESixpQkFBaUIsQ0FBQy9XLFNBQVMsR0FBRztFQUM1QnpKLEtBQUssRUFBRXVILHVEQUFlLENBQUM7SUFDckI4WixRQUFRLEVBQUU5WiwwREFBZ0I7SUFDMUJnYSxlQUFlLEVBQUVoYSwwREFBZ0I7SUFDakNpYSxZQUFZLEVBQUVqYSwwREFBZ0I7SUFDOUJqSixNQUFNLEVBQUVpSiwwREFBZ0JpRTtFQUMxQixDQUFDLENBQUM7RUFDRnRQLE1BQU0sRUFBRXFMLDBEQUFnQm1DO0FBQzFCLENBQUM7QUFFRCxpRUFBZThXLGlCQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDekdOO0FBQ1M7QUFDWTtBQUNSO0FBQ0Y7QUFDdUI7QUFDYjtBQUFBO0FBRS9DLE1BQU1vQixrQkFBa0IsR0FBRy9pQixJQUFBLElBTXJCO0VBQUEsSUFOc0I7SUFDMUIzQyxNQUFNO0lBQ05pRyxPQUFPO0lBQ1AwZixhQUFhO0lBQ2JDLGFBQWE7SUFDYkM7RUFDRixDQUFDLEdBQUFsakIsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTXdhLEdBQUcsR0FBR04sOENBQU0sQ0FBQyxDQUFDO0VBQ3BCLE1BQU1PLG9CQUFvQixHQUN4Qi9sQixNQUFNLENBQUNnbUIsNkNBQTZDLEdBQUdGLEdBQUc7RUFDNUQsTUFBTUcsMEJBQTBCLEdBQUdSLHFFQUFpQixDQUFDeGYsT0FBTyxDQUFDO0VBQzdELE1BQU1pZ0IsWUFBWSxHQUFHLENBQUMsRUFBRUgsb0JBQW9CLElBQUlFLDBCQUEwQixDQUFDO0VBQzNFLE1BQU1FLGlCQUFpQixHQUFHbGdCLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFeVIsSUFBSSxDQUFFcFYsQ0FBQyxJQUFLQSxDQUFDLENBQUNtRSxlQUFlLENBQUNwRixNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQzVFLG9CQUNFNkssdURBQUEsQ0FBQW1ZLHVEQUFBO0lBQUF0WCxRQUFBLEdBQ0dtWixZQUFZLGlCQUNYbGEsc0RBQUEsQ0FBQ2lRLGlEQUFNO01BQ0wsY0FBVyx1QkFBdUI7TUFDbENtSyxJQUFJLEVBQUMsUUFBUTtNQUNiblgsU0FBUyxLQUFBL04sTUFBQSxDQUFLNE0sbUVBQXlCLGtCQUFBNU0sTUFBQSxDQUNyQ3lrQixhQUFhLEdBQUc3WCwrREFBcUIsR0FBRyxFQUFFLENBQUc7TUFDL0M2USxPQUFPLEVBQUMsVUFBVTtNQUNsQitELElBQUksRUFBQyxPQUFPO01BQ1pyVCxPQUFPLEVBQUV1VyxhQUFjO01BQ3ZCdlksUUFBUSxFQUFFc1ksYUFBYztNQUFBNVksUUFBQSxFQUV2QnpLLENBQUMsQ0FBQyw4QkFBOEI7SUFBQyxDQUM1QixDQUNULEVBQ0E2akIsaUJBQWlCLGlCQUNoQm5hLHNEQUFBLENBQUNpUSxpREFBTTtNQUNMLGNBQVcsdUJBQXVCO01BQ2xDbUssSUFBSSxFQUFDLFFBQVE7TUFDYm5YLFNBQVMsRUFBRW5CLG1FQUEwQjtNQUNyQzZRLE9BQU8sRUFBQyxVQUFVO01BQ2xCK0QsSUFBSSxFQUFDLE9BQU87TUFDWnJULE9BQU8sRUFBRXdXLG1CQUFvQjtNQUFBOVksUUFBQSxFQUU1QnpLLENBQUMsQ0FBQyw4QkFBOEI7SUFBQyxDQUM1QixDQUNULGVBQ0QwSixzREFBQSxDQUFDaVEsaURBQU07TUFDTCxjQUFXLHNCQUFzQjtNQUNqQ21LLElBQUksRUFBQyxRQUFRO01BQ2JuWCxTQUFTLEVBQUVuQixtRUFBMEI7TUFDckM2USxPQUFPLEVBQUMsVUFBVTtNQUNsQitELElBQUksRUFBQyxPQUFPO01BQ1oxTixNQUFNLEVBQUMsTUFBTTtNQUNidVIsR0FBRyxFQUFDLHFCQUFxQjtNQUN6QnZiLElBQUksWUFBQTlKLE1BQUEsQ0FBWWxCLE1BQU0sQ0FBQ3dtQixhQUFhLENBQUc7TUFBQXpaLFFBQUEsRUFFdEN6SyxDQUFDLENBQUMsMEJBQTBCO0lBQUMsQ0FDeEIsQ0FBQztFQUFBLENBQ1QsQ0FBQztBQUVQLENBQUM7QUFFRG9qQixrQkFBa0IsQ0FBQ25ZLFNBQVMsR0FBRztFQUM3QnZOLE1BQU0sRUFBRXFMLDBEQUFnQjtFQUN4QnBGLE9BQU8sRUFBRW9GLHlEQUFpQixDQUFDOUksTUFBTSxDQUFDO0VBQ2xDcWpCLGFBQWEsRUFBRXZhLHdEQUFjO0VBQzdCd2EsbUJBQW1CLEVBQUV4YSx3REFBYztFQUNuQ3NhLGFBQWEsRUFBRXRhLHdEQUFja0U7QUFDL0IsQ0FBQztBQUVELGlFQUFlbVcsa0JBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxRVA7QUFDUztBQUNPO0FBQ0s7QUFDSztBQUNFO0FBQ1A7QUFBQTtBQUUvQyxNQUFNZ0IsWUFBWSxHQUFHL2pCLElBQUEsSUFNZjtFQUFBLElBTmdCO0lBQ3BCbUIsS0FBSztJQUNMOUQsTUFBTTtJQUNONGxCLGFBQWE7SUFDYkQsYUFBYTtJQUNiRTtFQUNGLENBQUMsR0FBQWxqQixJQUFBO0VBQ0MsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUM5QixvQkFDRVksdURBQUEsQ0FBQW1ZLHVEQUFBO0lBQUF0WCxRQUFBLGdCQUNFYix1REFBQSxDQUFDWCw4Q0FBRztNQUNGMEQsU0FBUyxFQUFFbkIsb0VBQTJCO01BQ3RDcUgsRUFBRSxFQUFFO1FBQUUrSSxFQUFFLEVBQUUsQ0FBQztRQUFFMEksRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUNyQixlQUFZLHlCQUF5QjtNQUFBN1osUUFBQSxnQkFFckNmLHNEQUFBO1FBQUFlLFFBQUEsRUFBS3pLLENBQUMsQ0FBQyw2QkFBNkI7TUFBQyxDQUFLLENBQUMsZUFDM0MwSixzREFBQSxDQUFDaVcsK0NBQUk7UUFBQ3pELFNBQVM7UUFBQXpSLFFBQUEsZUFDYmYsc0RBQUEsQ0FBQ2lXLCtDQUFJO1VBQ0hJLEVBQUUsRUFBRSxFQUFHO1VBQ1BwVCxTQUFTLEVBQUVuQiwwRUFBaUM7VUFDNUNxSCxFQUFFLEVBQUU7WUFBRWtHLEVBQUUsRUFBRTtVQUFFLENBQUU7VUFDZCtHLElBQUk7VUFBQXJWLFFBQUEsZUFFSmYsc0RBQUEsQ0FBQ3NZLDBEQUFpQjtZQUFDeGdCLEtBQUssRUFBRUEsS0FBTTtZQUFDOUQsTUFBTSxFQUFFQTtVQUFPLENBQUU7UUFBQyxDQUMvQztNQUFDLENBQ0gsQ0FBQztJQUFBLENBQ0osQ0FBQyxlQUNOZ00sc0RBQUEsQ0FBQ1QsOENBQUc7TUFBQzhXLEVBQUUsRUFBRSxFQUFHO01BQUNsTixFQUFFLEVBQUU7UUFBRWtHLEVBQUUsRUFBRTtNQUFFLENBQUU7TUFBQXRPLFFBQUEsZUFDekJmLHNEQUFBLENBQUMwWiwyREFBa0I7UUFDakIxbEIsTUFBTSxFQUFFQSxNQUFPO1FBQ2ZpRyxPQUFPLEVBQUVuQyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWdqQixhQUFjO1FBQzlCbkIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCQyxhQUFhLEVBQUVBLGFBQWM7UUFDN0JDLG1CQUFtQixFQUFFQTtNQUFvQixDQUMxQztJQUFDLENBQ0MsQ0FBQztFQUFBLENBQ04sQ0FBQztBQUVQLENBQUM7QUFDRGEsWUFBWSxDQUFDblosU0FBUyxHQUFHO0VBQ3ZCdk4sTUFBTSxFQUFFcUwsMERBQWdCO0VBQ3hCdkgsS0FBSyxFQUFFdUgsdURBQWUsQ0FBQztJQUNyQnliLGFBQWEsRUFBRXpiLHlEQUFpQixDQUFDOUksTUFBTTtFQUN6QyxDQUFDLENBQUM7RUFDRnFqQixhQUFhLEVBQUV2YSx3REFBYztFQUM3QnNhLGFBQWEsRUFBRXRhLHdEQUFja0U7QUFDL0IsQ0FBQztBQUVELGlFQUFlbVgsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDeEREO0FBQzhCO0FBQ0s7QUFDZDtBQUNYO0FBQ2dCO0FBQ0Y7QUFDQTtBQUNJO0FBQ1A7QUFBQTtBQUUvQyxNQUFNTSxVQUFVLEdBQUdya0IsSUFBQSxJQUFtQjtFQUFBLElBQWxCO0lBQUU2Z0I7RUFBVSxDQUFDLEdBQUE3Z0IsSUFBQTtFQUMvQixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFDSnRMLE1BQU07SUFDTmluQixXQUFXO0lBQ1hDLHlCQUF5QjtJQUN6QkM7RUFDRixDQUFDLEdBQUd2Tix3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRW1XLHFEQUFZLENBQUM7RUFFakUsb0JBQ0U3Tix1REFBQTtJQUFLaUQsU0FBUyxFQUFFbkIscUVBQTRCO0lBQUFmLFFBQUEsZUFDMUNmLHVEQUFBO01BQUs1SCxFQUFFLEVBQUMscUJBQXFCO01BQUM2SyxTQUFTLEVBQUVuQixvRUFBMkI7TUFBQWYsUUFBQSxFQUNqRWthLFdBQVcsYUFBWEEsV0FBVyxlQUFYQSxXQUFXLENBQUU1bEIsTUFBTSxnQkFDbEIySyx1REFBQSxDQUFDb1gsd0VBQWM7UUFDYlMsVUFBVSxFQUFFb0QsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUU1bEIsTUFBTztRQUNoQ3lpQixJQUFJLEVBQUVBLENBQUEsS0FBTU4sU0FBUyxDQUFDMEQseUJBQXlCLEdBQUc1RCwyREFBYSxDQUFFO1FBQ2pFUyxPQUFPLEVBQUVtRCx5QkFBeUIsR0FBR0Msc0JBQXVCO1FBQzVEbkQsZUFBZSxFQUFFLENBQUU7UUFBQWpYLFFBQUEsZUFFbkJmLHVEQUFBO1VBQUtpRCxTQUFTLEVBQUVuQixvRUFBMkI7VUFBQWYsUUFBQSxFQUN4Q2thLFdBQVcsQ0FBQzdnQixHQUFHLENBQUVaLE1BQU0saUJBQ3RCd0csdURBQUEsQ0FBQythLHlEQUFnQjtZQUVmdmhCLE1BQU0sRUFBRUEsTUFBTztZQUNmeEYsTUFBTSxFQUFFQSxNQUFPO1lBQ2Z1bkIsYUFBYSxFQUFFLEtBQU07WUFDckJDLGtCQUFrQixFQUFFLEVBQUc7WUFDdkJDLGNBQWMsRUFBRSxLQUFNO1lBQ3RCQyx3QkFBd0I7VUFBQSxHQU5uQmxpQixNQUFNLENBQUNwQixFQU9iLENBQ0Y7UUFBQyxDQUNDO01BQUMsQ0FDUSxDQUFDLGdCQUVqQjhILHdEQUFBLENBQUNYLDhDQUFHO1FBQUMwRCxTQUFTLEVBQUVuQiwrREFBc0I7UUFBQWYsUUFBQSxnQkFDcENiLHdEQUFBLENBQUNYLDhDQUFHO1VBQUMwRCxTQUFTLEVBQUVuQixvRUFBMkI7VUFBQWYsUUFBQSxnQkFDekNmLHVEQUFBLENBQUNzVCxtRUFBVTtZQUFDbkssRUFBRSxFQUFFO2NBQUU5RCxRQUFRLEVBQUUsRUFBRTtjQUFFVyxLQUFLLEVBQUU7WUFBWTtVQUFFLENBQUUsQ0FBQyxlQUN4RGhHLHVEQUFBLENBQUN1VCxrRUFBUztZQUNScEssRUFBRSxFQUFFO2NBQ0Y5RCxRQUFRLEVBQUUsRUFBRTtjQUNacU8sUUFBUSxFQUFFLFVBQVU7Y0FDcEJhLEdBQUcsRUFBRSxDQUFDO2NBQ05DLEtBQUssRUFBRSxDQUFDO2NBQ1J4TyxLQUFLLEVBQUU7WUFDVDtVQUFFLENBQ0gsQ0FBQztRQUFBLENBQ0MsQ0FBQyxFQUNMMVAsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO01BQUEsQ0FDckI7SUFDTixDQUNFO0VBQUMsQ0FDSCxDQUFDO0FBRVYsQ0FBQztBQUVELGlFQUFlMGtCLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsRUM7QUFDUztBQUNZO0FBQ087QUFDUDtBQUFBO0FBRS9DLE1BQU1hLFVBQVUsR0FBR2xsQixJQUFBLElBQWU7RUFBQSxJQUFkO0lBQUVoRTtFQUFNLENBQUMsR0FBQWdFLElBQUE7RUFDM0IsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUU5QixvQkFDRVksdURBQUEsQ0FBQ1gsOENBQUc7SUFBQXdCLFFBQUEsZ0JBQ0ZiLHVEQUFBLENBQUNYLDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQixzREFBYTtNQUFBZixRQUFBLEdBQUV6SyxDQUFDLENBQUMsMkJBQTJCLENBQUMsRUFBQyxHQUFDO0lBQUEsQ0FBSyxDQUFDLGVBQ3JFMEosc0RBQUEsQ0FBQzRiLHFEQUFVO01BQUNqSixPQUFPLEVBQUMsT0FBTztNQUFDLGVBQVksMEJBQTBCO01BQUE1UixRQUFBLEVBQy9EcE87SUFBSyxDQUNJLENBQUM7RUFBQSxDQUNWLENBQUM7QUFFVixDQUFDO0FBRUQsTUFBTW1wQixrQkFBa0IsR0FBRzFrQixLQUFBLElBQTZCO0VBQUEsSUFBNUI7SUFBRXhFLFNBQVM7SUFBRUM7RUFBUyxDQUFDLEdBQUF1RSxLQUFBO0VBQ2pELE1BQU07SUFBRWQ7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFFOUIsb0JBQ0VZLHVEQUFBLENBQUNYLDhDQUFHO0lBQUF3QixRQUFBLGdCQUNGYix1REFBQSxDQUFDWCw4Q0FBRztNQUFDMEQsU0FBUyxFQUFFbkIsc0RBQWE7TUFBQWYsUUFBQSxHQUFFekssQ0FBQyxDQUFDLDJCQUEyQixDQUFDLEVBQUMsR0FBQztJQUFBLENBQUssQ0FBQyxlQUNyRTRKLHVEQUFBLENBQUMwYixxREFBVTtNQUFDakosT0FBTyxFQUFDLE9BQU87TUFBQTVSLFFBQUEsR0FDeEJuTyxTQUFTLEVBQUMsR0FBQyxFQUFDQyxRQUFRO0lBQUEsQ0FDWCxDQUFDO0VBQUEsQ0FDVixDQUFDO0FBRVYsQ0FBQztBQUVELE1BQU1rcEIsU0FBUyxHQUFHdmtCLEtBQUEsSUFBNkI7RUFBQSxJQUE1QjtJQUFFNUUsU0FBUztJQUFFQztFQUFTLENBQUMsR0FBQTJFLEtBQUE7RUFDeEMsTUFBTTtJQUFFbEI7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFFOUIsb0JBQ0VZLHVEQUFBLENBQUNYLDhDQUFHO0lBQUF3QixRQUFBLGdCQUNGYix1REFBQSxDQUFDWCw4Q0FBRztNQUFDMEQsU0FBUyxFQUFFbkIsc0RBQWE7TUFBQWYsUUFBQSxHQUFFekssQ0FBQyxDQUFDLDBCQUEwQixDQUFDLEVBQUMsR0FBQztJQUFBLENBQUssQ0FBQyxlQUNwRTRKLHVEQUFBLENBQUMwYixxREFBVTtNQUFDakosT0FBTyxFQUFDLE9BQU87TUFBQTVSLFFBQUEsR0FDeEJuTyxTQUFTLEVBQUMsR0FBQyxFQUFDQyxRQUFRO0lBQUEsQ0FDWCxDQUFDO0VBQUEsQ0FDVixDQUFDO0FBRVYsQ0FBQztBQUVELE1BQU1tcEIsY0FBYyxHQUFHcGpCLEtBQUEsSUFBMEM7RUFBQSxJQUFBcWpCLGFBQUEsRUFBQUMsY0FBQSxFQUFBQyxjQUFBO0VBQUEsSUFBekM7SUFBRTNpQixNQUFNO0lBQUVraUI7RUFBeUIsQ0FBQyxHQUFBOWlCLEtBQUE7RUFDMUQsTUFBTTtJQUFFdEM7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTThjLFlBQVksR0FBRyxHQUFBSCxhQUFBLEdBQUN6aUIsTUFBTSxDQUFDNEQsS0FBSyxjQUFBNmUsYUFBQSxlQUFaQSxhQUFBLENBQWN0cEIsS0FBSyxLQUFJNkcsTUFBTSxDQUFDNmlCLFNBQVM7RUFDN0QsTUFBTUMsV0FBVyxHQUFHLENBQUMsR0FBQUosY0FBQSxHQUFDMWlCLE1BQU0sQ0FBQzRELEtBQUssY0FBQThlLGNBQUEsZUFBWkEsY0FBQSxDQUFjN2YsVUFBVTtFQUU5QyxJQUFJK2YsWUFBWSxFQUFFO0lBQ2hCLG9CQUNFcGMsc0RBQUE7TUFDRWlELFNBQVMsRUFBRW5CLGlFQUF3QjtNQUNuQyxlQUFZLDRCQUE0QjtNQUFBZixRQUFBLEVBRXZDekssQ0FBQyxDQUFDLDBDQUEwQztJQUFDLENBQzFDLENBQUM7RUFFWDtFQUVBLEtBQUE2bEIsY0FBQSxHQUFJM2lCLE1BQU0sQ0FBQzRELEtBQUssY0FBQStlLGNBQUEsZUFBWkEsY0FBQSxDQUFjeHBCLEtBQUssRUFBRTtJQUFBLElBQUE2cEIsYUFBQSxFQUFBQyxjQUFBLEVBQUFDLGNBQUEsRUFBQUMsY0FBQTtJQUN2QixvQkFDRXpjLHVEQUFBLENBQUMrViwrQ0FBSTtNQUFDekQsU0FBUztNQUFBelIsUUFBQSxnQkFDYmYsc0RBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNHLElBQUk7UUFBQXJWLFFBQUEsZUFDUmYsc0RBQUEsQ0FBQzZiLFVBQVU7VUFBQ2xwQixLQUFLLEVBQUU2RyxNQUFNLENBQUM0RCxLQUFLLENBQUN6SztRQUFNLENBQUU7TUFBQyxDQUNyQyxDQUFDLEVBQ04rb0Isd0JBQXdCLGlCQUN2QjFiLHNEQUFBLENBQUNpVywrQ0FBSTtRQUFDRyxJQUFJO1FBQUNuVCxTQUFTLEVBQUVuQiwrREFBc0I7UUFBQWYsUUFBQSxlQUMxQ2Ysc0RBQUEsQ0FBQzhiLGtCQUFrQjtVQUNqQmxwQixTQUFTLEdBQUE0cEIsYUFBQSxHQUFFaGpCLE1BQU0sQ0FBQzFCLEtBQUssY0FBQTBrQixhQUFBLHVCQUFaQSxhQUFBLENBQWNLLGdCQUFpQjtVQUMxQ2hxQixRQUFRLEdBQUE0cEIsY0FBQSxHQUFFampCLE1BQU0sQ0FBQzFCLEtBQUssY0FBQTJrQixjQUFBLHVCQUFaQSxjQUFBLENBQWNLO1FBQWdCLENBQ3pDO01BQUMsQ0FDRSxDQUNQLEVBQ0FSLFdBQVcsaUJBQ1Z0YyxzREFBQSxDQUFDaVcsK0NBQUk7UUFBQ0csSUFBSTtRQUFDblQsU0FBUyxFQUFFbkIsK0RBQXNCO1FBQUFmLFFBQUEsZUFDMUNmLHNEQUFBLENBQUMrYixTQUFTO1VBQ1JucEIsU0FBUyxHQUFBOHBCLGNBQUEsR0FBRWxqQixNQUFNLENBQUM0RCxLQUFLLGNBQUFzZixjQUFBLHVCQUFaQSxjQUFBLENBQWNsZ0IsVUFBVztVQUNwQzNKLFFBQVEsR0FBQThwQixjQUFBLEdBQUVuakIsTUFBTSxDQUFDNEQsS0FBSyxjQUFBdWYsY0FBQSx1QkFBWkEsY0FBQSxDQUFjbGdCO1FBQVUsQ0FDbkM7TUFBQyxDQUNFLENBQ1A7SUFBQSxDQUNHLENBQUM7RUFFWDtFQUVBLE9BQU8sSUFBSTtBQUNiLENBQUM7QUFFRHVmLGNBQWMsQ0FBQ3phLFNBQVMsR0FBRztFQUN6Qi9ILE1BQU0sRUFBRTZGLHVEQUFlLENBQUM7SUFDdEJqQyxLQUFLLEVBQUVpQyx1REFBZSxDQUFDO01BQ3JCMU0sS0FBSyxFQUFFME0sMERBQWdCaUU7SUFDekIsQ0FBQyxDQUFDO0lBQ0YrWSxTQUFTLEVBQUVoZCx3REFBY2tFO0VBQzNCLENBQUMsQ0FBQztFQUNGbVksd0JBQXdCLEVBQUVyYyx3REFBY2tFO0FBQzFDLENBQUM7QUFFRCxpRUFBZXlZLGNBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BHVztBQUNMO0FBQ1k7QUFDUjtBQUNXO0FBQ2U7QUFDbEI7QUFBQTtBQUUvQyxNQUFNZ0IsYUFBYSxHQUFHcm1CLElBQUEsSUFNaEI7RUFBQSxJQUFBc21CLG9CQUFBLEVBQUFDLHFCQUFBO0VBQUEsSUFOaUI7SUFDckJscEIsTUFBTTtJQUNOOEQsS0FBSztJQUNMcWxCLGVBQWU7SUFDZkMsZUFBZTtJQUNmM0I7RUFDRixDQUFDLEdBQUE5a0IsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDK2QsY0FBYyxFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHNWEsK0NBQVEsQ0FDbERxYSxzRUFDRixDQUFDO0VBRUQsSUFBSSxFQUFDamxCLEtBQUssYUFBTEEsS0FBSyxnQkFBQW1sQixvQkFBQSxHQUFMbmxCLEtBQUssQ0FBRWdqQixhQUFhLGNBQUFtQyxvQkFBQSxlQUFwQkEsb0JBQUEsQ0FBc0I1bkIsTUFBTSxHQUFFLE9BQU8sSUFBSTtFQUM5QyxNQUFNa29CLGFBQWEsR0FBR3psQixLQUFLLGFBQUxBLEtBQUssZ0JBQUFvbEIscUJBQUEsR0FBTHBsQixLQUFLLENBQUVnakIsYUFBYSxjQUFBb0MscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFzQk0sS0FBSyxDQUFDLENBQUMsRUFBRUgsY0FBYyxDQUFDO0VBRXBFLE1BQU1JLFVBQVUsR0FBR0EsQ0FBQSxLQUFNO0lBQ3ZCLElBQUksQ0FBQTNsQixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTRsQixhQUFhLEtBQUc1bEIsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVnakIsYUFBYSxDQUFDemxCLE1BQU0sR0FBRTtNQUN0RDhuQixlQUFlLENBQUMsQ0FBQztJQUNuQjtJQUNBRyxpQkFBaUIsQ0FBQ0QsY0FBYyxHQUFHTixzRUFBd0IsQ0FBQztFQUM5RCxDQUFDO0VBRUQsTUFBTVksVUFBVSxHQUFHQSxDQUFBLEtBQU1MLGlCQUFpQixDQUFDUCxzRUFBd0IsQ0FBQztFQUVwRSxvQkFDRTdjLHVEQUFBLENBQUFtWSx1REFBQTtJQUFBdFgsUUFBQSxHQUNHd2MsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVuakIsR0FBRyxDQUFFWixNQUFNLGlCQUN6QndHLHNEQUFBLENBQUMrYSx5REFBZ0I7TUFFZnZoQixNQUFNLEVBQUVBLE1BQU87TUFDZnhGLE1BQU0sRUFBRUEsTUFBTztNQUNmdW5CLGFBQWEsRUFBRSxLQUFNO01BQ3JCQyxrQkFBa0IsRUFBRSxDQUFDLENBQUM0QixlQUFlLENBQUNRLElBQUksQ0FBRXRuQixDQUFDLElBQUtBLENBQUMsQ0FBQzhCLEVBQUUsS0FBS29CLE1BQU0sQ0FBQ3BCLEVBQUUsQ0FBRTtNQUN0RXFqQixjQUFjLEVBQUVBO0lBQWUsR0FMMUJqaUIsTUFBTSxDQUFDcEIsRUFNYixDQUNGLENBQUMsRUFDRCxDQUFBTixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTRsQixhQUFhLElBQUdMLGNBQWMsZ0JBQ3BDcmQsc0RBQUEsQ0FBQ2lRLGlEQUFNO01BQ0wsY0FBVyxrQkFBa0I7TUFDN0JtSyxJQUFJLEVBQUMsUUFBUTtNQUNiblgsU0FBUyxFQUFFbkIsK0RBQXNCO01BQ2pDdUIsT0FBTyxFQUFFb2EsVUFBVztNQUFBMWMsUUFBQSxFQUVuQnpLLENBQUMsQ0FBQywwQkFBMEI7SUFBQyxDQUN4QixDQUFDLEdBRVQsRUFDRCxFQUNBLENBQUFpbkIsYUFBYSxhQUFiQSxhQUFhLHVCQUFiQSxhQUFhLENBQUVsb0IsTUFBTSxJQUFHMG5CLHNFQUF3QixJQUNqRCxDQUFBUSxhQUFhLGFBQWJBLGFBQWEsdUJBQWJBLGFBQWEsQ0FBRWxvQixNQUFNLE9BQUt5QyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTRsQixhQUFhLGlCQUM1QzFkLHNEQUFBLENBQUNpUSxpREFBTTtNQUNMLGNBQVcsa0JBQWtCO01BQzdCbUssSUFBSSxFQUFDLFFBQVE7TUFDYm5YLFNBQVMsRUFBRW5CLCtEQUFzQjtNQUNqQ3VCLE9BQU8sRUFBRXNhLFVBQVc7TUFBQTVjLFFBQUEsRUFFbkJ6SyxDQUFDLENBQUMsMEJBQTBCO0lBQUMsQ0FDeEIsQ0FBQyxHQUVULEVBQ0Q7RUFBQSxDQUNELENBQUM7QUFFUCxDQUFDO0FBRUQwbUIsYUFBYSxDQUFDemIsU0FBUyxHQUFHO0VBQ3hCekosS0FBSyxFQUFFdUgsMERBQWdCO0VBQ3ZCckwsTUFBTSxFQUFFcUwsMERBQWdCbUM7QUFDMUIsQ0FBQztBQUVELGlFQUFld2IsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUV3QztBQUNMO0FBQ1k7QUFDRztBQUNWO0FBQ007QUFDSjtBQUNDO0FBQ3FCO0FBQzNCO0FBQ1M7QUFDSDtBQUNxQjtBQUM3QjtBQUNRO0FBQ0M7QUFDRztBQUFBO0FBRS9DLE1BQU1vQixVQUFVLEdBQUc7RUFDakJDLE1BQU0sRUFBRSxRQUFRO0VBQ2hCQyxRQUFRLEVBQUUsVUFBVTtFQUNwQkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQztBQUVELE1BQU1DLFVBQVUsR0FBRzduQixJQUFBLElBS2I7RUFBQSxJQUxjO0lBQ2xCOG5CLFlBQVk7SUFDWnJDLFlBQVk7SUFDWnNDLGNBQWM7SUFDZEM7RUFDRixDQUFDLEdBQUFob0IsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFFOUIsSUFBSThjLFlBQVksRUFBRTtJQUNoQixvQkFDRXBjLHVEQUFBLENBQUNpUSxpREFBTTtNQUNMaE4sU0FBUyxFQUFFbkIsb0VBQTBCO01BQ3JDdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1zYixXQUFXLENBQUNQLFVBQVUsQ0FBQ0csTUFBTSxDQUFFO01BQUF4ZCxRQUFBLEVBRTdDekssQ0FBQyxDQUFDLDZCQUE2QjtJQUFDLENBQzNCLENBQUM7RUFFYjtFQUVBLG9CQUNFNEosd0RBQUEsQ0FBQzRQLDREQUFLO0lBQ0ozRyxFQUFFLEVBQUU7TUFDRjZLLGNBQWMsRUFBRSxLQUFLO01BQ3JCMVIsS0FBSyxFQUFFO0lBQ1QsQ0FBRTtJQUNGOEcsVUFBVSxFQUFDLFFBQVE7SUFDbkIxVCxTQUFTLEVBQUMsS0FBSztJQUFBcUwsUUFBQSxnQkFFZmYsdURBQUEsQ0FBQ2lRLGlEQUFNO01BQ0xoTixTQUFTLEVBQUVuQix3RUFBOEI7TUFDekN1QixPQUFPLEVBQUVBLENBQUEsS0FBTXNiLFdBQVcsQ0FBQ1AsVUFBVSxDQUFDQyxNQUFNLENBQUU7TUFBQXRkLFFBQUEsRUFFN0MwZCxZQUFZLEdBQ1Rub0IsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLEdBQ2hDQSxDQUFDLENBQUMsMkJBQTJCO0lBQUMsQ0FDNUIsQ0FBQyxFQUNSb29CLGNBQWMsaUJBQ2IxZSx1REFBQSxDQUFDaVEsaURBQU07TUFDTCxjQUFXLHdCQUF3QjtNQUNuQ21LLElBQUksRUFBQyxRQUFRO01BQ2JuWCxTQUFTLEVBQUVuQixnRUFBc0I7TUFDakN1QixPQUFPLEVBQUVBLENBQUEsS0FBTXNiLFdBQVcsQ0FBQ1AsVUFBVSxDQUFDRSxRQUFRLENBQUU7TUFBQXZkLFFBQUEsRUFFL0N6SyxDQUFDLENBQUMsK0JBQStCO0lBQUMsQ0FDN0IsQ0FDVDtFQUFBLENBQ0ksQ0FBQztBQUVaLENBQUM7QUFFRGtvQixVQUFVLENBQUNqZCxTQUFTLEdBQUc7RUFDckJrZCxZQUFZLEVBQUVwZix3REFBYyxDQUFDNkIsVUFBVTtFQUN2Q2tiLFlBQVksRUFBRS9jLHdEQUFjLENBQUM2QixVQUFVO0VBQ3ZDd2QsY0FBYyxFQUFFcmYsd0RBQWMsQ0FBQzZCLFVBQVU7RUFDekN5ZCxXQUFXLEVBQUV0Zix3REFBYyxDQUFDNkI7QUFDOUIsQ0FBQztBQUVELE1BQU02WixnQkFBZ0IsR0FBRzNqQixLQUFBLElBT25CO0VBQUEsSUFBQTJuQixtQkFBQSxFQUFBQyxhQUFBLEVBQUF4QyxhQUFBLEVBQUFQLGFBQUEsRUFBQVEsY0FBQSxFQUFBUCxjQUFBO0VBQUEsSUFQb0I7SUFDeEIxaUIsTUFBTTtJQUNOeEYsTUFBTTtJQUNOdW5CLGFBQWE7SUFDYkMsa0JBQWtCO0lBQ2xCQyxjQUFjO0lBQ2RDO0VBQ0YsQ0FBQyxHQUFBdGtCLEtBQUE7RUFDQyxNQUFNO0lBQUVkO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0zTCxRQUFRLEdBQUdtcUIsd0RBQVcsQ0FBQyxDQUFDO0VBQzlCLE1BQU1oRSxHQUFHLEdBQUdOLDhDQUFNLENBQUMsQ0FBQztFQUNwQixNQUFNO0lBQUVVLFlBQVk7SUFBRWtDLFlBQVk7SUFBRXFDLFlBQVk7SUFBRVE7RUFBWSxDQUFDLEdBQzdEZiwwRUFBZ0IsQ0FBQzFrQixNQUFNLENBQUM7RUFDMUIsTUFBTSxDQUFDMGxCLFNBQVMsRUFBRUMsWUFBWSxDQUFDLEdBQUd6YywrQ0FBUSxDQUFDLElBQUksQ0FBQztFQUNoRCxNQUFNMGMsWUFBWSxHQUFHcEIseUVBQXFCLENBQUNocUIsTUFBTSxDQUFDO0VBQ2xELE1BQU1xckIsb0JBQW9CLEdBQUdELFlBQVksR0FBR3RGLEdBQUc7RUFDL0MsTUFBTTRFLGNBQWMsR0FDbEJXLG9CQUFvQixJQUFJSixXQUFXLElBQUksQ0FBQ3ZELHdCQUF3QjtFQUVsRSxNQUFNNEQsZ0JBQWdCLEdBQUdBLENBQUEsS0FBTTtJQUM3QjNyQixRQUFRLENBQUNELHNEQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCeXJCLFlBQVksQ0FBQyxJQUFJLENBQUM7RUFDcEIsQ0FBQztFQUVELE1BQU1JLGVBQWUsR0FBSUMsSUFBSSxJQUFLO0lBQ2hDN3JCLFFBQVEsQ0FBQ0Qsc0RBQVcsQ0FBQyxDQUFDLENBQUM7SUFDdkJ5ckIsWUFBWSxDQUFDSyxJQUFJLENBQUM7RUFDcEIsQ0FBQztFQUVELG9CQUNFdGYsd0RBQUEsQ0FBQytWLCtDQUFJO0lBQ0h6RCxTQUFTO0lBRVR2UCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSw4REFBbUIsT0FBQTVNLE1BQUEsQ0FDL0JxbUIsYUFBYSxHQUFHelosNkRBQWtCLEdBQUcsRUFBRSxPQUFBNU0sTUFBQSxDQUNyQ3FtQixhQUFhLElBQUksQ0FBQ3JCLFlBQVksR0FBR3BZLGdFQUFxQixHQUFHLEVBQUUsT0FBQTVNLE1BQUEsQ0FDN0RzbUIsa0JBQWtCLEdBQUcxWiwwREFBZSxHQUFHLEVBQUUsQ0FDeEM7SUFBQWYsUUFBQSxHQUVGd2EsYUFBYSxpQkFDWnZiLHVEQUFBLENBQUNpVywrQ0FBSTtNQUFDRyxJQUFJO01BQUNDLEVBQUUsRUFBRSxDQUFFO01BQUMvQixPQUFPLEVBQUUsQ0FBRTtNQUFDclIsU0FBUyxFQUFFbkIsMERBQWdCO01BQUFmLFFBQUEsZUFDdkRmLHVEQUFBLENBQUNzRywrREFBUTtRQUNQLGNBQVcsd0JBQXdCO1FBQ25DOFQsSUFBSSxFQUFDLFVBQVU7UUFDZmhTLE9BQU8sRUFBRW9ULGtCQUFtQjtRQUM1QnJVLFFBQVEsRUFBRzVPLENBQUMsSUFBS2tqQixjQUFjLENBQUNsakIsQ0FBQyxFQUFFaUIsTUFBTSxDQUFFO1FBQzNDMlAsRUFBRSxFQUFFO1VBQ0Ysb0JBQW9CLEVBQUU7WUFDcEI5RCxRQUFRLEVBQUU7VUFDWjtRQUNGLENBQUU7UUFDRmhFLFFBQVEsRUFBRSxDQUFDNlk7TUFBYSxDQUN6QjtJQUFDLENBQ0UsQ0FDUCxlQUNEaGEsd0RBQUEsQ0FBQytWLCtDQUFJO01BQ0hHLElBQUk7TUFDSjVELFNBQVM7TUFDVCxlQUFZO01BQ1o7TUFBQTtNQUNBNkQsRUFBRSxFQUFFa0YsYUFBYSxHQUFHLEVBQUUsR0FBRyxFQUFHO01BQUF4YSxRQUFBLGdCQUU1QmYsdURBQUEsQ0FBQ2lXLCtDQUFJO1FBQ0hJLEVBQUUsRUFBRSxDQUFFO1FBQ05qSCxFQUFFLEVBQUUsQ0FBRTtRQUNOMFEsRUFBRSxFQUFFLENBQUU7UUFDTjFKLElBQUk7UUFDSm5ULFNBQVMsRUFBRW5CLGtFQUF3QjtRQUNuQ3FVLE9BQU8sRUFBQyxlQUFlO1FBQUFwVixRQUFBLGVBRXZCZix1REFBQSxDQUFDOFAsNERBQUs7VUFDSjNHLEVBQUUsRUFBRTtZQUNGNkssY0FBYyxFQUFFO1VBQ2xCLENBQUU7VUFDRnRlLFNBQVMsRUFBQyxLQUFLO1VBQUFxTCxRQUFBLGVBRWZmLHVEQUFBO1lBQUFlLFFBQUEsR0FBQWdlLG1CQUFBLEdBQUt2bEIsTUFBTSxDQUFDd2YsV0FBVyxjQUFBK0YsbUJBQUEsdUJBQWxCQSxtQkFBQSxDQUFvQjVtQjtVQUFJLENBQUs7UUFBQyxDQUM5QjtNQUFDLENBQ0osQ0FBQyxlQUNQNkgsdURBQUEsQ0FBQ2lXLCtDQUFJO1FBQUNoVCxTQUFTLEVBQUVuQixxRUFBMkI7UUFBQ3VVLEVBQUUsRUFBRSxDQUFFO1FBQUNqSCxFQUFFLEVBQUUsQ0FBRTtRQUFDNlEsRUFBRSxFQUFFLENBQUU7UUFBQzdKLElBQUk7UUFBQXJWLFFBQUEsR0FBQWllLGFBQUEsR0FFbkV4bEIsTUFBTSxDQUFDMG1CLEtBQUssY0FBQWxCLGFBQUEsdUJBQVpBLGFBQUEsQ0FBY21CLFFBQVEsQ0FBQy9sQixHQUFHLENBQUV3VixFQUFFLGlCQUM3QjVQLHVEQUFBO1VBQ0VpRCxTQUFTLEVBQUVuQiw4REFBb0I7VUFDL0J1ZSxHQUFHLEVBQUV6USxFQUFFLENBQUMwUSxLQUFNO1VBQ2RDLEdBQUcsRUFBRTNRLEVBQUUsQ0FBQ3pYO1FBQUssR0FDUnlYLEVBQUUsQ0FBQ3pYLElBQ1QsQ0FDRjtNQUFDLENBQ0UsQ0FBQyxlQUNQK0gsd0RBQUEsQ0FBQytWLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxFQUFHO1FBQUNsTixFQUFFLEVBQUU7VUFBRXlSLEVBQUUsRUFBRSxDQUFDO1VBQUV2TCxFQUFFLEVBQUU7UUFBRSxDQUFFO1FBQUMrRyxJQUFJO1FBQUFyVixRQUFBLGdCQUN0Q2YsdURBQUEsQ0FBQ2djLHdEQUFjO1VBQ2J4aUIsTUFBTSxFQUFFQSxNQUFPO1VBQ2ZraUIsd0JBQXdCLEVBQUUsQ0FBQyxDQUFDQTtRQUF5QixDQUN0RCxDQUFDLGVBQ0Z4Yix3REFBQTtVQUFNK0MsU0FBUyxFQUFFbkIsMERBQWdCO1VBQUFmLFFBQUEsR0FDOUJ6SyxDQUFDLENBQUMseUJBQXlCLENBQUMsRUFBQyxHQUFDLEVBQUMsR0FBRyxlQUNuQzBKLHVEQUFBLENBQUNnQyxrREFBUTtZQUNQQyxJQUFJLEVBQUV6SSxNQUFNLENBQUNnSyxNQUFPO1lBQ3BCdEIsV0FBVyxFQUFFNUwsQ0FBQyxDQUFDLGtDQUFrQztVQUFFLENBQ3BELENBQUM7UUFBQSxDQUNFLENBQUM7TUFBQSxDQUNILENBQUMsZUFDUDRKLHdEQUFBLENBQUNYLDhDQUFHO1FBQUM0SixFQUFFLEVBQUU7VUFBRTBLLE9BQU8sRUFBRSxNQUFNO1VBQUU0TSxRQUFRLEVBQUUsTUFBTTtVQUFFbmUsS0FBSyxFQUFFO1FBQU8sQ0FBRTtRQUFBdkIsUUFBQSxnQkFDNURmLHVEQUFBLENBQUNULDhDQUFHO1VBQUM0SixFQUFFLEVBQUU7WUFBRXVYLFFBQVEsRUFBRTtVQUFRLENBQUU7VUFBQTNmLFFBQUEsZUFDN0JmLHVEQUFBLENBQUMrZCxxREFBWTtZQUFDdmtCLE1BQU0sRUFBRUE7VUFBTyxDQUFFO1FBQUMsQ0FDN0IsQ0FBQyxlQUNOd0csdURBQUEsQ0FBQ1QsOENBQUc7VUFBQzBELFNBQVMsRUFBRW5CLHFFQUEyQjtVQUFBZixRQUFBLEVBQ3hDdkgsTUFBTSxDQUFDNmlCLFNBQVMsSUFBSSxDQUFDZCxhQUFhLGlCQUNqQ3ZiLHVEQUFBLENBQUN3ZSxVQUFVO1lBQ1RwQyxZQUFZLEVBQUVBLFlBQWE7WUFDM0JxQyxZQUFZLEVBQUVBLFlBQWE7WUFDM0JDLGNBQWMsRUFBRUEsY0FBYyxJQUFJLENBQUNoRCx3QkFBeUI7WUFDNURpRCxXQUFXLEVBQUVZO1VBQWdCLENBQzlCO1FBQ0YsQ0FDRSxDQUFDO01BQUEsQ0FDSCxDQUFDLGVBQ052Zix1REFBQSxDQUFDaWUsc0RBQVk7UUFDWGpxQixNQUFNLEVBQUVBLE1BQU87UUFDZmlILFFBQVEsRUFBRXpCLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFcEIsRUFBRztRQUNyQkssT0FBTyxFQUFFLENBQUFlLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFRyxRQUFRLE1BQUlILE1BQU0sYUFBTkEsTUFBTSxnQkFBQWdqQixhQUFBLEdBQU5oakIsTUFBTSxDQUFFMUIsS0FBSyxjQUFBMGtCLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZXBrQixFQUFFLENBQUM7UUFDL0N3b0IsT0FBTyxFQUFFcG5CLE1BQU0sYUFBTkEsTUFBTSxnQkFBQXlpQixhQUFBLEdBQU56aUIsTUFBTSxDQUFFNEQsS0FBSyxjQUFBNmUsYUFBQSx1QkFBYkEsYUFBQSxDQUFlN2pCLEVBQUc7UUFDM0IrTCxJQUFJLEVBQUUrYSxTQUFTLEtBQUtkLFVBQVUsQ0FBQ0MsTUFBTztRQUN0Q2hlLE9BQU8sRUFBRWlmO01BQWlCLENBQzNCLENBQUMsZUFDRnRmLHVEQUFBLENBQUNtZSxzREFBWTtRQUNYbGpCLFFBQVEsRUFBRXpCLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFcEIsRUFBRztRQUNyQkssT0FBTyxFQUFFLENBQUFlLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFRyxRQUFRLE1BQUlILE1BQU0sYUFBTkEsTUFBTSxnQkFBQWlqQixjQUFBLEdBQU5qakIsTUFBTSxDQUFFMUIsS0FBSyxjQUFBMmtCLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZXJrQixFQUFFLENBQUM7UUFDL0N3b0IsT0FBTyxFQUFFcG5CLE1BQU0sYUFBTkEsTUFBTSxnQkFBQTBpQixjQUFBLEdBQU4xaUIsTUFBTSxDQUFFNEQsS0FBSyxjQUFBOGUsY0FBQSx1QkFBYkEsY0FBQSxDQUFlOWpCLEVBQUc7UUFDM0IrTCxJQUFJLEVBQUUsQ0FBQ2lhLFVBQVUsQ0FBQ0UsUUFBUSxFQUFFRixVQUFVLENBQUNHLE1BQU0sQ0FBQyxDQUFDelYsUUFBUSxDQUFDb1csU0FBUyxDQUFFO1FBQ25FN2UsT0FBTyxFQUFFaWY7TUFBaUIsQ0FDM0IsQ0FBQztJQUFBLENBQ0UsQ0FBQztFQUFBLEdBckdGOWxCLE1BQU0sQ0FBQ3BCLEVBc0dSLENBQUM7QUFFWCxDQUFDO0FBRUQyaUIsZ0JBQWdCLENBQUN4WixTQUFTLEdBQUc7RUFDM0IvSCxNQUFNLEVBQUU2Rix1REFBZSxDQUFDO0lBQ3RCakgsRUFBRSxFQUFFaUgsMERBQWdCO0lBQ3BCMUYsUUFBUSxFQUFFMEYsMERBQWdCO0lBQzFCakMsS0FBSyxFQUFFaUMsdURBQWUsQ0FBQztNQUNyQmpILEVBQUUsRUFBRWlILDBEQUFnQjtNQUNwQjFNLEtBQUssRUFBRTBNLDBEQUFnQmlFO0lBQ3pCLENBQUMsQ0FBQztJQUNGRSxNQUFNLEVBQUVuRSwwREFBZ0I7SUFDeEJ3aEIscUJBQXFCLEVBQUV4aEIsMERBQWdCO0lBQ3ZDMlosV0FBVyxFQUFFM1osdURBQWUsQ0FBQztNQUMzQmxILElBQUksRUFBRWtILDBEQUFnQmlFO0lBQ3hCLENBQUMsQ0FBQztJQUNGK1ksU0FBUyxFQUFFaGQsd0RBQWNrRTtFQUMzQixDQUFDLENBQUM7RUFDRnZQLE1BQU0sRUFBRXFMLDBEQUFnQjtFQUN4QmtjLGFBQWEsRUFBRWxjLHdEQUFjO0VBQzdCbWMsa0JBQWtCLEVBQUVuYyx3REFBYztFQUNsQ29jLGNBQWMsRUFBRXBjLHdEQUFjO0VBQzlCcWMsd0JBQXdCLEVBQUVyYyx3REFBY2tFO0FBQzFDLENBQUM7QUFFRCxpRUFBZXdYLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlQUztBQUNMO0FBQ1k7QUFDTDtBQUNKO0FBQ0Y7QUFDUTtBQUNEO0FBQ1M7QUFDTjtBQUNDO0FBQ2E7QUFBQTtBQUU1RCxNQUFNbUcsUUFBUSxHQUFJQyxLQUFLLElBQUs7RUFDMUIsTUFBTTtJQUFFcGdCLFFBQVE7SUFBRWxLLEtBQUs7SUFBRXVxQjtFQUFNLENBQUMsR0FBR0QsS0FBSztFQUN4QyxvQkFDRW5oQix1REFBQTtJQUNFb2EsSUFBSSxFQUFDLFVBQVU7SUFDZmlILE1BQU0sRUFBRXhxQixLQUFLLEtBQUt1cUIsS0FBTTtJQUN4QmhwQixFQUFFLGNBQUFsRCxNQUFBLENBQWNrc0IsS0FBSyxDQUFHO0lBQ3hCLDBCQUFBbHNCLE1BQUEsQ0FBd0Jrc0IsS0FBSyxDQUFHO0lBQUFyZ0IsUUFBQSxFQUUvQmxLLEtBQUssS0FBS3VxQixLQUFLLElBQUlyZ0I7RUFBUSxDQUN6QixDQUFDO0FBRVYsQ0FBQztBQUVELE1BQU11Z0IsdUJBQXVCLEdBQUczcUIsSUFBQSxJQU0xQjtFQUFBLElBTjJCO0lBQy9CNHFCLFFBQVE7SUFDUnZ0QixNQUFNO0lBQ044RCxLQUFLO0lBQ0wwcEIsZUFBZTtJQUNmckU7RUFDRixDQUFDLEdBQUF4bUIsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDekksS0FBSyxFQUFFNHFCLFFBQVEsQ0FBQyxHQUFHL2UsK0NBQVEsQ0FBQyxDQUFDLENBQUM7RUFDckMsTUFBTTRLLFlBQVksR0FBR0EsQ0FBQ29VLENBQUMsRUFBRW5aLFFBQVEsS0FBSztJQUNwQ2taLFFBQVEsQ0FBQ2xaLFFBQVEsQ0FBQztFQUNwQixDQUFDO0VBQ0QsTUFBTSxDQUFDNlUsZUFBZSxFQUFFdUUsa0JBQWtCLENBQUMsR0FBR2pmLCtDQUFRLENBQUMsRUFBRSxDQUFDO0VBQzFELE1BQU0sQ0FBQ2lYLGFBQWEsRUFBRWlJLGdCQUFnQixDQUFDLEdBQUdsZiwrQ0FBUSxDQUFDLEtBQUssQ0FBQztFQUN6RCxNQUFNLENBQUNtZixpQkFBaUIsRUFBRUMsb0JBQW9CLENBQUMsR0FBR3BmLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBRWpFLE1BQU1rWCxhQUFhLEdBQUdBLENBQUEsS0FBTTtJQUMxQmdJLGdCQUFnQixDQUFDLElBQUksQ0FBQztFQUN4QixDQUFDO0VBQ0QsTUFBTUcscUJBQXFCLEdBQUl2b0IsTUFBTSxJQUFLO0lBQ3hDLE1BQU13b0IsY0FBYyxHQUFHNUUsZUFBZSxDQUFDem9CLE1BQU0sQ0FBRTJCLENBQUMsSUFBS0EsQ0FBQyxDQUFDOEIsRUFBRSxLQUFLb0IsTUFBTSxDQUFDcEIsRUFBRSxDQUFDO0lBQ3hFdXBCLGtCQUFrQixDQUFDSyxjQUFjLENBQUM7RUFDcEMsQ0FBQztFQUNELE1BQU12RyxjQUFjLEdBQUdBLENBQUNsakIsQ0FBQyxFQUFFaUIsTUFBTSxLQUFLO0lBQ3BDLE1BQU07TUFBRTRPO0lBQVEsQ0FBQyxHQUFHN1AsQ0FBQyxDQUFDeVEsTUFBTTtJQUM1QixJQUFJWixPQUFPLEVBQUU7TUFBQSxJQUFBNlUsb0JBQUE7TUFDWCxNQUFNZ0YsY0FBYyxHQUFHbnFCLEtBQUssYUFBTEEsS0FBSyxnQkFBQW1sQixvQkFBQSxHQUFMbmxCLEtBQUssQ0FBRWdqQixhQUFhLGNBQUFtQyxvQkFBQSx1QkFBcEJBLG9CQUFBLENBQXNCVyxJQUFJLENBQzlDdG5CLENBQUMsSUFBS0EsQ0FBQyxDQUFDOEIsRUFBRSxLQUFLb0IsTUFBTSxDQUFDcEIsRUFDekIsQ0FBQztNQUNEdXBCLGtCQUFrQixDQUFDLENBQUMsR0FBR3ZFLGVBQWUsRUFBRTZFLGNBQWMsQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTTtNQUNMRixxQkFBcUIsQ0FBQ3ZvQixNQUFNLENBQUM7SUFDL0I7RUFDRixDQUFDO0VBRUQsTUFBTTBvQixrQkFBa0IsR0FBR0EsQ0FBQSxLQUFNO0lBQy9CTixnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7SUFDdkJELGtCQUFrQixDQUFDLEVBQUUsQ0FBQztFQUN4QixDQUFDO0VBRUQsTUFBTVEsc0JBQXNCLEdBQUdBLENBQUEsS0FBTTtJQUNuQ1AsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3ZCRCxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7RUFDeEIsQ0FBQztFQUVELE1BQU1TLFdBQVcsR0FBR0EsQ0FBQSxLQUNsQlosZUFBZSxpQkFDYnhoQix1REFBQSxDQUFDNlcsMERBQVU7SUFDVG5kLE9BQU8sRUFBRXBELENBQUMsQ0FBQyx1Q0FBdUMsQ0FBRTtJQUNwRDBQLEtBQUssRUFBQyxTQUFTO0lBQ2Y4USxVQUFVLEVBQUM7RUFBb0IsQ0FDaEMsQ0FDRjtFQUVILE9BQU95SyxRQUFRLGdCQUNicmhCLHdEQUFBLENBQUNYLDhDQUFHO0lBQ0YwRCxTQUFTLEVBQUVuQixxRUFBMkI7SUFDdEMsZUFBWSw4QkFBOEI7SUFBQWYsUUFBQSxnQkFFMUNmLHVEQUFBLENBQUNULDhDQUFHO01BQUM0SixFQUFFLEVBQUU7UUFBRWtaLFdBQVcsRUFBRSxTQUFTO1FBQUVoVCxFQUFFLEVBQUU7TUFBRSxDQUFFO01BQUF0TyxRQUFBLGVBQ3pDYix3REFBQSxDQUFDNGdCLDJEQUFJO1FBQ0hqcUIsS0FBSyxFQUFFQSxLQUFNO1FBQ2JzUSxRQUFRLEVBQUVtRyxZQUFhO1FBQ3ZCLGNBQVcsbUJBQW1CO1FBQUF2TSxRQUFBLGdCQUU5QmYsdURBQUEsQ0FBQytnQiwwREFBRztVQUFDOVksS0FBSyxFQUFFM1IsQ0FBQyxDQUFDLGdCQUFnQixDQUFFO1VBQUMyTSxTQUFTLEVBQUVuQiw0REFBaUJ3Z0I7UUFBQyxDQUFFLENBQUMsZUFDakV0aUIsdURBQUEsQ0FBQytnQiwwREFBRztVQUFDOVksS0FBSyxFQUFFM1IsQ0FBQyxDQUFDLGdCQUFnQixDQUFFO1VBQUMyTSxTQUFTLEVBQUVuQiw0REFBaUJ3Z0I7UUFBQyxDQUFFLENBQUM7TUFBQSxDQUM3RDtJQUFDLENBQ0osQ0FBQyxFQUNMRixXQUFXLENBQUMsQ0FBQyxlQUNkcGlCLHVEQUFBLENBQUNraEIsUUFBUTtNQUFDcnFCLEtBQUssRUFBRUEsS0FBTTtNQUFDdXFCLEtBQUssRUFBRSxDQUFFO01BQUFyZ0IsUUFBQSxlQUMvQmYsdURBQUEsQ0FBQ2dkLHNEQUFhO1FBQ1pocEIsTUFBTSxFQUFFQSxNQUFPO1FBQ2Y4RCxLQUFLLEVBQUVBLEtBQU07UUFDYnFsQixlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDQyxlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDM0IsY0FBYyxFQUFFQSxjQUFlO1FBQy9COUIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCb0kscUJBQXFCLEVBQUVBO01BQXNCLENBQzlDO0lBQUMsQ0FDTSxDQUFDLGVBQ1gvaEIsdURBQUEsQ0FBQ2toQixRQUFRO01BQUNycUIsS0FBSyxFQUFFQSxLQUFNO01BQUN1cUIsS0FBSyxFQUFFLENBQUU7TUFBQXJnQixRQUFBLGVBQy9CZix1REFBQSxDQUFDMGEscURBQVk7UUFDWDVpQixLQUFLLEVBQUVBLEtBQU07UUFDYjlELE1BQU0sRUFBRUEsTUFBTztRQUNmNGxCLGFBQWEsRUFBRUEsYUFBYztRQUM3QkQsYUFBYSxFQUFFQTtNQUFjLENBQzlCO0lBQUMsQ0FDTSxDQUFDO0VBQUEsQ0FDUixDQUFDLGdCQUVOelosd0RBQUEsQ0FBQW1ZLHdEQUFBO0lBQUF0WCxRQUFBLGdCQUNFZix1REFBQSxDQUFDaVcsK0NBQUk7TUFBQ0csSUFBSTtNQUFDbU0sRUFBRSxFQUFFLEVBQUc7TUFBQXhoQixRQUFBLEVBQ2ZxaEIsV0FBVyxDQUFDO0lBQUMsQ0FDVixDQUFDLGVBQ1BwaUIsdURBQUEsQ0FBQ2lXLCtDQUFJO01BQ0gzQixPQUFPLEVBQUUsQ0FBRTtNQUNYOEIsSUFBSTtNQUNKbU0sRUFBRSxFQUFFLENBQUU7TUFDTnpxQixLQUFLLEVBQUU7UUFBRXlxQixFQUFFLEVBQUU7TUFBRSxDQUFFO01BQ2pCdGYsU0FBUyxFQUFFbkIscUVBQTJCO01BQ3RDLGVBQVksK0JBQStCO01BQUFmLFFBQUEsZUFFM0NmLHVEQUFBLENBQUNnZCxzREFBYTtRQUNaaHBCLE1BQU0sRUFBRUEsTUFBTztRQUNmOEQsS0FBSyxFQUFFQSxLQUFNO1FBQ2JxbEIsZUFBZSxFQUFFQSxlQUFnQjtRQUNqQ0MsZUFBZSxFQUFFQSxlQUFnQjtRQUNqQzNCLGNBQWMsRUFBRUEsY0FBZTtRQUMvQjlCLGFBQWEsRUFBRUEsYUFBYztRQUM3Qm9JLHFCQUFxQixFQUFFQTtNQUFzQixDQUM5QztJQUFDLENBQ0UsQ0FBQyxlQUNQL2hCLHVEQUFBLENBQUNpVywrQ0FBSTtNQUFDM0IsT0FBTyxFQUFFLENBQUU7TUFBQzhCLElBQUk7TUFBQ21NLEVBQUUsRUFBRSxDQUFFO01BQUN6cUIsS0FBSyxFQUFFO1FBQUV5cUIsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBeGhCLFFBQUEsZUFDN0NmLHVEQUFBLENBQUMwYSxxREFBWTtRQUNYMW1CLE1BQU0sRUFBRUEsTUFBTztRQUNmOEQsS0FBSyxFQUFFQSxLQUFNO1FBQ2I4aEIsYUFBYSxFQUFFQSxhQUFjO1FBQzdCRCxhQUFhLEVBQUVBLGFBQWM7UUFDN0JFLG1CQUFtQixFQUFFQSxDQUFBLEtBQU1pSSxvQkFBb0IsQ0FBQyxJQUFJO01BQUUsQ0FDdkQ7SUFBQyxDQUNFLENBQUMsZUFDUDloQix1REFBQSxDQUFDZ2hCLHVEQUFtQjtNQUNsQi9tQixPQUFPLEVBQUUsQ0FBQW5DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFZ2pCLGFBQWEsS0FBSSxFQUFHO01BQ3BDM1csSUFBSSxFQUFFd1YsYUFBYztNQUNwQjZJLG9CQUFvQixFQUFFQSxDQUFBLEtBQU1MLHNCQUFzQixDQUFDLENBQUU7TUFDckRNLGFBQWEsRUFBRUEsQ0FBQSxLQUFNUCxrQkFBa0IsQ0FBQyxDQUFFO01BQzFDOUUsZUFBZSxFQUFFQSxlQUFnQjtNQUNqQzNCLGNBQWMsRUFBRUEsY0FBZTtNQUMvQnNHLHFCQUFxQixFQUFFQTtJQUFzQixDQUM5QyxDQUFDLGVBQ0YvaEIsdURBQUEsQ0FBQ2loQixzRUFBYTtNQUNaaG5CLE9BQU8sRUFBRW5DLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFZ2pCLGFBQWM7TUFDOUIzQixRQUFRLEVBQUVyaEIsS0FBSyxDQUFDcWhCLFFBQVM7TUFDekJoVixJQUFJLEVBQUUwZCxpQkFBa0I7TUFDeEJZLGFBQWEsRUFBRUEsQ0FBQSxLQUFNWCxvQkFBb0IsQ0FBQyxLQUFLO0lBQUUsQ0FDbEQsQ0FBQztFQUFBLENBQ0YsQ0FDSDtBQUNILENBQUM7QUFFRFIsdUJBQXVCLENBQUMvZixTQUFTLEdBQUc7RUFDbEN2TixNQUFNLEVBQUVxTCwwREFBZ0I7RUFDeEJ2SCxLQUFLLEVBQUV1SCx1REFBZSxDQUFDO0lBQ3JCeWIsYUFBYSxFQUFFemIseURBQWlCLENBQUM5SSxNQUFNO0VBQ3pDLENBQUMsQ0FBQztFQUNGZ3JCLFFBQVEsRUFBRWxpQix3REFBYztFQUN4Qm1pQixlQUFlLEVBQUVuaUIsd0RBQWM7RUFDL0I4ZCxlQUFlLEVBQUU5ZCx3REFBY3FDO0FBQ2pDLENBQUM7QUFFRCxpRUFBZTRmLHVCQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbExFO0FBQ0w7QUFDa0M7QUFDdEI7QUFDRztBQUNGO0FBQ1E7QUFDTjtBQUNIO0FBQ087QUFDVTtBQUM3QjtBQUNZO0FBQUE7QUFFL0MsTUFBTWpLLFVBQVUsR0FBRzFnQixJQUFBLElBQXVCO0VBQUEsSUFBQXNtQixvQkFBQTtFQUFBLElBQXRCO0lBQUVqcEIsTUFBTTtJQUFFOEQ7RUFBTSxDQUFDLEdBQUFuQixJQUFBO0VBQ25DLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTNMLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUFFK0UsZUFBZTtJQUFFbHVCLE1BQU07SUFBRUU7RUFBSyxDQUFDLEdBQUcrWSx3REFBVyxDQUNsRFUsS0FBSyxJQUFLQSxLQUFLLENBQUM1VyxXQUFXLElBQUksQ0FBQyxDQUFDLEVBQ2xDbVcscURBQ0YsQ0FBQztFQUNELE1BQU0vSSxLQUFLLEdBQUc0ZCw4REFBUSxDQUFDLENBQUM7RUFDeEIsTUFBTW5CLFFBQVEsR0FBR29CLGtFQUFhLENBQUM3ZCxLQUFLLENBQUNnZSxXQUFXLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUM1RCxNQUFNLENBQUNDLGdCQUFnQixFQUFFQyxpQkFBaUIsQ0FBQyxHQUFHdmdCLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQzdELE1BQU04ZSxlQUFlLElBQUF2RSxvQkFBQSxHQUFHbmxCLEtBQUssQ0FBQ2dqQixhQUFhLGNBQUFtQyxvQkFBQSx1QkFBbkJBLG9CQUFBLENBQXFCVyxJQUFJLENBQzlDcGtCLE1BQU07SUFBQSxJQUFBeWlCLGFBQUE7SUFBQSxPQUFLLEVBQUFBLGFBQUEsR0FBQXppQixNQUFNLENBQUM0RCxLQUFLLGNBQUE2ZSxhQUFBLHVCQUFaQSxhQUFBLENBQWM3bEIsTUFBTSxNQUFLLFlBQVk7RUFBQSxDQUNuRCxDQUFDO0VBRUQsTUFBTSttQixlQUFlLEdBQUdBLENBQUEsS0FDdEJ4cEIsUUFBUSxDQUNOeUYsMkRBQWlCLENBQUM7SUFDaEJYLE9BQU8sRUFBRVgsS0FBSyxDQUFDTSxFQUFFO0lBQ2pCZixJQUFJLEVBQUVTLEtBQUssQ0FBQ29yQixvQkFBb0IsR0FBRzVMLDJEQUFhO0lBQ2hEaGdCLE9BQU8sRUFBRXVyQixlQUFlO0lBQ3hCbHVCLE1BQU07SUFDTkU7RUFDRixDQUFDLENBQ0gsQ0FBQztFQUVILG9CQUNFcUwsd0RBQUEsQ0FBQW1ZLHdEQUFBO0lBQUF0WCxRQUFBLGdCQUNFYix3REFBQSxDQUFDWCw4Q0FBRztNQUNGNEosRUFBRSxFQUFFO1FBQ0ZtTCxPQUFPLEVBQUU7VUFDUCtCLEVBQUUsRUFBRSxDQUFDO1VBQ0xrTSxFQUFFLEVBQUUsQ0FBQztVQUNMWSxFQUFFLEVBQUU7UUFDTjtNQUNGLENBQUU7TUFDRmxnQixTQUFTLEVBQUVuQiwwRUFBZ0M7TUFBQWYsUUFBQSxnQkFFM0NiLHdEQUFBO1FBQ0UrQyxTQUFTLEVBQUVuQixpRUFBdUI7UUFDbEMsZUFBWSw2QkFBNkI7UUFBQWYsUUFBQSxHQUV4Q3pLLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFDLElBQUUsRUFBQ3NzQix3REFBZ0IsQ0FBQzlxQixLQUFLLENBQUNzaEIsT0FBTyxDQUFDLEVBQUMsSUFBRSxFQUFDLEdBQUcsRUFDL0Q5aUIsQ0FBQyxDQUFDLHdCQUF3QixDQUFDLEVBQUMsR0FBQyxFQUFDLEdBQUcsZUFDbEMwSix1REFBQSxDQUFDZ0Msa0RBQVE7VUFDUEMsSUFBSSxFQUFFbkssS0FBSyxDQUFDMEwsTUFBTztVQUNuQnRCLFdBQVcsRUFBRTVMLENBQUMsQ0FBQyxpQ0FBaUM7UUFBRSxDQUNuRCxDQUFDO01BQUEsQ0FDRSxDQUFDLEVBQ05pckIsUUFBUSxpQkFDUHZoQix1REFBQSxDQUFDaVEsaURBQU07UUFDTDlHLEVBQUUsRUFBRTtVQUFFbUwsT0FBTyxFQUFFO1FBQVcsQ0FBRTtRQUM1QjNCLE9BQU8sRUFBQyxXQUFXO1FBQ25CM00sS0FBSyxFQUFDLFNBQVM7UUFDZjBRLElBQUksRUFBQyxPQUFPO1FBQ1poTyxTQUFTO1FBQ1RyRixPQUFPLEVBQUVBLENBQUEsS0FBTTRmLGlCQUFpQixDQUFDLENBQUNELGdCQUFnQixDQUFFO1FBQUFqaUIsUUFBQSxFQUVuRGlpQixnQkFBZ0IsR0FDYjFzQixDQUFDLENBQUMsNEJBQTRCLENBQUMsR0FDL0JBLENBQUMsQ0FBQyw0QkFBNEI7TUFBQyxDQUM3QixDQUNUO0lBQUEsQ0FDRSxDQUFDLGVBQ04wSix1REFBQSxDQUFDaVcsK0NBQUk7TUFFSHpELFNBQVM7TUFDVDhRLFVBQVUsRUFBRSxDQUFFO01BQ2RDLGFBQWEsRUFBRTtRQUFFbE4sRUFBRSxFQUFFLENBQUM7UUFBRW1OLEVBQUUsRUFBRSxDQUFDO1FBQUVqQixFQUFFLEVBQUU7TUFBRSxDQUFFO01BQ3ZDdGYsU0FBUyxLQUFBL04sTUFBQSxDQUFLNE0sc0VBQTJCLE9BQUE1TSxNQUFBLENBQ3ZDcXNCLFFBQVEsSUFBSSxDQUFDeUIsZ0JBQWdCLEdBQUdsaEIsOERBQW1CLEdBQUcsRUFBRSxDQUN2RDtNQUNIcUgsRUFBRSxFQUFFO1FBQ0Z1YSxhQUFhLEVBQUU7VUFDYm5CLEVBQUUsRUFBRSxLQUFLO1VBQ1RZLEVBQUUsRUFBRTtRQUNOLENBQUM7UUFDRDdPLE9BQU8sRUFBRTtVQUNQK0IsRUFBRSxFQUFFLENBQUM7VUFDTGtNLEVBQUUsRUFBRSxDQUFDO1VBQ0xZLEVBQUUsRUFBRTtRQUNOO01BQ0YsQ0FBRTtNQUFBcGlCLFFBQUEsZUFFRmYsdURBQUEsQ0FBQ3NoQixpRUFBdUI7UUFDdEJDLFFBQVEsRUFBRUEsUUFBUztRQUNuQnZ0QixNQUFNLEVBQUVBLE1BQU87UUFDZjhELEtBQUssRUFBRUEsS0FBTTtRQUNiMHBCLGVBQWUsRUFBRSxDQUFDLENBQUNBLGVBQWdCO1FBQ25DckUsZUFBZSxFQUFFQTtNQUFnQixDQUNsQztJQUFDLEdBekJHcmxCLEtBQUssQ0FBQ00sRUEwQlAsQ0FBQztFQUFBLENBQ1AsQ0FBQztBQUVQLENBQUM7QUFFRGlmLFVBQVUsQ0FBQzlWLFNBQVMsR0FBRztFQUNyQnZOLE1BQU0sRUFBRXFMLDBEQUFnQjtFQUN4QnZILEtBQUssRUFBRXVILDBEQUFnQm1DO0FBQ3pCLENBQUM7QUFFRCxpRUFBZTZWLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2xIYztBQUNKO0FBQ1k7QUFDWDtBQUNLO0FBQ21CO0FBQ1c7QUFBQTtBQUV2RSxNQUFNNEosYUFBYSxHQUFHdHFCLElBQUEsSUFBZ0Q7RUFBQSxJQUEvQztJQUFFc0QsT0FBTztJQUFFa2YsUUFBUTtJQUFFaFYsSUFBSTtJQUFFc2U7RUFBYyxDQUFDLEdBQUE5ckIsSUFBQTtFQUMvRCxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU15a0IsZ0JBQWdCLEdBQUdKLDhDQUFPLENBQzlCLE1BQU1HLGdGQUE0QixDQUFDN3BCLE9BQU8sQ0FBQyxFQUMzQyxDQUFDQSxPQUFPLENBQ1YsQ0FBQztFQUNELE1BQU0rcEIsV0FBVyxHQUFHQSxDQUFBLEtBQU07SUFDeEJ2QixhQUFhLENBQUMsQ0FBQztFQUNqQixDQUFDO0VBQ0Qsb0JBQ0V6aUIsc0RBQUEsQ0FBQzRqQixvREFBVztJQUNWeHJCLEVBQUUsRUFBQyxnQkFBZ0I7SUFDbkIrTCxJQUFJLEVBQUVBLElBQUs7SUFDWDlELE9BQU8sRUFBRTJqQixXQUFZO0lBQ3JCL3NCLEtBQUssRUFBRVgsQ0FBQyxDQUFDLDhCQUE4QixDQUFFO0lBQUF5SyxRQUFBLGVBRXpDZixzREFBQSxDQUFDVCw4Q0FBRztNQUNGNEosRUFBRSxFQUFFO1FBQ0YwSyxPQUFPLEVBQUUsTUFBTTtRQUNmNlAsYUFBYSxFQUFFLFFBQVE7UUFDdkJ0YSxVQUFVLEVBQUUsUUFBUTtRQUNwQmtMLE9BQU8sRUFBRTtNQUNYLENBQUU7TUFBQXZULFFBQUEsRUFFRGdqQixnQkFBZ0IsYUFBaEJBLGdCQUFnQix1QkFBaEJBLGdCQUFnQixDQUFFM3BCLEdBQUcsQ0FBRVosTUFBTSxpQkFDNUJ3RyxzREFBQSxDQUFDNmpCLDhEQUFxQjtRQUVwQnJxQixNQUFNLEVBQUVBLE1BQU87UUFDZjJmLFFBQVEsRUFBRUEsUUFBUztRQUNuQjhLLGFBQWE7TUFBQSxpQkFBQS91QixNQUFBLENBSE1zRSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXBCLEVBQUUsQ0FJOUIsQ0FDRjtJQUFDLENBQ0M7RUFBQyxDQUNLLENBQUM7QUFFbEIsQ0FBQztBQUVENm9CLGFBQWEsQ0FBQzFmLFNBQVMsR0FBRztFQUN4QnRILE9BQU8sRUFBRW9GLHlEQUFpQixDQUFDOUksTUFBTSxDQUFDO0VBQ2xDNE4sSUFBSSxFQUFFOUUsd0RBQWM7RUFDcEJvakIsYUFBYSxFQUFFcGpCLHdEQUFjcUM7QUFDL0IsQ0FBQztBQUVELGlFQUFldWYsYUFBYTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuREY7QUFDUztBQUNZO0FBQ1c7QUFDSDtBQUNUO0FBQ0U7QUFDUjtBQUNIO0FBQ3FCO0FBQ2hCO0FBQ1A7QUFFWTtBQUNKO0FBQ2E7QUFDWDtBQUFBO0FBRTdDLE1BQU00QyxxQkFBcUIsR0FBR2x0QixJQUFBLElBQXlDO0VBQUEsSUFBQW9vQixtQkFBQSxFQUFBQyxhQUFBO0VBQUEsSUFBeEM7SUFBRXhsQixNQUFNO0lBQUUyZixRQUFRO0lBQUU4SztFQUFjLENBQUMsR0FBQXR0QixJQUFBO0VBQ2hFLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFFOUIsTUFBTWdsQixNQUFNLEdBQUcsQ0FBQztFQUNoQixNQUFNQyxPQUFPLEdBQUcsRUFBRTtFQUVsQixNQUFNQyxTQUFTLEdBQUcsQ0FBQztFQUVuQixNQUFNQyxlQUFlLEdBQUdqckIsTUFBTSxDQUFDaUIsZUFBZSxDQUFDOUYsTUFBTSxDQUNsRCt2QixNQUFNLElBQUtBLE1BQU0sQ0FBQ3R1QixNQUFNLEtBQUssVUFDaEMsQ0FBQztFQUVELE1BQU11dUIsc0JBQXNCLEdBQUcsQ0FBQyxDQUFDO0VBRWpDRixlQUFlLENBQUMvdEIsT0FBTyxDQUFFZ3VCLE1BQU0sSUFBSztJQUNsQ0EsTUFBTSxDQUFDRSxjQUFjLENBQUNsdUIsT0FBTyxDQUFFbXVCLEVBQUUsSUFBSztNQUNwQyxNQUFNQyxLQUFLLEdBQUdELEVBQUUsQ0FBQ0UsR0FBRyxDQUFDM3NCLEVBQUU7TUFDdkIsSUFBSSxDQUFDdXNCLHNCQUFzQixDQUFDRyxLQUFLLENBQUMsRUFBRTtRQUNsQ0gsc0JBQXNCLENBQUNHLEtBQUssQ0FBQyxHQUFHO1VBQzlCM3NCLElBQUksRUFBRTBzQixFQUFFLENBQUNFLEdBQUcsQ0FBQzVzQixJQUFJO1VBQ2pCNnNCLHNCQUFzQixFQUFFO1FBQzFCLENBQUM7TUFDSDtNQUNBTCxzQkFBc0IsQ0FBQ0csS0FBSyxDQUFDLENBQUNFLHNCQUFzQixJQUNsREgsRUFBRSxDQUFDSSxlQUFlO0lBQ3RCLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUVGLE1BQU1DLFdBQVcsR0FBRzdSLDREQUFNLENBQUNqYyxLQUFBO0lBQUEsSUFBQztRQUFFNkw7TUFBb0IsQ0FBQyxHQUFBN0wsS0FBQTtNQUFQK3BCLEtBQUssR0FBQTNaLHFGQUFBLENBQUFwUSxLQUFBLEVBQUFxUSxTQUFBO0lBQUE7TUFBQTtNQUMvQztNQUNBekgsdURBQUEsQ0FBQzRCLGtEQUFPLEVBQUFyRyxhQUFBLENBQUFBLGFBQUEsS0FBSzRsQixLQUFLO1FBQUVnRSxPQUFPLEVBQUU7VUFBRUMsTUFBTSxFQUFFbmlCO1FBQVU7TUFBRSxFQUFFO0lBQUM7RUFBQSxDQUN2RCxDQUFDLENBQUMsT0FBTztJQUNSLE9BQUEvTixNQUFBLENBQU9ndkIsaUVBQWMsQ0FBQzFoQixPQUFPLElBQUs7TUFDaEMyRCxlQUFlLEVBQUUsU0FBUztNQUMxQkgsS0FBSyxFQUFFLHFCQUFxQjtNQUM1QnFmLFFBQVEsRUFBRSxHQUFHO01BQ2JoZ0IsUUFBUSxFQUFFLEtBQUs7TUFDZmlnQixNQUFNLEVBQUU7SUFDVjtFQUNGLENBQUMsQ0FBQyxDQUFDO0VBRUgsb0JBQ0VwbEIsd0RBQUEsQ0FBQytWLCtDQUFJO0lBQ0h6RCxTQUFTO0lBQ1R2UCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwwRUFBK0IsT0FBQTVNLE1BQUEsQ0FDM0MrdUIsYUFBYSxHQUFHbmlCLDhEQUFtQixHQUFHLEVBQUUsTUFDdEM7SUFDSixlQUFZLG1DQUFtQztJQUFBZixRQUFBLGdCQUUvQ2YsdURBQUEsQ0FBQ2lXLCtDQUFJO01BQ0hJLEVBQUUsRUFBRTROLGFBQWEsR0FBR0ssTUFBTSxHQUFHQyxPQUFRO01BQ3JDbk8sSUFBSTtNQUNKRCxPQUFPLEVBQUMsZUFBZTtNQUN2QmpFLEVBQUUsRUFBRSxDQUFFO01BQ04wSSxFQUFFLEVBQUUsQ0FBRTtNQUFBN1osUUFBQSxlQUVOYix3REFBQSxDQUFDNFAsNERBQUs7UUFDSjNHLEVBQUUsRUFBRTtVQUNGNkssY0FBYyxFQUFFLGVBQWU7VUFDL0I1SyxVQUFVLEVBQUU7UUFDZCxDQUFFO1FBQ0YxVCxTQUFTLEVBQUMsS0FBSztRQUFBcUwsUUFBQSxnQkFFZmYsdURBQUE7VUFBQWUsUUFBQSxHQUFBZ2UsbUJBQUEsR0FBS3ZsQixNQUFNLENBQUN3ZixXQUFXLGNBQUErRixtQkFBQSx1QkFBbEJBLG1CQUFBLENBQW9CNW1CO1FBQUksQ0FBSyxDQUFDLGVBQ25DNkgsdURBQUEsQ0FBQ2lXLCtDQUFJO1VBQUNoVCxTQUFTLEVBQUVuQixxRUFBMkI7VUFBQ3VVLEVBQUUsRUFBRSxDQUFFO1VBQUNELElBQUk7VUFBQXJWLFFBQUEsR0FBQWllLGFBQUEsR0FDckR4bEIsTUFBTSxDQUFDMG1CLEtBQUssY0FBQWxCLGFBQUEsdUJBQVpBLGFBQUEsQ0FBY21CLFFBQVEsQ0FBQy9sQixHQUFHLENBQUV3VixFQUFFLGlCQUM3QjVQLHVEQUFBO1lBQ0VpRCxTQUFTLEVBQUVuQiw4REFBb0I7WUFDL0J1ZSxHQUFHLEVBQUV6USxFQUFFLENBQUMwUSxLQUFNO1lBQ2RDLEdBQUcsRUFBRTNRLEVBQUUsQ0FBQ3pYO1VBQUssR0FDUnlYLEVBQUUsQ0FBQ3pYLElBQ1QsQ0FDRjtRQUFDLENBQ0UsQ0FBQztNQUFBLENBQ0Y7SUFBQyxDQUNKLENBQUMsRUFDTjhyQixhQUFhLGlCQUNaamtCLHVEQUFBLENBQUNpVywrQ0FBSTtNQUFDSSxFQUFFLEVBQUUsQ0FBRTtNQUFDL0IsT0FBTyxFQUFFLENBQUU7TUFBQzhCLElBQUk7TUFBQXJWLFFBQUEsZUFDM0JmLHVEQUFBLENBQUNxa0Isc0RBQVk7UUFBQzdxQixNQUFNLEVBQUVBO01BQU8sQ0FBRTtJQUFDLENBQzVCLENBQ1AsZUFDRDBHLHdEQUFBLENBQUMrViwrQ0FBSTtNQUFDSSxFQUFFLEVBQUUsRUFBRztNQUFDRCxJQUFJO01BQUN3RSxFQUFFLEVBQUUsQ0FBRTtNQUFDdkwsRUFBRSxFQUFFNFUsYUFBYSxHQUFHTyxTQUFTLEdBQUcsQ0FBRTtNQUFDaFMsU0FBUztNQUFBelIsUUFBQSxnQkFDcEViLHdEQUFBLENBQUMrViwrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsQ0FBRTtRQUFDcFQsU0FBUyxFQUFFbkIsc0VBQTRCO1FBQUFmLFFBQUEsZ0JBQ2xEZix1REFBQSxDQUFDZ2MsbUVBQWM7VUFBQ3hpQixNQUFNLEVBQUVBO1FBQU8sQ0FBRSxDQUFDLGVBQ2xDMEcsd0RBQUE7VUFBTStDLFNBQVMsRUFBRW5CLDBEQUFnQjtVQUFBZixRQUFBLEdBQzlCekssQ0FBQyxDQUFDLHlCQUF5QixDQUFDLEVBQUMsSUFBRSxlQUFBMEosdURBQUEsQ0FBQ2dDLGtEQUFRO1lBQUNDLElBQUksRUFBRXpJLE1BQU0sQ0FBQ2dLO1VBQU8sQ0FBRSxDQUFDO1FBQUEsQ0FDN0QsQ0FBQztNQUFBLENBQ0gsQ0FBQyxFQUNOeWdCLGFBQWEsSUFBSXpxQixNQUFNLENBQUNxbkIscUJBQXFCLEdBQUcsQ0FBQyxpQkFDaEQzZ0Isd0RBQUEsQ0FBQytWLCtDQUFJO1FBQUNJLEVBQUUsRUFBRSxDQUFFO1FBQUN5SixFQUFFLEVBQUUsQ0FBRTtRQUFBL2UsUUFBQSxHQUNoQnFYLHVEQUFjLENBQUM1ZSxNQUFNLENBQUNxbkIscUJBQXFCLEVBQUU7VUFBRTFIO1FBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFDLFVBRWpFLEVBQUNzTCxlQUFlLENBQUMvWSxJQUFJLENBQUVuUixDQUFDLElBQUtBLENBQUMsQ0FBQ3FxQixjQUFjLENBQUN2dkIsTUFBTSxHQUFHLENBQUMsQ0FBQyxpQkFDdkQySyx1REFBQSxDQUFDa2xCLFdBQVc7VUFDVmp1QixLQUFLLGVBQ0hpSix3REFBQSxDQUFBbVksd0RBQUE7WUFBQXRYLFFBQUEsZ0JBQ0ViLHdEQUFBO2NBQUFhLFFBQUEsR0FDR3FYLHVEQUFjLENBQUM1ZSxNQUFNLENBQUN5ckIsZUFBZSxFQUFFO2dCQUFFOUw7Y0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUMsZUFFN0Q7WUFBQSxDQUFHLENBQUMsZUFDSm5aLHVEQUFBO2NBQUFlLFFBQUEsRUFBRztZQUFLLENBQUcsQ0FBQyxFQUNYeEssTUFBTSxDQUFDMEIsSUFBSSxDQUFDMHNCLHNCQUFzQixDQUFDLENBQUN2cUIsR0FBRyxDQUFFMHFCLEtBQUssSUFBSztjQUNsRCxNQUFNO2dCQUFFRSxzQkFBc0I7Z0JBQUU3c0I7Y0FBSyxDQUFDLEdBQ3BDd3NCLHNCQUFzQixDQUFDRyxLQUFLLENBQUM7Y0FDL0Isb0JBQ0U5a0IsdURBQUE7Z0JBQUFlLFFBQUEsS0FBQTdMLE1BQUEsQ0FBbUJpRCxJQUFJLFNBQUFqRCxNQUFBLENBQU1rakIsdURBQWMsQ0FDekM0TSxzQkFBc0IsRUFDdEI7a0JBQUU3TDtnQkFBUyxDQUNiLENBQUM7Y0FBQSxHQUhPMkwsS0FHRCxDQUFDO1lBRVosQ0FBQyxDQUFDO1VBQUEsQ0FDRixDQUNIO1VBQUEvakIsUUFBQSxlQUVEZix1REFBQSxDQUFDK04scURBQVU7WUFBQWhOLFFBQUEsZUFDVGYsdURBQUEsQ0FBQ21rQixpRUFBUSxJQUFFO1VBQUMsQ0FDRjtRQUFDLENBQ0YsQ0FDZCxlQUNEbmtCLHVEQUFBLFNBQUssQ0FBQyxFQUNMb2tCLHVEQUFNLENBQ0w1cUIsTUFBTSxDQUFDaUIsZUFBZSxDQUFDLENBQUMsQ0FBQyxDQUFDaXJCLFdBQVcsR0FBRzdqQiw4REFDMUMsQ0FBQyxDQUFDOGpCLE1BQU0sQ0FBQyxjQUFjLENBQUM7TUFBQSxDQUNwQixDQUNQO0lBQUEsQ0FDRyxDQUFDLEVBQ04sQ0FBQzFCLGFBQWEsaUJBQ2Jqa0IsdURBQUEsQ0FBQ2lXLCtDQUFJO01BQUNJLEVBQUUsRUFBRSxFQUFHO01BQUM0SixFQUFFLEVBQUUsQ0FBRTtNQUFDNVEsRUFBRSxFQUFFLENBQUU7TUFBQXRPLFFBQUEsZUFDekJmLHVEQUFBLENBQUNpVywrQ0FBSTtRQUFDSSxFQUFFLEVBQUUsRUFBRztRQUFDRCxJQUFJO1FBQUFyVixRQUFBLGVBQ2hCZix1REFBQSxDQUFDK2Qsc0RBQVk7VUFBQ3ZrQixNQUFNLEVBQUVBO1FBQU8sQ0FBRTtNQUFDLENBQzVCO0lBQUMsQ0FDSCxDQUNQO0VBQUEsQ0FDRyxDQUFDO0FBRVgsQ0FBQztBQUVEcXFCLHFCQUFxQixDQUFDdGlCLFNBQVMsR0FBRztFQUNoQy9ILE1BQU0sRUFBRTZGLDBEQUFnQjtFQUN4QjRrQixhQUFhLEVBQUU1a0Isd0RBQWNrRTtBQUMvQixDQUFDO0FBRUQsaUVBQWVzZ0IscUJBQXFCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hLRztBQUNKO0FBQ1k7QUFDVjtBQUNtQztBQUV6QjtBQUFBO0FBRS9DLE1BQU1RLFlBQVksR0FBRzF0QixJQUFBLElBQWdCO0VBQUEsSUFBZjtJQUFFNkM7RUFBTyxDQUFDLEdBQUE3QyxJQUFBO0VBQzlCLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTXdtQixXQUFXLEdBQUduQyw4Q0FBTyxDQUN6QixNQUFNa0MsaUZBQTZCLENBQUNyc0IsTUFBTSxDQUFDLEVBQzNDLENBQUNBLE1BQU0sQ0FDVCxDQUFDO0VBQ0Qsb0JBQ0V3RyxzREFBQSxDQUFDNGxCLCtDQUFJO0lBQ0gsY0FBVyw0QkFBNEI7SUFDdkMzZCxLQUFLLEVBQUUzUixDQUFDLGlDQUFBcEIsTUFBQSxDQUFpQzR3QixXQUFXLENBQUUsQ0FBRTtJQUN4RDdpQixTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSTRNLGdEQUFNLENBQUNna0IsV0FBVyxDQUFDO0VBQUcsQ0FDMUQsQ0FBQztBQUVOLENBQUM7QUFFRHpCLFlBQVksQ0FBQzlpQixTQUFTLEdBQUc7RUFDdkIvSCxNQUFNLEVBQUU2RiwwREFBZ0JtQztBQUMxQixDQUFDO0FBRUQsaUVBQWU2aUIsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMzQmE7QUFDTDtBQUNZO0FBQ0w7QUFDd0I7QUFDSjtBQUNyQjtBQUNLO0FBQ2tDO0FBQ1Q7QUFDeEI7QUFDZTtBQUNGO0FBQUE7QUFFNUQsTUFBTXJELG1CQUFtQixHQUFHcnFCLElBQUEsSUFTdEI7RUFBQSxJQVR1QjtJQUMzQnNELE9BQU87SUFDUGpHLE1BQU07SUFDTm1RLElBQUk7SUFDSnFlLG9CQUFvQjtJQUNwQkMsYUFBYTtJQUNickYsZUFBZTtJQUNmM0IsY0FBYztJQUNkc0c7RUFDRixDQUFDLEdBQUFwckIsSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTNMLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDdUksSUFBSSxFQUFFQyxPQUFPLENBQUMsR0FBRzVqQiwrQ0FBUSxDQUFDd2pCLHNEQUFRLENBQUM7RUFDMUMsTUFBTSxDQUFDSyxRQUFRLEVBQUVDLFdBQVcsQ0FBQyxHQUFHOWpCLCtDQUFRLENBQUMsRUFBRSxDQUFDO0VBQzVDLE1BQU0sQ0FBQytqQixhQUFhLEVBQUVDLGdCQUFnQixDQUFDLEdBQUdoa0IsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFFekQsTUFBTXNoQixXQUFXLEdBQUdBLENBQUEsS0FBTTtJQUN4QndDLFdBQVcsQ0FBQyxFQUFFLENBQUM7SUFDZi9ELGFBQWEsQ0FBQyxDQUFDO0lBQ2Y2RCxPQUFPLENBQUNKLHNEQUFRLENBQUM7SUFDakIsSUFBSU8sYUFBYSxFQUFFO01BQ2pCakUsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLENBQUM7TUFDeEJrRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7SUFDekI7RUFDRixDQUFDO0VBRUQsTUFBTUMsYUFBYSxHQUFHQSxDQUFBLEtBQU07SUFDMUJMLE9BQU8sQ0FBQ0Ysc0RBQVEsQ0FBQztFQUNuQixDQUFDO0VBRUQsTUFBTVEsY0FBYyxHQUFHQSxDQUFBLEtBQU07SUFDM0JOLE9BQU8sQ0FBQ0osc0RBQVEsQ0FBQztFQUNuQixDQUFDO0VBRUQsTUFBTVcsYUFBYSxHQUFHLE1BQUFBLENBQUEsS0FBWTtJQUNoQ2x6QixRQUFRLENBQUNvRywyREFBaUIsQ0FBQztNQUFFRSxPQUFPLEVBQUVtakI7SUFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQy9rQixJQUFJLENBQUVyQyxHQUFHLElBQUs7TUFDdEVyQyxRQUFRLENBQUMrRyxzRUFBNEIsQ0FBQzFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztNQUM3QyxJQUFJLENBQUFBLEdBQUcsYUFBSEEsR0FBRyx1QkFBSEEsR0FBRyxDQUFFWCxNQUFNLE1BQUsrbkIsZUFBZSxDQUFDL25CLE1BQU0sRUFBRTtRQUMxQ2l4QixPQUFPLENBQUNILHdEQUFVLENBQUMsQ0FBQyxDQUFDO1FBQ3JCTyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7TUFDeEIsQ0FBQyxNQUFNO1FBQ0xGLFdBQVcsQ0FBQ2x3QixDQUFDLENBQUMsNEJBQTRCLENBQUMsQ0FBQztNQUM5QztJQUNGLENBQUMsQ0FBQztJQUNGa3dCLFdBQVcsQ0FBQyxFQUFFLENBQUM7RUFDakIsQ0FBQztFQUVELE1BQU1NLGFBQWEsR0FBR0EsQ0FBQSxrQkFDcEI1bUIsd0RBQUEsQ0FBQW1ZLHdEQUFBO0lBQUF0WCxRQUFBLGdCQUNFZix1REFBQTtNQUFJaUQsU0FBUyxFQUFFbkIsMERBQWdCO01BQUFmLFFBQUEsRUFDNUJ6SyxDQUFDLENBQUMsMkNBQTJDO0lBQUMsQ0FDN0MsQ0FBQyxlQUNMMEosdURBQUEsQ0FBQ1QsOENBQUc7TUFBQzBELFNBQVMsRUFBRW5CLDREQUFrQjtNQUFBZixRQUFBLEVBQy9COUcsT0FBTyxDQUFDRyxHQUFHLENBQUVaLE1BQU0saUJBQ2xCd0csdURBQUEsQ0FBQythLHFFQUFnQjtRQUVmdmhCLE1BQU0sRUFBRUEsTUFBTztRQUNmeEYsTUFBTSxFQUFFQSxNQUFPO1FBQ2Z3bkIsa0JBQWtCLEVBQ2hCLENBQUMsQ0FBQzRCLGVBQWUsQ0FBQ1EsSUFBSSxDQUFFdG5CLENBQUMsSUFBS0EsQ0FBQyxDQUFDOEIsRUFBRSxLQUFLb0IsTUFBTSxDQUFDcEIsRUFBRSxDQUNqRDtRQUNEcWpCLGNBQWMsRUFBRUEsY0FBZTtRQUMvQnNHLHFCQUFxQixFQUFFQSxxQkFBc0I7UUFDN0N4RyxhQUFhO01BQUEsYUFBQXJtQixNQUFBLENBUkVzRSxNQUFNLENBQUNwQixFQUFFLENBU3pCLENBQ0Y7SUFBQyxDQUNDLENBQUMsZUFDTjhILHdEQUFBLENBQUNYLDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQiwrREFBcUI7TUFBQWYsUUFBQSxnQkFDbkNmLHVEQUFBLENBQUNpUSxpREFBTTtRQUNMLGNBQVcsc0JBQXNCO1FBQ2pDbUssSUFBSSxFQUFDLFFBQVE7UUFDYm5YLFNBQVMsRUFBRW5CLDhEQUFvQjtRQUMvQnVCLE9BQU8sRUFBRTJnQixXQUFZO1FBQUFqakIsUUFBQSxFQUVwQnpLLENBQUMsQ0FBQyxnQkFBZ0I7TUFBQyxDQUNkLENBQUMsZUFDVDBKLHVEQUFBLENBQUNpUSxpREFBTTtRQUNMLGNBQVcsd0JBQXdCO1FBQ25DbUssSUFBSSxFQUFDLFFBQVE7UUFDYm5YLFNBQVMsRUFBRW5CLGdFQUFzQjtRQUNqQ3VCLE9BQU8sRUFBRXNqQixhQUFjO1FBQ3ZCdGxCLFFBQVEsRUFBRStiLGVBQWUsQ0FBQy9uQixNQUFNLEtBQUssQ0FBRTtRQUFBMEwsUUFBQSxFQUV0Q3pLLENBQUMsQ0FBQyxrQkFBa0I7TUFBQyxDQUNoQixDQUFDO0lBQUEsQ0FDTixDQUFDO0VBQUEsQ0FDTixDQUNIO0VBRUQsTUFBTTh3QixhQUFhLEdBQUdBLENBQUEsa0JBQ3BCbG5CLHdEQUFBLENBQUNYLDhDQUFHO0lBQUMsZUFBWSwyQkFBMkI7SUFBQXdCLFFBQUEsZ0JBQzFDZix1REFBQTtNQUFJaUQsU0FBUyxFQUFFbkIsMERBQWdCO01BQUFmLFFBQUEsRUFDNUJ6SyxDQUFDLENBQUMsNENBQTRDO0lBQUMsQ0FDOUMsQ0FBQyxFQUNKaXdCLFFBQVEsaUJBQ1B2bUIsdURBQUEsQ0FBQzZXLDBEQUFVO01BQ1RsVSxVQUFVLEVBQUViLGdFQUFzQjtNQUNsQ2tFLEtBQUssRUFBQyxTQUFTO01BQ2Y4USxVQUFVLEVBQUMsdUJBQXVCO01BQ2xDcGQsT0FBTyxFQUFFNnNCO0lBQVMsQ0FDbkIsQ0FDRixlQUNEdm1CLHVEQUFBLENBQUNULDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQiw0REFBa0I7TUFBQWYsUUFBQSxFQUMvQnFjLGVBQWUsQ0FBQ2hqQixHQUFHLENBQUVaLE1BQU0saUJBQzFCd0csdURBQUEsQ0FBQzZqQiwrREFBcUI7UUFFcEJycUIsTUFBTSxFQUFFQTtNQUFPLGlCQUFBdEUsTUFBQSxDQURJc0UsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVwQixFQUFFLENBRTlCLENBQ0Y7SUFBQyxDQUNDLENBQUMsZUFDTjhILHdEQUFBLENBQUNYLDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQixrRUFBd0I7TUFBQWYsUUFBQSxnQkFDdENmLHVEQUFBLENBQUNpUSxpREFBTTtRQUNMLGNBQVcsc0JBQXNCO1FBQ2pDbUssSUFBSSxFQUFDLFFBQVE7UUFDYm5YLFNBQVMsRUFBRW5CLDhEQUFvQjtRQUMvQnVCLE9BQU8sRUFBRXVqQixjQUFlO1FBQUE3bEIsUUFBQSxFQUV2QnpLLENBQUMsQ0FBQyxjQUFjO01BQUMsQ0FDWixDQUFDLGVBQ1QwSix1REFBQSxDQUFDaVEsaURBQU07UUFDTCxjQUFXLHdCQUF3QjtRQUNuQ21LLElBQUksRUFBQyxRQUFRO1FBQ2JuWCxTQUFTLEVBQUVuQixnRUFBc0I7UUFDakN1QixPQUFPLEVBQUV3akIsYUFBYztRQUFBOWxCLFFBQUEsRUFFdEJ6SyxDQUFDLENBQUMsa0JBQWtCO01BQUMsQ0FDaEIsQ0FBQztJQUFBLENBQ04sQ0FBQztFQUFBLENBQ0gsQ0FDTjtFQUVELE1BQU1peEIsZUFBZSxHQUFHQSxDQUFBLGtCQUN0QnJuQix3REFBQSxDQUFDWCw4Q0FBRztJQUNGMEQsU0FBUyxFQUFFbkIsa0VBQXdCO0lBQ25DLGVBQVksMkJBQTJCO0lBQUFmLFFBQUEsZ0JBRXZDZix1REFBQSxDQUFDaW1CLHdFQUFlO01BQUM5YyxFQUFFLEVBQUU7UUFBRW5ELEtBQUssRUFBRTtNQUFVO0lBQUUsQ0FBRSxDQUFDLGVBQzdDaEcsdURBQUE7TUFBTWlELFNBQVMsRUFBRW5CLDREQUFrQjtNQUFBZixRQUFBLEVBQ2hDekssQ0FBQyxDQUFDLGtDQUFrQztJQUFDLENBQ2xDLENBQUMsZUFDUDBKLHVEQUFBO01BQU1pRCxTQUFTLEVBQUVuQiw2REFBbUI7TUFBQWYsUUFBQSxFQUNqQ3pLLENBQUMsQ0FBQyxrQ0FBa0M7SUFBQyxDQUNsQyxDQUFDLGVBQ1AwSix1REFBQSxDQUFDaVEsaURBQU07TUFDTCxjQUFXLHNCQUFzQjtNQUNqQ21LLElBQUksRUFBQyxRQUFRO01BQ2JuWCxTQUFTLEVBQUVuQixnRUFBc0I7TUFDakN1QixPQUFPLEVBQUUyZ0IsV0FBWTtNQUFBampCLFFBQUEsRUFFcEJ6SyxDQUFDLENBQUMsZ0JBQWdCO0lBQUMsQ0FDZCxDQUFDO0VBQUEsQ0FDTixDQUNOO0VBRUQsTUFBTXF4QixXQUFXLEdBQUdBLENBQUEsS0FBTTtJQUN4QixRQUFRdEIsSUFBSTtNQUNWLEtBQUtILHNEQUFRO1FBQ1gsT0FBT1ksYUFBYSxDQUFDLENBQUM7TUFDeEIsS0FBS1Ysc0RBQVE7UUFDWCxPQUFPZ0IsYUFBYSxDQUFDLENBQUM7TUFDeEIsS0FBS2pCLHdEQUFVO1FBQ2IsT0FBT29CLGVBQWUsQ0FBQyxDQUFDO01BQzFCO1FBQ0UsT0FBT1QsYUFBYSxDQUFDLENBQUM7SUFDMUI7RUFDRixDQUFDO0VBQ0Qsb0JBQ0U5bUIsdURBQUEsQ0FBQ2dtQiwrREFBb0I7SUFBQzRCLFdBQVc7SUFBQTdtQixRQUFBLGVBQy9CZix1REFBQSxDQUFDNGpCLG9EQUFXO01BQ1Z4ckIsRUFBRSxFQUFDLGlCQUFpQjtNQUNwQitMLElBQUksRUFBRUEsSUFBSztNQUNYOUQsT0FBTyxFQUFFMmpCLFdBQVk7TUFDckIvc0IsS0FBSyxFQUFFWCxDQUFDLENBQUMsOEJBQThCLENBQUU7TUFDekMsZUFBWSxzQkFBc0I7TUFBQXlLLFFBQUEsRUFFakM0bUIsV0FBVyxDQUFDO0lBQUMsQ0FDSDtFQUFDLENBQ00sQ0FBQztBQUUzQixDQUFDO0FBRUQzRyxtQkFBbUIsQ0FBQ3pmLFNBQVMsR0FBRztFQUM5QnRILE9BQU8sRUFBRW9GLHlEQUFpQixDQUFDOUksTUFBTSxDQUFDO0VBQ2xDNE4sSUFBSSxFQUFFOUUsd0RBQWM7RUFDcEJtakIsb0JBQW9CLEVBQUVuakIsd0RBQWM7RUFDcENvakIsYUFBYSxFQUFFcGpCLHdEQUFjcUM7QUFDL0IsQ0FBQztBQUVELGlFQUFlc2YsbUJBQW1COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMU1sQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDaUM7QUFDWDtBQUNWO0FBQUE7QUFFL0MsTUFBTTRDLFdBQVcsR0FBR2p0QixJQUFBO0VBQUEsSUFBQztJQUFFeUIsRUFBRTtJQUFFbkIsS0FBSztJQUFFOEosUUFBUTtJQUFFb0QsSUFBSTtJQUFFOUQsT0FBTztJQUFFNEM7RUFBVSxDQUFDLEdBQUF0TSxJQUFBO0VBQUEsb0JBQ3BFdUosdURBQUEsQ0FBQzJuQixpREFBTTtJQUNMenZCLEVBQUUsRUFBRUEsRUFBRztJQUNQK0wsSUFBSSxFQUFFQSxJQUFLO0lBQ1g5RCxPQUFPLEVBQUVBLE9BQVE7SUFDakIwbkIsTUFBTSxFQUFDLE9BQU87SUFDZEMsVUFBVSxFQUFFO01BQUVDLFdBQVcsRUFBRTtJQUFNLENBQUU7SUFDbkNobEIsU0FBUyxLQUFBL04sTUFBQSxDQUFLNE0sd0RBQWMsT0FBQTVNLE1BQUEsQ0FBSStOLFNBQVMsQ0FBRztJQUFBbEMsUUFBQSxnQkFFNUNiLHVEQUFBLENBQUNYLDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQix1REFBYztNQUFBZixRQUFBLGdCQUM1QmYsc0RBQUEsQ0FBQytOLHFEQUFVO1FBQ1QsZUFBWSxjQUFjO1FBQzFCOUssU0FBUyxFQUFFbkIseURBQWdCO1FBQzNCdUIsT0FBTyxFQUFFaEQsT0FBUTtRQUNqQjhJLEVBQUUsRUFBRTtVQUFFaWYsS0FBSyxFQUFFO1FBQVEsQ0FBRTtRQUN2Qi9pQixRQUFRLEVBQUMsT0FBTztRQUFBdEUsUUFBQSxlQUVoQmYsc0RBQUEsQ0FBQ3VULHNEQUFTLElBQUU7TUFBQyxDQUNILENBQUMsZUFDYnZULHNEQUFBLENBQUM0YixxREFBVTtRQUFDakosT0FBTyxFQUFDLElBQUk7UUFBQzBWLFlBQVk7UUFBQ3BsQixTQUFTLEVBQUVuQixzREFBYTtRQUFBZixRQUFBLEVBQzNEOUo7TUFBSyxDQUNJLENBQUM7SUFBQSxDQUNWLENBQUMsRUFDTDhKLFFBQVE7RUFBQSxDQUNILENBQUM7QUFBQSxDQUNWO0FBRUQ2aUIsV0FBVyxDQUFDcmlCLFNBQVMsR0FBRztFQUN0Qm5KLEVBQUUsRUFBRWlILDBEQUFnQixDQUFDNkIsVUFBVTtFQUMvQmpLLEtBQUssRUFBRW9JLDJEQUFtQixDQUFDLENBQUNBLDBEQUFnQixFQUFFQSx3REFBYyxDQUFDLENBQUM7RUFDOUQwQixRQUFRLEVBQUUxQix3REFBYztFQUN4QjhFLElBQUksRUFBRTlFLHdEQUFjO0VBQ3BCZ0IsT0FBTyxFQUFFaEIsd0RBQWM7RUFDdkI0RCxTQUFTLEVBQUU1RCwwREFBZ0JpRTtBQUM3QixDQUFDO0FBRUQsaUVBQWVzZ0IsV0FBVzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkRBO0FBQzhCO0FBQ3BCO0FBRTZCO0FBQ2xCO0FBQUE7QUFFL0MsTUFBTTRFLFlBQVksR0FBR0EsQ0FBQSxLQUFNO0VBQ3pCLE1BQU07SUFBRXgwQjtFQUFPLENBQUMsR0FBRzRaLHdEQUFXLENBQzNCVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFDbENtVyxxREFDRixDQUFDO0VBQ0Qsb0JBQ0UzTix1REFBQSxDQUFDWCw4Q0FBRztJQUNGMEQsU0FBUyxFQUFFbkIsNkRBQW9CO0lBQy9CcUgsRUFBRSxFQUFFO01BQUVtTCxPQUFPLEVBQUU7UUFBRStCLEVBQUUsRUFBRSxDQUFDO1FBQUVrTSxFQUFFLEVBQUUsQ0FBQztRQUFFWSxFQUFFLEVBQUU7TUFBRTtJQUFFLENBQUU7SUFDekMsZUFBWSx5QkFBeUI7SUFBQXBpQixRQUFBLGdCQUVyQ2Ysc0RBQUE7TUFBSWlELFNBQVMsRUFBRW5CLGdFQUF1QjtNQUFBZixRQUFBLEVBQUUvTSxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRW1FO0lBQUksQ0FBSyxDQUFDLGVBQzFENkgsc0RBQUE7TUFBSWlELFNBQVMsRUFBRW5CLGdFQUF1QjtNQUFBZixRQUFBLEVBQ25Dd25CLDBFQUFzQixDQUFDdjBCLE1BQU07SUFBQyxDQUM3QixDQUFDO0VBQUEsQ0FDRixDQUFDO0FBRVYsQ0FBQztBQUVELGlFQUFldzBCLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDMUIzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRTBCO0FBQ1M7QUFDWTtBQUNPO0FBQ25CO0FBQ1I7QUFFa0I7QUFBQTtBQUU3QyxNQUFNSSxZQUFZLEdBQUdqeUIsSUFBQSxJQUEyQjtFQUFBLElBQTFCO0lBQUV5SixRQUFRO0lBQUVDO0VBQVEsQ0FBQyxHQUFBMUosSUFBQTtFQUN6QyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBRTlCLE1BQU1nQixNQUFNLEdBQUdkLGlEQUFTLENBQUM7SUFDdkJlLGFBQWEsRUFBRTtNQUNic29CLG1CQUFtQixFQUFFLEVBQUU7TUFDdkJDLGtCQUFrQixFQUFFLEVBQUU7TUFDdEJDLGNBQWMsRUFBRTtJQUNsQixDQUFDO0lBQ0R2b0IsZ0JBQWdCLEVBQUVtb0IsdUNBQVUsQ0FBQztNQUMzQkUsbUJBQW1CLEVBQUVGLHVDQUNaLENBQUNyeUIsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUMsQ0FDekNtUyxRQUFRLENBQUNuUyxDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztNQUNoRHd5QixrQkFBa0IsRUFBRUgsdUNBQ1gsQ0FBQ3J5QixDQUFDLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUN4Q21TLFFBQVEsQ0FBQ25TLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO01BQy9DeXlCLGNBQWMsRUFBRUosdUNBQ1AsQ0FBQ3J5QixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUNwQzNELEtBQUssQ0FBQzJELENBQUMsQ0FBQyx5QkFBeUIsQ0FBQztJQUN2QyxDQUFDLENBQUM7SUFDRjhKLFFBQVEsRUFBRUEsQ0FBQ00sTUFBTSxFQUFBdEosS0FBQSxLQUFvQjtNQUFBLElBQWxCO1FBQUU0eEI7TUFBVSxDQUFDLEdBQUE1eEIsS0FBQTtNQUM5QmdKLFFBQVEsQ0FBQ00sTUFBTSxDQUFDO01BQ2hCc29CLFNBQVMsQ0FBQyxDQUFDO0lBQ2I7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNQyxZQUFZLEdBQUdBLENBQUEsS0FBTTtJQUN6QjNvQixNQUFNLENBQUMwb0IsU0FBUyxDQUFDLENBQUM7SUFDbEIzb0IsT0FBTyxDQUFDLENBQUM7RUFDWCxDQUFDO0VBRUQsb0JBQ0VILHVEQUFBLENBQUFtWSx1REFBQTtJQUFBdFgsUUFBQSxnQkFDRWYsc0RBQUEsQ0FBQzRiLHFEQUFVO01BQUNqSixPQUFPLEVBQUMsSUFBSTtNQUFDMFYsWUFBWTtNQUFBdG5CLFFBQUEsRUFDbEN6SyxDQUFDLENBQUMsbUNBQW1DO0lBQUMsQ0FDN0IsQ0FBQyxlQUNiMEosc0RBQUEsQ0FBQzRiLHFEQUFVO01BQUNqSixPQUFPLEVBQUMsT0FBTztNQUFDMFYsWUFBWTtNQUFDbGYsRUFBRSxFQUFFO1FBQUVuRCxLQUFLLEVBQUU7TUFBaUIsQ0FBRTtNQUFBakYsUUFBQSxFQUN0RXpLLENBQUMsQ0FBQyxrQ0FBa0M7SUFBQyxDQUM1QixDQUFDLGVBQ2I0Six1REFBQTtNQUFNRSxRQUFRLEVBQUVFLE1BQU0sQ0FBQ08sWUFBYTtNQUFDQyxVQUFVO01BQUFDLFFBQUEsZ0JBQzdDZixzREFBQSxDQUFDOEosb0RBQVM7UUFDUnBCLFNBQVM7UUFDVHZRLElBQUksRUFBQyxxQkFBcUI7UUFDMUJ3USxNQUFNLEVBQUMsUUFBUTtRQUNmVixLQUFLLEVBQUUzUixDQUFDLENBQUMsd0NBQXdDLENBQUU7UUFDbkRPLEtBQUssRUFBRXlKLE1BQU0sQ0FBQ0ksTUFBTSxDQUFDbW9CLG1CQUFvQjtRQUN6QzFoQixRQUFRLEVBQUU3RyxNQUFNLENBQUNnTixZQUFhO1FBQzlCQyxNQUFNLEVBQUVqTixNQUFNLENBQUNrTixVQUFXO1FBQzFCbkcsS0FBSyxFQUNIL0csTUFBTSxDQUFDbU4sT0FBTyxDQUFDb2IsbUJBQW1CLElBQ2xDbmIsT0FBTyxDQUFDcE4sTUFBTSxDQUFDN0osTUFBTSxDQUFDb3lCLG1CQUFtQixDQUMxQztRQUNEdmhCLFVBQVUsRUFDUmhILE1BQU0sQ0FBQ21OLE9BQU8sQ0FBQ29iLG1CQUFtQixJQUNsQ3ZvQixNQUFNLENBQUM3SixNQUFNLENBQUNveUIsbUJBQ2Y7UUFDRHBnQixRQUFRO01BQUEsQ0FDVCxDQUFDLGVBQ0Z6SSxzREFBQSxDQUFDOEosb0RBQVM7UUFDUnBCLFNBQVM7UUFDVHZRLElBQUksRUFBQyxvQkFBb0I7UUFDekJ3USxNQUFNLEVBQUMsUUFBUTtRQUNmVixLQUFLLEVBQUUzUixDQUFDLENBQUMsdUNBQXVDLENBQUU7UUFDbERPLEtBQUssRUFBRXlKLE1BQU0sQ0FBQ0ksTUFBTSxDQUFDb29CLGtCQUFtQjtRQUN4QzNoQixRQUFRLEVBQUU3RyxNQUFNLENBQUNnTixZQUFhO1FBQzlCQyxNQUFNLEVBQUVqTixNQUFNLENBQUNrTixVQUFXO1FBQzFCbkcsS0FBSyxFQUNIL0csTUFBTSxDQUFDbU4sT0FBTyxDQUFDcWIsa0JBQWtCLElBQ2pDcGIsT0FBTyxDQUFDcE4sTUFBTSxDQUFDN0osTUFBTSxDQUFDcXlCLGtCQUFrQixDQUN6QztRQUNEeGhCLFVBQVUsRUFDUmhILE1BQU0sQ0FBQ21OLE9BQU8sQ0FBQ3FiLGtCQUFrQixJQUNqQ3hvQixNQUFNLENBQUM3SixNQUFNLENBQUNxeUI7TUFDZixDQUNGLENBQUMsZUFDRjlvQixzREFBQSxDQUFDOEosb0RBQVM7UUFDUnBCLFNBQVM7UUFDVHZRLElBQUksRUFBQyxnQkFBZ0I7UUFDckI4UCxLQUFLLEVBQUUzUixDQUFDLENBQUMsbUNBQW1DLENBQUU7UUFDOUNxUyxNQUFNLEVBQUMsUUFBUTtRQUNmOVIsS0FBSyxFQUFFeUosTUFBTSxDQUFDSSxNQUFNLENBQUNxb0IsY0FBZTtRQUNwQzVoQixRQUFRLEVBQUU3RyxNQUFNLENBQUNnTixZQUFhO1FBQzlCQyxNQUFNLEVBQUVqTixNQUFNLENBQUNrTixVQUFXO1FBQzFCbkcsS0FBSyxFQUNIL0csTUFBTSxDQUFDbU4sT0FBTyxDQUFDc2IsY0FBYyxJQUM3QnJiLE9BQU8sQ0FBQ3BOLE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQ3N5QixjQUFjLENBQ3JDO1FBQ0R6aEIsVUFBVSxFQUNSaEgsTUFBTSxDQUFDbU4sT0FBTyxDQUFDc2IsY0FBYyxJQUFJem9CLE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQ3N5QjtNQUNoRCxDQUNGLENBQUMsZUFDRi9vQixzREFBQSxDQUFDTixtREFBVTtRQUNUeUIsU0FBUyxFQUFFN0ssQ0FBQyxDQUFDLGtDQUFrQyxDQUFFO1FBQ2pEOEssV0FBVyxFQUFFOUssQ0FBQyxDQUFDLG9DQUFvQyxDQUFFO1FBQ3JEK0osT0FBTyxFQUFFNG9CLFlBQWE7UUFDdEI1bkIsUUFBUSxFQUFFZixNQUFNLENBQUNnQjtNQUFhLENBQy9CLENBQUM7SUFBQSxDQUNFLENBQUM7RUFBQSxDQUNQLENBQUM7QUFFUCxDQUFDO0FBRURzbkIsWUFBWSxDQUFDcm5CLFNBQVMsR0FBRztFQUN2Qm5CLFFBQVEsRUFBRWYsd0RBQWMsQ0FBQzZCLFVBQVU7RUFDbkNiLE9BQU8sRUFBRWhCLHdEQUFjLENBQUM2QjtBQUMxQixDQUFDO0FBRUQsaUVBQWUwbkIsWUFBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqSUQ7QUFDUztBQUNZO0FBQ087QUFDYjtBQUNNO0FBQUE7QUFFL0MsTUFBTU8sWUFBWSxHQUFHeHlCLElBQUEsSUFBZ0Q7RUFBQSxJQUFBc2xCLGFBQUEsRUFBQU8sYUFBQSxFQUFBQyxjQUFBO0VBQUEsSUFBL0M7SUFBRTJNLFVBQVU7SUFBRTV2QixNQUFNO0lBQUU2dkIsU0FBUztJQUFFaHBCO0VBQVEsQ0FBQyxHQUFBMUosSUFBQTtFQUM5RCxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1ncUIsYUFBYSxHQUFHLENBQUE5dkIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBeWlCLGFBQUEsR0FBTnppQixNQUFNLENBQUU0RCxLQUFLLGNBQUE2ZSxhQUFBLHVCQUFiQSxhQUFBLENBQWV0cEIsS0FBSyxNQUFLMDJCLFNBQVM7RUFFeEQsTUFBTUUsaUJBQWlCLEdBQUdBLENBQUEsS0FBTTtJQUM5QixJQUFJSCxVQUFVLEtBQUssUUFBUSxFQUFFO01BQzNCLFVBQUFsMEIsTUFBQSxDQUFVb0IsQ0FBQyxDQUFDLHVDQUF1QyxDQUFDLE9BQUFwQixNQUFBLENBQ2xEc0UsTUFBTSxDQUFDNEQsS0FBSyxDQUFDWixVQUFVLE9BQUF0SCxNQUFBLENBQ3JCc0UsTUFBTSxDQUFDNEQsS0FBSyxDQUFDWCxTQUFTO0lBQzVCO0lBRUEsSUFBSTJzQixVQUFVLEVBQUU7TUFBQSxJQUFBbE4sY0FBQTtNQUNkLE1BQU1qb0IsSUFBSSxHQUFHcTFCLGFBQWEsR0FBRyxLQUFLLEdBQUc5dkIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBMGlCLGNBQUEsR0FBTjFpQixNQUFNLENBQUU0RCxLQUFLLGNBQUE4ZSxjQUFBLHVCQUFiQSxjQUFBLENBQWV2cEIsS0FBSztNQUN6RCxVQUFBdUMsTUFBQSxDQUFVb0IsQ0FBQyxDQUFDLHlDQUF5QyxDQUFDLE9BQUFwQixNQUFBLENBQUlqQixJQUFJO0lBQ2hFO0lBRUEsT0FBT3VGLE1BQU0sQ0FBQ3dmLFdBQVcsQ0FBQzdnQixJQUFJO0VBQ2hDLENBQUM7RUFFRCxNQUFNcXhCLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCLElBQUlKLFVBQVUsRUFBRTtNQUNkLE1BQU1LLFFBQVEsR0FBR0gsYUFBYSxHQUMxQiw0Q0FBNEMsR0FDNUMsOENBQThDO01BRWxELG9CQUNFcHBCLHVEQUFBLENBQUFtWSx1REFBQTtRQUFBdFgsUUFBQSxHQUNHekssQ0FBQyxDQUFDbXpCLFFBQVEsQ0FBQyxlQUNaenBCLHNEQUFBLFNBQUssQ0FBQyxlQUVOQSxzREFBQSxDQUFDa3BCLCtDQUFJO1VBQ0hRLFNBQVMsRUFBQyxRQUFRO1VBQ2xCL1csT0FBTyxFQUFDLE9BQU87VUFDZnRQLE9BQU8sRUFBRWhELE9BQVE7VUFDakI4SSxFQUFFLEVBQUU7WUFBRTVELFVBQVUsRUFBRSxHQUFHO1lBQUVvRCxNQUFNLEVBQUU7VUFBYyxDQUFFO1VBQUE1SCxRQUFBLEVBRTlDekssQ0FBQyxDQUFDLDRDQUE0QztRQUFDLENBQzVDLENBQUM7TUFBQSxDQUNQLENBQUM7SUFFUDtJQUVBLE9BQU8sRUFBRTtFQUNYLENBQUM7RUFFRCxvQkFDRTRKLHVEQUFBLENBQUNYLDhDQUFHO0lBQUMwRCxTQUFTLEVBQUVuQix3REFBZTtJQUFBZixRQUFBLGdCQUM3QmIsdURBQUEsQ0FBQ1gsOENBQUc7TUFBQzBELFNBQVMsRUFBRW5CLG1FQUEwQjtNQUFBZixRQUFBLGdCQUN4Q2IsdURBQUEsQ0FBQzBiLHFEQUFVO1FBQUNqSixPQUFPLEVBQUMsT0FBTztRQUFDMFYsWUFBWTtRQUFDcGxCLFNBQVMsRUFBRW5CLDREQUFtQjtRQUFBZixRQUFBLEdBQ3BFekssQ0FBQyxDQUFDLDBDQUEwQyxDQUFDLEVBQUUsR0FBRyxFQUNsRGtELE1BQU0sYUFBTkEsTUFBTSxnQkFBQWdqQixhQUFBLEdBQU5oakIsTUFBTSxDQUFFMUIsS0FBSyxjQUFBMGtCLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZXFOLFdBQVc7TUFBQSxDQUNqQixDQUFDLGVBQ2I3cEIsc0RBQUEsQ0FBQzRiLHFEQUFVO1FBQUNqSixPQUFPLEVBQUMsT0FBTztRQUFDMFYsWUFBWTtRQUFDcGxCLFNBQVMsRUFBRW5CLHdEQUFlO1FBQUFmLFFBQUEsZUFDakVmLHNEQUFBLENBQUNnQyxpREFBUTtVQUNQQyxJQUFJLEVBQUV6SSxNQUFNLGFBQU5BLE1BQU0sZ0JBQUFpakIsY0FBQSxHQUFOampCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQTJrQixjQUFBLHVCQUFiQSxjQUFBLENBQWVqWixNQUFPO1VBQzVCbkIsUUFBUTtVQUNSQyxLQUFLLEVBQUUsR0FBSTtVQUNYSixXQUFXLEVBQUU1TCxDQUFDLENBQUMsaUNBQWlDO1FBQUUsQ0FDbkQ7TUFBQyxDQUNRLENBQUM7SUFBQSxDQUNWLENBQUMsZUFDTjBKLHNEQUFBLENBQUM0YixxREFBVTtNQUFDakosT0FBTyxFQUFDLElBQUk7TUFBQzBWLFlBQVk7TUFBQXRuQixRQUFBLEVBQ2xDd29CLGlCQUFpQixDQUFDO0lBQUMsQ0FDVixDQUFDLGVBQ2J2cEIsc0RBQUEsQ0FBQzRiLHFEQUFVO01BQ1RqSixPQUFPLEVBQUMsT0FBTztNQUNmMFYsWUFBWTtNQUNacGxCLFNBQVMsRUFBRW5CLDJEQUFrQjtNQUM3QnFILEVBQUUsRUFBRTtRQUFFbkQsS0FBSyxFQUFFO01BQWlCLENBQUU7TUFBQWpGLFFBQUEsRUFFL0J5b0IsYUFBYSxDQUFDO0lBQUMsQ0FDTixDQUFDO0VBQUEsQ0FDVixDQUFDO0FBRVYsQ0FBQzs7QUFFRDtBQUNBTCxZQUFZLENBQUM1bkIsU0FBUyxHQUFHO0VBQ3ZCNm5CLFVBQVUsRUFBRS9wQiwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDdkMxSCxNQUFNLEVBQUU2RiwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDbkNtb0IsU0FBUyxFQUFFaHFCLDBEQUFnQixDQUFDNkI7QUFDOUIsQ0FBQztBQUVELGlFQUFlaW9CLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxRkQ7QUFDUztBQUNZO0FBQ087QUFDUDtBQUFBO0FBRS9DLE1BQU1hLGNBQWMsR0FBR3J6QixJQUFBLElBTWpCO0VBQUEsSUFBQXNsQixhQUFBO0VBQUEsSUFOa0I7SUFDdEJtTixVQUFVO0lBQ1ZhLGNBQWM7SUFDZHp3QixNQUFNO0lBQ042dkIsU0FBUztJQUNUaHBCO0VBQ0YsQ0FBQyxHQUFBMUosSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTWdxQixhQUFhLEdBQUcsQ0FBQTl2QixNQUFNLGFBQU5BLE1BQU0sZ0JBQUF5aUIsYUFBQSxHQUFOemlCLE1BQU0sQ0FBRTRELEtBQUssY0FBQTZlLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZXRwQixLQUFLLE1BQUswMkIsU0FBUztFQUV4RCxNQUFNRSxpQkFBaUIsR0FBR0EsQ0FBQSxLQUFNO0lBQUEsSUFBQXJOLGNBQUE7SUFDOUIsTUFBTWpvQixJQUFJLEdBQUdxMUIsYUFBYSxHQUN0Qmh6QixDQUFDLENBQUMsd0NBQXdDLENBQUMsR0FDM0NrRCxNQUFNLGFBQU5BLE1BQU0sZ0JBQUEwaUIsY0FBQSxHQUFOMWlCLE1BQU0sQ0FBRTRELEtBQUssY0FBQThlLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZXZwQixLQUFLO0lBRXhCLElBQUl5MkIsVUFBVSxLQUFLLFFBQVEsRUFBRTtNQUMzQixVQUFBbDBCLE1BQUEsQ0FBVW9CLENBQUMsQ0FBQyx5Q0FBeUMsQ0FBQyxPQUFBcEIsTUFBQSxDQUNwRHNFLE1BQU0sQ0FBQzRELEtBQUssQ0FBQ1osVUFBVSxPQUFBdEgsTUFBQSxDQUNyQnNFLE1BQU0sQ0FBQzRELEtBQUssQ0FBQ1gsU0FBUztJQUM1QjtJQUVBLElBQUksQ0FBQzJzQixVQUFVLEVBQUU7TUFDZixVQUFBbDBCLE1BQUEsQ0FBVW9CLENBQUMsQ0FBQywyQ0FBMkMsQ0FBQyxPQUFBcEIsTUFBQSxDQUFJakIsSUFBSTtJQUNsRTtJQUVBLFVBQUFpQixNQUFBLENBQVVvQixDQUFDLENBQUMsNkNBQTZDLENBQUMsT0FBQXBCLE1BQUEsQ0FBSWpCLElBQUk7RUFDcEUsQ0FBQztFQUVELE1BQU11MUIsYUFBYSxHQUFHQSxDQUFBLEtBQU07SUFDMUIsSUFBSSxDQUFDSixVQUFVLEVBQUU7TUFDZixPQUFPYSxjQUFjLEdBQ2pCM3pCLENBQUMsQ0FBQyw2Q0FBNkMsQ0FBQyxHQUNoREEsQ0FBQyxDQUFDLHlEQUF5RCxDQUFDO0lBQ2xFO0lBRUEsTUFBTW16QixRQUFRLEdBQUdILGFBQWEsR0FDMUIsOENBQThDLEdBQzlDLGdEQUFnRDtJQUVwRCxvQkFDRXBwQix1REFBQSxDQUFBbVksdURBQUE7TUFBQXRYLFFBQUEsR0FDR3pLLENBQUMsQ0FBQ216QixRQUFRLENBQUMsZUFDWnpwQixzREFBQSxTQUFLLENBQUMsZUFFTkEsc0RBQUEsQ0FBQ2twQiwrQ0FBSTtRQUNIUSxTQUFTLEVBQUMsUUFBUTtRQUNsQi9XLE9BQU8sRUFBQyxPQUFPO1FBQ2Z0UCxPQUFPLEVBQUVoRCxPQUFRO1FBQ2pCOEksRUFBRSxFQUFFO1VBQUU1RCxVQUFVLEVBQUUsR0FBRztVQUFFb0QsTUFBTSxFQUFFO1FBQWMsQ0FBRTtRQUFBNUgsUUFBQSxFQUU5Q3pLLENBQUMsQ0FBQyw4Q0FBOEM7TUFBQyxDQUM5QyxDQUFDO0lBQUEsQ0FDUCxDQUFDO0VBRVAsQ0FBQztFQUVELG9CQUNFNEosdURBQUEsQ0FBQ1gsOENBQUc7SUFBQzBELFNBQVMsRUFBRW5CLHdEQUFlO0lBQUFmLFFBQUEsZ0JBQzdCZixzREFBQSxDQUFDNGIscURBQVU7TUFBQ2pKLE9BQU8sRUFBQyxJQUFJO01BQUMwVixZQUFZO01BQUF0bkIsUUFBQSxFQUNsQ3dvQixpQkFBaUIsQ0FBQztJQUFDLENBQ1YsQ0FBQyxlQUNidnBCLHNEQUFBLENBQUM0YixxREFBVTtNQUNUakosT0FBTyxFQUFDLE9BQU87TUFDZjBWLFlBQVk7TUFDWnBsQixTQUFTLEVBQUVuQiwyREFBa0I7TUFDN0JxSCxFQUFFLEVBQUU7UUFBRW5ELEtBQUssRUFBRTtNQUFpQixDQUFFO01BQUFqRixRQUFBLEVBRS9CeW9CLGFBQWEsQ0FBQztJQUFDLENBQ04sQ0FBQztFQUFBLENBQ1YsQ0FBQztBQUVWLENBQUM7O0FBRUQ7QUFDQVEsY0FBYyxDQUFDem9CLFNBQVMsR0FBRztFQUN6QjZuQixVQUFVLEVBQUUvcEIsMERBQWdCLENBQUM2QixVQUFVO0VBQ3ZDMUgsTUFBTSxFQUFFNkYsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DbW9CLFNBQVMsRUFBRWhxQiwwREFBZ0IsQ0FBQzZCO0FBQzlCLENBQUM7QUFFRCxpRUFBZThvQixjQUFjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RGN0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ1k7QUFDTztBQUNuQjtBQUNSO0FBRWtCO0FBQUE7QUFFN0MsTUFBTUUsWUFBWSxHQUFHdnpCLElBQUEsSUFBMkI7RUFBQSxJQUExQjtJQUFFeUosUUFBUTtJQUFFQztFQUFRLENBQUMsR0FBQTFKLElBQUE7RUFDekMsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUU5QixNQUFNZ0IsTUFBTSxHQUFHZCxpREFBUyxDQUFDO0lBQ3ZCZSxhQUFhLEVBQUU7TUFDYjRwQixrQkFBa0IsRUFBRSxFQUFFO01BQ3RCQyxnQkFBZ0IsRUFBRTtJQUNwQixDQUFDO0lBQ0Q1cEIsZ0JBQWdCLEVBQUVtb0IsdUNBQVUsQ0FBQztNQUMzQndCLGtCQUFrQixFQUFFeEIsdUNBQ1gsQ0FBQ3J5QixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUNwQzNELEtBQUssQ0FBQzJELENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDLENBQ25DbVMsUUFBUSxDQUFDblMsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLENBQUM7TUFDM0M4ekIsZ0JBQWdCLEVBQUV6Qix1Q0FBVSxDQUFDcnlCLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztJQUMxRCxDQUFDLENBQUM7SUFDRjhKLFFBQVEsRUFBRUEsQ0FBQ00sTUFBTSxFQUFBdEosS0FBQSxLQUFvQjtNQUFBLElBQWxCO1FBQUU0eEI7TUFBVSxDQUFDLEdBQUE1eEIsS0FBQTtNQUM5QmdKLFFBQVEsQ0FBQ00sTUFBTSxDQUFDO01BQ2hCc29CLFNBQVMsQ0FBQyxDQUFDO0lBQ2I7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNQyxZQUFZLEdBQUdBLENBQUEsS0FBTTtJQUN6QjNvQixNQUFNLENBQUMwb0IsU0FBUyxDQUFDLENBQUM7SUFDbEIzb0IsT0FBTyxDQUFDLENBQUM7RUFDWCxDQUFDO0VBRUQsb0JBQ0VILHVEQUFBLENBQUFtWSx1REFBQTtJQUFBdFgsUUFBQSxnQkFDRWYsc0RBQUEsQ0FBQzRiLHFEQUFVO01BQUNqSixPQUFPLEVBQUMsSUFBSTtNQUFDMFYsWUFBWTtNQUFBdG5CLFFBQUEsRUFDbEN6SyxDQUFDLENBQUMsbUNBQW1DO0lBQUMsQ0FDN0IsQ0FBQyxlQUNiMEosc0RBQUEsQ0FBQzRiLHFEQUFVO01BQUNqSixPQUFPLEVBQUMsT0FBTztNQUFDMFYsWUFBWTtNQUFDbGYsRUFBRSxFQUFFO1FBQUVuRCxLQUFLLEVBQUU7TUFBaUIsQ0FBRTtNQUFBakYsUUFBQSxFQUN0RXpLLENBQUMsQ0FBQyxrQ0FBa0M7SUFBQyxDQUM1QixDQUFDLGVBQ2I0Six1REFBQTtNQUFNRSxRQUFRLEVBQUVFLE1BQU0sQ0FBQ08sWUFBYTtNQUFDQyxVQUFVO01BQUFDLFFBQUEsZ0JBQzdDZixzREFBQSxDQUFDOEosb0RBQVM7UUFDUnBCLFNBQVM7UUFDVHZRLElBQUksRUFBQyxvQkFBb0I7UUFDekI4UCxLQUFLLEVBQUUzUixDQUFDLENBQUMsZ0RBQWdELENBQUU7UUFDM0RxUyxNQUFNLEVBQUMsUUFBUTtRQUNmOVIsS0FBSyxFQUFFeUosTUFBTSxDQUFDSSxNQUFNLENBQUN5cEIsa0JBQW1CO1FBQ3hDaGpCLFFBQVEsRUFBRTdHLE1BQU0sQ0FBQ2dOLFlBQWE7UUFDOUJDLE1BQU0sRUFBRWpOLE1BQU0sQ0FBQ2tOLFVBQVc7UUFDMUJuRyxLQUFLLEVBQ0gvRyxNQUFNLENBQUNtTixPQUFPLENBQUMwYyxrQkFBa0IsSUFDakN6YyxPQUFPLENBQUNwTixNQUFNLENBQUM3SixNQUFNLENBQUMwekIsa0JBQWtCLENBQ3pDO1FBQ0Q3aUIsVUFBVSxFQUNSaEgsTUFBTSxDQUFDbU4sT0FBTyxDQUFDMGMsa0JBQWtCLElBQ2pDN3BCLE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQzB6QixrQkFDZjtRQUNEMWhCLFFBQVE7TUFBQSxDQUNULENBQUMsZUFDRnpJLHNEQUFBLENBQUM4SixvREFBUztRQUNScEIsU0FBUztRQUNUdlEsSUFBSSxFQUFDLGtCQUFrQjtRQUN2QjhQLEtBQUssRUFBRTNSLENBQUMsQ0FBQyw4Q0FBOEMsQ0FBRTtRQUN6RE8sS0FBSyxFQUFFeUosTUFBTSxDQUFDSSxNQUFNLENBQUMwcEIsZ0JBQWlCO1FBQ3RDemhCLE1BQU0sRUFBQyxRQUFRO1FBQ2YwaEIsU0FBUztRQUNUQyxPQUFPLEVBQUUsQ0FBRTtRQUNYbmpCLFFBQVEsRUFBRTdHLE1BQU0sQ0FBQ2dOLFlBQWE7UUFDOUJDLE1BQU0sRUFBRWpOLE1BQU0sQ0FBQ2tOLFVBQVc7UUFDMUJuRyxLQUFLLEVBQ0gvRyxNQUFNLENBQUNtTixPQUFPLENBQUMyYyxnQkFBZ0IsSUFDL0IxYyxPQUFPLENBQUNwTixNQUFNLENBQUM3SixNQUFNLENBQUMyekIsZ0JBQWdCLENBQ3ZDO1FBQ0Q5aUIsVUFBVSxFQUNSaEgsTUFBTSxDQUFDbU4sT0FBTyxDQUFDMmMsZ0JBQWdCLElBQUk5cEIsTUFBTSxDQUFDN0osTUFBTSxDQUFDMnpCO01BQ2xELENBQ0YsQ0FBQyxlQUNGcHFCLHNEQUFBLENBQUNOLG1EQUFVO1FBQ1R5QixTQUFTLEVBQUU3SyxDQUFDLENBQUMsa0NBQWtDLENBQUU7UUFDakQ4SyxXQUFXLEVBQUU5SyxDQUFDLENBQUMsb0NBQW9DLENBQUU7UUFDckQrSixPQUFPLEVBQUU0b0IsWUFBYTtRQUN0QjVuQixRQUFRLEVBQUVmLE1BQU0sQ0FBQ2dCO01BQWEsQ0FDL0IsQ0FBQztJQUFBLENBQ0UsQ0FBQztFQUFBLENBQ1AsQ0FBQztBQUVQLENBQUM7QUFFRDRvQixZQUFZLENBQUMzb0IsU0FBUyxHQUFHO0VBQ3ZCbkIsUUFBUSxFQUFFZix3REFBYyxDQUFDNkIsVUFBVTtFQUNuQ2IsT0FBTyxFQUFFaEIsd0RBQWMsQ0FBQzZCO0FBQzFCLENBQUM7QUFFRCxpRUFBZWdwQixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3R2E7QUFDTDtBQUNvQjtBQUNSO0FBQ2dCO0FBTXhDO0FBQzhCO0FBQ1o7QUFDRTtBQUNzQztBQUN0QztBQUNTO0FBQ0k7QUFDSDtBQUNPO0FBQ0k7QUFDakI7QUFDaUI7QUFBQTtBQUVoRSxNQUFNL0wsWUFBWSxHQUFHeG5CLElBQUEsSUFBbUQ7RUFBQSxJQUFBc2xCLGFBQUE7RUFBQSxJQUFsRDtJQUFFaGhCLFFBQVE7SUFBRXhDLE9BQU87SUFBRW1vQixPQUFPO0lBQUV6YyxJQUFJO0lBQUU5RDtFQUFRLENBQUMsR0FBQTFKLElBQUE7RUFDakUsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNM0wsUUFBUSxHQUFHbXFCLHdEQUFXLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUMwTSxXQUFXLEVBQUVDLGNBQWMsQ0FBQyxHQUFHL25CLCtDQUFRLENBQUMsSUFBSSxDQUFDO0VBQ3BELE1BQU0sQ0FBQ2dvQixZQUFZLEVBQUVDLGVBQWUsQ0FBQyxHQUFHam9CLCtDQUFRLENBQUMsSUFBSSxDQUFDO0VBQ3RELE1BQU0sQ0FBQ2tvQixxQkFBcUIsRUFBRUMsd0JBQXdCLENBQUMsR0FBR25vQiwrQ0FBUSxDQUFDLEVBQUUsQ0FBQztFQUN0RSxNQUFNO0lBQ0oxTyxNQUFNO0lBQ05DLElBQUksRUFBRTtNQUFFNkU7SUFBWTtFQUN0QixDQUFDLEdBQUc4VSx3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsQ0FBQztFQUM3QyxNQUFNO0lBQUU4QixNQUFNO0lBQUV4RztFQUFlLENBQUMsR0FBR3UzQixnRUFBWSxDQUM3Q3R2QixRQUFRLEVBQ1J4QyxPQUFPLEVBQ1Btb0IsT0FBTyxFQUNQemMsSUFDRixDQUFDO0VBQ0QsTUFBTTJtQixjQUFjLEdBQUcsQ0FBQWh5QixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRW5HLEtBQUssT0FBSzZHLE1BQU0sYUFBTkEsTUFBTSxnQkFBQXlpQixhQUFBLEdBQU56aUIsTUFBTSxDQUFFNEQsS0FBSyxjQUFBNmUsYUFBQSx1QkFBYkEsYUFBQSxDQUFldHBCLEtBQUs7RUFDbEUsTUFBTTtJQUFFczNCO0VBQWUsQ0FBQyxHQUFHL0wsMEVBQWdCLENBQUMxa0IsTUFBTSxDQUFDO0VBRW5ELE1BQU11eEIsUUFBUSxHQUFHLFNBQUFBLENBQUNwNEIsS0FBSyxFQUFtQjtJQUFBLElBQWpCK0csT0FBTyxHQUFBNEQsU0FBQSxDQUFBakksTUFBQSxRQUFBaUksU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxFQUFFO0lBQ25DLElBQUlzakIsT0FBTyxFQUFFO01BQ1hqdEIsUUFBUSxDQUFDOEosd0RBQWMsQ0FBQ2hGLE9BQU8sRUFBRXdDLFFBQVEsRUFBRXRJLEtBQUssRUFBRStHLE9BQU8sQ0FBQyxDQUFDLENBQUNyQixJQUFJLENBQUMsTUFBTTtRQUNyRXd5Qix3QkFBd0IsSUFBQTMxQixNQUFBLENBQUl3MUIsWUFBWSxDQUFFLENBQUM7UUFDM0NDLGVBQWUsQ0FBQyxJQUFJLENBQUM7TUFDdkIsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxNQUFNO01BQ0xoM0IsUUFBUSxDQUFDMEosd0RBQWMsQ0FBQzVFLE9BQU8sRUFBRXdDLFFBQVEsRUFBRXRJLEtBQUssQ0FBQyxDQUFDLENBQUMwRixJQUFJLENBQUMsTUFBTTtRQUM1RHd5Qix3QkFBd0IsSUFBQTMxQixNQUFBLENBQUl3MUIsWUFBWSxDQUFFLENBQUM7UUFDM0NDLGVBQWUsQ0FBQyxJQUFJLENBQUM7TUFDdkIsQ0FBQyxDQUFDO0lBQ0o7RUFDRixDQUFDO0VBRUQsTUFBTUssVUFBVSxHQUFHQSxDQUFDcDRCLFNBQVMsRUFBRUMsUUFBUSxFQUFFRixLQUFLLEtBQUs7SUFDakRnQixRQUFRLENBQ05nSyx3REFBYyxDQUFDbEYsT0FBTyxFQUFFd0MsUUFBUSxFQUFFckksU0FBUyxFQUFFQyxRQUFRLEVBQUVGLEtBQUssQ0FDOUQsQ0FBQyxDQUFDMEYsSUFBSSxDQUFDLE1BQU07TUFDWHd5Qix3QkFBd0IsSUFBQTMxQixNQUFBLENBQUl3MUIsWUFBWSxDQUFFLENBQUM7TUFDM0NDLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVELE1BQU1NLGFBQWEsR0FBR0EsQ0FBQSxLQUFNO0lBQzFCSix3QkFBd0IsQ0FBQyxFQUFFLENBQUM7SUFDNUJ4cUIsT0FBTyxDQUFDLENBQUM7RUFDWCxDQUFDO0VBRUQsTUFBTTZxQixrQkFBa0IsR0FBR0EsQ0FBQSxLQUFNO0lBQy9CVCxjQUFjLENBQUMsSUFBSSxDQUFDO0lBQ3BCSSx3QkFBd0IsQ0FBQyxFQUFFLENBQUM7SUFDNUI3bkIsVUFBVSxDQUFDM0MsT0FBTyxFQUFFd0IsOERBQWUsQ0FBQztFQUN0QyxDQUFDO0VBRUQsTUFBTXNwQixRQUFRLEdBQUluakIsR0FBRyxJQUFLO0lBQ3hCLE1BQU1wTCxPQUFPLEdBQUdvUCw2RkFBcUIsQ0FBQ2hFLEdBQUcsQ0FBQztJQUUxQyxPQUFPclUsUUFBUSxDQUFDa0ssNERBQWtCLENBQUNyRSxNQUFNLEVBQUVvRCxPQUFPLENBQUMsQ0FBQyxDQUNqRHZFLElBQUksQ0FBQyxNQUFNO01BQ1ZveUIsY0FBYyxDQUFDO1FBQ2J4ekIsS0FBSyxFQUFFWCxDQUFDLENBQUMsOEJBQThCLENBQUM7UUFDeEM4MEIsV0FBVyxFQUFFOTBCLENBQUMsQ0FBQywwQ0FBMEM7TUFDM0QsQ0FBQyxDQUFDO01BQ0YsT0FBT3lDLE9BQU8sQ0FBQ3N5QixPQUFPLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FDRC95QixLQUFLLENBQUV2QyxHQUFHLElBQUs7TUFDZDAwQixjQUFjLENBQUM7UUFDYnh6QixLQUFLLEVBQUVYLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQztRQUN0QzgwQixXQUFXLEVBQUVyMUIsR0FBRyxDQUFDbVMsUUFBUSxDQUFDO01BQzVCLENBQUMsQ0FBQztNQUNGLE9BQU9uUCxPQUFPLENBQUNDLE1BQU0sQ0FBQyxDQUFDO0lBQ3pCLENBQUMsQ0FBQztFQUNOLENBQUM7RUFFRCxNQUFNL0IsS0FBSyxHQUFHMnBCLE9BQU8sR0FDakJ0cUIsQ0FBQyxDQUFDLHFDQUFxQyxDQUFDLEdBQ3hDQSxDQUFDLENBQUMsbUNBQW1DLENBQUM7RUFDMUMsTUFBTWcxQixNQUFNLEdBQUcxSyxPQUFPLEdBQUdvSiwwRUFBYyxHQUFHYix3RUFBWTtFQUV0RCxvQkFDRWpwQix3REFBQSxDQUFBbVksd0RBQUE7SUFBQXRYLFFBQUEsZ0JBQ0VmLHVEQUFBLENBQUM0akIsb0RBQVc7TUFDVnhyQixFQUFFLEVBQUMsZ0JBQWdCO01BQ25CbkIsS0FBSyxFQUFFQSxLQUFNO01BQ2JrTixJQUFJLEVBQUVBLElBQUs7TUFDWDlELE9BQU8sRUFBRTRxQixhQUFjO01BQUFscUIsUUFBQSxFQUV0QnZILE1BQU0sSUFBSXhHLGNBQWMsaUJBQ3ZCa04sd0RBQUEsQ0FBQ1gsOENBQUc7UUFBQzBELFNBQVMsRUFBRW5CLHlFQUErQjtRQUFBZixRQUFBLGdCQUM3Q2YsdURBQUEsQ0FBQ3NyQixNQUFNO1VBQ0xsQyxVQUFVLEVBQUV3QixxQkFBc0I7VUFDbENYLGNBQWMsRUFBRUEsY0FBZTtVQUMvQnp3QixNQUFNLEVBQUVBLE1BQU87VUFDZjZ2QixTQUFTLEVBQUV2d0IsV0FBVyxDQUFDbkcsS0FBTTtVQUM3QjBOLE9BQU8sRUFBRTRxQjtRQUFjLENBQ3hCLENBQUMsRUFFREwscUJBQXFCLGdCQUNwQjVxQix1REFBQSxDQUFDRyxxREFBWTtVQUNYM0csTUFBTSxFQUFFQSxNQUFPO1VBQ2Z4RixNQUFNLEVBQUVBLE1BQU87VUFDZmhCLGNBQWMsRUFBRUEsY0FBZTtVQUMvQm9OLFFBQVEsRUFBRStxQixRQUFTO1VBQ25COXFCLE9BQU8sRUFBRTRxQjtRQUFjLENBQ3hCLENBQUMsZ0JBRUYvcUIsd0RBQUEsQ0FBQ1gsOENBQUc7VUFBQzBELFNBQVMsRUFBRW5CLHNFQUE0QjtVQUFBZixRQUFBLGdCQUMxQ2YsdURBQUEsQ0FBQ2lRLGlEQUFNO1lBQ0wwQyxPQUFPLEVBQUMsV0FBVztZQUNuQjNNLEtBQUssRUFBQyxTQUFTO1lBQ2YwUSxJQUFJLEVBQUMsT0FBTztZQUNaclYsUUFBUSxFQUFFeXBCLGNBQWU7WUFDekJ6bkIsT0FBTyxFQUFFQSxDQUFBLEtBQU0wbkIsUUFBUSxDQUFDanlCLFdBQVcsQ0FBQ25HLEtBQUssRUFBRSxFQUFFLENBQUU7WUFBQW9PLFFBQUEsRUFFOUN6SyxDQUFDLENBQUMsNEJBQTRCO1VBQUMsQ0FDMUIsQ0FBQyxlQUNUMEosdURBQUEsQ0FBQ21RLGtEQUFPO1lBQUN3QyxPQUFPLEVBQUMsUUFBUTtZQUFDeEosRUFBRSxFQUFFO2NBQUVzaUIsRUFBRSxFQUFFLENBQUM7Y0FBRTdRLEVBQUUsRUFBRTtZQUFFLENBQUU7WUFBQTdaLFFBQUEsRUFBQztVQUVoRCxDQUFTLENBQUMsZUFDVmIsd0RBQUEsQ0FBQ1gsOENBQUc7WUFBQXdCLFFBQUEsZ0JBQ0ZmLHVEQUFBLENBQUNnTyxtREFBUTtjQUFDaUIsRUFBRSxFQUFFeWIsWUFBWSxLQUFLLE9BQVE7Y0FBQ3hiLE9BQU8sRUFBRSxHQUFJO2NBQUFuTyxRQUFBLGVBQ25EZix1REFBQSxDQUFDa3FCLGdFQUFZO2dCQUNYMXdCLE1BQU0sRUFBRUEsTUFBTztnQkFDZnhGLE1BQU0sRUFBRUEsTUFBTztnQkFDZm9NLFFBQVEsRUFBRzRILEdBQUcsSUFDWitpQixRQUFRLENBQUMvaUIsR0FBRyxDQUFDbWlCLGtCQUFrQixFQUFFbmlCLEdBQUcsQ0FBQ29pQixnQkFBZ0IsQ0FDdEQ7Z0JBQ0QvcEIsT0FBTyxFQUFFQSxDQUFBLEtBQU1zcUIsZUFBZSxDQUFDLElBQUk7Y0FBRSxDQUN0QztZQUFDLENBQ00sQ0FBQyxFQUNWRCxZQUFZLEtBQUssT0FBTyxpQkFDdkIxcUIsdURBQUEsQ0FBQ2lRLGlEQUFNO2NBQ0wwQyxPQUFPLEVBQUMsV0FBVztjQUNuQjNNLEtBQUssRUFBQyxTQUFTO2NBQ2YwUSxJQUFJLEVBQUMsT0FBTztjQUNaclQsT0FBTyxFQUFFQSxDQUFBLEtBQU1zbkIsZUFBZSxDQUFDLE9BQU8sQ0FBRTtjQUFBNXBCLFFBQUEsRUFFdkN6SyxDQUFDLENBQUMsK0JBQStCO1lBQUMsQ0FDN0IsQ0FDVDtVQUFBLENBQ0UsQ0FBQyxFQUNMMnpCLGNBQWMsaUJBQ2IvcEIsd0RBQUEsQ0FBQW1ZLHdEQUFBO1lBQUF0WCxRQUFBLGdCQUNFZix1REFBQSxDQUFDbVEsa0RBQU87Y0FBQ3dDLE9BQU8sRUFBQyxRQUFRO2NBQUN4SixFQUFFLEVBQUU7Z0JBQUVzaUIsRUFBRSxFQUFFLENBQUM7Z0JBQUU3USxFQUFFLEVBQUU7Y0FBRSxDQUFFO2NBQUE3WixRQUFBLEVBQUM7WUFFaEQsQ0FBUyxDQUFDLGVBQ1ZmLHVEQUFBLENBQUNnTyxtREFBUTtjQUFDaUIsRUFBRSxFQUFFeWIsWUFBWSxLQUFLLFFBQVM7Y0FBQ3hiLE9BQU8sRUFBRSxHQUFJO2NBQUFuTyxRQUFBLGVBQ3BEZix1REFBQSxDQUFDNG9CLGlFQUFZO2dCQUNYcHZCLE1BQU0sRUFBRUEsTUFBTztnQkFDZnhGLE1BQU0sRUFBRUEsTUFBTztnQkFDZm9NLFFBQVEsRUFBRzRILEdBQUcsSUFDWmdqQixVQUFVLENBQ1JoakIsR0FBRyxDQUFDNmdCLG1CQUFtQixFQUN2QjdnQixHQUFHLENBQUM4Z0Isa0JBQWtCLEVBQ3RCOWdCLEdBQUcsQ0FBQytnQixjQUNOLENBQ0Q7Z0JBQ0Qxb0IsT0FBTyxFQUFFQSxDQUFBLEtBQU1zcUIsZUFBZSxDQUFDLElBQUk7Y0FBRSxDQUN0QztZQUFDLENBQ00sQ0FBQyxFQUNWRCxZQUFZLEtBQUssUUFBUSxpQkFDeEIxcUIsdURBQUEsQ0FBQ2lRLGlEQUFNO2NBQ0wwQyxPQUFPLEVBQUMsV0FBVztjQUNuQjNNLEtBQUssRUFBQyxTQUFTO2NBQ2YwUSxJQUFJLEVBQUMsT0FBTztjQUNaclQsT0FBTyxFQUFFQSxDQUFBLEtBQU1zbkIsZUFBZSxDQUFDLFFBQVEsQ0FBRTtjQUFBNXBCLFFBQUEsRUFFeEN6SyxDQUFDLENBQUMsNkJBQTZCO1lBQUMsQ0FDM0IsQ0FDVDtVQUFBLENBQ0QsQ0FDSDtRQUFBLENBQ0UsQ0FDTjtNQUFBLENBQ0U7SUFDTixDQUNVLENBQUMsZUFDZDBKLHVEQUFBLENBQUNrRSxzREFBWTtNQUNYQyxJQUFJLEVBQUUsQ0FBQyxDQUFDcW1CLFdBQVk7TUFDcEJucUIsT0FBTyxFQUFFNnFCLGtCQUFtQjtNQUM1QmowQixLQUFLLEVBQUV1ekIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUV2ekIsS0FBTTtNQUMxQm0wQixXQUFXLEVBQUVaLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFWTtJQUFZLENBQ3ZDLENBQUM7RUFBQSxDQUNGLENBQUM7QUFFUCxDQUFDO0FBRURqTixZQUFZLENBQUM1YyxTQUFTLEdBQUc7RUFDdkJ0RyxRQUFRLEVBQUVvRSwwREFBZ0I7RUFDMUI1RyxPQUFPLEVBQUU0RywwREFBZ0I7RUFDekJ1aEIsT0FBTyxFQUFFdmhCLDBEQUFnQjtFQUN6QjhFLElBQUksRUFBRTlFLHdEQUFjO0VBQ3BCZ0IsT0FBTyxFQUFFaEIsd0RBQWNxQztBQUN6QixDQUFDO0FBRUQsaUVBQWV5YyxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxTjNCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFMEI7QUFDUztBQUNZO0FBQ3FCO0FBQzZCO0FBQzFDO0FBQUE7QUFFdkQsTUFBTXlOLFlBQVksR0FBR2oxQixJQUFBLElBQXNDO0VBQUEsSUFBckM7SUFBRTJKLE1BQU07SUFBRXVyQixRQUFRO0lBQUUzcUI7RUFBVyxDQUFDLEdBQUF2SyxJQUFBO0VBQ3BELE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDd3NCLFVBQVUsRUFBRUMsYUFBYSxDQUFDLEdBQUczc0IscURBQWMsQ0FBQyxFQUFFLENBQUM7RUFDdEQsTUFBTSxDQUFDNHNCLE9BQU8sRUFBRUMsVUFBVSxDQUFDLEdBQUc3c0IscURBQWMsQ0FBQyxFQUFFLENBQUM7RUFDaEQsTUFBTTtJQUNKM0ksTUFBTTtJQUNOaUssTUFBTTtJQUNOK00sT0FBTztJQUNQeWUsZUFBZTtJQUNmOWtCLGFBQWE7SUFDYjdHO0VBQ0YsQ0FBQyxHQUFHRCxNQUFNO0VBQ1YsTUFBTW5JLElBQUksR0FBR3pGLDREQUFvQixDQUFDSSxPQUFPO0VBQ3pDLE1BQU0rRCxLQUFLLEdBQUc2SixNQUFNLENBQUN2SSxJQUFJLENBQUM7RUFDMUIsTUFBTWtKLFFBQVEsR0FBRyxDQUFDLENBQUNkLGFBQWEsQ0FBQ3BJLElBQUksQ0FBQztFQUN0QyxNQUFNa1AsS0FBSyxHQUFHb0csT0FBTyxDQUFDdFYsSUFBSSxDQUFDLElBQUl1VixPQUFPLENBQUNqWCxNQUFNLENBQUMwQixJQUFJLENBQUMsQ0FBQztFQUNwRCxNQUFNbVAsVUFBVSxHQUFHbUcsT0FBTyxDQUFDdFYsSUFBSSxDQUFDLElBQUkxQixNQUFNLENBQUMwQixJQUFJLENBQUM7RUFFaERpSCxzREFBZSxDQUFDLE1BQU07SUFDcEIsSUFBSTBzQixVQUFVLEtBQUssRUFBRSxFQUFFO01BQ3JCRyxVQUFVLENBQUNwMUIsS0FBSyxHQUFHLENBQUNBLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztNQUNoQyxPQUFPMEcsU0FBUztJQUNsQjtJQUVBb3VCLCtHQUEwQixDQUFDRSxRQUFRLEVBQUVDLFVBQVUsRUFBR0ssT0FBTyxJQUFLO01BQzVELElBQUlDLFVBQVUsR0FBRyxFQUFFO01BRW5CLElBQUl2MUIsS0FBSyxFQUFFO1FBQ1R1MUIsVUFBVSxHQUFHLENBQUN2MUIsS0FBSyxDQUFDO01BQ3RCO01BRUEsSUFBSXMxQixPQUFPLEVBQUU7UUFDWEMsVUFBVSxHQUFHLENBQUMsR0FBR0EsVUFBVSxFQUFFLEdBQUdELE9BQU8sQ0FBQztNQUMxQztNQUVBRixVQUFVLENBQUNHLFVBQVUsQ0FBQztJQUN4QixDQUFDLENBQUM7SUFDRixPQUFPN3VCLFNBQVM7RUFDbEIsQ0FBQyxFQUFFLENBQUMxRyxLQUFLLEVBQUVpMUIsVUFBVSxDQUFDLENBQUM7RUFFdkIsb0JBQ0U5ckIsc0RBQUEsQ0FBQzByQix1REFBWTtJQUNYdnpCLElBQUksRUFBRUEsSUFBSztJQUNYNnpCLE9BQU8sRUFBRUEsT0FBUTtJQUNqQkssWUFBWTtJQUNaQyxRQUFRO0lBQ1JDLGtCQUFrQjtJQUNsQkMscUJBQXFCO0lBQ3JCbnJCLFFBQVEsRUFBRUEsUUFBUztJQUNuQnhLLEtBQUssRUFBRUEsS0FBTTtJQUNiMFcsTUFBTSxFQUFFQSxDQUFBLEtBQU0yZSxlQUFlLENBQUMvekIsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUU7SUFDaERzMEIsY0FBYyxFQUFHQyxNQUFNLElBQUs7TUFDMUI7TUFDQSxJQUFJLE9BQU9BLE1BQU0sS0FBSyxRQUFRLEVBQUU7UUFDOUIsT0FBT0EsTUFBTTtNQUNmO01BQ0E7TUFDQSxJQUFJQSxNQUFNLENBQUNaLFVBQVUsRUFBRTtRQUNyQixPQUFPWSxNQUFNLENBQUNaLFVBQVU7TUFDMUI7TUFDQTtNQUNBLE9BQU9ZLE1BQU0sQ0FBQ3YwQixJQUFJO0lBQ3BCLENBQUU7SUFDRmdQLFFBQVEsRUFBRUEsQ0FBQ2lLLEtBQUssRUFBRTdJLFFBQVEsS0FBSztNQUM3QixNQUFNb2tCLFFBQVEsR0FBRyxDQUFBcGtCLFFBQVEsYUFBUkEsUUFBUSx1QkFBUkEsUUFBUSxDQUFFdWpCLFVBQVUsS0FBSXZqQixRQUFRO01BQ2pEMGpCLFVBQVUsQ0FBQ1UsUUFBUSxHQUFHLENBQUNBLFFBQVEsRUFBRSxHQUFHWCxPQUFPLENBQUMsR0FBR0EsT0FBTyxDQUFDO01BQ3ZENWtCLGFBQWEsQ0FBQ2pQLElBQUksRUFBRXcwQixRQUFRLENBQUM7SUFDL0IsQ0FBRTtJQUNGQyxhQUFhLEVBQUVBLENBQUN4YixLQUFLLEVBQUV5YixhQUFhLEtBQUs7TUFDdkNkLGFBQWEsQ0FBQ2MsYUFBYSxDQUFDO0lBQzlCLENBQUU7SUFDRkMsYUFBYSxFQUFFQSxDQUFDZCxPQUFPLEVBQUVwMEIsTUFBTSxLQUFLO01BQ2xDLE1BQU07UUFBRWswQjtNQUFXLENBQUMsR0FBR2wwQixNQUFNO01BQzdCLE1BQU1tMUIsUUFBUSxHQUFHLENBQUMsR0FBR2YsT0FBTyxDQUFDO01BQzdCO01BQ0EsTUFBTWdCLFVBQVUsR0FBR2hCLE9BQU8sQ0FBQ3RnQixJQUFJLENBQzVCZ2hCLE1BQU0sSUFBS1osVUFBVSxLQUFLWSxNQUFNLENBQUN6MUIsS0FDcEMsQ0FBQztNQUNELElBQUk2MEIsVUFBVSxLQUFLLEVBQUUsSUFBSSxDQUFDa0IsVUFBVSxFQUFFO1FBQ3BDRCxRQUFRLENBQUM5M0IsSUFBSSxDQUFDO1VBQ1o2MkIsVUFBVTtVQUNWM3pCLElBQUksY0FBQWpELE1BQUEsQ0FBYTQyQixVQUFVO1FBQzdCLENBQUMsQ0FBQztNQUNKO01BRUEsT0FBT2lCLFFBQVE7SUFDakIsQ0FBRTtJQUNGRSxXQUFXLEVBQUdyMUIsTUFBTSxpQkFDbEJvSSxzREFBQSxDQUFDOEosb0RBQVNBO0lBQ1IsNkRBQUF2TyxhQUFBLENBQUFBLGFBQUEsS0FDSTNELE1BQU07TUFDVnFRLEtBQUssRUFBRTNSLENBQUMsQ0FBQyxnQ0FBZ0MsQ0FBRTtNQUMzQ29TLFNBQVM7TUFDVEQsUUFBUSxFQUFFdkgsVUFBVztNQUNyQm9HLFVBQVUsRUFBRUEsVUFBVztNQUN2QkQsS0FBSyxFQUFFQSxLQUFNO01BQ2JzQixNQUFNLEVBQUM7SUFBUSxFQUNoQixDQUNEO0lBQ0Z1a0IsWUFBWSxFQUFFQSxDQUFDL0wsS0FBSyxFQUFFdUwsTUFBTSxLQUFLO01BQy9CLE1BQU07VUFBRTkxQjtRQUFvQixDQUFDLEdBQUd1cUIsS0FBSztRQUFyQmdNLFdBQVcsR0FBQTNsQixxRkFBQSxDQUFLMlosS0FBSyxFQUFBMVosU0FBQTtNQUNyQztRQUFBO1FBQ0U7UUFDQXpILHNEQUFBLE9BQUF6RSxhQUFBLENBQUFBLGFBQUEsS0FBa0I0eEIsV0FBVztVQUFBcHNCLFFBQUEsZUFDM0JmLHNEQUFBLENBQUM0YixxREFBVTtZQUNUakosT0FBTyxFQUFDLE9BQU87WUFDZnhKLEVBQUUsRUFBRTtjQUFFOUQsUUFBUSxFQUFFLEtBQUs7Y0FBRVcsS0FBSyxFQUFFO1lBQWlCLENBQUU7WUFBQWpGLFFBQUEsRUFFaEQyckIsTUFBTSxDQUFDdjBCO1VBQUksQ0FDRjtRQUFDLElBTk52QixHQU9MO01BQUM7SUFFVDtFQUFFLENBQ0gsQ0FBQztBQUVOLENBQUM7QUFFRGcxQixZQUFZLENBQUNycUIsU0FBUyxHQUFHO0VBQ3ZCakIsTUFBTSxFQUFFakIsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DMnFCLFFBQVEsRUFBRXhzQiwwREFBZ0IsQ0FBQzZCO0FBQzdCLENBQUM7QUFFRCxpRUFBZTBxQixZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUlEO0FBQ1M7QUFPWjtBQUNtRDtBQUMzQjtBQUNRO0FBRVI7QUFBQTtBQUUvQyxNQUFNaHNCLHNCQUFzQixHQUFHakosSUFBQSxJQUt6QjtFQUFBLElBTDBCO0lBQzlCc0ssVUFBVTtJQUNWWCxNQUFNO0lBQ040RyxVQUFVLEdBQUcsS0FBSztJQUNsQmhHLFVBQVUsR0FBRztFQUNmLENBQUMsR0FBQXZLLElBQUE7RUFDQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1uSCxJQUFJLEdBQUd6Riw0REFBb0IsQ0FBQ0ssa0JBQWtCO0VBQ3BELE1BQU07SUFBRTBELE1BQU07SUFBRWlLLE1BQU07SUFBRStNLE9BQU87SUFBRUgsWUFBWTtJQUFFRTtFQUFXLENBQUMsR0FBR2xOLE1BQU07RUFDcEUsTUFBTXpKLEtBQUssR0FBRzZKLE1BQU0sQ0FBQ3ZJLElBQUksQ0FBQztFQUMxQixNQUFNa1AsS0FBSyxHQUFHb0csT0FBTyxDQUFDdFYsSUFBSSxDQUFDLElBQUl1VixPQUFPLENBQUNqWCxNQUFNLENBQUMwQixJQUFJLENBQUMsQ0FBQztFQUNwRCxNQUFNbVAsVUFBVSxHQUFHbUcsT0FBTyxDQUFDdFYsSUFBSSxDQUFDLElBQUkxQixNQUFNLENBQUMwQixJQUFJLENBQUM7RUFFaEQsb0JBQ0UrSCx1REFBQSxDQUFDWCw4Q0FBRztJQUFDMEQsU0FBUyxFQUFFbkIsd0RBQWU7SUFBQWYsUUFBQSxnQkFDN0JmLHNEQUFBLENBQUNpSiw0RkFBTztNQUFBbEksUUFBQSxFQUFFRTtJQUFVLENBQVUsQ0FBQyxlQUMvQmYsdURBQUEsQ0FBQ3FHLHNEQUFXO01BQUNtQyxTQUFTO01BQUNyQixLQUFLLEVBQUVBLEtBQU07TUFBQXRHLFFBQUEsZ0JBQ2xDZixzREFBQSxDQUFDd0csMkRBQWdCO1FBQ2ZxQyxPQUFPLGVBQ0w3SSxzREFBQSxDQUFDc0csbURBQVE7VUFDUG5PLElBQUksRUFBRUEsSUFBSztVQUNYaVEsT0FBTyxFQUFFLENBQUMsQ0FBQ3ZSLEtBQU07VUFDakJvUixLQUFLLEVBQUUzUixDQUFDLENBQUMscURBQXFELENBQUU7VUFDaEU2USxRQUFRLEVBQUVtRyxZQUFhO1VBQ3ZCQyxNQUFNLEVBQUVDO1FBQVcsQ0FDcEIsQ0FDRjtRQUNEdkYsS0FBSyxFQUFFM1IsQ0FBQyxDQUFDLHFEQUFxRCxDQUFFO1FBQ2hFK0ssUUFBUSxFQUFFNkYsVUFBVztRQUNyQnVCLFFBQVEsRUFBRXZIO01BQVcsQ0FDdEIsQ0FBQyxFQUNEbUcsS0FBSyxpQkFBSXJILHNEQUFBLENBQUMwRyx5REFBYztRQUFBM0YsUUFBQSxFQUFFdUcsVUFBVSxhQUFWQSxVQUFVLGNBQVZBLFVBQVUsR0FBSTtNQUFHLENBQWlCLENBQUM7SUFBQSxDQUNuRCxDQUFDO0VBQUEsQ0FDWCxDQUFDO0FBRVYsQ0FBQztBQUVEMUgsc0JBQXNCLENBQUMyQixTQUFTLEdBQUc7RUFDakNOLFVBQVUsRUFBRTVCLDBEQUFnQixDQUFDNkIsVUFBVTtFQUN2Q1osTUFBTSxFQUFFakIsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DZ0csVUFBVSxFQUFFN0gsd0RBQWM7RUFDMUI2QixVQUFVLEVBQUU3Qix3REFBY2tFO0FBQzVCLENBQUM7QUFFRCxpRUFBZTNELHNCQUFzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNEckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ1k7QUFDQztBQUNiO0FBQzhCO0FBS1Q7QUFFSDtBQUNpQztBQUN6QztBQUNxQjtBQUkzQjtBQUVZO0FBQUE7QUFFbkQsTUFBTXl0QixVQUFVLEdBQUcxMkIsSUFBQSxJQU9iO0VBQUEsSUFBQXNsQixhQUFBLEVBQUFDLGNBQUE7RUFBQSxJQVBjO0lBQ2xCMWlCLE1BQU07SUFDTnhHLGNBQWM7SUFDZGdCLE1BQU07SUFDTnM1QixPQUFPO0lBQ1BsdEIsUUFBUTtJQUNSQztFQUNGLENBQUMsR0FBQTFKLElBQUE7RUFDQyxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU0xQyxPQUFPLEdBQUdwRCxNQUFNLGFBQU5BLE1BQU0sZ0JBQUF5aUIsYUFBQSxHQUFOemlCLE1BQU0sQ0FBRTRELEtBQUssY0FBQTZlLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZS9QLGVBQWUsQ0FBQ3FoQixNQUFNLENBQUMsQ0FBQ3YzQixHQUFHLEVBQUU4VixHQUFHLEtBQUs7SUFDbEUsTUFBTXBFLFlBQVksR0FBR2IsOEVBQU0sQ0FBQ2lGLEdBQUcsQ0FBQzlFLFFBQVEsQ0FBQzdPLElBQUksRUFBRTJULEdBQUcsQ0FBQzlFLFFBQVEsQ0FBQzVPLEVBQUUsQ0FBQztJQUMvRHBDLEdBQUcsQ0FBQzBSLFlBQVksQ0FBQyxHQUFHbUUsb0ZBQVksQ0FBQ0MsR0FBRyxDQUFDalYsS0FBSyxFQUFFaVYsR0FBRyxDQUFDOUUsUUFBUSxDQUFDNEUsSUFBSSxDQUFDO0lBQzlELE9BQU81VixHQUFHO0VBQ1osQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBRU4sTUFBTXNLLE1BQU0sR0FBR2QsaURBQVMsQ0FBQztJQUN2QmUsYUFBYSxFQUFFVCxpRUFBWSxDQUN6QnRHLE1BQU0sQ0FBQzRELEtBQUssRUFDWnBLLGNBQWMsRUFDZDRKLE9BQU8sRUFDUCxJQUFJLEVBQ0osSUFDRixDQUFDO0lBQ0Q0RCxnQkFBZ0IsRUFBRVgsMEVBQXFCLENBQ3JDN00sY0FBYyxFQUNkLElBQUksRUFDSmdCLE1BQU0sQ0FBQ3lNLGlDQUNULENBQUM7SUFDREwsUUFBUSxFQUFHTSxNQUFNLElBQUs7TUFDcEIsTUFBTUMsZUFBZSxHQUFHYixpRUFBWSxDQUNsQ3RHLE1BQU0sQ0FBQzRELEtBQUssRUFDWnBLLGNBQWMsRUFDZDBOLE1BQU0sRUFDTixJQUFJLEVBQ0osSUFBSSxFQUNKLElBQ0YsQ0FBQztNQUVELE9BQU9OLFFBQVEsQ0FBQ08sZUFBZSxDQUFDO0lBQ2xDLENBQUM7SUFDREMsa0JBQWtCLEVBQUU7RUFDdEIsQ0FBQyxDQUFDOztFQUVGO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0VBRUE7RUFDQWpCLG9FQUFnQixDQUFDVyxNQUFNLEVBQUUsZUFBZSxDQUFDO0VBRXpDLG9CQUNFSix3REFBQTtJQUFNRSxRQUFRLEVBQUVFLE1BQU0sQ0FBQ08sWUFBYTtJQUFDQyxVQUFVO0lBQUFDLFFBQUEsZ0JBQzdDZix1REFBQSxDQUFDb3RCLDBEQUFpQjtNQUNoQjlzQixNQUFNLEVBQUVBLE1BQU87TUFDZmdjLFdBQVcsRUFBRSxDQUFDLEdBQUFKLGNBQUEsR0FBQzFpQixNQUFNLENBQUM0RCxLQUFLLGNBQUE4ZSxjQUFBLGVBQVpBLGNBQUEsQ0FBYzdmLFVBQVUsQ0FBQztNQUN4Q3d2QixRQUFRLEVBQUU3M0IsTUFBTSxDQUFDb0UsRUFBRztNQUNwQmlKLFFBQVEsRUFBRSxDQUFDaXNCO0lBQVEsQ0FDcEIsQ0FBQyxFQUVELENBQUF0NkIsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVxQyxNQUFNLElBQUcsQ0FBQyxpQkFDekI2Syx3REFBQSxDQUFDWCw4Q0FBRztNQUFBd0IsUUFBQSxnQkFDRmYsdURBQUEsQ0FBQzRiLHFEQUFVO1FBQUNqSixPQUFPLEVBQUMsT0FBTztRQUFDMVAsU0FBUyxFQUFFbkIsbUVBQXlCO1FBQUFmLFFBQUEsRUFDN0R6SyxDQUFDLENBQUMsaUNBQWlDO01BQUMsQ0FDM0IsQ0FBQyxlQUNiMEosdURBQUEsQ0FBQ1AsNkRBQW9CO1FBQ25Cek0sY0FBYyxFQUFFQSxjQUFlO1FBQy9COFosU0FBUyxFQUFFd2dCLE9BQVE7UUFDbkJodEIsTUFBTSxFQUFFQTtNQUFPLENBQ2hCLENBQUM7SUFBQSxDQUNDLENBQ04sRUFFQXRNLE1BQU0sQ0FBQ2dOLCtCQUErQixpQkFDckNoQix1REFBQSxDQUFDSixzRkFBc0I7TUFDckJVLE1BQU0sRUFBRUEsTUFBTztNQUNmVyxVQUFVLEVBQUVqTixNQUFNLENBQUNnTiwrQkFBZ0M7TUFDbkRFLFVBQVUsRUFBRWxOLE1BQU0sQ0FBQ3lNLGlDQUFrQztNQUNyRHlHLFVBQVUsRUFBRSxDQUFDb21CO0lBQVEsQ0FDdEIsQ0FDRixlQUNEdHRCLHVEQUFBLENBQUNOLG1EQUFVO01BQ1R5QixTQUFTLEVBQUU3SyxDQUFDLENBQUMsb0JBQW9CLENBQUU7TUFDbkM4SyxXQUFXLEVBQUU5SyxDQUFDLENBQUMsc0JBQXNCLENBQUU7TUFDdkMrSixPQUFPLEVBQUVBLE9BQVE7TUFDakJnQixRQUFRLEVBQUVmLE1BQU0sQ0FBQ2dCO0lBQWEsQ0FDL0IsQ0FBQztFQUFBLENBQ0UsQ0FBQztBQUVYLENBQUM7QUFFRCtyQixVQUFVLENBQUM5ckIsU0FBUyxHQUFHO0VBQ3JCL0gsTUFBTSxFQUFFNkYsMERBQWdCO0VBQ3hCck0sY0FBYyxFQUFFcU0seURBQWUsQ0FBQzZCLFVBQVU7RUFDMUNsTixNQUFNLEVBQUVxTCwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDbkNvc0IsT0FBTyxFQUFFanVCLHdEQUFjO0VBQ3ZCZSxRQUFRLEVBQUVmLHdEQUFjLENBQUM2QixVQUFVO0VBQ25DYixPQUFPLEVBQUVoQix3REFBYyxDQUFDNkI7QUFDMUIsQ0FBQztBQUVELGlFQUFlbXNCLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzVJekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUUwQjtBQUNTO0FBQ3dCO0FBQ1o7QUFFQTtBQUNRO0FBQ1o7QUFBQTtBQUUzQyxNQUFNRCxpQkFBaUIsR0FBR3oyQixJQUFBLElBQWlEO0VBQUEsSUFBaEQ7SUFBRTJKLE1BQU07SUFBRXVyQixRQUFRO0lBQUV4cUIsUUFBUTtJQUFFaWI7RUFBWSxDQUFDLEdBQUEzbEIsSUFBQTtFQUNwRSxNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU07SUFBRTdJLE1BQU07SUFBRWlLLE1BQU07SUFBRStNLE9BQU87SUFBRUgsWUFBWTtJQUFFRSxVQUFVO0lBQUVqTjtFQUFjLENBQUMsR0FDeEVELE1BQU07RUFFUixvQkFDRUosdURBQUEsQ0FBQ1gsOENBQUc7SUFBQzBELFNBQVMsRUFBRW5CLHdEQUFlO0lBQUFmLFFBQUEsZ0JBQzdCZixzREFBQSxDQUFDOEosb0RBQVM7TUFDUnBCLFNBQVM7TUFDVHZRLElBQUksRUFBRXpGLDREQUFvQixDQUFDQyxLQUFNO01BQ2pDc1YsS0FBSyxFQUFFM1IsQ0FBQyxDQUFDLHFCQUFxQixDQUFFO01BQ2hDK0ssUUFBUTtNQUNSeEssS0FBSyxFQUFFNkosTUFBTSxDQUFDaE8sNERBQW9CLENBQUNDLEtBQUssQ0FBRTtNQUMxQ2dXLE1BQU0sRUFBQztJQUFRLENBQ2hCLENBQUMsRUFDRDJULFdBQVcsaUJBQ1Z0YyxzREFBQSxDQUFDNGIscURBQVU7TUFBQ2pKLE9BQU8sRUFBQyxPQUFPO01BQUN4SixFQUFFLEVBQUU7UUFBRTVELFVBQVUsRUFBRSxHQUFHO1FBQUVvRCxNQUFNLEVBQUU7TUFBUyxDQUFFO01BQUE1SCxRQUFBLEVBQ25FekssQ0FBQyxDQUFDLDBCQUEwQjtJQUFDLENBQ3BCLENBQ2IsRUFDQSxDQUFDNUQsNERBQW9CLENBQUNFLFNBQVMsRUFBRUYsNERBQW9CLENBQUNHLFFBQVEsQ0FBQyxDQUFDdUgsR0FBRyxDQUNqRWpDLElBQUksaUJBQ0g2SCxzREFBQSxDQUFDOEosb0RBQVM7TUFDUnBCLFNBQVM7TUFFVHZRLElBQUksRUFBRUEsSUFBSztNQUNYOFAsS0FBSyxFQUFFM1IsQ0FBQyxrQkFBQXBCLE1BQUEsQ0FBa0JpRCxJQUFJLENBQUUsQ0FBRTtNQUNsQ3RCLEtBQUssRUFBRTZKLE1BQU0sQ0FBQ3ZJLElBQUksQ0FBRTtNQUNwQmtKLFFBQVEsRUFBRUEsUUFBUSxJQUFJaWIsV0FBVyxJQUFJLENBQUMsQ0FBQy9iLGFBQWEsQ0FBQ3BJLElBQUksQ0FBRTtNQUMzRGdQLFFBQVEsRUFBRW1HLFlBQWE7TUFDdkJDLE1BQU0sRUFBRUMsVUFBVztNQUNuQm5HLEtBQUssRUFBRW9HLE9BQU8sQ0FBQ3RWLElBQUksQ0FBQyxJQUFJdVYsT0FBTyxDQUFDalgsTUFBTSxDQUFDMEIsSUFBSSxDQUFDLENBQUU7TUFDOUNtUCxVQUFVLEVBQUVoSCxNQUFNLENBQUNtTixPQUFPLENBQUN0VixJQUFJLENBQUMsSUFBSW1JLE1BQU0sQ0FBQzdKLE1BQU0sQ0FBQzBCLElBQUksQ0FBRTtNQUN4RHNRLFFBQVE7TUFDUkUsTUFBTSxFQUFDO0lBQVEsR0FWVnhRLElBV04sQ0FFTCxDQUFDLGVBQ0Q2SCxzREFBQSxDQUFDNHJCLHFEQUFZO01BQUN0ckIsTUFBTSxFQUFFQSxNQUFPO01BQUN1ckIsUUFBUSxFQUFFQSxRQUFTO01BQUMzcUIsVUFBVTtJQUFBLENBQUUsQ0FBQyxlQUMvRGxCLHNEQUFBLENBQUNULDhDQUFHO01BQUMwRCxTQUFTLEVBQUVuQix5REFBZ0I7TUFBQWYsUUFBQSxFQUFFekssQ0FBQyxDQUFDLHlCQUF5QjtJQUFDLENBQU0sQ0FBQztFQUFBLENBQ2xFLENBQUM7QUFFVixDQUFDO0FBRUQ4MkIsaUJBQWlCLENBQUM3ckIsU0FBUyxHQUFHO0VBQzVCakIsTUFBTSxFQUFFakIsMERBQWdCLENBQUM2QixVQUFVO0VBQ25DMnFCLFFBQVEsRUFBRXhzQiwwREFBZ0IsQ0FBQzZCLFVBQVU7RUFDckNHLFFBQVEsRUFBRWhDLHdEQUFjO0VBQ3hCaWQsV0FBVyxFQUFFamQsd0RBQWNrRTtBQUM3QixDQUFDO0FBRUQsaUVBQWU2cEIsaUJBQWlCOzs7Ozs7Ozs7Ozs7OztBQ3pFekIsTUFBTTE2QixvQkFBb0IsR0FBRztFQUNsQ0MsS0FBSyxFQUFFLGdCQUFnQjtFQUN2QkMsU0FBUyxFQUFFLHFCQUFxQjtFQUNoQ0MsUUFBUSxFQUFFLG9CQUFvQjtFQUM5QkMsT0FBTyxFQUFFLGtCQUFrQjtFQUMzQkMsa0JBQWtCLEVBQUU7QUFDdEIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTnVDO0FBQ0w7QUFDb0I7QUFDUjtBQUNaO0FBQ3lDO0FBSy9DO0FBQ21DO0FBQzdCO0FBQ2lCO0FBQzZCO0FBQ3RDO0FBQ3VCO0FBQ2pCO0FBSzFCO0FBRXdCO0FBQUE7QUFFL0MsTUFBTWtyQixZQUFZLEdBQUd0bkIsSUFBQSxJQU9mO0VBQUEsSUFBQTZsQixhQUFBLEVBQUFQLGFBQUEsRUFBQThDLG1CQUFBLEVBQUF0QyxjQUFBLEVBQUF1UixjQUFBO0VBQUEsSUFQZ0I7SUFDcEJoNkIsTUFBTTtJQUNOaUgsUUFBUTtJQUNSeEMsT0FBTztJQUNQbW9CLE9BQU87SUFDUHpjLElBQUk7SUFDSjlEO0VBQ0YsQ0FBQyxHQUFBMUosSUFBQTtFQUNDLE1BQU07SUFBRUw7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTNMLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUNKN3BCLElBQUksRUFBRTtNQUFFNkU7SUFBWTtFQUN0QixDQUFDLEdBQUc4VSx3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsQ0FBQztFQUM3QyxNQUFNO0lBQUU4QixNQUFNO0lBQUV4RztFQUFlLENBQUMsR0FBR3UzQiwrREFBWSxDQUM3Q3R2QixRQUFRLEVBQ1J4QyxPQUFPLEVBQ1Btb0IsT0FBTyxFQUNQemMsSUFDRixDQUFDO0VBQ0QsTUFBTSxDQUFDcW1CLFdBQVcsRUFBRUMsY0FBYyxDQUFDLEdBQUcvbkIsK0NBQVEsQ0FBQyxJQUFJLENBQUM7RUFDcEQsTUFBTSxDQUFDdXJCLGdCQUFnQixFQUFFQyxtQkFBbUIsQ0FBQyxHQUFHeHJCLCtDQUFRLENBQUMsS0FBSyxDQUFDO0VBQy9ELE1BQU15ckIsZ0JBQWdCLEdBQUcsQ0FBQTMwQixNQUFNLGFBQU5BLE1BQU0sZ0JBQUFnakIsYUFBQSxHQUFOaGpCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQTBrQixhQUFBLHVCQUFiQSxhQUFBLENBQWU0UixRQUFRLE9BQUt0MUIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVWLEVBQUU7RUFDcEUsTUFBTWkyQixpQkFBaUIsR0FBRyxDQUFBNzBCLE1BQU0sYUFBTkEsTUFBTSxnQkFBQXlpQixhQUFBLEdBQU56aUIsTUFBTSxDQUFFNEQsS0FBSyxjQUFBNmUsYUFBQSx1QkFBYkEsYUFBQSxDQUFldHBCLEtBQUssT0FBS21HLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFbkcsS0FBSztFQUNyRSxNQUFNMjdCLGlCQUFpQixHQUNyQixDQUFDRCxpQkFBaUIsSUFBSUYsZ0JBQWdCLEtBQ3RDbjZCLE1BQU0sQ0FBQ3U2QixxQ0FBcUM7RUFDOUMsTUFBTTtJQUFFQztFQUFXLENBQUMsR0FBR3RRLHlFQUFnQixDQUFDMWtCLE1BQU0sQ0FBQztFQUUvQyxNQUFNaTFCLE1BQU0sR0FBSXptQixHQUFHLElBQUs7SUFDdEIsTUFBTXBMLE9BQU8sR0FBR29QLDhGQUFxQixDQUFDaEUsR0FBRyxDQUFDO0lBRTFDLE9BQU9yVSxRQUFRLENBQUNnSiw0REFBaUIsQ0FBQ25ELE1BQU0sRUFBRW9ELE9BQU8sQ0FBQyxDQUFDLENBQ2hEdkUsSUFBSSxDQUFDLE1BQU07TUFDVm95QixjQUFjLENBQUM7UUFDYnh6QixLQUFLLEVBQUVYLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQztRQUN4QzgwQixXQUFXLEVBQUU5MEIsQ0FBQyxDQUFDLDBDQUEwQztNQUMzRCxDQUFDLENBQUM7TUFDRixPQUFPeUMsT0FBTyxDQUFDc3lCLE9BQU8sQ0FBQyxDQUFDO0lBQzFCLENBQUMsQ0FBQyxDQUNEL3lCLEtBQUssQ0FBRXZDLEdBQUcsSUFBSztNQUNkMDBCLGNBQWMsQ0FBQztRQUNieHpCLEtBQUssRUFBRVgsQ0FBQyxDQUFDLDRCQUE0QixDQUFDO1FBQ3RDODBCLFdBQVcsRUFBRXIxQixHQUFHLENBQUNtUyxRQUFRLENBQUM7TUFDNUIsQ0FBQyxDQUFDO01BQ0YsT0FBT25QLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLENBQUM7SUFDekIsQ0FBQyxDQUFDO0VBQ04sQ0FBQztFQUVELE1BQU1reUIsa0JBQWtCLEdBQUdBLENBQUEsS0FBTTtJQUMvQlQsY0FBYyxDQUFDLElBQUksQ0FBQztJQUNwQnpuQixVQUFVLENBQUMzQyxPQUFPLEVBQUV3Qiw4REFBZSxDQUFDO0VBQ3RDLENBQUM7RUFFRCxNQUFNNnNCLGlCQUFpQixHQUFHQSxDQUFBLEtBQU07SUFDOUIvNkIsUUFBUSxDQUFDb0ssdURBQVksQ0FBQ3ZFLE1BQU0sQ0FBQyxDQUFDO0VBQ2hDLENBQUM7RUFFRCxNQUFNbTFCLFdBQVcsR0FBR0EsQ0FBQSxLQUFNO0lBQ3hCaDdCLFFBQVEsQ0FBQzRGLDZEQUFrQixDQUFDQyxNQUFNLENBQUMsQ0FBQyxDQUFDbkIsSUFBSSxDQUFDLE1BQU07TUFDOUM2MUIsbUJBQW1CLENBQUMsSUFBSSxDQUFDO01BQ3pCbHJCLFVBQVUsQ0FBQyxNQUFNO1FBQ2ZrckIsbUJBQW1CLENBQUMsS0FBSyxDQUFDO01BQzVCLENBQUMsRUFBRXJzQiw4REFBZSxHQUFHa3NCLHVEQUFRLENBQUM7SUFDaEMsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVELG9CQUNFN3RCLHdEQUFBLENBQUFtWSx3REFBQTtJQUFBdFgsUUFBQSxnQkFDRWYsdURBQUEsQ0FBQzZuQixpREFBTTtNQUNMenZCLEVBQUUsRUFBQyxlQUFlO01BQ2xCK0wsSUFBSSxFQUFFQSxJQUFLO01BQ1g5RCxPQUFPLEVBQUVBLE9BQVE7TUFDakIwbkIsTUFBTSxFQUFDLE9BQU87TUFDZEMsVUFBVSxFQUFFO1FBQUVDLFdBQVcsRUFBRTtNQUFNLENBQUU7TUFDbkNobEIsU0FBUyxFQUFFbkIsdUVBQTZCO01BQUFmLFFBQUEsRUFFdkN2SCxNQUFNLElBQUl4RyxjQUFjLGlCQUN2QmtOLHdEQUFBLENBQUFtWSx3REFBQTtRQUFBdFgsUUFBQSxnQkFDRWIsd0RBQUEsQ0FBQ1gsOENBQUc7VUFBQzBELFNBQVMsRUFBRW5CLHdEQUFjO1VBQUFmLFFBQUEsZ0JBQzVCZix1REFBQSxDQUFDK04scURBQVU7WUFDVDlLLFNBQVMsRUFBRW5CLDBEQUFnQjtZQUMzQnVCLE9BQU8sRUFBRWhELE9BQVE7WUFDakI4SSxFQUFFLEVBQUU7Y0FBRWlmLEtBQUssRUFBRTtZQUFRLENBQUU7WUFDdkIvaUIsUUFBUSxFQUFDLE9BQU87WUFBQXRFLFFBQUEsZUFFaEJmLHVEQUFBLENBQUN1VCxzREFBUyxJQUFFO1VBQUMsQ0FDSCxDQUFDLGVBQ2J2VCx1REFBQSxDQUFDNGIscURBQVU7WUFBQ2pKLE9BQU8sRUFBQyxJQUFJO1lBQUMwVixZQUFZO1lBQUNwbEIsU0FBUyxFQUFFbkIsdURBQWE7WUFBQWYsUUFBQSxFQUMzRHZILE1BQU0sYUFBTkEsTUFBTSxnQkFBQXVsQixtQkFBQSxHQUFOdmxCLE1BQU0sQ0FBRXdmLFdBQVcsY0FBQStGLG1CQUFBLHVCQUFuQkEsbUJBQUEsQ0FBcUI1bUI7VUFBSSxDQUNoQixDQUFDLGVBQ2IrSCx3REFBQSxDQUFDMGIscURBQVU7WUFDVGpKLE9BQU8sRUFBQyxPQUFPO1lBQ2YwVixZQUFZO1lBQ1pwbEIsU0FBUyxFQUFFbkIsMERBQWdCO1lBQUFmLFFBQUEsR0FFMUJ6SyxDQUFDLENBQUMsNEJBQTRCLENBQUMsRUFBQyxHQUFDLEVBQUNrRCxNQUFNLGFBQU5BLE1BQU0sZ0JBQUFpakIsY0FBQSxHQUFOampCLE1BQU0sQ0FBRTFCLEtBQUssY0FBQTJrQixjQUFBLHVCQUFiQSxjQUFBLENBQWVvTixXQUFXO1VBQUEsQ0FDbkQsQ0FBQyxFQUVaMkUsVUFBVSxpQkFDVHR1Qix3REFBQSxDQUFBbVksd0RBQUE7WUFBQXRYLFFBQUEsZ0JBQ0VmLHVEQUFBLENBQUNULDhDQUFHO2NBQUMwRCxTQUFTLEVBQUVuQix3REFBYztjQUFBZixRQUFBLGVBQzVCZix1REFBQSxDQUFDMHRCLHNEQUFNO2dCQUNMaFgsSUFBSSxFQUFFLEdBQUk7Z0JBQ1Z2VCxLQUFLLEVBQUU7a0JBQ0w0USxNQUFNLEVBQUUsTUFBTTtrQkFDZHNSLFFBQVEsRUFBRSxNQUFNO2tCQUNoQi9pQixLQUFLLEVBQUU7Z0JBQ1QsQ0FBRTtnQkFDRnpMLEtBQUssRUFBRTJDLE1BQU0sQ0FBQ3MxQixPQUFRO2dCQUN0QkMsT0FBTyxFQUFDO2NBQWEsQ0FDdEI7WUFBQyxDQUNDLENBQUMsZUFDTi91Qix1REFBQTtjQUFHaUQsU0FBUyxFQUFFbkIsd0RBQWM7Y0FBQWYsUUFBQSxFQUFFekssQ0FBQyxDQUFDLHNCQUFzQjtZQUFDLENBQUksQ0FBQyxlQUM1RDBKLHVEQUFBLENBQUM0YixxREFBVTtjQUNUakosT0FBTyxFQUFDLE9BQU87Y0FDZjBWLFlBQVk7Y0FDWnBsQixTQUFTLEVBQUVuQix3REFBYztjQUFBZixRQUFBLEVBRXhCekssQ0FBQyxDQUFDLHVCQUF1QjtZQUFDLENBQ2pCLENBQUM7VUFBQSxDQUNiLENBQ0gsRUFFQSxFQUFDdEMsTUFBTSxhQUFOQSxNQUFNLGVBQU5BLE1BQU0sQ0FBRWk3QixVQUFVLEtBQUlULFVBQVUsaUJBQ2hDdHVCLHdEQUFBLENBQUNYLDhDQUFHO1lBQUMwRCxTQUFTLEVBQUVuQix3RUFBOEI7WUFBQWYsUUFBQSxnQkFDNUNiLHdEQUFBLENBQUMrUCxpREFBTTtjQUNMaE4sU0FBUyxFQUFFbkIsNkRBQW1CO2NBQzlCNlEsT0FBTyxFQUFDLFdBQVc7Y0FDbkIzTSxLQUFLLEVBQUMsU0FBUztjQUNmM0MsT0FBTyxFQUFFcXJCLGlCQUFrQjtjQUFBM3RCLFFBQUEsZ0JBRTNCZix1REFBQSxDQUFDNHRCLHFFQUFZO2dCQUFDdm9CLFFBQVEsRUFBQztjQUFPLENBQUUsQ0FBQyxFQUNoQy9PLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztZQUFBLENBQ3RCLENBQUMsZUFDVDRKLHdEQUFBLENBQUMrUCxpREFBTTtjQUNMaE4sU0FBUyxLQUFBL04sTUFBQSxDQUFLNE0seURBQWMsT0FBQTVNLE1BQUEsQ0FDMUIrNEIsZ0JBQWdCLEdBQUduc0Isc0RBQVcsR0FBRyxFQUFFLENBQ2xDO2NBQ0h1QixPQUFPLEVBQUVzckIsV0FBWTtjQUNyQnR0QixRQUFRLEVBQUU0c0IsZ0JBQWlCO2NBQUFsdEIsUUFBQSxnQkFFM0JmLHVEQUFBLENBQUM4dEIsOERBQVM7Z0JBQUN6b0IsUUFBUSxFQUFDO2NBQU8sQ0FBRSxDQUFDLEVBQzdCNG9CLGdCQUFnQixHQUNiMzNCLENBQUMsQ0FBQyxvQkFBb0IsQ0FBQyxHQUN2QkEsQ0FBQyxDQUFDLG9CQUFvQixDQUFDO1lBQUEsQ0FDckIsQ0FBQztVQUFBLENBQ04sQ0FDTixlQUVEMEosdURBQUE7WUFBS2lELFNBQVMsRUFBRW5CLDZEQUFtQjtZQUFBZixRQUFBLGVBQ2pDZix1REFBQSxDQUFDZ0MsaURBQVE7Y0FDUEMsSUFBSSxFQUFFekksTUFBTSxhQUFOQSxNQUFNLGdCQUFBdzBCLGNBQUEsR0FBTngwQixNQUFNLENBQUUxQixLQUFLLGNBQUFrMkIsY0FBQSx1QkFBYkEsY0FBQSxDQUFleHFCLE1BQU87Y0FDNUJuQixRQUFRO2NBQ1JDLEtBQUssRUFBRSxHQUFJO2NBQ1hKLFdBQVcsRUFBRTVMLENBQUMsQ0FBQyxpQ0FBaUM7WUFBRSxDQUNuRDtVQUFDLENBQ0MsQ0FBQztRQUFBLENBQ0gsQ0FBQyxlQUNONEosd0RBQUEsQ0FBQ1gsOENBQUc7VUFBQzBELFNBQVMsRUFBRW5CLG1FQUF5QjtVQUFBZixRQUFBLGdCQUN2Q2YsdURBQUEsQ0FBQzRiLHFEQUFVO1lBQ1RqSixPQUFPLEVBQUMsSUFBSTtZQUNaMFYsWUFBWTtZQUNacGxCLFNBQVMsRUFBRW5CLG1FQUF5QjtZQUFBZixRQUFBLEVBRW5DekssQ0FBQyxDQUFDLG9DQUFvQztVQUFDLENBQzlCLENBQUMsRUFDWmtELE1BQU0saUJBQ0x3Ryx1REFBQSxDQUFDcXRCLCtEQUFVO1lBQ1Q3ekIsTUFBTSxFQUFFQSxNQUFPO1lBQ2Z4RyxjQUFjLEVBQUVBLGNBQWU7WUFDL0JnQixNQUFNLEVBQUVBLE1BQU87WUFDZnM1QixPQUFPLEVBQUVnQixpQkFBa0I7WUFDM0JsdUIsUUFBUSxFQUFFcXVCLE1BQU87WUFDakJwdUIsT0FBTyxFQUFFQTtVQUFRLENBQ2xCLENBQ0Y7UUFBQSxDQUNFLENBQUM7TUFBQSxDQUNOO0lBQ0gsQ0FDSyxDQUFDLGVBQ1RMLHVEQUFBLENBQUNrRSxzREFBWTtNQUNYQyxJQUFJLEVBQUUsQ0FBQyxDQUFDcW1CLFdBQVk7TUFDcEJucUIsT0FBTyxFQUFFNnFCLGtCQUFtQjtNQUM1QmowQixLQUFLLEVBQUV1ekIsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUV2ekIsS0FBTTtNQUMxQm0wQixXQUFXLEVBQUVaLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFWTtJQUFZLENBQ3ZDLENBQUM7RUFBQSxDQUNGLENBQUM7QUFFUCxDQUFDO0FBRURuTixZQUFZLENBQUMxYyxTQUFTLEdBQUc7RUFDdkJ2TixNQUFNLEVBQUVxTCwwREFBZ0I7RUFDeEJwRSxRQUFRLEVBQUVvRSwwREFBZ0I7RUFDMUI1RyxPQUFPLEVBQUU0RywwREFBZ0I7RUFDekJ1aEIsT0FBTyxFQUFFdmhCLDBEQUFnQjtFQUN6QmdCLE9BQU8sRUFBRWhCLHdEQUFjO0VBQ3ZCOEUsSUFBSSxFQUFFOUUsd0RBQWNrRTtBQUN0QixDQUFDO0FBRUQsaUVBQWUwYSxZQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pPRDtBQUNTO0FBQ1k7QUFDRztBQUNjO0FBRWpCO0FBQUE7QUFFL0MsTUFBTUYsWUFBWSxHQUFHcG5CLElBQUEsSUFBZ0I7RUFBQSxJQUFBKzRCLHFCQUFBO0VBQUEsSUFBZjtJQUFFbDJCO0VBQU8sQ0FBQyxHQUFBN0MsSUFBQTtFQUM5QixNQUFNO0lBQUVMO0VBQUUsQ0FBQyxHQUFHZ0osNkRBQWMsQ0FBQyxDQUFDO0VBQzlCLE1BQU1xd0IsUUFBUSxHQUFHbjJCLE1BQU0sQ0FBQzZpQixTQUFTO0VBQ2pDLE1BQU11VCxjQUFjLElBQUFGLHFCQUFBLEdBQUdsMkIsTUFBTSxDQUFDaUIsZUFBZSxjQUFBaTFCLHFCQUFBLHVCQUF0QkEscUJBQUEsQ0FBd0I5UixJQUFJLENBQ2hEcmpCLENBQUMsSUFBS0EsQ0FBQyxDQUFDbkUsTUFBTSxLQUFLLFdBQ3RCLENBQUM7RUFDRCxNQUFNO0lBQUVxb0IsWUFBWTtJQUFFckMsWUFBWTtJQUFFb1M7RUFBVyxDQUFDLEdBQUd0USx5RUFBZ0IsQ0FBQzFrQixNQUFNLENBQUM7RUFFM0Usb0JBQ0V3RyxzREFBQSxDQUFDeXZCLG9EQUFTO0lBQUN4c0IsU0FBUyxFQUFFbkIsc0VBQTZCO0lBQUFmLFFBQUEsRUFDaEQ0dUIsUUFBUSxnQkFDUHp2Qix1REFBQSxDQUFBbVksdURBQUE7TUFBQXRYLFFBQUEsR0FDRyxDQUFDLENBQUM2dUIsY0FBYyxpQkFDZjV2QixzREFBQSxDQUFDaVEsaURBQU07UUFDTG1LLElBQUksRUFBQyxRQUFRO1FBQ2IsY0FBVyxnQ0FBZ0M7UUFDM0NuWCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSTRNLHNFQUE0QixDQUFHO1FBQUFmLFFBQUEsRUFFakV6SyxDQUFDLENBQUMsdUNBQXVDO01BQUMsQ0FDckMsQ0FDVCxFQUNBbW9CLFlBQVksaUJBQ1h6ZSxzREFBQSxDQUFDaVEsaURBQU07UUFDTG1LLElBQUksRUFBQyxRQUFRO1FBQ2IsY0FBVywwQkFBMEI7UUFDckNuWCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSTRNLGlFQUF1QixDQUFHO1FBQUFmLFFBQUEsRUFFNUR6SyxDQUFDLENBQUMsaUNBQWlDO01BQUMsQ0FDL0IsQ0FDVCxFQUNBOGxCLFlBQVksaUJBQ1hwYyxzREFBQSxDQUFDaVEsaURBQU07UUFDTG1LLElBQUksRUFBQyxRQUFRO1FBQ2IsY0FBVywwQkFBMEI7UUFDckNuWCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSTRNLGlFQUF1QixDQUFHO1FBQUFmLFFBQUEsRUFFNUR6SyxDQUFDLENBQUMsaUNBQWlDO01BQUMsQ0FDL0IsQ0FDVCxFQUNBazRCLFVBQVUsaUJBQ1R4dUIsc0RBQUEsQ0FBQ2lRLGlEQUFNO1FBQ0xtSyxJQUFJLEVBQUMsUUFBUTtRQUNiLGNBQVcsd0JBQXdCO1FBQ25DblgsU0FBUyxLQUFBL04sTUFBQSxDQUFLNE0sMkRBQWlCLE9BQUE1TSxNQUFBLENBQUk0TSwrREFBcUIsQ0FBRztRQUFBZixRQUFBLEVBRTFEekssQ0FBQyxDQUFDLCtCQUErQjtNQUFDLENBQzdCLENBQ1Q7SUFBQSxDQUNELENBQUMsZ0JBRUgwSixzREFBQSxDQUFDaVEsaURBQU07TUFDTG1LLElBQUksRUFBQyxRQUFRO01BQ2IsY0FBVyx5QkFBeUI7TUFDcENuWCxTQUFTLEtBQUEvTixNQUFBLENBQUs0TSwyREFBaUIsT0FBQTVNLE1BQUEsQ0FBSTRNLGdFQUFzQixDQUFHO01BQUFmLFFBQUEsRUFFM0R6SyxDQUFDLENBQUMsZ0NBQWdDO0lBQUMsQ0FDOUI7RUFDVCxDQUNRLENBQUM7QUFFaEIsQ0FBQztBQUVEeW5CLFlBQVksQ0FBQ3hjLFNBQVMsR0FBRztFQUN2Qi9ILE1BQU0sRUFBRTZGLHVEQUFlLENBQUM7SUFDdEJqQyxLQUFLLEVBQUVpQyx1REFBZSxDQUFDO01BQ3JCakosTUFBTSxFQUFFaUosMERBQWdCaUU7SUFDMUIsQ0FBQyxDQUFDO0lBQ0Zzc0IsY0FBYyxFQUFFdndCLHlEQUFpQixDQUFDOUksTUFBTTtFQUMxQyxDQUFDO0FBQ0gsQ0FBQztBQUVELGlFQUFld25CLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0V3QjtBQUNKO0FBQ1E7QUFRaEM7QUFLUTtBQUNnQjtBQUNFO0FBQ0s7QUFLL0I7QUFBQTtBQUV2QixNQUFNcVMsVUFBVSxHQUFHejVCLElBQUEsSUFBZTtFQUFBLElBQWQ7SUFBRU07RUFBTSxDQUFDLEdBQUFOLElBQUE7RUFDM0IsTUFBTTtJQUFFTDtFQUFFLENBQUMsR0FBR2dKLDZEQUFjLENBQUMsQ0FBQztFQUM5QixNQUFNLENBQUMrd0IsR0FBRyxFQUFFQyxNQUFNLENBQUMsR0FBRzV0QiwrQ0FBUSxDQUFDMVIsa0RBQUksQ0FBQ3VFLE1BQU0sQ0FBQztFQUMzQyxNQUFNLENBQUNnN0Isa0JBQWtCLEVBQUVDLHFCQUFxQixDQUFDLEdBQUc5dEIsK0NBQVEsQ0FBQyxLQUFLLENBQUM7RUFDbkUsTUFBTS9PLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTTtJQUNKbnBCLE1BQU07SUFDTkUsSUFBSTtJQUNKNDdCLGVBQWUsRUFBRUMsYUFBYTtJQUM5QjdOLGVBQWUsRUFBRThOLGFBQWE7SUFDOUIxVixXQUFXO0lBQ1h4RDtFQUNGLENBQUMsR0FBRzdKLHdEQUFXLENBQUVVLEtBQUssSUFBS0EsS0FBSyxDQUFDNVcsV0FBVyxDQUFDO0VBQzdDLE1BQU1vTixLQUFLLEdBQUc0ZCx1REFBUSxDQUFDLENBQUM7RUFDeEIsTUFBTW5CLFFBQVEsR0FBR29CLDREQUFhLENBQUM3ZCxLQUFLLENBQUNnZSxXQUFXLENBQUNDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztFQUU1RCxNQUFNNk4sZUFBZSxHQUFHQSxDQUFDbFAsQ0FBQyxFQUFFbVAsTUFBTSxLQUFLO0lBQ3JDUCxNQUFNLENBQUNPLE1BQU0sQ0FBQztFQUNoQixDQUFDO0VBRUQsTUFBTUMsb0JBQW9CLEdBQUl6NUIsSUFBSSxJQUNoQzFELFFBQVEsQ0FDTmdGLHdEQUFjLENBQUM7SUFBRXRCLElBQUk7SUFBRUMsT0FBTyxFQUFFM0csb0VBQXNCO0lBQUVnRSxNQUFNO0lBQUVFO0VBQUssQ0FBQyxDQUN4RSxDQUFDO0VBRUgsTUFBTWs4QixpQkFBaUIsR0FBSTE1QixJQUFJLElBQzdCMUQsUUFBUSxDQUNOd0QsdURBQWEsQ0FBQztJQUNaRSxJQUFJO0lBQ0pDLE9BQU8sRUFBRW81QixhQUFhO0lBQ3RCLzdCLE1BQU07SUFDTkU7RUFDRixDQUFDLENBQ0gsQ0FBQyxDQUFDd0QsSUFBSSxDQUFFekMsT0FBTyxJQUFLO0lBQ2xCLE1BQU07TUFBRStGO0lBQUssQ0FBQyxHQUFHL0YsT0FBTyxDQUFDTSxRQUFRO0lBQ2pDLE1BQU04NkIsb0JBQW9CLEdBQUdyMUIsSUFBSSxDQUFDdkIsR0FBRyxDQUFFdEMsS0FBSyxJQUMxQ25FLFFBQVEsQ0FDTnlGLDJEQUFpQixDQUFDO01BQ2hCWCxPQUFPLEVBQUVYLEtBQUssQ0FBQ00sRUFBRTtNQUNqQjY0QixZQUFZLEVBQUVuZ0Msd0RBQVU7TUFDeEJ3RyxPQUFPLEVBQUVxNUIsYUFBYTtNQUN0Qmg4QixNQUFNO01BQ05FO0lBQ0YsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUVELE9BQU9rRSxPQUFPLENBQUNzQixHQUFHLENBQUMyMkIsb0JBQW9CLENBQUM7RUFDMUMsQ0FBQyxDQUFDO0VBRUp6aEIsZ0RBQVMsQ0FBQyxNQUFNO0lBQ2QsTUFBTTJoQixhQUFhLEdBQUcsQ0FDcEJKLG9CQUFvQixDQUFDaGdDLHdEQUFVLENBQUMsRUFDaENpZ0MsaUJBQWlCLENBQUNqZ0Msd0RBQVUsQ0FBQyxDQUM5QjtJQUNEaUksT0FBTyxDQUFDc0IsR0FBRyxDQUFDNjJCLGFBQWEsQ0FBQyxDQUFDNzRCLElBQUksQ0FBQyxNQUFNbTRCLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDO0VBQ3BFLENBQUMsRUFBRSxDQUFDNzdCLE1BQU0sRUFBRUUsSUFBSSxDQUFDLENBQUM7RUFFbEIwYSxnREFBUyxDQUFDLE1BQU07SUFDZCxJQUFJZ2hCLGtCQUFrQixFQUFFO01BQ3RCLElBQUksQ0FBQTlZLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFcGlCLE1BQU0sTUFBSyxDQUFDLElBQUksQ0FBQTRsQixXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRTVsQixNQUFNLElBQUcsQ0FBQyxFQUFFO1FBQ3pEaTdCLE1BQU0sQ0FBQ3QvQixrREFBSSxDQUFDbUksT0FBTyxDQUFDO01BQ3RCO0lBQ0Y7RUFDRixDQUFDLEVBQUUsQ0FBQ28zQixrQkFBa0IsQ0FBQyxDQUFDO0VBRXhCLG9CQUNFcndCLHVEQUFBLENBQUNYLDhDQUFHO0lBQUMwRCxTQUFTLEVBQUVuQiwyREFBa0I7SUFBQWYsUUFBQSxnQkFDaENiLHVEQUFBLENBQUM0Z0IsK0NBQUk7TUFDSGpxQixLQUFLLEVBQUV3NUIsR0FBSTtNQUNYbHBCLFFBQVEsRUFBRXlwQixlQUFnQjtNQUMxQmplLE9BQU8sRUFBRTRPLFFBQVEsR0FBRyxXQUFXLEdBQUcsVUFBVztNQUFBeGdCLFFBQUEsZ0JBRTdDZixzREFBQSxDQUFDK2dCLDhDQUFHO1FBQUM5WSxLQUFLLEVBQUUzUixDQUFDLENBQUMsY0FBYyxDQUFFO1FBQUNPLEtBQUssRUFBRTdGLGtEQUFJLENBQUN1RTtNQUFPLENBQUUsQ0FBQyxlQUNyRHlLLHNEQUFBLENBQUMrZ0IsOENBQUc7UUFBQzlZLEtBQUssRUFBRTNSLENBQUMsQ0FBQyx1QkFBdUIsQ0FBRTtRQUFDTyxLQUFLLEVBQUU3RixrREFBSSxDQUFDbUk7TUFBUSxDQUFFLENBQUM7SUFBQSxDQUMzRCxDQUFDLGVBQ1A2RyxzREFBQSxDQUFDbVEsa0RBQU8sSUFBRSxDQUFDLGVBQ1huUSxzREFBQSxDQUFDVCw4Q0FBRztNQUFDNEosRUFBRSxFQUFFO1FBQUUrSSxFQUFFLEVBQUUsQ0FBQztRQUFFN0MsRUFBRSxFQUFFO01BQUUsQ0FBRTtNQUFBdE8sUUFBQSxFQUFFOUo7SUFBSyxDQUFNLENBQUMsRUFDdkNvNUIsR0FBRyxLQUFLci9CLGtEQUFJLENBQUN1RSxNQUFNLGlCQUFJeUssc0RBQUEsQ0FBQ3VYLHdEQUFlO01BQUNDLFNBQVMsRUFBRXVaO0lBQWtCLENBQUUsQ0FBQyxFQUN4RVYsR0FBRyxLQUFLci9CLGtEQUFJLENBQUNtSSxPQUFPLGlCQUNuQjZHLHNEQUFBLENBQUNtd0IsZ0VBQVk7TUFBQzNZLFNBQVMsRUFBRXNaO0lBQXFCLENBQUUsQ0FDakQ7RUFBQSxDQUNFLENBQUM7QUFFVixDQUFDO0FBRUQsaUVBQWVWLFVBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQy9HekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ21EO0FBQ0o7QUFDK0I7QUFDMUM7QUFNYjtBQUNrQjtBQUNWO0FBQzJCO0FBQ2Y7QUFFVjtBQUNjO0FBQ1I7QUFDSTtBQUFBO0FBRTNDLE1BQU1nQixhQUFhLEdBQUdBLENBQUEsS0FBTTtFQUMxQixNQUFNO0lBQUU5NkI7RUFBRSxDQUFDLEdBQUdnSiw2REFBYyxDQUFDLENBQUM7RUFDOUIsTUFBTTNMLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFDOUIsTUFBTSxDQUFDcGtCLE9BQU8sRUFBRWlLLFVBQVUsQ0FBQyxHQUFHakIsK0NBQVEsQ0FBQyxFQUFFLENBQUM7RUFDMUMsTUFBTSxDQUFDMnVCLGVBQWUsRUFBRXp0QixrQkFBa0IsQ0FBQyxHQUFHbEIsK0NBQVEsQ0FBQyxJQUFJLENBQUM7RUFDNUQsTUFBTTtJQUNKNHVCLE9BQU87SUFDUEMsUUFBUTtJQUNSNThCLE1BQU0sRUFBRTtNQUFFRix1QkFBdUIsRUFBRTRaO0lBQWE7RUFDbEQsQ0FBQyxHQUFHVCx3REFBVyxDQUFFVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQVcsSUFBSSxDQUFDLENBQUMsRUFBRW1XLHFEQUFZLENBQUM7RUFFakUsTUFBTThDLE9BQU8sR0FBR0EsQ0FBQSxLQUFNO0lBQ3BCaGQsUUFBUSxDQUFDRSxxREFBVyxDQUFDLENBQUMsQ0FBQztFQUN6QixDQUFDO0VBRUQsTUFBTTI5QixhQUFhLEdBQUdBLENBQUEsS0FBTTtJQUMxQjc5QixRQUFRLENBQUNHLG9EQUFVLENBQUMsQ0FBQyxDQUFDO0VBQ3hCLENBQUM7RUFFRHliLGdEQUFTLENBQUMsTUFBTTtJQUNkLElBQUlnaUIsUUFBUSxFQUFFO01BQ1o1dEIsVUFBVSxDQUFDNHRCLFFBQVEsQ0FBQztNQUNwQjN0QixrQkFBa0IsQ0FBQzR0QixhQUFhLENBQUM7SUFDbkM7RUFDRixDQUFDLEVBQUUsQ0FBQ0QsUUFBUSxDQUFDLENBQUM7RUFFZCxNQUFNbmpCLFFBQVEsR0FBSXFqQixXQUFXLElBQUs7SUFDaEM5OUIsUUFBUSxDQUFDZSxzREFBWSxDQUFDKzhCLFdBQVcsQ0FBQyxDQUFDO0VBQ3JDLENBQUM7RUFFRCxNQUFNbGMsTUFBTSxHQUFJbWMsU0FBUyxJQUFLO0lBQzVCLzlCLFFBQVEsQ0FBQ2lCLG9EQUFVLENBQUM4OEIsU0FBUyxDQUFDLENBQUM7RUFDakMsQ0FBQztFQUVELG9CQUNFeHhCLHdEQUFBLENBQUNrRyxvREFBVztJQUFBckYsUUFBQSxnQkFDVmYsdURBQUEsQ0FBQ2tYLCtDQUFNO01BQUMvUyxJQUFJLEVBQUVtdEI7SUFBUSxDQUFFLENBQUMsZUFDekJ0eEIsdURBQUEsQ0FBQ2tFLHFEQUFZO01BQ1hDLElBQUksRUFBRSxDQUFDLENBQUN6SyxPQUFRO01BQ2hCMkcsT0FBTyxFQUFFQSxDQUFBLEtBQU07UUFDYnNELFVBQVUsQ0FBQyxJQUFJLENBQUM7UUFDaEIsSUFBSTB0QixlQUFlLEVBQUVBLGVBQWUsQ0FBQyxDQUFDO01BQ3hDLENBQUU7TUFDRmp0QixJQUFJLEVBQUUxSyxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRTBLLElBQUs7TUFDcEJuTixLQUFLLEVBQUV5QyxPQUFPLGFBQVBBLE9BQU8sdUJBQVBBLE9BQU8sQ0FBRXpDO0lBQU0sQ0FDdkIsQ0FBQyxlQUNGK0ksdURBQUEsQ0FBQ2tXLGdEQUFPO01BQ045SCxRQUFRLEVBQUVBLFFBQVM7TUFDbkJtSCxNQUFNLEVBQUVBLE1BQU87TUFDZlgsUUFBUSxFQUFFeEcsUUFBUztNQUNuQnVDLE9BQU8sRUFBRUE7SUFBUSxDQUNsQixDQUFDLGVBQ0YzUSx1REFBQSxDQUFDVCw4Q0FBRztNQUFDNEosRUFBRSxFQUFFO1FBQUVtTCxPQUFPLEVBQUU7VUFBRStCLEVBQUUsRUFBRSxDQUFDO1VBQUVrTSxFQUFFLEVBQUUsQ0FBQztVQUFFWSxFQUFFLEVBQUU7UUFBRTtNQUFFLENBQUU7TUFBQXBpQixRQUFBLGVBQzVDZix1REFBQTtRQUFJaUQsU0FBUyxFQUFFbkIsa0VBQXdCO1FBQUFmLFFBQUEsRUFDcENzTixZQUFZLEdBQ1QvWCxDQUFDLENBQUMsdUJBQXVCLEVBQUU7VUFBRTNCLE1BQU0sRUFBRTBaO1FBQWEsQ0FBQyxDQUFDLEdBQ3BEL1gsQ0FBQyxDQUFDLGdCQUFnQjtNQUFDLENBQ3JCO0lBQUMsQ0FDRixDQUFDLGVBQ04wSix1REFBQSxDQUFDNkQsNkRBQW1CLENBQUMrdEIsUUFBUTtNQUFDLzZCLEtBQUssR0FBRzhNLFVBQVUsRUFBRUMsa0JBQWtCLENBQUU7TUFBQTdDLFFBQUEsZUFDcEVmLHVEQUFBLENBQUNvd0Isb0RBQVU7UUFBQ241QixLQUFLLGVBQUUrSSx1REFBQSxDQUFDd29CLHNEQUFZLElBQUU7TUFBRSxDQUFFO0lBQUMsQ0FDWCxDQUFDO0VBQUEsQ0FDcEIsQ0FBQztBQUVsQixDQUFDO0FBRUQsTUFBTTNWLGVBQWUsR0FBR2xjLElBQUE7RUFBQSxJQUFDO0lBQUVlO0VBQVksQ0FBQyxHQUFBZixJQUFBO0VBQUEsT0FBTTtJQUM1QzlCLElBQUksRUFBRTZDLFdBQVcsQ0FBQzdDLElBQUk7SUFDdEJGLE1BQU0sRUFBRStDLFdBQVcsQ0FBQy9DO0VBQ3RCLENBQUM7QUFBQSxDQUFDO0FBRUYsaUVBQWUwYixvREFBTyxDQUFDd0MsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUN1ZSxhQUFhLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2R3hCO0FBQ3FCO0FBQ0c7QUFFMUQsTUFBTTdHLFlBQVksR0FBR0EsQ0FBQ3R2QixRQUFRLEVBQUV4QyxPQUFPLEVBQUVtb0IsT0FBTyxFQUFFaVIsR0FBRyxLQUFLO0VBQ3hELE1BQU1sK0IsUUFBUSxHQUFHbXFCLHdEQUFXLENBQUMsQ0FBQztFQUU5QnZPLGdEQUFTLENBQUMsTUFBTTtJQUNkLElBQUlzaUIsR0FBRyxFQUFFO01BQ1AsSUFBSTUyQixRQUFRLElBQUl4QyxPQUFPLEVBQUU7UUFDdkI5RSxRQUFRLENBQUNxSCxtREFBUyxDQUFDQyxRQUFRLEVBQUV4QyxPQUFPLENBQUMsQ0FBQztNQUN4QztNQUVBLElBQUltb0IsT0FBTyxFQUFFO1FBQ1hqdEIsUUFBUSxDQUFDaUgsMkRBQWlCLENBQUNnbUIsT0FBTyxDQUFDLENBQUM7TUFDdEM7SUFDRjtFQUNGLENBQUMsRUFBRSxDQUFDM2xCLFFBQVEsRUFBRXhDLE9BQU8sRUFBRW1vQixPQUFPLEVBQUVpUixHQUFHLENBQUMsQ0FBQztFQUVyQyxNQUFNO0lBQUU3K0IsY0FBYztJQUFFOCtCLGFBQWEsRUFBRXQ0QjtFQUFPLENBQUMsR0FBR29VLHdEQUFXLENBQzFEVSxLQUFLLElBQUtBLEtBQUssQ0FBQzVXLFdBQ25CLENBQUM7RUFFRCxPQUFPO0lBQUU4QixNQUFNO0lBQUV4RztFQUFlLENBQUM7QUFDbkMsQ0FBQztBQUVELGlFQUFldTNCLFlBQVk7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQk87O0FBRWxDO0FBQ0EsU0FBU3dILGNBQWNBLENBQUN2ZixTQUFTLEVBQUV3ZixlQUFlLEVBQUVDLFFBQVEsRUFBRTtFQUM1RCxNQUFNQyxjQUFjLEdBQUcxZixTQUFTLENBQUMyZixTQUFTO0VBQzFDLE1BQU1DLFFBQVEsR0FBR0osZUFBZSxHQUFHRSxjQUFjO0VBQ2pELElBQUlHLFNBQVMsR0FBRyxJQUFJO0VBRXBCLFNBQVNDLGFBQWFBLENBQUNDLFNBQVMsRUFBRTtJQUNoQyxJQUFJLENBQUNGLFNBQVMsRUFBRUEsU0FBUyxHQUFHRSxTQUFTO0lBQ3JDLE1BQU1DLE9BQU8sR0FBR0QsU0FBUyxHQUFHRixTQUFTOztJQUVyQztJQUNBLE1BQU1JLFFBQVEsR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUNILE9BQU8sR0FBR1AsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNoRCxNQUFNVyxhQUFhO0lBQ2pCO0lBQ0FILFFBQVEsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHQSxRQUFRLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHQSxRQUFRLEdBQUcsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO0lBRXZFamdCLFNBQVMsQ0FBQzJmLFNBQVMsR0FBR0QsY0FBYyxHQUFHRSxRQUFRLEdBQUdRLGFBQWE7SUFFL0QsSUFBSUosT0FBTyxHQUFHUCxRQUFRLEVBQUU7TUFDdEJZLHFCQUFxQixDQUFDUCxhQUFhLENBQUM7SUFDdEM7RUFDRjtFQUVBTyxxQkFBcUIsQ0FBQ1AsYUFBYSxDQUFDO0FBQ3RDO0FBRUEsTUFBTTN5QixnQkFBZ0IsR0FBR0EsQ0FBQ1csTUFBTSxFQUFFd3lCLFdBQVcsS0FBSztFQUNoRCxNQUFNO0lBQUVyOEIsTUFBTTtJQUFFczhCLE9BQU87SUFBRXp4QjtFQUFhLENBQUMsR0FBR2hCLE1BQU07RUFDaEQsTUFBTTB5QixVQUFVLEdBQUd6OEIsTUFBTSxDQUFDMEIsSUFBSSxDQUFDeEIsTUFBTSxDQUFDO0VBQ3RDLE1BQU13OEIsVUFBVSxHQUFHRCxVQUFVLENBQUMzOUIsTUFBTTtFQUVwQ2thLGdEQUFTLENBQUMsTUFBTTtJQUNkLElBQUl3akIsT0FBTyxJQUFJRSxVQUFVLEtBQUssQ0FBQyxFQUFFOztJQUVqQztJQUNBLE1BQU1DLGNBQWMsR0FBR0YsVUFBVSxDQUM5QnpGLE1BQU0sQ0FBQyxDQUFDNEYsTUFBTSxFQUFFOXJCLEtBQUssS0FBSztNQUN6QixNQUFNK3JCLE9BQU8sR0FBRzEwQixRQUFRLENBQUMyMEIsYUFBYSxXQUFBbitCLE1BQUEsQ0FBV21TLEtBQUssT0FBSSxDQUFDO01BQzNELElBQUksQ0FBQytyQixPQUFPLEVBQUUsT0FBT0QsTUFBTTtNQUUzQixNQUFNRyxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0cscUJBQXFCLENBQUMsQ0FBQztNQUM5Q0osTUFBTSxDQUFDbCtCLElBQUksQ0FBQztRQUFFbStCLE9BQU87UUFBRS9yQixLQUFLO1FBQUVrTixHQUFHLEVBQUUrZSxNQUFNLENBQUMvZTtNQUFJLENBQUMsQ0FBQztNQUVoRCxPQUFPNGUsTUFBTTtJQUNmLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDTHQrQixJQUFJLENBQUMsQ0FBQzIrQixDQUFDLEVBQUVDLENBQUMsS0FBS0QsQ0FBQyxDQUFDamYsR0FBRyxHQUFHa2YsQ0FBQyxDQUFDbGYsR0FBRyxDQUFDO0lBRWhDLElBQUkyZSxjQUFjLENBQUM3OUIsTUFBTSxLQUFLLENBQUMsRUFBRTtJQUVqQyxNQUFNbWQsU0FBUyxHQUFHOVQsUUFBUSxDQUN2QmcxQixjQUFjLENBQUNaLFdBQVcsQ0FBQyxDQUMzQk8sYUFBYSxDQUFDLGtCQUFrQixDQUFDO0lBQ3BDLE1BQU1ycUIsTUFBTSxHQUFHa3FCLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFFaEMsSUFBSTFnQixTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFFbEIsUUFBUSxDQUFDdEksTUFBTSxDQUFDb3FCLE9BQU8sQ0FBQyxFQUFFO01BQ3ZDLE1BQU1PLGFBQWEsR0FBR25oQixTQUFTLENBQUMrZ0IscUJBQXFCLENBQUMsQ0FBQzs7TUFFdkQ7TUFDQSxNQUFNSyxVQUFVLEdBQUcsR0FBRztNQUN0QixNQUFNQyxpQkFBaUIsR0FBRyxHQUFHO01BQzdCLE1BQU0xQixTQUFTLEdBQ2JucEIsTUFBTSxDQUFDdUwsR0FBRyxHQUFHb2YsYUFBYSxDQUFDcGYsR0FBRyxHQUFHL0IsU0FBUyxDQUFDMmYsU0FBUyxHQUFHeUIsVUFBVTs7TUFFbkU7TUFDQTdCLGNBQWMsQ0FBQ3ZmLFNBQVMsRUFBRTJmLFNBQVMsRUFBRTBCLGlCQUFpQixDQUFDLENBQUMsQ0FBQztJQUMzRDtFQUNGLENBQUMsRUFBRSxDQUFDdnlCLFlBQVksQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFFRCxpRUFBZTNCLGdCQUFnQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3ZFMkI7QUFFbkQsTUFBTW8wQixlQUFlLEdBQUcsVUFBVTtBQUNsQyxNQUFNQyxpQkFBaUIsR0FBRyxZQUFZO0FBQ3RDLE1BQU1DLGdCQUFnQixHQUFHLFdBQVc7QUFDcEMsTUFBTUMsaUJBQWlCLEdBQUcsWUFBWTtBQUV0QyxNQUFNaFcsZ0JBQWdCLEdBQUkxa0IsTUFBTSxJQUFLO0VBQUEsSUFBQXVsQixtQkFBQSxFQUFBb1Ysa0JBQUEsRUFBQUMsb0JBQUEsRUFBQUMsbUJBQUE7RUFDMUMsTUFBTUMsU0FBUyxHQUFHQSxDQUFBLEtBQU07SUFBQSxJQUFBclksYUFBQSxFQUFBQyxjQUFBO0lBQ3RCLElBQUksQ0FBQzFpQixNQUFNLENBQUM2aUIsU0FBUyxFQUFFLE9BQU80WCxnQkFBZ0I7SUFDOUMsSUFBSXo2QixNQUFNLENBQUM0MEIsUUFBUSxLQUFLLENBQUMsRUFBRSxPQUFPOEYsaUJBQWlCO0lBQ25ELElBQUksR0FBQWpZLGFBQUEsR0FBQ3ppQixNQUFNLENBQUM0RCxLQUFLLGNBQUE2ZSxhQUFBLGVBQVpBLGFBQUEsQ0FBY3pmLFVBQVUsS0FBSSxHQUFBMGYsY0FBQSxHQUFDMWlCLE1BQU0sQ0FBQzRELEtBQUssY0FBQThlLGNBQUEsZUFBWkEsY0FBQSxDQUFjemYsU0FBUyxHQUN2RCxPQUFPdTNCLGlCQUFpQjtJQUMxQixPQUFPeDZCLE1BQU0sQ0FBQzRELEtBQUssQ0FBQ2hILE1BQU07RUFDNUIsQ0FBQztFQUVELElBQUksQ0FBQ29ELE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztFQUV0QixNQUFNcEQsTUFBTSxHQUFHaytCLFNBQVMsQ0FBQyxDQUFDO0VBQzFCLE1BQU0zRSxRQUFRLEdBQUduMkIsTUFBTSxDQUFDNmlCLFNBQVMsSUFBSWptQixNQUFNLEtBQUs2OUIsZ0JBQWdCO0VBQ2hFLE1BQU0vWixZQUFZLEdBQUc0WixzRUFBa0IsQ0FBQ3Q2QixNQUFNLENBQUM7RUFDL0MsTUFBTXl3QixjQUFjLEdBQ2xCLENBQUF6d0IsTUFBTSxhQUFOQSxNQUFNLGdCQUFBdWxCLG1CQUFBLEdBQU52bEIsTUFBTSxDQUFFd2YsV0FBVyxjQUFBK0YsbUJBQUEsdUJBQW5CQSxtQkFBQSxDQUFxQndWLGtCQUFrQixNQUN2Qy82QixNQUFNLGFBQU5BLE1BQU0sZ0JBQUEyNkIsa0JBQUEsR0FBTjM2QixNQUFNLENBQUVnN0IsVUFBVSxjQUFBTCxrQkFBQSx1QkFBbEJBLGtCQUFBLENBQW9CSSxrQkFBa0I7RUFDeEMsTUFBTS9GLFVBQVUsR0FBR3A0QixNQUFNLEtBQUsyOUIsZUFBZTtFQUM3QyxNQUFNM1gsWUFBWSxHQUFHaG1CLE1BQU0sS0FBSzg5QixpQkFBaUI7RUFDakQsTUFBTXpWLFlBQVksR0FBR3JvQixNQUFNLEtBQUs0OUIsaUJBQWlCO0VBQ2pELE1BQU0vVSxXQUFXLEdBQ2YsQ0FBQzdDLFlBQVksTUFBQWdZLG9CQUFBLEdBQ2I1NkIsTUFBTSxDQUFDd2YsV0FBVyxjQUFBb2Isb0JBQUEsdUJBQWxCQSxvQkFBQSxDQUFvQkssa0JBQWtCLE1BQ3JDLENBQUNqN0IsTUFBTSxDQUFDZzdCLFVBQVUsTUFBQUgsbUJBQUEsR0FBSTc2QixNQUFNLENBQUNnN0IsVUFBVSxjQUFBSCxtQkFBQSx1QkFBakJBLG1CQUFBLENBQW1CSSxrQkFBa0IsRUFBQztFQUUvRCxPQUFPO0lBQ0xyK0IsTUFBTTtJQUNObzRCLFVBQVU7SUFDVnBTLFlBQVk7SUFDWnFDLFlBQVk7SUFDWmtSLFFBQVE7SUFDUnpWLFlBQVk7SUFDWitQLGNBQWM7SUFDZGhMO0VBQ0YsQ0FBQztBQUNILENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMxQzBCO0FBQ3NCO0FBQ2U7QUFDN0I7QUFDQTs7QUFFbkM7QUFDQTtBQUNBO0FBQ0E7O0FBRUF6dUIsa0RBT00sQ0FBQ21rQyx5RUFBZ0I7QUFDckI7QUFBQSxDQUNDRyxHQUFHLENBQUNKLDJEQUFnQjtBQUNyQjtBQUNBO0FBQUEsQ0FDQ0ssSUFBSSxDQUFDO0VBQ0pDLFdBQVcsRUFBRSxJQUFJO0VBQ2pCQyxLQUFLLEVBQUUsS0FBSztFQUNaQyxTQUFTLEVBQUU7SUFDVE4sRUFBRSxFQUFFO01BQUVPLFdBQVcsRUFBRVAsNkNBQUVBO0lBQUMsQ0FBQztJQUN2QkMsRUFBRSxFQUFFO01BQUVNLFdBQVcsRUFBRU4sNkNBQUVBO0lBQUM7RUFDeEIsQ0FBQztFQUNETyxhQUFhLEVBQUU7SUFDYkMsV0FBVyxFQUFFLEtBQUssQ0FBQztFQUNyQjtBQUNGLENBQUMsQ0FBQztBQUVKLGlFQUFlN2tDLGdEQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUMrRTtBQUt4QjtBQTRCcEM7QUFDa0M7QUFDVjtBQUNrQjtBQUU3RCxNQUFNb2xDLG9CQUFvQixHQUFHO0VBQzNCLENBQUN6aEMsOERBQXdCLEdBQUcsRUFBRTtFQUM5QixDQUFDQyw0REFBc0IsR0FBRyxFQUFFO0VBQzVCLENBQUNJLDBEQUFvQixHQUFHLEVBQUU7RUFDMUIsQ0FBQ0YsNkRBQXVCLEdBQUcsRUFBRTtFQUM3QixDQUFDRCxnRUFBMEIsR0FBRyxFQUFFO0VBQ2hDLENBQUNFLDBEQUFvQixHQUFHLEVBQUU7RUFDMUIsQ0FBQ0UsNkRBQXVCLEdBQUcsRUFBRTtFQUM3QixDQUFDUCxxREFBZSxHQUFHO0FBQ3JCLENBQUM7QUFFRCxNQUFNMmhDLGFBQWEsR0FBRztFQUNwQjdoQyxNQUFNLEVBQUUsSUFBSTtFQUNaQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0VBQ1I2aEMsYUFBYSxFQUFFLEtBQUs7RUFDcEJyZSxZQUFZLEVBQUUsRUFBRTtFQUNoQndELFdBQVcsRUFBRSxFQUFFO0VBQ2Zqb0IsY0FBYyxFQUFFLEVBQUU7RUFDbEI4K0IsYUFBYSxFQUFFLElBQUk7RUFDbkJyN0IsTUFBTSxFQUFFLENBQUMsQ0FBQztFQUNWNjZCLE9BQU8sRUFBRSxLQUFLO0VBQ2R5RSxXQUFXLEVBQUUva0Msa0RBQUksQ0FBQ3VFLE1BQU07RUFDeEJWLElBQUksRUFBRSxDQUFDLENBQUM7RUFDUkYsTUFBTSxFQUFFaWhDLG9CQUFvQjtFQUM1QmxlLG1CQUFtQixFQUFFLENBQUM7RUFDdEJDLGdCQUFnQixFQUFFLENBQUM7RUFDbkI4WSxlQUFlLEVBQUUsQ0FBQztFQUNsQnVGLFlBQVksRUFBRSxDQUFDO0VBQ2ZDLG1CQUFtQixFQUFFLENBQUM7RUFDdEJDLGdCQUFnQixFQUFFLENBQUM7RUFDbkJyVCxlQUFlLEVBQUUsQ0FBQztFQUNsQnNULFlBQVksRUFBRSxDQUFDO0VBQ2ZDLGtCQUFrQixFQUFFLENBQUM7RUFDckJsYix5QkFBeUIsRUFBRSxDQUFDO0VBQzVCQyxzQkFBc0IsRUFBRSxDQUFDO0VBQ3pCb1csUUFBUSxFQUFFO0FBQ1osQ0FBQztBQUVELE1BQU04RSxhQUFhLEdBQUcsU0FBQUEsQ0FBQSxFQUFtRDtFQUFBLElBQWxEL25CLEtBQUssR0FBQWhSLFNBQUEsQ0FBQWpJLE1BQUEsUUFBQWlJLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUd1NEIsYUFBYTtFQUFBLElBQUU7SUFBRWpxQixJQUFJO0lBQUVoVztFQUFRLENBQUMsR0FBQTBILFNBQUEsQ0FBQWpJLE1BQUEsUUFBQWlJLFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsQ0FBQyxDQUFDO0VBQ2xFLFFBQVFzTyxJQUFJO0lBQ1YsS0FBSzBwQix5RkFBVztJQUNoQixLQUFLcmtDLGlEQUFXO01BQ2QsT0FBTzRrQyxhQUFhO0lBQ3RCLEtBQUtOLHdGQUFhO01BQ2hCLE9BQUFoNkIsYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1FBQUVnakIsT0FBTyxFQUFFO01BQUk7SUFDbEMsS0FBS2tFLHVGQUFZO0lBQ2pCLEtBQUtDLHdGQUFhO01BQ2hCLE9BQUFsNkIsYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1FBQUVnakIsT0FBTyxFQUFFO01BQUs7SUFDbkMsS0FBS25nQyxxREFBZTtNQUNsQixPQUFBb0ssYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1FBQUVpakIsUUFBUSxFQUFFO01BQUk7SUFDbkMsS0FBS3JnQyxrREFBWTtNQUNmLE9BQUFxSyxhQUFBLENBQUFBLGFBQUEsS0FDSytTLEtBQUs7UUFDUjNaLE1BQU0sRUFBRWloQyxvQkFBb0I7UUFDNUIvZ0MsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUNSNmlCLG1CQUFtQixFQUFFLENBQUM7UUFDdEJDLGdCQUFnQixFQUFFO01BQUM7SUFFdkIsS0FBS3ZtQiwrQ0FBUztNQUNaLE9BQUFtSyxhQUFBLENBQUFBLGFBQUEsS0FBWStTLEtBQUssR0FBSzFZLE9BQU87SUFDL0IsS0FBS3ZFLG1EQUFhO01BQUU7UUFDbEIsTUFBTTtVQUFFNEYsS0FBSztVQUFFQyxJQUFJLEVBQUVrTjtRQUFLLENBQUMsR0FBR3hPLE9BQU87UUFDckMsT0FBQTJGLGFBQUEsQ0FBQUEsYUFBQSxLQUFZK1MsS0FBSztVQUFFaWpCLFFBQVEsRUFBRTtZQUFFdDZCLEtBQUs7WUFBRW1OO1VBQUs7UUFBQztNQUM5QztJQUNBLEtBQUsvUSw4Q0FBUTtNQUNYLE9BQUFrSSxhQUFBLENBQUFBLGFBQUEsS0FBWStTLEtBQUs7UUFBRXJhLElBQUksRUFBRTJCO01BQU87SUFDbEMsS0FBS3RFLG1EQUFhO01BQUU7UUFDbEIsT0FBQWlLLGFBQUEsQ0FBQUEsYUFBQSxLQUFZK1MsS0FBSztVQUFFM1osTUFBTSxFQUFBNEcsYUFBQSxDQUFBQSxhQUFBLEtBQU8rUyxLQUFLLENBQUMzWixNQUFNLEdBQUtpQixPQUFPO1FBQUU7TUFDNUQ7SUFDQSxLQUFLckUsaURBQVc7TUFBRTtRQUNoQixPQUFBZ0ssYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1VBQUV6WixJQUFJLEVBQUEwRyxhQUFBLEtBQU8zRixPQUFPO1FBQUU7TUFDekM7SUFDQSxLQUFLcEUscURBQWU7TUFBRTtRQUNwQixNQUFNO1VBQUVtSyxJQUFJO1VBQUUyNkIsS0FBSztVQUFFckYsWUFBWTtVQUFFc0Y7UUFBVSxDQUFDLEdBQUczZ0MsT0FBTyxDQUFDTSxRQUFRO1FBRWpFLElBQUl3L0Isd0RBQWdCLENBQUN6RSxZQUFZLEVBQUUzaUIsS0FBSyxDQUFDbUosWUFBWSxFQUFFNmUsS0FBSyxDQUFDLEVBQzNELE9BQU9ob0IsS0FBSztRQUVkLE1BQU1tSixZQUFZLEdBQ2hCd1osWUFBWSxLQUFLbmdDLHdEQUFVLEdBQUc2SyxJQUFJLEdBQUcsQ0FBQyxHQUFHMlMsS0FBSyxDQUFDbUosWUFBWSxFQUFFLEdBQUc5YixJQUFJLENBQUM7UUFFdkUsT0FBQUosYUFBQSxDQUFBQSxhQUFBLEtBQ0srUyxLQUFLO1VBQ1JtSixZQUFZO1VBQ1p1ZSxZQUFZLEVBQUVNLEtBQUs7VUFDbkI1ZSxtQkFBbUIsRUFBRXVaLFlBQVk7VUFDakN0WixnQkFBZ0IsRUFBRTRlO1FBQVM7TUFFL0I7SUFDQSxLQUFLM2tDLDZEQUF1QjtNQUFFO1FBQzVCLE1BQU07VUFBRStKLElBQUk7VUFBRTI2QixLQUFLO1VBQUVyRixZQUFZO1VBQUVzRjtRQUFVLENBQUMsR0FBRzNnQyxPQUFPLENBQUNNLFFBQVE7UUFFakUsSUFBSXcvQix3REFBZ0IsQ0FBQ3pFLFlBQVksRUFBRTNpQixLQUFLLENBQUMyTSxXQUFXLEVBQUVxYixLQUFLLENBQUMsRUFDMUQsT0FBT2hvQixLQUFLO1FBRWQsTUFBTTJNLFdBQVcsR0FDZmdXLFlBQVksS0FBS25nQyx3REFBVSxHQUFHNkssSUFBSSxHQUFHLENBQUMsR0FBRzJTLEtBQUssQ0FBQzJNLFdBQVcsRUFBRSxHQUFHdGYsSUFBSSxDQUFDO1FBRXRFLE9BQUFKLGFBQUEsQ0FBQUEsYUFBQSxLQUNLK1MsS0FBSztVQUNSMk0sV0FBVztVQUNYbWIsa0JBQWtCLEVBQUVFLEtBQUs7VUFDekJwYix5QkFBeUIsRUFBRStWLFlBQVk7VUFDdkM5VixzQkFBc0IsRUFBRW9iO1FBQVM7TUFFckM7SUFDQSxLQUFLbGtDLDBEQUFvQjtNQUFFO1FBQ3pCLE1BQU07VUFBRW9sQjtRQUFhLENBQUMsR0FBR25KLEtBQUs7UUFDOUIsTUFBTTtVQUFFM1MsSUFBSTtVQUFFMjZCLEtBQUs7VUFBRXJGLFlBQVk7VUFBRXNGO1FBQVUsQ0FBQyxHQUFHM2dDLE9BQU8sQ0FBQ00sUUFBUTtRQUNqRSxNQUFNc2dDLFdBQVcsR0FBRy9lLFlBQVksQ0FBQ21HLElBQUksQ0FBRTZZLENBQUM7VUFBQSxJQUFBQyxNQUFBO1VBQUEsT0FBS0QsQ0FBQyxDQUFDcitCLEVBQUUsT0FBQXMrQixNQUFBLEdBQUsvNkIsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFBKzZCLE1BQUEsdUJBQVBBLE1BQUEsQ0FBUy84QixRQUFRO1FBQUEsRUFBQztRQUV4RSxJQUFJKzdCLHdEQUFnQixDQUFDekUsWUFBWSxFQUFFdUYsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUUxYixhQUFhLEVBQUV3YixLQUFLLENBQUMsRUFDbkUsT0FBT2hvQixLQUFLO1FBRWQsTUFBTXFvQixZQUFZLEdBQUFwN0IsYUFBQSxDQUFBQSxhQUFBLEtBQ2JpN0IsV0FBVztVQUNkMWIsYUFBYSxFQUNYbVcsWUFBWSxLQUFLbmdDLHdEQUFVLEdBQ3ZCNkssSUFBSSxHQUNKLENBQUMsR0FBRzY2QixXQUFXLENBQUMxYixhQUFhLEVBQUUsR0FBR25mLElBQUksQ0FBQztVQUM3Q3VuQixvQkFBb0IsRUFBRStOLFlBQVk7VUFDbEMyRixpQkFBaUIsRUFBRUwsU0FBUztVQUM1QjdZLGFBQWEsRUFBRTRZO1FBQUssRUFDckI7UUFDRCxPQUFBLzZCLGFBQUEsQ0FBQUEsYUFBQSxLQUNLK1MsS0FBSztVQUNSbUosWUFBWSxFQUFFQSxZQUFZLENBQUNyZCxHQUFHLENBQUV5OEIsRUFBRSxJQUNoQ0EsRUFBRSxDQUFDeitCLEVBQUUsS0FBS3UrQixZQUFZLENBQUN2K0IsRUFBRSxHQUFHdStCLFlBQVksR0FBR0UsRUFDN0M7UUFBQztNQUVMO0lBQ0EsS0FBSzVqQyxxRUFBK0I7TUFBRTtRQUNwQyxNQUFNO1VBQUV3a0I7UUFBYSxDQUFDLEdBQUduSixLQUFLO1FBQzlCLE1BQU0zVCxzQkFBc0IsR0FBRy9FLE9BQU87UUFDdEMsTUFBTWtDLEtBQUssR0FBRzJmLFlBQVksQ0FBQ21HLElBQUksQ0FDNUI2WSxDQUFDO1VBQUEsSUFBQUsscUJBQUE7VUFBQSxPQUFLTCxDQUFDLENBQUNyK0IsRUFBRSxPQUFBMCtCLHFCQUFBLEdBQUtuOEIsc0JBQXNCLENBQUMsQ0FBQyxDQUFDLGNBQUFtOEIscUJBQUEsdUJBQXpCQSxxQkFBQSxDQUEyQm45QixRQUFRO1FBQUEsQ0FDckQsQ0FBQztRQUNELE1BQU1vOUIsY0FBYyxHQUFHai9CLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFZ2pCLGFBQWEsQ0FBQzFnQixHQUFHLENBQzVDWixNQUFNLElBQ0xtQixzQkFBc0IsQ0FBQ2lqQixJQUFJLENBQUVvWixHQUFHLElBQUtBLEdBQUcsQ0FBQzUrQixFQUFFLEtBQUtvQixNQUFNLENBQUNwQixFQUFFLENBQUMsSUFBSW9CLE1BQ2xFLENBQUM7UUFDRCxNQUFNbTlCLFlBQVksR0FBQXA3QixhQUFBLENBQUFBLGFBQUEsS0FDYnpELEtBQUs7VUFDUmdqQixhQUFhLEVBQUVpYztRQUFjLEVBQzlCO1FBQ0QsT0FBQXg3QixhQUFBLENBQUFBLGFBQUEsS0FDSytTLEtBQUs7VUFDUm1KLFlBQVksRUFBRUEsWUFBWSxDQUFDcmQsR0FBRyxDQUFFeThCLEVBQUUsSUFDaENBLEVBQUUsQ0FBQ3orQixFQUFFLEtBQUt1K0IsWUFBWSxDQUFDditCLEVBQUUsR0FBR3UrQixZQUFZLEdBQUdFLEVBQzdDO1FBQUM7TUFFTDtJQUNBLEtBQUsva0Msa0RBQVk7TUFBRTtRQUNqQixPQUFBeUosYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1VBQUV3akIsYUFBYSxFQUFFO1FBQUk7TUFDeEM7SUFDQSxLQUFLLy9CLG9EQUFjO01BQUU7UUFDbkIsTUFBTXlILE1BQU0sR0FBRzVELE9BQU8sQ0FBQ00sUUFBUTtRQUMvQixPQUFBcUYsYUFBQSxDQUFBQSxhQUFBLEtBQVkrUyxLQUFLO1VBQUV3akIsYUFBYSxFQUFFdDRCO1FBQU07TUFDMUM7SUFDQSxLQUFLL0csNkRBQXVCO01BQUU7UUFDNUIsTUFBTTtVQUFFa0o7UUFBSyxDQUFDLEdBQUcvRixPQUFPLENBQUNNLFFBQVE7UUFDakMsT0FBQXFGLGFBQUEsQ0FBQUEsYUFBQSxLQUFZK1MsS0FBSztVQUFFdGIsY0FBYyxFQUFFMkk7UUFBSTtNQUN6QztJQUNBLEtBQUs5SixtREFBYTtNQUFFO1FBQ2xCLE1BQU1vbEMsVUFBVSxHQUFHcmhDLE9BQU8sQ0FBQ00sUUFBUTtRQUVuQyxNQUFNZ2hDLFNBQVMsR0FBRzVvQixLQUFLLENBQUNtSixZQUFZLENBQUNyZCxHQUFHLENBQUV0QyxLQUFLLElBQUs7VUFDbEQsTUFBTXEvQixVQUFVLEdBQUd4QiwwRUFBc0IsQ0FDdkM3OUIsS0FBSyxDQUFDZ2pCLGFBQWEsRUFDbkJtYyxVQUNGLENBQUM7VUFDRCxPQUFBMTdCLGFBQUEsQ0FBQUEsYUFBQSxLQUFZekQsS0FBSztZQUFFZ2pCLGFBQWEsRUFBRXFjO1VBQVU7UUFDOUMsQ0FBQyxDQUFDO1FBRUYsTUFBTUMsY0FBYyxHQUFHekIsMEVBQXNCLENBQzNDcm5CLEtBQUssQ0FBQzJNLFdBQVcsRUFDakJnYyxVQUNGLENBQUM7UUFFRCxPQUFBMTdCLGFBQUEsQ0FBQUEsYUFBQSxLQUFZK1MsS0FBSztVQUFFbUosWUFBWSxFQUFFeWYsU0FBUztVQUFFamMsV0FBVyxFQUFFbWM7UUFBYztNQUN6RTtJQUNBLEtBQUtsbEMscURBQWU7SUFDcEIsS0FBS0QsbURBQWE7TUFBRTtRQUNsQixNQUFNZ2xDLFVBQVUsR0FBR3JoQyxPQUFPLENBQUNNLFFBQVE7UUFDbkMsTUFBTWdoQyxTQUFTLEdBQUc1b0IsS0FBSyxDQUFDbUosWUFBWSxDQUFDcmQsR0FBRyxDQUFFdEMsS0FBSyxJQUFLO1VBQ2xELE1BQU1xL0IsVUFBVSxHQUFHci9CLEtBQUssQ0FBQ2dqQixhQUFhLENBQUMxZ0IsR0FBRyxDQUFFOUQsQ0FBQyxJQUMzQ0EsQ0FBQyxDQUFDOEIsRUFBRSxLQUFLNitCLFVBQVUsQ0FBQzcrQixFQUFFLEdBQUc2K0IsVUFBVSxHQUFHM2dDLENBQ3hDLENBQUM7VUFFRCxPQUFBaUYsYUFBQSxDQUFBQSxhQUFBLEtBQVl6RCxLQUFLO1lBQUVnakIsYUFBYSxFQUFFcWM7VUFBVTtRQUM5QyxDQUFDLENBQUM7UUFFRixPQUFBNTdCLGFBQUEsQ0FBQUEsYUFBQSxLQUFZK1MsS0FBSztVQUFFd2pCLGFBQWEsRUFBRW1GLFVBQVU7VUFBRXhmLFlBQVksRUFBRXlmO1FBQVM7TUFDdkU7SUFDQTtNQUNFLE9BQU81b0IsS0FBSztFQUNoQjtBQUNGLENBQUM7QUFFRCxpRUFBZStuQixhQUFhOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3pQSTtBQUNrQjtBQVUzQjtBQUN5QjtBQUNSO0FBQ0Y7QUFFL0IsTUFBTTJCLFFBQVEsR0FBR3JoQyxJQUFBLElBTWxCO0VBQUEsSUFObUI7SUFDdkJzaEMsUUFBUTtJQUNSQyxRQUFRO0lBQ1Jsa0MsTUFBTTtJQUNOeUQsVUFBVTtJQUNWc0U7RUFDRixDQUFDLEdBQUFwRixJQUFBO0VBQ0M7RUFDQSxNQUFNd2hDLFFBQVEsR0FBR0osc0RBQWUsQ0FBQztJQUMvQnJnQyxXQUFXLEVBQUUyK0IsZ0RBQWFBO0VBQzVCLENBQUMsQ0FBQztFQUVGLE1BQU0rQixLQUFLLEdBQUdmLGdFQUFjLENBQUM7SUFDM0JnQixPQUFPLEVBQUVkLDZEQUFjLENBQ3JCO01BQ0UzZ0MsR0FBRyw0QkFBQTFCLE1BQUEsQ0FBNEIraUMsUUFBUSxDQUFFO01BQ3pDSCxPQUFPQSxvRUFBQUE7SUFDVCxDQUFDLEVBQ0RLLFFBQ0YsQ0FBQztJQUNERyxVQUFVLEVBQUdDLG9CQUFvQixJQUMvQkEsb0JBQW9CLENBQUM7TUFDbkJDLEtBQUssRUFBRTtRQUNMQyxhQUFhLEVBQUU7VUFDYlIsUUFBUTtVQUNSeGdDLFVBQVU7VUFDVnpELE1BQU07VUFDTmtrQyxRQUFRO1VBQ1JuOEI7UUFDRjtNQUNGLENBQUM7TUFDRDI4QixjQUFjLEVBQUUsS0FBSztNQUNyQkMsaUJBQWlCLEVBQUU7UUFDakJDLGNBQWMsRUFBRSxDQUFDcEIsZ0RBQUssRUFBRUMsb0RBQVMsRUFBRUMsZ0RBQUssRUFBRUMsa0RBQU8sRUFBRUMsZ0RBQUssRUFBRUMsbURBQVE7TUFDcEU7SUFDRixDQUFDO0VBQ0wsQ0FBQyxDQUFDO0VBRUYsT0FBT08sS0FBSztBQUNkLENBQUM7QUFFTSxNQUFNUyxZQUFZLEdBQUlDLE1BQU0sSUFBSztFQUN0QyxNQUFNVixLQUFLLEdBQUd6VSw4Q0FBTyxDQUFDLE1BQU1xVSxRQUFRLENBQUNjLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUNqRCxNQUFNQyxTQUFTLEdBQUdwViw4Q0FBTyxDQUFDLE1BQU0yVCwyREFBWSxDQUFDYyxLQUFLLENBQUMsRUFBRSxDQUFDQSxLQUFLLENBQUMsQ0FBQztFQUU3RCxPQUFPO0lBQ0xBLEtBQUs7SUFDTFc7RUFDRixDQUFDO0FBQ0gsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzlEeUQ7QUFDbEI7O0FBRXhDO0FBQ0EsTUFBTUksa0JBQWtCLEdBQUdBLENBQUEsS0FBTTtFQUMvQixNQUFNLElBQUlDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQztFQUNyQztBQUNGLENBQUM7QUFFTSxNQUFNMW9DLG9CQUFvQixHQUFHLE1BQUFBLENBQUEsS0FBWTtFQUM5QyxJQUFJO0lBQ0YsT0FBTyxNQUFNdW9DLGdHQUFjLENBQUMsQ0FBQyxDQUFDM2dDLEtBQUssQ0FBRUMsQ0FBQyxJQUFLO01BQ3pDMkUsT0FBTyxDQUFDQyxHQUFHLENBQUMsd0RBQXdELEVBQUU1RSxDQUFDLENBQUM7TUFDeEUyZ0MsMkRBQXVCLENBQUMzZ0MsQ0FBQyxDQUFDO01BQzFCeWdDLDRGQUFVLENBQUMsQ0FBQztNQUNaLE9BQU8sSUFBSTtJQUNiLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQyxPQUFPemdDLENBQUMsRUFBRTtJQUNWMkUsT0FBTyxDQUFDQyxHQUFHLENBQUMsd0RBQXdELEVBQUU1RSxDQUFDLENBQUM7SUFDeEUyZ0MsMkRBQXVCLENBQUMzZ0MsQ0FBQyxDQUFDO0lBQzFCeWdDLDRGQUFVLENBQUMsQ0FBQztJQUNaLE9BQU8sSUFBSTtFQUNiO0FBQ0YsQ0FBQztBQUVNLE1BQU12b0MsaUJBQWlCLEdBQUcsTUFBQUEsQ0FBQSxLQUMvQnNJLE9BQU8sQ0FBQ0MsTUFBTSxDQUFDLElBQUlvZ0MsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QnhDLE1BQU1FLG9CQUFvQixHQUFHLEVBQUU7QUFDL0IsTUFBTUMsbUJBQW1CLEdBQUcsRUFBRTtBQUM5QixNQUFNamlCLGFBQWEsR0FBRyxDQUFDO0FBQ3ZCLE1BQU16VixlQUFlLEdBQUcsSUFBSTtBQUM1QixNQUFNMjNCLE9BQU8sR0FBRyxDQUFDO0FBQ2pCLE1BQU03b0Msc0JBQXNCLEdBQUcsQ0FBQztBQUNoQyxNQUFNRyxVQUFVLEdBQUcsQ0FBQztBQUNwQixNQUFNaXNCLHdCQUF3QixHQUFHLENBQUM7QUFDbEMsTUFBTW1KLFFBQVEsR0FBRyxDQUFDO0FBQ2xCLE1BQU1FLFFBQVEsR0FBRyxDQUFDO0FBQ2xCLE1BQU1ELFVBQVUsR0FBRyxDQUFDO0FBRXBCLE1BQU00TixlQUFlLEdBQUcsaUJBQWlCO0FBQ3pDLE1BQU1DLGlCQUFpQixHQUFHLG1CQUFtQjtBQUM3QyxNQUFNeUYsY0FBYyxHQUFHLGdCQUFnQjtBQUN2QyxNQUFNeEYsZ0JBQWdCLEdBQUcsa0JBQWtCO0FBQzNDLE1BQU15RixZQUFZLEdBQUcsY0FBYztBQUNuQyxNQUFNQyxpQkFBaUIsR0FBRyxtQkFBbUI7QUFDN0MsTUFBTXpGLGlCQUFpQixHQUFHLG1CQUFtQjtBQUU3QyxNQUFNMEYscUJBQXFCLEdBQUcsdUJBQXVCO0FBQ3JELE1BQU1DLHNCQUFzQixHQUFHLHdCQUF3QjtBQUN2RCxNQUFNQyxzQkFBc0IsR0FBRyx3QkFBd0I7QUFDdkQsTUFBTUMsd0JBQXdCLEdBQUcsV0FBVztBQUM1QyxNQUFNQyx5QkFBeUIsR0FBRyxVQUFVO0FBQzVDLE1BQU1DLHlCQUF5QixHQUFHLFVBQVU7QUFFNUMsTUFBTUMsd0JBQXdCLEdBQUcsS0FBSztBQUV0QyxNQUFNQyxRQUFRLEdBQUcsQ0FBQztBQUNsQixNQUFNcE0sUUFBUSxHQUFHLENBQUM7QUFDbEIsTUFBTXFNLFNBQVMsR0FBRyxDQUFDO0FBQ25CLE1BQU1DLFFBQVEsR0FBRyxDQUFDO0FBRWxCLE1BQU10cEMsbUJBQW1CLEdBQUcsRUFBRTtBQUM5QixNQUFNRixjQUFjLEdBQUcsRUFBRTtBQUV6QixNQUFNRCxXQUFXLEdBQUc7RUFDekIsR0FBRyxFQUFFLEdBQUc7RUFDUixHQUFHLEVBQUUsR0FBRztFQUNSLEdBQUcsRUFBRSxHQUFHO0VBQ1IsR0FBRyxFQUFFO0FBQ1AsQ0FBQztBQUVNLE1BQU1JLElBQUksR0FBRztFQUNsQnVFLE1BQU0sRUFBRSxRQUFRO0VBQ2hCNEQsT0FBTyxFQUFFO0FBQ1gsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0NvQztBQUNLO0FBTXJCO0FBRWQsTUFBTWlmLGNBQWMsR0FBR0EsQ0FBQ3ZoQixLQUFLLEVBQUFGLElBQUEsS0FBdUM7RUFBQSxJQUFyQztNQUFFMmpDLE1BQU0sR0FBRztJQUFvQixDQUFDLEdBQUEzakMsSUFBQTtJQUFUcTFCLE9BQU8sR0FBQXhrQixxRkFBQSxDQUFBN1EsSUFBQSxFQUFBOFEsU0FBQTtFQUNsRSxNQUFNOHlCLGNBQWMsR0FBRztJQUNyQnBoQixRQUFRLEVBQUUsS0FBSztJQUNmcWhCLHFCQUFxQixFQUFFLENBQUM7SUFDeEJDLHFCQUFxQixFQUFFO0VBQ3pCLENBQUM7RUFFRCxNQUFNQyxTQUFTLEdBQUcsSUFBSUMsSUFBSSxDQUFDQyxZQUFZLENBQUNOLE1BQU0sRUFBQS8rQixhQUFBLENBQUFBLGFBQUE7SUFDNUM0SCxLQUFLLEVBQUU7RUFBVSxHQUNkbzNCLGNBQWMsR0FDZHZPLE9BQU8sQ0FDWCxDQUFDO0VBRUYsT0FBTzBPLFNBQVMsQ0FBQy9VLE1BQU0sQ0FBQzl1QixLQUFLLENBQUM7QUFDaEMsQ0FBQztBQUVNLE1BQU0rckIsZ0JBQWdCLEdBQUdBLENBQUNpWSxRQUFRLEVBQUVDLFFBQVEsS0FBSztFQUN0RCxJQUFJQSxRQUFRLEVBQ1YsT0FBTzFXLHlEQUNGLENBQUN5VyxRQUFRLEdBQUdoNUIsdURBQWUsRUFBRWk1QixRQUFRLENBQUMsQ0FDeENuVixNQUFNLENBQUMsZUFBZSxDQUFDO0VBRTVCLE9BQU92QiwyREFBVyxDQUFDeVcsUUFBUSxDQUFDLENBQUNsVixNQUFNLENBQUMsZUFBZSxDQUFDO0FBQ3RELENBQUM7QUFFTSxNQUFNeE4sb0JBQW9CLEdBQUcvZ0IsS0FBQSxJQUF1QjtFQUFBLElBQXRCO0lBQUVVLEtBQUs7SUFBRTlEO0VBQU8sQ0FBQyxHQUFBb0QsS0FBQTtFQUNwRCxJQUFJLENBQUNVLEtBQUssSUFBSSxDQUFDOUQsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBQ2hDLE1BQU1pRyxPQUFPLEdBQUduQyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRWdqQixhQUFhO0VBQ3BDLElBQUksQ0FBQzdnQixPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFFdkIsTUFBTTtJQUFFZ3JCLGVBQWU7SUFBRTVMLGVBQWU7SUFBRUMsWUFBWTtJQUFFMmhCO0VBQU8sQ0FBQyxHQUFHbmpDLEtBQUs7RUFDeEUsTUFBTTtJQUFFa2U7RUFBYSxDQUFDLEdBQUdoaUIsTUFBTTtFQUUvQixNQUFNMmtCLGFBQWEsR0FBRyxFQUFFO0VBQ3hCLElBQUl1aUIsbUJBQW1CLEdBQUcsQ0FBQztFQUUzQixNQUFNQyxjQUFjLEdBQUc7SUFBRWhpQixRQUFRLEVBQUVyaEIsS0FBSyxDQUFDcWhCO0VBQVMsQ0FBQztFQUVuRDVpQixNQUFNLENBQUMwQixJQUFJLENBQUNILEtBQUssQ0FBQ3NqQyw4QkFBOEIsQ0FBQyxDQUFDaGhDLEdBQUcsQ0FBRVosTUFBTSxJQUFLO0lBQ2hFLE1BQU02aEMsVUFBVSxHQUFHcmxCLFlBQVksYUFBWkEsWUFBWSx1QkFBWkEsWUFBWSxDQUFFNEgsSUFBSSxDQUFFMGQsRUFBRSxJQUFLQSxFQUFFLENBQUNuakMsSUFBSSxLQUFLcUIsTUFBTSxDQUFDO0lBQ2pFLElBQUksQ0FBQzZoQyxVQUFVLEVBQUUsT0FBTyxJQUFJO0lBQzVCMWlCLGFBQWEsQ0FBQzFqQixJQUFJLENBQUM7TUFDakJzbUMsY0FBYyxFQUFFRixVQUFVLENBQUNqakMsRUFBRTtNQUM3QjRnQixXQUFXLEVBQUVxaUIsVUFBVTtNQUN2QmxqQyxJQUFJLEVBQUVxQixNQUFNO01BQ1p1ZixHQUFHLEVBQUVqaEIsS0FBSyxDQUFDc2pDLDhCQUE4QixDQUFDNWhDLE1BQU07SUFDbEQsQ0FBQyxDQUFDO0lBQ0YwaEMsbUJBQW1CLElBQ2pCRyxVQUFVLENBQUNwaUIsSUFBSSxHQUFHbmhCLEtBQUssQ0FBQ3NqQyw4QkFBOEIsQ0FBQzVoQyxNQUFNLENBQUM7SUFFaEUsT0FBT21mLGFBQWE7RUFDdEIsQ0FBQyxDQUFDO0VBRUYsTUFBTTZpQixhQUFhLEdBQUdwakIsY0FBYyxDQUFDOGlCLG1CQUFtQixFQUFFQyxjQUFjLENBQUM7RUFFekUsTUFBTTVpQixhQUFhLEdBQUdILGNBQWMsQ0FBQ2lCLGVBQWUsRUFBRThoQixjQUFjLENBQUM7RUFDckUsTUFBTTNpQixXQUFXLEdBQUdKLGNBQWMsQ0FBQzZNLGVBQWUsRUFBRWtXLGNBQWMsQ0FBQztFQUNuRSxNQUFNMWlCLFVBQVUsR0FBR0wsY0FBYyxDQUFDa0IsWUFBWSxFQUFFNmhCLGNBQWMsQ0FBQztFQUMvRCxNQUFNemlCLFdBQVcsR0FBR25pQixNQUFNLENBQUNrbEMsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBQzdqQyxLQUFLLEVBQUUsUUFBUSxDQUFDLEdBQ3JFc2dCLGNBQWMsQ0FBQzZpQixNQUFNLEVBQUVFLGNBQWMsQ0FBQyxHQUN0Qy9pQixjQUFjLENBQUNvakIsYUFBYSxFQUFFTCxjQUFjLENBQUM7RUFFakQsT0FBTztJQUNMNWlCLGFBQWE7SUFDYkMsV0FBVztJQUNYQyxVQUFVO0lBQ1ZDLFdBQVc7SUFDWEM7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU1pakIsZUFBZSxHQUFHQSxDQUFDbmtCLFlBQVksRUFBRWhmLE9BQU8sS0FBSztFQUFBLElBQUFvakMsUUFBQTtFQUN4RCxNQUFNQyxNQUFNLEdBQUdya0IsWUFBWSxDQUFDOWlCLE1BQU0sQ0FBRThoQyxDQUFDLElBQUtBLENBQUMsQ0FBQ3IrQixFQUFFLEtBQUtLLE9BQU8sQ0FBQztFQUMzRCxRQUFBb2pDLFFBQUEsR0FBT0MsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFBRCxRQUFBLHVCQUFUQSxRQUFBLENBQVcvZ0IsYUFBYTtBQUNqQyxDQUFDO0FBRU0sTUFBTWloQiwyQkFBMkIsR0FBSUMsRUFBRSxJQUFLO0VBQ2pELE1BQU03bUMsS0FBSyxHQUFHNm1DLEVBQUUsQ0FBQ0MsUUFBUSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHcDZCLHVEQUFlO0VBQ3ZELE1BQU16TSxLQUFLLEdBQ1Q0bUMsRUFBRSxDQUFDQyxRQUFRLENBQUMzQyw0REFBb0IsRUFBRUMsMkRBQW1CLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUM1RDEzQix1REFBZTtFQUNqQixPQUFPO0lBQ0wxTSxLQUFLO0lBQ0xDO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFTSxNQUFNOG1DLGtCQUFrQixHQUFHQSxDQUFBLEtBQ2hDeEosSUFBSSxDQUFDeUosS0FBSyxDQUFDLENBQUMsSUFBSUMsSUFBSSxDQUFDLENBQUMsR0FBR3Y2Qix1REFBZSxDQUFDO0FBRXBDLE1BQU13NkIsTUFBTSxHQUFHQSxDQUFBLEtBQU0sQ0FBQzFvQyxRQUFRLEVBQUU0RCxRQUFRLEtBQUs7RUFDbEQsTUFBTTtJQUFFK2tDO0VBQVcsQ0FBQyxHQUFHL2tDLFFBQVEsQ0FBQyxDQUFDO0VBQ2pDLE9BQU8sQ0FBQStrQyxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRUMsTUFBTSxLQUFJLElBQUksR0FBR0wsa0JBQWtCLENBQUMsQ0FBQyxHQUFHSSxVQUFVLGFBQVZBLFVBQVUsdUJBQVZBLFVBQVUsQ0FBRUMsTUFBTTtBQUMvRSxDQUFDO0FBRU0sTUFBTS9pQixNQUFNLEdBQUdBLENBQUEsS0FBTTtFQUMxQixNQUFNN2xCLFFBQVEsR0FBR21xQix3REFBVyxDQUFDLENBQUM7RUFFOUIsT0FBT25xQixRQUFRLENBQUMwb0MsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMzQixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLE1BQU0zRyxnQkFBZ0IsR0FBR0EsQ0FBQzhHLFdBQVcsRUFBRTdnQyxJQUFJLEVBQUUyNkIsS0FBSyxLQUFLO0VBQzVELElBQUl0Z0MsR0FBRyxHQUFHLEtBQUs7RUFDZixNQUFNNmhCLFVBQVUsR0FBR3JOLEtBQUssQ0FBQ0MsT0FBTyxDQUFDOU8sSUFBSSxDQUFDLEdBQUdBLElBQUksQ0FBQ3RHLE1BQU0sR0FBRyxDQUFDO0VBQ3hEO0VBQ0EsSUFBSW1uQyxXQUFXLEdBQUcxckMsa0RBQVUsSUFBSSttQixVQUFVLEdBQUcsQ0FBQyxJQUFJQSxVQUFVLEtBQUt5ZSxLQUFLLEVBQ3BFdGdDLEdBQUcsR0FBRyxJQUFJO0VBQ1osT0FBT0EsR0FBRztBQUNaLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQzNIb0M7QUFDa0I7QUFDNUI7QUFFcEIsTUFBTXltQyxlQUFlLEdBQUdBLENBQUN6b0MsTUFBTSxFQUFFOGxCLEdBQUcsS0FBSztFQUM5QyxJQUFJLENBQUM5bEIsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUV4QixNQUFNMG9DLGFBQWEsR0FDakIxb0MsTUFBTSxhQUFOQSxNQUFNLGVBQU5BLE1BQU0sQ0FBRTJvQyx5QkFBeUIsSUFDakMzb0MsTUFBTSxDQUFDMm9DLHlCQUF5QixHQUFHM29DLE1BQU0sQ0FBQzRvQyxRQUFRLEdBQzlDNW9DLE1BQU0sQ0FBQzJvQyx5QkFBeUIsR0FDaEMzb0MsTUFBTSxDQUFDNG9DLFFBQVE7RUFFckIsT0FBTzlpQixHQUFHLEdBQUc0aUIsYUFBYTtBQUM1QixDQUFDO0FBRU0sTUFBTUcsa0JBQWtCLEdBQUdBLENBQUM3b0MsTUFBTSxFQUFFOGxCLEdBQUcsS0FBSztFQUNqRCxJQUFJLENBQUM5bEIsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUV4QixPQUFPQSxNQUFNLENBQUM4b0MsVUFBVSxHQUFHaGpCLEdBQUc7QUFDaEMsQ0FBQztBQUVNLE1BQU1pakIsaUJBQWlCLEdBQUkvb0MsTUFBTSxJQUFLO0VBQzNDLElBQUksQ0FBQ0EsTUFBTSxFQUFFLE9BQU8sSUFBSTtFQUN4QixNQUFNZ3BDLFFBQVEsR0FBRzVZLHNEQUFNLENBQUNwd0IsTUFBTSxDQUFDOG9DLFVBQVUsR0FBR2o3Qix1REFBZSxDQUFDLENBQUNrNUIsRUFBRSxDQUM3RC9tQyxNQUFNLENBQUNpcEMsWUFDVCxDQUFDO0VBQ0QsTUFBTUMsTUFBTSxHQUFHOVksc0RBQU0sQ0FBQ3B3QixNQUFNLENBQUM0b0MsUUFBUSxHQUFHLzZCLHVEQUFlLENBQUMsQ0FBQ2s1QixFQUFFLENBQ3pEL21DLE1BQU0sQ0FBQ2lwQyxZQUNULENBQUM7RUFDRCxNQUFNRSxJQUFJLEdBQUdELE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFRSxJQUFJLENBQUNKLFFBQVEsRUFBRSxNQUFNLENBQUM7RUFDM0MsT0FBTztJQUNMQSxRQUFRO0lBQ1JFLE1BQU07SUFDTkM7RUFDRixDQUFDO0FBQ0gsQ0FBQztBQUVNLE1BQU01VSxzQkFBc0IsR0FBSXYwQixNQUFNLElBQUs7RUFDaEQsSUFBSSxDQUFDQSxNQUFNLEVBQUUsT0FBTyxJQUFJO0VBQ3hCLE1BQU07SUFBRWdwQyxRQUFRO0lBQUVFLE1BQU07SUFBRUM7RUFBSyxDQUFDLEdBQUdKLGlCQUFpQixDQUFDL29DLE1BQU0sQ0FBQztFQUM1RCxJQUFJLENBQUNncEMsUUFBUSxJQUFJLENBQUNFLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFDckMsSUFBSUcsZUFBZSxHQUFHLGVBQWU7RUFDckMsSUFBSUMsYUFBYSxHQUFHLGVBQWU7RUFDbkMsSUFBSU4sUUFBUSxDQUFDTyxJQUFJLENBQUMsQ0FBQyxLQUFLTCxNQUFNLENBQUNLLElBQUksQ0FBQyxDQUFDLEVBQUVGLGVBQWUsR0FBRyxTQUFTO0VBQ2xFLElBQUlMLFFBQVEsQ0FBQ1EsS0FBSyxDQUFDLENBQUMsS0FBS04sTUFBTSxDQUFDTSxLQUFLLENBQUMsQ0FBQyxFQUFFRixhQUFhLEdBQUcsVUFBVTtFQUVuRSxNQUFNRyxTQUFTLEdBQUdULFFBQVEsQ0FBQ3JYLE1BQU0sQ0FBQzBYLGVBQWUsQ0FBQztFQUNsRCxNQUFNSyxPQUFPLEdBQUdSLE1BQU0sQ0FBQ3ZYLE1BQU0sQ0FBQzJYLGFBQWEsQ0FBQztFQUU1QyxJQUFJSCxJQUFJLEdBQUczRCwrQ0FBTyxFQUFFLFVBQUF0a0MsTUFBQSxDQUFVdW9DLFNBQVMsU0FBQXZvQyxNQUFBLENBQU13b0MsT0FBTztFQUVwRCxPQUFPRCxTQUFTO0FBQ2xCLENBQUM7QUFFTSxNQUFNRSxpQkFBaUIsR0FBSTNwQyxNQUFNLElBQUs7RUFBQSxJQUFBNHBDLGlCQUFBO0VBQzNDLElBQUksQ0FBQzVwQyxNQUFNLEVBQUUsT0FBTyxJQUFJO0VBRXhCLE1BQU02cEMsUUFBUSxJQUFBRCxpQkFBQSxHQUFHNXBDLE1BQU0sQ0FBQzhwQyxTQUFTLGNBQUFGLGlCQUFBLHVCQUFoQkEsaUJBQUEsQ0FBa0JoZ0IsSUFBSSxDQUNwQ21nQixDQUFDLElBQUtBLENBQUMsQ0FBQ0MsVUFBVSxLQUFLLGFBQWEsSUFBSUQsQ0FBQyxDQUFDRSxPQUFPLEtBQUssSUFDekQsQ0FBQztFQUVELElBQUksQ0FBQ0osUUFBUSxFQUFFLE9BQU8sSUFBSTtFQUUxQixVQUFBM29DLE1BQUEsQ0FBVTJvQyxRQUFRLENBQUNLLElBQUksUUFBQWhwQyxNQUFBLENBQUsyb0MsUUFBUSxDQUFDTSxPQUFPO0FBQzlDLENBQUM7QUFFTSxNQUFNbmdCLHFCQUFxQixHQUFJaHFCLE1BQU0sSUFBSztFQUMvQyxJQUFJLENBQUNBLE1BQU0sRUFBRSxPQUFPLElBQUk7RUFFeEIsT0FBT0EsTUFBTSxDQUFDMm9DLHlCQUF5QixJQUNyQzNvQyxNQUFNLENBQUMyb0MseUJBQXlCLEdBQUczb0MsTUFBTSxDQUFDNG9DLFFBQVEsR0FDaEQ1b0MsTUFBTSxDQUFDMm9DLHlCQUF5QixHQUNoQzNvQyxNQUFNLENBQUM0b0MsUUFBUTtBQUNyQixDQUFDO0FBRU0sTUFBTXdCLGdCQUFnQixHQUFHem5DLElBQUEsSUFBZ0I7RUFBQSxJQUFBMG5DLGlCQUFBLEVBQUFDLGtCQUFBO0VBQUEsSUFBZjtJQUFFdHFDO0VBQU8sQ0FBQyxHQUFBMkMsSUFBQTtFQUN6QyxNQUFNbWpCLEdBQUcsR0FBR04seUNBQU0sQ0FBQyxDQUFDO0VBRXBCLElBQUksQ0FBQ3hsQixNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7RUFFdEIsTUFBTTZwQyxRQUFRLEdBQUdGLGlCQUFpQixDQUFDM3BDLE1BQU0sQ0FBQztFQUMxQyxNQUFNdXFDLGFBQWEsR0FBR2hXLHNCQUFzQixDQUFDdjBCLE1BQU0sQ0FBQztFQUNwRCxNQUFNb3JCLFlBQVksR0FBR3BCLHFCQUFxQixDQUFDaHFCLE1BQU0sQ0FBQztFQUNsRCxNQUFNd3FDLHFCQUFxQixHQUFHcGEseURBQVMsQ0FDckNoRixZQUFZLEdBQUFpZixpQkFBQSxHQUNacnFDLE1BQU0sQ0FBQ3lxQyxTQUFTLGNBQUFKLGlCQUFBLHVCQUFoQkEsaUJBQUEsQ0FBa0JwQixZQUNwQixDQUFDO0VBQ0QsTUFBTXlCLHlCQUF5QixHQUFHM0IsaUJBQWlCLENBQ2pEampCLEdBQUcsRUFDSHNGLFlBQVksR0FBQWtmLGtCQUFBLEdBQ1p0cUMsTUFBTSxDQUFDeXFDLFNBQVMsY0FBQUgsa0JBQUEsdUJBQWhCQSxrQkFBQSxDQUFrQm5tQyxJQUNwQixDQUFDO0VBRUQsTUFBTXdtQyxNQUFNLEdBQUdsQyxlQUFlLENBQUN6b0MsTUFBTSxFQUFFOGxCLEdBQUcsQ0FBQztFQUMzQyxNQUFNOGtCLFNBQVMsR0FBRy9CLGtCQUFrQixDQUFDN29DLE1BQU0sRUFBRThsQixHQUFHLENBQUM7RUFDakQsTUFBTTRFLGNBQWMsR0FBR1UsWUFBWSxHQUFHdEYsR0FBRztFQUV6QyxPQUFPO0lBQ0wzaEIsSUFBSSxFQUFFbkUsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVtRSxJQUFJO0lBQ2xCMmhCLEdBQUc7SUFDSCtqQixRQUFRO0lBQ1JVLGFBQWE7SUFDYm5mLFlBQVk7SUFDWm9mLHFCQUFxQjtJQUNyQkUseUJBQXlCO0lBQ3pCQyxNQUFNO0lBQ05DLFNBQVM7SUFDVGxnQjtFQUNGLENBQUM7QUFDSCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUcwQjtBQUNBO0FBWU47QUFDdUQ7QUFLZjtBQU9QO0FBRS9DLE1BQU1tZ0IsVUFBVSxHQUFHO0VBQ3hCLENBQUMzSyx5REFBaUIsR0FBRztJQUNuQnRvQixJQUFJLEVBQUVzb0IseURBQWlCO0lBQ3ZCanlCLElBQUksRUFBRXpSLDZDQUFJLENBQUM4RixDQUFDLENBQUMsMEJBQTBCO0VBQ3pDLENBQUM7RUFDRCxDQUFDMDlCLHlEQUFpQixHQUFHO0lBQ25CcG9CLElBQUksRUFBRW9vQix5REFBaUI7SUFDdkIveEIsSUFBSSxFQUFFelIsNkNBQUksQ0FBQzhGLENBQUMsQ0FBQywwQkFBMEI7RUFDekMsQ0FBQztFQUNELENBQUN5OUIsdURBQWUsR0FBRztJQUNqQm5vQixJQUFJLEVBQUVtb0IsdURBQWU7SUFDckI5eEIsSUFBSSxFQUFFelIsNkNBQUksQ0FBQzhGLENBQUMsQ0FBQyx3QkFBd0I7RUFDdkMsQ0FBQztFQUNELENBQUMyOUIsd0RBQWdCLEdBQUc7SUFDbEJyb0IsSUFBSSxFQUFFcW9CLHdEQUFnQjtJQUN0Qmh5QixJQUFJLEVBQUV6Uiw2Q0FBSSxDQUFDOEYsQ0FBQyxDQUFDLHlCQUF5QjtFQUN4QztBQUNGLENBQUM7QUFDTSxNQUFNd29DLGtCQUFrQixHQUFJdGxDLE1BQU0sSUFBSztFQUFBLElBQUF5aUIsYUFBQSxFQUFBQyxjQUFBLEVBQUFDLGNBQUEsRUFBQU8sY0FBQTtFQUM1QyxJQUFJLENBQUNsakIsTUFBTSxDQUFDNmlCLFNBQVMsRUFBRSxPQUFPNFgsd0RBQWdCO0VBRTlDLElBQUl6NkIsTUFBTSxDQUFDNDBCLFFBQVEsS0FBSyxDQUFDLEVBQUUsT0FBTzhGLHlEQUFpQjtFQUVuRCxJQUFJLEdBQUFqWSxhQUFBLEdBQUN6aUIsTUFBTSxDQUFDNEQsS0FBSyxjQUFBNmUsYUFBQSxlQUFaQSxhQUFBLENBQWN6ZixVQUFVLEtBQUksR0FBQTBmLGNBQUEsR0FBQzFpQixNQUFNLENBQUM0RCxLQUFLLGNBQUE4ZSxjQUFBLGVBQVpBLGNBQUEsQ0FBY3pmLFNBQVMsR0FDdkQsT0FBT3UzQix5REFBaUI7RUFFMUIsSUFBSXg2QixNQUFNLENBQUM0RCxLQUFLLElBQUksRUFBQStlLGNBQUEsR0FBQTNpQixNQUFNLENBQUM0RCxLQUFLLGNBQUErZSxjQUFBLHVCQUFaQSxjQUFBLENBQWMvbEIsTUFBTSxNQUFLLFlBQVksRUFDdkQsT0FBTzQ5Qix5REFBaUI7RUFFMUIsSUFBSXg2QixNQUFNLENBQUM0RCxLQUFLLElBQUksRUFBQXNmLGNBQUEsR0FBQWxqQixNQUFNLENBQUM0RCxLQUFLLGNBQUFzZixjQUFBLHVCQUFaQSxjQUFBLENBQWN0bUIsTUFBTSxNQUFLLFVBQVUsRUFDckQsT0FBTzI5Qix1REFBZTtFQUV4QixPQUFPQyx5REFBaUI7QUFDMUIsQ0FBQztBQUVNLE1BQU0rSyxtQkFBbUIsR0FBR0EsQ0FBQ3ZsQyxNQUFNLEVBQUV3bEMsWUFBWSxLQUN0REgsVUFBVSxDQUFDQyxrQkFBa0IsQ0FBQ3RsQyxNQUFNLEVBQUV3bEMsWUFBWSxDQUFDLENBQUM7QUFFL0MsTUFBTUMsYUFBYSxHQUFJemxDLE1BQU0sSUFBSztFQUN2QyxJQUFJLENBQUNBLE1BQU0sQ0FBQzBtQixLQUFLLEVBQUUsT0FBTyxJQUFJO0VBRTlCLE1BQU07SUFBRUM7RUFBUyxDQUFDLEdBQUczbUIsTUFBTSxDQUFDMG1CLEtBQUs7RUFFakMsSUFBSUMsUUFBUSxDQUFDOXFCLE1BQU0sR0FBRyxDQUFDLEVBQ3JCLE9BQU84cUIsUUFBUSxDQUFDL2xCLEdBQUcsQ0FBRThrQyxPQUFPLElBQUtBLE9BQU8sQ0FBQy9tQyxJQUFJLENBQUMsQ0FBQzNDLElBQUksQ0FBQyxJQUFJLENBQUM7RUFFM0QsT0FBTyxJQUFJO0FBQ2IsQ0FBQztBQUVNLE1BQU0ycEMsYUFBYSxHQUFHQSxDQUFDM2xDLE1BQU0sRUFBRXhGLE1BQU0sS0FDMUNBLE1BQU0sQ0FBQ2dpQixZQUFZLENBQUM0SCxJQUFJLENBQUVoUyxJQUFJLElBQUtBLElBQUksQ0FBQ3hULEVBQUUsS0FBS29CLE1BQU0sQ0FBQytoQyxjQUFjLENBQUM7QUFFaEUsTUFBTXpILGtCQUFrQixHQUFJdDZCLE1BQU07RUFBQSxJQUFBazJCLHFCQUFBO0VBQUEsT0FDdkMsQ0FBQWwyQixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRTRsQyxZQUFZLElBQUcsQ0FBQyxJQUN4QixDQUFBNWxDLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFNmxDLGdCQUFnQixJQUFHN2xDLE1BQU0sQ0FBQ3lyQixlQUFlLElBQ2pELEVBQUN6ckIsTUFBTSxhQUFOQSxNQUFNLGdCQUFBazJCLHFCQUFBLEdBQU5sMkIsTUFBTSxDQUFFaUIsZUFBZSxjQUFBaTFCLHFCQUFBLGVBQXZCQSxxQkFBQSxDQUF5QmhrQixJQUFJLENBQzNCNHpCLEVBQUUsSUFBS0EsRUFBRSxDQUFDbHBDLE1BQU0sS0FBSzJqQyxnRUFDeEIsQ0FBQztBQUFBO0FBRUksTUFBTXRnQixpQkFBaUIsR0FBSXhmLE9BQU8sSUFDdkMsQ0FBQUEsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUV0RixNQUFNLENBQUU2RSxNQUFNLElBQUtzNkIsa0JBQWtCLENBQUN0NkIsTUFBTSxDQUFDLENBQUMsQ0FBQ25FLE1BQU0sS0FBSSxDQUFDO0FBRTlELE1BQU1rcUMsMkJBQTJCLEdBQUl0bEMsT0FBTyxJQUNqREEsT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUV0RixNQUFNLENBQUU2RSxNQUFNO0VBQUEsSUFBQWdtQyxzQkFBQTtFQUFBLFFBQUFBLHNCQUFBLEdBQ3JCaG1DLE1BQU0sQ0FBQ2lCLGVBQWUsY0FBQStrQyxzQkFBQSx1QkFBdEJBLHNCQUFBLENBQXdCOXpCLElBQUksQ0FBRTR6QixFQUFFLElBQUtBLEVBQUUsQ0FBQ2xwQyxNQUFNLEtBQUsyakMsZ0VBQXdCLENBQUM7QUFBQSxDQUM5RSxDQUFDO0FBQ0ksTUFBTWpXLDRCQUE0QixHQUFJN3BCLE9BQU8sSUFBSztFQUN2RCxNQUFNd2xDLFVBQVUsR0FBRyxFQUFFO0VBQ3JCeGxDLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUVHLEdBQUcsQ0FBRVosTUFBTSxJQUFLO0lBQUEsSUFBQWttQyxzQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxzQkFBQTtJQUN2QixJQUNFLENBQUFGLHNCQUFBLEdBQUFsbUMsTUFBTSxDQUFDaUIsZUFBZSxjQUFBaWxDLHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QmgwQixJQUFJLENBQ3pCNHpCLEVBQUUsSUFBS0EsRUFBRSxDQUFDbHBDLE1BQU0sS0FBSzJqQyxnRUFDeEIsQ0FBQyxLQUFBNEYsc0JBQUEsR0FDRG5tQyxNQUFNLENBQUNpQixlQUFlLGNBQUFrbEMsc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCajBCLElBQUksQ0FDekI0ekIsRUFBRSxJQUFLQSxFQUFFLENBQUNscEMsTUFBTSxLQUFLNGpDLGlFQUN4QixDQUFDLEtBQUE0RixzQkFBQSxHQUNEcG1DLE1BQU0sQ0FBQ2lCLGVBQWUsY0FBQW1sQyxzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0JsMEIsSUFBSSxDQUN6QjR6QixFQUFFLElBQUtBLEVBQUUsQ0FBQ2xwQyxNQUFNLEtBQUs2akMsaUVBQ3hCLENBQUMsRUFDRDtNQUNBd0YsVUFBVSxDQUFDeHFDLElBQUksQ0FBQ3VFLE1BQU0sQ0FBQztJQUN6QjtJQUNBLE9BQU9BLE1BQU07RUFDZixDQUFDLENBQUM7RUFDRixPQUFPaW1DLFVBQVU7QUFDbkIsQ0FBQztBQUVNLE1BQU1JLDBCQUEwQixHQUFJcm1DLE1BQU0sSUFBSztFQUFBLElBQUFzbUMsc0JBQUEsRUFBQUMsc0JBQUEsRUFBQUMsc0JBQUE7RUFDcEQsS0FBQUYsc0JBQUEsR0FDRXRtQyxNQUFNLENBQUNpQixlQUFlLGNBQUFxbEMsc0JBQUEsZUFBdEJBLHNCQUFBLENBQXdCcDBCLElBQUksQ0FBRTR6QixFQUFFLElBQUtBLEVBQUUsQ0FBQ2xwQyxNQUFNLEtBQUsyakMsZ0VBQXdCLENBQUMsRUFFNUUsT0FBT0gsNkRBQXFCO0VBQzlCLEtBQUFtRyxzQkFBQSxHQUNFdm1DLE1BQU0sQ0FBQ2lCLGVBQWUsY0FBQXNsQyxzQkFBQSxlQUF0QkEsc0JBQUEsQ0FBd0JyMEIsSUFBSSxDQUN6QjR6QixFQUFFLElBQUtBLEVBQUUsQ0FBQ2xwQyxNQUFNLEtBQUs0akMsaUVBQ3hCLENBQUMsRUFFRCxPQUFPSCw4REFBc0I7RUFDL0IsS0FBQW1HLHNCQUFBLEdBQ0V4bUMsTUFBTSxDQUFDaUIsZUFBZSxjQUFBdWxDLHNCQUFBLGVBQXRCQSxzQkFBQSxDQUF3QnQwQixJQUFJLENBQ3pCNHpCLEVBQUUsSUFBS0EsRUFBRSxDQUFDbHBDLE1BQU0sS0FBSzZqQyxpRUFDeEIsQ0FBQyxFQUVELE9BQU9ILDhEQUFzQjtFQUMvQixPQUFPRiw2REFBcUI7QUFDOUIsQ0FBQztBQUVNLE1BQU0vVCw2QkFBNkIsR0FBSXJzQixNQUFNLElBQUs7RUFDdkQsTUFBTXBELE1BQU0sR0FBR3lwQywwQkFBMEIsQ0FBQ3JtQyxNQUFNLENBQUM7RUFDakQsSUFBSXNzQixXQUFXLEdBQUcsRUFBRTtFQUNwQixRQUFRMXZCLE1BQU07SUFDWixLQUFLd2pDLDZEQUFxQjtNQUN4QjlULFdBQVcsR0FBRyxTQUFTO01BQ3ZCO0lBQ0YsS0FBSytULDhEQUFzQjtNQUN6Qi9ULFdBQVcsR0FBRyxVQUFVO01BQ3hCO0lBQ0YsS0FBS2dVLDhEQUFzQjtNQUN6QmhVLFdBQVcsR0FBRyxVQUFVO01BQ3hCO0lBQ0Y7TUFDRUEsV0FBVyxHQUFHLFNBQVM7RUFDM0I7RUFDQSxPQUFPQSxXQUFXO0FBQ3BCLENBQUM7QUFFTSxNQUFNbWEsaUJBQWlCLEdBQUdBLENBQUNyMEIsSUFBSSxFQUFFelQsSUFBSSxFQUFFK0ksVUFBVSxLQUFLO0VBQzNELElBQUlnL0IsTUFBTTtFQUNWLFFBQVF0MEIsSUFBSTtJQUNWLEtBQUs1Qiw2RkFBcUI7TUFDeEJrMkIsTUFBTSxHQUFHdlgscUNBQVEsQ0FBQyxDQUFDLENBQUN3WCxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTN2Qyw2Q0FBSSxDQUFDOEYsQ0FBQyxDQUFDLDhCQUE4QixDQUFDLENBQUM7TUFDekU7SUFDRixLQUFLOFQsb0dBQTRCO01BQy9CODFCLE1BQU0sR0FBR3ZYLHVDQUFVLFVBQUF6ekIsTUFBQSxDQUFVaUQsSUFBSSxDQUFFLENBQUM7TUFDcEM7SUFDRixLQUFLOFIsaUdBQXlCO01BQzVCaTJCLE1BQU0sR0FBR3ZYLHNDQUFTLENBQUMsQ0FBQyxDQUFDeVgsRUFBRSxDQUFDelgsdUNBQVUsQ0FBQyxDQUFDLENBQUM7TUFDckM7TUFDQSxJQUFJem5CLFVBQVUsRUFBRWcvQixNQUFNLEdBQUdBLE1BQU0sQ0FBQ3ZOLEdBQUcsQ0FBQyxDQUFDLEtBQUF6OUIsTUFBQSxDQUFLaUQsSUFBSSxpQkFBYyxDQUFDO01BQzdEO0lBQ0YsS0FBS2dTLG9HQUE0QjtJQUNqQyxLQUFLRCw2RkFBcUI7TUFDeEJnMkIsTUFBTSxHQUFHdlgsdUNBQVUsVUFBQXp6QixNQUFBLENBQVVpRCxJQUFJLENBQUUsQ0FBQztNQUNwQztJQUNGO01BQ0UrbkMsTUFBTSxHQUFHdlgsdUNBQVUsVUFBQXp6QixNQUFBLENBQVVpRCxJQUFJLENBQUUsQ0FBQztNQUNwQztFQUNKO0VBRUEsSUFBSStJLFVBQVUsRUFBRTtJQUNkZy9CLE1BQU0sR0FBR0EsTUFBTSxDQUFDejNCLFFBQVEsSUFBQXZULE1BQUEsQ0FBSWlELElBQUksaUJBQWMsQ0FBQztFQUNqRDtFQUVBLE9BQU8rbkMsTUFBTTtBQUNmLENBQUM7QUFFRCxNQUFNRyxzQkFBc0IsR0FBR0EsQ0FDN0JsMUIsQ0FBQyxFQUNEdk8sT0FBTyxFQUNQME8sTUFBTSxFQUNOL0ssYUFBYSxFQUNiKy9CLFlBQVksS0FDVDtFQUFBLElBQUFuekIscUJBQUE7RUFDSCxJQUFJLEVBQUFBLHFCQUFBLEdBQUFoQyxDQUFDLENBQUN3QyxrQkFBa0IsY0FBQVIscUJBQUEsdUJBQXBCQSxxQkFBQSxDQUFzQjlYLE1BQU0sSUFBRyxDQUFDLEVBQUU7SUFDcEM4VixDQUFDLENBQUN3QyxrQkFBa0IsQ0FBQ2pYLE9BQU8sQ0FBRTRULElBQUksSUFBSztNQUNyQyxNQUFNO1FBQUU0QyxZQUFZO1FBQUUzQztNQUFjLENBQUMsR0FBR0QsSUFBSTtNQUM1QyxNQUFNaTJCLGVBQWUsR0FBRzE1Qix5RkFBTSxDQUFDcUcsWUFBWSxDQUFDL1UsSUFBSSxFQUFFK1UsWUFBWSxDQUFDOVUsRUFBRSxDQUFDO01BQ2xFLE1BQU1vb0MsU0FBUyxHQUFHNWpDLE9BQU8sQ0FBQzJqQyxlQUFlLENBQUM7TUFDMUMsTUFBTUUsS0FBSyxHQUFHbDFCLG9HQUFpQixDQUFDRCxNQUFNLEVBQUVmLGFBQWEsQ0FBQztNQUV0RCxJQUFJLENBQUMrMUIsWUFBWSxJQUFJRyxLQUFLLEVBQUU7UUFDMUJsZ0MsYUFBYSxDQUFDZ2dDLGVBQWUsQ0FBQyxHQUM1QkMsU0FBUyxJQUFJNzBCLHNHQUFtQixDQUFDdUIsWUFBWSxDQUFDO01BQ2xEO01BRUFtekIsc0JBQXNCLENBQ3BCbnpCLFlBQVksRUFDWnRRLE9BQU8sRUFDUDRqQyxTQUFTLEVBQ1RqZ0MsYUFBYSxFQUNiKy9CLFlBQ0YsQ0FBQztJQUNILENBQUMsQ0FBQztFQUNKO0FBQ0YsQ0FBQztBQUVNLE1BQU14Z0MsWUFBWSxHQUFHLFNBQUFBLENBQzFCMUMsS0FBSyxFQUNMcEssY0FBYyxFQUNkNEosT0FBTyxFQUNQOGpDLG1CQUFtQixFQUNuQkMsaUJBQWlCLEVBRWQ7RUFBQSxJQURITCxZQUFZLEdBQUFoakMsU0FBQSxDQUFBakksTUFBQSxRQUFBaUksU0FBQSxRQUFBQyxTQUFBLEdBQUFELFNBQUEsTUFBRyxLQUFLO0VBRXBCLE1BQU1pRCxhQUFhLEdBQUcsQ0FBQyxDQUFDO0VBRXhCLElBQUltZ0MsbUJBQW1CLEVBQUU7SUFDdkJuZ0MsYUFBYSxDQUFDN04sb0ZBQW9CLENBQUNDLEtBQUssQ0FBQyxHQUN2Q2lLLE9BQU8sQ0FBQ2xLLG9GQUFvQixDQUFDQyxLQUFLLENBQUMsSUFBSXlLLEtBQUssQ0FBQ3pLLEtBQUssSUFBSSxFQUFFO0lBQzFENE4sYUFBYSxDQUFDN04sb0ZBQW9CLENBQUNFLFNBQVMsQ0FBQyxHQUMzQ2dLLE9BQU8sQ0FBQ2xLLG9GQUFvQixDQUFDRSxTQUFTLENBQUMsSUFBSXdLLEtBQUssQ0FBQ1osVUFBVSxJQUFJLEVBQUU7SUFDbkUrRCxhQUFhLENBQUM3TixvRkFBb0IsQ0FBQ0csUUFBUSxDQUFDLEdBQzFDK0osT0FBTyxDQUFDbEssb0ZBQW9CLENBQUNHLFFBQVEsQ0FBQyxJQUFJdUssS0FBSyxDQUFDWCxTQUFTLElBQUksRUFBRTtJQUNqRThELGFBQWEsQ0FBQzdOLG9GQUFvQixDQUFDSSxPQUFPLENBQUMsR0FDekM4SixPQUFPLENBQUNsSyxvRkFBb0IsQ0FBQ0ksT0FBTyxDQUFDLElBQUlzSyxLQUFLLENBQUN0SyxPQUFPO0VBQzFEO0VBRUEsSUFBSTZ0QyxpQkFBaUIsRUFBRTtJQUNyQnBnQyxhQUFhLENBQUM3TixvRkFBb0IsQ0FBQ0ssa0JBQWtCLENBQUMsR0FDcEQ2SixPQUFPLENBQUNsSyxvRkFBb0IsQ0FBQ0ssa0JBQWtCLENBQUMsSUFDaERxSyxLQUFLLENBQUM2TyxtQkFBbUI7RUFDN0I7RUFFQWpaLGNBQWMsQ0FBQzBELE9BQU8sQ0FBRXlVLENBQUMsSUFBSztJQUM1QixNQUFNekQsWUFBWSxHQUFHYix5RkFBTSxDQUFDc0UsQ0FBQyxDQUFDaFQsSUFBSSxFQUFFZ1QsQ0FBQyxDQUFDL1MsRUFBRSxDQUFDO0lBQ3pDLE1BQU1rVCxNQUFNLEdBQUcxTyxPQUFPLENBQUM4SyxZQUFZLENBQUM7SUFDcENuSCxhQUFhLENBQUNtSCxZQUFZLENBQUMsR0FBRzRELE1BQU0sSUFBSUssc0dBQW1CLENBQUNSLENBQUMsQ0FBQztJQUU5RGsxQixzQkFBc0IsQ0FBQ2wxQixDQUFDLEVBQUV2TyxPQUFPLEVBQUUwTyxNQUFNLEVBQUUvSyxhQUFhLEVBQUUrL0IsWUFBWSxDQUFDO0VBQ3pFLENBQUMsQ0FBQztFQUVGLE9BQU8vL0IsYUFBYTtBQUN0QixDQUFDO0FBRUQsTUFBTXFnQyxnQ0FBZ0MsR0FBR0EsQ0FBQ2w1QixZQUFZLEVBQUU0QyxJQUFJLEVBQUU0MUIsTUFBTSxLQUFLO0VBQUEsSUFBQVcscUJBQUE7RUFDdkUsTUFBTUMsV0FBVyxHQUFHeDJCLElBQUksQ0FBQzRDLFlBQVk7RUFDckMsTUFBTXF6QixlQUFlLEdBQUcxNUIseUZBQU0sQ0FBQ2k2QixXQUFXLENBQUMzb0MsSUFBSSxFQUFFMm9DLFdBQVcsQ0FBQzFvQyxFQUFFLENBQUM7RUFFaEU4bkMsTUFBTSxDQUFDSyxlQUFlLENBQUMsR0FBR04saUJBQWlCLENBQ3pDYSxXQUFXLENBQUNsMUIsSUFBSSxFQUNoQmsxQixXQUFXLENBQUMzb0MsSUFBSSxFQUNoQixLQUNGLENBQUMsQ0FDRTRvQyxRQUFRLENBQUMsQ0FBQyxDQUNWQyxJQUFJLENBQUN0NUIsWUFBWSxFQUFFO0lBQ2xCdTVCLEVBQUUsRUFBR0MsV0FBVyxJQUFLO01BQ25CLE1BQU1DLGFBQWEsR0FBRzUxQixvR0FBaUIsQ0FDckMyMUIsV0FBVyxFQUNYNTJCLElBQUksQ0FBQ0MsYUFDUCxDQUFDO01BQ0Q7TUFDQSxNQUFNeUMsU0FBUyxHQUFHLENBQUMsQ0FBQ3RPLFFBQVEsQ0FBQ2cxQixjQUFjLElBQUF4K0IsTUFBQSxDQUN0Q3dTLFlBQVksZUFDakIsQ0FBQztNQUNELE9BQU95NUIsYUFBYSxJQUFJbjBCLFNBQVM7SUFDbkMsQ0FBQztJQUNEM1UsSUFBSSxFQUFHK29DLEdBQUcsSUFBSztNQUNiLElBQUlOLFdBQVcsQ0FBQ2wxQixJQUFJLEtBQUszQixpR0FBeUIsRUFBRTtRQUNsRDtRQUNBLE9BQU9tM0IsR0FBRyxDQUFDek8sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDbHFCLFFBQVEsQ0FBQ2pZLDZDQUFJLENBQUM4RixDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztNQUNwRTtNQUNBLE9BQU84cUMsR0FBRyxDQUFDMzRCLFFBQVEsQ0FBQ2pZLDZDQUFJLENBQUM4RixDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUM3RDtFQUNGLENBQUMsQ0FBQztFQUVKLElBQUksRUFBQXVxQyxxQkFBQSxHQUFBQyxXQUFXLENBQUNuekIsa0JBQWtCLGNBQUFrekIscUJBQUEsdUJBQTlCQSxxQkFBQSxDQUFnQ3hyQyxNQUFNLElBQUcsQ0FBQyxFQUFFO0lBQzlDeXJDLFdBQVcsQ0FBQ256QixrQkFBa0IsQ0FBQ2pYLE9BQU8sQ0FBRTJxQyxPQUFPLElBQUs7TUFDbERULGdDQUFnQyxDQUFDTCxlQUFlLEVBQUVjLE9BQU8sRUFBRW5CLE1BQU0sQ0FBQztJQUNwRSxDQUFDLENBQUM7RUFDSjtBQUNGLENBQUM7QUFFTSxNQUFNcmdDLHFCQUFxQixHQUFHQSxDQUNuQzdNLGNBQWMsRUFDZDB0QyxtQkFBbUIsRUFDbkJZLG1CQUFtQixLQUNoQjtFQUNILE1BQU1wQixNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBRWpCLElBQUlRLG1CQUFtQixFQUFFO0lBQ3ZCUixNQUFNLENBQUN4dEMsb0ZBQW9CLENBQUNDLEtBQUssQ0FBQyxHQUFHZzJCLHVDQUM1QixDQUFDbjRCLDZDQUFJLENBQUM4RixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUN6QzNELEtBQUssQ0FBQ25DLDZDQUFJLENBQUM4RixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUN4Q21TLFFBQVEsQ0FBQ2pZLDZDQUFJLENBQUM4RixDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUNoRDRwQyxNQUFNLENBQUN4dEMsb0ZBQW9CLENBQUNFLFNBQVMsQ0FBQyxHQUFHKzFCLHVDQUNoQyxDQUFDbjRCLDZDQUFJLENBQUM4RixDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQyxDQUM5Q21TLFFBQVEsQ0FBQ2pZLDZDQUFJLENBQUM4RixDQUFDLENBQUMsZ0NBQWdDLENBQUMsQ0FBQztJQUNyRDRwQyxNQUFNLENBQUN4dEMsb0ZBQW9CLENBQUNHLFFBQVEsQ0FBQyxHQUFHODFCLHVDQUMvQixDQUFDbjRCLDZDQUFJLENBQUM4RixDQUFDLENBQUMsNkJBQTZCLENBQUMsQ0FBQyxDQUM3Q21TLFFBQVEsQ0FBQ2pZLDZDQUFJLENBQUM4RixDQUFDLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUNwRDRwQyxNQUFNLENBQUN4dEMsb0ZBQW9CLENBQUNJLE9BQU8sQ0FBQyxHQUFHNjFCLHFDQUFRLENBQUU5eEIsS0FBSyxJQUNwRCxPQUFPQSxLQUFLLEtBQUssUUFBUSxHQUNyQjh4Qix1Q0FDUyxDQUFDLENBQUMsQ0FDUmxnQixRQUFRLENBQUNqWSw2Q0FBSSxDQUFDOEYsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQUMsQ0FDL0NrckMsU0FBUyxDQUFDaHhDLDZDQUFJLENBQUM4RixDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQyxHQUNqRHF5Qix1Q0FBVSxDQUFDLENBQUMsQ0FBQ2xnQixRQUFRLENBQUNqWSw2Q0FBSSxDQUFDOEYsQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQ2pFLENBQUM7RUFDSDtFQUVBLElBQUlnckMsbUJBQW1CLEVBQUU7SUFDdkJwQixNQUFNLENBQUN4dEMsb0ZBQW9CLENBQUNLLGtCQUFrQixDQUFDLEdBQUc0MUIscUNBQzNDLENBQUMsQ0FBQyxDQUNOd1gsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUzdkMsNkNBQUksQ0FBQzhGLENBQUMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0VBQzFEO0VBRUF0RCxjQUFjLENBQUMwRCxPQUFPLENBQUV5VSxDQUFDLElBQUs7SUFDNUIsTUFBTTtNQUFFL1MsRUFBRTtNQUFFRCxJQUFJO01BQUV5VCxJQUFJO01BQUVoRSxTQUFTO01BQUUrRjtJQUFtQixDQUFDLEdBQUd4QyxDQUFDO0lBQzNELE1BQU16RCxZQUFZLEdBQUdiLHlGQUFNLENBQUMxTyxJQUFJLEVBQUVDLEVBQUUsQ0FBQztJQUNyQzhuQyxNQUFNLENBQUN4NEIsWUFBWSxDQUFDLEdBQUd1NEIsaUJBQWlCLENBQUNyMEIsSUFBSSxFQUFFelQsSUFBSSxFQUFFeVAsU0FBUyxDQUFDO0lBRS9ELElBQUksQ0FBQStGLGtCQUFrQixhQUFsQkEsa0JBQWtCLHVCQUFsQkEsa0JBQWtCLENBQUV0WSxNQUFNLElBQUcsQ0FBQyxFQUFFO01BQ2xDc1ksa0JBQWtCLENBQUNqWCxPQUFPLENBQUU0VCxJQUFJLElBQUs7UUFDbkNzMkIsZ0NBQWdDLENBQUNsNUIsWUFBWSxFQUFFNEMsSUFBSSxFQUFFNDFCLE1BQU0sQ0FBQztNQUM5RCxDQUFDLENBQUM7SUFDSjtFQUNGLENBQUMsQ0FBQztFQUVGLE9BQU92WCx1Q0FBVSxDQUFDdVgsTUFBTSxDQUFDO0FBQzNCLENBQUM7QUFFTSxNQUFNdkssc0JBQXNCLEdBQUdBLENBQUMxN0IsT0FBTyxFQUFFVCxNQUFNLEtBQ3BEUyxPQUFPLENBQUNHLEdBQUcsQ0FBRTlELENBQUMsSUFBSztFQUFBLElBQUFtckMsUUFBQSxFQUFBOWtCLGNBQUEsRUFBQStrQixTQUFBLEVBQUFDLGNBQUE7RUFDakIsTUFBTUMsU0FBUyxHQUFBcm1DLGFBQUEsS0FBUWpGLENBQUMsQ0FBRTtFQUMxQjtFQUNBLElBQ0UsRUFBQW1yQyxRQUFBLEdBQUFuckMsQ0FBQyxDQUFDOEcsS0FBSyxjQUFBcWtDLFFBQUEsdUJBQVBBLFFBQUEsQ0FBU3JwQyxFQUFFLFFBQUF1a0IsY0FBQSxHQUFLbmpCLE1BQU0sQ0FBQzRELEtBQUssY0FBQXVmLGNBQUEsdUJBQVpBLGNBQUEsQ0FBY3ZrQixFQUFFLEtBQ2hDLEVBQUFzcEMsU0FBQSxHQUFBcHJDLENBQUMsQ0FBQzhHLEtBQUssY0FBQXNrQyxTQUFBLHVCQUFQQSxTQUFBLENBQVN0ckMsTUFBTSxRQUFBdXJDLGNBQUEsR0FBS25vQyxNQUFNLENBQUM0RCxLQUFLLGNBQUF1a0MsY0FBQSx1QkFBWkEsY0FBQSxDQUFjdnJDLE1BQU0sR0FDeEM7SUFDQXdyQyxTQUFTLENBQUN4a0MsS0FBSyxHQUFHNUQsTUFBTSxDQUFDNEQsS0FBSztFQUNoQztFQUNBLE9BQU85RyxDQUFDLENBQUM4QixFQUFFLEtBQUtvQixNQUFNLENBQUNwQixFQUFFLEdBQUdvQixNQUFNLEdBQUdvb0MsU0FBUztBQUNoRCxDQUFDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOVZKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0xqRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ29rQjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QnBrQjtBQUNBO0FBQ0E7QUFDQTtBQUM2RDs7Ozs7Ozs7Ozs7Ozs7O0FDSjdEO0FBQ0E7QUFDNkI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRjdCO0FBQ0E7QUFDQTtBQUNBO0FBQ3NGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKdEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNpTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1JqTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaXVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5Qmp1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzRmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QjVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDMkU7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMM0U7QUFDQTtBQUNBO0FBQ3dEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSHhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnSDs7Ozs7Ozs7Ozs7Ozs7OztBQ05oSDtBQUNBO0FBQ0E7QUFDd0U7Ozs7Ozs7Ozs7Ozs7OztBQ0h4RTtBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOFg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25COVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDZ0U7Ozs7Ozs7Ozs7Ozs7OztBQ0poRTtBQUNBO0FBQ21DOzs7Ozs7Ozs7OztBQ0ZuQzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7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QixpRUFBYSxJQUFFO01BQUMsQ0FDRztJQUFDLENBQ1o7RUFBQyxDQUNOLENBQUM7QUFFZixDQUFDO0FBRUQwUSx1QkFBdUIsQ0FBQ3ZnQyxTQUFTLEdBQUc7RUFDbEMyMkIsUUFBUSxFQUFFNzRCLDBEQUFnQjtFQUMxQjBpQyxZQUFZLEVBQUUxaUMsMERBQWdCO0VBQzlCckwsTUFBTSxFQUFFcUwsMERBQWdCO0VBQ3hCNUgsVUFBVSxFQUFFNEgsMERBQWdCO0VBQzVCcEwsSUFBSSxFQUFFb0wsMERBQWdCO0VBQ3RCNDRCLFFBQVEsRUFBRTU0QiwwREFBZ0I7RUFDMUJ0RCxhQUFhLEVBQUVzRCx3REFBY3FDO0FBQy9CLENBQUM7QUFFRCxpRUFBZW9nQyx1QkFBdUIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQXNzaWduRVFGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbURpYWxvZy9Db250ZXh0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbURpYWxvZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21UaGVtZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Bc3NpZ25lZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0JhZGdlRmVhdHVyZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZyZWVQYWlkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvUHJvbW9Db2RlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1N0YXR1c0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1RpY2tldFR5cGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9FcnJvckxhYmVsLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xvYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXNzaWduZWRUb01lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RJdGVtLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1N1bW1pdEhlYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9EZWxlZ2F0ZUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9Db21wYW55RmllbGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1N1bW1pdEhlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFiXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAcmVkdXhqcy90b29sa2l0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHNlbnRyeS9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBjcmVhdGVBY3Rpb24sXG4gIGRlbGV0ZVJlcXVlc3QsXG4gIGdldFJlcXVlc3QsXG4gIHB1dFJlcXVlc3QsXG4gIHN0YXJ0TG9hZGluZyxcbiAgc3RvcExvYWRpbmdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCB7IG9iamVjdFRvUXVlcnlTdHJpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCI7XG5pbXBvcnQgSWRUb2tlblZlcmlmaWVyIGZyb20gXCJpZHRva2VuLXZlcmlmaWVyXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgYXV0aFByb21pc2VSZWplY3QsIGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVMsXG4gIEZJRlRZX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlULFxuICBUQUJTXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9GSUxURVIgPSBcIkNIQU5HRV9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfU09SVCA9IFwiQ0hBTkdFX1NPUlRcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMgPSBcIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1RJQ0tFVCA9IFwiUkVTRVRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBERUxFR0FURV9USUNLRVQgPSBcIkRFTEVHQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRUaWNrZXQgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSA9IFwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSA9IFwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTID0gXCJGSUxURVJfVkFSX09XTkVSX1NUQVRVU1wiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfUFJPTU9DT0RFID0gXCJGSUxURVJfVkFSX1BST01PQ09ERVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfRlJFRV9QQUlEID0gXCJGSUxURVJfVkFSX0ZSRUVfUEFJRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIgLyBTT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBjaGFuZ2VGaWx0ZXIgPSAoZmlsdGVyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9GSUxURVIpKGZpbHRlcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVNvcnQgPSAoc29ydCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfU09SVCkoc29ydCkpO1xufTtcblxuLy8gRklMVEVSL1NPUlQgUEFSU0VcbmNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaiwgY3VycmVudFRhYikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgY3JlYXRlZFtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2JhZGdlX2ZlYXR1cmVzX2lkXCJcbiAgICAgICAgOiBcImJhZGdlX2ZlYXR1cmVzX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfdHlwZV9pZFwiIDogXCJ0aWNrZXRfdHlwZV9pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX2Fzc2lnbmVkX3RvXCIgOiBcImFzc2lnbmVkX3RvXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX293bmVyX3N0YXR1c1wiIDogXCJvd25lcl9zdGF0dXNcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVN9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPSBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwiYW1vdW50XCIgOiBcImZpbmFsX2Ftb3VudFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0ZSRUVfUEFJRCA9PT0gXCJGcmVlXCIgPyBcIj09MFwiIDogXCI+MFwifWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREUpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3Byb21vX2NvZGVcIiA6IFwicHJvbW9fY29kZVwiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PUAke2ZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERX1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgZmlsdGVyLnB1c2goYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmNvbnN0IGdldFNvcnREaXJlY3Rpb24gPSAoZGlyZWN0aW9uKSA9PiAoZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIik7XG5cbi8vIHBheWxvYWQ6IHsgaHR0cENvZGUsIHRpdGxlLCBodG1sOiBjb250ZW50LCB0eXBlIH1cbmNvbnN0IGVycm9ySGFuZGxlck5vdGlmeSA9IChwYXlsb2FkLCBjYWxsYmFjaykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQVBJX0VSUk9SKShwYXlsb2FkKSk7XG4gIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbn07XG5cbmNvbnN0IGN1c3RvbUF1dGhFcnJvckhhbmRsZXIgPSAoZXJyLCByZXMpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChhdXRoRXJyb3JIYW5kbGVyKGVyciwgcmVzLCBlcnJvckhhbmRsZXJOb3RpZnkpKTtcbn07XG5cbmNvbnN0IGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyID0gKHJlc3BvbnNlKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgY29uc3QgY29kZSA9IHJlc3BvbnNlLnN0YXR1cztcbiAgbGV0IG1zZztcbiAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gIHN3aXRjaCAoY29kZSkge1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDNcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMudXNlcl9ub3RfYXV0aHpcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAxXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlc3Npb25fZXhwaXJlZFwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MTJcIl06XG4gICAgICBtc2cgPSBcIlwiO1xuICAgICAgT2JqZWN0LmVudHJpZXMocmVzcG9uc2UuZXJyb3JzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgaWYgKE51bWJlci5pc05hTihrZXkpKSB7XG4gICAgICAgICAgbXNnID0gYCR7bXNnfSAke2tleX06IGA7XG4gICAgICAgIH1cblxuICAgICAgICBtc2cgPSBgJHttc2d9ICR7dmFsdWV9IDxicj5gO1xuICAgICAgfSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNTAwXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnNlcnZlcl9lcnJvclwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBtc2cgPSByZXNwb25zZS5zdGF0dXNUZXh0O1xuICB9XG5cbiAgZGlzcGF0Y2goZXJyb3JIYW5kbGVyTm90aWZ5KHsgdGl0bGU6IGkxOG4udChcImVycm9ycy5lcnJvclwiKSwgaHRtbDogbXNnIH0pKTtcbn07XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItY3JlYXRlZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuT1JERVJTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXIsXG4gICAgICB7IGZpbHRlciwgc29ydCB9XG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0LCB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IGZpZWxkcyA9IFtcbiAgICAgIFwib3JkZXIuaWRcIixcbiAgICAgIFwib3JkZXIub3duZXJfZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9sYXN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfZW1haWxcIixcbiAgICAgIFwib3duZXIuaWRcIixcbiAgICAgIFwib3duZXIuZW1haWxcIixcbiAgICAgIFwib3duZXIuZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5sYXN0X25hbWVcIixcbiAgICAgIFwib3duZXIuc3RhdHVzXCIsXG4gICAgICBcImJhZGdlLm5vbmVcIlxuICAgIF07XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiLCBgb3JkZXJfb3duZXJfaWQ8PiR7dXNlclByb2ZpbGUuaWR9YF0sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsb3duZXIsdGlja2V0X3R5cGUsYmFkZ2UsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOiBmaWVsZHMuam9pbihcIixcIiksXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLlRJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9NWV9BU1NJR05FRF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0c0J5T3JkZXIgPVxuICAoe1xuICAgIG9yZGVySWQsXG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyLFxuICAgIHNvcnRcbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXSxcbiAgICAgIGZpZWxkczogXCJiYWRnZS5ub25lXCIsXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMudGF4LG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLlRJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlc2VuZE5vdGlmaWNhdGlvbiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCB7IG1lc3NhZ2UgfSA9IHRpY2tldDtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFTkRfTk9USUZJQ0FUSU9OKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9hdHRlbmRlZS9yZWludml0ZWAsXG4gICAgICB7IG1lc3NhZ2UgfSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZFRpY2tldCA9XG4gICh7IHRpY2tldCB9KSA9PlxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIHBhZ2U6IDEsXG4gICAgICBwZXJfcGFnZTogRklGVFlfUEVSX1BBR0UsXG4gICAgICBleHBhbmQ6IFwiKnN1Yl9xdWVzdGlvbl9ydWxlcywqc3ViX3F1ZXN0aW9uLCp2YWx1ZXNcIixcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFwidGlja2V0c19leGNsdWRlX2luYWN0aXZlcz09dHJ1ZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L2F0dGVuZGVlcy8ke2F0dGVuZGVlSWR9L2FsbG93ZWQtZXh0cmEtcXVlc3Rpb25zYDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXQgPVxuICAodGlja2V0SWQsIG9yZGVySWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXIscHJvbW9fY29kZVwiLFxuICAgICAgcmVsYXRpb25zOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZSxwcm9tb19jb2RlLm5vbmUsdGlja2V0X3R5cGUubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZSxwcm9tb19jb2RlLmlkLHByb21vX2NvZGUuY29kZSxwcm9tb19jb2RlLmFsbG93c190b19kZWxlZ2F0ZSxwcm9tb19jb2RlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5pZCx0aWNrZXRfdHlwZS5uYW1lLHRpY2tldF90eXBlLmFsbG93c190b19kZWxlZ2F0ZSx0aWNrZXRfdHlwZS5hbGxvd3NfdG9fcmVhc3NpZ24sdGlja2V0X3R5cGUuY29zdCx0aWNrZXRfdHlwZS5jcmVhdGVkXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfWA7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfVElDS0VUKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuY29uc3Qgbm9ybWFsaXplVGlja2V0ID0gKGVudGl0eSkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0geyAuLi5lbnRpdHkgfTtcblxuICBpZiAoIWVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkKSB7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55ID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnlfaWQgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZDtcbiAgfVxuXG4gIHJldHVybiBub3JtYWxpemVkRW50aXR5O1xufTtcblxuZXhwb3J0IGNvbnN0IHJlZnJlc2hQcm9maWxlID1cbiAgKGRhdGEsIGNvbXBhbnksIHRpY2tldE93bmVyKSA9PlxuICAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IHVwZGF0ZVByb2ZpbGUgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG5cbiAgICAvLyBlbWFpbCBzaG91bGQgbWF0Y2ggKCBvbmx5IHVwZGF0ZSBteSBwcm9maWxlIGlzIHRpY2tldCBiZWxvbmdzIHRvIG1lISlcbiAgICAvLyBhbmQgaWYgdGhlIHRpY2tldCBkb2Vzbid0IGhhdmUgYSBtYW5hZ2VyXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUncyBjaGFuZ2VzIGluIHRoZSB0aWNrZXQgZGF0YSB0byB1cGRhdGUgdGhlIHByb2ZpbGVcbiAgICBjb25zdCB7XG4gICAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICBhdHRlbmRlZV9jb21wYW55XG4gICAgfSA9IGRhdGE7XG4gICAgY29uc3QgaGFzTWFuYWdlciA9IHRpY2tldE93bmVyPy5tYW5hZ2VyPy5pZCB8fCB0aWNrZXRPd25lcj8ubWFuYWdlcl9pZDtcbiAgICBjb25zdCBpdHNNZSA9IHVzZXJQcm9maWxlLmVtYWlsID09PSBhdHRlbmRlZV9lbWFpbDtcbiAgICBjb25zdCBwcm9maWxlQ2hhbmdlZCA9XG4gICAgICBhdHRlbmRlZV9jb21wYW55Lm5hbWUgIT09IGNvbXBhbnkgfHxcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUgIT09IHVzZXJQcm9maWxlLmZpcnN0X25hbWUgfHxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUubGFzdF9uYW1lO1xuXG4gICAgaWYgKGl0c01lICYmICFoYXNNYW5hZ2VyICYmIHByb2ZpbGVDaGFuZ2VkKSB7XG4gICAgICBjb25zdCBuZXdQcm9maWxlID0ge1xuICAgICAgICBmaXJzdF9uYW1lOiBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgICBsYXN0X25hbWU6IGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgICAgY29tcGFueTogYXR0ZW5kZWVfY29tcGFueS5uYW1lIHx8IGF0dGVuZGVlX2NvbXBhbnlcbiAgICAgIH07XG5cbiAgICAgIC8vIHRoaXMgaXMgYSBjYWxsYmFjayBtZXRob2QgdGhhdCB1cGRhdGVzIHVzZXJQcm9maWxlIGluIEFQSSBhbmQgZXZlbnQtc2l0ZVxuICAgICAgdXBkYXRlUHJvZmlsZShuZXdQcm9maWxlKTtcbiAgICB9XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlVGlja2V0RGV0YWlscyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBpZFRva2VuID0gZ2V0SWRUb2tlbigpO1xuICAgIGxldCBjb21wYW55ID0gXCJcIjtcbiAgICBpZiAoaWRUb2tlbikge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdmVyaWZpZXIgPSBuZXcgSWRUb2tlblZlcmlmaWVyKCk7XG4gICAgICAgIGNvbnN0IGp3dCA9IHZlcmlmaWVyLmRlY29kZShpZFRva2VuKTtcbiAgICAgICAgY29tcGFueSA9IGp3dC5wYXlsb2FkLmNvbXBhbnk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZXJyb3JcIiwgZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSBub3JtYWxpemVUaWNrZXQoYW5zd2Vycyk7XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBub3JtYWxpemVkRW50aXR5LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2gocmVmcmVzaFByb2ZpbGUoYW5zd2VycywgY29tcGFueSwgdGlja2V0Lm93bmVyKSk7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGFzc2lnbkF0dGVuZGVlID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBhdHRlbmRlZV9lbWFpbCwgbWVzc2FnZSA9IG51bGwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCBvd25lci5leHRyYV9xdWVzdGlvbnMsIG9yZGVyLnN1bW1pdFwiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRU1PVkVfVElDS0VUX0FUVEVOREVFKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PlxuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSlcbiAgICApO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZGVsZWdhdGVUaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lOiBmaXJzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWU6IGxhc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfZW1haWw6IGVtYWlsXG4gICAgfTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oREVMRUdBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2RlbGVnYXRlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZUV4dHJhUXVlc3Rpb25zID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIGFuc3dlcnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRQREYgPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgeyBidWlsZFZhbGlkYXRpb25TY2hlbWEsIHBhcnNlQW5zd2VycyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBBc3NpZ25FUUZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2Vycyh0aWNrZXQub3duZXIsIGV4dHJhUXVlc3Rpb25zLCB7fSwgZmFsc2UsIHRydWUpLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgZmFsc2UsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJyZWFzc2lnbkRyYXdlclwiKTtcblxuICBpZiAoZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA9PT0gMCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxCb3g+XG4gICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9IGZvcm1paz17Zm9ybWlrfSAvPlxuICAgICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICAgIDxSZWdpc3RyYXRpb25EaXNjbGFpbWVyXG4gICAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgICAgaXNSZXF1aXJlZD17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeX1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLnNhdmVcIil9XG4gICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5jYW5jZWxcIil9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgLz5cbiAgICA8L2Zvcm0+XG4gICk7XG59O1xuXG5Bc3NpZ25FUUZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkVRRm9ybTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBDb250ZW50Q29weUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIjtcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5jb25zdCBDb3B5VGV4dCA9ICh7XG4gIHRleHQsXG4gIHRvb2x0aXBUZXh0LFxuICBoaWRlQ29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSB0cnVlLFxuICByZXZlcnNlZCA9IGZhbHNlLFxuICB3aWR0aCA9IGRlZmF1bHRXaWR0aFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRvb2x0aXBUZXh0VG9Vc2UgPSB0b29sdGlwVGV4dCB8fCB0KFwiZ2VuZXJhbC5jb3B5X3RvX2NsaXBib2FyZFwiKTtcbiAgY29uc3QgW3Rvb2x0aXAsIHNldFRvb2x0aXBdID0gUmVhY3QudXNlU3RhdGUodG9vbHRpcFRleHRUb1VzZSk7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBgJHt0cnVuY2F0ZWQgJiYgc3R5bGVzLnRydW5jYXRlZH0gJHtcbiAgICByZXZlcnNlZCAmJiBzdHlsZXMucmV2ZXJzZWRcbiAgfWA7XG5cbiAgY29uc3QgaGFuZGxlQ29weSA9ICgpID0+IHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgICBzZXRUb29sdGlwKHQoXCJnZW5lcmFsLmNvcGllZFwiKSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRUb29sdGlwKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICAgIH0sIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc05hbWVzfSBzdHlsZT17eyB3aWR0aCB9fT5cbiAgICAgICAge3RleHR9XG4gICAgICA8L3NwYW4+XG4gICAgICB7IWhpZGVDb3B5ICYmIChcbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Rvb2x0aXB9PlxuICAgICAgICAgIDxDb250ZW50Q29weUljb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29weX1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29weS1udW1iZXItYnV0dG9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ29weVRleHQucHJvcFR5cGVzID0ge1xuICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0b29sdGlwVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaGlkZUNvcHk6IFByb3BUeXBlcy5ib29sLFxuICB0cnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICByZXZlcnNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb3B5VGV4dDtcbiIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgZGVmYXVsdENvbnRleHRWYWx1ZSA9IHtcbiAgc2V0TWVzc2FnZTogKCkgPT4ge30sXG4gIHNldE1lc3NhZ2VDYWxsYmFjazogKCkgPT4ge31cbn07XG5cbmNvbnN0IEN1c3RvbURpYWxvZ0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0VmFsdWUpO1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21EaWFsb2dDb250ZXh0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRGlhbG9nLFxuICBEaWFsb2dDb250ZW50LFxuICBEaWFsb2dDb250ZW50VGV4dCxcbiAgRGlhbG9nVGl0bGVcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuY29uc3QgQ3VzdG9tRGlhbG9nID0gKHsgb3Blbiwgb25DbG9zZSwgdGl0bGUsIGJvZHkgfSkgPT4gKFxuICA8RGlhbG9nXG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFyaWEtbGFiZWxsZWRieT1cImFsZXJ0LWRpYWxvZy10aXRsZVwiXG4gICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gID5cbiAgICA8RGlhbG9nVGl0bGUgaWQ9XCJhbGVydC1kaWFsb2ctdGl0bGVcIj57dGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgIDxEaWFsb2dDb250ZW50VGV4dFxuICAgICAgICBpZD1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gICAgICAgIGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7IF9faHRtbDogYm9keSB9fVxuICAgICAgLz5cbiAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gIDwvRGlhbG9nPlxuKTtcblxuQ3VzdG9tRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYm9keTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5sZXQgZGFya0NvbG9yID0gXCJcIjtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIC8vIEdldCB0aGUgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLy8gUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBDU1MgdmFyaWFibGVcbiAgZGFya0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgIFwiLS1jb2xvcl9iYWNrZ3JvdW5kX2RhcmtcIlxuICApO1xufVxuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcGFsZXR0ZToge1xuICAgIHByaW1hcnk6IHtcbiAgICAgIG1haW46IGRhcmtDb2xvclxuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgcHJpbWFyeTogXCIjMDAwMDAwREVcIixcbiAgICAgIHNlY29uZGFyeTogXCIjMDAwMDAwOTlcIlxuICAgIH1cbiAgfSxcbiAgdHlwb2dyYXBoeToge1xuICAgIGJvZHkxOiB7XG4gICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgIH0sXG4gICAgaDU6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNmVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBoNjoge1xuICAgICAgZm9udFNpemU6IFwiMS40ZW1cIixcbiAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgIFwiJi5NdWlUeXBvZ3JhcGh5LWd1dHRlckJvdHRvbVwiOiB7XG4gICAgICAgIG1hcmdpbkJvdHRvbTogXCIyMHB4XCJcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBNdWlGb3JtSGVscGVyVGV4dDoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIi44ZW1cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlCdXR0b246IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIixcbiAgICAgICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICAgICAgbGluZUhlaWdodDogXCIyMnB4XCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxuICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA5OVwiLFxuICAgICAgICAgIFwiJi5NdWktc2VsZWN0ZWRcIjoge1xuICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlUYWJzOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICBpbmRpY2F0b3I6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBDdXN0b21UaGVtZSA9ICh7IGNoaWxkcmVuIH0pID0+IChcbiAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT57Y2hpbGRyZW59PC9UaGVtZVByb3ZpZGVyPlxuKTtcblxuQ3VzdG9tVGhlbWUucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tVGhlbWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG4gIGNvbnN0IHF1ZXN0aW9uTWF4VmFsdWVzID0gcXVlc3Rpb24ubWF4X3NlbGVjdGVkX3ZhbHVlcztcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIGNvbnN0IGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSA9IChjaGVja2VkLCB2YWwpID0+IHtcbiAgICBjb25zdCBjdXJyZW50QW5zID0gdmFsdWUgfHwgW107XG4gICAgY29uc3QgbWF4U2VsZWN0aW9uUmVhY2hlZCA9XG4gICAgICBxdWVzdGlvbk1heFZhbHVlcyAhPT0gMCAmJiBjdXJyZW50QW5zLmxlbmd0aCA9PT0gcXVlc3Rpb25NYXhWYWx1ZXM7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gbWF4U2VsZWN0aW9uUmVhY2hlZCA/IGN1cnJlbnRBbnMgOiBbLi4uY3VycmVudEFucywgdmFsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjdXJyZW50QW5zLmZpbHRlcigodikgPT4gdiAhPT0gdmFsKTtcbiAgICB9XG5cbiAgICBzZXRGaWVsZFZhbHVlKHF1ZXN0aW9uU2x1ZywgbmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsPntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIG1hcmdpbj1cIm5vcm1hbFwiIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgc3g9e3sgYWxpZ25JdGVtczogXCJmbGV4LXN0YXJ0XCIgfX1cbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBzeD17eyBtYXJnaW5Ub3A6IC0xIH19XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQpID0+IHtcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eSA9PT0gXCJWaXNpYmxlXCIpIHtcbiAgICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgICByZXR1cm4gISFydWxlUmVzdWx0O1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICByZXR1cm4gISFydWxlUmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZT8udG9TdHJpbmcoKSB8fCBudWxsXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT4ge1xuICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBjaGVja1J1bGUoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLCBydWxlKTtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBjaGVja1Zpc2liaWxpdHkocnVsZSwgcnVsZVJlc3VsdCk7XG5cbiAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJldHVybiByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQmFkZ2UgRmVhdHVyZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YmFkZ2VfZmVhdHVyZXNfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5CYWRnZUZlYXR1cmVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIEJ1dHRvbixcbiAgQ2FyZCxcbiAgQ2FyZEhlYWRlcixcbiAgRGl2aWRlcixcbiAgUGFwZXJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVGaWx0ZXIgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlRmlsdGVyXCI7XG5pbXBvcnQge1xuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0VHlwZUZpbHRlciBmcm9tIFwiLi9UaWNrZXRUeXBlRmlsdGVyXCI7XG5pbXBvcnQgQXNzaWduZWRGaWx0ZXIgZnJvbSBcIi4vQXNzaWduZWRGaWx0ZXJcIjtcbmltcG9ydCBTdGF0dXNGaWx0ZXIgZnJvbSBcIi4vU3RhdHVzRmlsdGVyXCI7XG5pbXBvcnQgRnJlZVBhaWRGaWx0ZXIgZnJvbSBcIi4vRnJlZVBhaWRGaWx0ZXJcIjtcbmltcG9ydCBQcm9tb0NvZGVGaWx0ZXIgZnJvbSBcIi4vUHJvbW9Db2RlRmlsdGVyXCI7XG5cbmNvbnN0IEZpbHRlciA9ICh7IG9uRmlsdGVyLCBvblJlc2V0LCBmaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2ZpbHRlck51bUFjdGl2ZSwgc2V0RmlsdGVyTnVtQWN0aXZlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA9IDE7XG4gIGNvbnN0IEFERF9GSUxURVJfTlVNQkVSID0gMTtcblxuICBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgICBsZXQgY291bnQgPSAwO1xuICAgIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgICBjb3VudCArPSBBRERfRklMVEVSX05VTUJFUjtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gY291bnQ7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhmaWx0ZXIpKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgc2V0RmlsdGVyTnVtQWN0aXZlKDApO1xuICAgIG9uUmVzZXQoKTtcbiAgICB0b2dnbGUoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxCYWRnZVxuICAgICAgICAgIGJhZGdlQ29udGVudD17ZmlsdGVyTnVtQWN0aXZlfVxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc3g9e3sgbXI6IGZpbHRlck51bUFjdGl2ZSA+IDAgPyBNQVJHSU5fUklHSFRfV0lUSF9CQURHRSA6IFwiXCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0ZpbHRlckxpc3QgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8UGFwZXIgZWxldmF0aW9uPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDaGVja2JveENvbnRhaW5lcn0+XG4gICAgICAgICAgPENhcmQgdmFyaWFudD1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8Q2FyZEhlYWRlclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlcnNcIlxuICAgICAgICAgICAgICBhY3Rpb249e1xuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbHRlclJlc2V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xlYW5CdXR0b259XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJmaWx0ZXIuY2xlYXJcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RGl2aWRlciAvPlxuICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QXNzaWduZWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U3RhdHVzRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFRpY2tldFR5cGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxQcm9tb0NvZGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9QUk9NT0NPREVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RnJlZVBhaWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9GUkVFX1BBSURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShGaWx0ZXIpO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0ZSRUVfUEFJRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEZyZWVQYWlkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJGcmVlXCIsIGxhYmVsOiBcIkZyZWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiUGFpZFwiLCBsYWJlbDogXCJQYWlkXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkZyZWUgLyBQYWlkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZyZWVQYWlkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGcmVlUGFpZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBUZXh0RmllbGRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1BST01PQ09ERSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFByb21vQ29kZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1BST01PQ09ERTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuICBjb25zdCBbcHJvbW9Db2RlLCBzZXRQcm9tb0NvZGVdID0gdXNlU3RhdGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuXG4gIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IERFQk9VTkNFX1ZBTFVFID0gNTAwO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UHJvbW9Db2RlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldikgPT4ge1xuICAgIGNvbnN0IG5ld1Byb21vQ29kZSA9IGV2LnRhcmdldC52YWx1ZTtcbiAgICAvLyB1cGRhdGUgbG9jYWwgc3RhdGUgc28gdGhlIGlucHV0IHJlZmxlY3RzIGNoYW5nZXNcbiAgICBzZXRQcm9tb0NvZGUobmV3UHJvbW9Db2RlKTtcblxuICAgIC8vIHJlbW92ZSBjdXJyZW50IGRlYm91bmNlXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuXG4gICAgLy8gZGVib3VuY2Ugc2V0IHRvIDUwMCBtc1xuICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb25GaWx0ZXIoe1xuICAgICAgICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBuZXdQcm9tb0NvZGVcbiAgICAgIH0pO1xuICAgIH0sIERFQk9VTkNFX1ZBTFVFKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHJlbW92ZSBkZWJvdW5jZSBvbiByZWxvYWRcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlByb21vIENvZGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHB5OiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByb21vIGNvZGVcIlxuICAgICAgICAgICAgdmFsdWU9e3Byb21vQ29kZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAvPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblByb21vQ29kZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbW9Db2RlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuY29uc3QgU2VhcmNoID0gKHsgb25TZWFyY2ggfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgICBzZXRTaG93Q2xvc2UodHJ1ZSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgUGFwZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFNvcnQgPSAoeyBvblNvcnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPFBhcGVyXG4gICAgICAgICAgZWxldmF0aW9uPXs4fVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImRlc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJhc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFN0YXR1c0ZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUzogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiSW5jb21wbGV0ZVwiLCBsYWJlbDogXCJJbmNvbXBsZXRlXCIgfSxcbiAgICB7IHZhbHVlOiBcIkNvbXBsZXRlXCIsIGxhYmVsOiBcIkNvbXBsZXRlXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlN0YXR1c1wiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TdGF0dXNGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXR1c0ZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgVGlja2V0VHlwZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyB0aWNrZXRfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiVGlja2V0IFR5cGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3RpY2tldF90eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldFR5cGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFR5cGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGaWx0ZXJzID0gKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkgPT4gKFxuICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgIDxHcmlkXG4gICAgICBpdGVtXG4gICAgICB4cz17Nn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgcGFkZGluZz17MX1cbiAgICAgIGdhcD17Mn1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICA+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IC8+XG4gICAgPC9HcmlkPlxuICA8L0dyaWQ+XG4pO1xuXG5GaWx0ZXJzLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZvcm1Gb290ZXIgPSAoeyBzYXZlTGFiZWwsIGNhbmNlbExhYmVsLCBvbkNsb3NlLCBkaXNhYmxlZCB9KSA9PiAoXG4gIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZm9vdGVyfT5cbiAgICA8QnV0dG9uXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtjYW5jZWxMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNhdmVCdG59XG4gICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtzYXZlTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gIDwvQm94PlxuKTtcblxuRm9ybUZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gIHNhdmVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2FuY2VsTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1Gb290ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEVycm9yTGFiZWwoeyBtZXNzYWdlLCBjb2xvciwgY2xhc3NOYW1lcywgZGF0YVRlc3RJZCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmVycm9yTGFiZWx9ICR7Y2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzfWB9XG4gICAgICBzdHlsZT17eyBjb2xvciB9fVxuICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgPlxuICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvciB9fSAvPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxhYmVsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQmFja2Ryb3AsIENpcmN1bGFyUHJvZ3Jlc3MgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBMb2FkZXIgPSAoeyBvcGVuIH0pID0+IChcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgPEJhY2tkcm9wIG9wZW49e29wZW59IHN4PXsodGhlbWUpID0+ICh7IHpJbmRleDogdGhlbWUuekluZGV4LmRyYXdlciArIDEgfSl9PlxuICAgIDxDaXJjdWxhclByb2dyZXNzIGNvbG9yPVwiaW5oZXJpdFwiIC8+XG4gIDwvQmFja2Ryb3A+XG4pO1xuXG5Mb2FkZXIucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTG9hZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgc3VtbWl0LCBtZW1iZXJPcmRlcnMsIG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UgfSA9XG4gICAgdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgaWQ9XCJpbmZpbml0ZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5teU9yZGVyc1dyYXBwZXJ9PlxuICAgICAge1wiIFwifVxuICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnM/Lmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgIGhhc01vcmU9e29yZGVyc19jdXJyZW50X3BhZ2UgPCBvcmRlcnNfbGFzdF9wYWdlfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgPlxuICAgICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICAgIGtleT17b3JkZXIubnVtYmVyICsgb3JkZXIuaWR9XG4gICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm5vT3JkZXJzSWNvbldyYXBwZXJ9PlxuICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgIHRvcDogMCxcbiAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOEZcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7dChcIm9yZGVycy5ub19vcmRlcnNcIil9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0KTtcbiAgY29uc3QgaGFzUmVmdW5kUmVxdWVzdHMgPSB0aWNrZXRzPy5zb21lKCh0KSA9PiB0LnJlZnVuZF9yZXF1ZXN0cy5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgJHtzdWJtaXRSZXF1ZXN0ID8gc3R5bGVzLnJlZnVuZERpc2FibGVkIDogXCJcIn1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7aGFzUmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbWFpbCBzdXBwb3J0IGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIHRhcmdldD1cIl90b3BcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgaHJlZj17YG1haWx0bzoke3N1bW1pdC5zdXBwb3J0X2VtYWlsfWB9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeSA9ICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlIG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59O1xuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICh7IGZldGNoRGF0YSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyVGlja2V0cyxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXYgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRUb01lV3JhcHBlcn0+XG4gICAgICAgIHt1c2VyVGlja2V0cz8ubGVuZ3RoID8gKFxuICAgICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgICAgZGF0YUxlbmd0aD17dXNlclRpY2tldHM/Lmxlbmd0aH1cbiAgICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YSh1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgICBoYXNNb3JlPXt1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIDwgdXNlcl90aWNrZXRzX2xhc3RfcGFnZX1cbiAgICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgICAgICAgICB7dXNlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9UaWNrZXRzRm91bmR9PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ljb25XcmFwcGVyfT5cbiAgICAgICAgICAgICAgPFNlYXJjaEljb24gc3g9e3sgZm9udFNpemU6IDQ0LCBjb2xvcjogXCIjMDAwMDAwOEZcIiB9fSAvPlxuICAgICAgICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOCxcbiAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICB0b3A6IDAsXG4gICAgICAgICAgICAgICAgICByaWdodDogMCxcbiAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA4RlwiXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRzLm5vX3RpY2tldHNcIil9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnblRvTWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25lZFRvID0gKHsgZW1haWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCI+XG4gICAgICAgIHtlbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEV4dGVybmFsQXNzaWduZWRUbyA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX2J5XCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBNYW5hZ2VGb3IgPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5tYW5hZ2VfZm9yXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBBdHRlbmRlZVN0YXR1cyA9ICh7IHRpY2tldCwgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSAhdGlja2V0Lm93bmVyPy5lbWFpbCAmJiB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCBpc0RlbGVnYXRlZCA9ICEhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHRpY2tldC5vd25lcj8uZW1haWwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxBc3NpZ25lZFRvIGVtYWlsPXt0aWNrZXQub3duZXIuZW1haWx9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8RXh0ZXJuYWxBc3NpZ25lZFRvXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxNYW5hZ2VGb3JcbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3duZXI/LmZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3duZXI/Lmxhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkF0dGVuZGVlU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdHRlbmRlZVN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgaWYgKCFvcmRlcj8ubWVtYmVyVGlja2V0cz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5zbGljZSgwLCBpdGVtc1RvRGlzcGxheSk7XG5cbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAob3JkZXI/LnRpY2tldHNfdG90YWwgPiBvcmRlcj8ubWVtYmVyVGlja2V0cy5sZW5ndGgpIHtcbiAgICAgIG9uUGFnaW5hdGVDbGljaygpO1xuICAgIH1cbiAgICBzZXRJdGVtc1RvRGlzcGxheShpdGVtc1RvRGlzcGxheSArIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH07XG5cbiAgY29uc3Qgb25WaWV3TGVzcyA9ICgpID0+IHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NsaWNlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXshIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgICAge29yZGVyPy50aWNrZXRzX3RvdGFsID4gaXRlbXNUb0Rpc3BsYXkgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBtb3JlIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TW9yZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IG9yZGVyPy50aWNrZXRzX3RvdGFsID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbGVzcyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld0xlc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgeyByZXNldFRpY2tldCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IG1vZGFsVmlld3MgPSB7XG4gIGRldGFpbDogXCJERVRBSUxcIixcbiAgcmVhc3NpZ246IFwiUkVBU1NJR05cIixcbiAgYXNzaWduOiBcIkFTU0lHTlwiXG59O1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5hc3NpZ24pfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFja1xuICAgICAgc3g9e3tcbiAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZW5kXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgfX1cbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICA+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuZGV0YWlsKX1cbiAgICAgID5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVhc3NpZ24gdGlja2V0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5yZWFzc2lnbil9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cblRpY2tldENUQXMucHJvcFR5cGVzID0ge1xuICBpc0luY29tcGxldGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzVW5hc3NpZ25lZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNSZWFzc2lnbmFibGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uT3BlbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIGlzUmVmdW5kTW9kYWwsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSwgY2FuUmVhc3NpZ24gfSA9XG4gICAgdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbbW9kYWxPcGVuLCBzZXRNb2RhbE9wZW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBvblJlYXNzaWduYWJsZVBlcmlvZCA9IHJlYXNzaWduRGF0ZSA+IG5vdztcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPVxuICAgIG9uUmVhc3NpZ25hYmxlUGVyaW9kICYmIGNhblJlYXNzaWduICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4obnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKHZpZXcpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4odmlldyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyV3JhcHBlcn0gJHtcbiAgICAgICAgaXNSZWZ1bmRNb2RhbCA/IHN0eWxlcy5yZWZ1bmRNb2RhbCA6IFwiXCJcbiAgICAgIH0gJHtpc1JlZnVuZE1vZGFsICYmICFpc1JlZnVuZGFibGUgPyBzdHlsZXMuZGlzYWJsZWRSZWZ1bmQgOiBcIlwifSAke1xuICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQgPyBzdHlsZXMuc2VsZWN0ZWQgOiBcIlwiXG4gICAgICB9YH1cbiAgICA+XG4gICAgICB7aXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0geHM9ezF9IHBhZGRpbmc9ezJ9IGNsYXNzTmFtZT17c3R5bGVzLmNoZWNrYm94fT5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE4XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17IWlzUmVmdW5kYWJsZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB4cz17aXNSZWZ1bmRNb2RhbCA/IDExIDogMTJ9XG4gICAgICA+XG4gICAgICAgIDxHcmlkXG4gICAgICAgICAgeHM9ezh9XG4gICAgICAgICAgcHk9ezJ9XG4gICAgICAgICAgcGw9ezR9XG4gICAgICAgICAgaXRlbVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFRpY2tldFR5cGV9XG4gICAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVXcmFwcGVyfSB4cz17NH0gcHk9ezJ9IHByPXs0fSBpdGVtPlxuICAgICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgIGFsdD17YmYubmFtZX1cbiAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiA0LCBwYjogMiB9fSBpdGVtPlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1c1xuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ9eyEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8Qm94IHN4PXt7IGRpc3BsYXk6IFwiZmxleFwiLCBmbGV4V3JhcDogXCJ3cmFwXCIsIHdpZHRoOiBcIjEwMCVcIiB9fT5cbiAgICAgICAgICA8Qm94IHN4PXt7IG1pbldpZHRoOiBcIjMwMHB4XCIgfX0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc30+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAhaXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuZGV0YWlsfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICAgIDxUaWNrZXRBc3NpZ25cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e1ttb2RhbFZpZXdzLnJlYXNzaWduLCBtb2RhbFZpZXdzLmFzc2lnbl0uaW5jbHVkZXMobW9kYWxPcGVuKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3JkZXJfaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvdGFsX3JlZnVuZGVkX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0aWNrZXRfdHlwZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGlzUmVmdW5kTW9kYWw6IFByb3BUeXBlcy5ib29sLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWxlY3RUb1JlZnVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlZnVuZERldGFpbHMgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHNcIjtcblxuY29uc3QgVGFiUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlID0gKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZ1bmREZXRhaWxzT3Blbiwgc2V0UmVmdW5kRGV0YWlsc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICAgICAodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkXG4gICAgICApO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9zZVN1Ym1pdFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDEsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogXCI1cHggMTBweFwiIH19XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiA0LFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgY3VycmVuY3ksIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHJlcXVlc3RlZFRpY2tldHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHModGlja2V0cyksXG4gICAgW3RpY2tldHNdXG4gICk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgcGFkZGluZzogXCIwIDVyZW1cIlxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVxdWVzdGVkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBjdXJyZW5jeT17Y3VycmVuY3l9XG4gICAgICAgICAgICByZWZ1bmREZXRhaWxzXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuUmVmdW5kRGV0YWlscy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRGV0YWlscztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEljb25CdXR0b24sIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdG9vbHRpcENsYXNzZXMgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBJbmZvSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgUmVmdW5kU3RhdHVzIGZyb20gXCIuL1JlZnVuZFN0YXR1c1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCA9ICh7IHRpY2tldCwgY3VycmVuY3ksIHJlZnVuZERldGFpbHMgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgR1JJRF84ID0gODtcbiAgY29uc3QgR1JJRF8xMiA9IDEyO1xuXG4gIGNvbnN0IFBBRERJTkdfMiA9IDI7XG5cbiAgY29uc3QgYXBwcm92ZWRSZWZ1bmRzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cy5maWx0ZXIoXG4gICAgKHJlZnVuZCkgPT4gcmVmdW5kLnN0YXR1cyA9PT0gXCJBcHByb3ZlZFwiXG4gICk7XG5cbiAgY29uc3QgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeSA9IHt9O1xuXG4gIGFwcHJvdmVkUmVmdW5kcy5mb3JFYWNoKChyZWZ1bmQpID0+IHtcbiAgICByZWZ1bmQucmVmdW5kZWRfdGF4ZXMuZm9yRWFjaCgocnQpID0+IHtcbiAgICAgIGNvbnN0IHRheElkID0gcnQudGF4LmlkO1xuICAgICAgaWYgKCFyZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSkge1xuICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSA9IHtcbiAgICAgICAgICBuYW1lOiBydC50YXgubmFtZSxcbiAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50OiAwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXS50b3RhbFJlZnVuZGVkVGF4QW1vdW50ICs9XG4gICAgICAgIHJ0LnJlZnVuZGVkX2Ftb3VudDtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgSHRtbFRvb2x0aXAgPSBzdHlsZWQoKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9KSA9PiAoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgPFRvb2x0aXAgey4uLnByb3BzfSBjbGFzc2VzPXt7IHBvcHBlcjogY2xhc3NOYW1lIH19IC8+XG4gICkpKCgpID0+ICh7XG4gICAgW2AmIC4ke3Rvb2x0aXBDbGFzc2VzLnRvb2x0aXB9YF06IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZjVmNWY5XCIsXG4gICAgICBjb2xvcjogXCJyZ2JhKDAsIDAsIDAsIDAuODcpXCIsXG4gICAgICBtYXhXaWR0aDogMjIwLFxuICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICNkYWRkZTlcIlxuICAgIH1cbiAgfSkpO1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfSAke1xuICAgICAgICByZWZ1bmREZXRhaWxzID8gc3R5bGVzLnJlZnVuZERldGFpbCA6IFwiXCJcbiAgICAgIH0gYH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3RlZC10aWNrZXQtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17cmVmdW5kRGV0YWlscyA/IEdSSURfOCA6IEdSSURfMTJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICBwdD17Mn1cbiAgICAgICAgcHg9ezR9XG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8R3JpZCBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVXcmFwcGVyfSB4cz17NH0gaXRlbT5cbiAgICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICAgIGFsdD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBrZXk9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXs0fSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICAgIDxSZWZ1bmRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0gcHg9ezR9IHBiPXtyZWZ1bmREZXRhaWxzID8gUEFERElOR18yIDogMH0gY29udGFpbmVyPlxuICAgICAgICA8R3JpZCB4cz17OH0gY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0QXR0ZW5kZWV9PlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTogPENvcHlUZXh0IHRleHQ9e3RpY2tldC5udW1iZXJ9IC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtyZWZ1bmREZXRhaWxzICYmIHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgICA8R3JpZCB4cz17NH0gcGw9ezR9PlxuICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgUmVmdW5kZWRcbiAgICAgICAgICAgIHthcHByb3ZlZFJlZnVuZHMuc29tZSgocikgPT4gci5yZWZ1bmRlZF90YXhlcy5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgIDxIdG1sVG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQucmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICBUaWNrZXQgQW1vdW50XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGI+VGF4ZXM8L2I+XG4gICAgICAgICAgICAgICAgICAgIHtPYmplY3Qua2V5cyhyZWZ1bmRlZFRheGVzU3VtbWF0b3J5KS5tYXAoKHRheElkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LCBuYW1lIH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF07XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGtleT17dGF4SWR9PntgJHtuYW1lfSAtICR7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgY3VycmVuY3kgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKX1gfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEluZm9JY29uIC8+XG4gICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8L0h0bWxUb29sdGlwPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAge21vbWVudChcbiAgICAgICAgICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0c1swXS5hY3Rpb25fZGF0ZSAqIE1JTExJU0VDX1RPX1NFQ1xuICAgICAgICAgICAgKS5mb3JtYXQoXCJNTU0gREQsIFlZWVlcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICAgeyFyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezEyfSBwcj17NH0gcGI9ezJ9PlxuICAgICAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbT5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmdW5kRGV0YWlsczogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RlZFRpY2tldDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDaGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kU3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBzdGF0dXNDb2xvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IodGlja2V0KSxcbiAgICBbdGlja2V0XVxuICApO1xuICByZXR1cm4gKFxuICAgIDxDaGlwXG4gICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHJlZnVuZCBzdGF0dXMgbGFiZWxcIlxuICAgICAgbGFiZWw9e3QoYHRpY2tldF9zdGF0dXMucmVmdW5kX3JlcXVlc3RfJHtzdGF0dXNDb2xvcn1gKX1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzW3N0YXR1c0NvbG9yXX1gfVxuICAgIC8+XG4gICk7XG59O1xuXG5SZWZ1bmRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RIUkVFLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RzTW9kYWwgPSAoe1xuICB0aWNrZXRzLFxuICBzdW1taXQsXG4gIG9wZW4sXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICB1bnNlbGVjdFJlZnVuZFRpY2tldHNcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlKFNURVBfT05FKTtcbiAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3JlZnVuZFN1Y2Nlc3MsIHNldFJlZnVuZFN1Y2Nlc3NdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgICBpZiAocmVmdW5kU3VjY2Vzcykge1xuICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UoKTsgLy8gaWYgdGhlIHJlZnVuZCBpcyBhIHN1Y2Nlc3MsIHRyaWdnZXIgYW5kIHJlLXJldHJpZXZlIHRpY2tldHMgYnkgb3JkZXJcbiAgICAgIHNldFJlZnVuZFN1Y2Nlc3MoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjb25maXJtUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9UV08pO1xuICB9O1xuXG4gIGNvbnN0IGdvQmFja1RvUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzOiB0aWNrZXRzVG9SZWZ1bmQgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHNUb1JlZnVuZC5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RlcChTVEVQX1RIUkVFKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfc2VsZWN0X3JlZnVuZFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICBrZXk9e2B0aWNrZXQtJHt0aWNrZXQuaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1xuICAgICAgICAgICAgICAhIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgICAgIGlzUmVmdW5kTW9kYWxcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y29uZmlybVJlZnVuZH1cbiAgICAgICAgICBkaXNhYmxlZD17dGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3ggZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCI+XG4gICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jb25maXJtX3JlZnVuZFwiKX1cbiAgICAgIDwvaDM+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzVG9SZWZ1bmQubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuQ1RBQnV0dG9uV3JhcHBlcn0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLXJldHVybi1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtnb0JhY2tUb1JlZnVuZH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5iYWNrXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtyZWZ1bmRUaWNrZXRzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUaHJlZSA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgY2FzZSBTVEVQX1RIUkVFOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFRocmVlKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWZ1bmQtcmVxdWVzdHNcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LW1vZGFsXCJcbiAgICAgID5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEljb25CdXR0b24sIFR5cG9ncmFwaHksIERyYXdlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBDbG9zZSBhcyBDbG9zZUljb24gfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSaWdodERyYXdlciA9ICh7IGlkLCB0aXRsZSwgY2hpbGRyZW4sIG9wZW4sIG9uQ2xvc2UsIGNsYXNzTmFtZSB9KSA9PiAoXG4gIDxEcmF3ZXJcbiAgICBpZD17aWR9XG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLndyYXBwZXJ9ICR7Y2xhc3NOYW1lfWB9XG4gID5cbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8SWNvbkJ1dHRvblxuICAgICAgICBkYXRhLXRlc3RpZD1cImNsb3NlLWRyYXdlclwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICAge2NoaWxkcmVufVxuICA8L0RyYXdlcj5cbik7XG5cblJpZ2h0RHJhd2VyLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGl0bGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5ub2RlXSksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJpZ2h0RHJhd2VyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTdW1taXRIZWFkZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICBkYXRhLXRlc3RpZD1cIm15LW9yZGVycy10aWNrZXQtaGVhZGVyXCJcbiAgICA+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT5cbiAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgIDwvaDI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdW1taXRIZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgRGVsZWdhdGVGb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9maXJzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmZpcnN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZmlyc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2xhc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5sYXN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfbGFzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmVtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbkRlbGVnYXRlRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdSA/IFwieW91XCIgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlja2V0LnRpY2tldF90eXBlLm5hbWU7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVhc3NpZ25IZWFkZXIgPSAoe1xuICBpblByb2dyZXNzLFxuICBhbGxvd3NEZWxlZ2F0ZSxcbiAgdGlja2V0LFxuICB1c2VyRW1haWwsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ueW91cnNlbGZcIilcbiAgICAgIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG5cbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ucmVhc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBhbGxvd3NEZWxlZ2F0ZVxuICAgICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uXCIpXG4gICAgICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25fbm9fZGVsZWdhdGVcIik7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgIDxiciAvPlxuICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNvbXBsZXRlX2xhdGVyXCIpfVxuICAgICAgICA8L0xpbms+XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcblJlYXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlYXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkZvcm07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIENvbGxhcHNlLCBEaXZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGFzc2lnbkF0dGVuZGVlLFxuICBkZWxlZ2F0ZVRpY2tldCxcbiAgcmVhc3NpZ25UaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9uc1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBEZWxlZ2F0ZUZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9EZWxlZ2F0ZUZvcm1cIjtcbmltcG9ydCBBc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgUmVhc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoeyB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb3Blbiwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduT3B0aW9uLCBzZXRBc3NpZ25PcHRpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25hdGlvbkluUHJvZ3Jlc3MsIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc0Fzc2lnbmVkVG9NZSA9IHVzZXJQcm9maWxlPy5lbWFpbCA9PT0gdGlja2V0Py5vd25lcj8uZW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvbkFzc2lnbiA9IChlbWFpbCwgbWVzc2FnZSA9IFwiXCIpID0+IHtcbiAgICBpZiAob3duZXJJZCkge1xuICAgICAgZGlzcGF0Y2gocmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uRGVsZWdhdGUgPSAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGRlbGVnYXRlVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbClcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCB0aXRsZSA9IG93bmVySWRcbiAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi50aXRsZVwiKVxuICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi50aXRsZVwiKTtcbiAgY29uc3QgSGVhZGVyID0gb3duZXJJZCA/IFJlYXNzaWduSGVhZGVyIDogQXNzaWduSGVhZGVyO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlYXNzaWduRHJhd2VyXCJcbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFJlYXNzaWduQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxIZWFkZXJcbiAgICAgICAgICAgICAgaW5Qcm9ncmVzcz17YXNzaWduYXRpb25JblByb2dyZXNzfVxuICAgICAgICAgICAgICBhbGxvd3NEZWxlZ2F0ZT17YWxsb3dzRGVsZWdhdGV9XG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJQcm9maWxlLmVtYWlsfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAge2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcyA/IChcbiAgICAgICAgICAgICAgPEFzc2lnbkVRRm9ybVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduT3B0aW9uc1dyYXBwZXJ9PlxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNBc3NpZ25lZFRvTWV9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkFzc2lnbih1c2VyUHJvZmlsZS5lbWFpbCwgXCJcIil9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgICAgICAgPEJveD5cbiAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm90aGVyXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQXNzaWduKHZhbC5uZXdfYXR0ZW5kZWVfZW1haWwsIHZhbC5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJvdGhlclwiICYmIChcbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJvdGhlclwiKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fb3RoZXJcIil9XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICB7YWxsb3dzRGVsZWdhdGUgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICBvclxuICAgICAgICAgICAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm1hbmFnZVwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgICAgICAgICAgIDxEZWxlZ2F0ZUZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxlZ2F0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZmlyc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfbGFzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJtYW5hZ2VcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm1hbmFnZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ubWFuYWdlX3RpY2tldFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgdGl0bGU9e3NhdmVNZXNzYWdlPy50aXRsZX1cbiAgICAgICAgZGVzY3JpcHRpb249e3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXRBc3NpZ24ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRBc3NpZ247XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7XG4gICAgZXJyb3JzLFxuICAgIHZhbHVlcyxcbiAgICB0b3VjaGVkLFxuICAgIHNldEZpZWxkVG91Y2hlZCxcbiAgICBzZXRGaWVsZFZhbHVlLFxuICAgIGluaXRpYWxWYWx1ZXNcbiAgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBkaXNhYmxlZCA9ICEhaW5pdGlhbFZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLnRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgc3g9e3sgZm9udFNpemU6IFwiMWVtXCIsIGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyID0gKHtcbiAgZGlzY2xhaW1lcixcbiAgZm9ybWlrLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGlzUmVxdWlyZWQgPSB0cnVlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5kaXNjbGFpbWVyX2xhYmVsXCIpfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQge1xuICBwYXJzZUFuc3dlcnMsXG4gIGJ1aWxkVmFsaWRhdGlvblNjaGVtYVxufSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJkZXRhaWxzRHJhd2VyXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIGlzRGVsZWdhdGVkPXshIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZH1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkLCBpc0RlbGVnYXRlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyLCBpbml0aWFsVmFsdWVzIH0gPVxuICAgIGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgIC8+XG4gICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBzeD17eyBmb250V2VpZ2h0OiA1MDAsIG1hcmdpbjogXCIxMHB4IDBcIiB9fT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwubWFuYWdlX2ZvclwiKX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lLCBUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0ubWFwKFxuICAgICAgICAobmFtZSkgPT4gKFxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAga2V5PXtuYW1lfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIGxhYmVsPXt0KGB0aWNrZXRfZGV0YWlsLiR7bmFtZX1gKX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgaXNEZWxlZ2F0ZWQgfHwgISFpbml0aWFsVmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0RlbGVnYXRlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBDbG9zZSBhcyBDbG9zZUljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvbixcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIFRXT19JVEVNIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRQREYsXG4gIHNhdmVUaWNrZXREZXRhaWxzLFxuICByZXNlbmROb3RpZmljYXRpb25cbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBkb3dubG9hZFRpY2tldFBkZiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChnZXRUaWNrZXRQREYodGlja2V0KSk7XG4gIH07XG5cbiAgY29uc3Qgb25TZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZW5kTm90aWZpY2F0aW9uKHRpY2tldCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U2VudENvbmZpcm1hdGlvbih0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZW50Q29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICAgIH0sIE1JTExJU0VDX1RPX1NFQyAqIFRXT19JVEVNKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RHJhd2VyXG4gICAgICAgIGlkPVwiZGV0YWlsc0RyYXdlclwiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7XG4gICAgICAgICAgICAgICAgICAgICAgc2VudENvbmZpcm1hdGlvbiA/IHN0eWxlcy5zZW50IDogXCJcIlxuICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZW50Q29uZmlybWF0aW9ufVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7c2VudENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgeyEhcmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgcmVmdW5kIHJlcXVlc3RlZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblJlZnVuZFJlcXVlc3RlZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3JlZnVuZF9yZXF1ZXN0ZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0luY29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgaW5jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNVbmFzc2lnbmVkICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHVuYXNzaWduZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25Db21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY2FuY2VsbGVkXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25DYW5jZWxsZWR9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY2FuY2VsbGVkXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRSZXF1ZXN0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0U3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBEaXZpZGVyLFxuICBUYWIsXG4gIFRhYnMsXG4gIHVzZU1lZGlhUXVlcnksXG4gIHVzZVRoZW1lXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBUQUJTXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICBnZXRVc2VyVGlja2V0c1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBXaWRnZXRUYWJzID0gKHsgdGl0bGUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt0YWIsIHNldFRhYl0gPSB1c2VTdGF0ZShUQUJTLk9SREVSUyk7XG4gIGNvbnN0IFt0aWNrZXRzRnVsbHlMb2FkZWQsIHNldFRpY2tldHNGdWxseUxvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIGZpbHRlcixcbiAgICBzb3J0LFxuICAgIG9yZGVyc19wZXJfcGFnZTogb3JkZXJzUGVyUGFnZSxcbiAgICB0aWNrZXRfcGVyX3BhZ2U6IHRpY2tldFBlclBhZ2UsXG4gICAgdXNlclRpY2tldHMsXG4gICAgbWVtYmVyT3JkZXJzXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcblxuICBjb25zdCBoYW5kbGVUYWJDaGFuZ2UgPSAoXywgbmV3VGFiKSA9PiB7XG4gICAgc2V0VGFiKG5ld1RhYik7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hBc3NpZ25lZFRpY2tldHMgPSAocGFnZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJUaWNrZXRzKHsgcGFnZSwgcGVyUGFnZTogREVGQVVMVF9JVEVNU19QRVJfUEFHRSwgZmlsdGVyLCBzb3J0IH0pXG4gICAgKTtcblxuICBjb25zdCBmZXRjaE9yZGVyVGlja2V0cyA9IChwYWdlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG9yZGVyVGlja2V0c1Byb21pc2VzID0gZGF0YS5tYXAoKG9yZGVyKSA9PlxuICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogRklSU1RfUEFHRSxcbiAgICAgICAgICAgIHBlclBhZ2U6IHRpY2tldFBlclBhZ2UsXG4gICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICBzb3J0XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKG9yZGVyVGlja2V0c1Byb21pc2VzKTtcbiAgICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZldGNoUHJvbWlzZXMgPSBbXG4gICAgICBmZXRjaEFzc2lnbmVkVGlja2V0cyhGSVJTVF9QQUdFKSxcbiAgICAgIGZldGNoT3JkZXJUaWNrZXRzKEZJUlNUX1BBR0UpXG4gICAgXTtcbiAgICBQcm9taXNlLmFsbChmZXRjaFByb21pc2VzKS50aGVuKCgpID0+IHNldFRpY2tldHNGdWxseUxvYWRlZCh0cnVlKSk7XG4gIH0sIFtmaWx0ZXIsIHNvcnRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRzRnVsbHlMb2FkZWQpIHtcbiAgICAgIGlmIChtZW1iZXJPcmRlcnM/Lmxlbmd0aCA9PT0gMCAmJiB1c2VyVGlja2V0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRUYWIoVEFCUy5USUNLRVRTKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRzRnVsbHlMb2FkZWRdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGFiV3JhcHBlcn0+XG4gICAgICA8VGFic1xuICAgICAgICB2YWx1ZT17dGFifVxuICAgICAgICBvbkNoYW5nZT17aGFuZGxlVGFiQ2hhbmdlfVxuICAgICAgICB2YXJpYW50PXtpc01vYmlsZSA/IFwiZnVsbFdpZHRoXCIgOiBcInN0YW5kYXJkXCJ9XG4gICAgICA+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJvcmRlcnMudGl0bGVcIil9IHZhbHVlPXtUQUJTLk9SREVSU30gLz5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5hc3NpZ25lZF90b19tZVwiKX0gdmFsdWU9e1RBQlMuVElDS0VUU30gLz5cbiAgICAgIDwvVGFicz5cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8Qm94IHN4PXt7IHB0OiA2LCBwYjogMyB9fT57dGl0bGV9PC9Cb3g+XG4gICAgICB7dGFiID09PSBUQUJTLk9SREVSUyAmJiA8TXlPcmRlcnNUaWNrZXRzIGZldGNoRGF0YT17ZmV0Y2hPcmRlclRpY2tldHN9IC8+fVxuICAgICAge3RhYiA9PT0gVEFCUy5USUNLRVRTICYmIChcbiAgICAgICAgPEFzc2lnbmVkVG9NZSBmZXRjaERhdGE9e2ZldGNoQXNzaWduZWRUaWNrZXRzfSAvPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFRhYnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsLCBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgcmVzZXRGaWx0ZXIsXG4gIHJlc2V0RXJyb3IsXG4gIGNoYW5nZVNvcnQsXG4gIGNoYW5nZUZpbHRlclxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IEN1c3RvbVRoZW1lIGZyb20gXCIuLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0IExvYWRlciBmcm9tIFwiLi4vTG9hZGVyXCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuXG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi4vRmlsdGVyc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFdpZGdldFRhYnMgZnJvbSBcIi4uL1dpZGdldFRhYnNcIjtcbmltcG9ydCBTdW1taXRIZWFkZXIgZnJvbSBcIi4uL1N1bW1pdEhlYWRlclwiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21lc3NhZ2UsIHNldE1lc3NhZ2VdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFttZXNzYWdlQ2FsbGJhY2ssIHNldE1lc3NhZ2VDYWxsYmFja10gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3Qge1xuICAgIGxvYWRpbmcsXG4gICAgYXBpRXJyb3IsXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QXBpRXJyb3IgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRFcnJvcigpKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcGlFcnJvcikge1xuICAgICAgc2V0TWVzc2FnZShhcGlFcnJvcik7XG4gICAgICBzZXRNZXNzYWdlQ2FsbGJhY2socmVzZXRBcGlFcnJvcik7XG4gICAgfVxuICB9LCBbYXBpRXJyb3JdKTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZUZpbHRlcihmaWx0ZXJWYWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU29ydCA9IChzb3J0VmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VTb3J0KHNvcnRWYWx1ZSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEN1c3RvbVRoZW1lPlxuICAgICAgPExvYWRlciBvcGVuPXtsb2FkaW5nfSAvPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIW1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICBzZXRNZXNzYWdlKG51bGwpO1xuICAgICAgICAgIGlmIChtZXNzYWdlQ2FsbGJhY2spIG1lc3NhZ2VDYWxsYmFjaygpO1xuICAgICAgICB9fVxuICAgICAgICBib2R5PXttZXNzYWdlPy5ib2R5fVxuICAgICAgICB0aXRsZT17bWVzc2FnZT8udGl0bGV9XG4gICAgICAvPlxuICAgICAgPEZpbHRlcnNcbiAgICAgICAgb25GaWx0ZXI9e29uRmlsdGVyfVxuICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgb25TZWFyY2g9e29uRmlsdGVyfVxuICAgICAgICBvblJlc2V0PXtvblJlc2V0fVxuICAgICAgLz5cbiAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRzVGl0bGVUZXh0fT5cbiAgICAgICAgICB7ZmlsdGVyVmFsdWVzXG4gICAgICAgICAgICA/IHQoXCJsYWJlbHMuc2VhcmNoX3Jlc3VsdHNcIiwgeyBmaWx0ZXI6IGZpbHRlclZhbHVlcyB9KVxuICAgICAgICAgICAgOiB0KFwibGFiZWxzLnRpY2tldHNcIil9XG4gICAgICAgIDwvaDM+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsoc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrKX0+XG4gICAgICAgIDxXaWRnZXRUYWJzIHRpdGxlPXs8U3VtbWl0SGVhZGVyIC8+fSAvPlxuICAgICAgPC9DdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoV2lkZ2V0V3JhcHBlcik7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChydW4pIHtcbiAgICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3duZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bl0pO1xuXG4gIGNvbnN0IHsgZXh0cmFRdWVzdGlvbnMsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZVxuICApO1xuXG4gIHJldHVybiB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUdldFRpY2tldDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBTbW9vdGggc2Nyb2xsaW5nIGZ1bmN0aW9uIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuZnVuY3Rpb24gc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCB0YXJnZXRTY3JvbGxUb3AsIGR1cmF0aW9uKSB7XG4gIGNvbnN0IHN0YXJ0U2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgY29uc3QgZGlzdGFuY2UgPSB0YXJnZXRTY3JvbGxUb3AgLSBzdGFydFNjcm9sbFRvcDtcbiAgbGV0IHN0YXJ0VGltZSA9IG51bGw7XG5cbiAgZnVuY3Rpb24gYW5pbWF0aW9uU3RlcCh0aW1lc3RhbXApIHtcbiAgICBpZiAoIXN0YXJ0VGltZSkgc3RhcnRUaW1lID0gdGltZXN0YW1wO1xuICAgIGNvbnN0IGVsYXBzZWQgPSB0aW1lc3RhbXAgLSBzdGFydFRpbWU7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5taW4oZWxhcHNlZCAvIGR1cmF0aW9uLCAxKTtcbiAgICBjb25zdCBlYXNlSW5PdXRRdWFkID1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICBwcm9ncmVzcyA8IDAuNSA/IDIgKiBwcm9ncmVzcyAqKiAyIDogMSAtICgtMiAqIHByb2dyZXNzICsgMikgKiogMiAvIDI7XG5cbiAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gc3RhcnRTY3JvbGxUb3AgKyBkaXN0YW5jZSAqIGVhc2VJbk91dFF1YWQ7XG5cbiAgICBpZiAoZWxhcHNlZCA8IGR1cmF0aW9uKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xufVxuXG5jb25zdCB1c2VTY3JvbGxUb0Vycm9yID0gKGZvcm1paywgY29udGFpbmVySWQpID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIGlzU3VibWl0dGluZyB9ID0gZm9ybWlrO1xuICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgY29uc3QgZXJyb3JDb3VudCA9IGVycm9yQXJyYXkubGVuZ3RoO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gc29ydCBlbGVtZW50cyBieSBwb3NpdGlvblxuICAgIGNvbnN0IGVsZW1lbnRzU29ydGVkID0gZXJyb3JBcnJheVxuICAgICAgLnJlZHVjZSgocmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKGNvbnRhaW5lcklkKVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuTXVpRHJhd2VyLXBhcGVyXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnRzU29ydGVkWzBdO1xuXG4gICAgaWYgKGNvbnRhaW5lcj8uY29udGFpbnModGFyZ2V0LmVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lclxuICAgICAgY29uc3QgZWxlbU9mZmVzdCA9IDEwMDtcbiAgICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID0gNTAwO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cbiAgICAgICAgdGFyZ2V0LnRvcCAtIGNvbnRhaW5lclJlY3QudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIGVsZW1PZmZlc3Q7XG5cbiAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIHBvc2l0aW9uXG4gICAgICBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHNjcm9sbFRvcCwgYW5pbWF0aW9uRHVyYXRpb24pOyAvLyA1MDBtcyBkdXJhdGlvblxuICAgIH1cbiAgfSwgW2lzU3VibWl0dGluZ10pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlU2Nyb2xsVG9FcnJvcjtcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZTtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9XG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgIHRpY2tldC50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX3JlYXNzaWduICYmXG4gICAgKCF0aWNrZXQucHJvbW9fY29kZSB8fCB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX3JlYXNzaWduKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGNhblJlYXNzaWduXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgU1RBUlRfTE9BRElORyxcbiAgU1RPUF9MT0FESU5HLFxuICBSRVNFVF9MT0FESU5HXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVQsXG4gIFJFU0VUX0FQSV9FUlJPUixcbiAgU0VUX0FQSV9FUlJPUixcbiAgUkVTRVRfVElDS0VULFxuICBDSEFOR0VfRklMVEVSLFxuICBDSEFOR0VfU09SVCxcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX09SREVSX05VTUJFUixcbiAgRklMVEVSX1ZBUl9EQVRFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgREVMRUdBVEVfVElDS0VUXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UsIFRBQlMgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGhhc0xvYWRlZEFsbERhdGEgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgdXBkYXRlVGlja2V0Q29sbGVjdGlvbiB9IGZyb20gXCIuL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IERFRkFVTFRfRklMVEVSX1NUQVRFID0ge1xuICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogW10sXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogW10sXG4gIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IFwiXCIsXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX1BST01PQ09ERV06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCIsXG4gIFtGSUxURVJfVkFSX0RBVEVdOiBudWxsXG59O1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgdXNlclRpY2tldHM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjdXJyZW50X3RhYjogVEFCUy5PUkRFUlMsXG4gIHNvcnQ6IHt9LFxuICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAwLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAwLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMCxcbiAgdGlja2V0X2xhc3RfcGFnZTogMCxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c190b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogMCxcbiAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogMCxcbiAgYXBpRXJyb3I6IG51bGxcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgY2FzZSBSRVNFVF9TVEFURTpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgU1RBUlRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiB0cnVlIH07XG4gICAgY2FzZSBTVE9QX0xPQURJTkc6XG4gICAgY2FzZSBSRVNFVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IGZhbHNlIH07XG4gICAgY2FzZSBSRVNFVF9BUElfRVJST1I6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IG51bGwgfTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICAgICAgICBzb3J0OiB7fSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBDSEFOR0VfRklMVEVSOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZmlsdGVyOiB7IC4uLnN0YXRlLmZpbHRlciwgLi4ucGF5bG9hZCB9IH07XG4gICAgfVxuICAgIGNhc2UgQ0hBTkdFX1NPUlQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzb3J0OiB7IC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUubWVtYmVyT3JkZXJzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgbWVtYmVyT3JkZXJzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUudXNlclRpY2tldHMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB1c2VyVGlja2V0cyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUudXNlclRpY2tldHMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXNlclRpY2tldHMsXG4gICAgICAgIHVzZXJfdGlja2V0c190b3RhbDogdG90YWwsXG4gICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBmb3JtZXJPcmRlcj8ubWVtYmVyVGlja2V0cywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4uZm9ybWVyT3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICB0aWNrZXRzX3RvdGFsOiB0b3RhbFxuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cy5tYXAoXG4gICAgICAgICh0aWNrZXQpID0+XG4gICAgICAgICAgdGlja2V0c1JlZnVuZFJlcXVlc3RlZC5maW5kKCh0cnIpID0+IHRyci5pZCA9PT0gdGlja2V0LmlkKSB8fCB0aWNrZXRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLm9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOiB1cGRhdGVkVGlja2V0c1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFJFU0VUX1RJQ0tFVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IG51bGwgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICAgIG9yZGVyLm1lbWJlclRpY2tldHMsXG4gICAgICAgICAgdGlja2V0RGF0YVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5ld1VzZXJUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgc3RhdGUudXNlclRpY2tldHMsXG4gICAgICAgIHRpY2tldERhdGFcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycywgdXNlclRpY2tldHM6IG5ld1VzZXJUaWNrZXRzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHQpID0+XG4gICAgICAgICAgdC5pZCA9PT0gdGlja2V0RGF0YS5pZCA/IHRpY2tldERhdGEgOiB0XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0RGF0YSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHVwZGF0ZVByb2ZpbGVcbn0pID0+IHtcbiAgLy8gdG8gYWRkIG90aGVyIHJlZHVjZXJzIGxhdGVyXG4gIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAgICB3aWRnZXRTdGF0ZTogV2lkZ2V0UmVkdWNlclxuICB9KTtcblxuICBjb25zdCBzdG9yZSA9IGNvbmZpZ3VyZVN0b3JlKHtcbiAgICByZWR1Y2VyOiBwZXJzaXN0UmVkdWNlcihcbiAgICAgIHtcbiAgICAgICAga2V5OiBgcm9vdF9teV9vcmRlcnNfdGlja2V0c18ke2NsaWVudElkfWAsXG4gICAgICAgIHN0b3JhZ2VcbiAgICAgIH0sXG4gICAgICByZWR1Y2Vyc1xuICAgICksXG4gICAgbWlkZGxld2FyZTogKGdldERlZmF1bHRNaWRkbGV3YXJlKSA9PlxuICAgICAgZ2V0RGVmYXVsdE1pZGRsZXdhcmUoe1xuICAgICAgICB0aHVuazoge1xuICAgICAgICAgIGV4dHJhQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgICAgYXBpQmFzZVVybCxcbiAgICAgICAgICAgIHN1bW1pdCxcbiAgICAgICAgICAgIGxvZ2luVXJsLFxuICAgICAgICAgICAgdXBkYXRlUHJvZmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbmNvbnN0IGdldEFjY2Vzc1Rva2VuTW9jayA9ICgpID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFwiQWNjZXNzIHRva2VuIGVycm9yXCIpO1xuICAvLyByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICAgIGluaXRMb2dPdXQoKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgaW5pdExvZ091dCgpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYXV0aFByb21pc2VSZWplY3QgPSBhc3luYyAoKSA9PlxuICBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJBdXRoIFRva2VuIGVycm9yXCIpKTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIHJldHVybiByZXM7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oMSwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgcGFyc2VTdWJRdWVzdGlvbkFuc3dlciA9IChcbiAgcSxcbiAgYW5zd2VycyxcbiAgYW5zd2VyLFxuICBpbml0aWFsVmFsdWVzLFxuICBvbmx5UmVsZXZhbnRcbikgPT4ge1xuICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICBjb25zdCB7IHN1Yl9xdWVzdGlvbiwgYW5zd2VyX3ZhbHVlcyB9ID0gcnVsZTtcbiAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJfcXVlc3Rpb24ubmFtZSwgc3ViX3F1ZXN0aW9uLmlkKTtcbiAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBhbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShzdWJfcXVlc3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKFxuICAgICAgICBzdWJfcXVlc3Rpb24sXG4gICAgICAgIGFuc3dlcnMsXG4gICAgICAgIHN1YkFuc3dlcixcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25seVJlbGV2YW50XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIocSwgYW5zd2VycywgYW5zd2VyLCBpbml0aWFsVmFsdWVzLCBvbmx5UmVsZXZhbnQpO1xuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hID0gKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKSA9PiB7XG4gIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG5cbiAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgZmFsc2VcbiAgKVxuICAgIC5udWxsYWJsZSgpXG4gICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFuc1ZhbHVlTWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChcbiAgICAgICAgICBxdWVzdGlvbkFucyxcbiAgICAgICAgICBydWxlLmFuc3dlcl92YWx1ZXNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gY2hlY2sgaWYgcXVlc3Rpb24gaXMgdmlzaWJsZSB0byBhZGQgdmFsaWRhdGlvblxuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGAke3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYW5zVmFsdWVNYXRjaCAmJiBpc1Zpc2libGU7XG4gICAgICB9LFxuICAgICAgdGhlbjogKHNjaCkgPT4ge1xuICAgICAgICBpZiAoc3ViUXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgcmV0dXJuIHNjaC5taW4oMSkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBpZiAoc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHN1YlJ1bGUpID0+IHtcbiAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHN1YlF1ZXN0aW9uU2x1Zywgc3ViUnVsZSwgc2NoZW1hKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCB0eXBlLCBtYW5kYXRvcnksIHN1Yl9xdWVzdGlvbl9ydWxlcyB9ID0gcTtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcobmFtZSwgaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24odHlwZSwgbmFtZSwgbWFuZGF0b3J5KTtcblxuICAgIGlmIChzdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uID0gKHRpY2tldHMsIHRpY2tldCkgPT5cbiAgdGlja2V0cy5tYXAoKHQpID0+IHtcbiAgICBjb25zdCB0bXBUaWNrZXQgPSB7IC4uLnQgfTtcbiAgICAvLyB1cGRhdGUgYXR0ZW5kZWVcbiAgICBpZiAoXG4gICAgICB0Lm93bmVyPy5pZCA9PT0gdGlja2V0Lm93bmVyPy5pZCAmJlxuICAgICAgdC5vd25lcj8uc3RhdHVzICE9PSB0aWNrZXQub3duZXI/LnN0YXR1c1xuICAgICkge1xuICAgICAgdG1wVGlja2V0Lm93bmVyID0gdGlja2V0Lm93bmVyO1xuICAgIH1cbiAgICByZXR1cm4gdC5pZCA9PT0gdGlja2V0LmlkID8gdGlja2V0IDogdG1wVGlja2V0O1xuICB9KTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjb3B5SWNvbl9fX2xJM2VRXCI7XG52YXIgXzIgPSBcInJldmVyc2VkX19fekp6bURcIjtcbnZhciBfMyA9IFwidHJ1bmNhdGVkX19faldTblVcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX21WUGlSXCI7XG5leHBvcnQgeyBfMSBhcyBcImNvcHlJY29uXCIsIF8yIGFzIFwicmV2ZXJzZWRcIiwgXzMgYXMgXCJ0cnVuY2F0ZWRcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19teEVLV1wiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19PNHNTc1wiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19GM251S1wiO1xudmFyIF80ID0gXCJjbGVhbkJ1dHRvbl9fX3FxRHZVXCI7XG52YXIgXzUgPSBcImNvbnRhaW5lcl9fX1FlUVlfXCI7XG52YXIgXzYgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19aNDJtd1wiO1xudmFyIF83ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19UWjdrSlwiO1xudmFyIF84ID0gXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lcl9fX2tVblc5XCI7XG52YXIgXzkgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JycXA5XCI7XG52YXIgX2EgPSBcImZpbHRlckRhdGVMYWJlbF9fX0pnYmNzXCI7XG52YXIgX2IgPSBcImZpbHRlckljb25fX19paU96b1wiO1xudmFyIF9jID0gXCJmaWx0ZXJMYWJlbF9fX3NrWlA3XCI7XG52YXIgX2QgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19JRHJsU1wiO1xudmFyIF9lID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19rbUVFS1wiO1xudmFyIF9mID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fbmhOSnNcIjtcbnZhciBfMTAgPSBcImxhYmVsX19fTEFtZV9cIjtcbnZhciBfMTEgPSBcInNob3dGaWx0ZXJMaXN0X19fSVc0eEdcIjtcbnZhciBfMTIgPSBcInNvcnRDb250YWluZXJfX19zYjVCZFwiO1xudmFyIF8xMyA9IFwic29ydEljb25fX19jX1haaVwiO1xudmFyIF8xNCA9IFwic29ydExhYmVsX19fZFhpTXlcIjtcbnZhciBfMTUgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fUHAyWGdcIjtcbnZhciBfMTYgPSBcInRpdGxlV3JhcHBlcl9fX1A2bVB1XCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjbGVhbkJ1dHRvblwiLCBfNSBhcyBcImNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzcgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzggYXMgXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lclwiLCBfOSBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfYSBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfYiBhcyBcImZpbHRlckljb25cIiwgX2MgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfZCBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2UgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2YgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF8xMCBhcyBcImxhYmVsXCIsIF8xMSBhcyBcInNob3dGaWx0ZXJMaXN0XCIsIF8xMiBhcyBcInNvcnRDb250YWluZXJcIiwgXzEzIGFzIFwic29ydEljb25cIiwgXzE0IGFzIFwic29ydExhYmVsXCIsIF8xNSBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIsIF8xNiBhcyBcInRpdGxlV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJteU9yZGVyc1dyYXBwZXJfX19ISm15c1wiO1xudmFyIF8yID0gXCJub09yZGVyc0ZvdW5kX19fRFJ3Z29cIjtcbnZhciBfMyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX3RQVG1ZXCI7XG5leHBvcnQgeyBfMSBhcyBcIm15T3JkZXJzV3JhcHBlclwiLCBfMiBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzMgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImFzc2lnblRvTWVUZXh0X19fWlBhZXhcIjtcbnZhciBfMyA9IFwiYXNzaWduZWRCeVRleHRfX19iTlo3elwiO1xudmFyIF80ID0gXCJhc3NpZ25lZFRvTWVEZXNfX19HakZrVlwiO1xudmFyIF81ID0gXCJhc3NpZ25lZFRvTWVXcmFwcGVyX19fVXhjMnlcIjtcbnZhciBfNiA9IFwiYmFkZ2VGZWF0dXJlX19fQTJMTVZcIjtcbnZhciBfNyA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX0lRTE5QXCI7XG52YXIgXzggPSBcImNoZWNrYm94X19fWFpKcGJcIjtcbnZhciBfOSA9IFwiZGlzYWJsZWRSZWZ1bmRfX19TZmZsN1wiO1xudmFyIF9hID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF9iID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgX2MgPSBcIm5vT3JkZXJzSWNvbldyYXBwZXJfX19lZnlycFwiO1xudmFyIF9kID0gXCJub1RpY2tldHNGb3VuZF9fX2pMb2NvXCI7XG52YXIgX2UgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfZiA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfMTAgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgXzExID0gXCJvcmRlcldyYXBwZXJfX195REJBb1wiO1xudmFyIF8xMiA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF8xMyA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgXzE0ID0gXCJyZWZ1bmRNb2RhbF9fX0VxZ1BGXCI7XG52YXIgXzE1ID0gXCJzZWxlY3RlZF9fX0hXR05jXCI7XG52YXIgXzE2ID0gXCJ0YWJCdXR0b25zX19feFR5SkFcIjtcbnZhciBfMTcgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xOCA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzE5ID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzFhID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMWIgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xYyA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzFkID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImFzc2lnblRvTWVUZXh0XCIsIF8zIGFzIFwiYXNzaWduZWRCeVRleHRcIiwgXzQgYXMgXCJhc3NpZ25lZFRvTWVEZXNcIiwgXzUgYXMgXCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIsIF82IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF83IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfOCBhcyBcImNoZWNrYm94XCIsIF85IGFzIFwiZGlzYWJsZWRSZWZ1bmRcIiwgX2EgYXMgXCJkaXNwbGF5X25vbmVcIiwgX2IgYXMgXCJsYWJlbFwiLCBfYyBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiwgX2QgYXMgXCJub1RpY2tldHNGb3VuZFwiLCBfZSBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF9mIGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF8xMCBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfMTEgYXMgXCJvcmRlcldyYXBwZXJcIiwgXzEyIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgXzEzIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfMTQgYXMgXCJyZWZ1bmRNb2RhbFwiLCBfMTUgYXMgXCJzZWxlY3RlZFwiLCBfMTYgYXMgXCJ0YWJCdXR0b25zXCIsIF8xNyBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzE4IGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTkgYXMgXCJ0aWNrZXROb1wiLCBfMWEgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xYiBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzFjIGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMWQgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJDVEFCdXR0b25XcmFwcGVyX19fS2dxNmdcIjtcbnZhciBfMiA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzMgPSBcImFwcHJvdmVkX19fc3hFSldcIjtcbnZhciBfNCA9IFwiYmFkZ2VGZWF0dXJlX19fdExoRXBcIjtcbnZhciBfNSA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX185R2JEXCI7XG52YXIgXzYgPSBcImJ1dHRvblBpbGxfX19MZXNhelwiO1xudmFyIF83ID0gXCJjYW5jZWxCdXR0b25fX195ZmhZYlwiO1xudmFyIF84ID0gXCJjb250aW51ZUJ1dHRvbl9fX055WDNzXCI7XG52YXIgXzkgPSBcImRlbGV0ZUljb25fX19GU3d5ZVwiO1xudmFyIF9hID0gXCJwZW5kaW5nX19fYUViV3dcIjtcbnZhciBfYiA9IFwicmVmdW5kRGV0YWlsX19fY1EyOFZcIjtcbnZhciBfYyA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF9kID0gXCJyZWZ1bmRTdWNjZXNzZnVsX19fenJEUVlcIjtcbnZhciBfZSA9IFwicmVmdW5kVGV4dF9fX2FFbkw5XCI7XG52YXIgX2YgPSBcInJlZnVuZFRpY2tldEF0dGVuZGVlX19fUVhDak1cIjtcbnZhciBfMTAgPSBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lcl9fX3lhNjEzXCI7XG52YXIgXzExID0gXCJyZWplY3RlZF9fX05KRTRaXCI7XG52YXIgXzEyID0gXCJzdWJ0aXRsZV9fX1B0RGUyXCI7XG52YXIgXzEzID0gXCJzdWNjZXNzTXNnX19fSHRNc2VcIjtcbnZhciBfMTQgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfMTUgPSBcInRpY2tldExpc3RfX19lRFFSM1wiO1xudmFyIF8xNiA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJDVEFCdXR0b25XcmFwcGVyXCIsIF8yIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMyBhcyBcImFwcHJvdmVkXCIsIF80IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF81IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfNiBhcyBcImJ1dHRvblBpbGxcIiwgXzcgYXMgXCJjYW5jZWxCdXR0b25cIiwgXzggYXMgXCJjb250aW51ZUJ1dHRvblwiLCBfOSBhcyBcImRlbGV0ZUljb25cIiwgX2EgYXMgXCJwZW5kaW5nXCIsIF9iIGFzIFwicmVmdW5kRGV0YWlsXCIsIF9jIGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgX2QgYXMgXCJyZWZ1bmRTdWNjZXNzZnVsXCIsIF9lIGFzIFwicmVmdW5kVGV4dFwiLCBfZiBhcyBcInJlZnVuZFRpY2tldEF0dGVuZGVlXCIsIF8xMCBhcyBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lclwiLCBfMTEgYXMgXCJyZWplY3RlZFwiLCBfMTIgYXMgXCJzdWJ0aXRsZVwiLCBfMTMgYXMgXCJzdWNjZXNzTXNnXCIsIF8xNCBhcyBcInN1Y2Nlc3NNc2cyXCIsIF8xNSBhcyBcInRpY2tldExpc3RcIiwgXzE2IGFzIFwidGlja2V0Tm9cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2xvc2VCdG5fX195U1FDT1wiO1xudmFyIF8yID0gXCJoZWFkZXJfX19mQlhHOVwiO1xudmFyIF8zID0gXCJ0aXRsZV9fX3R5WmVRXCI7XG52YXIgXzQgPSBcIndyYXBwZXJfX19ST0pHc1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjbG9zZUJ0blwiLCBfMiBhcyBcImhlYWRlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJzdW1taXRUaXRsZURhdGVfX19YbnJwRlwiO1xudmFyIF8yID0gXCJ3aWRnZXRIZWFkZXJfX19nZ0x0TVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzIgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaGVhZGVyTm90ZV9fX0FlNUVBXCI7XG52YXIgXzIgPSBcIm9yZGVyTm9fX19WT1BSd1wiO1xudmFyIF8zID0gXCJwdXJjaGFzZWRCeV9fX01OaUhUXCI7XG52YXIgXzQgPSBcInB1cmNoYXNlZEJ5V3JhcHBlcl9fX0RoNkhVXCI7XG52YXIgXzUgPSBcIndyYXBwZXJfX19tVnVpWlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJoZWFkZXJOb3RlXCIsIF8yIGFzIFwib3JkZXJOb1wiLCBfMyBhcyBcInB1cmNoYXNlZEJ5XCIsIF80IGFzIFwicHVyY2hhc2VkQnlXcmFwcGVyXCIsIF81IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25PcHRpb25zV3JhcHBlcl9fX29qRl83XCI7XG52YXIgXzIgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fZ090YUpcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduT3B0aW9uc1dyYXBwZXJcIiwgXzIgYXMgXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNiA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzcgPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOCA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF85ID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9hID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2IgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2MgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2QgPSBcInNlbmRCdG5fX19rb1dNMlwiO1xudmFyIF9lID0gXCJzZW50X19fazZXS3hcIjtcbnZhciBfZiA9IFwic3RhdHVzX19fa3dDOHlcIjtcbnZhciBfMTAgPSBcInN1YnRpdGxlX19feV9OdU9cIjtcbnZhciBfMTEgPSBcInRpY2tldERldGFpbENvbnRhaW5lcl9fX2IyVExSXCI7XG52YXIgXzEyID0gXCJ0aXRsZV9fX3dRelVOXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJcIiwgXzIgYXMgXCJhZGRpdGlvbmFsRGV0YWlsc1wiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzUgYXMgXCJjbG9zZUJ0blwiLCBfNiBhcyBcImNvcHlCdG5cIiwgXzcgYXMgXCJkZWxlZ2F0ZWRUb1wiLCBfOCBhcyBcImRvd25sb2FkQnRuXCIsIF85IGFzIFwiaGVhZGVyXCIsIF9hIGFzIFwib3JkZXJOdW1iZXJcIiwgX2IgYXMgXCJxckNvZGVcIiwgX2MgYXMgXCJxck5vdGVcIiwgX2QgYXMgXCJzZW5kQnRuXCIsIF9lIGFzIFwic2VudFwiLCBfZiBhcyBcInN0YXR1c1wiLCBfMTAgYXMgXCJzdWJ0aXRsZVwiLCBfMTEgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzEyIGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYnV0dG9uQ2FuY2VsbGVkX19fRXJsRFpcIjtcbnZhciBfMiA9IFwiYnV0dG9uQ29tcGxldGVfX19sbFdrWlwiO1xudmFyIF8zID0gXCJidXR0b25JbmNvbXBsZXRlX19fVG9sSGdcIjtcbnZhciBfNCA9IFwiYnV0dG9uUGlsbF9fX3pxMnRjXCI7XG52YXIgXzUgPSBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZF9fX3BXdDMwXCI7XG52YXIgXzYgPSBcImJ1dHRvblVuYXNzaWduZWRfX19ZRGQ4WFwiO1xudmFyIF83ID0gXCJ0aWNrZXRTdGF0dXNDb250YWluZXJfX19xajZmYlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJidXR0b25DYW5jZWxsZWRcIiwgXzIgYXMgXCJidXR0b25Db21wbGV0ZVwiLCBfMyBhcyBcImJ1dHRvbkluY29tcGxldGVcIiwgXzQgYXMgXCJidXR0b25QaWxsXCIsIF81IGFzIFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkXCIsIF82IGFzIFwiYnV0dG9uVW5hc3NpZ25lZFwiLCBfNyBhcyBcInRpY2tldFN0YXR1c0NvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3RpdmVfX190THlXWlwiO1xudmFyIF8yID0gXCJ0YWJPcHRpb25fX19INEgxdVwiO1xudmFyIF8zID0gXCJ0YWJXcmFwcGVyX19fdTIxc0dcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aXZlXCIsIF8yIGFzIFwidGFiT3B0aW9uXCIsIF8zIGFzIFwidGFiV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRzVGl0bGVUZXh0X19fVERQbXBcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0c1RpdGxlVGV4dFwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWR1eGpzL3Rvb2xraXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHNlbnRyeS9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJmb3JtaWtcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpZHRva2VuLXZlcmlmaWVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm1vbWVudC10aW1lem9uZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwLWxpbWl0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInByb3AtdHlwZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaTE4bmV4dFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXFyLWNvZGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXhcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwieXVwXCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IFBlcnNpc3RHYXRlIH0gZnJvbSBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIjtcbmltcG9ydCB7IFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5pbXBvcnQgV2lkZ2V0V3JhcHBlciBmcm9tIFwiLi9jb21wb25lbnRzL1dpZGdldFdyYXBwZXJcIjtcblxuY29uc3QgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgYXBpQmFzZVVybCxcbiAgICB1c2VyLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUJlZm9yZUxpZnQgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBjb25zdCBmbHVzaCA9IHBhcmFtcy5oYXMoXCJmbHVzaFN0YXRlXCIpO1xuICAgIGlmIChmbHVzaCkgc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBSRVNFVF9TVEFURSwgcGF5bG9hZDogbnVsbCB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFJlZHVjZXJTdGF0ZShzdW1taXQsIHVzZXIpKTtcbiAgfSwgW3N1bW1pdCwgdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgICAgIDxXaWRnZXRXcmFwcGVyIC8+XG4gICAgICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICAgICA8L1BlcnNpc3RHYXRlPlxuICAgIDwvUHJvdmlkZXI+XG4gICk7XG59O1xuXG5NeU9yZGVyc015VGlja2V0c1dpZGdldC5wcm9wVHlwZXMgPSB7XG4gIGxvZ2luVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdXBwb3J0RW1haWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgYXBpQmFzZVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXNlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgY2xpZW50SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVwZGF0ZVByb2ZpbGU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiY3JlYXRlQWN0aW9uIiwiZGVsZXRlUmVxdWVzdCIsImdldFJlcXVlc3QiLCJwdXRSZXF1ZXN0Iiwic3RhcnRMb2FkaW5nIiwic3RvcExvYWRpbmciLCJwTGltaXQiLCJnZXRJZFRva2VuIiwib2JqZWN0VG9RdWVyeVN0cmluZyIsIklkVG9rZW5WZXJpZmllciIsImkxOG4iLCJhdXRoUHJvbWlzZVJlamVjdCIsImdldEFjY2Vzc1Rva2VuU2FmZWx5IiwiREVGQVVMVF9JVEVNU19QRVJfUEFHRSIsIkVSUk9SX0NPREVTIiwiRklGVFlfUEVSX1BBR0UiLCJGSVJTVF9QQUdFIiwiUFJPTUlTRV9CQVRDSF9MSU1JVCIsIlRBQlMiLCJSRVNFVF9TVEFURSIsIlJFU0VUX0ZJTFRFUiIsIlJFU0VUX0FQSV9FUlJPUiIsIlNFVF9TVEFURSIsIlNFVF9BUElfRVJST1IiLCJDSEFOR0VfRklMVEVSIiwiQ0hBTkdFX1NPUlQiLCJHRVRfVVNFUl9PUkRFUlMiLCJSRUZVTkRfT1JERVIiLCJTRVRfQUNUSVZFX09SREVSX0lEIiwiRklMVEVSX1VTRVJfT1JERVJTIiwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMiLCJVUERBVEVfVElDS0VUIiwiUkVTRVRfVElDS0VUIiwiUkVDRUlWRV9USUNLRVQiLCJSRU1PVkVfVElDS0VUX0FUVEVOREVFIiwiQVNTSUdOX1RJQ0tFVCIsIkRFTEVHQVRFX1RJQ0tFVCIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TIiwiVElDS0VUX0FUVEVOREVFX0tFWVMiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueSIsImRpc2NsYWltZXJBY2NlcHRlZCIsImV4dHJhUXVlc3Rpb25zIiwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0VGlja2V0IiwiZGlzcGF0Y2giLCJyZXNldFN0YXRlIiwicmVzZXRGaWx0ZXIiLCJyZXNldEVycm9yIiwic2V0UmVkdWNlclN0YXRlIiwic3VtbWl0IiwidXNlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSIsIkZJTFRFUl9WQVJfVElDS0VUX1RZUEUiLCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCIsIkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIiwiRklMVEVSX1ZBUl9QUk9NT0NPREUiLCJGSUxURVJfVkFSX0ZSRUVfUEFJRCIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwiY2hhbmdlRmlsdGVyIiwiZmlsdGVyIiwiY2hhbmdlU29ydCIsInNvcnQiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImN1cnJlbnRUYWIiLCJwdXNoIiwiY29uY2F0IiwibG93ZXIiLCJ1cHBlciIsImxlbmd0aCIsImZpbHRlck5hbWUiLCJPUkRFUlMiLCJqb2luIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInBhZ2UiLCJwZXJQYWdlIiwiZ2V0U3RhdGUiLCJfcmVmMyIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJwZXJfcGFnZSIsImtleXMiLCJmaWx0ZXJzIiwibmFtZSIsImlkIiwidGhlbiIsImNhdGNoIiwiZSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiUHJvbWlzZSIsInJlamVjdCIsImZpZWxkcyIsImV4cGFuZCIsIlRJQ0tFVFMiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY2IiwiX3JlZjciLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmOCIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY5IiwiX3JlZjEwIiwicmVmdW5kQnVsa1RpY2tldHMiLCJfcmVmMTEiLCJ0aWNrZXRzIiwibGltaXQiLCJhbGxSZWZ1bmRUaWNrZXRDYWxscyIsIm1hcCIsImFsbCIsInN1Y2Nlc3NmdWxseVJlcXVlc3RlZCIsInIiLCJfciRyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjEyIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMyIsImZpbmFsbHkiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTQiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTUiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJhc3NpZ25BdHRlbmRlZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYxNiIsInJlYXNzaWduVGlja2V0IiwiX3JlZjE3IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJnZXRUaWNrZXRQREYiLCJfcmVmMjAiLCJxdWVyeVN0cmluZyIsImFwaVVybCIsImZldGNoIiwicmVzcG9uc2VUeXBlIiwiaGVhZGVycyIsIm9rIiwiYmxvYiIsInBkZiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsIlJlYWN0IiwiUHJvcFR5cGVzIiwidXNlVHJhbnNsYXRpb24iLCJCb3giLCJ1c2VGb3JtaWsiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsIkZvcm1Gb290ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiUmVnaXN0cmF0aW9uRGlzY2xhaW1lciIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsInBhcnNlQW5zd2VycyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJBc3NpZ25FUUZvcm0iLCJvblN1Ym1pdCIsIm9uQ2xvc2UiLCJmb3JtaWsiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInZhbHVlcyIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJjaGlsZHJlbiIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJkaXNjbGFpbWVyIiwiaXNSZXF1aXJlZCIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZGlzYWJsZWQiLCJpc1N1Ym1pdHRpbmciLCJwcm9wVHlwZXMiLCJvYmplY3QiLCJhcnJheSIsImZ1bmMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwic3R5bGVzIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJ1c2VTdGF0ZSIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsImNsYXNzTmFtZSIsIndyYXBwZXIiLCJzdHlsZSIsImNvcHlJY29uIiwib25DbGljayIsInN0cmluZyIsImJvb2wiLCJudW1iZXIiLCJjcmVhdGVDb250ZXh0IiwiZGVmYXVsdENvbnRleHRWYWx1ZSIsInNldE1lc3NhZ2UiLCJzZXRNZXNzYWdlQ2FsbGJhY2siLCJDdXN0b21EaWFsb2dDb250ZXh0IiwiRGlhbG9nIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJDdXN0b21EaWFsb2ciLCJvcGVuIiwiYm9keSIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwiZGFya0NvbG9yIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwidGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJ0eXBvZ3JhcGh5IiwiYm9keTEiLCJmb250U2l6ZSIsImg1IiwiZm9udFdlaWdodCIsIm1hcmdpbkJvdHRvbSIsImg2IiwiY29tcG9uZW50cyIsIk11aUZvcm1IZWxwZXJUZXh0Iiwic3R5bGVPdmVycmlkZXMiLCJNdWlCdXR0b24iLCJsaW5lSGVpZ2h0IiwiTXVpVGFiIiwiY29sb3IiLCJNdWlUYWJzIiwiaW5kaWNhdG9yIiwiYmFja2dyb3VuZENvbG9yIiwiQ3VzdG9tVGhlbWUiLCJub2RlIiwiQ2hlY2tib3giLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsIm9uQ2hhbmdlIiwic2V0RmllbGRWYWx1ZSIsImVycm9yIiwiaGVscGVyVGV4dCIsInJlc3QiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidmFsIiwibGFiZWwiLCJ0b1N0cmluZyIsImhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSIsImNoZWNrZWQiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsIm5ld1ZhbHVlIiwidiIsInJlcXVpcmVkIiwiZnVsbFdpZHRoIiwibWFyZ2luIiwib3AiLCJjb250cm9sIiwiaW5jbHVkZXMiLCJldiIsInRhcmdldCIsIlJhd0hUTUwiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJzeCIsImFsaWduSXRlbXMiLCJtYXJnaW5Ub3AiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRGaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInF1ZXN0aW9uSWQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiX3EkbGFiZWwiLCJpc0Fuc3dlcmVkIiwiYW5zd2VyIiwiY2hlY2tJZlZhbHVlTWF0Y2giLCJjb21wYXJlVmFsIiwiYW5zd2VyQXJyYXkiLCJzb21lIiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsInR5cGUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJGcmFnbWVudCIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwicmVuZGVyUnVsZSIsImlzVmlzaWJsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlQmx1ciIsInRvdWNoZWQiLCJCb29sZWFuIiwic3ViX3F1ZXN0aW9uX3J1bGVzIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJDYXJkSGVhZGVyIiwiSWNvbkJ1dHRvbiIsIkNvbGxhcHNlIiwiQ2FyZENvbnRlbnQiLCJFeHBhbmRNb3JlSWNvbiIsIkFzc2lnbmVkRmlsdGVyIiwib25GaWx0ZXIiLCJmaWx0ZXJWYWx1ZXMiLCJzdGF0ZSIsImlzRXhwYW5kZWQiLCJzZXRJc0V4cGFuZGVkIiwiYXNzaWduZWRWYWx1ZXMiLCJoYW5kbGVGaWx0ZXJDaGFuZ2UiLCJuZXdGaWx0ZXIiLCJ0aXRsZVdyYXBwZXIiLCJhY3Rpb24iLCJkaXNhYmxlUmlwcGxlIiwidHJhbnNmb3JtIiwidHJhbnNpdGlvbiIsImluIiwidGltZW91dCIsInVubW91bnRPbkV4aXQiLCJweSIsInBiIiwiYXNzaWduZWQiLCJ1c2VFZmZlY3QiLCJCYWRnZUZlYXR1cmVGaWx0ZXIiLCJiYWRnZV9mZWF0dXJlc190eXBlcyIsIm5ld0ZpbHRlcnMiLCJmIiwiYmYiLCJ1c2VSZWYiLCJTdGFjayIsIkZpbHRlckxpc3RJY29uIiwiQmFkZ2UiLCJCdXR0b24iLCJDYXJkIiwiRGl2aWRlciIsIlBhcGVyIiwiY29ubmVjdCIsIlRpY2tldFR5cGVGaWx0ZXIiLCJTdGF0dXNGaWx0ZXIiLCJGcmVlUGFpZEZpbHRlciIsIlByb21vQ29kZUZpbHRlciIsIkZpbHRlciIsIm9uUmVzZXQiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJNQVJHSU5fUklHSFRfV0lUSF9CQURHRSIsIkFERF9GSUxURVJfTlVNQkVSIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImNvdW50IiwidHJpbSIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwicHQiLCJiYWRnZUNvbnRlbnQiLCJtciIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJlbGV2YXRpb24iLCJmaWx0ZXJDaGVja2JveENvbnRhaW5lciIsInZhcmlhbnQiLCJjbGVhbkJ1dHRvbiIsIm1hcFN0YXRlVG9Qcm9wcyIsInByb21vQ29kZSIsInNldFByb21vQ29kZSIsImRlYm91bmNlVGltZXIiLCJERUJPVU5DRV9WQUxVRSIsIm5ld1Byb21vQ29kZSIsImNsZWFyVGltZW91dCIsInBsYWNlaG9sZGVyIiwic3R5bGVkIiwiU2VhcmNoSWNvbiIsIkNsb3NlSWNvbiIsIklucHV0QmFzZSIsIlNlYXJjaENvbnRhaW5lciIsInBvc2l0aW9uIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNob3dDbG9zZSIsInNldFNob3dDbG9zZSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJvbktleURvd24iLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwiaW5wdXRQcm9wcyIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJ0aWNrZXRfdHlwZXMiLCJHcmlkIiwiRmlsdGVycyIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInNhdmVCdG4iLCJFcnJvckljb24iLCJFcnJvckxhYmVsIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJCYWNrZHJvcCIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJMb2FkZXIiLCJkcmF3ZXIiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJPTkVfUEFHRV9ORVhUIiwiTXlPcmRlcnNUaWNrZXRzIiwiZmV0Y2hEYXRhIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19sYXN0X3BhZ2UiLCJteU9yZGVyc1dyYXBwZXIiLCJkYXRhTGVuZ3RoIiwibmV4dCIsImhhc01vcmUiLCJzY3JvbGxUaHJlc2hvbGQiLCJub09yZGVyc0ZvdW5kIiwibm9PcmRlcnNJY29uV3JhcHBlciIsImNhbGN1bGF0ZU9yZGVyVG90YWxzIiwiZm9ybWF0Q3VycmVuY3kiLCJfRnJhZ21lbnQiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsInRheGVzVG90YWwiLCJhbW91bnRUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwiZGlzY291bnRfYW1vdW50IiwidGF4ZXNfYW1vdW50Iiwic2hhcGUiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm5vdyIsImlzSW5SZWZ1bmRhYmxlUGVyaW9kIiwicmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlIiwiYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQiLCJpc1JlZnVuZGFibGUiLCJoYXNSZWZ1bmRSZXF1ZXN0cyIsInJvbGUiLCJvcmRlclN1bW1hcnlCdXR0b24iLCJyZWZ1bmREaXNhYmxlZCIsInJlbCIsInN1cHBvcnRfZW1haWwiLCJhcnJheU9mIiwiT3JkZXJTdW1tYXJ5Iiwib3JkZXJTdW1tYXJ5V3JhcHBlciIsInB4Iiwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mbyIsIm1lbWJlclRpY2tldHMiLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnbmVkVG9NZVdyYXBwZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRNb2RhbCIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0Iiwibm9UaWNrZXRzRm91bmQiLCJUeXBvZ3JhcGh5IiwiQXNzaWduZWRUbyIsIkV4dGVybmFsQXNzaWduZWRUbyIsIk1hbmFnZUZvciIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJpc1VuYXNzaWduZWQiLCJpc19hY3RpdmUiLCJpc0RlbGVnYXRlZCIsInRpY2tldE93bmVyRW1haWwiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkb3duZXI1IiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwidGlja2V0c1RvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJ0aWNrZXRzX3RvdGFsIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsInVzZURpc3BhdGNoIiwiVGlja2V0U3RhdHVzIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl90aWNrZXQkYmFkZ2UiLCJjYW5SZWFzc2lnbiIsIm1vZGFsT3BlbiIsInNldE1vZGFsT3BlbiIsInJlYXNzaWduRGF0ZSIsIm9uUmVhc3NpZ25hYmxlUGVyaW9kIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZU9wZW5Nb2RhbCIsInZpZXciLCJvcmRlcldyYXBwZXIiLCJyZWZ1bmRNb2RhbCIsImRpc2FibGVkUmVmdW5kIiwic2VsZWN0ZWQiLCJjaGVja2JveCIsInBsIiwidGlja2V0VGlja2V0VHlwZSIsImJhZGdlRmVhdHVyZVdyYXBwZXIiLCJwciIsImJhZGdlIiwiZmVhdHVyZXMiLCJiYWRnZUZlYXR1cmUiLCJzcmMiLCJpbWFnZSIsImFsdCIsInRpY2tldE5vIiwiZmxleFdyYXAiLCJtaW5XaWR0aCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiXyIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJyZWZ1bmREZXRhaWxzT3BlbiIsInNldFJlZnVuZERldGFpbHNPcGVuIiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNsb3NlU3VibWl0UmVxdWVzdCIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsImJvcmRlckNvbG9yIiwidGFiQnV0dG9ucyIsIm1kIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsInRpY2tldF9wZXJfcGFnZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50IiwibGciLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInVzZU1lbW8iLCJSaWdodERyYXdlciIsIlJlZnVuZFJlcXVlc3RlZFRpY2tldCIsImdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMiLCJyZXF1ZXN0ZWRUaWNrZXRzIiwiY2xvc2VTbGlkZXIiLCJyZWZ1bmREZXRhaWxzIiwidG9vbHRpcENsYXNzZXMiLCJJbmZvSWNvbiIsIm1vbWVudCIsIlJlZnVuZFN0YXR1cyIsIkdSSURfOCIsIkdSSURfMTIiLCJQQURESU5HXzIiLCJhcHByb3ZlZFJlZnVuZHMiLCJyZWZ1bmQiLCJyZWZ1bmRlZFRheGVzU3VtbWF0b3J5IiwicmVmdW5kZWRfdGF4ZXMiLCJydCIsInRheElkIiwidGF4IiwidG90YWxSZWZ1bmRlZFRheEFtb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsIkh0bWxUb29sdGlwIiwiY2xhc3NlcyIsInBvcHBlciIsIm1heFdpZHRoIiwiYm9yZGVyIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwicmVmdW5kRGV0YWlsIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiQ2hlY2tDaXJjbGVJY29uIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiRHJhd2VyIiwiQ2xvc2UiLCJhbmNob3IiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0IiwiZ3V0dGVyQm90dG9tIiwib25lT2ZUeXBlIiwiZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSIsIlN1bW1pdEhlYWRlciIsIndpZGdldEhlYWRlciIsInN1bW1pdFRpdGxlRGF0ZSIsInl1cCIsIkRlbGVnYXRlRm9ybSIsImRlbGVnYXRlX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZV9sYXN0X25hbWUiLCJkZWxlZ2F0ZV9lbWFpbCIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsIkxpbmsiLCJBc3NpZ25IZWFkZXIiLCJpblByb2dyZXNzIiwidXNlckVtYWlsIiwiYXNzaWduZWRUb1lvdSIsImdldFNlY29uZGFyeVRpdGxlIiwiZ2V0SGVhZGVyTm90ZSIsInRyYW5zS2V5IiwiY29tcG9uZW50IiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJoZWFkZXJOb3RlIiwiUmVhc3NpZ25IZWFkZXIiLCJhbGxvd3NEZWxlZ2F0ZSIsIlJlYXNzaWduRm9ybSIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwidXNlR2V0VGlja2V0Iiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsImFzc2lnbk9wdGlvbiIsInNldEFzc2lnbk9wdGlvbiIsImFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsInNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsImlzQXNzaWduZWRUb01lIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25DbG9zZUVRRm9ybSIsIm9uQ2xvc2VTYXZlTWVzc2FnZSIsIm9uU2F2ZUVRIiwiZGVzY3JpcHRpb24iLCJyZXNvbHZlIiwiSGVhZGVyIiwidGlja2V0UmVhc3NpZ25Db250YWluZXIiLCJhc3NpZ25PcHRpb25zV3JhcHBlciIsIm15IiwiQXV0b2NvbXBsZXRlIiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJzdW1taXRJZCIsImlucHV0VmFsdWUiLCJzZXRJbnB1dFZhbHVlIiwib3B0aW9ucyIsInNldE9wdGlvbnMiLCJzZXRGaWVsZFRvdWNoZWQiLCJyZXN1bHRzIiwibmV3T3B0aW9ucyIsImF1dG9Db21wbGV0ZSIsImZyZWVTb2xvIiwiaW5jbHVkZUlucHV0SW5MaXN0IiwiZmlsdGVyU2VsZWN0ZWRPcHRpb25zIiwiZ2V0T3B0aW9uTGFiZWwiLCJvcHRpb24iLCJ0bXBWYWx1ZSIsIm9uSW5wdXRDaGFuZ2UiLCJuZXdJbnB1dFZhbHVlIiwiZmlsdGVyT3B0aW9ucyIsImZpbHRlcmVkIiwiaXNFeGlzdGluZyIsInJlbmRlcklucHV0IiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJUaWNrZXRPd25lckZpZWxkcyIsIlRpY2tldEZvcm0iLCJjYW5FZGl0IiwicmVkdWNlIiwiYWRkaXRpb25hbERldGFpbHMiLCJpbmZvTm90ZSIsIlFSQ29kZSIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsIlRXT19JVEVNIiwiX3RpY2tldCRvcmRlcjMiLCJzZW50Q29uZmlybWF0aW9uIiwic2V0U2VudENvbmZpcm1hdGlvbiIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsImRvd25sb2FkVGlja2V0UGRmIiwib25TZW5kRW1haWwiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJxckNvZGUiLCJxcl9jb2RlIiwidmlld0JveCIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWQiLCJidXR0b25JbmNvbXBsZXRlIiwiYnV0dG9uVW5hc3NpZ25lZCIsImJ1dHRvbkNvbXBsZXRlIiwiYnV0dG9uQ2FuY2VsbGVkIiwiQXNzaWduZWRUb01lIiwiV2lkZ2V0VGFicyIsInRhYiIsInNldFRhYiIsInRpY2tldHNGdWxseUxvYWRlZCIsInNldFRpY2tldHNGdWxseUxvYWRlZCIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc1BlclBhZ2UiLCJ0aWNrZXRQZXJQYWdlIiwiaGFuZGxlVGFiQ2hhbmdlIiwibmV3VGFiIiwiZmV0Y2hBc3NpZ25lZFRpY2tldHMiLCJmZXRjaE9yZGVyVGlja2V0cyIsIm9yZGVyVGlja2V0c1Byb21pc2VzIiwiY3VycmVudF9wYWdlIiwiZmV0Y2hQcm9taXNlcyIsInRhYldyYXBwZXIiLCJXaWRnZXRXcmFwcGVyIiwibWVzc2FnZUNhbGxiYWNrIiwibG9hZGluZyIsImFwaUVycm9yIiwicmVzZXRBcGlFcnJvciIsImZpbHRlclZhbHVlIiwic29ydFZhbHVlIiwidGlja2V0c1RpdGxlVGV4dCIsIlByb3ZpZGVyIiwicnVuIiwiY3VycmVudFRpY2tldCIsInNtb290aFNjcm9sbFRvIiwidGFyZ2V0U2Nyb2xsVG9wIiwiZHVyYXRpb24iLCJzdGFydFNjcm9sbFRvcCIsInNjcm9sbFRvcCIsImRpc3RhbmNlIiwic3RhcnRUaW1lIiwiYW5pbWF0aW9uU3RlcCIsInRpbWVzdGFtcCIsImVsYXBzZWQiLCJwcm9ncmVzcyIsIk1hdGgiLCJtaW4iLCJlYXNlSW5PdXRRdWFkIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVySWQiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpbml0UmVhY3RJMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImVuIiwiZXMiLCJ1c2UiLCJpbml0IiwiZmFsbGJhY2tMbmciLCJkZWJ1ZyIsInJlc291cmNlcyIsInRyYW5zbGF0aW9uIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiTE9HT1VUX1VTRVIiLCJTVEFSVF9MT0FESU5HIiwiU1RPUF9MT0FESU5HIiwiUkVTRVRfTE9BRElORyIsImhhc0xvYWRlZEFsbERhdGEiLCJ1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIiwiREVGQVVMVF9GSUxURVJfU1RBVEUiLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImN1cnJlbnRfdGFiIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJ1c2VyX3RpY2tldHNfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwidG90YWwiLCJsYXN0X3BhZ2UiLCJmb3JtZXJPcmRlciIsIm8iLCJfZGF0YSQiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIm1vIiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ0aWNrZXREYXRhIiwibmV3T3JkZXJzIiwibmV3VGlja2V0cyIsIm5ld1VzZXJUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImdldEFjY2Vzc1Rva2VuTW9jayIsIkVycm9yIiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiYW1vdW50IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJEYXRlIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJmZWF0dXJlIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsIm5ldF9zZWxsaW5nX2Nvc3QiLCJyciIsImdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczIiLCJhbGxUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczQiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM1IiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM2IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczgiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJpbmNsdWRlQXR0ZW5kZWVJbmZvIiwiaW5jbHVkZURpc2NsYWltZXIiLCJidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSIsIl9zdWJRdWVzdGlvbiRzdWJfcXVlcyIsInN1YlF1ZXN0aW9uIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsImFuc1ZhbHVlTWF0Y2giLCJzY2giLCJzdWJSdWxlIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsImxhenkiLCJ0eXBlRXJyb3IiLCJfdCRvd25lciIsIl90JG93bmVyMiIsIl90aWNrZXQkb3duZXI2IiwidG1wVGlja2V0IiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJmbHVzaCIsImhhcyIsIm9uQmVmb3JlTGlmdCJdLCJzb3VyY2VSb290IjoiIn0=
9852
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7QUNGN0I7QUFDQTtBQUNBO0FBQ0E7QUFDc0Y7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0p0RjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzRFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMNUU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNpTjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDUmpOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaXNCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3QmpzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzRmOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN2QjVmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDMkU7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMM0U7QUFDQTtBQUNBO0FBQ3dEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSHhEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnSDs7Ozs7Ozs7Ozs7Ozs7OztBQ05oSDtBQUNBO0FBQ0E7QUFDd0U7Ozs7Ozs7Ozs7Ozs7OztBQ0h4RTtBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDOFg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ25COVg7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDZ0U7Ozs7Ozs7Ozs7Ozs7OztBQ0poRTtBQUNBO0FBQ21DOzs7Ozs7Ozs7OztBQ0ZuQzs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ047QUFDSTtBQUN1QjtBQUNUO0FBQ2Q7QUFDa0I7QUFFRjtBQUFBO0FBRXZELE1BQU1FLHVCQUF1QixHQUFJbmhCLEtBQUssSUFBSztFQUN6QyxNQUFNO0lBQ0p1WCxRQUFRO0lBQ1I2SixZQUFZO0lBQ1o5dUMsTUFBTTtJQUNOeUQsVUFBVTtJQUNWeEQsSUFBSTtJQUNKK2tDLFFBQVE7SUFDUmo5QjtFQUNGLENBQUMsR0FBRzJsQixLQUFLO0VBRVQsTUFBTTtJQUFFeVgsS0FBSztJQUFFVztFQUFVLENBQUMsR0FBR0Ysb0RBQVksQ0FBQztJQUN4Q1gsUUFBUTtJQUNSNkosWUFBWTtJQUNaOXVDLE1BQU07SUFDTkMsSUFBSTtJQUNKd0QsVUFBVTtJQUNWdWhDLFFBQVE7SUFDUmo5QjtFQUNGLENBQUMsQ0FBQztFQUVGLE1BQU1nbkMsZ0JBQWdCLEdBQUdBLENBQUEsS0FBTTtJQUM3QixNQUFNbnJDLE1BQU0sR0FBRyxJQUFJb3JDLGVBQWUsQ0FBQ25rQyxNQUFNLENBQUNpZ0MsUUFBUSxDQUFDbUUsTUFBTSxDQUFDO0lBQzFELE1BQU1DLEtBQUssR0FBR3RyQyxNQUFNLENBQUN1ckMsR0FBRyxDQUFDLFlBQVksQ0FBQztJQUN0QyxJQUFJRCxLQUFLLEVBQUUvSixLQUFLLENBQUN4bEMsUUFBUSxDQUFDO01BQUVpWSxJQUFJLEVBQUUzYSxpREFBVztNQUFFMkUsT0FBTyxFQUFFO0lBQUssQ0FBQyxDQUFDO0VBQ2pFLENBQUM7RUFFRDJaLGdEQUFTLENBQUMsTUFBTTtJQUNkNHBCLEtBQUssQ0FBQ3hsQyxRQUFRLENBQUNJLHlEQUFlLENBQUNDLE1BQU0sRUFBRUMsSUFBSSxDQUFDLENBQUM7RUFDL0MsQ0FBQyxFQUFFLENBQUNELE1BQU0sRUFBRUMsSUFBSSxDQUFDLENBQUM7RUFFbEIsb0JBQ0UrTCxzREFBQSxDQUFDd3lCLGlEQUFRO0lBQUMyRyxLQUFLLEVBQUVBLEtBQU07SUFBQXA0QixRQUFBLGVBQ3JCZixzREFBQSxDQUFDNGlDLHdFQUFXO01BQ1ZRLFlBQVksRUFBRUwsZ0JBQWlCO01BQy9CeHFCLE9BQU8sRUFBRSxJQUFLO01BQ2R1aEIsU0FBUyxFQUFFQSxTQUFVO01BQUEvNEIsUUFBQSxlQUVyQmYsc0RBQUEsQ0FBQ3VtQiwrREFBb0I7UUFBQzRCLFdBQVc7UUFBQXBuQixRQUFBLGVBQy9CZixzREFBQSxDQUFDaXlCLGlFQUFhLElBQUU7TUFBQyxDQUNHO0lBQUMsQ0FDWjtFQUFDLENBQ04sQ0FBQztBQUVmLENBQUM7QUFFRDRRLHVCQUF1QixDQUFDdGhDLFNBQVMsR0FBRztFQUNsQzAzQixRQUFRLEVBQUU1NUIsMERBQWdCO0VBQzFCeWpDLFlBQVksRUFBRXpqQywwREFBZ0I7RUFDOUJyTCxNQUFNLEVBQUVxTCwwREFBZ0I7RUFDeEI1SCxVQUFVLEVBQUU0SCwwREFBZ0I7RUFDNUJwTCxJQUFJLEVBQUVvTCwwREFBZ0I7RUFDdEIyNUIsUUFBUSxFQUFFMzVCLDBEQUFnQjtFQUMxQnRELGFBQWEsRUFBRXNELHdEQUFjcUM7QUFDL0IsQ0FBQztBQUVELGlFQUFlbWhDLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Bc3NpZ25FUUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbVRoZW1lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0Fzc2lnbmVkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQmFkZ2VGZWF0dXJlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRnJlZVBhaWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Qcm9tb0NvZGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU3RhdHVzRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvVGlja2V0VHlwZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Ob1RpY2tldHNGb3VuZC9UaWNrZXRzSWNvbi5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Ob1RpY2tldHNGb3VuZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RhYldyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvRGVsZWdhdGVGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL1JlYXNzaWduRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvQ29tcGFueUZpZWxkL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZUdldFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlU2Nyb2xsVG9FcnJvci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlVGlja2V0RGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvc3RvcmUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2F1dGguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3N1bW1pdFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy90aWNrZXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGNyZWF0ZUFjdGlvbixcbiAgZGVsZXRlUmVxdWVzdCxcbiAgZ2V0UmVxdWVzdCxcbiAgcHV0UmVxdWVzdCxcbiAgc3RhcnRMb2FkaW5nLFxuICBzdG9wTG9hZGluZ1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBhdXRoUHJvbWlzZVJlamVjdCwgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBFUlJPUl9DT0RFUyxcbiAgRklGVFlfUEVSX1BBR0UsXG4gIEZJUlNUX1BBR0UsXG4gIFBST01JU0VfQkFUQ0hfTElNSVQsXG4gIFRBQlNcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0FQSV9FUlJPUiA9IFwiUkVTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU0VUX1NUQVRFID0gXCJTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfQVBJX0VSUk9SID0gXCJTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX0ZJTFRFUiA9IFwiQ0hBTkdFX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9TT1JUID0gXCJDSEFOR0VfU09SVFwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfTVlfQVNTSUdORURfVElDS0VUUyA9IFwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUID0gXCJVUERBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfVElDS0VUID0gXCJSRVNFVF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgQVNTSUdOX1RJQ0tFVCA9IFwiQVNTSUdOX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IERFTEVHQVRFX1RJQ0tFVCA9IFwiREVMRUdBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMgPSBcIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCA9XG4gIFwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRFwiO1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFRpY2tldCA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0U3RhdGUgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1NUQVRFKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmlsdGVyID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9GSUxURVIpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRFcnJvciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfQVBJX0VSUk9SKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFJlZHVjZXJTdGF0ZSA9IChzdW1taXQsIHVzZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1NUQVRFKSh7IHN1bW1pdCwgdXNlciB9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFID0gXCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgPSBcIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgPSBcIkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9QUk9NT0NPREUgPSBcIkZJTFRFUl9WQVJfUFJPTU9DT0RFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9GUkVFX1BBSUQgPSBcIkZJTFRFUl9WQVJfRlJFRV9QQUlEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUiAvIFNPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGNoYW5nZUZpbHRlciA9IChmaWx0ZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX0ZJTFRFUikoZmlsdGVyKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hhbmdlU29ydCA9IChzb3J0KSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9TT1JUKShzb3J0KSk7XG59O1xuXG4vLyBGSUxURVIvU09SVCBQQVJTRVxuY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyT2JqLCBjdXJyZW50VGFiKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGBjcmVhdGVkW10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfYmFkZ2VfZmVhdHVyZXNfaWRcIlxuICAgICAgICA6IFwiYmFkZ2VfZmVhdHVyZXNfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c190eXBlX2lkXCIgOiBcInRpY2tldF90eXBlX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfYXNzaWduZWRfdG9cIiA6IFwiYXNzaWduZWRfdG9cIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUR9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVUykge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfb3duZXJfc3RhdHVzXCIgOiBcIm93bmVyX3N0YXR1c1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVU31gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9IGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJhbW91bnRcIiA6IFwiZmluYWxfYW1vdW50XCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEID09PSBcIkZyZWVcIiA/IFwiPT0wXCIgOiBcIj4wXCJ9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERSkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfcHJvbW9fY29kZVwiIDogXCJwcm9tb19jb2RlXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBmaWx0ZXIucHVzaChgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+IChkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiKTtcblxuLy8gcGF5bG9hZDogeyBodHRwQ29kZSwgdGl0bGUsIGh0bWw6IGNvbnRlbnQsIHR5cGUgfVxuY29uc3QgZXJyb3JIYW5kbGVyTm90aWZ5ID0gKHBheWxvYWQsIGNhbGxiYWNrKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BUElfRVJST1IpKHBheWxvYWQpKTtcbiAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xufTtcblxuY29uc3QgY3VzdG9tQXV0aEVycm9ySGFuZGxlciA9IChlcnIsIHJlcykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGF1dGhFcnJvckhhbmRsZXIoZXJyLCByZXMsIGVycm9ySGFuZGxlck5vdGlmeSkpO1xufTtcblxuY29uc3QgY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIgPSAocmVzcG9uc2UpID0+IChkaXNwYXRjaCkgPT4ge1xuICBjb25zdCBjb2RlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICBsZXQgbXNnO1xuICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgc3dpdGNoIChjb2RlKSB7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwM1wiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy51c2VyX25vdF9hdXRoelwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDFcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2Vzc2lvbl9leHBpcmVkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQxMlwiXTpcbiAgICAgIG1zZyA9IFwiXCI7XG4gICAgICBPYmplY3QuZW50cmllcyhyZXNwb25zZS5lcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGtleSkpIHtcbiAgICAgICAgICBtc2cgPSBgJHttc2d9ICR7a2V5fTogYDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1zZyA9IGAke21zZ30gJHt2YWx1ZX0gPGJyPmA7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI1MDBcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2VydmVyX2Vycm9yXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG1zZyA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7XG4gIH1cblxuICBkaXNwYXRjaChlcnJvckhhbmRsZXJOb3RpZnkoeyB0aXRsZTogaTE4bi50KFwiZXJyb3JzLmVycm9yXCIpLCBodG1sOiBtc2cgfSkpO1xufTtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge31cbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1jcmVhdGVkXCIsXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiXSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5PUkRFUlMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlcixcbiAgICAgIHsgZmlsdGVyLCBzb3J0IH1cbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge31cbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQsIHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgZmllbGRzID0gW1xuICAgICAgXCJvcmRlci5pZFwiLFxuICAgICAgXCJvcmRlci5vd25lcl9maXJzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2xhc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9lbWFpbFwiLFxuICAgICAgXCJvd25lci5pZFwiLFxuICAgICAgXCJvd25lci5lbWFpbFwiLFxuICAgICAgXCJvd25lci5maXJzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLmxhc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5zdGF0dXNcIixcbiAgICAgIFwiYmFkZ2Uubm9uZVwiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCIsIGBvcmRlcl9vd25lcl9pZDw+JHt1c2VyUHJvZmlsZS5pZH1gXSxcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZSxiYWRnZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtdLFxuICAgICAgZmllbGRzOiBcImJhZGdlLm5vbmVcIixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcy50YXgsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHJlbGF0aW9uczogXCJub25lLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlcixwcm9tb19jb2RlXCIsXG4gICAgICByZWxhdGlvbnM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lLHByb21vX2NvZGUubm9uZSx0aWNrZXRfdHlwZS5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlLHByb21vX2NvZGUuaWQscHJvbW9fY29kZS5jb2RlLHByb21vX2NvZGUuYWxsb3dzX3RvX2RlbGVnYXRlLHByb21vX2NvZGUuYWxsb3dzX3RvX3JlYXNzaWduLHRpY2tldF90eXBlLmlkLHRpY2tldF90eXBlLm5hbWUsdGlja2V0X3R5cGUuYWxsb3dzX3RvX2RlbGVnYXRlLHRpY2tldF90eXBlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5jb3N0LHRpY2tldF90eXBlLmNyZWF0ZWRcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCksXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgYXNzaWduQXR0ZW5kZWUgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlID0gbnVsbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBjb25zdCBwYXlsb2FkID0geyBhdHRlbmRlZV9lbWFpbCB9O1xuICAgIGlmIChtZXNzYWdlKSBwYXlsb2FkLm1lc3NhZ2UgPSBtZXNzYWdlO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihBU1NJR05fVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHBheWxvYWQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVhc3NpZ25UaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJvcmRlciwgb3duZXIsIG93bmVyLmV4dHJhX3F1ZXN0aW9ucywgb3JkZXIuc3VtbWl0XCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFTU9WRV9USUNLRVRfQVRURU5ERUUpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKVxuICAgICk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWU6IGZpcnN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZTogbGFzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9lbWFpbDogZW1haWxcbiAgICB9O1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihERUxFR0FURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vZGVsZWdhdGVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlRXh0cmFRdWVzdGlvbnMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgYW5zd2VycyxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFBERiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG9iamVjdFRvUXVlcnlTdHJpbmcocGFyYW1zKTtcbiAgICBjb25zdCBhcGlVcmwgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcGRmPyR7cXVlcnlTdHJpbmd9YDtcblxuICAgIHJldHVybiBmZXRjaChhcGlVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJCbG9iXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vcGRmXCIgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigocGRmKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHBkZik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwidGlja2V0LnBkZlwiO1xuICAgICAgICBsaW5rLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyKTtcbiAgfTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCB7IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSwgcGFyc2VBbnN3ZXJzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IEFzc2lnbkVRRm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKHRpY2tldC5vd25lciwgZXh0cmFRdWVzdGlvbnMsIHt9LCBmYWxzZSwgdHJ1ZSksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBmYWxzZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrLCBcInJlYXNzaWduRHJhd2VyXCIpO1xuXG4gIGlmIChleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPEJveD5cbiAgICAgICAgPEV4dHJhUXVlc3Rpb25zRmllbGRzIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc30gZm9ybWlrPXtmb3JtaWt9IC8+XG4gICAgICAgIHtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCAmJiAoXG4gICAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgZGlzY2xhaW1lcj17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnR9XG4gICAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbkFzc2lnbkVRRm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduRVFGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgZGVmYXVsdFdpZHRoID0gOTA7XG5cbmNvbnN0IENvcHlUZXh0ID0gKHtcbiAgdGV4dCxcbiAgdG9vbHRpcFRleHQsXG4gIGhpZGVDb3B5ID0gZmFsc2UsXG4gIHRydW5jYXRlZCA9IHRydWUsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdG9vbHRpcFRleHRUb1VzZSA9IHRvb2x0aXBUZXh0IHx8IHQoXCJnZW5lcmFsLmNvcHlfdG9fY2xpcGJvYXJkXCIpO1xuICBjb25zdCBbdG9vbHRpcCwgc2V0VG9vbHRpcF0gPSBSZWFjdC51c2VTdGF0ZSh0b29sdGlwVGV4dFRvVXNlKTtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMudHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIHNldFRvb2x0aXAodChcImdlbmVyYWwuY29waWVkXCIpKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRvb2x0aXAodG9vbHRpcFRleHRUb1VzZSk7XG4gICAgfSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7dGV4dH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHshaGlkZUNvcHkgJiYgKFxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17dG9vbHRpcH0+XG4gICAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db3B5VGV4dC5wcm9wVHlwZXMgPSB7XG4gIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRvb2x0aXBUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRlQ29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvcHlUZXh0O1xuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBkZWZhdWx0Q29udGV4dFZhbHVlID0ge1xuICBzZXRNZXNzYWdlOiAoKSA9PiB7fSxcbiAgc2V0TWVzc2FnZUNhbGxiYWNrOiAoKSA9PiB7fVxufTtcblxuY29uc3QgQ3VzdG9tRGlhbG9nQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHRWYWx1ZSk7XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZ0NvbnRleHQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBEaWFsb2csXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0NvbnRlbnRUZXh0LFxuICBEaWFsb2dUaXRsZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBDdXN0b21EaWFsb2cgPSAoeyBvcGVuLCBvbkNsb3NlLCB0aXRsZSwgYm9keSB9KSA9PiAoXG4gIDxEaWFsb2dcbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgPlxuICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPnt0aXRsZX08L0RpYWxvZ1RpdGxlPlxuICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0XG4gICAgICAgIGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3sgX19odG1sOiBib2R5IH19XG4gICAgICAvPlxuICAgIDwvRGlhbG9nQ29udGVudD5cbiAgPC9EaWFsb2c+XG4pO1xuXG5DdXN0b21EaWFsb2cucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBib2R5OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21EaWFsb2c7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmxldCBkYXJrQ29sb3IgPSBcIlwiO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgLy8gR2V0IHRoZSByb290IGVsZW1lbnRcbiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAvLyBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIENTUyB2YXJpYWJsZVxuICBkYXJrQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmdldFByb3BlcnR5VmFsdWUoXG4gICAgXCItLWNvbG9yX2JhY2tncm91bmRfZGFya1wiXG4gICk7XG59XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBwYWxldHRlOiB7XG4gICAgcHJpbWFyeToge1xuICAgICAgbWFpbjogZGFya0NvbG9yXG4gICAgfSxcbiAgICB0ZXh0OiB7XG4gICAgICBwcmltYXJ5OiBcIiMwMDAwMDBERVwiLFxuICAgICAgc2Vjb25kYXJ5OiBcIiMwMDAwMDA5OVwiXG4gICAgfVxuICB9LFxuICB0eXBvZ3JhcGh5OiB7XG4gICAgYm9keTE6IHtcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgfSxcbiAgICBoNToge1xuICAgICAgZm9udFNpemU6IFwiMS42ZW1cIixcbiAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgIFwiJi5NdWlUeXBvZ3JhcGh5LWd1dHRlckJvdHRvbVwiOiB7XG4gICAgICAgIG1hcmdpbkJvdHRvbTogXCIyMHB4XCJcbiAgICAgIH1cbiAgICB9LFxuICAgIGg2OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjRlbVwiLFxuICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50czoge1xuICAgIE11aUZvcm1IZWxwZXJUZXh0OiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiLjhlbVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aUJ1dHRvbjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgICAgICBsaW5lSGVpZ2h0OiBcIjIycHhcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlUYWI6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIxNHB4XCIsXG4gICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDk5XCIsXG4gICAgICAgICAgXCImLk11aS1zZWxlY3RlZFwiOiB7XG4gICAgICAgICAgICBjb2xvcjogXCIjMjE5NmYzXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYnM6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIGluZGljYXRvcjoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMjE5NmYzXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IEN1c3RvbVRoZW1lID0gKHsgY2hpbGRyZW4gfSkgPT4gKFxuICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PntjaGlsZHJlbn08L1RoZW1lUHJvdmlkZXI+XG4pO1xuXG5DdXN0b21UaGVtZS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21UaGVtZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID1cbiAgICAgIHF1ZXN0aW9uTWF4VmFsdWVzICE9PSAwICYmIGN1cnJlbnRBbnMubGVuZ3RoID09PSBxdWVzdGlvbk1heFZhbHVlcztcbiAgICBsZXQgbmV3VmFsdWU7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgbmV3VmFsdWUgPSBtYXhTZWxlY3Rpb25SZWFjaGVkID8gY3VycmVudEFucyA6IFsuLi5jdXJyZW50QW5zLCB2YWxdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRBbnMuZmlsdGVyKCh2KSA9PiB2ICE9PSB2YWwpO1xuICAgIH1cblxuICAgIHNldEZpZWxkVmFsdWUocXVlc3Rpb25TbHVnLCBuZXdWYWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWw+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17dmFsdWU/LmluY2x1ZGVzKG9wLnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXYpID0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZShldi50YXJnZXQuY2hlY2tlZCwgb3AudmFsdWUpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0Zvcm1Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmFycmF5LFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggbWFyZ2luPVwibm9ybWFsXCIgZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBzeD17eyBhbGlnbkl0ZW1zOiBcImZsZXgtc3RhcnRcIiB9fVxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIHN4PXt7IG1hcmdpblRvcDogLTEgfX1cbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBNZW51SXRlbSwgU2VsZWN0IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93blF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8SW5wdXRMYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvSW5wdXRMYWJlbD5cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGxhYmVsSWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBpZD17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtvcC5sYWJlbH0gdmFsdWU9e29wLnZhbHVlfT5cbiAgICAgICAgICAgICAge29wLmxhYmVsfVxuICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgVGV4dFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Hcm91cD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblRleHRRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZXh0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrUnVsZSA9ICh2YWx1ZSwgcnVsZSkgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBydWxlLmFuc3dlcl92YWx1ZXM7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmICghdmFsdWUubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHJlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIjtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIikge1xuICAgICAgICByZXMgPSByZXMgJiYgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPclxuICAgICAgICByZXMgPSByZXMgfHwgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHZhbHVlPy50b1N0cmluZygpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1Zpc2liaWxpdHkgPSAocnVsZSwgcnVsZVJlc3VsdCkgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIHJldHVybiAhIXJ1bGVSZXN1bHQ7XG4gICAgfVxuICAgIC8vIE5vbiBFcXVhbFxuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICAvLyBub3QgdmlzaWJsZVxuICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIHJldHVybiAhIXJ1bGVSZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TbHVnID0gKHRleHQsIHF1ZXN0aW9uSWQpID0+IHtcbiAgY29uc3QgdGV4dExDID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gYCR7dGV4dExDLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgXCJfXCIpfV8ke3F1ZXN0aW9uSWR9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYWJlbCA9IChxKSA9PlxuICAvLyByZXBsYWNlIGxpbmUgYnJlYWtzIGFuZCByZW1vdmUgb3V0ZXIgPHA+XG4gIHE/LmxhYmVsPy5yZXBsYWNlKC9cXG4vZywgXCIgXCIpLnJlcGxhY2UoLzxwPiguKik8XFwvcD4vZ2ksIFwiJDFcIik7XG5cbmV4cG9ydCBjb25zdCBpc0Fuc3dlcmVkID0gKGFuc3dlcikgPT4ge1xuICBpZiAoIWFuc3dlcikgcmV0dXJuIGZhbHNlO1xuICAvLyBjaGVjayB0eXBlXG4gIGlmIChBcnJheS5pc0FycmF5KGFuc3dlcikpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwic3RyaW5nXCIpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwibnVtYmVyXCIpIHJldHVybiBhbnN3ZXIgPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJib29sZWFuXCIpIHJldHVybiBhbnN3ZXI7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0lmVmFsdWVNYXRjaCA9IChhbnN3ZXIsIGNvbXBhcmVWYWwpID0+IHtcbiAgY29uc3QgYW5zd2VyQXJyYXkgPSBBcnJheS5pc0FycmF5KGFuc3dlcikgPyBhbnN3ZXIgOiBbYW5zd2VyXTtcblxuICByZXR1cm4gYW5zd2VyQXJyYXkuc29tZSgodikgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBhcmVWYWwpKSB7XG4gICAgICByZXR1cm4gY29tcGFyZVZhbC5pbmNsdWRlcyh2KTtcbiAgICB9XG4gICAgcmV0dXJuIHYgPT09IGNvbXBhcmVWYWw7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVJbml0aWFsVmFsdWUgPSAocSkgPT4ge1xuICBzd2l0Y2ggKHEudHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsdWUgPSAoYW5zLCB0eXBlKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGFucyA9PT0gXCJ0cnVlXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIGFucz8uc3BsaXQoXCIsXCIpIHx8IFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBhbnMgfHwgXCJcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gYW5zIHx8IG51bGw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBhbnM7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgPSAoYW5zd2VycykgPT4ge1xuICBjb25zdCB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIC4uLmV4dHJhX3F1ZXN0aW9uc1xuICB9ID0gYW5zd2VycztcblxuICBjb25zdCBmb3JtYXR0ZWRFUSA9IE9iamVjdC5lbnRyaWVzKGV4dHJhX3F1ZXN0aW9ucykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgcXVlc3Rpb25faWQ6IHBhcnNlSW50KGtleS5zcGxpdChcIl9cIikucG9wKCksIDEwKSxcbiAgICBhbnN3ZXI6IHZhbHVlPy50b1N0cmluZygpIHx8IG51bGxcbiAgfSkpO1xuXG4gIHJldHVybiB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIGV4dHJhX3F1ZXN0aW9uczogZm9ybWF0dGVkRVFcbiAgfTtcbn07XG4iLCJleHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHQgPSBcIlRleHRcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dEFyZWEgPSBcIlRleHRBcmVhXCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrYm94ID0gXCJDaGVja0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QgPSBcIlJhZGlvQnV0dG9uTGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db21ib0JveCA9IFwiQ29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0ID0gXCJDaGVja0JveExpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94ID0gXCJDb3VudHJ5Q29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24gPSBcIlJhZGlvQnV0dG9uXCI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmltcG9ydCB7XG4gIHRvU2x1ZyxcbiAgaXNBbnN3ZXJlZCxcbiAgY2hlY2tWaXNpYmlsaXR5LFxuICBjaGVja1J1bGVcbn0gZnJvbSBcIi4vY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0LFxuICBRdWVzdGlvblR5cGVfVGV4dEFyZWFcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgVGV4dFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBEcm9wZG93blF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGRcIjtcblxuY29uc3QgZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IChxdWVzdGlvblR5cGUpID0+IHtcbiAgc3dpdGNoIChxdWVzdGlvblR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYTpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0OiB7XG4gICAgICByZXR1cm4gVGV4dFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6IHtcbiAgICAgIHJldHVybiBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6IHtcbiAgICAgIHJldHVybiBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6IHtcbiAgICAgIHJldHVybiBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBSZWFjdC5GcmFnbWVudDtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IEV4dHJhUXVlc3Rpb25zRmllbGRzID0gKHtcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvbnNcIixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25cIixcbiAgcmVhZE9ubHkgPSBmYWxzZSxcbiAgYWxsb3dFZGl0ID0gdHJ1ZSxcbiAgZm9ybWlrXG59KSA9PiB7XG4gIGNvbnN0IHJlbmRlclJ1bGUgPSAocnVsZSwgcXVlc3Rpb25TbHVnKSA9PiB7XG4gICAgY29uc3QgcnVsZVJlc3VsdCA9IGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpO1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IGNoZWNrVmlzaWJpbGl0eShydWxlLCBydWxlUmVzdWx0KTtcblxuICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmV0dXJuIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBjb25zdCByZW5kZXJRdWVzdGlvbiA9IChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgLy8gZGlzYWJsZSBmaWVsZCBpZiBlZGl0IGlzbid0IGFsbG93ZWQgYW5kIHRoZSBxdWVzdGlvbnMgaXMgYW5zd2VyZWRcbiAgICBjb25zdCBpc0Rpc2FibGVkID1cbiAgICAgICghYWxsb3dFZGl0ICYmIGlzQW5zd2VyZWQoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddKSkgfHwgcmVhZE9ubHk7XG4gICAgY29uc3QgUXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQocS50eXBlKTtcblxuICAgIGNvbnN0IGZvcm1pa1Byb3BzID0ge1xuICAgICAgdmFsdWU6IGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIG9uQ2hhbmdlOiBmb3JtaWsuaGFuZGxlQ2hhbmdlLFxuICAgICAgb25CbHVyOiBmb3JtaWsuaGFuZGxlQmx1cixcbiAgICAgIGVycm9yOlxuICAgICAgICBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIEJvb2xlYW4oZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddKSxcbiAgICAgIGhlbHBlclRleHQ6IGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddLFxuICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybWlrLnNldEZpZWxkVmFsdWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxRdWVzdGlvbkZpZWxkQ29tcG9uZW50XG4gICAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgICBxdWVzdGlvbj17cX1cbiAgICAgICAgcXVlc3Rpb25DbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgICAgICBpc0Rpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICB7Li4uZm9ybWlrUHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubWFwKChydWxlKSA9PiByZW5kZXJSdWxlKHJ1bGUsIHF1ZXN0aW9uU2x1ZykpfVxuICAgICAgPC9RdWVzdGlvbkZpZWxkQ29tcG9uZW50PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9PntleHRyYVF1ZXN0aW9ucy5tYXAocmVuZGVyUXVlc3Rpb24pfTwvZGl2Pjtcbn07XG5cbkV4dHJhUXVlc3Rpb25zRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhbGxvd0VkaXQ6IFByb3BUeXBlcy5ib29sLFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV4dHJhUXVlc3Rpb25zRmllbGRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEFzc2lnbmVkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJNZVwiLCBsYWJlbDogXCJNZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJTb21lb25lRWxzZVwiLCBsYWJlbDogXCJTb21lb25lIEVsc2VcIiB9LFxuICAgIHsgdmFsdWU6IFwiTm9ib2R5XCIsIGxhYmVsOiBcIk5vYm9keVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJBc3NpZ25lZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Bc3NpZ25lZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduZWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQmFkZ2VGZWF0dXJlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IGJhZGdlX2ZlYXR1cmVzX3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJCYWRnZSBGZWF0dXJlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtiYWRnZV9mZWF0dXJlc190eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkJhZGdlRmVhdHVyZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHtcbiAgQmFkZ2UsXG4gIEJveCxcbiAgQnV0dG9uLFxuICBDYXJkLFxuICBDYXJkSGVhZGVyLFxuICBEaXZpZGVyLFxuICBQYXBlclxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IEJhZGdlRmVhdHVyZUZpbHRlciBmcm9tIFwiLi9CYWRnZUZlYXR1cmVGaWx0ZXJcIjtcbmltcG9ydCB7XG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEVcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUaWNrZXRUeXBlRmlsdGVyIGZyb20gXCIuL1RpY2tldFR5cGVGaWx0ZXJcIjtcbmltcG9ydCBBc3NpZ25lZEZpbHRlciBmcm9tIFwiLi9Bc3NpZ25lZEZpbHRlclwiO1xuaW1wb3J0IFN0YXR1c0ZpbHRlciBmcm9tIFwiLi9TdGF0dXNGaWx0ZXJcIjtcbmltcG9ydCBGcmVlUGFpZEZpbHRlciBmcm9tIFwiLi9GcmVlUGFpZEZpbHRlclwiO1xuaW1wb3J0IFByb21vQ29kZUZpbHRlciBmcm9tIFwiLi9Qcm9tb0NvZGVGaWx0ZXJcIjtcblxuY29uc3QgRmlsdGVyID0gKHsgb25GaWx0ZXIsIG9uUmVzZXQsIGZpbHRlciwgYWN0aXZlRmlsdGVyc0NvdW50IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHRvZ2dsZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEJhZGdlIGJhZGdlQ29udGVudD17YWN0aXZlRmlsdGVyc0NvdW50fSBjb2xvcj1cInByaW1hcnlcIiBzeD17eyBtcjogMSB9fT5cbiAgICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIDwvQmFkZ2U+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dGaWx0ZXJMaXN0IDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPFBhcGVyIGVsZXZhdGlvbj17OH0gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ2hlY2tib3hDb250YWluZXJ9PlxuICAgICAgICAgIDxDYXJkIHZhcmlhbnQ9XCJvdXRsaW5lZFwiPlxuICAgICAgICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJSZXNldH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsZWFuQnV0dG9ufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwiZmlsdGVyLmNsZWFyXCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEFzc2lnbmVkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFN0YXR1c0ZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX09XTkVSX1NUQVRVU119XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxUaWNrZXRUeXBlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8UHJvbW9Db2RlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEZyZWVQYWlkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlcixcbiAgYWN0aXZlRmlsdGVyc0NvdW50OiB3aWRnZXRTdGF0ZS5hY3RpdmVGaWx0ZXJzQ291bnRcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKEZpbHRlcik7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgRnJlZVBhaWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkZyZWVcIiwgbGFiZWw6IFwiRnJlZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJQYWlkXCIsIGxhYmVsOiBcIlBhaWRcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiRnJlZSAvIFBhaWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRnJlZVBhaWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZyZWVQYWlkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFRleHRGaWVsZFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgUHJvbW9Db2RlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG4gIGNvbnN0IFtwcm9tb0NvZGUsIHNldFByb21vQ29kZV0gPSB1c2VTdGF0ZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG5cbiAgY29uc3QgZGVib3VuY2VUaW1lciA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgREVCT1VOQ0VfVkFMVUUgPSA1MDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQcm9tb0NvZGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2KSA9PiB7XG4gICAgY29uc3QgbmV3UHJvbW9Db2RlID0gZXYudGFyZ2V0LnZhbHVlO1xuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdGF0ZSBzbyB0aGUgaW5wdXQgcmVmbGVjdHMgY2hhbmdlc1xuICAgIHNldFByb21vQ29kZShuZXdQcm9tb0NvZGUpO1xuXG4gICAgLy8gcmVtb3ZlIGN1cnJlbnQgZGVib3VuY2VcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBkZWJvdW5jZSBzZXQgdG8gNTAwIG1zXG4gICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvbkZpbHRlcih7XG4gICAgICAgIFtGSUxURVJfVkFSX1BST01PQ09ERV06IG5ld1Byb21vQ29kZVxuICAgICAgfSk7XG4gICAgfSwgREVCT1VOQ0VfVkFMVUUpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gcmVtb3ZlIGRlYm91bmNlIG9uIHJlbG9hZFxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiUHJvbW8gQ29kZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcHk6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJvbW8gY29kZVwiXG4gICAgICAgICAgICB2YWx1ZT17cHJvbW9Db2RlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUHJvbW9Db2RlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9tb0NvZGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmNvbnN0IFNlYXJjaCA9ICh7IG9uU2VhcmNoIH0pID0+IHtcbiAgY29uc3QgeyBmaWx0ZXIgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgc2hvd0Nsb3NlQnRuID0gISFmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdO1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyB3ZSBuZWVkIHRoaXMgd2hlbiBzZWFyY2ggaXMgcmVzZXQgZnJvbSBvdXRzaWRlIHRoaXMgY29tcG9uZW50XG4gICAgc2V0U2VhcmNoVmFsdWUoZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXSk7XG4gIH0sIFtmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZUJ0biAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBQYXBlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU29ydCA9ICh7IG9uU29ydCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8UGFwZXJcbiAgICAgICAgICBlbGV2YXRpb249ezh9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfVxuICAgICAgICA+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiZGVzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImFzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU3RhdHVzRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJJbmNvbXBsZXRlXCIsIGxhYmVsOiBcIkluY29tcGxldGVcIiB9LFxuICAgIHsgdmFsdWU6IFwiQ29tcGxldGVcIiwgbGFiZWw6IFwiQ29tcGxldGVcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiU3RhdHVzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblN0YXR1c0ZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBUaWNrZXRUeXBlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IHRpY2tldF90eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJUaWNrZXQgVHlwZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dGlja2V0X3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0VHlwZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0VHlwZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZpbHRlcnMgPSAoeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSA9PiAoXG4gIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgPEdyaWRcbiAgICAgIGl0ZW1cbiAgICAgIHhzPXs2fVxuICAgICAgY29udGFpbmVyXG4gICAgICBwYWRkaW5nPXsxfVxuICAgICAgZ2FwPXsyfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgID5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gLz5cbiAgICA8L0dyaWQ+XG4gIDwvR3JpZD5cbik7XG5cbkZpbHRlcnMucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCwgbWVtYmVyT3JkZXJzLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlIH0gPVxuICAgIHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnM/Lmxlbmd0aH1cbiAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgaGFzTW9yZT17b3JkZXJzX2N1cnJlbnRfcGFnZSA8IG9yZGVyc19sYXN0X3BhZ2V9XG4gICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgID5cbiAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBUaWNrZXRzSWNvbiA9ICgpID0+IChcbiAgPHN2Z1xuICAgIHdpZHRoPVwiMTI5XCJcbiAgICBoZWlnaHQ9XCI4MFwiXG4gICAgdmlld0JveD1cIjAgMCAxMjkgODBcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEyNS4xMjIgMzYuNDc4MUMxMjQuODE0IDM3LjUxMTIgMTIzLjczOCAzOC4wODkxIDEyMi42NjEgMzguMDM3NkMxMTguNTA2IDM3LjgzODYgMTE0LjU5MyA0MC40NzU0IDExMy4zNDkgNDQuNjQxMkMxMTIuMTA1IDQ4LjgwNzMgMTEzLjkzMiA1My4xNTc2IDExNy41MTcgNTUuMjY5N0MxMTguNDQ2IDU1LjgxNjkgMTE5LjAyOCA1Ni44ODk5IDExOC43MiA1Ny45MjMxTDExNi4zNjkgNjUuNzk2N0MxMTYuMDUzIDY2Ljg1NTEgMTE0LjkzOSA2Ny40NTcgMTEzLjg4MSA2Ny4xNDFMMzAuNzY3NSA0Mi4zMjcxQzI5LjcwOTEgNDIuMDExMiAyOS4xMDcyIDQwLjg5NyAyOS40MjMyIDM5LjgzODZMNDAuMzQzOSAzLjI2MDE2QzQwLjY1OTkgMi4yMDE3NiA0MS43NzQgMS41OTk5MSA0Mi44MzI0IDEuOTE1OUwxMjUuOTQ2IDI2LjcyOTdDMTI3LjAwNCAyNy4wNDU3IDEyNy42MDYgMjguMTU5OSAxMjcuMjkgMjkuMjE4M0wxMjUuMTIyIDM2LjQ3ODFaXCJcbiAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUxTDExMi4zOTEgNDQuMzU1MkwxMTMuMzQ5IDQ0LjY0MTJaTTExNy41MTcgNTUuMjY5N0wxMTcuMDA5IDU2LjEzMTJMMTE3LjUxNyA1NS4yNjk3Wk0xMjIuNjYxIDM4LjAzNzZMMTIyLjcwOSAzNy4wMzg3QzExOC4xMDUgMzYuODE4MyAxMTMuNzY5IDM5LjczODEgMTEyLjM5MSA0NC4zNTUxTDExMy4zNDkgNDQuNjQxMkwxMTQuMzA3IDQ0LjkyNzRDMTE1LjQxNiA0MS4yMTI3IDExOC45MDYgMzguODU4OSAxMjIuNjE0IDM5LjAzNjRMMTIyLjY2MSAzOC4wMzc2Wk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUyQzExMS4wMTIgNDguOTcyNSAxMTMuMDM4IDUzLjc5MTUgMTE3LjAwOSA1Ni4xMzEyTDExNy41MTcgNTUuMjY5N0wxMTguMDI0IDU0LjQwODFDMTE0LjgyNiA1Mi41MjM4IDExMy4xOTggNDguNjQyMSAxMTQuMzA3IDQ0LjkyNzNMMTEzLjM0OSA0NC42NDEyWk0xMTguNzIgNTcuOTIzMUwxMTcuNzYyIDU3LjYzN0wxMTUuNDExIDY1LjUxMDZMMTE2LjM2OSA2NS43OTY3TDExNy4zMjcgNjYuMDgyOEwxMTkuNjc4IDU4LjIwOTFMMTE4LjcyIDU3LjkyMzFaTTExMy44ODEgNjcuMTQxTDExNC4xNjcgNjYuMTgyOEwzMS4wNTM1IDQxLjM2ODlMMzAuNzY3NSA0Mi4zMjcxTDMwLjQ4MTQgNDMuMjg1NEwxMTMuNTk1IDY4LjA5OTJMMTEzLjg4MSA2Ny4xNDFaTTI5LjQyMzIgMzkuODM4NkwzMC4zODE0IDQwLjEyNDdMNDEuMzAyMSAzLjU0NjI0TDQwLjM0MzkgMy4yNjAxNkwzOS4zODU3IDIuOTc0MDlMMjguNDY1IDM5LjU1MjVMMjkuNDIzMiAzOS44Mzg2Wk00Mi44MzI0IDEuOTE1OUw0Mi41NDY0IDIuODc0MTFMMTI1LjY2IDI3LjY4NzlMMTI1Ljk0NiAyNi43Mjk3TDEyNi4yMzIgMjUuNzcxNUw0My4xMTg1IDAuOTU3Njk3TDQyLjgzMjQgMS45MTU5Wk0xMjcuMjkgMjkuMjE4M0wxMjYuMzMyIDI4LjkzMjJMMTI0LjE2NCAzNi4xOTJMMTI1LjEyMiAzNi40NzgxTDEyNi4wODEgMzYuNzY0MkwxMjguMjQ4IDI5LjUwNDRMMTI3LjI5IDI5LjIxODNaTTEyNS45NDYgMjYuNzI5N0wxMjUuNjYgMjcuNjg3OUMxMjYuMTg5IDI3Ljg0NTkgMTI2LjQ5IDI4LjQwMyAxMjYuMzMyIDI4LjkzMjJMMTI3LjI5IDI5LjIxODNMMTI4LjI0OCAyOS41MDQ0QzEyOC43MjIgMjcuOTE2OCAxMjcuODE5IDI2LjI0NTUgMTI2LjIzMiAyNS43NzE1TDEyNS45NDYgMjYuNzI5N1pNMzAuNzY3NSA0Mi4zMjcxTDMxLjA1MzUgNDEuMzY4OUMzMC41MjQzIDQxLjIxMDkgMzAuMjIzNCA0MC42NTM5IDMwLjM4MTQgNDAuMTI0N0wyOS40MjMyIDM5LjgzODZMMjguNDY1IDM5LjU1MjVDMjcuOTkxIDQxLjE0MDEgMjguODkzOCA0Mi44MTE0IDMwLjQ4MTQgNDMuMjg1NEwzMC43Njc1IDQyLjMyNzFaTTExNi4zNjkgNjUuNzk2N0wxMTUuNDExIDY1LjUxMDZDMTE1LjI1MyA2Ni4wMzk4IDExNC42OTYgNjYuMzQwOCAxMTQuMTY3IDY2LjE4MjhMMTEzLjg4MSA2Ny4xNDFMMTEzLjU5NSA2OC4wOTkyQzExNS4xODIgNjguNTczMiAxMTYuODUzIDY3LjY3MDQgMTE3LjMyNyA2Ni4wODI4TDExNi4zNjkgNjUuNzk2N1pNMTE3LjUxNyA1NS4yNjk3TDExNy4wMDkgNTYuMTMxMkMxMTcuNjUzIDU2LjUxMDUgMTE3LjkwNSA1Ny4xNTcgMTE3Ljc2MiA1Ny42MzdMMTE4LjcyIDU3LjkyMzFMMTE5LjY3OCA1OC4yMDkxQzEyMC4xNTIgNTYuNjIyOCAxMTkuMjM5IDU1LjEyMzQgMTE4LjAyNCA1NC40MDgxTDExNy41MTcgNTUuMjY5N1pNNDAuMzQzOSAzLjI2MDE2TDQxLjMwMjEgMy41NDYyNEM0MS40NjAxIDMuMDE3MDQgNDIuMDE3MSAyLjcxNjExIDQyLjU0NjQgMi44NzQxMUw0Mi44MzI0IDEuOTE1OUw0My4xMTg1IDAuOTU3Njk3QzQxLjUzMDkgMC40ODM3MSAzOS44NTk2IDEuMzg2NDggMzkuMzg1NyAyLjk3NDA5TDQwLjM0MzkgMy4yNjAxNlpNMTIyLjY2MSAzOC4wMzc2TDEyMi42MTQgMzkuMDM2NEMxMjQuMDIxIDM5LjEwMzggMTI1LjYwNyAzOC4zNTA1IDEyNi4wODEgMzYuNzY0MkwxMjUuMTIyIDM2LjQ3ODFMMTI0LjE2NCAzNi4xOTJDMTI0LjAyMSAzNi42NzIgMTIzLjQ1NiAzNy4wNzQ0IDEyMi43MDkgMzcuMDM4N0wxMjIuNjYxIDM4LjAzNzZaXCJcbiAgICAgIGZpbGw9XCIjQkRCREJEXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEwNy45MDMgMjIuNjc1OEw5Ni41Njk2IDYwLjYzNzlcIlxuICAgICAgc3Ryb2tlPVwiI0JEQkRCRFwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZURhc2hhcnJheT1cIjIgNVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk05MS43NDIgNDUuODk1MkM5MS43NDE5IDQ2Ljk3MzQgOTAuODc2NSA0Ny44MzQ3IDg5LjgyOTcgNDguMDkzM0M4NS43OTA2IDQ5LjA5MTMgODIuNzk1OSA1Mi43Mzc2IDgyLjc5NTMgNTcuMDg1MkM4Mi43OTQ4IDYxLjQzMjkgODUuNzg4NyA2NS4wNzkyIDg5LjgyNzYgNjYuMDc3OUM5MC44NzQyIDY2LjMzNjcgOTEuNzM5NCA2Ny4xOTgzIDkxLjczOTIgNjguMjc2NEw5MS43MzgyIDc2LjQ5MzVDOTEuNzM4MSA3Ny41OTgxIDkwLjg0MjYgNzguNDkzNCA4OS43MzggNzguNDkzM0wyLjk5OTcyIDc4LjQ4MjdDMS44OTUxNSA3OC40ODI1IDAuOTk5ODI1IDc3LjU4NyAwLjk5OTk2IDc2LjQ4MjRMMS4wMDQ2NCAzOC4zMDg2QzEuMDA0NzcgMzcuMjA0IDEuOTAwMzEgMzYuMzA4NyAzLjAwNDg4IDM2LjMwODhMODkuNzQzMiAzNi4zMTk1QzkwLjg0NzcgMzYuMzE5NiA5MS43NDMxIDM3LjIxNTEgOTEuNzQyOSAzOC4zMTk3TDkxLjc0MiA0NS44OTUyWlwiXG4gICAgICBmaWxsPVwid2hpdGVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNODIuNzk1MyA1Ny4wODUyTDgxLjc5NTMgNTcuMDg1MUw4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyWk04OS44Mjk3IDQ4LjA5MzNMOTAuMDY5NiA0OS4wNjQxTDg5LjgyOTcgNDguMDkzM1pNODkuODI5NyA0OC4wOTMzTDg5LjU4OTkgNDcuMTIyNUM4NS4xMTUgNDguMjI4MSA4MS43OTYgNTIuMjY2NyA4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyTDgzLjc5NTMgNTcuMDg1NEM4My43OTU4IDUzLjIwODQgODYuNDY2MyA0OS45NTQ0IDkwLjA2OTYgNDkuMDY0MUw4OS44Mjk3IDQ4LjA5MzNaTTgyLjc5NTMgNTcuMDg1Mkw4MS43OTUzIDU3LjA4NTFDODEuNzk0NyA2MS45MDM2IDg1LjExMjkgNjUuOTQyMiA4OS41ODc1IDY3LjA0ODdMODkuODI3NiA2Ni4wNzc5TDkwLjA2NzYgNjUuMTA3MUM4Ni40NjQ0IDY0LjIxNjIgODMuNzk0OCA2MC45NjIyIDgzLjc5NTMgNTcuMDg1M0w4Mi43OTUzIDU3LjA4NTJaTTkxLjczOTIgNjguMjc2NEw5MC43MzkyIDY4LjI3NjNMOTAuNzM4MiA3Ni40OTM0TDkxLjczODIgNzYuNDkzNUw5Mi43MzgyIDc2LjQ5MzdMOTIuNzM5MiA2OC4yNzY2TDkxLjczOTIgNjguMjc2NFpNODkuNzM4IDc4LjQ5MzNMODkuNzM4MSA3Ny40OTMzTDIuOTk5ODQgNzcuNDgyN0wyLjk5OTcyIDc4LjQ4MjdMMi45OTk2IDc5LjQ4MjdMODkuNzM3OSA3OS40OTMzTDg5LjczOCA3OC40OTMzWk0wLjk5OTk2IDc2LjQ4MjRMMS45OTk5NiA3Ni40ODI1TDIuMDA0NjQgMzguMzA4N0wxLjAwNDY0IDM4LjMwODZMMC4wMDQ2Mzc3NiAzOC4zMDg1TC0zLjk2MDc1ZS0wNSA3Ni40ODIzTDAuOTk5OTYgNzYuNDgyNFpNMy4wMDQ4OCAzNi4zMDg4TDMuMDA0NzYgMzcuMzA4OEw4OS43NDMgMzcuMzE5NUw4OS43NDMyIDM2LjMxOTVMODkuNzQzMyAzNS4zMTk1TDMuMDA1MDEgMzUuMzA4OEwzLjAwNDg4IDM2LjMwODhaTTkxLjc0MjkgMzguMzE5N0w5MC43NDI5IDM4LjMxOTZMOTAuNzQyIDQ1Ljg5NTFMOTEuNzQyIDQ1Ljg5NTJMOTIuNzQyIDQ1Ljg5NTNMOTIuNzQyOSAzOC4zMTk4TDkxLjc0MjkgMzguMzE5N1pNODkuNzQzMiAzNi4zMTk1TDg5Ljc0MyAzNy4zMTk1QzkwLjI5NTMgMzcuMzE5NSA5MC43NDMgMzcuNzY3MyA5MC43NDI5IDM4LjMxOTZMOTEuNzQyOSAzOC4zMTk3TDkyLjc0MjkgMzguMzE5OEM5Mi43NDMxIDM2LjY2MyA5MS40MDAxIDM1LjMxOTcgODkuNzQzMyAzNS4zMTk1TDg5Ljc0MzIgMzYuMzE5NVpNMi45OTk3MiA3OC40ODI3TDIuOTk5ODQgNzcuNDgyN0MyLjQ0NzU1IDc3LjQ4MjYgMS45OTk4OSA3Ny4wMzQ4IDEuOTk5OTYgNzYuNDgyNUwwLjk5OTk2IDc2LjQ4MjRMLTMuOTYwNzVlLTA1IDc2LjQ4MjNDLTAuMDAwMjQyNjE5IDc4LjEzOTIgMS4zNDI3NCA3OS40ODI1IDIuOTk5NiA3OS40ODI3TDIuOTk5NzIgNzguNDgyN1pNOTEuNzM4MiA3Ni40OTM1TDkwLjczODIgNzYuNDkzNEM5MC43MzgyIDc3LjA0NTcgOTAuMjkwNCA3Ny40OTM0IDg5LjczODEgNzcuNDkzM0w4OS43MzggNzguNDkzM0w4OS43Mzc5IDc5LjQ5MzNDOTEuMzk0NyA3OS40OTM1IDkyLjczOCA3OC4xNTA1IDkyLjczODIgNzYuNDkzN0w5MS43MzgyIDc2LjQ5MzVaTTg5LjgyNzYgNjYuMDc3OUw4OS41ODc1IDY3LjA0ODdDOTAuMzEyOCA2Ny4yMjggOTAuNzM5MyA2Ny43NzU0IDkwLjczOTIgNjguMjc2M0w5MS43MzkyIDY4LjI3NjRMOTIuNzM5MiA2OC4yNzY2QzkyLjczOTUgNjYuNjIxMSA5MS40MzU2IDY1LjQ0NTQgOTAuMDY3NiA2NS4xMDcxTDg5LjgyNzYgNjYuMDc3OVpNMS4wMDQ2NCAzOC4zMDg2TDIuMDA0NjQgMzguMzA4N0MyLjAwNDcxIDM3Ljc1NjQgMi40NTI0OCAzNy4zMDg4IDMuMDA0NzYgMzcuMzA4OEwzLjAwNDg4IDM2LjMwODhMMy4wMDUwMSAzNS4zMDg4QzEuMzQ4MTUgMzUuMzA4NiAwLjAwNDg0MDc3IDM2LjY1MTYgMC4wMDQ2Mzc3NiAzOC4zMDg1TDEuMDA0NjQgMzguMzA4NlpNODkuODI5NyA0OC4wOTMzTDkwLjA2OTYgNDkuMDY0MUM5MS40Mzc2IDQ4LjcyNjEgOTIuNzQxOCA0Ny41NTA4IDkyLjc0MiA0NS44OTUzTDkxLjc0MiA0NS44OTUyTDkwLjc0MiA0NS44OTUxQzkwLjc0MTkgNDYuMzk2IDkwLjMxNTMgNDYuOTQzMyA4OS41ODk5IDQ3LjEyMjVMODkuODI5NyA0OC4wOTMzWlwiXG4gICAgICBmaWxsPVwiI0JEQkRCRFwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk03MS4yOTQ5IDM3LjU5NTdMNzEuMjkwMSA3Ny4yMTM2XCJcbiAgICAgIHN0cm9rZT1cIiNCREJEQkRcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VEYXNoYXJyYXk9XCIyIDVcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0c0ljb247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFRpY2tldHNJY29uIGZyb20gXCIuL1RpY2tldHNJY29uXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBOb1RpY2tldHNGb3VuZCA9ICh7IHBhZ2VWaWV3LCBvbkNsaWNrIH0pID0+IHtcbiAgY29uc3QgeyBzdW1taXQsIGxvYWRpbmcgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30pO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZ2V0Q29udGVudCA9ICgpID0+IHtcbiAgICBjb25zdCBtYWlsdG9UYWcgPSAoXG4gICAgICA8YSBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH0+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5jb250YWN0X3N1cHBvcnRcIil9XG4gICAgICA8L2E+XG4gICAgKTtcblxuICAgIHN3aXRjaCAocGFnZVZpZXcpIHtcbiAgICAgIGNhc2UgVEFCUy5PUkRFUlM6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMub3JkZXJzLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHt0KFwibm9fcmVzdWx0cy5vcmRlcnMuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlIFRBQlMuVElDS0VUUzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5hc3NpZ25lZC50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dChcIm5vX3Jlc3VsdHMuYXNzaWduZWQuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwib3JkZXJzLnRpdGxlXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLmZpbHRlci50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiB0KFwibm9fcmVzdWx0cy5maWx0ZXIuYm9keVwiKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcImZpbHRlci5jbGVhcl9maWx0ZXJzXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHsgdGl0bGUsIGJvZHksIGJ1dHRvbkxhYmVsIH0gPSBnZXRDb250ZW50KCk7XG5cbiAgaWYgKGxvYWRpbmcpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaWNvbldyYXBwZXJ9PlxuICAgICAgICA8VGlja2V0c0ljb24gLz5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5ib2R5fVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPEJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgID5cbiAgICAgICAge2J1dHRvbkxhYmVsfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOb1RpY2tldHNGb3VuZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgdXNlU3VtbWl0RGV0YWlscyB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGlzU3RhcnRlZCB9ID0gdXNlU3VtbWl0RGV0YWlscyh7IHN1bW1pdCB9KTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShcbiAgICBpc0luUmVmdW5kYWJsZVBlcmlvZCAmJlxuICAgICFpc1N0YXJ0ZWQgJiZcbiAgICBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldFxuICApO1xuICBjb25zdCBoYXNSZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldHM/LnNvbWUoKHQpID0+IHQucmVmdW5kX3JlcXVlc3RzLmxlbmd0aCA+IDApO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNSZWZ1bmRhYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgcmVxdWVzdCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICAke3N1Ym1pdFJlcXVlc3QgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWQgOiBcIlwifWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIHtoYXNSZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIGRldGFpbHMgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cImVtYWlsIHN1cHBvcnQgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgdGFyZ2V0PVwiX3RvcFwiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH1cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25Ub01lID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyVGlja2V0cyxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXYgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRUb01lV3JhcHBlcn0+XG4gICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJUaWNrZXRzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXt1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIDwgdXNlcl90aWNrZXRzX2xhc3RfcGFnZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgICAgICAge3VzZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtbXX1cbiAgICAgICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduVG9NZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgR3JpZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbmVkVG8gPSAoeyBlbWFpbCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtYXNzaWduZWRcIj5cbiAgICAgICAge2VtYWlsfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgRXh0ZXJuYWxBc3NpZ25lZFRvID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfYnlcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IE1hbmFnZUZvciA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLm1hbmFnZV9mb3JcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEF0dGVuZGVlU3RhdHVzID0gKHsgdGlja2V0LCBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9ICF0aWNrZXQub3duZXI/LmVtYWlsICYmIHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICBpZiAodGlja2V0Lm93bmVyPy5lbWFpbCkge1xuICAgIHJldHVybiAoXG4gICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEFzc2lnbmVkVG8gZW1haWw9e3RpY2tldC5vd25lci5lbWFpbH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7aXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxFeHRlcm5hbEFzc2lnbmVkVG9cbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2ZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2xhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPE1hbmFnZUZvclxuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vd25lcj8uZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vd25lcj8ubGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlckxpc3RJdGVtID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgeyByZXNldFRpY2tldCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IG1vZGFsVmlld3MgPSB7XG4gIGRldGFpbDogXCJERVRBSUxcIixcbiAgcmVhc3NpZ246IFwiUkVBU1NJR05cIixcbiAgYXNzaWduOiBcIkFTU0lHTlwiXG59O1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5hc3NpZ24pfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFjayBhbGlnbkl0ZW1zPVwiY2VudGVyXCIgZGlyZWN0aW9uPVwicm93XCI+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuZGV0YWlsKX1cbiAgICAgID5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVhc3NpZ24gdGlja2V0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5yZWFzc2lnbil9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cblRpY2tldENUQXMucHJvcFR5cGVzID0ge1xuICBpc0luY29tcGxldGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzVW5hc3NpZ25lZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNSZWFzc2lnbmFibGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uT3BlbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIGlzUmVmdW5kTW9kYWwsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSwgY2FuUmVhc3NpZ24gfSA9XG4gICAgdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbbW9kYWxPcGVuLCBzZXRNb2RhbE9wZW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBvblJlYXNzaWduYWJsZVBlcmlvZCA9IHJlYXNzaWduRGF0ZSA+IG5vdztcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPVxuICAgIG9uUmVhc3NpZ25hYmxlUGVyaW9kICYmIGNhblJlYXNzaWduICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4obnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKHZpZXcpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4odmlldyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyV3JhcHBlcn0gJHtcbiAgICAgICAgaXNSZWZ1bmRNb2RhbCA/IHN0eWxlcy5yZWZ1bmRNb2RhbCA6IFwiXCJcbiAgICAgIH0gJHtpc1JlZnVuZE1vZGFsICYmICFpc1JlZnVuZGFibGUgPyBzdHlsZXMuZGlzYWJsZWRSZWZ1bmQgOiBcIlwifSAke1xuICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQgPyBzdHlsZXMuc2VsZWN0ZWQgOiBcIlwiXG4gICAgICB9YH1cbiAgICA+XG4gICAgICB7aXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0geHM9ezF9IHBhZGRpbmc9ezJ9IGNsYXNzTmFtZT17c3R5bGVzLmNoZWNrYm94fT5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE4XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17IWlzUmVmdW5kYWJsZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB4cz17aXNSZWZ1bmRNb2RhbCA/IDExIDogMTJ9XG4gICAgICA+XG4gICAgICAgIDxHcmlkXG4gICAgICAgICAgeHM9ezh9XG4gICAgICAgICAgcHk9ezJ9XG4gICAgICAgICAgcGw9ezR9XG4gICAgICAgICAgaXRlbVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFRpY2tldFR5cGV9XG4gICAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVXcmFwcGVyfSB4cz17NH0gcHk9ezJ9IHByPXs0fSBpdGVtPlxuICAgICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgIHNyYz17YmYuaW1hZ2V9XG4gICAgICAgICAgICAgIGFsdD17YmYubmFtZX1cbiAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiA0LCBwYjogMiB9fSBpdGVtPlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1c1xuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ9eyEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEZvb3Rlcn0+XG4gICAgICAgICAgPEJveD5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfT5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmICFpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGUgJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17W21vZGFsVmlld3MucmVhc3NpZ24sIG1vZGFsVmlld3MuYXNzaWduXS5pbmNsdWRlcyhtb2RhbE9wZW4pfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgaXNSZWZ1bmRNb2RhbDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNlbGVjdFRvUmVmdW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0VGlja2V0cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgUmVmdW5kRGV0YWlscyBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlsc1wiO1xuXG5jb25zdCBUYWJQYW5lbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgPSAoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG4gIGNvbnN0IFt0aWNrZXRzVG9SZWZ1bmQsIHNldFRpY2tldHNUb1JlZnVuZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzdWJtaXRSZXF1ZXN0LCBzZXRTdWJtaXRSZXF1ZXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZnVuZERldGFpbHNPcGVuLCBzZXRSZWZ1bmREZXRhaWxzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgICAgICh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWRcbiAgICAgICk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlU3VibWl0UmVxdWVzdCA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgIG1lc3NhZ2U9e3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgICBjb2xvcj1cIiNmZjk4MDBcIlxuICAgICAgICBkYXRhVGVzdElkPVwibW9yZS1kZXRhaWxzLWxhYmVsXCJcbiAgICAgIC8+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICA8L0JveD5cbiAgKSA6IChcbiAgICA8PlxuICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVza3RvcC1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezF9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3Blbih0cnVlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzIHx8IFtdfVxuICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBjbG9zZVN1Ym1pdFJlcXVlc3QoKX1cbiAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAvPlxuICAgICAgPFJlZnVuZERldGFpbHNcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgIGN1cnJlbmN5PXtvcmRlci5jdXJyZW5jeX1cbiAgICAgICAgb3Blbj17cmVmdW5kRGV0YWlsc09wZW59XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgaXNNb2JpbGU6IFByb3BUeXBlcy5ib29sLFxuICBkZXRhaWxzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvblBhZ2luYXRlQ2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRzQnlPcmRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIGZyb20gXCIuL09yZGVyc0xpc3REZXNrdG9wTW9iaWxlXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyc0xpc3QgPSAoeyBzdW1taXQsIG9yZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgdGlja2V0X3Blcl9wYWdlLCBmaWx0ZXIsIHNvcnQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG5cbiAgY29uc3Qgb25QYWdpbmF0ZUNsaWNrID0gKCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgIHBhZ2U6IG9yZGVyLnRpY2tldHNfcGFnZV9jdXJyZW50ICsgT05FX1BBR0VfTkVYVCxcbiAgICAgICAgcGVyUGFnZTogdGlja2V0X3Blcl9wYWdlLFxuICAgICAgICBmaWx0ZXIsXG4gICAgICAgIHNvcnRcbiAgICAgIH0pXG4gICAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAxLCBsZzogMCB9IH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXtvcmRlci5udW1iZXJ9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IFwiNXB4IDEwcHhcIiB9fVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogNCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ISFkZXRhaWxzUmVxdWlyZWR9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCB7IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRGV0YWlscyA9ICh7IHRpY2tldHMsIGN1cnJlbmN5LCBvcGVuLCBvbkNsb3NlU2xpZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCByZXF1ZXN0ZWRUaWNrZXRzID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzKHRpY2tldHMpLFxuICAgIFt0aWNrZXRzXVxuICApO1xuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD1cInJlZnVuZC1kZXRhaWxzXCJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICA+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZGlzcGxheTogXCJmbGV4XCIsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogXCJjb2x1bW5cIixcbiAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgIHBhZGRpbmc6IFwiMCA1cmVtXCJcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3JlcXVlc3RlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgY3VycmVuY3k9e2N1cnJlbmN5fVxuICAgICAgICAgICAgcmVmdW5kRGV0YWlsc1xuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblJlZnVuZERldGFpbHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZERldGFpbHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBJY29uQnV0dG9uLCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHRvb2x0aXBDbGFzc2VzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgSW5mb0ljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCBBdHRlbmRlZVN0YXR1cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1c1wiO1xuaW1wb3J0IFJlZnVuZFN0YXR1cyBmcm9tIFwiLi9SZWZ1bmRTdGF0dXNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e3JlZnVuZERldGFpbHMgPyBHUklEXzggOiBHUklEXzEyfVxuICAgICAgICBpdGVtXG4gICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgcHQ9ezJ9XG4gICAgICAgIHB4PXs0fVxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IGl0ZW0+XG4gICAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17NH0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEF0dGVuZGVlfT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06IDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7cmVmdW5kRGV0YWlscyAmJiB0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgICAgPEdyaWQgeHM9ezR9IHBsPXs0fT5cbiAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgIFJlZnVuZGVkXG4gICAgICAgICAgICB7YXBwcm92ZWRSZWZ1bmRzLnNvbWUoKHIpID0+IHIucmVmdW5kZWRfdGF4ZXMubGVuZ3RoID4gMCkgJiYgKFxuICAgICAgICAgICAgICA8SHRtbFRvb2x0aXBcbiAgICAgICAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnJlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICAgICAgICAgICAgVGlja2V0IEFtb3VudFxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxiPlRheGVzPC9iPlxuICAgICAgICAgICAgICAgICAgICB7T2JqZWN0LmtleXMocmVmdW5kZWRUYXhlc1N1bW1hdG9yeSkubWFwKCh0YXhJZCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdG90YWxSZWZ1bmRlZFRheEFtb3VudCwgbmFtZSB9ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdO1xuICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8cCBrZXk9e3RheElkfT57YCR7bmFtZX0gLSAke2Zvcm1hdEN1cnJlbmN5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICB7IGN1cnJlbmN5IH1cbiAgICAgICAgICAgICAgICAgICAgICAgICl9YH08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8SWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxJbmZvSWNvbiAvPlxuICAgICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9IdG1sVG9vbHRpcD5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgIHttb21lbnQoXG4gICAgICAgICAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHNbMF0uYWN0aW9uX2RhdGUgKiBNSUxMSVNFQ19UT19TRUNcbiAgICAgICAgICAgICkuZm9ybWF0KFwiTU1NIERELCBZWVlZXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXsxMn0gcHI9ezR9IHBiPXsyfT5cbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IGl0ZW0+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZnVuZERldGFpbHM6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgc3RhdHVzQ29sb3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yKHRpY2tldCksXG4gICAgW3RpY2tldF1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Q2hpcFxuICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCByZWZ1bmQgc3RhdHVzIGxhYmVsXCJcbiAgICAgIGxhYmVsPXt0KGB0aWNrZXRfc3RhdHVzLnJlZnVuZF9yZXF1ZXN0XyR7c3RhdHVzQ29sb3J9YCl9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlc1tzdGF0dXNDb2xvcl19YH1cbiAgICAvPlxuICApO1xufTtcblxuUmVmdW5kU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyByZWZ1bmRCdWxrVGlja2V0cywgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBTVEVQX09ORSwgU1RFUF9USFJFRSwgU1RFUF9UV08gfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi4vT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0c01vZGFsID0gKHtcbiAgdGlja2V0cyxcbiAgc3VtbWl0LFxuICBvcGVuLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlcixcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgY29uZmlybVJlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfVFdPKTtcbiAgfTtcblxuICBjb25zdCBnb0JhY2tUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRUaWNrZXRzID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlZnVuZEJ1bGtUaWNrZXRzKHsgdGlja2V0czogdGlja2V0c1RvUmVmdW5kIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9USFJFRSk7IC8vIHN1Y2Nlc3MsIGFsbCByZWZ1bmRzIHdlcmUgcmVxdWVzdGVkXG4gICAgICAgIHNldFJlZnVuZFN1Y2Nlc3ModHJ1ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRFcnJvck1zZyh0KFwiZXJyb3JzLnJlZnVuZF91bnN1Y2Nlc3NmdWxcIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBPbmUgPSAoKSA9PiAoXG4gICAgPD5cbiAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X3NlbGVjdF9yZWZ1bmRcIil9XG4gICAgICA8L2gyPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAga2V5PXtgdGlja2V0LSR7dGlja2V0LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtcbiAgICAgICAgICAgICAgISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgICBpc1JlZnVuZE1vZGFsXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2NvbmZpcm1SZWZ1bmR9XG4gICAgICAgICAgZGlzYWJsZWQ9e3RpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94IGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiPlxuICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfY29uZmlybV9yZWZ1bmRcIil9XG4gICAgICA8L2gzPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0c1RvUmVmdW5kLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLkNUQUJ1dHRvbldyYXBwZXJ9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1yZXR1cm4tYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Z29CYWNrVG9SZWZ1bmR9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuYmFja1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVGhyZWUgPSAoKSA9PiAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kU3VjY2Vzc2Z1bH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3Qtc3VjY2Vzc2Z1bFwiXG4gICAgPlxuICAgICAgPENoZWNrQ2lyY2xlSWNvbiBzeD17eyBjb2xvcjogXCIjNGNhZjUwXCIgfX0gLz5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2d9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18xXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZzJ9PlxuICAgICAgICB7dChcInRpY2tldHMucmVmdW5kX3JlcXVlc3Rfc3VjY2Vzc18yXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWZpbmlzaC1idXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgPlxuICAgICAgICB7dChcImdlbmVyYWwuZmluaXNoXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVuZGVyU3RlcHMgPSAoKSA9PiB7XG4gICAgc3dpdGNoIChzdGVwKSB7XG4gICAgICBjYXNlIFNURVBfT05FOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgICAgY2FzZSBTVEVQX1RXTzpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUd28oKTtcbiAgICAgIGNhc2UgU1RFUF9USFJFRTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBUaHJlZSgpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVmdW5kLXJlcXVlc3RzXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICA+XG4gICAgICAgIHtyZW5kZXJTdGVwcygpfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdHNNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0c01vZGFsO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5LCBEcmF3ZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgQ2xvc2UgYXMgQ2xvc2VJY29uIH0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmlnaHREcmF3ZXIgPSAoeyBpZCwgdGl0bGUsIGNoaWxkcmVuLCBvcGVuLCBvbkNsb3NlLCBjbGFzc05hbWUgfSkgPT4gKFxuICA8RHJhd2VyXG4gICAgaWQ9e2lkfVxuICAgIG9wZW49e29wZW59XG4gICAgb25DbG9zZT17b25DbG9zZX1cbiAgICBhbmNob3I9XCJyaWdodFwiXG4gICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy53cmFwcGVyfSAke2NsYXNzTmFtZX1gfVxuICA+XG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPEljb25CdXR0b25cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJjbG9zZS1kcmF3ZXJcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbG9zZUJ0bn1cbiAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICBmb250U2l6ZT1cImxhcmdlXCJcbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU3VtbWl0SGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICA8L2gyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VtbWl0SGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFN1bW1pdEhlYWRlciBmcm9tIFwiLi4vU3VtbWl0SGVhZGVyXCI7XG5pbXBvcnQgTm9UaWNrZXRzRm91bmQgZnJvbSBcIi4uL05vVGlja2V0c0ZvdW5kXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBUYWJXcmFwcGVyID0gKHsgdGFiLCBjaGlsZHJlbiwgc2V0VGFiIH0pID0+IHtcbiAgY29uc3QgeyBtZW1iZXJPcmRlcnMsIHVzZXJUaWNrZXRzLCBhY3RpdmVGaWx0ZXJzQ291bnQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge31cbiAgKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB0aWNrZXRzID0gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyB1c2VyVGlja2V0cyA6IG1lbWJlck9yZGVycztcbiAgY29uc3QgaGFzVGlja2V0cyA9IHRpY2tldHMubGVuZ3RoID4gMDtcbiAgY29uc3QgaXNGaWx0ZXJlZCA9IGFjdGl2ZUZpbHRlcnNDb3VudCA+IDA7XG5cbiAgY29uc3QgY2xlYXJGaWx0ZXJzID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IGdldFBhZ2VWaWV3ID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gXCJmaWx0ZXJcIjtcbiAgICByZXR1cm4gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyBUQUJTLlRJQ0tFVFMgOiBUQUJTLk9SREVSUztcbiAgfTtcblxuICBjb25zdCBnZXRPbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gY2xlYXJGaWx0ZXJzO1xuICAgIGNvbnN0IHRhYlRvTGluayA9IHRhYiA9PT0gVEFCUy5USUNLRVRTID8gVEFCUy5PUkRFUlMgOiBUQUJTLlRJQ0tFVFM7XG4gICAgcmV0dXJuICgpID0+IHNldFRhYih0YWJUb0xpbmspO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHshaGFzVGlja2V0cyAmJiAoXG4gICAgICAgIDxOb1RpY2tldHNGb3VuZCBwYWdlVmlldz17Z2V0UGFnZVZpZXcoKX0gb25DbGljaz17Z2V0T25DbGljaygpfSAvPlxuICAgICAgKX1cbiAgICAgIHtoYXNUaWNrZXRzICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHB0OiA2LCBwYjogMyB9fT5cbiAgICAgICAgICAgIDxTdW1taXRIZWFkZXIgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRhYldyYXBwZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgRGVsZWdhdGVGb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9maXJzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmZpcnN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZmlyc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2xhc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5sYXN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfbGFzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmVtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbkRlbGVnYXRlRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdSA/IFwieW91XCIgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlja2V0LnRpY2tldF90eXBlLm5hbWU7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVhc3NpZ25IZWFkZXIgPSAoe1xuICBpblByb2dyZXNzLFxuICBhbGxvd3NEZWxlZ2F0ZSxcbiAgdGlja2V0LFxuICB1c2VyRW1haWwsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ueW91cnNlbGZcIilcbiAgICAgIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG5cbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ucmVhc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBhbGxvd3NEZWxlZ2F0ZVxuICAgICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uXCIpXG4gICAgICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25fbm9fZGVsZWdhdGVcIik7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgIDxiciAvPlxuICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNvbXBsZXRlX2xhdGVyXCIpfVxuICAgICAgICA8L0xpbms+XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcblJlYXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlYXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkZvcm07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIENvbGxhcHNlLCBEaXZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGFzc2lnbkF0dGVuZGVlLFxuICBkZWxlZ2F0ZVRpY2tldCxcbiAgcmVhc3NpZ25UaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9uc1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBEZWxlZ2F0ZUZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9EZWxlZ2F0ZUZvcm1cIjtcbmltcG9ydCBBc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgUmVhc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoeyB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb3Blbiwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduT3B0aW9uLCBzZXRBc3NpZ25PcHRpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25hdGlvbkluUHJvZ3Jlc3MsIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc0Fzc2lnbmVkVG9NZSA9IHVzZXJQcm9maWxlPy5lbWFpbCA9PT0gdGlja2V0Py5vd25lcj8uZW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvbkFzc2lnbiA9IChlbWFpbCwgbWVzc2FnZSA9IFwiXCIpID0+IHtcbiAgICBpZiAob3duZXJJZCkge1xuICAgICAgZGlzcGF0Y2gocmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uRGVsZWdhdGUgPSAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGRlbGVnYXRlVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbClcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCB0aXRsZSA9IG93bmVySWRcbiAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi50aXRsZVwiKVxuICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi50aXRsZVwiKTtcbiAgY29uc3QgSGVhZGVyID0gb3duZXJJZCA/IFJlYXNzaWduSGVhZGVyIDogQXNzaWduSGVhZGVyO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlYXNzaWduRHJhd2VyXCJcbiAgICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFJlYXNzaWduQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxIZWFkZXJcbiAgICAgICAgICAgICAgaW5Qcm9ncmVzcz17YXNzaWduYXRpb25JblByb2dyZXNzfVxuICAgICAgICAgICAgICBhbGxvd3NEZWxlZ2F0ZT17YWxsb3dzRGVsZWdhdGV9XG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJQcm9maWxlLmVtYWlsfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgLz5cblxuICAgICAgICAgICAge2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcyA/IChcbiAgICAgICAgICAgICAgPEFzc2lnbkVRRm9ybVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduT3B0aW9uc1dyYXBwZXJ9PlxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNBc3NpZ25lZFRvTWV9XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkFzc2lnbih1c2VyUHJvZmlsZS5lbWFpbCwgXCJcIil9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICAgICAgICAgICAgb3JcbiAgICAgICAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgICAgICAgPEJveD5cbiAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm90aGVyXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQXNzaWduKHZhbC5uZXdfYXR0ZW5kZWVfZW1haWwsIHZhbC5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJvdGhlclwiICYmIChcbiAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJvdGhlclwiKX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fb3RoZXJcIil9XG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICB7YWxsb3dzRGVsZWdhdGUgJiYgKFxuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICBvclxuICAgICAgICAgICAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm1hbmFnZVwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgICAgICAgICAgIDxEZWxlZ2F0ZUZvcm1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25EZWxlZ2F0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZmlyc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfbGFzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJtYW5hZ2VcIiAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm1hbmFnZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ubWFuYWdlX3RpY2tldFwiKX1cbiAgICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgdGl0bGU9e3NhdmVNZXNzYWdlPy50aXRsZX1cbiAgICAgICAgZGVzY3JpcHRpb249e3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXRBc3NpZ24ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRBc3NpZ247XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7XG4gICAgZXJyb3JzLFxuICAgIHZhbHVlcyxcbiAgICB0b3VjaGVkLFxuICAgIHNldEZpZWxkVG91Y2hlZCxcbiAgICBzZXRGaWVsZFZhbHVlLFxuICAgIGluaXRpYWxWYWx1ZXNcbiAgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBkaXNhYmxlZCA9ICEhaW5pdGlhbFZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLnRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgc3g9e3sgZm9udFNpemU6IFwiMWVtXCIsIGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyID0gKHtcbiAgZGlzY2xhaW1lcixcbiAgZm9ybWlrLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGlzUmVxdWlyZWQgPSB0cnVlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5kaXNjbGFpbWVyX2xhYmVsXCIpfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQge1xuICBwYXJzZUFuc3dlcnMsXG4gIGJ1aWxkVmFsaWRhdGlvblNjaGVtYVxufSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJkZXRhaWxzRHJhd2VyXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIGlzRGVsZWdhdGVkPXshIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZH1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkLCBpc0RlbGVnYXRlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyLCBpbml0aWFsVmFsdWVzIH0gPVxuICAgIGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgIC8+XG4gICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBzeD17eyBmb250V2VpZ2h0OiA1MDAsIG1hcmdpbjogXCIxMHB4IDBcIiB9fT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwubWFuYWdlX2ZvclwiKX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lLCBUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0ubWFwKFxuICAgICAgICAobmFtZSkgPT4gKFxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAga2V5PXtuYW1lfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIGxhYmVsPXt0KGB0aWNrZXRfZGV0YWlsLiR7bmFtZX1gKX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgaXNEZWxlZ2F0ZWQgfHwgISFpbml0aWFsVmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0RlbGVnYXRlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBDbG9zZSBhcyBDbG9zZUljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvbixcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIFRXT19JVEVNIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRQREYsXG4gIHNhdmVUaWNrZXREZXRhaWxzLFxuICByZXNlbmROb3RpZmljYXRpb25cbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBkb3dubG9hZFRpY2tldFBkZiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChnZXRUaWNrZXRQREYodGlja2V0KSk7XG4gIH07XG5cbiAgY29uc3Qgb25TZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZW5kTm90aWZpY2F0aW9uKHRpY2tldCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U2VudENvbmZpcm1hdGlvbih0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZW50Q29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICAgIH0sIE1JTExJU0VDX1RPX1NFQyAqIFRXT19JVEVNKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RHJhd2VyXG4gICAgICAgIGlkPVwiZGV0YWlsc0RyYXdlclwiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7XG4gICAgICAgICAgICAgICAgICAgICAgc2VudENvbmZpcm1hdGlvbiA/IHN0eWxlcy5zZW50IDogXCJcIlxuICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZW50Q29uZmlybWF0aW9ufVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7c2VudENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgeyEhcmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgcmVmdW5kIHJlcXVlc3RlZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblJlZnVuZFJlcXVlc3RlZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3JlZnVuZF9yZXF1ZXN0ZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0luY29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgaW5jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNVbmFzc2lnbmVkICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHVuYXNzaWduZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25Db21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY2FuY2VsbGVkXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25DYW5jZWxsZWR9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY2FuY2VsbGVkXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRSZXF1ZXN0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0U3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBEaXZpZGVyLFxuICBUYWIsXG4gIFRhYnMsXG4gIHVzZU1lZGlhUXVlcnksXG4gIHVzZVRoZW1lXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBUQUJTXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICBnZXRVc2VyVGlja2V0c1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRhYldyYXBwZXIgZnJvbSBcIi4uL1RhYldyYXBwZXJcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuICBjb25zdCBbdGlja2V0c0Z1bGx5TG9hZGVkLCBzZXRUaWNrZXRzRnVsbHlMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBvcmRlcnNfcGVyX3BhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIG1lbWJlck9yZGVyc1xuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKGV2LCBuZXdUYWIpID0+IHtcbiAgICBzZXRUYWIobmV3VGFiKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaEFzc2lnbmVkVGlja2V0cyA9IChwYWdlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlclRpY2tldHMoeyBwYWdlLCBwZXJQYWdlOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFLCBmaWx0ZXIsIHNvcnQgfSlcbiAgICApO1xuXG4gIGNvbnN0IGZldGNoT3JkZXJUaWNrZXRzID0gKHBhZ2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyT3JkZXJzKHtcbiAgICAgICAgcGFnZSxcbiAgICAgICAgcGVyUGFnZTogb3JkZXJzUGVyUGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3Qgb3JkZXJUaWNrZXRzUHJvbWlzZXMgPSBkYXRhLm1hcCgob3JkZXIpID0+XG4gICAgICAgIGRpc3BhdGNoKFxuICAgICAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICAgICAgY3VycmVudF9wYWdlOiBGSVJTVF9QQUdFLFxuICAgICAgICAgICAgcGVyUGFnZTogdGlja2V0UGVyUGFnZSxcbiAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgIHNvcnRcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwob3JkZXJUaWNrZXRzUHJvbWlzZXMpO1xuICAgIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hQcm9taXNlcyA9IFtcbiAgICAgIGZldGNoQXNzaWduZWRUaWNrZXRzKEZJUlNUX1BBR0UpLFxuICAgICAgZmV0Y2hPcmRlclRpY2tldHMoRklSU1RfUEFHRSlcbiAgICBdO1xuICAgIFByb21pc2UuYWxsKGZldGNoUHJvbWlzZXMpLnRoZW4oKCkgPT4gc2V0VGlja2V0c0Z1bGx5TG9hZGVkKHRydWUpKTtcbiAgfSwgW2ZpbHRlciwgc29ydF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpY2tldHNGdWxseUxvYWRlZCkge1xuICAgICAgaWYgKG1lbWJlck9yZGVycz8ubGVuZ3RoID09PSAwICYmIHVzZXJUaWNrZXRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNldFRhYihUQUJTLlRJQ0tFVFMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldHNGdWxseUxvYWRlZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50YWJXcmFwcGVyfT5cbiAgICAgIDxUYWJzXG4gICAgICAgIHZhbHVlPXt0YWJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUYWJDaGFuZ2V9XG4gICAgICAgIHZhcmlhbnQ9e2lzTW9iaWxlID8gXCJmdWxsV2lkdGhcIiA6IFwic3RhbmRhcmRcIn1cbiAgICAgID5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcIm9yZGVycy50aXRsZVwiKX0gdmFsdWU9e1RBQlMuT1JERVJTfSAvPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpfSB2YWx1ZT17VEFCUy5USUNLRVRTfSAvPlxuICAgICAgPC9UYWJzPlxuICAgICAgPERpdmlkZXIgLz5cblxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgKFxuICAgICAgICA8VGFiV3JhcHBlciB0YWI9e1RBQlMuT1JERVJTfSBzZXRUYWI9e3NldFRhYn0+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0cyBmZXRjaERhdGE9e2ZldGNoT3JkZXJUaWNrZXRzfSAvPlxuICAgICAgICA8L1RhYldyYXBwZXI+XG4gICAgICApfVxuICAgICAge3RhYiA9PT0gVEFCUy5USUNLRVRTICYmIChcbiAgICAgICAgPFRhYldyYXBwZXIgdGFiPXtUQUJTLlRJQ0tFVFN9IHNldFRhYj17c2V0VGFifT5cbiAgICAgICAgICA8QXNzaWduZWRUb01lIGZldGNoRGF0YT17ZmV0Y2hBc3NpZ25lZFRpY2tldHN9IC8+XG4gICAgICAgIDwvVGFiV3JhcHBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRUYWJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCwgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIHJlc2V0RmlsdGVyLFxuICByZXNldEVycm9yLFxuICBjaGFuZ2VTb3J0LFxuICBjaGFuZ2VGaWx0ZXJcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi4vQ3VzdG9tVGhlbWVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL0xvYWRlclwiO1xuaW1wb3J0IEN1c3RvbURpYWxvZ0NvbnRleHQgZnJvbSBcIi4uL0N1c3RvbURpYWxvZy9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuLi9DdXN0b21EaWFsb2dcIjtcbmltcG9ydCBGaWx0ZXJzIGZyb20gXCIuLi9GaWx0ZXJzXCI7XG5pbXBvcnQgV2lkZ2V0VGFicyBmcm9tIFwiLi4vV2lkZ2V0VGFic1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21lc3NhZ2UsIHNldE1lc3NhZ2VdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFttZXNzYWdlQ2FsbGJhY2ssIHNldE1lc3NhZ2VDYWxsYmFja10gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3Qge1xuICAgIGxvYWRpbmcsXG4gICAgYXBpRXJyb3IsXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QXBpRXJyb3IgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRFcnJvcigpKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhcGlFcnJvcikge1xuICAgICAgc2V0TWVzc2FnZShhcGlFcnJvcik7XG4gICAgICBzZXRNZXNzYWdlQ2FsbGJhY2socmVzZXRBcGlFcnJvcik7XG4gICAgfVxuICB9LCBbYXBpRXJyb3JdKTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZUZpbHRlcihmaWx0ZXJWYWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU29ydCA9IChzb3J0VmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VTb3J0KHNvcnRWYWx1ZSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEN1c3RvbVRoZW1lPlxuICAgICAgPExvYWRlciBvcGVuPXtsb2FkaW5nfSAvPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIW1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHtcbiAgICAgICAgICBzZXRNZXNzYWdlKG51bGwpO1xuICAgICAgICAgIGlmIChtZXNzYWdlQ2FsbGJhY2spIG1lc3NhZ2VDYWxsYmFjaygpO1xuICAgICAgICB9fVxuICAgICAgICBib2R5PXttZXNzYWdlPy5ib2R5fVxuICAgICAgICB0aXRsZT17bWVzc2FnZT8udGl0bGV9XG4gICAgICAvPlxuICAgICAgPEZpbHRlcnNcbiAgICAgICAgb25GaWx0ZXI9e29uRmlsdGVyfVxuICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgb25TZWFyY2g9e29uRmlsdGVyfVxuICAgICAgICBvblJlc2V0PXtvblJlc2V0fVxuICAgICAgLz5cbiAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRzVGl0bGVUZXh0fT5cbiAgICAgICAgICB7ZmlsdGVyVmFsdWVzXG4gICAgICAgICAgICA/IHQoXCJsYWJlbHMuc2VhcmNoX3Jlc3VsdHNcIiwgeyBmaWx0ZXI6IGZpbHRlclZhbHVlcyB9KVxuICAgICAgICAgICAgOiB0KFwibGFiZWxzLnRpY2tldHNcIil9XG4gICAgICAgIDwvaDM+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsoc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrKX0+XG4gICAgICAgIDxXaWRnZXRUYWJzIC8+XG4gICAgICA8L0N1c3RvbURpYWxvZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9DdXN0b21UaGVtZT5cbiAgKTtcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShXaWRnZXRXcmFwcGVyKTtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBnZXRFeHRyYVF1ZXN0aW9ucywgZ2V0VGlja2V0IH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcblxuY29uc3QgdXNlR2V0VGlja2V0ID0gKHRpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW4pID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJ1bikge1xuICAgICAgaWYgKHRpY2tldElkICYmIG9yZGVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0VGlja2V0KHRpY2tldElkLCBvcmRlcklkKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvd25lcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuXSk7XG5cbiAgY29uc3QgeyBleHRyYVF1ZXN0aW9ucywgY3VycmVudFRpY2tldDogdGlja2V0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlXG4gICk7XG5cbiAgcmV0dXJuIHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlR2V0VGlja2V0O1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrLCBjb250YWluZXJJZCkgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgaXNTdWJtaXR0aW5nIH0gPSBmb3JtaWs7XG4gIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICBjb25zdCBlcnJvckNvdW50ID0gZXJyb3JBcnJheS5sZW5ndGg7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBzb3J0IGVsZW1lbnRzIGJ5IHBvc2l0aW9uXG4gICAgY29uc3QgZWxlbWVudHNTb3J0ZWQgPSBlcnJvckFycmF5XG4gICAgICAucmVkdWNlKChyZXN1bHQsIGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbbmFtZT0nJHtlcnJvcn0nXWApO1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY29uc3QgZWxSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmVzdWx0LnB1c2goeyBlbGVtZW50LCBlcnJvciwgdG9wOiBlbFJlY3QudG9wIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LCBbXSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRvcCAtIGIudG9wKTtcblxuICAgIGlmIChlbGVtZW50c1NvcnRlZC5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50XG4gICAgICAuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVySWQpXG4gICAgICAucXVlcnlTZWxlY3RvcihcIi5NdWlEcmF3ZXItcGFwZXJcIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gZWxlbWVudHNTb3J0ZWRbMF07XG5cbiAgICBpZiAoY29udGFpbmVyPy5jb250YWlucyh0YXJnZXQuZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gICAgICBjb25zdCBlbGVtT2ZmZXN0ID0gMTAwO1xuICAgICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxuICAgICAgICB0YXJnZXQudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIC0gZWxlbU9mZmVzdDtcblxuICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgcG9zaXRpb25cbiAgICAgIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgc2Nyb2xsVG9wLCBhbmltYXRpb25EdXJhdGlvbik7IC8vIDUwMG1zIGR1cmF0aW9uXG4gICAgfVxuICB9LCBbaXNTdWJtaXR0aW5nXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JvbGxUb0Vycm9yO1xuIiwiaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgIHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgIHRpY2tldD8ucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG4gIGNvbnN0IGNhblJlYXNzaWduID1cbiAgICAhaXNVbmFzc2lnbmVkICYmXG4gICAgdGlja2V0LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fcmVhc3NpZ24gJiZcbiAgICAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fcmVhc3NpZ24pO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGUsXG4gICAgY2FuUmVhc3NpZ25cbiAgfTtcbn07XG4iLCJpbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgaW5pdFJlYWN0STE4bmV4dCB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgTGFuZ3VhZ2VEZXRlY3RvciBmcm9tIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzb25cIjtcbmltcG9ydCBlcyBmcm9tIFwiLi9sb2NhbGVzL2VzLmpzb25cIjtcblxuLy8gaW1wb3J0IEJhY2tlbmQgZnJvbSAnaTE4bmV4dC1odHRwLWJhY2tlbmQnO1xuLy8gZG9uJ3Qgd2FudCB0byB1c2UgdGhpcz9cbi8vIGhhdmUgYSBsb29rIGF0IHRoZSBRdWljayBzdGFydCBndWlkZVxuLy8gZm9yIHBhc3NpbmcgaW4gbG5nIGFuZCB0cmFuc2xhdGlvbnMgb24gaW5pdFxuXG5pMThuXG4gIC8vIGxvYWQgdHJhbnNsYXRpb24gdXNpbmcgaHR0cCAtPiBzZWUgL3B1YmxpYy9sb2NhbGVzIChpLmUuIGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L3JlYWN0LWkxOG5leHQvdHJlZS9tYXN0ZXIvZXhhbXBsZS9yZWFjdC9wdWJsaWMvbG9jYWxlcylcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1odHRwLWJhY2tlbmRcbiAgLy8gd2FudCB5b3VyIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQgZnJvbSBhIHByb2Zlc3Npb25hbCBDRE4/ID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2NpemUvcmVhY3QtdHV0b3JpYWwjc3RlcC0yLS0tdXNlLXRoZS1sb2NpemUtY2RuXG4gIC8vIC51c2UoQmFja2VuZClcbiAgLy8gZGV0ZWN0IHVzZXIgbGFuZ3VhZ2VcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlRGV0ZWN0b3JcbiAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAvLyBwYXNzIHRoZSBpMThuIGluc3RhbmNlIHRvIHJlYWN0LWkxOG5leHQuXG4gIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgLy8gaW5pdCBpMThuZXh0XG4gIC8vIGZvciBhbGwgb3B0aW9ucyByZWFkOiBodHRwczovL3d3dy5pMThuZXh0LmNvbS9vdmVydmlldy9jb25maWd1cmF0aW9uLW9wdGlvbnNcbiAgLmluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBcImVuXCIsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHJlc291cmNlczoge1xuICAgICAgZW46IHsgdHJhbnNsYXRpb246IGVuIH0sXG4gICAgICBlczogeyB0cmFuc2xhdGlvbjogZXMgfVxuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBTVEFSVF9MT0FESU5HLFxuICBTVE9QX0xPQURJTkcsXG4gIFJFU0VUX0xPQURJTkdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfTVlfQVNTSUdORURfVElDS0VUUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVCxcbiAgQVNTSUdOX1RJQ0tFVCxcbiAgUkVTRVRfQVBJX0VSUk9SLFxuICBTRVRfQVBJX0VSUk9SLFxuICBSRVNFVF9USUNLRVQsXG4gIENIQU5HRV9GSUxURVIsXG4gIENIQU5HRV9TT1JULFxuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSLFxuICBGSUxURVJfVkFSX0RBVEUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBERUxFR0FURV9USUNLRVRcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSwgVEFCUyB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY2FsY3VsYXRlQWN0aXZlRmlsdGVycywgaGFzTG9hZGVkQWxsRGF0YSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIH0gZnJvbSBcIi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIGFjdGl2ZUZpbHRlcnNDb3VudDogMCxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMCxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMCxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDAsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDAsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IDAsXG4gIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IDAsXG4gIGFwaUVycm9yOiBudWxsXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFNUQVJUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogdHJ1ZSB9O1xuICAgIGNhc2UgU1RPUF9MT0FESU5HOlxuICAgIGNhc2UgUkVTRVRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiBmYWxzZSB9O1xuICAgIGNhc2UgUkVTRVRfQVBJX0VSUk9SOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiBudWxsIH07XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgICAgICAgYWN0aXZlRmlsdGVyc0NvdW50OiAwLFxuICAgICAgICBzb3J0OiB7fSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgICAgICAgbG9hZGluZzogdHJ1ZVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBDSEFOR0VfRklMVEVSOiB7XG4gICAgICBjb25zdCBuZXdGaWx0ZXJzID0geyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfTtcbiAgICAgIGNvbnN0IG5ld0FjdGl2ZUNvdW50ID0gY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhuZXdGaWx0ZXJzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH0sXG4gICAgICAgIGFjdGl2ZUZpbHRlcnNDb3VudDogbmV3QWN0aXZlQ291bnRcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgQ0hBTkdFX1NPUlQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzb3J0OiB7IC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUubWVtYmVyT3JkZXJzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgbWVtYmVyT3JkZXJzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUudXNlclRpY2tldHMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB1c2VyVGlja2V0cyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUudXNlclRpY2tldHMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXNlclRpY2tldHMsXG4gICAgICAgIHVzZXJfdGlja2V0c190b3RhbDogdG90YWwsXG4gICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgY29uc3QgbmV3T3JkZXJzID0gbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+IHtcbiAgICAgICAgaWYgKG1vLmlkICE9PSBkYXRhWzBdPy5vcmRlcl9pZCkgcmV0dXJuIG1vO1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID1cbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ubW8sXG4gICAgICAgICAgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyxcbiAgICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnNcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgICAgb3JkZXIubWVtYmVyVGlja2V0cyxcbiAgICAgICAgICB0aWNrZXREYXRhXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV3VXNlclRpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICBzdGF0ZS51c2VyVGlja2V0cyxcbiAgICAgICAgdGlja2V0RGF0YVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzLCB1c2VyVGlja2V0czogbmV3VXNlclRpY2tldHMgfTtcbiAgICB9XG4gICAgY2FzZSBERUxFR0FURV9USUNLRVQ6XG4gICAgY2FzZSBBU1NJR05fVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodCkgPT5cbiAgICAgICAgICB0LmlkID09PSB0aWNrZXREYXRhLmlkID8gdGlja2V0RGF0YSA6IHRcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuY29uc3QgZ2V0QWNjZXNzVG9rZW5Nb2NrID0gKCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJBY2Nlc3MgdG9rZW4gZXJyb3JcIik7XG4gIC8vIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuU2FmZWx5ID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpLmNhdGNoKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgICAgaW5pdExvZ091dCgpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhdXRoUHJvbWlzZVJlamVjdCA9IGFzeW5jICgpID0+XG4gIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkF1dGggVG9rZW4gZXJyb3JcIikpO1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gNTtcbmV4cG9ydCBjb25zdCBTVEVQX09ORSA9IDE7XG5leHBvcnQgY29uc3QgU1RFUF9UV08gPSAyO1xuZXhwb3J0IGNvbnN0IFNURVBfVEhSRUUgPSAzO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJTVEFUVVNfQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiU1RBVFVTX0lOQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUEVORElORyA9IFwiU1RBVFVTX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJTVEFUVVNfQ0FOQ0VMTEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0VSUk9SID0gXCJTVEFUVVNfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUFJPQ0VTU0lORyA9IFwiU1RBVFVTX1BST0NFU1NJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiU1RBVFVTX1VOQVNTSUdORURcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElORyA9IFwiU1RBVFVTX1JFRlVORF9QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCA9IFwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURUQgPSBcIlNUQVRVU19SRUZVTkRfUkVKRUNURURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMgPSBcIlJlcXVlc3RlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMgPSBcIkFwcHJvdmVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyA9IFwiUmVqZWN0ZWRcIjtcblxuZXhwb3J0IGNvbnN0IEpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyA9IDEwMDAwO1xuXG5leHBvcnQgY29uc3QgT05FX0lURU0gPSAxO1xuZXhwb3J0IGNvbnN0IFRXT19JVEVNID0gMjtcbmV4cG9ydCBjb25zdCBGSVZFX0lURU0gPSA1O1xuZXhwb3J0IGNvbnN0IFNJWF9JVEVNID0gNjtcblxuZXhwb3J0IGNvbnN0IFBST01JU0VfQkFUQ0hfTElNSVQgPSAxMDtcbmV4cG9ydCBjb25zdCBGSUZUWV9QRVJfUEFHRSA9IDUwO1xuXG5leHBvcnQgY29uc3QgRVJST1JfQ09ERVMgPSB7XG4gIDQwMTogNDAxLFxuICA0MDM6IDQwMSxcbiAgNDEyOiA0MDEsXG4gIDUwMDogNTAwXG59O1xuXG5leHBvcnQgY29uc3QgVEFCUyA9IHtcbiAgT1JERVJTOiBcIk9SREVSU1wiLFxuICBUSUNLRVRTOiBcIlRJQ0tFVFNcIlxufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUMsXG4gIEZJUlNUX1BBR0Vcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0KSByZXR1cm4ge307XG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cztcbiAgaWYgKCF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSBjdXJyZW50UGFnZVxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSB0b3RhbFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBoYXNMb2FkZWRBbGxEYXRhID0gKGN1cnJlbnRQYWdlLCBkYXRhLCB0b3RhbCkgPT4ge1xuICBsZXQgcmVzID0gZmFsc2U7XG4gIGNvbnN0IGRhdGFMZW5ndGggPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YS5sZW5ndGggOiAwO1xuICAvLyB3ZSBhbHJlYWR5IGxvYWRlZCBhbGwgIGRhdGEgKCBmaXJzdCBwYWdlIGlzIGFsd2F5cyByZWxvYWRlZCBpdCApXG4gIGlmIChjdXJyZW50UGFnZSA+IEZJUlNUX1BBR0UgJiYgZGF0YUxlbmd0aCA+IDAgJiYgZGF0YUxlbmd0aCA9PT0gdG90YWwpXG4gICAgcmVzID0gdHJ1ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgbGV0IGNvdW50ID0gMDtcbiAgT2JqZWN0LmVudHJpZXMoZmlsdGVycykuZm9yRWFjaCgoWywgdmFsdWVdKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBjb3VudCArPSB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUudHJpbSgpICE9PSBcIlwiKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgY291bnQrKztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY291bnQ7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oMSwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgcGFyc2VTdWJRdWVzdGlvbkFuc3dlciA9IChcbiAgcSxcbiAgYW5zd2VycyxcbiAgYW5zd2VyLFxuICBpbml0aWFsVmFsdWVzLFxuICBvbmx5UmVsZXZhbnRcbikgPT4ge1xuICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICBjb25zdCB7IHN1Yl9xdWVzdGlvbiwgYW5zd2VyX3ZhbHVlcyB9ID0gcnVsZTtcbiAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJfcXVlc3Rpb24ubmFtZSwgc3ViX3F1ZXN0aW9uLmlkKTtcbiAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBhbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShzdWJfcXVlc3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKFxuICAgICAgICBzdWJfcXVlc3Rpb24sXG4gICAgICAgIGFuc3dlcnMsXG4gICAgICAgIHN1YkFuc3dlcixcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25seVJlbGV2YW50XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIocSwgYW5zd2VycywgYW5zd2VyLCBpbml0aWFsVmFsdWVzLCBvbmx5UmVsZXZhbnQpO1xuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hID0gKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKSA9PiB7XG4gIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG5cbiAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgZmFsc2VcbiAgKVxuICAgIC5udWxsYWJsZSgpXG4gICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFuc1ZhbHVlTWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChcbiAgICAgICAgICBxdWVzdGlvbkFucyxcbiAgICAgICAgICBydWxlLmFuc3dlcl92YWx1ZXNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gY2hlY2sgaWYgcXVlc3Rpb24gaXMgdmlzaWJsZSB0byBhZGQgdmFsaWRhdGlvblxuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGAke3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYW5zVmFsdWVNYXRjaCAmJiBpc1Zpc2libGU7XG4gICAgICB9LFxuICAgICAgdGhlbjogKHNjaCkgPT4ge1xuICAgICAgICBpZiAoc3ViUXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCkge1xuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICAgICAgcmV0dXJuIHNjaC5taW4oMSkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBpZiAoc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHN1YlJ1bGUpID0+IHtcbiAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHN1YlF1ZXN0aW9uU2x1Zywgc3ViUnVsZSwgc2NoZW1hKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCB0eXBlLCBtYW5kYXRvcnksIHN1Yl9xdWVzdGlvbl9ydWxlcyB9ID0gcTtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcobmFtZSwgaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24odHlwZSwgbmFtZSwgbWFuZGF0b3J5KTtcblxuICAgIGlmIChzdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uID0gKHRpY2tldHMsIHRpY2tldCkgPT5cbiAgdGlja2V0cy5tYXAoKHQpID0+IHtcbiAgICBjb25zdCB0bXBUaWNrZXQgPSB7IC4uLnQgfTtcbiAgICAvLyB1cGRhdGUgYXR0ZW5kZWVcbiAgICBpZiAoXG4gICAgICB0Lm93bmVyPy5pZCA9PT0gdGlja2V0Lm93bmVyPy5pZCAmJlxuICAgICAgdC5vd25lcj8uc3RhdHVzICE9PSB0aWNrZXQub3duZXI/LnN0YXR1c1xuICAgICkge1xuICAgICAgdG1wVGlja2V0Lm93bmVyID0gdGlja2V0Lm93bmVyO1xuICAgIH1cbiAgICByZXR1cm4gdC5pZCA9PT0gdGlja2V0LmlkID8gdGlja2V0IDogdG1wVGlja2V0O1xuICB9KTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjb3B5SWNvbl9fX2xJM2VRXCI7XG52YXIgXzIgPSBcInJldmVyc2VkX19fekp6bURcIjtcbnZhciBfMyA9IFwidHJ1bmNhdGVkX19faldTblVcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX21WUGlSXCI7XG5leHBvcnQgeyBfMSBhcyBcImNvcHlJY29uXCIsIF8yIGFzIFwicmV2ZXJzZWRcIiwgXzMgYXMgXCJ0cnVuY2F0ZWRcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19teEVLV1wiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19PNHNTc1wiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19GM251S1wiO1xudmFyIF80ID0gXCJjbGVhbkJ1dHRvbl9fX3FxRHZVXCI7XG52YXIgXzUgPSBcImNvbnRhaW5lcl9fX1FlUVlfXCI7XG52YXIgXzYgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19aNDJtd1wiO1xudmFyIF83ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19UWjdrSlwiO1xudmFyIF84ID0gXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lcl9fX2tVblc5XCI7XG52YXIgXzkgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JycXA5XCI7XG52YXIgX2EgPSBcImZpbHRlckRhdGVMYWJlbF9fX0pnYmNzXCI7XG52YXIgX2IgPSBcImZpbHRlckljb25fX19paU96b1wiO1xudmFyIF9jID0gXCJmaWx0ZXJMYWJlbF9fX3NrWlA3XCI7XG52YXIgX2QgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19JRHJsU1wiO1xudmFyIF9lID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19rbUVFS1wiO1xudmFyIF9mID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fbmhOSnNcIjtcbnZhciBfMTAgPSBcImxhYmVsX19fTEFtZV9cIjtcbnZhciBfMTEgPSBcInNob3dGaWx0ZXJMaXN0X19fSVc0eEdcIjtcbnZhciBfMTIgPSBcInNvcnRDb250YWluZXJfX19zYjVCZFwiO1xudmFyIF8xMyA9IFwic29ydEljb25fX19jX1haaVwiO1xudmFyIF8xNCA9IFwic29ydExhYmVsX19fZFhpTXlcIjtcbnZhciBfMTUgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fUHAyWGdcIjtcbnZhciBfMTYgPSBcInRpdGxlV3JhcHBlcl9fX1A2bVB1XCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjbGVhbkJ1dHRvblwiLCBfNSBhcyBcImNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzcgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzggYXMgXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lclwiLCBfOSBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfYSBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfYiBhcyBcImZpbHRlckljb25cIiwgX2MgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfZCBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2UgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2YgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF8xMCBhcyBcImxhYmVsXCIsIF8xMSBhcyBcInNob3dGaWx0ZXJMaXN0XCIsIF8xMiBhcyBcInNvcnRDb250YWluZXJcIiwgXzEzIGFzIFwic29ydEljb25cIiwgXzE0IGFzIFwic29ydExhYmVsXCIsIF8xNSBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIsIF8xNiBhcyBcInRpdGxlV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJteU9yZGVyc1dyYXBwZXJfX19ISm15c1wiO1xudmFyIF8yID0gXCJub09yZGVyc0ZvdW5kX19fRFJ3Z29cIjtcbnZhciBfMyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX3RQVG1ZXCI7XG5leHBvcnQgeyBfMSBhcyBcIm15T3JkZXJzV3JhcHBlclwiLCBfMiBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzMgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJvZHlfX19BV2RpTFwiO1xudmFyIF8yID0gXCJpY29uV3JhcHBlcl9fX216ZXZLXCI7XG52YXIgXzMgPSBcInRpdGxlX19fTTI0Mm1cIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1Fzd0NQXCI7XG5leHBvcnQgeyBfMSBhcyBcImJvZHlcIiwgXzIgYXMgXCJpY29uV3JhcHBlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJhc3NpZ25Ub01lVGV4dF9fX1pQYWV4XCI7XG52YXIgXzMgPSBcImFzc2lnbmVkQnlUZXh0X19fYk5aN3pcIjtcbnZhciBfNCA9IFwiYXNzaWduZWRUb01lRGVzX19fR2pGa1ZcIjtcbnZhciBfNSA9IFwiYXNzaWduZWRUb01lV3JhcHBlcl9fX1V4YzJ5XCI7XG52YXIgXzYgPSBcImJhZGdlRmVhdHVyZV9fX0EyTE1WXCI7XG52YXIgXzcgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19JUUxOUFwiO1xudmFyIF84ID0gXCJjaGVja2JveF9fX1haSnBiXCI7XG52YXIgXzkgPSBcImRpc2FibGVkUmVmdW5kX19fU2ZmbDdcIjtcbnZhciBfYSA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfYiA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF9jID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgX2QgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgX2UgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgX2YgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgXzEwID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgXzExID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfMTIgPSBcInJlZnVuZE1vZGFsX19fRXFnUEZcIjtcbnZhciBfMTMgPSBcInNlbGVjdGVkX19fSFdHTmNcIjtcbnZhciBfMTQgPSBcInRhYkJ1dHRvbnNfX194VHlKQVwiO1xudmFyIF8xNSA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzE2ID0gXCJ0aWNrZXRGb290ZXJfX19qM2JkaVwiO1xudmFyIF8xNyA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzE4ID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzE5ID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMWEgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xYiA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzFjID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImFzc2lnblRvTWVUZXh0XCIsIF8zIGFzIFwiYXNzaWduZWRCeVRleHRcIiwgXzQgYXMgXCJhc3NpZ25lZFRvTWVEZXNcIiwgXzUgYXMgXCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIsIF82IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF83IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfOCBhcyBcImNoZWNrYm94XCIsIF85IGFzIFwiZGlzYWJsZWRSZWZ1bmRcIiwgX2EgYXMgXCJkaXNwbGF5X25vbmVcIiwgX2IgYXMgXCJsYWJlbFwiLCBfYyBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF9kIGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF9lIGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF9mIGFzIFwib3JkZXJXcmFwcGVyXCIsIF8xMCBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF8xMSBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgXzEyIGFzIFwicmVmdW5kTW9kYWxcIiwgXzEzIGFzIFwic2VsZWN0ZWRcIiwgXzE0IGFzIFwidGFiQnV0dG9uc1wiLCBfMTUgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xNiBhcyBcInRpY2tldEZvb3RlclwiLCBfMTcgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xOCBhcyBcInRpY2tldE5vXCIsIF8xOSBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzFhIGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMWIgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xYyBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIkNUQUJ1dHRvbldyYXBwZXJfX19LZ3E2Z1wiO1xudmFyIF8yID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMyA9IFwiYXBwcm92ZWRfX19zeEVKV1wiO1xudmFyIF80ID0gXCJiYWRnZUZlYXR1cmVfX190TGhFcFwiO1xudmFyIF81ID0gXCJiYWRnZUZlYXR1cmVXcmFwcGVyX19fXzlHYkRcIjtcbnZhciBfNiA9IFwiYnV0dG9uUGlsbF9fX0xlc2F6XCI7XG52YXIgXzcgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzggPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfOSA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgX2EgPSBcInBlbmRpbmdfX19hRWJXd1wiO1xudmFyIF9iID0gXCJyZWZ1bmREZXRhaWxfX19jUTI4VlwiO1xudmFyIF9jID0gXCJyZWZ1bmRFcnJvck1zZ19fX0FhaHpyXCI7XG52YXIgX2QgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF9lID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfZiA9IFwicmVmdW5kVGlja2V0QXR0ZW5kZWVfX19RWENqTVwiO1xudmFyIF8xMCA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfMTEgPSBcInJlamVjdGVkX19fTkpFNFpcIjtcbnZhciBfMTIgPSBcInN1YnRpdGxlX19fUHREZTJcIjtcbnZhciBfMTMgPSBcInN1Y2Nlc3NNc2dfX19IdE1zZVwiO1xudmFyIF8xNCA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF8xNSA9IFwidGlja2V0TGlzdF9fX2VEUVIzXCI7XG52YXIgXzE2ID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcIkNUQUJ1dHRvbldyYXBwZXJcIiwgXzIgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8zIGFzIFwiYXBwcm92ZWRcIiwgXzQgYXMgXCJiYWRnZUZlYXR1cmVcIiwgXzUgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF82IGFzIFwiYnV0dG9uUGlsbFwiLCBfNyBhcyBcImNhbmNlbEJ1dHRvblwiLCBfOCBhcyBcImNvbnRpbnVlQnV0dG9uXCIsIF85IGFzIFwiZGVsZXRlSWNvblwiLCBfYSBhcyBcInBlbmRpbmdcIiwgX2IgYXMgXCJyZWZ1bmREZXRhaWxcIiwgX2MgYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfZCBhcyBcInJlZnVuZFN1Y2Nlc3NmdWxcIiwgX2UgYXMgXCJyZWZ1bmRUZXh0XCIsIF9mIGFzIFwicmVmdW5kVGlja2V0QXR0ZW5kZWVcIiwgXzEwIGFzIFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyXCIsIF8xMSBhcyBcInJlamVjdGVkXCIsIF8xMiBhcyBcInN1YnRpdGxlXCIsIF8xMyBhcyBcInN1Y2Nlc3NNc2dcIiwgXzE0IGFzIFwic3VjY2Vzc01zZzJcIiwgXzE1IGFzIFwidGlja2V0TGlzdFwiLCBfMTYgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjbG9zZUJ0bl9fX3lTUUNPXCI7XG52YXIgXzIgPSBcImhlYWRlcl9fX2ZCWEc5XCI7XG52YXIgXzMgPSBcInRpdGxlX19fdHlaZVFcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1JPSkdzXCI7XG5leHBvcnQgeyBfMSBhcyBcImNsb3NlQnRuXCIsIF8yIGFzIFwiaGVhZGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1hucnBGXCI7XG52YXIgXzIgPSBcIndpZGdldEhlYWRlcl9fX2dnTHRNXCI7XG5leHBvcnQgeyBfMSBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMiBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJoZWFkZXJOb3RlX19fQWU1RUFcIjtcbnZhciBfMiA9IFwib3JkZXJOb19fX1ZPUFJ3XCI7XG52YXIgXzMgPSBcInB1cmNoYXNlZEJ5X19fTU5pSFRcIjtcbnZhciBfNCA9IFwicHVyY2hhc2VkQnlXcmFwcGVyX19fRGg2SFVcIjtcbnZhciBfNSA9IFwid3JhcHBlcl9fX21WdWlaXCI7XG5leHBvcnQgeyBfMSBhcyBcImhlYWRlck5vdGVcIiwgXzIgYXMgXCJvcmRlck5vXCIsIF8zIGFzIFwicHVyY2hhc2VkQnlcIiwgXzQgYXMgXCJwdXJjaGFzZWRCeVdyYXBwZXJcIiwgXzUgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnbk9wdGlvbnNXcmFwcGVyX19fb2pGXzdcIjtcbnZhciBfMiA9IFwidGlja2V0UmVhc3NpZ25Db250YWluZXJfX19nT3RhSlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25PcHRpb25zV3JhcHBlclwiLCBfMiBhcyBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF82ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfNyA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF84ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgXzkgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2EgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfYiA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfYyA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgX2UgPSBcInNlbnRfX19rNldLeFwiO1xudmFyIF9mID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMCA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMSA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTIgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNsb3NlQnRuXCIsIF82IGFzIFwiY29weUJ0blwiLCBfNyBhcyBcImRlbGVnYXRlZFRvXCIsIF84IGFzIFwiZG93bmxvYWRCdG5cIiwgXzkgYXMgXCJoZWFkZXJcIiwgX2EgYXMgXCJvcmRlck51bWJlclwiLCBfYiBhcyBcInFyQ29kZVwiLCBfYyBhcyBcInFyTm90ZVwiLCBfZCBhcyBcInNlbmRCdG5cIiwgX2UgYXMgXCJzZW50XCIsIF9mIGFzIFwic3RhdHVzXCIsIF8xMCBhcyBcInN1YnRpdGxlXCIsIF8xMSBhcyBcInRpY2tldERldGFpbENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aXRsZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJidXR0b25DYW5jZWxsZWRfX19FcmxEWlwiO1xudmFyIF8yID0gXCJidXR0b25Db21wbGV0ZV9fX2xsV2taXCI7XG52YXIgXzMgPSBcImJ1dHRvbkluY29tcGxldGVfX19Ub2xIZ1wiO1xudmFyIF80ID0gXCJidXR0b25QaWxsX19fenEydGNcIjtcbnZhciBfNSA9IFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkX19fcFd0MzBcIjtcbnZhciBfNiA9IFwiYnV0dG9uVW5hc3NpZ25lZF9fX1lEZDhYXCI7XG52YXIgXzcgPSBcInRpY2tldFN0YXR1c0NvbnRhaW5lcl9fX3FqNmZiXCI7XG5leHBvcnQgeyBfMSBhcyBcImJ1dHRvbkNhbmNlbGxlZFwiLCBfMiBhcyBcImJ1dHRvbkNvbXBsZXRlXCIsIF8zIGFzIFwiYnV0dG9uSW5jb21wbGV0ZVwiLCBfNCBhcyBcImJ1dHRvblBpbGxcIiwgXzUgYXMgXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRcIiwgXzYgYXMgXCJidXR0b25VbmFzc2lnbmVkXCIsIF83IGFzIFwidGlja2V0U3RhdHVzQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGl2ZV9fX3RMeVdaXCI7XG52YXIgXzIgPSBcInRhYk9wdGlvbl9fX0g0SDF1XCI7XG52YXIgXzMgPSBcInRhYldyYXBwZXJfX191MjFzR1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3RpdmVcIiwgXzIgYXMgXCJ0YWJPcHRpb25cIiwgXzMgYXMgXCJ0YWJXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldHNUaXRsZVRleHRfX19URFBtcFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ0aWNrZXRzVGl0bGVUZXh0XCIgfVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInAtbGltaXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcXItY29kZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ5dXBcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgUGVyc2lzdEdhdGUgfSBmcm9tIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmltcG9ydCBXaWRnZXRXcmFwcGVyIGZyb20gXCIuL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlclwiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBzdG9yZSwgcGVyc2lzdG9yIH0gPSB1c2VJbml0U3RvcmUoe1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgdXNlcixcbiAgICBhcGlCYXNlVXJsLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQmVmb3JlTGlmdCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IGZsdXNoID0gcGFyYW1zLmhhcyhcImZsdXNoU3RhdGVcIik7XG4gICAgaWYgKGZsdXNoKSBzdG9yZS5kaXNwYXRjaCh7IHR5cGU6IFJFU0VUX1NUQVRFLCBwYXlsb2FkOiBudWxsIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3RvcmUuZGlzcGF0Y2goc2V0UmVkdWNlclN0YXRlKHN1bW1pdCwgdXNlcikpO1xuICB9LCBbc3VtbWl0LCB1c2VyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UHJvdmlkZXIgc3RvcmU9e3N0b3JlfT5cbiAgICAgIDxQZXJzaXN0R2F0ZVxuICAgICAgICBvbkJlZm9yZUxpZnQ9e2hhbmRsZUJlZm9yZUxpZnR9XG4gICAgICAgIGxvYWRpbmc9e251bGx9XG4gICAgICAgIHBlcnNpc3Rvcj17cGVyc2lzdG9yfVxuICAgICAgPlxuICAgICAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICAgICAgPFdpZGdldFdyYXBwZXIgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJjcmVhdGVBY3Rpb24iLCJkZWxldGVSZXF1ZXN0IiwiZ2V0UmVxdWVzdCIsInB1dFJlcXVlc3QiLCJzdGFydExvYWRpbmciLCJzdG9wTG9hZGluZyIsInBMaW1pdCIsImdldElkVG9rZW4iLCJvYmplY3RUb1F1ZXJ5U3RyaW5nIiwiSWRUb2tlblZlcmlmaWVyIiwiaTE4biIsImF1dGhQcm9taXNlUmVqZWN0IiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiRVJST1JfQ09ERVMiLCJGSUZUWV9QRVJfUEFHRSIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiVEFCUyIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiUkVTRVRfQVBJX0VSUk9SIiwiU0VUX1NUQVRFIiwiU0VUX0FQSV9FUlJPUiIsIkNIQU5HRV9GSUxURVIiLCJDSEFOR0VfU09SVCIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfTVlfQVNTSUdORURfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRVNFVF9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiREVMRUdBVEVfVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRUaWNrZXQiLCJkaXNwYXRjaCIsInJlc2V0U3RhdGUiLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIiwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRSIsIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIiwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMiLCJGSUxURVJfVkFSX1BST01PQ09ERSIsIkZJTFRFUl9WQVJfRlJFRV9QQUlEIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJjaGFuZ2VGaWx0ZXIiLCJmaWx0ZXIiLCJjaGFuZ2VTb3J0Iiwic29ydCIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiY3VycmVudFRhYiIsInB1c2giLCJjb25jYXQiLCJsb3dlciIsInVwcGVyIiwibGVuZ3RoIiwiZmlsdGVyTmFtZSIsIk9SREVSUyIsImpvaW4iLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZXJyb3JIYW5kbGVyTm90aWZ5IiwicGF5bG9hZCIsImNhbGxiYWNrIiwiY3VzdG9tQXV0aEVycm9ySGFuZGxlciIsImVyciIsInJlcyIsImN1c3RvbUZldGNoRXJyb3JIYW5kbGVyIiwicmVzcG9uc2UiLCJjb2RlIiwic3RhdHVzIiwibXNnIiwidCIsIk9iamVjdCIsImVudHJpZXMiLCJlcnJvcnMiLCJmb3JFYWNoIiwiX3JlZiIsImtleSIsInZhbHVlIiwiTnVtYmVyIiwiaXNOYU4iLCJzdGF0dXNUZXh0IiwidGl0bGUiLCJodG1sIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYyIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiY2F0Y2giLCJlIiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmNCIsIl9yZWY1IiwidXNlclByb2ZpbGUiLCJQcm9taXNlIiwicmVqZWN0IiwiZmllbGRzIiwiZXhwYW5kIiwiVElDS0VUUyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwiZmluYWxseSIsIm5vcm1hbGl6ZVRpY2tldCIsImVudGl0eSIsIm5vcm1hbGl6ZWRFbnRpdHkiLCJfb2JqZWN0U3ByZWFkIiwiYXR0ZW5kZWVfY29tcGFueSIsImF0dGVuZGVlX2NvbXBhbnlfaWQiLCJyZWZyZXNoUHJvZmlsZSIsImRhdGEiLCJ0aWNrZXRPd25lciIsIl9yZWYxNCIsIl90aWNrZXRPd25lciRtYW5hZ2VyIiwidXBkYXRlUHJvZmlsZSIsImF0dGVuZGVlX2VtYWlsIiwiYXR0ZW5kZWVfZmlyc3RfbmFtZSIsImF0dGVuZGVlX2xhc3RfbmFtZSIsImhhc01hbmFnZXIiLCJtYW5hZ2VyIiwibWFuYWdlcl9pZCIsIml0c01lIiwicHJvZmlsZUNoYW5nZWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwibmV3UHJvZmlsZSIsInNhdmVUaWNrZXREZXRhaWxzIiwiYW5zd2VycyIsIl9yZWYxNSIsImlkVG9rZW4iLCJ2ZXJpZmllciIsImp3dCIsImRlY29kZSIsImNvbnNvbGUiLCJsb2ciLCJvd25lciIsImFzc2lnbkF0dGVuZGVlIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX3JlZjE2IiwicmVhc3NpZ25UaWNrZXQiLCJfcmVmMTciLCJkZWxlZ2F0ZVRpY2tldCIsIl9yZWYxOCIsInNhdmVFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxOSIsImdldFRpY2tldFBERiIsIl9yZWYyMCIsInF1ZXJ5U3RyaW5nIiwiYXBpVXJsIiwiZmV0Y2giLCJyZXNwb25zZVR5cGUiLCJoZWFkZXJzIiwib2siLCJibG9iIiwicGRmIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImhyZWYiLCJkb3dubG9hZCIsImRpc3BhdGNoRXZlbnQiLCJNb3VzZUV2ZW50IiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJ1c2VUcmFuc2xhdGlvbiIsIkJveCIsInVzZUZvcm1payIsIkV4dHJhUXVlc3Rpb25zRmllbGRzIiwiRm9ybUZvb3RlciIsInVzZVNjcm9sbFRvRXJyb3IiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiYnVpbGRWYWxpZGF0aW9uU2NoZW1hIiwicGFyc2VBbnN3ZXJzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkFzc2lnbkVRRm9ybSIsIm9uU3VibWl0Iiwib25DbG9zZSIsImZvcm1payIsImluaXRpYWxWYWx1ZXMiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwidmFsdWVzIiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImNoaWxkcmVuIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCIsImRpc2NsYWltZXIiLCJpc1JlcXVpcmVkIiwic2F2ZUxhYmVsIiwiY2FuY2VsTGFiZWwiLCJkaXNhYmxlZCIsImlzU3VibWl0dGluZyIsInByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsIkNvbnRlbnRDb3B5SWNvbiIsIlRvb2x0aXAiLCJNSUxMSVNFQ19UT19TRUMiLCJzdHlsZXMiLCJkZWZhdWx0V2lkdGgiLCJDb3B5VGV4dCIsInRleHQiLCJ0b29sdGlwVGV4dCIsImhpZGVDb3B5IiwidHJ1bmNhdGVkIiwicmV2ZXJzZWQiLCJ3aWR0aCIsInRvb2x0aXBUZXh0VG9Vc2UiLCJ0b29sdGlwIiwic2V0VG9vbHRpcCIsInVzZVN0YXRlIiwiY2xhc3NOYW1lcyIsImhhbmRsZUNvcHkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzZXRUaW1lb3V0IiwiY2xhc3NOYW1lIiwid3JhcHBlciIsInN0eWxlIiwiY29weUljb24iLCJvbkNsaWNrIiwic3RyaW5nIiwiYm9vbCIsIm51bWJlciIsImNyZWF0ZUNvbnRleHQiLCJkZWZhdWx0Q29udGV4dFZhbHVlIiwic2V0TWVzc2FnZSIsInNldE1lc3NhZ2VDYWxsYmFjayIsIkN1c3RvbURpYWxvZ0NvbnRleHQiLCJEaWFsb2ciLCJEaWFsb2dDb250ZW50IiwiRGlhbG9nQ29udGVudFRleHQiLCJEaWFsb2dUaXRsZSIsIkN1c3RvbURpYWxvZyIsIm9wZW4iLCJib2R5IiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJUaGVtZVByb3ZpZGVyIiwiY3JlYXRlVGhlbWUiLCJkYXJrQ29sb3IiLCJyb290IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsInNlY29uZGFyeSIsInR5cG9ncmFwaHkiLCJib2R5MSIsImZvbnRTaXplIiwiaDUiLCJmb250V2VpZ2h0IiwibWFyZ2luQm90dG9tIiwiaDYiLCJjb21wb25lbnRzIiwiTXVpRm9ybUhlbHBlclRleHQiLCJzdHlsZU92ZXJyaWRlcyIsIk11aUJ1dHRvbiIsImxpbmVIZWlnaHQiLCJNdWlUYWIiLCJjb2xvciIsIk11aVRhYnMiLCJpbmRpY2F0b3IiLCJiYWNrZ3JvdW5kQ29sb3IiLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJDaGVja2JveCIsIkZvcm1Db250cm9sIiwiRm9ybUNvbnRyb2xMYWJlbCIsIkZvcm1Hcm91cCIsIkZvcm1IZWxwZXJUZXh0IiwiRm9ybUxhYmVsIiwiZ2V0TGFiZWwiLCJ0b1NsdWciLCJDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIiwiX3F1ZXN0aW9uJHZhbHVlcyIsInF1ZXN0aW9uIiwicXVlc3Rpb25DbGFzc05hbWUiLCJpc0Rpc2FibGVkIiwib25DaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwiZXJyb3IiLCJoZWxwZXJUZXh0IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwicmVxdWlyZWQiLCJmdWxsV2lkdGgiLCJtYXJnaW4iLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwidGFyZ2V0IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsInN4IiwiYWxpZ25JdGVtcyIsIm1hcmdpblRvcCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dEZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJjaGVja1Zpc2liaWxpdHkiLCJydWxlUmVzdWx0IiwidmlzaWJpbGl0eSIsInZpc2liaWxpdHlfY29uZGl0aW9uIiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsInNvbWUiLCJnZXRUeXBlSW5pdGlhbFZhbHVlIiwidHlwZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwicXVlc3Rpb25faWQiLCJwYXJzZUludCIsInBvcCIsIlF1ZXN0aW9uVHlwZV9UZXh0IiwiUXVlc3Rpb25UeXBlX1RleHRBcmVhIiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uIiwiZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCIsInF1ZXN0aW9uVHlwZSIsIkZyYWdtZW50IiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJyZW5kZXJSdWxlIiwiaXNWaXNpYmxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkNhcmRIZWFkZXIiLCJJY29uQnV0dG9uIiwiQ29sbGFwc2UiLCJDYXJkQ29udGVudCIsIkV4cGFuZE1vcmVJY29uIiwiQXNzaWduZWRGaWx0ZXIiLCJvbkZpbHRlciIsImZpbHRlclZhbHVlcyIsInN0YXRlIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJhc3NpZ25lZFZhbHVlcyIsImhhbmRsZUZpbHRlckNoYW5nZSIsIm5ld0ZpbHRlciIsInRpdGxlV3JhcHBlciIsImFjdGlvbiIsImRpc2FibGVSaXBwbGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaW4iLCJ0aW1lb3V0IiwidW5tb3VudE9uRXhpdCIsInB5IiwicGIiLCJhc3NpZ25lZCIsInVzZUVmZmVjdCIsIkJhZGdlRmVhdHVyZUZpbHRlciIsImJhZGdlX2ZlYXR1cmVzX3R5cGVzIiwibmV3RmlsdGVycyIsImYiLCJiZiIsInVzZVJlZiIsIlN0YWNrIiwiRmlsdGVyTGlzdEljb24iLCJCYWRnZSIsIkJ1dHRvbiIsIkNhcmQiLCJEaXZpZGVyIiwiUGFwZXIiLCJjb25uZWN0IiwiVGlja2V0VHlwZUZpbHRlciIsIlN0YXR1c0ZpbHRlciIsIkZyZWVQYWlkRmlsdGVyIiwiUHJvbW9Db2RlRmlsdGVyIiwiRmlsdGVyIiwib25SZXNldCIsImFjdGl2ZUZpbHRlcnNDb3VudCIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwicHQiLCJiYWRnZUNvbnRlbnQiLCJtciIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJlbGV2YXRpb24iLCJmaWx0ZXJDaGVja2JveENvbnRhaW5lciIsInZhcmlhbnQiLCJjbGVhbkJ1dHRvbiIsIm1hcFN0YXRlVG9Qcm9wcyIsInByb21vQ29kZSIsInNldFByb21vQ29kZSIsImRlYm91bmNlVGltZXIiLCJERUJPVU5DRV9WQUxVRSIsIm5ld1Byb21vQ29kZSIsImNsZWFyVGltZW91dCIsInBsYWNlaG9sZGVyIiwic3R5bGVkIiwiU2VhcmNoSWNvbiIsIkNsb3NlSWNvbiIsIklucHV0QmFzZSIsIlNlYXJjaENvbnRhaW5lciIsInBvc2l0aW9uIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJzaG93Q2xvc2VCdG4iLCJvbktleURvd24iLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwiaW5wdXRQcm9wcyIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJ0aWNrZXRfdHlwZXMiLCJHcmlkIiwiRmlsdGVycyIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInNhdmVCdG4iLCJFcnJvckljb24iLCJFcnJvckxhYmVsIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJCYWNrZHJvcCIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJMb2FkZXIiLCJkcmF3ZXIiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJPTkVfUEFHRV9ORVhUIiwiTXlPcmRlcnNUaWNrZXRzIiwiZmV0Y2hEYXRhIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19sYXN0X3BhZ2UiLCJteU9yZGVyc1dyYXBwZXIiLCJkYXRhTGVuZ3RoIiwibmV4dCIsImhhc01vcmUiLCJzY3JvbGxUaHJlc2hvbGQiLCJUaWNrZXRzSWNvbiIsInZpZXdCb3giLCJmaWxsIiwieG1sbnMiLCJkIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlRGFzaGFycmF5IiwiVHlwb2dyYXBoeSIsIl9GcmFnbWVudCIsIk5vVGlja2V0c0ZvdW5kIiwicGFnZVZpZXciLCJsb2FkaW5nIiwiZ2V0Q29udGVudCIsIm1haWx0b1RhZyIsInN1cHBvcnRfZW1haWwiLCJidXR0b25MYWJlbCIsImljb25XcmFwcGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzaGFwZSIsInVzZU5vdyIsInRpY2tldHNSZWZ1bmRhYmxlIiwidXNlU3VtbWl0RGV0YWlscyIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsImlzU3RhcnRlZCIsIm5vdyIsImlzSW5SZWZ1bmRhYmxlUGVyaW9kIiwicmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlIiwiYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQiLCJpc1JlZnVuZGFibGUiLCJoYXNSZWZ1bmRSZXF1ZXN0cyIsInJvbGUiLCJvcmRlclN1bW1hcnlCdXR0b24iLCJyZWZ1bmREaXNhYmxlZCIsInJlbCIsImFycmF5T2YiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwibWVtYmVyVGlja2V0cyIsIk9yZGVyTGlzdFRpY2tldHMiLCJBc3NpZ25Ub01lIiwidXNlclRpY2tldHMiLCJ1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIiwidXNlcl90aWNrZXRzX2xhc3RfcGFnZSIsIm9yZGVyVGlja2V0Q29udGFpbmVyIiwiYXNzaWduZWRUb01lV3JhcHBlciIsInRpY2tldExpc3RDb250YWluZXIiLCJpc1JlZnVuZE1vZGFsIiwiaXNTZWxlY3RlZFRvUmVmdW5kIiwic2VsZWN0VG9SZWZ1bmQiLCJpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQiLCJBc3NpZ25lZFRvIiwiRXh0ZXJuYWxBc3NpZ25lZFRvIiwiTWFuYWdlRm9yIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJfdGlja2V0JG93bmVyMyIsImlzVW5hc3NpZ25lZCIsImlzX2FjdGl2ZSIsImlzRGVsZWdhdGVkIiwidGlja2V0T3duZXJFbWFpbCIsIl90aWNrZXQkb3JkZXIiLCJfdGlja2V0JG9yZGVyMiIsIl90aWNrZXQkb3duZXI0IiwiX3RpY2tldCRvd25lcjUiLCJhc3NpZ25lZEJ5VGV4dCIsIm93bmVyX2ZpcnN0X25hbWUiLCJvd25lcl9sYXN0X25hbWUiLCJQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQiLCJPcmRlckxpc3RJdGVtIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJfb3JkZXIkbWVtYmVyVGlja2V0czIiLCJvblBhZ2luYXRlQ2xpY2siLCJ0aWNrZXRzVG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5Iiwic2xpY2VkVGlja2V0cyIsInNsaWNlIiwib25WaWV3TW9yZSIsInRpY2tldHNfdG90YWwiLCJvblZpZXdMZXNzIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwidXNlRGlzcGF0Y2giLCJUaWNrZXRTdGF0dXMiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0QXNzaWduIiwibW9kYWxWaWV3cyIsImRldGFpbCIsInJlYXNzaWduIiwiYXNzaWduIiwiVGlja2V0Q1RBcyIsImlzSW5jb21wbGV0ZSIsImlzUmVhc3NpZ25hYmxlIiwib25PcGVuQ2xpY2siLCJhc3NpZ25UaWNrZXRCdXR0b24iLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwicmVhc3NpZ25CdXR0b24iLCJfdGlja2V0JHRpY2tldF90eXBlIiwiX3RpY2tldCRiYWRnZSIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiYmFkZ2UiLCJmZWF0dXJlcyIsImJhZGdlRmVhdHVyZSIsInNyYyIsImltYWdlIiwiYWx0IiwidGlja2V0Tm8iLCJ0aWNrZXRGb290ZXIiLCJ0aWNrZXRBY3Rpb25CdXR0b25zIiwib3duZXJJZCIsInRvdGFsX3JlZnVuZGVkX2Ftb3VudCIsIlRhYnMiLCJUYWIiLCJSZWZ1bmRSZXF1ZXN0c01vZGFsIiwiUmVmdW5kRGV0YWlscyIsIlRhYlBhbmVsIiwicHJvcHMiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsIl8iLCJzZXRUaWNrZXRzVG9SZWZ1bmQiLCJzZXRTdWJtaXRSZXF1ZXN0IiwicmVmdW5kRGV0YWlsc09wZW4iLCJzZXRSZWZ1bmREZXRhaWxzT3BlbiIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjbG9zZVN1Ym1pdFJlcXVlc3QiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJib3JkZXJDb2xvciIsInRhYkJ1dHRvbnMiLCJtZCIsIm9uUmVmdW5kU3VjY2Vzc0Nsb3NlIiwib25DbG9zZVNsaWRlciIsInVzZVRoZW1lIiwidXNlTWVkaWFRdWVyeSIsImdldEZvcm1hdHRlZERhdGUiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJicmVha3BvaW50cyIsImRvd24iLCJpc01vYmlsZVZpZXdhYmxlIiwic2V0TW9iaWxlVmlld2FibGUiLCJ0aWNrZXRzX3BhZ2VfY3VycmVudCIsImxnIiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwicm93U3BhY2luZyIsImNvbHVtblNwYWNpbmciLCJzbSIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ1c2VNZW1vIiwiUmlnaHREcmF3ZXIiLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIiwicmVxdWVzdGVkVGlja2V0cyIsImNsb3NlU2xpZGVyIiwicmVmdW5kRGV0YWlscyIsInRvb2x0aXBDbGFzc2VzIiwiSW5mb0ljb24iLCJtb21lbnQiLCJSZWZ1bmRTdGF0dXMiLCJHUklEXzgiLCJHUklEXzEyIiwiUEFERElOR18yIiwiYXBwcm92ZWRSZWZ1bmRzIiwicmVmdW5kIiwicmVmdW5kZWRUYXhlc1N1bW1hdG9yeSIsInJlZnVuZGVkX3RheGVzIiwicnQiLCJ0YXhJZCIsInRheCIsInRvdGFsUmVmdW5kZWRUYXhBbW91bnQiLCJyZWZ1bmRlZF9hbW91bnQiLCJIdG1sVG9vbHRpcCIsImNsYXNzZXMiLCJwb3BwZXIiLCJtYXhXaWR0aCIsImJvcmRlciIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsInJlZnVuZERldGFpbCIsInJlZnVuZFRpY2tldEF0dGVuZGVlIiwiYWN0aW9uX2RhdGUiLCJmb3JtYXQiLCJDaGlwIiwiZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IiLCJzdGF0dXNDb2xvciIsImJ1dHRvblBpbGwiLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIkNoZWNrQ2lyY2xlSWNvbiIsIlNURVBfT05FIiwiU1RFUF9USFJFRSIsIlNURVBfVFdPIiwic3RlcCIsInNldFN0ZXAiLCJlcnJvck1zZyIsInNldEVycm9yTXNnIiwicmVmdW5kU3VjY2VzcyIsInNldFJlZnVuZFN1Y2Nlc3MiLCJjb25maXJtUmVmdW5kIiwiZ29CYWNrVG9SZWZ1bmQiLCJyZWZ1bmRUaWNrZXRzIiwicmVmdW5kU3RlcE9uZSIsInN1YnRpdGxlIiwidGlja2V0TGlzdCIsImFjdGlvbkJ1dHRvbnMiLCJjYW5jZWxCdXR0b24iLCJjb250aW51ZUJ1dHRvbiIsInJlZnVuZFN0ZXBUd28iLCJyZWZ1bmRFcnJvck1zZyIsIkNUQUJ1dHRvbldyYXBwZXIiLCJyZWZ1bmRTdGVwVGhyZWUiLCJyZWZ1bmRTdWNjZXNzZnVsIiwic3VjY2Vzc01zZyIsInN1Y2Nlc3NNc2cyIiwicmVuZGVyU3RlcHMiLCJpbmplY3RGaXJzdCIsIkRyYXdlciIsIkNsb3NlIiwiYW5jaG9yIiwiTW9kYWxQcm9wcyIsImtlZXBNb3VudGVkIiwiaGVhZGVyIiwiY2xvc2VCdG4iLCJmbG9hdCIsImd1dHRlckJvdHRvbSIsIm9uZU9mVHlwZSIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJTdW1taXRIZWFkZXIiLCJ3aWRnZXRIZWFkZXIiLCJzdW1taXRUaXRsZURhdGUiLCJUYWJXcmFwcGVyIiwidGFiIiwic2V0VGFiIiwiaGFzVGlja2V0cyIsImlzRmlsdGVyZWQiLCJjbGVhckZpbHRlcnMiLCJnZXRQYWdlVmlldyIsImdldE9uQ2xpY2siLCJ0YWJUb0xpbmsiLCJ5dXAiLCJEZWxlZ2F0ZUZvcm0iLCJkZWxlZ2F0ZV9maXJzdF9uYW1lIiwiZGVsZWdhdGVfbGFzdF9uYW1lIiwiZGVsZWdhdGVfZW1haWwiLCJyZXNldEZvcm0iLCJoYW5kbGVDYW5jZWwiLCJMaW5rIiwiQXNzaWduSGVhZGVyIiwiaW5Qcm9ncmVzcyIsInVzZXJFbWFpbCIsImFzc2lnbmVkVG9Zb3UiLCJnZXRTZWNvbmRhcnlUaXRsZSIsImdldEhlYWRlck5vdGUiLCJ0cmFuc0tleSIsImNvbXBvbmVudCIsInB1cmNoYXNlZEJ5V3JhcHBlciIsInB1cmNoYXNlZEJ5Iiwib3duZXJfZW1haWwiLCJvcmRlck5vIiwiaGVhZGVyTm90ZSIsIlJlYXNzaWduSGVhZGVyIiwiYWxsb3dzRGVsZWdhdGUiLCJSZWFzc2lnbkZvcm0iLCJuZXdfYXR0ZW5kZWVfZW1haWwiLCJwZXJzb25hbF9tZXNzYWdlIiwibXVsdGlsaW5lIiwibWluUm93cyIsInVzZUdldFRpY2tldCIsInNhdmVNZXNzYWdlIiwic2V0U2F2ZU1lc3NhZ2UiLCJhc3NpZ25PcHRpb24iLCJzZXRBc3NpZ25PcHRpb24iLCJhc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJpc0Fzc2lnbmVkVG9NZSIsIm9uQXNzaWduIiwib25EZWxlZ2F0ZSIsIm9uQ2xvc2VFUUZvcm0iLCJvbkNsb3NlU2F2ZU1lc3NhZ2UiLCJvblNhdmVFUSIsImRlc2NyaXB0aW9uIiwicmVzb2x2ZSIsIkhlYWRlciIsInRpY2tldFJlYXNzaWduQ29udGFpbmVyIiwiYXNzaWduT3B0aW9uc1dyYXBwZXIiLCJteSIsIkF1dG9jb21wbGV0ZSIsInF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIiwiQ29tcGFueUZpZWxkIiwic3VtbWl0SWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwic2V0RmllbGRUb3VjaGVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJyZW5kZXJJbnB1dCIsInJlbmRlck9wdGlvbiIsIm9wdGlvblByb3BzIiwiVGlja2V0T3duZXJGaWVsZHMiLCJUaWNrZXRGb3JtIiwiY2FuRWRpdCIsInJlZHVjZSIsImFkZGl0aW9uYWxEZXRhaWxzIiwiaW5mb05vdGUiLCJRUkNvZGUiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJUV09fSVRFTSIsIl90aWNrZXQkb3JkZXIzIiwic2VudENvbmZpcm1hdGlvbiIsInNldFNlbnRDb25maXJtYXRpb24iLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsImlzQ29tcGxldGUiLCJvblNhdmUiLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwicXJDb2RlIiwicXJfY29kZSIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsIkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWQiLCJidXR0b25JbmNvbXBsZXRlIiwiYnV0dG9uVW5hc3NpZ25lZCIsImJ1dHRvbkNvbXBsZXRlIiwiYnV0dG9uQ2FuY2VsbGVkIiwiQXNzaWduZWRUb01lIiwiV2lkZ2V0VGFicyIsInRpY2tldHNGdWxseUxvYWRlZCIsInNldFRpY2tldHNGdWxseUxvYWRlZCIsIm9yZGVyc19wZXJfcGFnZSIsIm9yZGVyc1BlclBhZ2UiLCJ0aWNrZXRQZXJQYWdlIiwiaGFuZGxlVGFiQ2hhbmdlIiwibmV3VGFiIiwiZmV0Y2hBc3NpZ25lZFRpY2tldHMiLCJmZXRjaE9yZGVyVGlja2V0cyIsIm9yZGVyVGlja2V0c1Byb21pc2VzIiwiY3VycmVudF9wYWdlIiwiZmV0Y2hQcm9taXNlcyIsInRhYldyYXBwZXIiLCJXaWRnZXRXcmFwcGVyIiwibWVzc2FnZUNhbGxiYWNrIiwiYXBpRXJyb3IiLCJyZXNldEFwaUVycm9yIiwiZmlsdGVyVmFsdWUiLCJzb3J0VmFsdWUiLCJ0aWNrZXRzVGl0bGVUZXh0IiwiUHJvdmlkZXIiLCJydW4iLCJjdXJyZW50VGlja2V0Iiwic21vb3RoU2Nyb2xsVG8iLCJ0YXJnZXRTY3JvbGxUb3AiLCJkdXJhdGlvbiIsInN0YXJ0U2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiZGlzdGFuY2UiLCJzdGFydFRpbWUiLCJhbmltYXRpb25TdGVwIiwidGltZXN0YW1wIiwiZWxhcHNlZCIsInByb2dyZXNzIiwiTWF0aCIsIm1pbiIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjb250YWluZXJJZCIsImlzVmFsaWQiLCJlcnJvckFycmF5IiwiZXJyb3JDb3VudCIsImVsZW1lbnRzU29ydGVkIiwicmVzdWx0IiwiZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhIiwiYiIsImdldEVsZW1lbnRCeUlkIiwiY29udGFpbmVyUmVjdCIsImVsZW1PZmZlc3QiLCJhbmltYXRpb25EdXJhdGlvbiIsImlzVGlja2V0UmVmdW5kYWJsZSIsIlNUQVRVU19DT01QTEVURSIsIlNUQVRVU19JTkNPTVBMRVRFIiwiU1RBVFVTX0NBTkNFTExFRCIsIlNUQVRVU19VTkFTU0lHTkVEIiwiX3RpY2tldCRwcm9tb19jb2RlIiwiX3RpY2tldCR0aWNrZXRfdHlwZTIiLCJfdGlja2V0JHByb21vX2NvZGUyIiwiZ2V0U3RhdHVzIiwiYWxsb3dzX3RvX2RlbGVnYXRlIiwicHJvbW9fY29kZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImhhc0xvYWRlZEFsbERhdGEiLCJ1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIiwiREVGQVVMVF9GSUxURVJfU1RBVEUiLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImN1cnJlbnRfdGFiIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJ1c2VyX3RpY2tldHNfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwibmV3QWN0aXZlQ291bnQiLCJ0b3RhbCIsImxhc3RfcGFnZSIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsIm5ld09yZGVycyIsIm1vIiwiX2RhdGEkMiIsIm5ld1RpY2tldHMiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidXBkYXRlZE9yZGVyIiwidGlja2V0RGF0YSIsIm5ld1VzZXJUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImdldEFjY2Vzc1Rva2VuTW9jayIsIkVycm9yIiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiYW1vdW50IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJEYXRlIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY291bnQiLCJ0cmltIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImZlYXR1cmUiLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwibmV0X3NlbGxpbmdfY29zdCIsInJyIiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMiIsImFsbFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczUiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczYiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM3IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzOCIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsInBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIiLCJvbmx5UmVsZXZhbnQiLCJzdWJRdWVzdGlvblNsdWciLCJzdWJBbnN3ZXIiLCJtYXRjaCIsImluY2x1ZGVBdHRlbmRlZUluZm8iLCJpbmNsdWRlRGlzY2xhaW1lciIsImJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hIiwiX3N1YlF1ZXN0aW9uJHN1Yl9xdWVzIiwic3ViUXVlc3Rpb24iLCJudWxsYWJsZSIsIndoZW4iLCJpcyIsInF1ZXN0aW9uQW5zIiwiYW5zVmFsdWVNYXRjaCIsInNjaCIsInN1YlJ1bGUiLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl90JG93bmVyIiwiX3Qkb3duZXIyIiwiX3RpY2tldCRvd25lcjYiLCJ0bXBUaWNrZXQiLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==