@nurihaus/web-design-system 1.1.28 → 1.1.30

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
@@ -329,6 +329,64 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.base-button {
329
329
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
330
330
 
331
331
 
332
+ /***/ }),
333
+
334
+ /***/ 166:
335
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
336
+
337
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
338
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
339
+ /* harmony export */ });
340
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(354);
341
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
342
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(314);
343
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
344
+ // Imports
345
+
346
+
347
+ var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
348
+ // Module
349
+ ___CSS_LOADER_EXPORT___.push([module.id, `.base-check-box {
350
+ &.label {
351
+ font-size: var(--font-size-sm);
352
+ font-weight: var(--font-weight-medium);
353
+ color: var(--color-primary-black);
354
+ }
355
+ }
356
+
357
+ .check-box {
358
+ display: flex;
359
+ align-items: center;
360
+ gap: 10px;
361
+ }
362
+
363
+ .check-box-input {
364
+ display: flex;
365
+ align-items: center;
366
+ justify-content: center;
367
+ width: 24px;
368
+ height: 24px;
369
+ border-radius: 4px;
370
+ border: 1.5px solid var(--color-point-purple-39);
371
+
372
+ &:where(.unchecked) {
373
+ background-color: #fff;
374
+ }
375
+
376
+ &:where(.checked) {
377
+ background-color: var(--color-point-purple-39);
378
+ }
379
+
380
+ &:where(.disabled) {
381
+ border: none;
382
+ background-color: var(--color-primary-gray-d4);
383
+ }
384
+ }
385
+ `, "",{"version":3,"sources":["webpack://./components/check-box/check-box-style.css"],"names":[],"mappings":"AAAA;EACE;IACE,8BAA8B;IAC9B,sCAAsC;IACtC,iCAAiC;EACnC;AACF;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,SAAS;AACX;;AAEA;EACE,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,WAAW;EACX,YAAY;EACZ,kBAAkB;EAClB,gDAAgD;;EAEhD;IACE,sBAAsB;EACxB;;EAEA;IACE,8CAA8C;EAChD;;EAEA;IACE,YAAY;IACZ,8CAA8C;EAChD;AACF","sourcesContent":[".base-check-box {\n &.label {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--color-primary-black);\n }\n}\n\n.check-box {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.check-box-input {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n border-radius: 4px;\n border: 1.5px solid var(--color-point-purple-39);\n\n &:where(.unchecked) {\n background-color: #fff;\n }\n\n &:where(.checked) {\n background-color: var(--color-point-purple-39);\n }\n\n &:where(.disabled) {\n border: none;\n background-color: var(--color-primary-gray-d4);\n }\n}\n"],"sourceRoot":""}]);
386
+ // Exports
387
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
388
+
389
+
332
390
  /***/ }),
333
391
 
334
392
  /***/ 174:
@@ -401,6 +459,55 @@ ___CSS_LOADER_EXPORT___.push([module.id, `.component-loading-container {
401
459
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
402
460
 
403
461
 
462
+ /***/ }),
463
+
464
+ /***/ 850:
465
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
466
+
467
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
468
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
469
+ /* harmony export */ });
470
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(354);
471
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
472
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(314);
473
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
474
+ // Imports
475
+
476
+
477
+ var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
478
+ // Module
479
+ ___CSS_LOADER_EXPORT___.push([module.id, `.radio {
480
+ &:where(.radio-group) {
481
+ display: flex;
482
+ flex-direction: column;
483
+ gap: 16px;
484
+ }
485
+ &:where(.radio-button) {
486
+ display: flex;
487
+ align-items: center;
488
+ justify-content: center;
489
+ width: 18px;
490
+ height: 18px;
491
+ border-radius: 50%;
492
+ background-color: var(--color-primary-gray-e4);
493
+ }
494
+ &:where(.radio-indicator) {
495
+ width: 8px;
496
+ height: 8px;
497
+ border-radius: 50%;
498
+ background-color: var(--color-point-purple-39);
499
+ }
500
+ &:where(.radio-label) {
501
+ font-size: var(--font-size-sm);
502
+ font-weight: var(--font-weight-medium);
503
+ color: var(--color-primary-black);
504
+ }
505
+ }
506
+ `, "",{"version":3,"sources":["webpack://./components/radio/radio-style.css"],"names":[],"mappings":"AAAA;EACE;IACE,aAAa;IACb,sBAAsB;IACtB,SAAS;EACX;EACA;IACE,aAAa;IACb,mBAAmB;IACnB,uBAAuB;IACvB,WAAW;IACX,YAAY;IACZ,kBAAkB;IAClB,8CAA8C;EAChD;EACA;IACE,UAAU;IACV,WAAW;IACX,kBAAkB;IAClB,8CAA8C;EAChD;EACA;IACE,8BAA8B;IAC9B,sCAAsC;IACtC,iCAAiC;EACnC;AACF","sourcesContent":[".radio {\n &:where(.radio-group) {\n display: flex;\n flex-direction: column;\n gap: 16px;\n }\n &:where(.radio-button) {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background-color: var(--color-primary-gray-e4);\n }\n &:where(.radio-indicator) {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background-color: var(--color-point-purple-39);\n }\n &:where(.radio-label) {\n font-size: var(--font-size-sm);\n font-weight: var(--font-weight-medium);\n color: var(--color-primary-black);\n }\n}\n"],"sourceRoot":""}]);
507
+ // Exports
508
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
509
+
510
+
404
511
  /***/ }),
405
512
 
406
513
  /***/ 406:
@@ -1114,14 +1221,20 @@ __webpack_require__.r(__webpack_exports__);
1114
1221
  __webpack_require__.d(__webpack_exports__, {
1115
1222
  Avatar: () => (/* reexport */ avatar),
1116
1223
  CTAButton: () => (/* reexport */ cta_button),
1224
+ Checkbox: () => (/* reexport */ check_box),
1117
1225
  DataTable: () => (/* reexport */ data_table),
1118
1226
  IconTextBadge: () => (/* reexport */ icon_text_badge),
1119
1227
  IconTextOptionBadge: () => (/* reexport */ icon_text_option_badge),
1120
1228
  OptionBadge: () => (/* reexport */ option_badge),
1229
+ Radio: () => (/* reexport */ radio_radio),
1121
1230
  TextField: () => (/* reexport */ text_field),
1122
1231
  TextFieldWithError: () => (/* reexport */ text_field_with_error)
1123
1232
  });
1124
1233
 
1234
+ // NAMESPACE OBJECT: ./assets/icons/check.svg
1235
+ var check_namespaceObject = {};
1236
+ __webpack_require__.r(check_namespaceObject);
1237
+
1125
1238
  // EXTERNAL MODULE: external {"root":"jsx-runtime","commonjs2":"react/jsx-runtime","commonjs":"react/jsx-runtime","amd":"react/jsx-runtime","umd":"react/jsx-runtime"}
1126
1239
  var jsx_runtime_ = __webpack_require__(226);
1127
1240
  // EXTERNAL MODULE: external {"root":"React","commonjs2":"react","commonjs":"react","amd":"react","umd":"react"}
@@ -1470,10 +1583,7 @@ var BaseButton = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_re
1470
1583
  var Comp = asChild ? composer : "button";
1471
1584
  return (0,jsx_runtime_.jsx)(Comp, base_button_assign({
1472
1585
  ref: ref,
1473
- className: asChild ? className : "base-button ".concat(className !== null && className !== void 0 ? className : ""),
1474
- onClick: function onClick() {
1475
- return console.log("base");
1476
- }
1586
+ className: asChild ? className : "base-button ".concat(className !== null && className !== void 0 ? className : "")
1477
1587
  }, props, {
1478
1588
  children: children
1479
1589
  }));
@@ -2034,6 +2144,373 @@ var TextFieldWithError = function TextFieldWithError(_a) {
2034
2144
  });
2035
2145
  };
2036
2146
  /* harmony default export */ const text_field_with_error = (TextFieldWithError);
2147
+ ;// ./helpers/hooks/useExternalState.ts
2148
+
2149
+ var useExternalState = function useExternalState(_a) {
2150
+ var prop = _a.prop,
2151
+ handler = _a.handler,
2152
+ defaultProp = _a.defaultProp;
2153
+ var _b = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_umd_react_.useState)(prop !== null && prop !== void 0 ? prop : defaultProp),
2154
+ innerState = _b[0],
2155
+ setInnerState = _b[1];
2156
+ var isControlledByExternal = prop !== undefined;
2157
+ var value = isControlledByExternal ? prop : innerState;
2158
+ var setValue = function setValue(handledValue) {
2159
+ if (isControlledByExternal) {
2160
+ var setter = handledValue;
2161
+ var value_1 = typeof handledValue === "function" ? setter(prop !== null && prop !== void 0 ? prop : defaultProp) : handledValue;
2162
+ handler === null || handler === void 0 ? void 0 : handler(value_1);
2163
+ } else {
2164
+ setInnerState(handledValue);
2165
+ }
2166
+ };
2167
+ return [value, setValue];
2168
+ };
2169
+ ;// ./components/radio/base-radio.tsx
2170
+
2171
+
2172
+
2173
+
2174
+
2175
+
2176
+ var RadioButton = function RadioButton(props) {
2177
+ var children = props.children,
2178
+ asChild = props.asChild,
2179
+ className = props.className,
2180
+ id = props.id;
2181
+ var _a = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_umd_react_.useContext)(RadioContext),
2182
+ selected = _a.selected,
2183
+ onChange = _a.onChange;
2184
+ var Comp = asChild ? composer : "div";
2185
+ return (0,jsx_runtime_.jsx)(Comp, {
2186
+ className: "nuri-theme ".concat(className),
2187
+ onClick: function onClick() {
2188
+ return onChange(id);
2189
+ },
2190
+ children: id === selected ? children : null
2191
+ });
2192
+ };
2193
+ var RadioIndicator = function RadioIndicator(props) {
2194
+ var children = props.children,
2195
+ asChild = props.asChild,
2196
+ id = props.id,
2197
+ className = props.className;
2198
+ var selected = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_umd_react_.useContext)(RadioContext).selected;
2199
+ var Comp = asChild ? composer : "input";
2200
+ return (0,jsx_runtime_.jsx)(Comp, {
2201
+ type: "radio",
2202
+ className: "nuri-theme ".concat(selected === id ? "selected" : "", " ").concat(className),
2203
+ checked: selected === id,
2204
+ children: children
2205
+ });
2206
+ };
2207
+ var RadioLabel = function RadioLabel(props) {
2208
+ var children = props.children,
2209
+ asChild = props.asChild,
2210
+ className = props.className;
2211
+ var Comp = asChild ? composer : "label";
2212
+ return (0,jsx_runtime_.jsx)(Comp, {
2213
+ className: "nuri-theme ".concat(className),
2214
+ children: children
2215
+ });
2216
+ };
2217
+ var RadioOptionGroup = function RadioOptionGroup(props) {
2218
+ var children = props.children,
2219
+ asChild = props.asChild,
2220
+ className = props.className;
2221
+ var Comp = asChild ? composer : "ul";
2222
+ return (0,jsx_runtime_.jsx)(Comp, {
2223
+ className: className,
2224
+ children: children
2225
+ });
2226
+ };
2227
+ var RadioContext = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_umd_react_.createContext)({
2228
+ options: [],
2229
+ selected: null,
2230
+ onChange: function onChange(id) {}
2231
+ });
2232
+ var RadioRoot = function RadioRoot(props) {
2233
+ var children = props.children,
2234
+ options = props.options,
2235
+ _a = props.selected,
2236
+ selected = _a === void 0 ? null : _a,
2237
+ externalOnChange = props.onChange;
2238
+ var _b = useExternalState({
2239
+ prop: selected,
2240
+ handler: externalOnChange,
2241
+ defaultProp: selected
2242
+ }),
2243
+ selectedId = _b[0],
2244
+ setSelectedId = _b[1];
2245
+ var onChange = function onChange(id) {
2246
+ setSelectedId(id);
2247
+ };
2248
+ return (0,jsx_runtime_.jsx)(RadioContext.Provider, {
2249
+ value: {
2250
+ selected: selectedId,
2251
+ onChange: onChange,
2252
+ options: options
2253
+ },
2254
+ children: children
2255
+ });
2256
+ };
2257
+ RadioRoot.Indicator = RadioIndicator;
2258
+ RadioRoot.Label = RadioLabel;
2259
+ RadioRoot.OptionGroup = RadioOptionGroup;
2260
+ RadioRoot.Button = RadioButton;
2261
+ /* harmony default export */ const base_radio = (RadioRoot);
2262
+ // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./components/radio/radio-style.css
2263
+ var radio_style = __webpack_require__(850);
2264
+ ;// ./components/radio/radio-style.css
2265
+
2266
+
2267
+
2268
+
2269
+
2270
+
2271
+
2272
+
2273
+
2274
+
2275
+
2276
+ var radio_style_options = {};
2277
+
2278
+ radio_style_options.styleTagTransform = (styleTagTransform_default());
2279
+ radio_style_options.setAttributes = (setAttributesWithoutAttributes_default());
2280
+ radio_style_options.insert = insertBySelector_default().bind(null, "head");
2281
+ radio_style_options.domAPI = (styleDomAPI_default());
2282
+ radio_style_options.insertStyleElement = (insertStyleElement_default());
2283
+
2284
+ var radio_style_update = injectStylesIntoStyleTag_default()(radio_style/* default */.A, radio_style_options);
2285
+
2286
+
2287
+
2288
+
2289
+ /* harmony default export */ const radio_radio_style = (radio_style/* default */.A && radio_style/* default */.A.locals ? radio_style/* default */.A.locals : undefined);
2290
+
2291
+ ;// ./components/radio/radio.tsx
2292
+
2293
+
2294
+
2295
+ var Radio = function Radio(props) {
2296
+ var selected = props.selected,
2297
+ onChange = props.onChange,
2298
+ options = props.options;
2299
+ return (0,jsx_runtime_.jsx)(base_radio, {
2300
+ options: options,
2301
+ selected: selected,
2302
+ onChange: onChange,
2303
+ children: (0,jsx_runtime_.jsx)(base_radio.OptionGroup, {
2304
+ className: "radio radio-group",
2305
+ children: options.map(function (option) {
2306
+ return (0,jsx_runtime_.jsxs)("li", {
2307
+ style: {
2308
+ display: "flex",
2309
+ alignItems: "center",
2310
+ gap: "6px"
2311
+ },
2312
+ children: [(0,jsx_runtime_.jsx)(base_radio.Button, {
2313
+ id: option.id,
2314
+ className: "radio radio-button",
2315
+ children: (0,jsx_runtime_.jsx)(base_radio.Indicator, {
2316
+ id: option.id,
2317
+ asChild: true,
2318
+ className: "radio radio-indicator",
2319
+ children: (0,jsx_runtime_.jsx)("div", {})
2320
+ })
2321
+ }), (0,jsx_runtime_.jsx)(base_radio.Label, {
2322
+ id: option.id,
2323
+ className: "radio radio-label",
2324
+ children: option.label
2325
+ })]
2326
+ }, option.id);
2327
+ })
2328
+ })
2329
+ });
2330
+ };
2331
+ /* harmony default export */ const radio_radio = (Radio);
2332
+ // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./components/check-box/check-box-style.css
2333
+ var check_box_style = __webpack_require__(166);
2334
+ ;// ./components/check-box/check-box-style.css
2335
+
2336
+
2337
+
2338
+
2339
+
2340
+
2341
+
2342
+
2343
+
2344
+
2345
+
2346
+ var check_box_style_options = {};
2347
+
2348
+ check_box_style_options.styleTagTransform = (styleTagTransform_default());
2349
+ check_box_style_options.setAttributes = (setAttributesWithoutAttributes_default());
2350
+ check_box_style_options.insert = insertBySelector_default().bind(null, "head");
2351
+ check_box_style_options.domAPI = (styleDomAPI_default());
2352
+ check_box_style_options.insertStyleElement = (insertStyleElement_default());
2353
+
2354
+ var check_box_style_update = injectStylesIntoStyleTag_default()(check_box_style/* default */.A, check_box_style_options);
2355
+
2356
+
2357
+
2358
+
2359
+ /* harmony default export */ const check_box_check_box_style = (check_box_style/* default */.A && check_box_style/* default */.A.locals ? check_box_style/* default */.A.locals : undefined);
2360
+
2361
+ ;// ./assets/icons/check.svg
2362
+ var _path;
2363
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2364
+
2365
+ var SvgCheck = function SvgCheck(props) {
2366
+ return /*#__PURE__*/React.createElement("svg", _extends({
2367
+ xmlns: "http://www.w3.org/2000/svg",
2368
+ width: 16,
2369
+ height: 16,
2370
+ fill: "none"
2371
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
2372
+ stroke: "#fff",
2373
+ strokeLinecap: "round",
2374
+ strokeLinejoin: "round",
2375
+ strokeWidth: 1.5,
2376
+ d: "M2.667 8.8 5.714 12l7.62-8"
2377
+ })));
2378
+ };
2379
+ /* harmony default export */ const check = ((/* unused pure expression or super */ null && (SvgCheck)));
2380
+ ;// ./components/check-box/base-check-box.tsx
2381
+ var base_check_box_assign = undefined && undefined.__assign || function () {
2382
+ base_check_box_assign = Object.assign || function (t) {
2383
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
2384
+ s = arguments[i];
2385
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
2386
+ }
2387
+ return t;
2388
+ };
2389
+ return base_check_box_assign.apply(this, arguments);
2390
+ };
2391
+ var base_check_box_rest = undefined && undefined.__rest || function (s, e) {
2392
+ var t = {};
2393
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
2394
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2395
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
2396
+ }
2397
+ return t;
2398
+ };
2399
+
2400
+
2401
+
2402
+
2403
+
2404
+ var CheckBoxLabel = function CheckBoxLabel(props) {
2405
+ var asChild = props.asChild,
2406
+ children = props.children;
2407
+ var id = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_umd_react_.useContext)(CheckBoxContext).id;
2408
+ var Comp = asChild ? composer : "label";
2409
+ return (0,jsx_runtime_.jsx)(Comp, {
2410
+ className: "base-check-box label",
2411
+ htmlFor: id,
2412
+ children: children
2413
+ });
2414
+ };
2415
+ var CheckBoxInput = function CheckBoxInput(props) {
2416
+ var asChild = props.asChild,
2417
+ children = props.children,
2418
+ className = props.className,
2419
+ rest = base_check_box_rest(props, ["asChild", "children", "className"]);
2420
+ var _a = (0,external_root_React_commonjs2_react_commonjs_react_amd_react_umd_react_.useContext)(CheckBoxContext),
2421
+ checked = _a.checked,
2422
+ toggleChecked = _a.toggleChecked,
2423
+ id = _a.id,
2424
+ disabled = _a.disabled;
2425
+ var Comp = asChild ? composer : "input";
2426
+ return (0,jsx_runtime_.jsx)(Comp, base_check_box_assign({
2427
+ type: "checkbox",
2428
+ checked: checked,
2429
+ onChange: toggleChecked,
2430
+ onClick: toggleChecked,
2431
+ id: id,
2432
+ className: "".concat(className, " ").concat(checked ? "checked" : "unchecked", " ").concat(disabled ? "disabled" : "")
2433
+ }, rest, {
2434
+ children: children
2435
+ }));
2436
+ };
2437
+ var CheckBoxContext = /*#__PURE__*/(0,external_root_React_commonjs2_react_commonjs_react_amd_react_umd_react_.createContext)({
2438
+ checked: false,
2439
+ toggleChecked: function toggleChecked() {},
2440
+ id: "",
2441
+ disabled: false
2442
+ });
2443
+ var CheckBoxRoot = function CheckBoxRoot(props) {
2444
+ var externalChecked = props.checked,
2445
+ externalOnChange = props.onChange,
2446
+ id = props.id,
2447
+ children = props.children,
2448
+ disabled = props.disabled;
2449
+ var _a = useExternalState({
2450
+ prop: externalChecked,
2451
+ handler: externalOnChange,
2452
+ defaultProp: externalChecked !== null && externalChecked !== void 0 ? externalChecked : false
2453
+ }),
2454
+ checked = _a[0],
2455
+ setChecked = _a[1];
2456
+ var toggleChecked = function toggleChecked() {
2457
+ setChecked(function (prev) {
2458
+ return !prev;
2459
+ });
2460
+ };
2461
+ return (0,jsx_runtime_.jsx)("div", {
2462
+ className: "check-box-root",
2463
+ children: (0,jsx_runtime_.jsx)(CheckBoxContext.Provider, {
2464
+ value: {
2465
+ checked: checked,
2466
+ toggleChecked: toggleChecked,
2467
+ id: id,
2468
+ disabled: disabled
2469
+ },
2470
+ children: children
2471
+ })
2472
+ });
2473
+ };
2474
+ CheckBoxRoot.Label = CheckBoxLabel;
2475
+ CheckBoxRoot.Input = CheckBoxInput;
2476
+ /* harmony default export */ const base_check_box = (CheckBoxRoot);
2477
+ ;// ./components/check-box/check-box.tsx
2478
+ var check_box_rest = undefined && undefined.__rest || function (s, e) {
2479
+ var t = {};
2480
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
2481
+ if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
2482
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
2483
+ }
2484
+ return t;
2485
+ };
2486
+
2487
+
2488
+
2489
+
2490
+
2491
+
2492
+ var CheckBox = function CheckBox(props) {
2493
+ var checked = props.checked,
2494
+ onChange = props.onChange,
2495
+ label = props.label,
2496
+ rest = check_box_rest(props, ["checked", "onChange", "label"]);
2497
+ return (0,jsx_runtime_.jsx)(base_check_box, {
2498
+ id: "check-box",
2499
+ children: (0,jsx_runtime_.jsxs)("div", {
2500
+ className: "check-box",
2501
+ children: [(0,jsx_runtime_.jsx)(base_check_box.Input, {
2502
+ asChild: true,
2503
+ children: (0,jsx_runtime_.jsx)("div", {
2504
+ className: "nuri-theme check-box-input",
2505
+ children: (0,jsx_runtime_.jsx)(check_namespaceObject.ReactComponent, {})
2506
+ })
2507
+ }), (0,jsx_runtime_.jsx)(base_check_box.Label, {
2508
+ children: label
2509
+ })]
2510
+ })
2511
+ });
2512
+ };
2513
+ /* harmony default export */ const check_box = (CheckBox);
2037
2514
  ;// ./index.tsx
2038
2515
 
2039
2516
 
@@ -2043,8 +2520,10 @@ var TextFieldWithError = function TextFieldWithError(_a) {
2043
2520
 
2044
2521
 
2045
2522
 
2523
+
2524
+
2046
2525
  /******/ return __webpack_exports__;
2047
2526
  /******/ })()
2048
2527
  ;
2049
2528
  });
2050
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QyxDQUFDLEVBQUV1QixVQUFVLElBQUt0RyxvQkFBSSxDQUFDK0YsZUFBYSxDQUFDSixVQUFVLEVBQUU7TUFBRXZELElBQUksRUFBRWtFLFVBQVU7TUFBRTVGLFNBQVMsRUFBRSxtQ0FBbUM7TUFBRW1GLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBRTtFQUFFLENBQUMsQ0FBQztBQUMzZ0IsQ0FBQztBQUNELDREQUFlVyxrQkFBa0I7O0FDUjhCO0FBQ087QUFDRztBQUNLO0FBQ2E7QUFDdEI7QUFDSyIsInNvdXJjZXMiOlsid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLXN0eWxlLmNzcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2JhZGdlL2JhZGdlLXN0eWxlLmNzcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24tc3R5bGUuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLXN0eWxlLmNzcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLXN0eWxlLmNzcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL3RleHQtZmllbGQvdGV4dC1maWVsZC1zdHlsZS5jc3MiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vc3R5bGVzL3Rva2VuL2NvbG9yLmNzcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9zdHlsZXMvdG9rZW4vZm9udC5jc3MiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS9leHRlcm5hbCB1bWQge1wicm9vdFwiOlwiUmVhY3RcIixcImNvbW1vbmpzMlwiOlwicmVhY3RcIixcImNvbW1vbmpzXCI6XCJyZWFjdFwiLFwiYW1kXCI6XCJyZWFjdFwiLFwidW1kXCI6XCJyZWFjdFwifSIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vZXh0ZXJuYWwgdW1kIHtcInJvb3RcIjpcImpzeC1ydW50aW1lXCIsXCJjb21tb25qczJcIjpcInJlYWN0L2pzeC1ydW50aW1lXCIsXCJjb21tb25qc1wiOlwicmVhY3QvanN4LXJ1bnRpbWVcIixcImFtZFwiOlwicmVhY3QvanN4LXJ1bnRpbWVcIixcInVtZFwiOlwicmVhY3QvanN4LXJ1bnRpbWVcIn0iLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL3J1bnRpbWUvbm9uY2UiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLXN0eWxlLmNzcz83NjAxIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvY29yZS9jb21wb3Nlci9pbmRleC50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9iYWRnZS9iYXNlLWJhZGdlLnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXIudHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi1zdHlsZS5jc3M/ZTlmNyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9zdHlsZXMvdG9rZW4vY29sb3IuY3NzPzY2Y2EiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzPzc2YmIiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9idXR0b24vYmFzZS1idXR0b24udHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLXN0eWxlLmNzcz9iMzk5Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2J1dHRvbi9jdGEtYnV0dG9uLnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2JhZGdlL29wdGlvbi1iYWRnZS50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9iYWRnZS9pY29uLXRleHQtYmFkZ2UudHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2Utc3R5bGUuY3NzPzRhODciLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9iYWRnZS9pY29uLXRleHQtb3B0aW9uLWJhZGdlLnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL3RhYmxlL3RhYmxlLXN0eWxlLmNzcz9iNzJlIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvdGFibGUvYmFzZS10YWJsZS50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy90YWJsZS9kYXRhLXRhYmxlLnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL3RleHQtZmllbGQvdGV4dC1maWVsZC1zdHlsZS5jc3M/N2NjNyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL3RleHQtZmllbGQvYmFzZS10ZXh0LWZpZWxkLnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL3RleHQtZmllbGQvdGV4dC1maWVsZC50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy90ZXh0LWZpZWxkL3RleHQtZmllbGQtd2l0aC1lcnJvci50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpLCByZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wicmVhY3QvanN4LXJ1bnRpbWVcIiwgXCJyZWFjdFwiXSwgZmFjdG9yeSk7XG5cdGVsc2Uge1xuXHRcdHZhciBhID0gdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnID8gZmFjdG9yeShyZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIiksIHJlcXVpcmUoXCJyZWFjdFwiKSkgOiBmYWN0b3J5KHJvb3RbXCJqc3gtcnVudGltZVwiXSwgcm9vdFtcIlJlYWN0XCJdKTtcblx0XHRmb3IodmFyIGkgaW4gYSkgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyA/IGV4cG9ydHMgOiByb290KVtpXSA9IGFbaV07XG5cdH1cbn0pKHNlbGYsIChfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18yMjZfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMTE5X18pID0+IHtcbnJldHVybiAiLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLmF2YXRhciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgJiBkaXYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICAmOndoZXJlKC54bCkge1xuICAgIHdpZHRoOiAxMjRweDtcbiAgICBoZWlnaHQ6IDEyNHB4O1xuICB9XG5cbiAgJjp3aGVyZSgubCkge1xuICAgIHdpZHRoOiA3NHB4O1xuICAgIGhlaWdodDogNzRweDtcbiAgfVxuXG4gICY6d2hlcmUoLm0pIHtcbiAgICB3aWR0aDogNThweDtcbiAgICBoZWlnaHQ6IDU4cHg7XG4gIH1cblxuICAmOndoZXJlKC5zKSB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICB9XG5cbiAgLmF2YXRhci1za2VsZXRvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAuc2tlbGV0b24tYW5pbWF0aW9uIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICA5MGRlZyxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAwJSxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpIDUwJSxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlXG4gICAgICApO1xuICAgICAgYW5pbWF0aW9uOiBzaGltbWVyIDEuNXMgaW5maW5pdGU7XG4gICAgfVxuICB9XG59XG5cbkBrZXlmcmFtZXMgc2hpbW1lciB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgfVxufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXItc3R5bGUuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCO0lBQ0Usa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGdCQUFnQjtFQUNsQjs7RUFFQSxrQkFBa0I7O0VBRWxCO0lBQ0UsWUFBWTtJQUNaLGFBQWE7RUFDZjs7RUFFQTtJQUNFLFdBQVc7SUFDWCxZQUFZO0VBQ2Q7O0VBRUE7SUFDRSxXQUFXO0lBQ1gsWUFBWTtFQUNkOztFQUVBO0lBQ0UsV0FBVztJQUNYLFlBQVk7RUFDZDs7RUFFQTtJQUNFLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sT0FBTztJQUNQLFdBQVc7SUFDWCxZQUFZO0lBQ1oseUJBQXlCO0lBQ3pCLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsWUFBWTs7SUFFWjtNQUNFLFdBQVc7TUFDWCxZQUFZO01BQ1o7Ozs7O09BS0M7TUFDRCxnQ0FBZ0M7SUFDbEM7RUFDRjtBQUNGOztBQUVBO0VBQ0U7SUFDRSw0QkFBNEI7RUFDOUI7RUFDQTtJQUNFLDJCQUEyQjtFQUM3QjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5hdmF0YXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgJiBkaXYge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgfVxcblxcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcblxcbiAgJjp3aGVyZSgueGwpIHtcXG4gICAgd2lkdGg6IDEyNHB4O1xcbiAgICBoZWlnaHQ6IDEyNHB4O1xcbiAgfVxcblxcbiAgJjp3aGVyZSgubCkge1xcbiAgICB3aWR0aDogNzRweDtcXG4gICAgaGVpZ2h0OiA3NHB4O1xcbiAgfVxcblxcbiAgJjp3aGVyZSgubSkge1xcbiAgICB3aWR0aDogNThweDtcXG4gICAgaGVpZ2h0OiA1OHB4O1xcbiAgfVxcblxcbiAgJjp3aGVyZSgucykge1xcbiAgICB3aWR0aDogNDBweDtcXG4gICAgaGVpZ2h0OiA0MHB4O1xcbiAgfVxcblxcbiAgLmF2YXRhci1za2VsZXRvbiB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuXFxuICAgIC5za2VsZXRvbi1hbmltYXRpb24ge1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXFxuICAgICAgICA5MGRlZyxcXG4gICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMCUsXFxuICAgICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCkgNTAlLFxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlXFxuICAgICAgKTtcXG4gICAgICBhbmltYXRpb246IHNoaW1tZXIgMS41cyBpbmZpbml0ZTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNoaW1tZXIge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAuYmFzZS1iYWRnZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDRweDtcblxuICBib3JkZXItcmFkaXVzOiA0MHB4O1xuXG4gICY6d2hlcmUoLmwpIHtcbiAgICBoZWlnaHQ6IDQ4cHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICB9XG5cbiAgJjp3aGVyZSgubSkge1xuICAgIGhlaWdodDogNDBweDtcblxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIH1cblxuICAmOndoZXJlKC5yKSB7XG4gICAgaGVpZ2h0OiAzNnB4O1xuXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgfVxuXG4gICY6d2hlcmUoLnMpIHtcbiAgICBoZWlnaHQ6IDMycHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIH1cblxuICAmOndoZXJlKC5zbSkge1xuICAgIGhlaWdodDogMjhweDtcblxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXhzbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICB9XG5cbiAgJltjbGFzcyo9XCJiYWNrZ3JvdW5kLVwiXSB7XG4gICAgJi5iYWNrZ3JvdW5kLWJsYWNrIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYmxhY2spO1xuICAgIH1cbiAgICAmLmJhY2tncm91bmQtd2hpdGUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XG4gICAgfVxuICAgICYuYmFja2dyb3VuZC1ncmF5RmEge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhKTtcbiAgICB9XG4gICAgJi5iYWNrZ3JvdW5kLXB1cnBsZTM5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gICAgfVxuICB9XG5cbiAgJltjbGFzcyo9XCJ0ZXh0LVwiXSB7XG4gICAgJi50ZXh0LWJsYWNrIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcbiAgICB9XG4gICAgJi50ZXh0LXdoaXRlIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcbiAgICB9XG4gICAgJi50ZXh0LWdyYXlGYSB7XG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhKTtcbiAgICB9XG4gICAgJi50ZXh0LXB1cnBsZTM5IHtcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xuICAgIH1cbiAgfVxuXG4gICZbY2xhc3MqPVwiYm9yZGVyLVwiXSB7XG4gICAgJi5ib3JkZXItYmxhY2sge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS1ibGFjayk7XG4gICAgfVxuICAgICYuYm9yZGVyLXdoaXRlIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xuICAgIH1cbiAgICAmLmJvcmRlci1ncmF5RmEge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhKTtcbiAgICB9XG4gICAgJi5ib3JkZXItZ3JheUU0IHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1lNCk7XG4gICAgfVxuICAgICYuYm9yZGVyLXB1cnBsZTM5IHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gICAgfVxuICB9XG5cbiAgJi5pY29uLXRleHQtb3B0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgcGFkZGluZzogMCAyMHB4O1xuICB9XG5cbiAgJi5pY29uLXRleHQtb3B0aW9uID4gc3BhbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICB9XG59XG5gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2Utc3R5bGUuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsUUFBUTs7RUFFUixtQkFBbUI7O0VBRW5CO0lBQ0UsWUFBWTs7SUFFWiw4QkFBOEI7SUFDOUIsa0NBQWtDO0lBQ2xDLHdDQUF3QztFQUMxQzs7RUFFQTtJQUNFLFlBQVk7O0lBRVosOEJBQThCO0lBQzlCLGtDQUFrQztJQUNsQyx3Q0FBd0M7RUFDMUM7O0VBRUE7SUFDRSxZQUFZOztJQUVaLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsd0NBQXdDO0VBQzFDOztFQUVBO0lBQ0UsWUFBWTs7SUFFWiw4QkFBOEI7SUFDOUIsa0NBQWtDO0lBQ2xDLG9DQUFvQztFQUN0Qzs7RUFFQTtJQUNFLFlBQVk7O0lBRVosK0JBQStCO0lBQy9CLG1DQUFtQztJQUNuQyxvQ0FBb0M7RUFDdEM7O0VBRUE7SUFDRTtNQUNFLDRDQUE0QztJQUM5QztJQUNBO01BQ0UsNENBQTRDO0lBQzlDO0lBQ0E7TUFDRSw4Q0FBOEM7SUFDaEQ7SUFDQTtNQUNFLDhDQUE4QztJQUNoRDtFQUNGOztFQUVBO0lBQ0U7TUFDRSxpQ0FBaUM7SUFDbkM7SUFDQTtNQUNFLGlDQUFpQztJQUNuQztJQUNBO01BQ0UsbUNBQW1DO0lBQ3JDO0lBQ0E7TUFDRSxtQ0FBbUM7SUFDckM7RUFDRjs7RUFFQTtJQUNFO01BQ0UsNENBQTRDO0lBQzlDO0lBQ0E7TUFDRSw0Q0FBNEM7SUFDOUM7SUFDQTtNQUNFLDhDQUE4QztJQUNoRDtJQUNBO01BQ0UsOENBQThDO0lBQ2hEO0lBQ0E7TUFDRSw4Q0FBOEM7SUFDaEQ7RUFDRjs7RUFFQTtJQUNFLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCOztJQUU5QixlQUFlO0VBQ2pCOztFQUVBO0lBQ0UsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixRQUFRO0VBQ1Y7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuYmFzZS1iYWRnZSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZ2FwOiA0cHg7XFxuXFxuICBib3JkZXItcmFkaXVzOiA0MHB4O1xcblxcbiAgJjp3aGVyZSgubCkge1xcbiAgICBoZWlnaHQ6IDQ4cHg7XFxuXFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcXG4gIH1cXG5cXG4gICY6d2hlcmUoLm0pIHtcXG4gICAgaGVpZ2h0OiA0MHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XFxuICB9XFxuXFxuICAmOndoZXJlKC5yKSB7XFxuICAgIGhlaWdodDogMzZweDtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xcbiAgfVxcblxcbiAgJjp3aGVyZSgucykge1xcbiAgICBoZWlnaHQ6IDMycHg7XFxuXFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xcbiAgfVxcblxcbiAgJjp3aGVyZSguc20pIHtcXG4gICAgaGVpZ2h0OiAyOHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14c20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQteHNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xcbiAgfVxcblxcbiAgJltjbGFzcyo9XFxcImJhY2tncm91bmQtXFxcIl0ge1xcbiAgICAmLmJhY2tncm91bmQtYmxhY2sge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYmxhY2spO1xcbiAgICB9XFxuICAgICYuYmFja2dyb3VuZC13aGl0ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XFxuICAgIH1cXG4gICAgJi5iYWNrZ3JvdW5kLWdyYXlGYSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhKTtcXG4gICAgfVxcbiAgICAmLmJhY2tncm91bmQtcHVycGxlMzkge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XFxuICAgIH1cXG4gIH1cXG5cXG4gICZbY2xhc3MqPVxcXCJ0ZXh0LVxcXCJdIHtcXG4gICAgJi50ZXh0LWJsYWNrIHtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ibGFjayk7XFxuICAgIH1cXG4gICAgJi50ZXh0LXdoaXRlIHtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XFxuICAgIH1cXG4gICAgJi50ZXh0LWdyYXlGYSB7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1mYSk7XFxuICAgIH1cXG4gICAgJi50ZXh0LXB1cnBsZTM5IHtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgJltjbGFzcyo9XFxcImJvcmRlci1cXFwiXSB7XFxuICAgICYuYm9yZGVyLWJsYWNrIHtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcXG4gICAgfVxcbiAgICAmLmJvcmRlci13aGl0ZSB7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XFxuICAgIH1cXG4gICAgJi5ib3JkZXItZ3JheUZhIHtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZmEpO1xcbiAgICB9XFxuICAgICYuYm9yZGVyLWdyYXlFNCB7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWU0KTtcXG4gICAgfVxcbiAgICAmLmJvcmRlci1wdXJwbGUzOSB7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgJi5pY29uLXRleHQtb3B0aW9uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcblxcbiAgICBwYWRkaW5nOiAwIDIwcHg7XFxuICB9XFxuXFxuICAmLmljb24tdGV4dC1vcHRpb24gPiBzcGFuIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA0cHg7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLmJhc2UtYnV0dG9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMTBweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmN0YS1idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG5cbiAgJjp3aGVyZSgucHJpbWFyeSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xuICB9XG4gICY6d2hlcmUoLnNlY29uZGFyeSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS1mNCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gIH1cbiAgJjp3aGVyZSguZ2hvc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZDQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xuICB9XG4gICY6d2hlcmUoLndoaXRlKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gIH1cbiAgJjp3aGVyZSguZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZTQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcbiAgfVxuXG4gICY6d2hlcmUoLnhsKSB7XG4gICAgaGVpZ2h0OiA2MHB4O1xuXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICB9XG4gICY6d2hlcmUoLmwpIHtcbiAgICBoZWlnaHQ6IDU0cHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICB9XG4gICY6d2hlcmUoLnIpIHtcbiAgICBoZWlnaHQ6IDQ4cHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICB9XG4gICY6d2hlcmUoLm0pIHtcbiAgICBoZWlnaHQ6IDUwcHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICB9XG4gICY6d2hlcmUoLnMpIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14c20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC14c20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIH1cbiAgJjp3aGVyZSgueHMpIHtcbiAgICBoZWlnaHQ6IDMwcHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14c20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC14c20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vY29tcG9uZW50cy9idXR0b24vYnV0dG9uLXN0eWxlLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFLGFBQWE7RUFDYix1QkFBdUI7RUFDdkIsbUJBQW1CO0VBQ25CLFNBQVM7RUFDVCxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLGVBQWU7QUFDakI7O0FBRUE7RUFDRSxrQkFBa0I7O0VBRWxCO0lBQ0UsOENBQThDO0lBQzlDLGlDQUFpQztFQUNuQztFQUNBO0lBQ0UsOENBQThDO0lBQzlDLG1DQUFtQztFQUNyQztFQUNBO0lBQ0UsNENBQTRDO0lBQzVDLDhDQUE4QztJQUM5QyxtQ0FBbUM7RUFDckM7RUFDQTtJQUNFLDRDQUE0QztJQUM1QyxtQ0FBbUM7RUFDckM7RUFDQTtJQUNFLDhDQUE4QztJQUM5QyxpQ0FBaUM7RUFDbkM7O0VBRUE7SUFDRSxZQUFZOztJQUVaLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsb0NBQW9DO0VBQ3RDO0VBQ0E7SUFDRSxZQUFZOztJQUVaLGdDQUFnQztJQUNoQyxvQ0FBb0M7SUFDcEMsb0NBQW9DO0VBQ3RDO0VBQ0E7SUFDRSxZQUFZOztJQUVaLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsd0NBQXdDO0VBQzFDO0VBQ0E7SUFDRSxZQUFZOztJQUVaLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsd0NBQXdDO0VBQzFDO0VBQ0E7SUFDRSxZQUFZOztJQUVaLCtCQUErQjtJQUMvQixtQ0FBbUM7SUFDbkMsd0NBQXdDO0VBQzFDO0VBQ0E7SUFDRSxZQUFZOztJQUVaLCtCQUErQjtJQUMvQixtQ0FBbUM7SUFDbkMsd0NBQXdDO0VBQzFDO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmJhc2UtYnV0dG9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBnYXA6IDEwcHg7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICBib3JkZXI6IG5vbmU7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5jdGEtYnV0dG9uIHtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG5cXG4gICY6d2hlcmUoLnByaW1hcnkpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xcbiAgfVxcbiAgJjp3aGVyZSguc2Vjb25kYXJ5KSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS1mNCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xcbiAgfVxcbiAgJjp3aGVyZSguZ2hvc3QpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1kNCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xcbiAgfVxcbiAgJjp3aGVyZSgud2hpdGUpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xcbiAgfVxcbiAgJjp3aGVyZSguZGlzYWJsZWQpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWU0KTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xcbiAgfVxcblxcbiAgJjp3aGVyZSgueGwpIHtcXG4gICAgaGVpZ2h0OiA2MHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1sZyk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcXG4gIH1cXG4gICY6d2hlcmUoLmwpIHtcXG4gICAgaGVpZ2h0OiA1NHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LWJhc2UpO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XFxuICB9XFxuICAmOndoZXJlKC5yKSB7XFxuICAgIGhlaWdodDogNDhweDtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xcbiAgfVxcbiAgJjp3aGVyZSgubSkge1xcbiAgICBoZWlnaHQ6IDUwcHg7XFxuXFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcXG4gIH1cXG4gICY6d2hlcmUoLnMpIHtcXG4gICAgaGVpZ2h0OiA0MHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14c20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQteHNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcXG4gIH1cXG4gICY6d2hlcmUoLnhzKSB7XFxuICAgIGhlaWdodDogMzBweDtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXhzbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLmNvbXBvbmVudC1sb2FkaW5nLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAyMHB4O1xuICBoZWlnaHQ6IDIwcHg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuXG4ubG9hZGluZy1pbmRpY2F0b3ItcmluZyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbn1cblxuLmxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nIHtcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgYm9yZGVyOiAzcHggc29saWQ7XG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgYW5pbWF0aW9uOiBsZHMtcmluZyAxLjJzIGN1YmljLWJlemllcigwLjUsIDAsIDAuNSwgMSkgaW5maW5pdGU7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSkgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XG59XG5cbi5sb2FkaW5nLWluZGljYXRvci1zaW5nbGUtcmluZzpudGgtY2hpbGQoMSkge1xuICBhbmltYXRpb24tZGVsYXk6IC0wLjQ1cztcbn1cblxuLmxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nOm50aC1jaGlsZCgyKSB7XG4gIGFuaW1hdGlvbi1kZWxheTogLTAuM3M7XG59XG5cbi5sb2FkaW5nLWluZGljYXRvci1zaW5nbGUtcmluZzpudGgtY2hpbGQoMykge1xuICBhbmltYXRpb24tZGVsYXk6IC0wLjE1cztcbn1cblxuLmxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nOm50aC1jaGlsZCg0KSB7XG4gIGFuaW1hdGlvbi1kZWxheTogMHM7XG59XG5cbkBrZXlmcmFtZXMgbGRzLXJpbmcge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XG4gIH1cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy1zdHlsZS5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7RUFDRSxhQUFhO0VBQ2IsV0FBVztFQUNYLFlBQVk7RUFDWixtQkFBbUI7RUFDbkIsdUJBQXVCO0FBQ3pCOztBQUVBO0VBQ0Usa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0FBQ2Q7O0FBRUE7RUFDRSxzQkFBc0I7RUFDdEIsY0FBYztFQUNkLGtCQUFrQjtFQUNsQixXQUFXO0VBQ1gsWUFBWTtFQUNaLGlCQUFpQjtFQUNqQixrQkFBa0I7RUFDbEIsOERBQThEO0VBQzlELDRFQUE0RTtBQUM5RTs7QUFFQTtFQUNFLHVCQUF1QjtBQUN6Qjs7QUFFQTtFQUNFLHNCQUFzQjtBQUN4Qjs7QUFFQTtFQUNFLHVCQUF1QjtBQUN6Qjs7QUFFQTtFQUNFLG1CQUFtQjtBQUNyQjs7QUFFQTtFQUNFO0lBQ0UsdUJBQXVCO0VBQ3pCO0VBQ0E7SUFDRSx5QkFBeUI7RUFDM0I7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuY29tcG9uZW50LWxvYWRpbmctY29udGFpbmVyIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG59XFxuXFxuLmxvYWRpbmctaW5kaWNhdG9yLXJpbmcge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgd2lkdGg6IDIwcHg7XFxuICBoZWlnaHQ6IDIwcHg7XFxufVxcblxcbi5sb2FkaW5nLWluZGljYXRvci1zaW5nbGUtcmluZyB7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG4gIGJvcmRlcjogM3B4IHNvbGlkO1xcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgYW5pbWF0aW9uOiBsZHMtcmluZyAxLjJzIGN1YmljLWJlemllcigwLjUsIDAsIDAuNSwgMSkgaW5maW5pdGU7XFxuICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xcbn1cXG5cXG4ubG9hZGluZy1pbmRpY2F0b3Itc2luZ2xlLXJpbmc6bnRoLWNoaWxkKDEpIHtcXG4gIGFuaW1hdGlvbi1kZWxheTogLTAuNDVzO1xcbn1cXG5cXG4ubG9hZGluZy1pbmRpY2F0b3Itc2luZ2xlLXJpbmc6bnRoLWNoaWxkKDIpIHtcXG4gIGFuaW1hdGlvbi1kZWxheTogLTAuM3M7XFxufVxcblxcbi5sb2FkaW5nLWluZGljYXRvci1zaW5nbGUtcmluZzpudGgtY2hpbGQoMykge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAtMC4xNXM7XFxufVxcblxcbi5sb2FkaW5nLWluZGljYXRvci1zaW5nbGUtcmluZzpudGgtY2hpbGQoNCkge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAwcztcXG59XFxuXFxuQGtleWZyYW1lcyBsZHMtcmluZyB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLmJhc2UtdGFibGUge1xuICAuaGlkZSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gICYudGFibGUtcm9vdCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcbiAgfVxuXG4gIC50YWJsZS1oZWFkZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuXG4gICAgJjp3aGVyZSguY2VudGVyKSB7XG4gICAgICAudGFibGUtY2VsbCB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgIH1cbiAgICB9XG4gICAgJjp3aGVyZSguc3RhcnQpIHtcbiAgICAgIC50YWJsZS1jZWxsIHtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIH1cbiAgICB9XG4gICAgJjp3aGVyZSguZW5kKSB7XG4gICAgICAudGFibGUtY2VsbCB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC50YWJsZS1ib2R5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgfVxuXG4gIC50YWJsZS1yb3cge1xuICB9XG5cbiAgLnRhYmxlLWNlbGwge1xuICAgIHRleHQtYWxpZ246IHN0YXJ0O1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG4gICAgaGVpZ2h0OiA2MHB4O1xuICB9XG59XG5cbi5kYXRhLXRhYmxlIHtcbiAgJjp3aGVyZSgudGFibGUtaGVhZGVyKSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNGU0ZTc7XG4gIH1cblxuICAmOndoZXJlKC50YWJsZS1yb3cpIHtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI2U0ZTRlNztcblxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcbiAgICB9XG4gIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vY29tcG9uZW50cy90YWJsZS90YWJsZS1zdHlsZS5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7RUFDRTtJQUNFLGFBQWE7RUFDZjs7RUFFQTtJQUNFLFdBQVc7SUFDWCx5QkFBeUI7RUFDM0I7O0VBRUE7SUFDRSxXQUFXOztJQUVYO01BQ0U7UUFDRSxrQkFBa0I7TUFDcEI7SUFDRjtJQUNBO01BQ0U7UUFDRSxnQkFBZ0I7TUFDbEI7SUFDRjtJQUNBO01BQ0U7UUFDRSxpQkFBaUI7TUFDbkI7SUFDRjtFQUNGOztFQUVBO0lBQ0UsV0FBVztFQUNiOztFQUVBO0VBQ0E7O0VBRUE7SUFDRSxpQkFBaUI7SUFDakIsc0JBQXNCO0lBQ3RCLFlBQVk7RUFDZDtBQUNGOztBQUVBO0VBQ0U7SUFDRSxnQ0FBZ0M7RUFDbEM7O0VBRUE7SUFDRSxnQ0FBZ0M7O0lBRWhDO01BQ0UseUJBQXlCO0lBQzNCO0VBQ0Y7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuYmFzZS10YWJsZSB7XFxuICAuaGlkZSB7XFxuICAgIGRpc3BsYXk6IG5vbmU7XFxuICB9XFxuXFxuICAmLnRhYmxlLXJvb3Qge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcXG4gIH1cXG5cXG4gIC50YWJsZS1oZWFkZXIge1xcbiAgICB3aWR0aDogMTAwJTtcXG5cXG4gICAgJjp3aGVyZSguY2VudGVyKSB7XFxuICAgICAgLnRhYmxlLWNlbGwge1xcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICAmOndoZXJlKC5zdGFydCkge1xcbiAgICAgIC50YWJsZS1jZWxsIHtcXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XFxuICAgICAgfVxcbiAgICB9XFxuICAgICY6d2hlcmUoLmVuZCkge1xcbiAgICAgIC50YWJsZS1jZWxsIHtcXG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgfVxcblxcbiAgLnRhYmxlLWJvZHkge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gIH1cXG5cXG4gIC50YWJsZS1yb3cge1xcbiAgfVxcblxcbiAgLnRhYmxlLWNlbGwge1xcbiAgICB0ZXh0LWFsaWduOiBzdGFydDtcXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcXG4gICAgaGVpZ2h0OiA2MHB4O1xcbiAgfVxcbn1cXG5cXG4uZGF0YS10YWJsZSB7XFxuICAmOndoZXJlKC50YWJsZS1oZWFkZXIpIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNGU0ZTc7XFxuICB9XFxuXFxuICAmOndoZXJlKC50YWJsZS1yb3cpIHtcXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNGU0ZTc7XFxuXFxuICAgICY6aG92ZXIge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAuYmFzZS10ZXh0LWZpZWxkIHtcbiAgJjp3aGVyZSgudGV4dC1maWVsZC1yb290KSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cbn1cblxuLnRleHQtZmllbGQge1xuICAmLmxhYmVsIHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICB9XG5cbiAgJi5pbnB1dC13cmFwcGVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGhlaWdodDogMjJweDtcbiAgICBwYWRkaW5nOiAxNHB4O1xuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWQ0KTtcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XG4gICAgbWFyZ2luLXRvcDogOHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgfVxuXG4gICYuaW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xuXG4gICAgOjpwbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWExKTtcbiAgICB9XG4gIH1cblxuICAmLmhlbHBlci10ZXh0IHtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcblxuICAgICYuZXJyb3Ige1xuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLWFjY2VudC1yZWQtZGYpO1xuICAgIH1cbiAgfVxufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9jb21wb25lbnRzL3RleHQtZmllbGQvdGV4dC1maWVsZC1zdHlsZS5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7RUFDRTtJQUNFLFdBQVc7RUFDYjtBQUNGOztBQUVBO0VBQ0U7SUFDRSxnQ0FBZ0M7SUFDaEMsb0NBQW9DO0lBQ3BDLG9DQUFvQztFQUN0Qzs7RUFFQTtJQUNFLGFBQWE7SUFDYiw4QkFBOEI7SUFDOUIsbUJBQW1CO0lBQ25CLFlBQVk7SUFDWixhQUFhO0lBQ2IsZ0RBQWdEO0lBQ2hELGtCQUFrQjtJQUNsQixlQUFlO0lBQ2Ysa0JBQWtCO0VBQ3BCOztFQUVBO0lBQ0UsV0FBVztJQUNYLFlBQVk7SUFDWixhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLGtDQUFrQztJQUNsQyxzQ0FBc0M7O0lBRXRDO01BQ0UsbUNBQW1DO0lBQ3JDO0VBQ0Y7O0VBRUE7SUFDRSw4QkFBOEI7SUFDOUIsa0NBQWtDO0lBQ2xDLHNDQUFzQzs7SUFFdEM7TUFDRSxpQ0FBaUM7SUFDbkM7RUFDRjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5iYXNlLXRleHQtZmllbGQge1xcbiAgJjp3aGVyZSgudGV4dC1maWVsZC1yb290KSB7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgfVxcbn1cXG5cXG4udGV4dC1maWVsZCB7XFxuICAmLmxhYmVsIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1iYXNlKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xcbiAgfVxcblxcbiAgJi5pbnB1dC13cmFwcGVyIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xcbiAgICBoZWlnaHQ6IDIycHg7XFxuICAgIHBhZGRpbmc6IDE0cHg7XFxuICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWQ0KTtcXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xcbiAgICBtYXJnaW4tdG9wOiA4cHg7XFxuICAgIG1hcmdpbi1ib3R0b206IDRweDtcXG4gIH1cXG5cXG4gICYuaW5wdXQge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgYm9yZGVyOiBub25lO1xcbiAgICBvdXRsaW5lOiBub25lO1xcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xcblxcbiAgICA6OnBsYWNlaG9sZGVyIHtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWExKTtcXG4gICAgfVxcbiAgfVxcblxcbiAgJi5oZWxwZXItdGV4dCB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XFxuXFxuICAgICYuZXJyb3Ige1xcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQtcmVkLWRmKTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC5udXJpLXRoZW1lIHtcbiAgLS1jb2xvci1wcmltYXJ5LWJsYWNrOiAjMDAwMDAwO1xuICAtLWNvbG9yLXByaW1hcnktd2hpdGU6ICNmZmZmZmY7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhOiAjZmFmYWZhO1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS1mNDogI2Y0ZjRmNTtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktZTQ6ICNlNGU0ZTc7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWQ0OiAjZDRkNGQ4O1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS1hMTogI2ExYTFhYTtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktNzE6ICM3MTcxN2E7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTUyOiAjNTI1MjViO1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS0zZjogIzNmM2Y0NjtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktMjc6ICMyNzI3MmE7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTE4OiAjMTgxODFiO1xuXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTM5OiAjMzkxZDVkO1xuICAtLWNvbG9yLXBvaW50LXB1cnBsZS00YzogIzRjMjc3YztcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtZGQ6ICNkZGQxZjA7XG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLWU5OiAjZTllMGY1O1xuICAtLWNvbG9yLXBvaW50LXB1cnBsZS1mNDogI2Y0ZWZmYTtcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtNDE6ICM0YzFkODg7XG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTk1OiAjOTU3ZWI0O1xuXG4gIC0tY29sb3ItYWNjZW50LXJlZC1kZjogI2RmNTM1YztcbiAgLS1jb2xvci1hY2NlbnQtbWFnZW50YS1iMDogI2IwMmU0YztcbiAgLS1jb2xvci1hY2NlbnQtZ3JlZW4tMjg6ICMyODlhM2E7XG5cbiAgLS1jb2xvci1ldGMtc2tlbGV0b24tZTQ6ICNlNGU0ZTc7XG4gIC0tY29sb3ItZXRjLXNrZWxldG9uLWY3OiAjZjdmN2Y4O1xuICAtLWNvbG9yLWV0Yy1za2VsZXRvbi1mZjogI2ZmZmZmZjtcblxuICAtLWNvbG9yLWV0Yy1ob3Zlci1lZTogI2VlZWVlZTtcbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3R5bGVzL3Rva2VuL2NvbG9yLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFLDhCQUE4QjtFQUM5Qiw4QkFBOEI7RUFDOUIsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDOztFQUVoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7O0VBRWhDLDhCQUE4QjtFQUM5QixrQ0FBa0M7RUFDbEMsZ0NBQWdDOztFQUVoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQzs7RUFFaEMsNkJBQTZCO0FBQy9CXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5udXJpLXRoZW1lIHtcXG4gIC0tY29sb3ItcHJpbWFyeS1ibGFjazogIzAwMDAwMDtcXG4gIC0tY29sb3ItcHJpbWFyeS13aGl0ZTogI2ZmZmZmZjtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhOiAjZmFmYWZhO1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktZjQ6ICNmNGY0ZjU7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS1lNDogI2U0ZTRlNztcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWQ0OiAjZDRkNGQ4O1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktYTE6ICNhMWExYWE7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS03MTogIzcxNzE3YTtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTUyOiAjNTI1MjViO1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktM2Y6ICMzZjNmNDY7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS0yNzogIzI3MjcyYTtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTE4OiAjMTgxODFiO1xcblxcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtMzk6ICMzOTFkNWQ7XFxuICAtLWNvbG9yLXBvaW50LXB1cnBsZS00YzogIzRjMjc3YztcXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLWRkOiAjZGRkMWYwO1xcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtZTk6ICNlOWUwZjU7XFxuICAtLWNvbG9yLXBvaW50LXB1cnBsZS1mNDogI2Y0ZWZmYTtcXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTQxOiAjNGMxZDg4O1xcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtOTU6ICM5NTdlYjQ7XFxuXFxuICAtLWNvbG9yLWFjY2VudC1yZWQtZGY6ICNkZjUzNWM7XFxuICAtLWNvbG9yLWFjY2VudC1tYWdlbnRhLWIwOiAjYjAyZTRjO1xcbiAgLS1jb2xvci1hY2NlbnQtZ3JlZW4tMjg6ICMyODlhM2E7XFxuXFxuICAtLWNvbG9yLWV0Yy1za2VsZXRvbi1lNDogI2U0ZTRlNztcXG4gIC0tY29sb3ItZXRjLXNrZWxldG9uLWY3OiAjZjdmN2Y4O1xcbiAgLS1jb2xvci1ldGMtc2tlbGV0b24tZmY6ICNmZmZmZmY7XFxuXFxuICAtLWNvbG9yLWV0Yy1ob3Zlci1lZTogI2VlZWVlZTtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAubnVyaS10aGVtZSB7XG4gIC0tZm9udC1zaXplLXhzbTogMTJweDtcbiAgLS1mb250LXNpemUtc206IDE0cHg7XG4gIC0tZm9udC1zaXplLWJhc2U6IDE2cHg7XG4gIC0tZm9udC1zaXplLWxnOiAxOHB4O1xuICAtLWZvbnQtc2l6ZS14bDogMjBweDtcbiAgLS1mb250LXNpemUtMnhsOiAyNHB4O1xuICAtLWZvbnQtc2l6ZS0zeGw6IDMwcHg7XG4gIC0tZm9udC1zaXplLTR4bDogMzZweDtcbiAgLS1mb250LXNpemUtNXhsOiA0OHB4O1xuICAtLWZvbnQtc2l6ZS02eGw6IDYwcHg7XG5cbiAgLS1saW5lLWhlaWdodC14c206IDE4cHg7XG4gIC0tbGluZS1oZWlnaHQtc206IDE4cHg7XG4gIC0tbGluZS1oZWlnaHQtYmFzZTogMjJweDtcbiAgLS1saW5lLWhlaWdodC1sZzogMjRweDtcbiAgLS1saW5lLWhlaWdodC14bDogMjhweDtcbiAgLS1saW5lLWhlaWdodC0yeGw6IDMycHg7XG4gIC0tbGluZS1oZWlnaHQtM3hsOiAzNnB4O1xuICAtLWxpbmUtaGVpZ2h0LTR4bDogNDNweDtcbiAgLS1saW5lLWhlaWdodC01eGw6IDY2cHg7XG4gIC0tbGluZS1oZWlnaHQtNnhsOiA4MnB4O1xuXG4gIC0tZm9udC13ZWlnaHQtcmVndWxhcjogNDAwO1xuICAtLWZvbnQtd2VpZ2h0LW1lZGl1bTogNTAwO1xuICAtLWZvbnQtd2VpZ2h0LXNlbWlib2xkOiA2MDA7XG4gIC0tZm9udC13ZWlnaHQtYm9sZDogNzAwO1xuICAtLWZvbnQtd2VpZ2h0LWV4dHJhYm9sZDogODAwO1xufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9zdHlsZXMvdG9rZW4vZm9udC5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7RUFDRSxxQkFBcUI7RUFDckIsb0JBQW9CO0VBQ3BCLHNCQUFzQjtFQUN0QixvQkFBb0I7RUFDcEIsb0JBQW9CO0VBQ3BCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixxQkFBcUI7O0VBRXJCLHVCQUF1QjtFQUN2QixzQkFBc0I7RUFDdEIsd0JBQXdCO0VBQ3hCLHNCQUFzQjtFQUN0QixzQkFBc0I7RUFDdEIsdUJBQXVCO0VBQ3ZCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1Qjs7RUFFdkIsMEJBQTBCO0VBQzFCLHlCQUF5QjtFQUN6QiwyQkFBMkI7RUFDM0IsdUJBQXVCO0VBQ3ZCLDRCQUE0QjtBQUM5QlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIubnVyaS10aGVtZSB7XFxuICAtLWZvbnQtc2l6ZS14c206IDEycHg7XFxuICAtLWZvbnQtc2l6ZS1zbTogMTRweDtcXG4gIC0tZm9udC1zaXplLWJhc2U6IDE2cHg7XFxuICAtLWZvbnQtc2l6ZS1sZzogMThweDtcXG4gIC0tZm9udC1zaXplLXhsOiAyMHB4O1xcbiAgLS1mb250LXNpemUtMnhsOiAyNHB4O1xcbiAgLS1mb250LXNpemUtM3hsOiAzMHB4O1xcbiAgLS1mb250LXNpemUtNHhsOiAzNnB4O1xcbiAgLS1mb250LXNpemUtNXhsOiA0OHB4O1xcbiAgLS1mb250LXNpemUtNnhsOiA2MHB4O1xcblxcbiAgLS1saW5lLWhlaWdodC14c206IDE4cHg7XFxuICAtLWxpbmUtaGVpZ2h0LXNtOiAxOHB4O1xcbiAgLS1saW5lLWhlaWdodC1iYXNlOiAyMnB4O1xcbiAgLS1saW5lLWhlaWdodC1sZzogMjRweDtcXG4gIC0tbGluZS1oZWlnaHQteGw6IDI4cHg7XFxuICAtLWxpbmUtaGVpZ2h0LTJ4bDogMzJweDtcXG4gIC0tbGluZS1oZWlnaHQtM3hsOiAzNnB4O1xcbiAgLS1saW5lLWhlaWdodC00eGw6IDQzcHg7XFxuICAtLWxpbmUtaGVpZ2h0LTV4bDogNjZweDtcXG4gIC0tbGluZS1oZWlnaHQtNnhsOiA4MnB4O1xcblxcbiAgLS1mb250LXdlaWdodC1yZWd1bGFyOiA0MDA7XFxuICAtLWZvbnQtd2VpZ2h0LW1lZGl1bTogNTAwO1xcbiAgLS1mb250LXdlaWdodC1zZW1pYm9sZDogNjAwO1xcbiAgLS1mb250LXdlaWdodC1ib2xkOiA3MDA7XFxuICAtLWZvbnQtd2VpZ2h0LWV4dHJhYm9sZDogODAwO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107XG5cbiAgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICB2YXIgbmVlZExheWVyID0gdHlwZW9mIGl0ZW1bNV0gIT09IFwidW5kZWZpbmVkXCI7XG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIik7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIik7XG4gICAgICB9XG4gICAgICBjb250ZW50ICs9IGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSk7XG4gICAgICBpZiAobmVlZExheWVyKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07XG5cbiAgLy8gaW1wb3J0IGEgbGlzdCBvZiBtb2R1bGVzIGludG8gdGhlIGxpc3RcbiAgbGlzdC5pID0gZnVuY3Rpb24gaShtb2R1bGVzLCBtZWRpYSwgZGVkdXBlLCBzdXBwb3J0cywgbGF5ZXIpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIHVuZGVmaW5lZF1dO1xuICAgIH1cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuICAgIGlmIChkZWR1cGUpIHtcbiAgICAgIGZvciAodmFyIGsgPSAwOyBrIDwgdGhpcy5sZW5ndGg7IGsrKykge1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2tdWzBdO1xuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHZhciBfayA9IDA7IF9rIDwgbW9kdWxlcy5sZW5ndGg7IF9rKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2tdKTtcbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAobWVkaWEpIHtcbiAgICAgICAgaWYgKCFpdGVtWzJdKSB7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXRlbSkge1xuICB2YXIgY29udGVudCA9IGl0ZW1bMV07XG4gIHZhciBjc3NNYXBwaW5nID0gaXRlbVszXTtcbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHJldHVybiBbY29udGVudF0uY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuICByZXR1cm4gW2NvbnRlbnRdLmpvaW4oXCJcXG5cIik7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcbmZ1bmN0aW9uIGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpIHtcbiAgdmFyIHJlc3VsdCA9IC0xO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKSB7XG4gIHZhciBpZENvdW50TWFwID0ge307XG4gIHZhciBpZGVudGlmaWVycyA9IFtdO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuICB2YXIgdXBkYXRlciA9IGZ1bmN0aW9uIHVwZGF0ZXIobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCAmJiBuZXdPYmouc3VwcG9ydHMgPT09IG9iai5zdXBwb3J0cyAmJiBuZXdPYmoubGF5ZXIgPT09IG9iai5sYXllcikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiB1cGRhdGVyO1xufVxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAobGlzdCwgb3B0aW9ucykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcbiAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9pZGVudGlmaWVyID0gbGFzdElkZW50aWZpZXJzW19pXTtcbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuICAgICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoX2luZGV4LCAxKTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpO1xuXG4gICAgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcbiAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uIGlmIGFjY2VzcyB0byBpZnJhbWUgaXMgYmxvY2tlZFxuICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICBzdHlsZVRhcmdldCA9IHN0eWxlVGFyZ2V0LmNvbnRlbnREb2N1bWVudC5oZWFkO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICBzdHlsZVRhcmdldCA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0QnlTZWxlY3RvcihpbnNlcnQsIHN0eWxlKSB7XG4gIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQoaW5zZXJ0KTtcbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydEJ5U2VsZWN0b3I7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3R5bGVcIik7XG4gIG9wdGlvbnMuc2V0QXR0cmlidXRlcyhlbGVtZW50LCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICBvcHRpb25zLmluc2VydChlbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xuICByZXR1cm4gZWxlbWVudDtcbn1cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlczsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaikge1xuICB2YXIgY3NzID0gXCJcIjtcbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG4gIHZhciBuZWVkTGF5ZXIgPSB0eXBlb2Ygb2JqLmxheWVyICE9PSBcInVuZGVmaW5lZFwiO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG4gIGNzcyArPSBvYmouY3NzO1xuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICB2YXIgc291cmNlTWFwID0gb2JqLnNvdXJjZU1hcDtcbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9XG5cbiAgLy8gRm9yIG9sZCBJRVxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG4gIG9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0oY3NzLCBzdHlsZUVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG59XG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBkb21BUEkob3B0aW9ucykge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKCkge30sXG4gICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHt9XG4gICAgfTtcbiAgfVxuICB2YXIgc3R5bGVFbGVtZW50ID0gb3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgdXBkYXRlOiBmdW5jdGlvbiB1cGRhdGUob2JqKSB7XG4gICAgICBhcHBseShzdHlsZUVsZW1lbnQsIG9wdGlvbnMsIG9iaik7XG4gICAgfSxcbiAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZUVsZW1lbnQpO1xuICAgIH1cbiAgfTtcbn1cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cbm1vZHVsZS5leHBvcnRzID0gc3R5bGVUYWdUcmFuc2Zvcm07IiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18xMTlfXzsiLCJtb2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19FWFRFUk5BTF9NT0RVTEVfXzIyNl9fOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm5jID0gdW5kZWZpbmVkOyIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9hdmF0YXItc3R5bGUuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vYXZhdGFyLXN0eWxlLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBDaGlsZHJlbiwgY2xvbmVFbGVtZW50LCBmb3J3YXJkUmVmLCBpc1ZhbGlkRWxlbWVudCwgfSBmcm9tIFwicmVhY3RcIjtcbmZ1bmN0aW9uIGNvbXBvc2VSZWZzKCkge1xuICAgIHZhciByZWZzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgcmVmc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgIH1cbiAgICByZXR1cm4gZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgcmVmcy5mb3JFYWNoKGZ1bmN0aW9uIChyZWYpIHtcbiAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHJlZiA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZihub2RlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi5jdXJyZW50ID0gbm9kZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH07XG59XG52YXIgQ29tcG9zZXIgPSBmb3J3YXJkUmVmKGZ1bmN0aW9uIChfYSwgcmVmKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sIGNvbXBvc2VyUHJvcHMgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCJdKTtcbiAgICB2YXIgY2hpbGRBcnJheSA9IENoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pO1xuICAgIGlmIChjaGlsZEFycmF5Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ29tcG9zZXIgY2FuIG9ubHkgaGF2ZSBvbmUgY2hpbGRcIik7XG4gICAgfVxuICAgIHZhciBpc1ZhbGlkQ2hpbGQgPSBpc1ZhbGlkRWxlbWVudChjaGlsZEFycmF5WzBdKTtcbiAgICBpZiAoIWlzVmFsaWRDaGlsZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjaGlsZCBzaG91bGQgYmUgUmVhY3Qgbm9kZSFcIik7XG4gICAgfVxuICAgIHZhciBjaGlsZCA9IGNoaWxkQXJyYXlbMF07XG4gICAgdmFyIGNoaWxkUmVmID0gZ2V0RWxlbWVudFJlZihjaGlsZCk7XG4gICAgdmFyIG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhjb21wb3NlclByb3BzLCBjaGlsZC5wcm9wcyk7XG4gICAgcmV0dXJuIGNsb25lRWxlbWVudChjaGlsZCwgX19hc3NpZ24oX19hc3NpZ24oe30sIG1lcmdlZFByb3BzKSwgeyByZWY6IHJlZiA/IGNvbXBvc2VSZWZzKHJlZiwgY2hpbGRSZWYpIDogY2hpbGRSZWYgfSkpO1xufSk7XG5Db21wb3Nlci5kaXNwbGF5TmFtZSA9IFwiQ29tcG9zZXJcIjtcbmZ1bmN0aW9uIG1lcmdlUHJvcHMoY29tcG9zZXJQcm9wcywgY2hpbGRQcm9wcykge1xuICAgIHZhciBvdmVycmlkZVByb3BzID0gX19hc3NpZ24oe30sIGNoaWxkUHJvcHMpO1xuICAgIHZhciBfbG9vcF8xID0gZnVuY3Rpb24gKHByb3BOYW1lKSB7XG4gICAgICAgIHZhciBjb21wb3NlclByb3BWYWx1ZSA9IGNvbXBvc2VyUHJvcHNbcHJvcE5hbWVdO1xuICAgICAgICB2YXIgY2hpbGRQcm9wVmFsdWUgPSBjaGlsZFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgdmFyIGlzSGFuZGxlciA9IC9eb25bQS1aXS8udGVzdChwcm9wTmFtZSk7XG4gICAgICAgIGlmIChpc0hhbmRsZXIpIHtcbiAgICAgICAgICAgIGlmIChjb21wb3NlclByb3BWYWx1ZSAmJiBjaGlsZFByb3BWYWx1ZSkge1xuICAgICAgICAgICAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNoaWxkUHJvcFZhbHVlLmFwcGx5KHZvaWQgMCwgYXJncyk7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvc2VyUHJvcFZhbHVlLmFwcGx5KHZvaWQgMCwgYXJncyk7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbXBvc2VyUHJvcFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBjb21wb3NlclByb3BWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJzdHlsZVwiKSB7XG4gICAgICAgICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb21wb3NlclByb3BWYWx1ZSksIGNoaWxkUHJvcFZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChwcm9wTmFtZSA9PT0gXCJjbGFzc05hbWVcIikge1xuICAgICAgICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBbY29tcG9zZXJQcm9wVmFsdWUsIGNoaWxkUHJvcFZhbHVlXVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAuam9pbihcIiBcIik7XG4gICAgICAgIH1cbiAgICB9O1xuICAgIGZvciAodmFyIHByb3BOYW1lIGluIGNvbXBvc2VyUHJvcHMpIHtcbiAgICAgICAgX2xvb3BfMShwcm9wTmFtZSk7XG4gICAgfVxuICAgIHJldHVybiBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY29tcG9zZXJQcm9wcyksIG92ZXJyaWRlUHJvcHMpO1xufVxuZnVuY3Rpb24gZ2V0RWxlbWVudFJlZihlbGVtZW50KSB7XG4gICAgdmFyIF9hLCBfYjtcbiAgICB2YXIgZ2V0dGVyID0gKF9hID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihlbGVtZW50LnByb3BzLCBcInJlZlwiKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmdldDtcbiAgICB2YXIgbWF5V2FybiA9IGdldHRlciAmJiBcImlzUmVhY3RXYXJuaW5nXCIgaW4gZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZztcbiAgICBpZiAobWF5V2Fybikge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5yZWY7XG4gICAgfVxuICAgIGdldHRlciA9IChfYiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZWxlbWVudCwgXCJyZWZcIikpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5nZXQ7XG4gICAgbWF5V2FybiA9IGdldHRlciAmJiBcImlzUmVhY3RXYXJuaW5nXCIgaW4gZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZztcbiAgICBpZiAobWF5V2Fybikge1xuICAgICAgICByZXR1cm4gZWxlbWVudC5wcm9wcy5yZWY7XG4gICAgfVxuICAgIHJldHVybiAoZWxlbWVudC5wcm9wcy5yZWYgfHwgZWxlbWVudC5yZWYpO1xufVxuZXhwb3J0IGRlZmF1bHQgQ29tcG9zZXI7XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBDb21wb3NlciBmcm9tIFwiLi4vY29yZS9jb21wb3NlclwiO1xuZXhwb3J0IHZhciBCYXNlQmFkZ2UgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgX2EgPSBwcm9wcy5hc0NoaWxkLCBhc0NoaWxkID0gX2EgPT09IHZvaWQgMCA/IGZhbHNlIDogX2EsIGJvcmRlckNvbG9yID0gcHJvcHMuYm9yZGVyQ29sb3IsIF9iID0gcHJvcHMudGV4dENvbG9yLCB0ZXh0Q29sb3IgPSBfYiA9PT0gdm9pZCAwID8gXCJibGFja1wiIDogX2IsIHJhZGl1cyA9IHByb3BzLnJhZGl1cywgYmFja2dyb3VuZENvbG9yID0gcHJvcHMuYmFja2dyb3VuZENvbG9yLCBfYyA9IHByb3BzLnNpemUsIHNpemUgPSBfYyA9PT0gdm9pZCAwID8gXCJsXCIgOiBfYywgc3R5bGUgPSBwcm9wcy5zdHlsZSwgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHZhciBDb21wID0gYXNDaGlsZCA/IENvbXBvc2VyIDogXCJkaXZcIjtcbiAgICB2YXIgY29tcG9zZWRDbGFzc05hbWUgPSBcIm51cmktdGhlbWUgXCIuY29uY2F0KGFzQ2hpbGQgPyBcIlwiIDogXCJiYXNlLWJhZGdlXCIsIFwiIFwiKS5jb25jYXQoc2l6ZSwgXCIgYm9yZGVyLVwiKS5jb25jYXQoYm9yZGVyQ29sb3IsIFwiIHRleHQtXCIpLmNvbmNhdCh0ZXh0Q29sb3IsIFwiIGJhY2tncm91bmQtXCIpLmNvbmNhdChiYWNrZ3JvdW5kQ29sb3IsIFwiIFwiKS5jb25jYXQoY2xhc3NOYW1lKTtcbiAgICByZXR1cm4gKF9qc3goQ29tcCwgeyBzdHlsZTogX19hc3NpZ24oeyBib3JkZXJSYWRpdXM6IFwiXCIuY29uY2F0KHJhZGl1cywgXCJweFwiKSB9LCBzdHlsZSksIGNsYXNzTmFtZTogY29tcG9zZWRDbGFzc05hbWUsIGNoaWxkcmVuOiBjaGlsZHJlbiB9KSk7XG59O1xuIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgXCIuL2F2YXRhci1zdHlsZS5jc3NcIjtcbmltcG9ydCB7IEJhc2VCYWRnZSB9IGZyb20gXCIuLi9iYWRnZS9iYXNlLWJhZGdlXCI7XG52YXIgQXZhdGFyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNpemUgPSBwcm9wcy5zaXplLCBzcmMgPSBwcm9wcy5zcmMsIGFsdCA9IHByb3BzLmFsdCwgYmFkZ2VPcHRpb24gPSBwcm9wcy5iYWRnZU9wdGlvbjtcbiAgICB2YXIgX2EgPSB1c2VTdGF0ZShmYWxzZSksIGlzSW1hZ2VEb3dubG9hZCA9IF9hWzBdLCBzZXRJc0ltYWdlRG93bmxvYWQgPSBfYVsxXTtcbiAgICByZXR1cm4gKF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImF2YXRhciBcIi5jb25jYXQoc2l6ZSksIGNoaWxkcmVuOiBbX2pzeChcImltZ1wiLCB7IHNyYzogc3JjLCBhbHQ6IGFsdCAhPT0gbnVsbCAmJiBhbHQgIT09IHZvaWQgMCA/IGFsdCA6IFwiYXZhdGFyXCIsIGNsYXNzTmFtZTogXCJhdmF0YXIgXCIuY29uY2F0KHNpemUsIFwiIFwiKS5jb25jYXQoIWlzSW1hZ2VEb3dubG9hZCA/IFwiaGlkZGVuXCIgOiBcIlwiKSwgb25Mb2FkOiBmdW5jdGlvbiAoKSB7IHJldHVybiBzZXRJc0ltYWdlRG93bmxvYWQodHJ1ZSk7IH0gfSksICFpc0ltYWdlRG93bmxvYWQgJiYgKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiYXZhdGFyIGF2YXRhci1za2VsZXRvbiBcIi5jb25jYXQoc2l6ZSksIGNoaWxkcmVuOiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImF2YXRhciBza2VsZXRvbi1hbmltYXRpb25cIiB9KSB9KSksIF9qc3goQmFzZUJhZGdlLCB7IGFzQ2hpbGQ6IHRydWUsIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0OiBcIjBcIixcbiAgICAgICAgICAgICAgICAgICAgYm90dG9tOiBcIjBcIixcbiAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogYmFkZ2VPcHRpb24gfSldIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCBBdmF0YXI7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vYnV0dG9uLXN0eWxlLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2J1dHRvbi1zdHlsZS5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vY29sb3IuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vY29sb3IuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2ZvbnQuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vZm9udC5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGZvcndhcmRSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBDb21wb3NlciBmcm9tIFwiLi4vY29yZS9jb21wb3NlclwiO1xuaW1wb3J0IFwiLi9idXR0b24tc3R5bGUuY3NzXCI7XG5pbXBvcnQgXCIuLi8uLi9zdHlsZXMvdG9rZW4vY29sb3IuY3NzXCI7XG5pbXBvcnQgXCIuLi8uLi9zdHlsZXMvdG9rZW4vZm9udC5jc3NcIjtcbnZhciBCYXNlQnV0dG9uID0gZm9yd2FyZFJlZihmdW5jdGlvbiAoX2EsIHJlZikge1xuICAgIHZhciBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLCBfYiA9IF9hLmFzQ2hpbGQsIGFzQ2hpbGQgPSBfYiA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYiwgY2xhc3NOYW1lID0gX2EuY2xhc3NOYW1lLCBwcm9wcyA9IF9fcmVzdChfYSwgW1wiY2hpbGRyZW5cIiwgXCJhc0NoaWxkXCIsIFwiY2xhc3NOYW1lXCJdKTtcbiAgICB2YXIgQ29tcCA9IGFzQ2hpbGQgPyBDb21wb3NlciA6IFwiYnV0dG9uXCI7XG4gICAgcmV0dXJuIChfanN4KENvbXAsIF9fYXNzaWduKHsgcmVmOiByZWYsIGNsYXNzTmFtZTogYXNDaGlsZCA/IGNsYXNzTmFtZSA6IFwiYmFzZS1idXR0b24gXCIuY29uY2F0KGNsYXNzTmFtZSAhPT0gbnVsbCAmJiBjbGFzc05hbWUgIT09IHZvaWQgMCA/IGNsYXNzTmFtZSA6IFwiXCIpLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb25zb2xlLmxvZyhcImJhc2VcIik7IH0gfSwgcHJvcHMsIHsgY2hpbGRyZW46IGNoaWxkcmVuIH0pKSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IEJhc2VCdXR0b247XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vbG9hZGluZy1zdHlsZS5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9sb2FkaW5nLXN0eWxlLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuL2xvYWRpbmctc3R5bGUuY3NzXCI7XG52YXIgTG9hZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwiY29tcG9uZW50LWxvYWRpbmctY29udGFpbmVyXCIsIGNoaWxkcmVuOiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsb2FkaW5nLWluZGljYXRvci1yaW5nXCIsIGNoaWxkcmVuOiBbX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsb2FkaW5nLWluZGljYXRvci1zaW5nbGUtcmluZ1wiIH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nXCIgfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibG9hZGluZy1pbmRpY2F0b3Itc2luZ2xlLXJpbmdcIiB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsb2FkaW5nLWluZGljYXRvci1zaW5nbGUtcmluZ1wiIH0pXSB9KSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgTG9hZGluZztcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwgRnJhZ21lbnQgYXMgX0ZyYWdtZW50LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgQmFzZUJ1dHRvbiBmcm9tIFwiLi9iYXNlLWJ1dHRvblwiO1xuaW1wb3J0IExvYWRpbmcgZnJvbSBcIi4uL2xvYWRpbmcvbG9hZGluZ1wiO1xudmFyIENUQUJ1dHRvbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB0ZXh0ID0gcHJvcHMudGV4dCwgX2EgPSBwcm9wcy52YXJpYW50LCB2YXJpYW50ID0gX2EgPT09IHZvaWQgMCA/IFwicHJpbWFyeVwiIDogX2EsIF9iID0gcHJvcHMuc2l6ZSwgc2l6ZSA9IF9iID09PSB2b2lkIDAgPyBcIm1cIiA6IF9iLCBfYyA9IHByb3BzLmRpc2FibGVkLCBkaXNhYmxlZCA9IF9jID09PSB2b2lkIDAgPyBmYWxzZSA6IF9jLCBpY29uID0gcHJvcHMuaWNvbiwgX2QgPSBwcm9wcy5sb2FkaW5nLCBsb2FkaW5nID0gX2QgPT09IHZvaWQgMCA/IGZhbHNlIDogX2Q7XG4gICAgcmV0dXJuIChfanN4KEJhc2VCdXR0b24sIF9fYXNzaWduKHt9LCBwcm9wcywgeyBjbGFzc05hbWU6IFwibnVyaS10aGVtZSBjdGEtYnV0dG9uIFwiLmNvbmNhdChkaXNhYmxlZCA/IFwiZGlzYWJsZWRcIiA6IHZhcmlhbnQsIFwiIFwiKS5jb25jYXQoc2l6ZSksIGNoaWxkcmVuOiBsb2FkaW5nID8gKF9qc3goTG9hZGluZywge30pKSA6IChfanN4cyhfRnJhZ21lbnQsIHsgY2hpbGRyZW46IFtpY29uLCB0ZXh0XSB9KSkgfSkpKTtcbn07XG5leHBvcnQgZGVmYXVsdCBDVEFCdXR0b247XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEJhc2VCYWRnZSB9IGZyb20gXCIuL2Jhc2UtYmFkZ2VcIjtcbnZhciBPcHRpb25CYWRnZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBvcHRpb24gPSBwcm9wcy5vcHRpb247XG4gICAgcmV0dXJuIF9qc3goQmFzZUJhZGdlLCBfX2Fzc2lnbih7fSwgcHJvcHMsIHsgY2hpbGRyZW46IG9wdGlvbiB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgT3B0aW9uQmFkZ2U7XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IEJhc2VCYWRnZSB9IGZyb20gXCIuL2Jhc2UtYmFkZ2VcIjtcbnZhciBJY29uVGV4dEJhZGdlID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGljb24gPSBwcm9wcy5pY29uLCB0ZXh0ID0gcHJvcHMudGV4dDtcbiAgICByZXR1cm4gKF9qc3hzKEJhc2VCYWRnZSwgX19hc3NpZ24oe30sIHByb3BzLCB7IGNoaWxkcmVuOiBbaWNvbiwgX2pzeChcInNwYW5cIiwgeyBjaGlsZHJlbjogdGV4dCB9KV0gfSkpKTtcbn07XG5leHBvcnQgZGVmYXVsdCBJY29uVGV4dEJhZGdlO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2JhZGdlLXN0eWxlLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2JhZGdlLXN0eWxlLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi9iYWRnZS1zdHlsZS5jc3NcIjtcbmltcG9ydCB7IEJhc2VCYWRnZSB9IGZyb20gXCIuL2Jhc2UtYmFkZ2VcIjtcbnZhciBJY29uVGV4dE9wdGlvbkJhZGdlID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGljb24gPSBwcm9wcy5pY29uLCB0ZXh0ID0gcHJvcHMudGV4dCwgb3B0aW9uID0gcHJvcHMub3B0aW9uO1xuICAgIHJldHVybiAoX2pzeHMoQmFzZUJhZGdlLCBfX2Fzc2lnbih7fSwgcHJvcHMsIHsgY2xhc3NOYW1lOiBcImljb24tdGV4dC1vcHRpb25cIiwgY2hpbGRyZW46IFtfanN4cyhcInNwYW5cIiwgeyBjaGlsZHJlbjogW2ljb24sIF9qc3goXCJzcGFuXCIsIHsgY2hpbGRyZW46IHRleHQgfSldIH0pLCBvcHRpb25dIH0pKSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgSWNvblRleHRPcHRpb25CYWRnZTtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi90YWJsZS1zdHlsZS5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi90YWJsZS1zdHlsZS5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBcIi4vdGFibGUtc3R5bGUuY3NzXCI7XG52YXIgVGFibGVSb290ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgcmV0dXJuIF9qc3goXCJ0YWJsZVwiLCB7IGNsYXNzTmFtZTogXCJiYXNlLXRhYmxlIHRhYmxlLXJvb3RcIiwgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuIH0pO1xufTtcbnZhciBUYWJsZUhlYWRlciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBfYSA9IHByb3BzLmp1c3RpZnksIGp1c3RpZnkgPSBfYSA9PT0gdm9pZCAwID8gXCJjZW50ZXJcIiA6IF9hLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImp1c3RpZnlcIiwgXCJjbGFzc05hbWVcIl0pO1xuICAgIHJldHVybiAoX2pzeChcInRoZWFkXCIsIHsgY2xhc3NOYW1lOiBcImJhc2UtdGFibGUgdGFibGUtaGVhZGVyIFwiLmNvbmNhdChqdXN0aWZ5LCBcIiBcIikuY29uY2F0KGNsYXNzTmFtZSksIGNoaWxkcmVuOiBwcm9wcy5jaGlsZHJlbiB9KSk7XG59O1xudmFyIFRhYmxlUm93ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiY2xhc3NOYW1lXCJdKTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IFtcImJhc2UtdGFibGVcIiwgXCJ0YWJsZS1yb3dcIiwgY2xhc3NOYW1lXS5qb2luKFwiIFwiKTtcbiAgICByZXR1cm4gKF9qc3goXCJ0clwiLCBfX2Fzc2lnbih7IGNsYXNzTmFtZTogY2xhc3NOYW1lcyB9LCByZXN0LCB7IGNoaWxkcmVuOiBwcm9wcy5jaGlsZHJlbiB9KSkpO1xufTtcbnZhciBUYWJsZUJvZHkgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICByZXR1cm4gX2pzeChcInRib2R5XCIsIHsgY2xhc3NOYW1lOiBcImJhc2UtdGFibGUgdGFibGUtYm9keVwiLCBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW4gfSk7XG59O1xudmFyIFRhYmxlQ2VsbCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImNsYXNzTmFtZVwiXSk7XG4gICAgdmFyIGNsYXNzTmFtZXMgPSBbXCJiYXNlLXRhYmxlXCIsIFwidGFibGUtY2VsbFwiLCBjbGFzc05hbWVdLmpvaW4oXCIgXCIpO1xuICAgIHJldHVybiAoX2pzeChcInRkXCIsIF9fYXNzaWduKHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzIH0sIHJlc3QsIHsgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuIH0pKSk7XG59O1xuVGFibGVSb290LkhlYWRlciA9IFRhYmxlSGVhZGVyO1xuVGFibGVSb290LkJvZHkgPSBUYWJsZUJvZHk7XG5UYWJsZVJvb3QuUm93ID0gVGFibGVSb3c7XG5UYWJsZVJvb3QuQ2VsbCA9IFRhYmxlQ2VsbDtcbmV4cG9ydCBkZWZhdWx0IFRhYmxlUm9vdDtcbiIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgVGFibGVSb290IGZyb20gXCIuL2Jhc2UtdGFibGVcIjtcbmltcG9ydCBCYXNlQnV0dG9uIGZyb20gXCIuLi9idXR0b24vYmFzZS1idXR0b25cIjtcbnZhciBEYXRhVGFibGUgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgcm93cyA9IHByb3BzLnJvd3MsIGNvbHVtbnMgPSBwcm9wcy5jb2x1bW5zO1xuICAgIHZhciBfYSA9IHVzZVN0YXRlKHJvd3MubWFwKGZ1bmN0aW9uIChyb3cpIHsgcmV0dXJuICh7IHJvdzogcm93LCBoaWRlOiBmYWxzZSB9KTsgfSkpLCBkaXNwbGF5Um93cyA9IF9hWzBdLCBzZXREaXNwbGF5Um93cyA9IF9hWzFdO1xuICAgIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNldERpc3BsYXlSb3dzKHJvd3MubWFwKGZ1bmN0aW9uIChyb3cpIHtcbiAgICAgICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgICAgICByZXR1cm4gKHtcbiAgICAgICAgICAgICAgICByb3c6IHJvdyxcbiAgICAgICAgICAgICAgICBoaWRlOiAoX2IgPSAoX2EgPSBkaXNwbGF5Um93cy5maW5kKGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiBpdGVtLnJvdy5pZCA9PT0gcm93LmlkOyB9KSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmhpZGUpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IGZhbHNlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKTtcbiAgICB9LCBbcm93c10pO1xuICAgIHJldHVybiAoX2pzeHMoVGFibGVSb290LCB7IGNoaWxkcmVuOiBbX2pzeChUYWJsZVJvb3QuSGVhZGVyLCB7IGNsYXNzTmFtZTogXCJkYXRhLXRhYmxlXCIsIGNoaWxkcmVuOiBfanN4KFRhYmxlUm9vdC5Sb3csIHsgY2hpbGRyZW46IGRpc3BsYXlSb3dzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFRhYmxlUm9vdC5DZWxsLCB7IGNsYXNzTmFtZTogaXRlbS5oaWRlID8gXCJoaWRlXCIgOiBcIlwiLCBjaGlsZHJlbjogX2pzeChCYXNlQnV0dG9uLCB7IGFzQ2hpbGQ6IHRydWUsIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgdmFyIF9hLCBfYjsgcmV0dXJuIChfYiA9IChfYSA9IGl0ZW0ucm93KS5vbkNsaWNrUm93KSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuY2FsbChfYSwgaXRlbS5yb3cuaWQpOyB9LCBjaGlsZHJlbjogaXRlbS5yb3cudmFsdWUgfSkgfSwgaXRlbS5yb3cuaWQpKTtcbiAgICAgICAgICAgICAgICAgICAgfSkgfSkgfSksIF9qc3goVGFibGVSb290LkJvZHksIHsgY2hpbGRyZW46IGNvbHVtbnMubWFwKGZ1bmN0aW9uIChjb2x1bW4pIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChfanN4KFRhYmxlUm9vdC5Sb3csIHsgY2xhc3NOYW1lOiBcImRhdGEtdGFibGVcIiwgY2hpbGRyZW46IGRpc3BsYXlSb3dzLm1hcChmdW5jdGlvbiAoaXRlbSkgeyByZXR1cm4gKF9qc3goVGFibGVSb290LkNlbGwsIHsgY2xhc3NOYW1lOiBpdGVtLmhpZGUgPyBcImhpZGVcIiA6IFwiXCIsIGNoaWxkcmVuOiBfanN4KEJhc2VCdXR0b24sIHsgYXNDaGlsZDogdHJ1ZSwgb25DbGljazogZnVuY3Rpb24gKCkgeyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gY29sdW1uW2l0ZW0ucm93LmlkXSkub25DbGlja0NlbGwpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hKTsgfSwgY2hpbGRyZW46IGNvbHVtbltpdGVtLnJvdy5pZF0udmFsdWUgfSkgfSwgaXRlbS5yb3cuaWQpKTsgfSkgfSkpO1xuICAgICAgICAgICAgICAgIH0pIH0pXSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgRGF0YVRhYmxlO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3RleHQtZmllbGQtc3R5bGUuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vdGV4dC1maWVsZC1zdHlsZS5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlU3RhdGUsIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgXCIuL3RleHQtZmllbGQtc3R5bGUuY3NzXCI7XG5pbXBvcnQgXCIuLi8uLi9zdHlsZXMvdG9rZW4vZm9udC5jc3NcIjtcbnZhciBUZXh0TGFiZWwgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgdGV4dCA9IHByb3BzLnRleHQsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICByZXR1cm4gX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCBjaGlsZHJlbjogdGV4dCB9KTtcbn07XG52YXIgSW5wdXRGaWVsZCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHBsYWNlaG9sZGVyID0gcHJvcHMucGxhY2Vob2xkZXIsIG5hbWUgPSBwcm9wcy5uYW1lLCBvbkNoYW5nZSA9IHByb3BzLm9uQ2hhbmdlO1xuICAgIHZhciBfYSA9IHVzZUNvbnRleHQoVGV4dEZpZWxkQ29udGV4dCksIGNvbnZlcnRFcnJvck1lc3NhZ2UgPSBfYS5jb252ZXJ0RXJyb3JNZXNzYWdlLCBjb252ZXJ0RXJyb3JTdGF0ZSA9IF9hLmNvbnZlcnRFcnJvclN0YXRlLCB2YWxpZGF0aW9ucyA9IF9hLnZhbGlkYXRpb25zO1xuICAgIHZhciB2YWxpZGF0ZUlucHV0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGlmICh2YWxpZGF0aW9ucykge1xuICAgICAgICAgICAgdmFyIGZhaWxlZFZhbGlkYXRpb24gPSB2YWxpZGF0aW9ucy5maW5kKGZ1bmN0aW9uICh2YWxpZGF0aW9uKSB7IHJldHVybiAhdmFsaWRhdGlvbi5ydWxlLnRlc3QodmFsdWUpOyB9KTtcbiAgICAgICAgICAgIGlmIChmYWlsZWRWYWxpZGF0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29udmVydEVycm9yU3RhdGUodHJ1ZSk7XG4gICAgICAgICAgICAgICAgY29udmVydEVycm9yTWVzc2FnZShmYWlsZWRWYWxpZGF0aW9uLm1lc3NhZ2UpO1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnZlcnRFcnJvclN0YXRlKGZhbHNlKTtcbiAgICAgICAgICAgIGNvbnZlcnRFcnJvck1lc3NhZ2UoXCJcIik7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9O1xuICAgIHJldHVybiAoX2pzeChcImlucHV0XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgbmFtZTogbmFtZSwgb25DaGFuZ2U6IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICB2YWxpZGF0ZUlucHV0KGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlKTtcbiAgICAgICAgfSB9KSk7XG59O1xudmFyIEhlbHBlclRleHQgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgdGV4dCA9IHByb3BzLnRleHQsIF9hID0gcHJvcHMuY2xhc3NOYW1lLCBjbGFzc05hbWUgPSBfYSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYTtcbiAgICB2YXIgX2IgPSB1c2VDb250ZXh0KFRleHRGaWVsZENvbnRleHQpLCBlcnJvck1lc3NhZ2UgPSBfYi5lcnJvck1lc3NhZ2UsIGlzRXJyb3IgPSBfYi5pc0Vycm9yO1xuICAgIHZhciBlcnJvckNsYXNzTmFtZSA9IGlzRXJyb3IgPyBcImVycm9yXCIgOiBcIlwiO1xuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJcIi5jb25jYXQoY2xhc3NOYW1lLCBcIiBcIikuY29uY2F0KGVycm9yQ2xhc3NOYW1lKSwgY2hpbGRyZW46IGVycm9yTWVzc2FnZSAhPT0gbnVsbCAmJiBlcnJvck1lc3NhZ2UgIT09IHZvaWQgMCA/IGVycm9yTWVzc2FnZSA6IHRleHQgfSkpO1xufTtcbnZhciBUZXh0RmllbGRDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7XG4gICAgaXNFcnJvcjogZmFsc2UsXG4gICAgY29udmVydEVycm9yU3RhdGU6IGZ1bmN0aW9uICgpIHsgfSxcbiAgICB2YWxpZGF0aW9uczogW10sXG4gICAgZXJyb3JNZXNzYWdlOiBcIlwiLFxuICAgIGNvbnZlcnRFcnJvck1lc3NhZ2U6IGZ1bmN0aW9uICh2YWx1ZSkgeyB9LFxufSk7XG52YXIgVGV4dEZpZWxkUm9vdCA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLCB2YWxpZGF0aW9ucyA9IF9hLnZhbGlkYXRpb25zLCB3aWR0aCA9IF9hLndpZHRoO1xuICAgIHZhciBfYiA9IHVzZVN0YXRlKGZhbHNlKSwgaXNFcnJvciA9IF9iWzBdLCBzZXRJc0Vycm9yID0gX2JbMV07XG4gICAgdmFyIF9jID0gdXNlU3RhdGUoXCJcIiksIGVycm9yTWVzc2FnZSA9IF9jWzBdLCBzZXRFcnJvck1lc3NhZ2UgPSBfY1sxXTtcbiAgICB2YXIgY29udmVydEVycm9yU3RhdGUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgc2V0SXNFcnJvcih2YWx1ZSk7XG4gICAgfTtcbiAgICB2YXIgY29udmVydEVycm9yTWVzc2FnZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBzZXRFcnJvck1lc3NhZ2UodmFsdWUpO1xuICAgIH07XG4gICAgcmV0dXJuIChfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogXCJ0ZXh0LWZpZWxkLXJvb3RcIiwgc3R5bGU6IHsgZGlzcGxheTogXCJibG9ja1wiLCB3aWR0aDogXCJcIi5jb25jYXQod2lkdGgsIFwicHhcIikgfSwgY2hpbGRyZW46IF9qc3goVGV4dEZpZWxkQ29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZToge1xuICAgICAgICAgICAgICAgIGlzRXJyb3I6IGlzRXJyb3IsXG4gICAgICAgICAgICAgICAgY29udmVydEVycm9yU3RhdGU6IGNvbnZlcnRFcnJvclN0YXRlLFxuICAgICAgICAgICAgICAgIHZhbGlkYXRpb25zOiB2YWxpZGF0aW9ucyxcbiAgICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgICAgICBjb252ZXJ0RXJyb3JNZXNzYWdlOiBjb252ZXJ0RXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgfSwgY2hpbGRyZW46IGNoaWxkcmVuIH0pIH0pKTtcbn07XG5UZXh0RmllbGRSb290LlRleHRMYWJlbCA9IFRleHRMYWJlbDtcblRleHRGaWVsZFJvb3QuSW5wdXRGaWVsZCA9IElucHV0RmllbGQ7XG5UZXh0RmllbGRSb290LkhlbHBlclRleHQgPSBIZWxwZXJUZXh0O1xuZXhwb3J0IGRlZmF1bHQgVGV4dEZpZWxkUm9vdDtcbiIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgVGV4dEZpZWxkUm9vdCBmcm9tIFwiLi9iYXNlLXRleHQtZmllbGRcIjtcbmltcG9ydCBcIi4vdGV4dC1maWVsZC1zdHlsZS5jc3NcIjtcbmltcG9ydCBcIi4uLy4uL3N0eWxlcy90b2tlbi9mb250LmNzc1wiO1xudmFyIFRleHRGaWVsZCA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBfYiA9IF9hLndpZHRoLCB3aWR0aCA9IF9iID09PSB2b2lkIDAgPyAzNDMgOiBfYiwgX2MgPSBfYS5wbGFjZWhvbGRlciwgcGxhY2Vob2xkZXIgPSBfYyA9PT0gdm9pZCAwID8gXCJcIiA6IF9jLCBfZCA9IF9hLm5hbWUsIG5hbWUgPSBfZCA9PT0gdm9pZCAwID8gXCJcIiA6IF9kLCBoZWxwZXJUZXh0ID0gX2EuaGVscGVyVGV4dCwgbGFiZWxUZXh0ID0gX2EubGFiZWxUZXh0LCBvbkNoYW5nZSA9IF9hLm9uQ2hhbmdlO1xuICAgIHJldHVybiAoX2pzeHMoVGV4dEZpZWxkUm9vdCwgeyB2YWxpZGF0aW9uczogW10sIHdpZHRoOiB3aWR0aCwgY2hpbGRyZW46IFtsYWJlbFRleHQgJiYgKF9qc3goVGV4dEZpZWxkUm9vdC5UZXh0TGFiZWwsIHsgdGV4dDogbGFiZWxUZXh0LCBjbGFzc05hbWU6IFwibnVyaS10aGVtZSB0ZXh0LWZpZWxkIGxhYmVsXCIgfSkpLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcIm51cmktdGhlbWUgdGV4dC1maWVsZCBpbnB1dC13cmFwcGVyXCIsIGNoaWxkcmVuOiBfanN4KFRleHRGaWVsZFJvb3QuSW5wdXRGaWVsZCwgeyBjbGFzc05hbWU6IFwibnVyaS10aGVtZSB0ZXh0LWZpZWxkIGlucHV0XCIsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgbmFtZTogbmFtZSwgb25DaGFuZ2U6IG9uQ2hhbmdlIH0pIH0pLCBoZWxwZXJUZXh0ICYmIChfanN4KFRleHRGaWVsZFJvb3QuSGVscGVyVGV4dCwgeyB0ZXh0OiBoZWxwZXJUZXh0LCBjbGFzc05hbWU6IFwibnVyaS10aGVtZSB0ZXh0LWZpZWxkIGhlbHBlci10ZXh0XCIgfSkpXSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgVGV4dEZpZWxkO1xuIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBUZXh0RmllbGRSb290IGZyb20gXCIuL2Jhc2UtdGV4dC1maWVsZFwiO1xuaW1wb3J0IFwiLi90ZXh0LWZpZWxkLXN0eWxlLmNzc1wiO1xuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzXCI7XG52YXIgVGV4dEZpZWxkV2l0aEVycm9yID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIF9iID0gX2Eud2lkdGgsIHdpZHRoID0gX2IgPT09IHZvaWQgMCA/IDM0MyA6IF9iLCBfYyA9IF9hLnBsYWNlaG9sZGVyLCBwbGFjZWhvbGRlciA9IF9jID09PSB2b2lkIDAgPyBcIlwiIDogX2MsIF9kID0gX2EubmFtZSwgbmFtZSA9IF9kID09PSB2b2lkIDAgPyBcIlwiIDogX2QsIGhlbHBlclRleHQgPSBfYS5oZWxwZXJUZXh0LCBsYWJlbFRleHQgPSBfYS5sYWJlbFRleHQsIHZhbGlkYXRpb25zID0gX2EudmFsaWRhdGlvbnM7XG4gICAgcmV0dXJuIChfanN4cyhUZXh0RmllbGRSb290LCB7IHdpZHRoOiB3aWR0aCwgdmFsaWRhdGlvbnM6IHZhbGlkYXRpb25zLCBjaGlsZHJlbjogW2xhYmVsVGV4dCAmJiAoX2pzeChUZXh0RmllbGRSb290LlRleHRMYWJlbCwgeyB0ZXh0OiBsYWJlbFRleHQsIGNsYXNzTmFtZTogXCJudXJpLXRoZW1lIHRleHQtZmllbGQgbGFiZWxcIiB9KSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibnVyaS10aGVtZSB0ZXh0LWZpZWxkIGlucHV0LXdyYXBwZXJcIiwgY2hpbGRyZW46IF9qc3goVGV4dEZpZWxkUm9vdC5JbnB1dEZpZWxkLCB7IGNsYXNzTmFtZTogXCJudXJpLXRoZW1lIHRleHQtZmllbGQgaW5wdXRcIiwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBuYW1lOiBuYW1lIH0pIH0pLCBoZWxwZXJUZXh0ICYmIChfanN4KFRleHRGaWVsZFJvb3QuSGVscGVyVGV4dCwgeyB0ZXh0OiBoZWxwZXJUZXh0LCBjbGFzc05hbWU6IFwibnVyaS10aGVtZSB0ZXh0LWZpZWxkIGhlbHBlci10ZXh0XCIsIGlzRXJyb3I6IHRydWUgfSkpXSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgVGV4dEZpZWxkV2l0aEVycm9yO1xuIiwiZXhwb3J0IHsgZGVmYXVsdCBhcyBBdmF0YXIgfSBmcm9tIFwiLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXJcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ1RBQnV0dG9uIH0gZnJvbSBcIi4vY29tcG9uZW50cy9idXR0b24vY3RhLWJ1dHRvblwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBPcHRpb25CYWRnZSB9IGZyb20gXCIuL2NvbXBvbmVudHMvYmFkZ2Uvb3B0aW9uLWJhZGdlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEljb25UZXh0QmFkZ2UgfSBmcm9tIFwiLi9jb21wb25lbnRzL2JhZGdlL2ljb24tdGV4dC1iYWRnZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBJY29uVGV4dE9wdGlvbkJhZGdlIH0gZnJvbSBcIi4vY29tcG9uZW50cy9iYWRnZS9pY29uLXRleHQtb3B0aW9uLWJhZGdlXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIERhdGFUYWJsZSB9IGZyb20gXCIuL2NvbXBvbmVudHMvdGFibGUvZGF0YS10YWJsZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0RmllbGQgfSBmcm9tIFwiLi9jb21wb25lbnRzL3RleHQtZmllbGQvdGV4dC1maWVsZFwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBUZXh0RmllbGRXaXRoRXJyb3IgfSBmcm9tIFwiLi9jb21wb25lbnRzL3RleHQtZmllbGQvdGV4dC1maWVsZC13aXRoLWVycm9yXCI7XG4iXSwibmFtZXMiOlsiX19hc3NpZ24iLCJPYmplY3QiLCJhc3NpZ24iLCJ0IiwicyIsImkiLCJuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwicCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwiX19yZXN0IiwiZSIsImluZGV4T2YiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsIkNoaWxkcmVuIiwiY2xvbmVFbGVtZW50IiwiZm9yd2FyZFJlZiIsImlzVmFsaWRFbGVtZW50IiwiY29tcG9zZVJlZnMiLCJyZWZzIiwiX2kiLCJub2RlIiwiZm9yRWFjaCIsInJlZiIsImN1cnJlbnQiLCJDb21wb3NlciIsIl9hIiwiY2hpbGRyZW4iLCJjb21wb3NlclByb3BzIiwiY2hpbGRBcnJheSIsInRvQXJyYXkiLCJFcnJvciIsImlzVmFsaWRDaGlsZCIsImNoaWxkIiwiY2hpbGRSZWYiLCJnZXRFbGVtZW50UmVmIiwibWVyZ2VkUHJvcHMiLCJtZXJnZVByb3BzIiwicHJvcHMiLCJkaXNwbGF5TmFtZSIsImNoaWxkUHJvcHMiLCJvdmVycmlkZVByb3BzIiwiX2xvb3BfMSIsInByb3BOYW1lIiwiY29tcG9zZXJQcm9wVmFsdWUiLCJjaGlsZFByb3BWYWx1ZSIsImlzSGFuZGxlciIsInRlc3QiLCJhcmdzIiwiZmlsdGVyIiwiQm9vbGVhbiIsImpvaW4iLCJlbGVtZW50IiwiX2IiLCJnZXR0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJnZXQiLCJtYXlXYXJuIiwiaXNSZWFjdFdhcm5pbmciLCJqc3giLCJfanN4IiwiQmFzZUJhZGdlIiwiYXNDaGlsZCIsImJvcmRlckNvbG9yIiwidGV4dENvbG9yIiwicmFkaXVzIiwiYmFja2dyb3VuZENvbG9yIiwiX2MiLCJzaXplIiwic3R5bGUiLCJjbGFzc05hbWUiLCJDb21wIiwiY29tcG9zZWRDbGFzc05hbWUiLCJjb25jYXQiLCJib3JkZXJSYWRpdXMiLCJqc3hzIiwiX2pzeHMiLCJ1c2VTdGF0ZSIsIkF2YXRhciIsInNyYyIsImFsdCIsImJhZGdlT3B0aW9uIiwiaXNJbWFnZURvd25sb2FkIiwic2V0SXNJbWFnZURvd25sb2FkIiwib25Mb2FkIiwicG9zaXRpb24iLCJyaWdodCIsImJvdHRvbSIsIkJhc2VCdXR0b24iLCJvbkNsaWNrIiwiY29uc29sZSIsImxvZyIsIkxvYWRpbmciLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkNUQUJ1dHRvbiIsInRleHQiLCJ2YXJpYW50IiwiZGlzYWJsZWQiLCJpY29uIiwiX2QiLCJsb2FkaW5nIiwiT3B0aW9uQmFkZ2UiLCJvcHRpb24iLCJJY29uVGV4dEJhZGdlIiwiSWNvblRleHRPcHRpb25CYWRnZSIsIlRhYmxlUm9vdCIsIlRhYmxlSGVhZGVyIiwianVzdGlmeSIsInJlc3QiLCJUYWJsZVJvdyIsImNsYXNzTmFtZXMiLCJUYWJsZUJvZHkiLCJUYWJsZUNlbGwiLCJIZWFkZXIiLCJCb2R5IiwiUm93IiwiQ2VsbCIsInVzZUVmZmVjdCIsIkRhdGFUYWJsZSIsInJvd3MiLCJjb2x1bW5zIiwibWFwIiwicm93IiwiaGlkZSIsImRpc3BsYXlSb3dzIiwic2V0RGlzcGxheVJvd3MiLCJmaW5kIiwiaXRlbSIsImlkIiwib25DbGlja1JvdyIsInZhbHVlIiwiY29sdW1uIiwib25DbGlja0NlbGwiLCJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsIlRleHRMYWJlbCIsIklucHV0RmllbGQiLCJwbGFjZWhvbGRlciIsIm5hbWUiLCJvbkNoYW5nZSIsIlRleHRGaWVsZENvbnRleHQiLCJjb252ZXJ0RXJyb3JNZXNzYWdlIiwiY29udmVydEVycm9yU3RhdGUiLCJ2YWxpZGF0aW9ucyIsInZhbGlkYXRlSW5wdXQiLCJmYWlsZWRWYWxpZGF0aW9uIiwidmFsaWRhdGlvbiIsInJ1bGUiLCJtZXNzYWdlIiwidGFyZ2V0IiwiSGVscGVyVGV4dCIsImVycm9yTWVzc2FnZSIsImlzRXJyb3IiLCJlcnJvckNsYXNzTmFtZSIsIlRleHRGaWVsZFJvb3QiLCJ3aWR0aCIsInNldElzRXJyb3IiLCJzZXRFcnJvck1lc3NhZ2UiLCJkaXNwbGF5IiwiUHJvdmlkZXIiLCJUZXh0RmllbGQiLCJoZWxwZXJUZXh0IiwibGFiZWxUZXh0IiwiVGV4dEZpZWxkV2l0aEVycm9yIiwiZGVmYXVsdCJdLCJzb3VyY2VSb290IjoiIn0=
2529
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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L0I7QUFDNUMsSUFBSWtOLFFBQVEsR0FBRyxTQUFYQSxRQUFRQSxDQUFhMUssS0FBSyxFQUFFO0VBQzVCLElBQUk4SSxPQUFPLEdBQUc5SSxLQUFLLENBQUM4SSxPQUFPO0lBQUUxQyxRQUFRLEdBQUdwRyxLQUFLLENBQUNvRyxRQUFRO0lBQUV5RCxLQUFLLEdBQUc3SixLQUFLLENBQUM2SixLQUFLO0lBQUV6RixJQUFJLEdBQUdqRyxjQUFNLENBQUM2QixLQUFLLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0VBQ25JLE9BQVFzQixvQkFBSSxDQUFDNkksY0FBWSxFQUFFO0lBQUUzRSxFQUFFLEVBQUUsV0FBVztJQUFFbkcsUUFBUSxFQUFFaUQscUJBQUssQ0FBQyxLQUFLLEVBQUU7TUFBRU4sU0FBUyxFQUFFLFdBQVc7TUFBRTNDLFFBQVEsRUFBRSxDQUFDaUMsb0JBQUksQ0FBQzZJLGNBQVksQ0FBQ0ksS0FBSyxFQUFFO1FBQUUvSSxPQUFPLEVBQUUsSUFBSTtRQUFFbkMsUUFBUSxFQUFFaUMsb0JBQUksQ0FBQyxLQUFLLEVBQUU7VUFBRVUsU0FBUyxFQUFFLDRCQUE0QjtVQUFFM0MsUUFBUSxFQUFFaUMsb0JBQUksQ0FBQ21KLG9DQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQUUsQ0FBQztNQUFFLENBQUMsQ0FBQyxFQUFFbkosb0JBQUksQ0FBQzZJLGNBQVksQ0FBQ1osS0FBSyxFQUFFO1FBQUVsSyxRQUFRLEVBQUV3SztNQUFNLENBQUMsQ0FBQztJQUFFLENBQUM7RUFBRSxDQUFDLENBQUM7QUFDbFQsQ0FBQztBQUNELGdEQUFlYSxRQUFROztBQ3JCd0M7QUFDTztBQUNHO0FBQ0s7QUFDYTtBQUN0QjtBQUNLO0FBQ29CO0FBQ2xDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtL3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXItc3R5bGUuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2Utc3R5bGUuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi1zdHlsZS5jc3MiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9jaGVjay1ib3gvY2hlY2stYm94LXN0eWxlLmNzcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy1zdHlsZS5jc3MiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9yYWRpby9yYWRpby1zdHlsZS5jc3MiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy90YWJsZS90YWJsZS1zdHlsZS5jc3MiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy90ZXh0LWZpZWxkL3RleHQtZmllbGQtc3R5bGUuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL3N0eWxlcy90b2tlbi9jb2xvci5jc3MiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanMiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vZXh0ZXJuYWwgdW1kIHtcInJvb3RcIjpcIlJlYWN0XCIsXCJjb21tb25qczJcIjpcInJlYWN0XCIsXCJjb21tb25qc1wiOlwicmVhY3RcIixcImFtZFwiOlwicmVhY3RcIixcInVtZFwiOlwicmVhY3RcIn0iLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtL2V4dGVybmFsIHVtZCB7XCJyb290XCI6XCJqc3gtcnVudGltZVwiLFwiY29tbW9uanMyXCI6XCJyZWFjdC9qc3gtcnVudGltZVwiLFwiY29tbW9uanNcIjpcInJlYWN0L2pzeC1ydW50aW1lXCIsXCJhbWRcIjpcInJlYWN0L2pzeC1ydW50aW1lXCIsXCJ1bWRcIjpcInJlYWN0L2pzeC1ydW50aW1lXCJ9Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vd2VicGFjay9ydW50aW1lL25vbmNlIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYXZhdGFyL2F2YXRhci1zdHlsZS5jc3M/NzYwMSIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2NvcmUvY29tcG9zZXIvaW5kZXgudHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYmFkZ2UvYmFzZS1iYWRnZS50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyLnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24tc3R5bGUuY3NzP2U5ZjciLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vc3R5bGVzL3Rva2VuL2NvbG9yLmNzcz82NmNhIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL3N0eWxlcy90b2tlbi9mb250LmNzcz83NmJiIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYnV0dG9uL2Jhc2UtYnV0dG9uLnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy1zdHlsZS5jc3M/YjM5OSIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2xvYWRpbmcvbG9hZGluZy50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9idXR0b24vY3RhLWJ1dHRvbi50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9iYWRnZS9vcHRpb24tYmFkZ2UudHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYmFkZ2UvaWNvbi10ZXh0LWJhZGdlLnRzeCIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL2JhZGdlL2JhZGdlLXN0eWxlLmNzcz80YTg3Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvYmFkZ2UvaWNvbi10ZXh0LW9wdGlvbi1iYWRnZS50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy90YWJsZS90YWJsZS1zdHlsZS5jc3M/YjcyZSIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL3RhYmxlL2Jhc2UtdGFibGUudHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvdGFibGUvZGF0YS10YWJsZS50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy90ZXh0LWZpZWxkL3RleHQtZmllbGQtc3R5bGUuY3NzPzdjYzciLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy90ZXh0LWZpZWxkL2Jhc2UtdGV4dC1maWVsZC50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy90ZXh0LWZpZWxkL3RleHQtZmllbGQudHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvdGV4dC1maWVsZC90ZXh0LWZpZWxkLXdpdGgtZXJyb3IudHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2hlbHBlcnMvaG9va3MvdXNlRXh0ZXJuYWxTdGF0ZS50cyIsIndlYnBhY2s6Ly9AbnVyaWhhdXMvd2ViLWRlc2lnbi1zeXN0ZW0vLi9jb21wb25lbnRzL3JhZGlvL2Jhc2UtcmFkaW8udHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvcmFkaW8vcmFkaW8tc3R5bGUuY3NzP2Y1ZDkiLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9yYWRpby9yYWRpby50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9jaGVjay1ib3gvY2hlY2stYm94LXN0eWxlLmNzcz80NmVlIiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2Fzc2V0cy9pY29ucy9jaGVjay5zdmciLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vY29tcG9uZW50cy9jaGVjay1ib3gvYmFzZS1jaGVjay1ib3gudHN4Iiwid2VicGFjazovL0BudXJpaGF1cy93ZWItZGVzaWduLXN5c3RlbS8uL2NvbXBvbmVudHMvY2hlY2stYm94L2NoZWNrLWJveC50c3giLCJ3ZWJwYWNrOi8vQG51cmloYXVzL3dlYi1kZXNpZ24tc3lzdGVtLy4vaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkocmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpLCByZXF1aXJlKFwicmVhY3RcIikpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoW1wicmVhY3QvanN4LXJ1bnRpbWVcIiwgXCJyZWFjdFwiXSwgZmFjdG9yeSk7XG5cdGVsc2Uge1xuXHRcdHZhciBhID0gdHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnID8gZmFjdG9yeShyZXF1aXJlKFwicmVhY3QvanN4LXJ1bnRpbWVcIiksIHJlcXVpcmUoXCJyZWFjdFwiKSkgOiBmYWN0b3J5KHJvb3RbXCJqc3gtcnVudGltZVwiXSwgcm9vdFtcIlJlYWN0XCJdKTtcblx0XHRmb3IodmFyIGkgaW4gYSkgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyA/IGV4cG9ydHMgOiByb290KVtpXSA9IGFbaV07XG5cdH1cbn0pKHNlbGYsIChfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18yMjZfXywgX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMTE5X18pID0+IHtcbnJldHVybiAiLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLmF2YXRhciB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgJiBkaXYge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxuXG4gIGJvcmRlci1yYWRpdXM6IDUwJTtcblxuICAmOndoZXJlKC54bCkge1xuICAgIHdpZHRoOiAxMjRweDtcbiAgICBoZWlnaHQ6IDEyNHB4O1xuICB9XG5cbiAgJjp3aGVyZSgubCkge1xuICAgIHdpZHRoOiA3NHB4O1xuICAgIGhlaWdodDogNzRweDtcbiAgfVxuXG4gICY6d2hlcmUoLm0pIHtcbiAgICB3aWR0aDogNThweDtcbiAgICBoZWlnaHQ6IDU4cHg7XG4gIH1cblxuICAmOndoZXJlKC5zKSB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICB9XG5cbiAgLmF2YXRhci1za2VsZXRvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG5cbiAgICAuc2tlbGV0b24tYW5pbWF0aW9uIHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KFxuICAgICAgICA5MGRlZyxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAwJSxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpIDUwJSxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlXG4gICAgICApO1xuICAgICAgYW5pbWF0aW9uOiBzaGltbWVyIDEuNXMgaW5maW5pdGU7XG4gICAgfVxuICB9XG59XG5cbkBrZXlmcmFtZXMgc2hpbW1lciB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgfVxufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9jb21wb25lbnRzL2F2YXRhci9hdmF0YXItc3R5bGUuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0Usa0JBQWtCO0VBQ2xCO0lBQ0Usa0JBQWtCO0lBQ2xCLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLGdCQUFnQjtFQUNsQjs7RUFFQSxrQkFBa0I7O0VBRWxCO0lBQ0UsWUFBWTtJQUNaLGFBQWE7RUFDZjs7RUFFQTtJQUNFLFdBQVc7SUFDWCxZQUFZO0VBQ2Q7O0VBRUE7SUFDRSxXQUFXO0lBQ1gsWUFBWTtFQUNkOztFQUVBO0lBQ0UsV0FBVztJQUNYLFlBQVk7RUFDZDs7RUFFQTtJQUNFLGtCQUFrQjtJQUNsQixNQUFNO0lBQ04sT0FBTztJQUNQLFdBQVc7SUFDWCxZQUFZO0lBQ1oseUJBQXlCO0lBQ3pCLGtCQUFrQjtJQUNsQixXQUFXO0lBQ1gsWUFBWTs7SUFFWjtNQUNFLFdBQVc7TUFDWCxZQUFZO01BQ1o7Ozs7O09BS0M7TUFDRCxnQ0FBZ0M7SUFDbEM7RUFDRjtBQUNGOztBQUVBO0VBQ0U7SUFDRSw0QkFBNEI7RUFDOUI7RUFDQTtJQUNFLDJCQUEyQjtFQUM3QjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5hdmF0YXIge1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgJiBkaXYge1xcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xcbiAgfVxcblxcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xcblxcbiAgJjp3aGVyZSgueGwpIHtcXG4gICAgd2lkdGg6IDEyNHB4O1xcbiAgICBoZWlnaHQ6IDEyNHB4O1xcbiAgfVxcblxcbiAgJjp3aGVyZSgubCkge1xcbiAgICB3aWR0aDogNzRweDtcXG4gICAgaGVpZ2h0OiA3NHB4O1xcbiAgfVxcblxcbiAgJjp3aGVyZSgubSkge1xcbiAgICB3aWR0aDogNThweDtcXG4gICAgaGVpZ2h0OiA1OHB4O1xcbiAgfVxcblxcbiAgJjp3aGVyZSgucykge1xcbiAgICB3aWR0aDogNDBweDtcXG4gICAgaGVpZ2h0OiA0MHB4O1xcbiAgfVxcblxcbiAgLmF2YXRhci1za2VsZXRvbiB7XFxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gICAgdG9wOiAwO1xcbiAgICBsZWZ0OiAwO1xcbiAgICB3aWR0aDogMTAwJTtcXG4gICAgaGVpZ2h0OiAxMDAlO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBlMGUwO1xcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICAgIHdpZHRoOiAxMDAlO1xcbiAgICBoZWlnaHQ6IDEwMCU7XFxuXFxuICAgIC5za2VsZXRvbi1hbmltYXRpb24ge1xcbiAgICAgIHdpZHRoOiAxMDAlO1xcbiAgICAgIGhlaWdodDogMTAwJTtcXG4gICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoXFxuICAgICAgICA5MGRlZyxcXG4gICAgICAgIHJnYmEoMjU1LCAyNTUsIDI1NSwgMCkgMCUsXFxuICAgICAgICByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCkgNTAlLFxcbiAgICAgICAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlXFxuICAgICAgKTtcXG4gICAgICBhbmltYXRpb246IHNoaW1tZXIgMS41cyBpbmZpbml0ZTtcXG4gICAgfVxcbiAgfVxcbn1cXG5cXG5Aa2V5ZnJhbWVzIHNoaW1tZXIge1xcbiAgMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xcbiAgfVxcbiAgMTAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAuYmFzZS1iYWRnZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBnYXA6IDRweDtcblxuICBib3JkZXItcmFkaXVzOiA0MHB4O1xuXG4gICY6d2hlcmUoLmwpIHtcbiAgICBoZWlnaHQ6IDQ4cHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICB9XG5cbiAgJjp3aGVyZSgubSkge1xuICAgIGhlaWdodDogNDBweDtcblxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIH1cblxuICAmOndoZXJlKC5yKSB7XG4gICAgaGVpZ2h0OiAzNnB4O1xuXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcbiAgfVxuXG4gICY6d2hlcmUoLnMpIHtcbiAgICBoZWlnaHQ6IDMycHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XG4gIH1cblxuICAmOndoZXJlKC5zbSkge1xuICAgIGhlaWdodDogMjhweDtcblxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXhzbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXhzbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICB9XG5cbiAgJltjbGFzcyo9XCJiYWNrZ3JvdW5kLVwiXSB7XG4gICAgJi5iYWNrZ3JvdW5kLWJsYWNrIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYmxhY2spO1xuICAgIH1cbiAgICAmLmJhY2tncm91bmQtd2hpdGUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XG4gICAgfVxuICAgICYuYmFja2dyb3VuZC1ncmF5RmEge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhKTtcbiAgICB9XG4gICAgJi5iYWNrZ3JvdW5kLXB1cnBsZTM5IHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gICAgfVxuICB9XG5cbiAgJltjbGFzcyo9XCJ0ZXh0LVwiXSB7XG4gICAgJi50ZXh0LWJsYWNrIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcbiAgICB9XG4gICAgJi50ZXh0LXdoaXRlIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcbiAgICB9XG4gICAgJi50ZXh0LWdyYXlGYSB7XG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhKTtcbiAgICB9XG4gICAgJi50ZXh0LXB1cnBsZTM5IHtcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xuICAgIH1cbiAgfVxuXG4gICZbY2xhc3MqPVwiYm9yZGVyLVwiXSB7XG4gICAgJi5ib3JkZXItYmxhY2sge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS1ibGFjayk7XG4gICAgfVxuICAgICYuYm9yZGVyLXdoaXRlIHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xuICAgIH1cbiAgICAmLmJvcmRlci1ncmF5RmEge1xuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhKTtcbiAgICB9XG4gICAgJi5ib3JkZXItZ3JheUU0IHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1lNCk7XG4gICAgfVxuICAgICYuYm9yZGVyLXB1cnBsZTM5IHtcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gICAgfVxuICB9XG5cbiAgJi5pY29uLXRleHQtb3B0aW9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuXG4gICAgcGFkZGluZzogMCAyMHB4O1xuICB9XG5cbiAgJi5pY29uLXRleHQtb3B0aW9uID4gc3BhbiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICB9XG59XG5gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2NvbXBvbmVudHMvYmFkZ2UvYmFkZ2Utc3R5bGUuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsUUFBUTs7RUFFUixtQkFBbUI7O0VBRW5CO0lBQ0UsWUFBWTs7SUFFWiw4QkFBOEI7SUFDOUIsa0NBQWtDO0lBQ2xDLHdDQUF3QztFQUMxQzs7RUFFQTtJQUNFLFlBQVk7O0lBRVosOEJBQThCO0lBQzlCLGtDQUFrQztJQUNsQyx3Q0FBd0M7RUFDMUM7O0VBRUE7SUFDRSxZQUFZOztJQUVaLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsd0NBQXdDO0VBQzFDOztFQUVBO0lBQ0UsWUFBWTs7SUFFWiw4QkFBOEI7SUFDOUIsa0NBQWtDO0lBQ2xDLG9DQUFvQztFQUN0Qzs7RUFFQTtJQUNFLFlBQVk7O0lBRVosK0JBQStCO0lBQy9CLG1DQUFtQztJQUNuQyxvQ0FBb0M7RUFDdEM7O0VBRUE7SUFDRTtNQUNFLDRDQUE0QztJQUM5QztJQUNBO01BQ0UsNENBQTRDO0lBQzlDO0lBQ0E7TUFDRSw4Q0FBOEM7SUFDaEQ7SUFDQTtNQUNFLDhDQUE4QztJQUNoRDtFQUNGOztFQUVBO0lBQ0U7TUFDRSxpQ0FBaUM7SUFDbkM7SUFDQTtNQUNFLGlDQUFpQztJQUNuQztJQUNBO01BQ0UsbUNBQW1DO0lBQ3JDO0lBQ0E7TUFDRSxtQ0FBbUM7SUFDckM7RUFDRjs7RUFFQTtJQUNFO01BQ0UsNENBQTRDO0lBQzlDO0lBQ0E7TUFDRSw0Q0FBNEM7SUFDOUM7SUFDQTtNQUNFLDhDQUE4QztJQUNoRDtJQUNBO01BQ0UsOENBQThDO0lBQ2hEO0lBQ0E7TUFDRSw4Q0FBOEM7SUFDaEQ7RUFDRjs7RUFFQTtJQUNFLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsOEJBQThCOztJQUU5QixlQUFlO0VBQ2pCOztFQUVBO0lBQ0UsYUFBYTtJQUNiLG1CQUFtQjtJQUNuQixRQUFRO0VBQ1Y7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuYmFzZS1iYWRnZSB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgZ2FwOiA0cHg7XFxuXFxuICBib3JkZXItcmFkaXVzOiA0MHB4O1xcblxcbiAgJjp3aGVyZSgubCkge1xcbiAgICBoZWlnaHQ6IDQ4cHg7XFxuXFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcXG4gIH1cXG5cXG4gICY6d2hlcmUoLm0pIHtcXG4gICAgaGVpZ2h0OiA0MHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XFxuICB9XFxuXFxuICAmOndoZXJlKC5yKSB7XFxuICAgIGhlaWdodDogMzZweDtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xcbiAgfVxcblxcbiAgJjp3aGVyZSgucykge1xcbiAgICBoZWlnaHQ6IDMycHg7XFxuXFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xcbiAgfVxcblxcbiAgJjp3aGVyZSguc20pIHtcXG4gICAgaGVpZ2h0OiAyOHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14c20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQteHNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xcbiAgfVxcblxcbiAgJltjbGFzcyo9XFxcImJhY2tncm91bmQtXFxcIl0ge1xcbiAgICAmLmJhY2tncm91bmQtYmxhY2sge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYmxhY2spO1xcbiAgICB9XFxuICAgICYuYmFja2dyb3VuZC13aGl0ZSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XFxuICAgIH1cXG4gICAgJi5iYWNrZ3JvdW5kLWdyYXlGYSB7XFxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWZhKTtcXG4gICAgfVxcbiAgICAmLmJhY2tncm91bmQtcHVycGxlMzkge1xcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XFxuICAgIH1cXG4gIH1cXG5cXG4gICZbY2xhc3MqPVxcXCJ0ZXh0LVxcXCJdIHtcXG4gICAgJi50ZXh0LWJsYWNrIHtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ibGFjayk7XFxuICAgIH1cXG4gICAgJi50ZXh0LXdoaXRlIHtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XFxuICAgIH1cXG4gICAgJi50ZXh0LWdyYXlGYSB7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1mYSk7XFxuICAgIH1cXG4gICAgJi50ZXh0LXB1cnBsZTM5IHtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgJltjbGFzcyo9XFxcImJvcmRlci1cXFwiXSB7XFxuICAgICYuYm9yZGVyLWJsYWNrIHtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcXG4gICAgfVxcbiAgICAmLmJvcmRlci13aGl0ZSB7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XFxuICAgIH1cXG4gICAgJi5ib3JkZXItZ3JheUZhIHtcXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZmEpO1xcbiAgICB9XFxuICAgICYuYm9yZGVyLWdyYXlFNCB7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWU0KTtcXG4gICAgfVxcbiAgICAmLmJvcmRlci1wdXJwbGUzOSB7XFxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcXG4gICAgfVxcbiAgfVxcblxcbiAgJi5pY29uLXRleHQtb3B0aW9uIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xcblxcbiAgICBwYWRkaW5nOiAwIDIwcHg7XFxuICB9XFxuXFxuICAmLmljb24tdGV4dC1vcHRpb24gPiBzcGFuIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgZ2FwOiA0cHg7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLmJhc2UtYnV0dG9uIHtcbiAgZGlzcGxheTogZmxleDtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGdhcDogMTBweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBib3JkZXI6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLmN0YS1idXR0b24ge1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG5cbiAgJjp3aGVyZSgucHJpbWFyeSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xuICB9XG4gICY6d2hlcmUoLnNlY29uZGFyeSkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS1mNCk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gIH1cbiAgJjp3aGVyZSguZ2hvc3QpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZDQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xuICB9XG4gICY6d2hlcmUoLndoaXRlKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XG4gIH1cbiAgJjp3aGVyZSguZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWdyYXktZTQpO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKTtcbiAgfVxuXG4gICY6d2hlcmUoLnhsKSB7XG4gICAgaGVpZ2h0OiA2MHB4O1xuXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtbGcpO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1sZyk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICB9XG4gICY6d2hlcmUoLmwpIHtcbiAgICBoZWlnaHQ6IDU0cHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtYmFzZSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LWJvbGQpO1xuICB9XG4gICY6d2hlcmUoLnIpIHtcbiAgICBoZWlnaHQ6IDQ4cHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICB9XG4gICY6d2hlcmUoLm0pIHtcbiAgICBoZWlnaHQ6IDUwcHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xuICB9XG4gICY6d2hlcmUoLnMpIHtcbiAgICBoZWlnaHQ6IDQwcHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14c20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC14c20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIH1cbiAgJjp3aGVyZSgueHMpIHtcbiAgICBoZWlnaHQ6IDMwcHg7XG5cbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14c20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC14c20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XG4gIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vY29tcG9uZW50cy9idXR0b24vYnV0dG9uLXN0eWxlLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFLGFBQWE7RUFDYix1QkFBdUI7RUFDdkIsbUJBQW1CO0VBQ25CLFNBQVM7RUFDVCxrQkFBa0I7RUFDbEIsWUFBWTtFQUNaLGVBQWU7QUFDakI7O0FBRUE7RUFDRSxrQkFBa0I7O0VBRWxCO0lBQ0UsOENBQThDO0lBQzlDLGlDQUFpQztFQUNuQztFQUNBO0lBQ0UsOENBQThDO0lBQzlDLG1DQUFtQztFQUNyQztFQUNBO0lBQ0UsNENBQTRDO0lBQzVDLDhDQUE4QztJQUM5QyxtQ0FBbUM7RUFDckM7RUFDQTtJQUNFLDRDQUE0QztJQUM1QyxtQ0FBbUM7RUFDckM7RUFDQTtJQUNFLDhDQUE4QztJQUM5QyxpQ0FBaUM7RUFDbkM7O0VBRUE7SUFDRSxZQUFZOztJQUVaLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsb0NBQW9DO0VBQ3RDO0VBQ0E7SUFDRSxZQUFZOztJQUVaLGdDQUFnQztJQUNoQyxvQ0FBb0M7SUFDcEMsb0NBQW9DO0VBQ3RDO0VBQ0E7SUFDRSxZQUFZOztJQUVaLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsd0NBQXdDO0VBQzFDO0VBQ0E7SUFDRSxZQUFZOztJQUVaLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsd0NBQXdDO0VBQzFDO0VBQ0E7SUFDRSxZQUFZOztJQUVaLCtCQUErQjtJQUMvQixtQ0FBbUM7SUFDbkMsd0NBQXdDO0VBQzFDO0VBQ0E7SUFDRSxZQUFZOztJQUVaLCtCQUErQjtJQUMvQixtQ0FBbUM7SUFDbkMsd0NBQXdDO0VBQzFDO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmJhc2UtYnV0dG9uIHtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBnYXA6IDEwcHg7XFxuICBib3JkZXItcmFkaXVzOiA2cHg7XFxuICBib3JkZXI6IG5vbmU7XFxuICBjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5jdGEtYnV0dG9uIHtcXG4gIGJvcmRlci1yYWRpdXM6IDZweDtcXG5cXG4gICY6d2hlcmUoLnByaW1hcnkpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xcbiAgfVxcbiAgJjp3aGVyZSguc2Vjb25kYXJ5KSB7XFxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS1mNCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xcbiAgfVxcbiAgJjp3aGVyZSguZ2hvc3QpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XFxuICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1kNCk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xcbiAgfVxcbiAgJjp3aGVyZSgud2hpdGUpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xcbiAgfVxcbiAgJjp3aGVyZSguZGlzYWJsZWQpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWU0KTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktd2hpdGUpO1xcbiAgfVxcblxcbiAgJjp3aGVyZSgueGwpIHtcXG4gICAgaGVpZ2h0OiA2MHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1sZyk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1sZyk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcXG4gIH1cXG4gICY6d2hlcmUoLmwpIHtcXG4gICAgaGVpZ2h0OiA1NHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1iYXNlKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LWJhc2UpO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtYm9sZCk7XFxuICB9XFxuICAmOndoZXJlKC5yKSB7XFxuICAgIGhlaWdodDogNDhweDtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtc2VtaWJvbGQpO1xcbiAgfVxcbiAgJjp3aGVyZSgubSkge1xcbiAgICBoZWlnaHQ6IDUwcHg7XFxuXFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcXG4gIH1cXG4gICY6d2hlcmUoLnMpIHtcXG4gICAgaGVpZ2h0OiA0MHB4O1xcblxcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS14c20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQteHNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LXNlbWlib2xkKTtcXG4gIH1cXG4gICY6d2hlcmUoLnhzKSB7XFxuICAgIGhlaWdodDogMzBweDtcXG5cXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUteHNtKTtcXG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXhzbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1zZW1pYm9sZCk7XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLmJhc2UtY2hlY2stYm94IHtcbiAgJi5sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcbiAgfVxufVxuXG4uY2hlY2stYm94IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiAxMHB4O1xufVxuXG4uY2hlY2stYm94LWlucHV0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIHdpZHRoOiAyNHB4O1xuICBoZWlnaHQ6IDI0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xuXG4gICY6d2hlcmUoLnVuY2hlY2tlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XG4gIH1cblxuICAmOndoZXJlKC5jaGVja2VkKSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcbiAgfVxuXG4gICY6d2hlcmUoLmRpc2FibGVkKSB7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1kNCk7XG4gIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vY29tcG9uZW50cy9jaGVjay1ib3gvY2hlY2stYm94LXN0eWxlLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFO0lBQ0UsOEJBQThCO0lBQzlCLHNDQUFzQztJQUN0QyxpQ0FBaUM7RUFDbkM7QUFDRjs7QUFFQTtFQUNFLGFBQWE7RUFDYixtQkFBbUI7RUFDbkIsU0FBUztBQUNYOztBQUVBO0VBQ0UsYUFBYTtFQUNiLG1CQUFtQjtFQUNuQix1QkFBdUI7RUFDdkIsV0FBVztFQUNYLFlBQVk7RUFDWixrQkFBa0I7RUFDbEIsZ0RBQWdEOztFQUVoRDtJQUNFLHNCQUFzQjtFQUN4Qjs7RUFFQTtJQUNFLDhDQUE4QztFQUNoRDs7RUFFQTtJQUNFLFlBQVk7SUFDWiw4Q0FBOEM7RUFDaEQ7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuYmFzZS1jaGVjay1ib3gge1xcbiAgJi5sYWJlbCB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLXNtKTtcXG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XFxuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcXG4gIH1cXG59XFxuXFxuLmNoZWNrLWJveCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGdhcDogMTBweDtcXG59XFxuXFxuLmNoZWNrLWJveC1pbnB1dCB7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbiAgd2lkdGg6IDI0cHg7XFxuICBoZWlnaHQ6IDI0cHg7XFxuICBib3JkZXItcmFkaXVzOiA0cHg7XFxuICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWNvbG9yLXBvaW50LXB1cnBsZS0zOSk7XFxuXFxuICAmOndoZXJlKC51bmNoZWNrZWQpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcXG4gIH1cXG5cXG4gICY6d2hlcmUoLmNoZWNrZWQpIHtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcG9pbnQtcHVycGxlLTM5KTtcXG4gIH1cXG5cXG4gICY6d2hlcmUoLmRpc2FibGVkKSB7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWQ0KTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAuY29tcG9uZW50LWxvYWRpbmctY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDIwcHg7XG4gIGhlaWdodDogMjBweDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG59XG5cbi5sb2FkaW5nLWluZGljYXRvci1yaW5nIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xufVxuXG4ubG9hZGluZy1pbmRpY2F0b3Itc2luZ2xlLXJpbmcge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMjBweDtcbiAgaGVpZ2h0OiAyMHB4O1xuICBib3JkZXI6IDNweCBzb2xpZDtcbiAgYm9yZGVyLXJhZGl1czogNTAlO1xuICBhbmltYXRpb246IGxkcy1yaW5nIDEuMnMgY3ViaWMtYmV6aWVyKDAuNSwgMCwgMC41LCAxKSBpbmZpbml0ZTtcbiAgYm9yZGVyLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LXdoaXRlKSB0cmFuc3BhcmVudCB0cmFuc3BhcmVudCB0cmFuc3BhcmVudDtcbn1cblxuLmxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nOm50aC1jaGlsZCgxKSB7XG4gIGFuaW1hdGlvbi1kZWxheTogLTAuNDVzO1xufVxuXG4ubG9hZGluZy1pbmRpY2F0b3Itc2luZ2xlLXJpbmc6bnRoLWNoaWxkKDIpIHtcbiAgYW5pbWF0aW9uLWRlbGF5OiAtMC4zcztcbn1cblxuLmxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nOm50aC1jaGlsZCgzKSB7XG4gIGFuaW1hdGlvbi1kZWxheTogLTAuMTVzO1xufVxuXG4ubG9hZGluZy1pbmRpY2F0b3Itc2luZ2xlLXJpbmc6bnRoLWNoaWxkKDQpIHtcbiAgYW5pbWF0aW9uLWRlbGF5OiAwcztcbn1cblxuQGtleWZyYW1lcyBsZHMtcmluZyB7XG4gIDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgfVxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICB9XG59XG5gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2NvbXBvbmVudHMvbG9hZGluZy9sb2FkaW5nLXN0eWxlLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFLGFBQWE7RUFDYixXQUFXO0VBQ1gsWUFBWTtFQUNaLG1CQUFtQjtFQUNuQix1QkFBdUI7QUFDekI7O0FBRUE7RUFDRSxrQkFBa0I7RUFDbEIsV0FBVztFQUNYLFlBQVk7QUFDZDs7QUFFQTtFQUNFLHNCQUFzQjtFQUN0QixjQUFjO0VBQ2Qsa0JBQWtCO0VBQ2xCLFdBQVc7RUFDWCxZQUFZO0VBQ1osaUJBQWlCO0VBQ2pCLGtCQUFrQjtFQUNsQiw4REFBOEQ7RUFDOUQsNEVBQTRFO0FBQzlFOztBQUVBO0VBQ0UsdUJBQXVCO0FBQ3pCOztBQUVBO0VBQ0Usc0JBQXNCO0FBQ3hCOztBQUVBO0VBQ0UsdUJBQXVCO0FBQ3pCOztBQUVBO0VBQ0UsbUJBQW1CO0FBQ3JCOztBQUVBO0VBQ0U7SUFDRSx1QkFBdUI7RUFDekI7RUFDQTtJQUNFLHlCQUF5QjtFQUMzQjtBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5jb21wb25lbnQtbG9hZGluZy1jb250YWluZXIge1xcbiAgZGlzcGxheTogZmxleDtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xcbn1cXG5cXG4ubG9hZGluZy1pbmRpY2F0b3ItcmluZyB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMjBweDtcXG4gIGhlaWdodDogMjBweDtcXG59XFxuXFxuLmxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nIHtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBkaXNwbGF5OiBibG9jaztcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHdpZHRoOiAyMHB4O1xcbiAgaGVpZ2h0OiAyMHB4O1xcbiAgYm9yZGVyOiAzcHggc29saWQ7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBhbmltYXRpb246IGxkcy1yaW5nIDEuMnMgY3ViaWMtYmV6aWVyKDAuNSwgMCwgMC41LCAxKSBpbmZpbml0ZTtcXG4gIGJvcmRlci1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS13aGl0ZSkgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XFxufVxcblxcbi5sb2FkaW5nLWluZGljYXRvci1zaW5nbGUtcmluZzpudGgtY2hpbGQoMSkge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAtMC40NXM7XFxufVxcblxcbi5sb2FkaW5nLWluZGljYXRvci1zaW5nbGUtcmluZzpudGgtY2hpbGQoMikge1xcbiAgYW5pbWF0aW9uLWRlbGF5OiAtMC4zcztcXG59XFxuXFxuLmxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nOm50aC1jaGlsZCgzKSB7XFxuICBhbmltYXRpb24tZGVsYXk6IC0wLjE1cztcXG59XFxuXFxuLmxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nOm50aC1jaGlsZCg0KSB7XFxuICBhbmltYXRpb24tZGVsYXk6IDBzO1xcbn1cXG5cXG5Aa2V5ZnJhbWVzIGxkcy1yaW5nIHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAucmFkaW8ge1xuICAmOndoZXJlKC5yYWRpby1ncm91cCkge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBnYXA6IDE2cHg7XG4gIH1cbiAgJjp3aGVyZSgucmFkaW8tYnV0dG9uKSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIHdpZHRoOiAxOHB4O1xuICAgIGhlaWdodDogMThweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWU0KTtcbiAgfVxuICAmOndoZXJlKC5yYWRpby1pbmRpY2F0b3IpIHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xuICB9XG4gICY6d2hlcmUoLnJhZGlvLWxhYmVsKSB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xuICAgIGNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LWJsYWNrKTtcbiAgfVxufVxuYCwgXCJcIix7XCJ2ZXJzaW9uXCI6MyxcInNvdXJjZXNcIjpbXCJ3ZWJwYWNrOi8vLi9jb21wb25lbnRzL3JhZGlvL3JhZGlvLXN0eWxlLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQTtFQUNFO0lBQ0UsYUFBYTtJQUNiLHNCQUFzQjtJQUN0QixTQUFTO0VBQ1g7RUFDQTtJQUNFLGFBQWE7SUFDYixtQkFBbUI7SUFDbkIsdUJBQXVCO0lBQ3ZCLFdBQVc7SUFDWCxZQUFZO0lBQ1osa0JBQWtCO0lBQ2xCLDhDQUE4QztFQUNoRDtFQUNBO0lBQ0UsVUFBVTtJQUNWLFdBQVc7SUFDWCxrQkFBa0I7SUFDbEIsOENBQThDO0VBQ2hEO0VBQ0E7SUFDRSw4QkFBOEI7SUFDOUIsc0NBQXNDO0lBQ3RDLGlDQUFpQztFQUNuQztBQUNGXCIsXCJzb3VyY2VzQ29udGVudFwiOltcIi5yYWRpbyB7XFxuICAmOndoZXJlKC5yYWRpby1ncm91cCkge1xcbiAgICBkaXNwbGF5OiBmbGV4O1xcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbiAgICBnYXA6IDE2cHg7XFxuICB9XFxuICAmOndoZXJlKC5yYWRpby1idXR0b24pIHtcXG4gICAgZGlzcGxheTogZmxleDtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XFxuICAgIHdpZHRoOiAxOHB4O1xcbiAgICBoZWlnaHQ6IDE4cHg7XFxuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sb3ItcHJpbWFyeS1ncmF5LWU0KTtcXG4gIH1cXG4gICY6d2hlcmUoLnJhZGlvLWluZGljYXRvcikge1xcbiAgICB3aWR0aDogOHB4O1xcbiAgICBoZWlnaHQ6IDhweDtcXG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xvci1wb2ludC1wdXJwbGUtMzkpO1xcbiAgfVxcbiAgJjp3aGVyZSgucmFkaW8tbGFiZWwpIHtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcXG4gICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktYmxhY2spO1xcbiAgfVxcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiLy8gSW1wb3J0c1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzXCI7XG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvYXBpLmpzXCI7XG52YXIgX19fQ1NTX0xPQURFUl9FWFBPUlRfX18gPSBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18oX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyk7XG4vLyBNb2R1bGVcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLnB1c2goW21vZHVsZS5pZCwgYC5iYXNlLXRhYmxlIHtcbiAgLmhpZGUge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAmLnRhYmxlLXJvb3Qge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gIH1cblxuICAudGFibGUtaGVhZGVyIHtcbiAgICB3aWR0aDogMTAwJTtcblxuICAgICY6d2hlcmUoLmNlbnRlcikge1xuICAgICAgLnRhYmxlLWNlbGwge1xuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgICB9XG4gICAgfVxuICAgICY6d2hlcmUoLnN0YXJ0KSB7XG4gICAgICAudGFibGUtY2VsbCB7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB9XG4gICAgfVxuICAgICY6d2hlcmUoLmVuZCkge1xuICAgICAgLnRhYmxlLWNlbGwge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAudGFibGUtYm9keSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gIH1cblxuICAudGFibGUtcm93IHtcbiAgfVxuXG4gIC50YWJsZS1jZWxsIHtcbiAgICB0ZXh0LWFsaWduOiBzdGFydDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICAgIGhlaWdodDogNjBweDtcbiAgfVxufVxuXG4uZGF0YS10YWJsZSB7XG4gICY6d2hlcmUoLnRhYmxlLWhlYWRlcikge1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTRlNGU3O1xuICB9XG5cbiAgJjp3aGVyZSgudGFibGUtcm93KSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNGU0ZTc7XG5cbiAgICAmOmhvdmVyIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XG4gICAgfVxuICB9XG59XG5gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2NvbXBvbmVudHMvdGFibGUvdGFibGUtc3R5bGUuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0U7SUFDRSxhQUFhO0VBQ2Y7O0VBRUE7SUFDRSxXQUFXO0lBQ1gseUJBQXlCO0VBQzNCOztFQUVBO0lBQ0UsV0FBVzs7SUFFWDtNQUNFO1FBQ0Usa0JBQWtCO01BQ3BCO0lBQ0Y7SUFDQTtNQUNFO1FBQ0UsZ0JBQWdCO01BQ2xCO0lBQ0Y7SUFDQTtNQUNFO1FBQ0UsaUJBQWlCO01BQ25CO0lBQ0Y7RUFDRjs7RUFFQTtJQUNFLFdBQVc7RUFDYjs7RUFFQTtFQUNBOztFQUVBO0lBQ0UsaUJBQWlCO0lBQ2pCLHNCQUFzQjtJQUN0QixZQUFZO0VBQ2Q7QUFDRjs7QUFFQTtFQUNFO0lBQ0UsZ0NBQWdDO0VBQ2xDOztFQUVBO0lBQ0UsZ0NBQWdDOztJQUVoQztNQUNFLHlCQUF5QjtJQUMzQjtFQUNGO0FBQ0ZcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLmJhc2UtdGFibGUge1xcbiAgLmhpZGUge1xcbiAgICBkaXNwbGF5OiBub25lO1xcbiAgfVxcblxcbiAgJi50YWJsZS1yb290IHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XFxuICB9XFxuXFxuICAudGFibGUtaGVhZGVyIHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuXFxuICAgICY6d2hlcmUoLmNlbnRlcikge1xcbiAgICAgIC50YWJsZS1jZWxsIHtcXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gICAgICB9XFxuICAgIH1cXG4gICAgJjp3aGVyZSguc3RhcnQpIHtcXG4gICAgICAudGFibGUtY2VsbCB7XFxuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xcbiAgICAgIH1cXG4gICAgfVxcbiAgICAmOndoZXJlKC5lbmQpIHtcXG4gICAgICAudGFibGUtY2VsbCB7XFxuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcXG4gICAgICB9XFxuICAgIH1cXG4gIH1cXG5cXG4gIC50YWJsZS1ib2R5IHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICB9XFxuXFxuICAudGFibGUtcm93IHtcXG4gIH1cXG5cXG4gIC50YWJsZS1jZWxsIHtcXG4gICAgdGV4dC1hbGlnbjogc3RhcnQ7XFxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XFxuICAgIGhlaWdodDogNjBweDtcXG4gIH1cXG59XFxuXFxuLmRhdGEtdGFibGUge1xcbiAgJjp3aGVyZSgudGFibGUtaGVhZGVyKSB7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTRlNGU3O1xcbiAgfVxcblxcbiAgJjp3aGVyZSgudGFibGUtcm93KSB7XFxuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTRlNGU3O1xcblxcbiAgICAmOmhvdmVyIHtcXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xcbiAgICB9XFxuICB9XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLmJhc2UtdGV4dC1maWVsZCB7XG4gICY6d2hlcmUoLnRleHQtZmllbGQtcm9vdCkge1xuICAgIHdpZHRoOiAxMDAlO1xuICB9XG59XG5cbi50ZXh0LWZpZWxkIHtcbiAgJi5sYWJlbCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtYmFzZSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LWJhc2UpO1xuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcbiAgfVxuXG4gICYuaW5wdXQtd3JhcHBlciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBoZWlnaHQ6IDIycHg7XG4gICAgcGFkZGluZzogMTRweDtcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1kNCk7XG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xuICAgIG1hcmdpbi10b3A6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gIH1cblxuICAmLmlucHV0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XG4gICAgbGluZS1oZWlnaHQ6IHZhcigtLWxpbmUtaGVpZ2h0LXNtKTtcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcblxuICAgIDo6cGxhY2Vob2xkZXIge1xuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1hMSk7XG4gICAgfVxuICB9XG5cbiAgJi5oZWxwZXItdGV4dCB7XG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XG4gICAgZm9udC13ZWlnaHQ6IHZhcigtLWZvbnQtd2VpZ2h0LW1lZGl1bSk7XG5cbiAgICAmLmVycm9yIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1hY2NlbnQtcmVkLWRmKTtcbiAgICB9XG4gIH1cbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vY29tcG9uZW50cy90ZXh0LWZpZWxkL3RleHQtZmllbGQtc3R5bGUuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0U7SUFDRSxXQUFXO0VBQ2I7QUFDRjs7QUFFQTtFQUNFO0lBQ0UsZ0NBQWdDO0lBQ2hDLG9DQUFvQztJQUNwQyxvQ0FBb0M7RUFDdEM7O0VBRUE7SUFDRSxhQUFhO0lBQ2IsOEJBQThCO0lBQzlCLG1CQUFtQjtJQUNuQixZQUFZO0lBQ1osYUFBYTtJQUNiLGdEQUFnRDtJQUNoRCxrQkFBa0I7SUFDbEIsZUFBZTtJQUNmLGtCQUFrQjtFQUNwQjs7RUFFQTtJQUNFLFdBQVc7SUFDWCxZQUFZO0lBQ1osYUFBYTtJQUNiLDhCQUE4QjtJQUM5QixrQ0FBa0M7SUFDbEMsc0NBQXNDOztJQUV0QztNQUNFLG1DQUFtQztJQUNyQztFQUNGOztFQUVBO0lBQ0UsOEJBQThCO0lBQzlCLGtDQUFrQztJQUNsQyxzQ0FBc0M7O0lBRXRDO01BQ0UsaUNBQWlDO0lBQ25DO0VBQ0Y7QUFDRlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIuYmFzZS10ZXh0LWZpZWxkIHtcXG4gICY6d2hlcmUoLnRleHQtZmllbGQtcm9vdCkge1xcbiAgICB3aWR0aDogMTAwJTtcXG4gIH1cXG59XFxuXFxuLnRleHQtZmllbGQge1xcbiAgJi5sYWJlbCB7XFxuICAgIGZvbnQtc2l6ZTogdmFyKC0tZm9udC1zaXplLWJhc2UpO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtYmFzZSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1ib2xkKTtcXG4gIH1cXG5cXG4gICYuaW5wdXQtd3JhcHBlciB7XFxuICAgIGRpc3BsYXk6IGZsZXg7XFxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gICAgaGVpZ2h0OiAyMnB4O1xcbiAgICBwYWRkaW5nOiAxNHB4O1xcbiAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1kNCk7XFxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gICAgbWFyZ2luLXRvcDogOHB4O1xcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XFxuICB9XFxuXFxuICAmLmlucHV0IHtcXG4gICAgd2lkdGg6IDEwMCU7XFxuICAgIGJvcmRlcjogbm9uZTtcXG4gICAgb3V0bGluZTogbm9uZTtcXG4gICAgZm9udC1zaXplOiB2YXIoLS1mb250LXNpemUtc20pO1xcbiAgICBsaW5lLWhlaWdodDogdmFyKC0tbGluZS1oZWlnaHQtc20pO1xcbiAgICBmb250LXdlaWdodDogdmFyKC0tZm9udC13ZWlnaHQtbWVkaXVtKTtcXG5cXG4gICAgOjpwbGFjZWhvbGRlciB7XFxuICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnktZ3JheS1hMSk7XFxuICAgIH1cXG4gIH1cXG5cXG4gICYuaGVscGVyLXRleHQge1xcbiAgICBmb250LXNpemU6IHZhcigtLWZvbnQtc2l6ZS1zbSk7XFxuICAgIGxpbmUtaGVpZ2h0OiB2YXIoLS1saW5lLWhlaWdodC1zbSk7XFxuICAgIGZvbnQtd2VpZ2h0OiB2YXIoLS1mb250LXdlaWdodC1tZWRpdW0pO1xcblxcbiAgICAmLmVycm9yIHtcXG4gICAgICBjb2xvcjogdmFyKC0tY29sb3ItYWNjZW50LXJlZC1kZik7XFxuICAgIH1cXG4gIH1cXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIGAubnVyaS10aGVtZSB7XG4gIC0tY29sb3ItcHJpbWFyeS1ibGFjazogIzAwMDAwMDtcbiAgLS1jb2xvci1wcmltYXJ5LXdoaXRlOiAjZmZmZmZmO1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS1mYTogI2ZhZmFmYTtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktZjQ6ICNmNGY0ZjU7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWU0OiAjZTRlNGU3O1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS1kNDogI2Q0ZDRkODtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktYTE6ICNhMWExYWE7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTcxOiAjNzE3MTdhO1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS01MjogIzUyNTI1YjtcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktM2Y6ICMzZjNmNDY7XG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTI3OiAjMjcyNzJhO1xuICAtLWNvbG9yLXByaW1hcnktZ3JheS0xODogIzE4MTgxYjtcblxuICAtLWNvbG9yLXBvaW50LXB1cnBsZS0zOTogIzM5MWQ1ZDtcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtNGM6ICM0YzI3N2M7XG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLWRkOiAjZGRkMWYwO1xuICAtLWNvbG9yLXBvaW50LXB1cnBsZS1lOTogI2U5ZTBmNTtcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtZjQ6ICNmNGVmZmE7XG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTQxOiAjNGMxZDg4O1xuICAtLWNvbG9yLXBvaW50LXB1cnBsZS05NTogIzk1N2ViNDtcblxuICAtLWNvbG9yLWFjY2VudC1yZWQtZGY6ICNkZjUzNWM7XG4gIC0tY29sb3ItYWNjZW50LW1hZ2VudGEtYjA6ICNiMDJlNGM7XG4gIC0tY29sb3ItYWNjZW50LWdyZWVuLTI4OiAjMjg5YTNhO1xuXG4gIC0tY29sb3ItZXRjLXNrZWxldG9uLWU0OiAjZTRlNGU3O1xuICAtLWNvbG9yLWV0Yy1za2VsZXRvbi1mNzogI2Y3ZjdmODtcbiAgLS1jb2xvci1ldGMtc2tlbGV0b24tZmY6ICNmZmZmZmY7XG5cbiAgLS1jb2xvci1ldGMtaG92ZXItZWU6ICNlZWVlZWU7XG59XG5gLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL3N0eWxlcy90b2tlbi9jb2xvci5jc3NcIl0sXCJuYW1lc1wiOltdLFwibWFwcGluZ3NcIjpcIkFBQUE7RUFDRSw4QkFBOEI7RUFDOUIsOEJBQThCO0VBQzlCLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQzs7RUFFaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7RUFDaEMsZ0NBQWdDOztFQUVoQyw4QkFBOEI7RUFDOUIsa0NBQWtDO0VBQ2xDLGdDQUFnQzs7RUFFaEMsZ0NBQWdDO0VBQ2hDLGdDQUFnQztFQUNoQyxnQ0FBZ0M7O0VBRWhDLDZCQUE2QjtBQUMvQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIubnVyaS10aGVtZSB7XFxuICAtLWNvbG9yLXByaW1hcnktYmxhY2s6ICMwMDAwMDA7XFxuICAtLWNvbG9yLXByaW1hcnktd2hpdGU6ICNmZmZmZmY7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS1mYTogI2ZhZmFmYTtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWY0OiAjZjRmNGY1O1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktZTQ6ICNlNGU0ZTc7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS1kNDogI2Q0ZDRkODtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LWExOiAjYTFhMWFhO1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktNzE6ICM3MTcxN2E7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS01MjogIzUyNTI1YjtcXG4gIC0tY29sb3ItcHJpbWFyeS1ncmF5LTNmOiAjM2YzZjQ2O1xcbiAgLS1jb2xvci1wcmltYXJ5LWdyYXktMjc6ICMyNzI3MmE7XFxuICAtLWNvbG9yLXByaW1hcnktZ3JheS0xODogIzE4MTgxYjtcXG5cXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTM5OiAjMzkxZDVkO1xcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtNGM6ICM0YzI3N2M7XFxuICAtLWNvbG9yLXBvaW50LXB1cnBsZS1kZDogI2RkZDFmMDtcXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLWU5OiAjZTllMGY1O1xcbiAgLS1jb2xvci1wb2ludC1wdXJwbGUtZjQ6ICNmNGVmZmE7XFxuICAtLWNvbG9yLXBvaW50LXB1cnBsZS00MTogIzRjMWQ4ODtcXG4gIC0tY29sb3ItcG9pbnQtcHVycGxlLTk1OiAjOTU3ZWI0O1xcblxcbiAgLS1jb2xvci1hY2NlbnQtcmVkLWRmOiAjZGY1MzVjO1xcbiAgLS1jb2xvci1hY2NlbnQtbWFnZW50YS1iMDogI2IwMmU0YztcXG4gIC0tY29sb3ItYWNjZW50LWdyZWVuLTI4OiAjMjg5YTNhO1xcblxcbiAgLS1jb2xvci1ldGMtc2tlbGV0b24tZTQ6ICNlNGU0ZTc7XFxuICAtLWNvbG9yLWV0Yy1za2VsZXRvbi1mNzogI2Y3ZjdmODtcXG4gIC0tY29sb3ItZXRjLXNrZWxldG9uLWZmOiAjZmZmZmZmO1xcblxcbiAgLS1jb2xvci1ldGMtaG92ZXItZWU6ICNlZWVlZWU7XFxufVxcblwiXSxcInNvdXJjZVJvb3RcIjpcIlwifV0pO1xuLy8gRXhwb3J0c1xuZXhwb3J0IGRlZmF1bHQgX19fQ1NTX0xPQURFUl9FWFBPUlRfX187XG4iLCIvLyBJbXBvcnRzXG5pbXBvcnQgX19fQ1NTX0xPQURFUl9BUElfU09VUkNFTUFQX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL3NvdXJjZU1hcHMuanNcIjtcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9JTVBPUlRfX18gZnJvbSBcIi4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanNcIjtcbnZhciBfX19DU1NfTE9BREVSX0VYUE9SVF9fXyA9IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyhfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fKTtcbi8vIE1vZHVsZVxuX19fQ1NTX0xPQURFUl9FWFBPUlRfX18ucHVzaChbbW9kdWxlLmlkLCBgLm51cmktdGhlbWUge1xuICAtLWZvbnQtc2l6ZS14c206IDEycHg7XG4gIC0tZm9udC1zaXplLXNtOiAxNHB4O1xuICAtLWZvbnQtc2l6ZS1iYXNlOiAxNnB4O1xuICAtLWZvbnQtc2l6ZS1sZzogMThweDtcbiAgLS1mb250LXNpemUteGw6IDIwcHg7XG4gIC0tZm9udC1zaXplLTJ4bDogMjRweDtcbiAgLS1mb250LXNpemUtM3hsOiAzMHB4O1xuICAtLWZvbnQtc2l6ZS00eGw6IDM2cHg7XG4gIC0tZm9udC1zaXplLTV4bDogNDhweDtcbiAgLS1mb250LXNpemUtNnhsOiA2MHB4O1xuXG4gIC0tbGluZS1oZWlnaHQteHNtOiAxOHB4O1xuICAtLWxpbmUtaGVpZ2h0LXNtOiAxOHB4O1xuICAtLWxpbmUtaGVpZ2h0LWJhc2U6IDIycHg7XG4gIC0tbGluZS1oZWlnaHQtbGc6IDI0cHg7XG4gIC0tbGluZS1oZWlnaHQteGw6IDI4cHg7XG4gIC0tbGluZS1oZWlnaHQtMnhsOiAzMnB4O1xuICAtLWxpbmUtaGVpZ2h0LTN4bDogMzZweDtcbiAgLS1saW5lLWhlaWdodC00eGw6IDQzcHg7XG4gIC0tbGluZS1oZWlnaHQtNXhsOiA2NnB4O1xuICAtLWxpbmUtaGVpZ2h0LTZ4bDogODJweDtcblxuICAtLWZvbnQtd2VpZ2h0LXJlZ3VsYXI6IDQwMDtcbiAgLS1mb250LXdlaWdodC1tZWRpdW06IDUwMDtcbiAgLS1mb250LXdlaWdodC1zZW1pYm9sZDogNjAwO1xuICAtLWZvbnQtd2VpZ2h0LWJvbGQ6IDcwMDtcbiAgLS1mb250LXdlaWdodC1leHRyYWJvbGQ6IDgwMDtcbn1cbmAsIFwiXCIse1widmVyc2lvblwiOjMsXCJzb3VyY2VzXCI6W1wid2VicGFjazovLy4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzXCJdLFwibmFtZXNcIjpbXSxcIm1hcHBpbmdzXCI6XCJBQUFBO0VBQ0UscUJBQXFCO0VBQ3JCLG9CQUFvQjtFQUNwQixzQkFBc0I7RUFDdEIsb0JBQW9CO0VBQ3BCLG9CQUFvQjtFQUNwQixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixxQkFBcUI7RUFDckIscUJBQXFCOztFQUVyQix1QkFBdUI7RUFDdkIsc0JBQXNCO0VBQ3RCLHdCQUF3QjtFQUN4QixzQkFBc0I7RUFDdEIsc0JBQXNCO0VBQ3RCLHVCQUF1QjtFQUN2Qix1QkFBdUI7RUFDdkIsdUJBQXVCO0VBQ3ZCLHVCQUF1QjtFQUN2Qix1QkFBdUI7O0VBRXZCLDBCQUEwQjtFQUMxQix5QkFBeUI7RUFDekIsMkJBQTJCO0VBQzNCLHVCQUF1QjtFQUN2Qiw0QkFBNEI7QUFDOUJcIixcInNvdXJjZXNDb250ZW50XCI6W1wiLm51cmktdGhlbWUge1xcbiAgLS1mb250LXNpemUteHNtOiAxMnB4O1xcbiAgLS1mb250LXNpemUtc206IDE0cHg7XFxuICAtLWZvbnQtc2l6ZS1iYXNlOiAxNnB4O1xcbiAgLS1mb250LXNpemUtbGc6IDE4cHg7XFxuICAtLWZvbnQtc2l6ZS14bDogMjBweDtcXG4gIC0tZm9udC1zaXplLTJ4bDogMjRweDtcXG4gIC0tZm9udC1zaXplLTN4bDogMzBweDtcXG4gIC0tZm9udC1zaXplLTR4bDogMzZweDtcXG4gIC0tZm9udC1zaXplLTV4bDogNDhweDtcXG4gIC0tZm9udC1zaXplLTZ4bDogNjBweDtcXG5cXG4gIC0tbGluZS1oZWlnaHQteHNtOiAxOHB4O1xcbiAgLS1saW5lLWhlaWdodC1zbTogMThweDtcXG4gIC0tbGluZS1oZWlnaHQtYmFzZTogMjJweDtcXG4gIC0tbGluZS1oZWlnaHQtbGc6IDI0cHg7XFxuICAtLWxpbmUtaGVpZ2h0LXhsOiAyOHB4O1xcbiAgLS1saW5lLWhlaWdodC0yeGw6IDMycHg7XFxuICAtLWxpbmUtaGVpZ2h0LTN4bDogMzZweDtcXG4gIC0tbGluZS1oZWlnaHQtNHhsOiA0M3B4O1xcbiAgLS1saW5lLWhlaWdodC01eGw6IDY2cHg7XFxuICAtLWxpbmUtaGVpZ2h0LTZ4bDogODJweDtcXG5cXG4gIC0tZm9udC13ZWlnaHQtcmVndWxhcjogNDAwO1xcbiAgLS1mb250LXdlaWdodC1tZWRpdW06IDUwMDtcXG4gIC0tZm9udC13ZWlnaHQtc2VtaWJvbGQ6IDYwMDtcXG4gIC0tZm9udC13ZWlnaHQtYm9sZDogNzAwO1xcbiAgLS1mb250LXdlaWdodC1leHRyYWJvbGQ6IDgwMDtcXG59XFxuXCJdLFwic291cmNlUm9vdFwiOlwiXCJ9XSk7XG4vLyBFeHBvcnRzXG5leHBvcnQgZGVmYXVsdCBfX19DU1NfTE9BREVSX0VYUE9SVF9fXztcbiIsIlwidXNlIHN0cmljdFwiO1xuXG4vKlxuICBNSVQgTGljZW5zZSBodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLnBocFxuICBBdXRob3IgVG9iaWFzIEtvcHBlcnMgQHNva3JhXG4qL1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoY3NzV2l0aE1hcHBpbmdUb1N0cmluZykge1xuICB2YXIgbGlzdCA9IFtdO1xuXG4gIC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcbiAgbGlzdC50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiB0aGlzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgdmFyIGNvbnRlbnQgPSBcIlwiO1xuICAgICAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBpdGVtWzVdICE9PSBcInVuZGVmaW5lZFwiO1xuICAgICAgaWYgKGl0ZW1bNF0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChuZWVkTGF5ZXIpIHtcbiAgICAgICAgY29udGVudCArPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpO1xuICAgICAgfVxuICAgICAgY29udGVudCArPSBjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKGl0ZW0pO1xuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIn1cIjtcbiAgICAgIH1cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJ9XCI7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9O1xuXG4gIC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIGxpc3QuaSA9IGZ1bmN0aW9uIGkobW9kdWxlcywgbWVkaWEsIGRlZHVwZSwgc3VwcG9ydHMsIGxheWVyKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBtb2R1bGVzID0gW1tudWxsLCBtb2R1bGVzLCB1bmRlZmluZWRdXTtcbiAgICB9XG4gICAgdmFyIGFscmVhZHlJbXBvcnRlZE1vZHVsZXMgPSB7fTtcbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGlkID0gdGhpc1trXVswXTtcbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgX2sgPSAwOyBfayA8IG1vZHVsZXMubGVuZ3RoOyBfaysrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19rXSk7XG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIGxheWVyICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgIGlmICh0eXBlb2YgaXRlbVs1XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbGF5ZXJcIi5jb25jYXQoaXRlbVs1XS5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KGl0ZW1bNV0pIDogXCJcIiwgXCIge1wiKS5jb25jYXQoaXRlbVsxXSwgXCJ9XCIpO1xuICAgICAgICAgIGl0ZW1bNV0gPSBsYXllcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgdmFyIGNvbnRlbnQgPSBpdGVtWzFdO1xuICB2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG4gIGlmICh0eXBlb2YgYnRvYSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgdmFyIGJhc2U2NCA9IGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KGNzc01hcHBpbmcpKSkpO1xuICAgIHZhciBkYXRhID0gXCJzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04O2Jhc2U2NCxcIi5jb25jYXQoYmFzZTY0KTtcbiAgICB2YXIgc291cmNlTWFwcGluZyA9IFwiLyojIFwiLmNvbmNhdChkYXRhLCBcIiAqL1wiKTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChbc291cmNlTWFwcGluZ10pLmpvaW4oXCJcXG5cIik7XG4gIH1cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIHN0eWxlc0luRE9NID0gW107XG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG4gICAgaWYgKGluZGV4QnlJZGVudGlmaWVyICE9PSAtMSkge1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnJlZmVyZW5jZXMrKztcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS51cGRhdGVyKG9iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciB1cGRhdGVyID0gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLmJ5SW5kZXggPSBpO1xuICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKGksIDAsIHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogdXBkYXRlcixcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuZnVuY3Rpb24gYWRkRWxlbWVudFN0eWxlKG9iaiwgb3B0aW9ucykge1xuICB2YXIgYXBpID0gb3B0aW9ucy5kb21BUEkob3B0aW9ucyk7XG4gIGFwaS51cGRhdGUob2JqKTtcbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gdXBkYXRlcjtcbn1cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuICAgIHZhciBuZXdMYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obmV3TGlzdCwgb3B0aW9ucyk7XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuICAgICAgaWYgKHN0eWxlc0luRE9NW19pbmRleF0ucmVmZXJlbmNlcyA9PT0gMCkge1xuICAgICAgICBzdHlsZXNJbkRPTVtfaW5kZXhdLnVwZGF0ZXIoKTtcbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTtcblxuICAgIC8vIFNwZWNpYWwgY2FzZSB0byByZXR1cm4gaGVhZCBvZiBpZnJhbWUgaW5zdGVhZCBvZiBpZnJhbWUgaXRzZWxmXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuICByZXR1cm4gbWVtb1t0YXJnZXRdO1xufVxuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuICB0YXJnZXQuYXBwZW5kQ2hpbGQoc3R5bGUpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcbiAgaWYgKG5vbmNlKSB7XG4gICAgc3R5bGVFbGVtZW50LnNldEF0dHJpYnV0ZShcIm5vbmNlXCIsIG5vbmNlKTtcbiAgfVxufVxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJAbWVkaWEgXCIuY29uY2F0KG9iai5tZWRpYSwgXCIge1wiKTtcbiAgfVxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuICBjc3MgKz0gb2JqLmNzcztcbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfVxuXG4gIC8vIEZvciBvbGQgSUVcbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHN0eWxlRWxlbWVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudCk7XG59XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHJldHVybiB7XG4gICAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZSgpIHt9LFxuICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7fVxuICAgIH07XG4gIH1cbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG4gICAgc3R5bGVFbGVtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyIsIm1vZHVsZS5leHBvcnRzID0gX19XRUJQQUNLX0VYVEVSTkFMX01PRFVMRV9fMTE5X187IiwibW9kdWxlLmV4cG9ydHMgPSBfX1dFQlBBQ0tfRVhURVJOQUxfTU9EVUxFX18yMjZfXzsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5uYyA9IHVuZGVmaW5lZDsiLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vYXZhdGFyLXN0eWxlLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2F2YXRhci1zdHlsZS5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJ2YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xudmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsgQ2hpbGRyZW4sIGNsb25lRWxlbWVudCwgZm9yd2FyZFJlZiwgaXNWYWxpZEVsZW1lbnQsIH0gZnJvbSBcInJlYWN0XCI7XG5mdW5jdGlvbiBjb21wb3NlUmVmcygpIHtcbiAgICB2YXIgcmVmcyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHJlZnNbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChub2RlKSB7XG4gICAgICAgIHJlZnMuZm9yRWFjaChmdW5jdGlvbiAocmVmKSB7XG4gICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZWYgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgICAgICByZWYobm9kZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9O1xufVxudmFyIENvbXBvc2VyID0gZm9yd2FyZFJlZihmdW5jdGlvbiAoX2EsIHJlZikge1xuICAgIHZhciBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuLCBjb21wb3NlclByb3BzID0gX19yZXN0KF9hLCBbXCJjaGlsZHJlblwiXSk7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBDaGlsZHJlbi50b0FycmF5KGNoaWxkcmVuKTtcbiAgICBpZiAoY2hpbGRBcnJheS5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNvbXBvc2VyIGNhbiBvbmx5IGhhdmUgb25lIGNoaWxkXCIpO1xuICAgIH1cbiAgICB2YXIgaXNWYWxpZENoaWxkID0gaXNWYWxpZEVsZW1lbnQoY2hpbGRBcnJheVswXSk7XG4gICAgaWYgKCFpc1ZhbGlkQ2hpbGQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiY2hpbGQgc2hvdWxkIGJlIFJlYWN0IG5vZGUhXCIpO1xuICAgIH1cbiAgICB2YXIgY2hpbGQgPSBjaGlsZEFycmF5WzBdO1xuICAgIHZhciBjaGlsZFJlZiA9IGdldEVsZW1lbnRSZWYoY2hpbGQpO1xuICAgIHZhciBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoY29tcG9zZXJQcm9wcywgY2hpbGQucHJvcHMpO1xuICAgIHJldHVybiBjbG9uZUVsZW1lbnQoY2hpbGQsIF9fYXNzaWduKF9fYXNzaWduKHt9LCBtZXJnZWRQcm9wcyksIHsgcmVmOiByZWYgPyBjb21wb3NlUmVmcyhyZWYsIGNoaWxkUmVmKSA6IGNoaWxkUmVmIH0pKTtcbn0pO1xuQ29tcG9zZXIuZGlzcGxheU5hbWUgPSBcIkNvbXBvc2VyXCI7XG5mdW5jdGlvbiBtZXJnZVByb3BzKGNvbXBvc2VyUHJvcHMsIGNoaWxkUHJvcHMpIHtcbiAgICB2YXIgb3ZlcnJpZGVQcm9wcyA9IF9fYXNzaWduKHt9LCBjaGlsZFByb3BzKTtcbiAgICB2YXIgX2xvb3BfMSA9IGZ1bmN0aW9uIChwcm9wTmFtZSkge1xuICAgICAgICB2YXIgY29tcG9zZXJQcm9wVmFsdWUgPSBjb21wb3NlclByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgdmFyIGNoaWxkUHJvcFZhbHVlID0gY2hpbGRQcm9wc1twcm9wTmFtZV07XG4gICAgICAgIHZhciBpc0hhbmRsZXIgPSAvXm9uW0EtWl0vLnRlc3QocHJvcE5hbWUpO1xuICAgICAgICBpZiAoaXNIYW5kbGVyKSB7XG4gICAgICAgICAgICBpZiAoY29tcG9zZXJQcm9wVmFsdWUgJiYgY2hpbGRQcm9wVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjaGlsZFByb3BWYWx1ZS5hcHBseSh2b2lkIDAsIGFyZ3MpO1xuICAgICAgICAgICAgICAgICAgICBjb21wb3NlclByb3BWYWx1ZS5hcHBseSh2b2lkIDAsIGFyZ3MpO1xuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChjb21wb3NlclByb3BWYWx1ZSkge1xuICAgICAgICAgICAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gY29tcG9zZXJQcm9wVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJvcE5hbWUgPT09IFwic3R5bGVcIikge1xuICAgICAgICAgICAgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgY29tcG9zZXJQcm9wVmFsdWUpLCBjaGlsZFByb3BWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocHJvcE5hbWUgPT09IFwiY2xhc3NOYW1lXCIpIHtcbiAgICAgICAgICAgIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gW2NvbXBvc2VyUHJvcFZhbHVlLCBjaGlsZFByb3BWYWx1ZV1cbiAgICAgICAgICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgICAgICAgICAgLmpvaW4oXCIgXCIpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBjb21wb3NlclByb3BzKSB7XG4gICAgICAgIF9sb29wXzEocHJvcE5hbWUpO1xuICAgIH1cbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIGNvbXBvc2VyUHJvcHMpLCBvdmVycmlkZVByb3BzKTtcbn1cbmZ1bmN0aW9uIGdldEVsZW1lbnRSZWYoZWxlbWVudCkge1xuICAgIHZhciBfYSwgX2I7XG4gICAgdmFyIGdldHRlciA9IChfYSA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZWxlbWVudC5wcm9wcywgXCJyZWZcIikpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5nZXQ7XG4gICAgdmFyIG1heVdhcm4gPSBnZXR0ZXIgJiYgXCJpc1JlYWN0V2FybmluZ1wiIGluIGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmc7XG4gICAgaWYgKG1heVdhcm4pIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQucmVmO1xuICAgIH1cbiAgICBnZXR0ZXIgPSAoX2IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGVsZW1lbnQsIFwicmVmXCIpKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZ2V0O1xuICAgIG1heVdhcm4gPSBnZXR0ZXIgJiYgXCJpc1JlYWN0V2FybmluZ1wiIGluIGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmc7XG4gICAgaWYgKG1heVdhcm4pIHtcbiAgICAgICAgcmV0dXJuIGVsZW1lbnQucHJvcHMucmVmO1xuICAgIH1cbiAgICByZXR1cm4gKGVsZW1lbnQucHJvcHMucmVmIHx8IGVsZW1lbnQucmVmKTtcbn1cbmV4cG9ydCBkZWZhdWx0IENvbXBvc2VyO1xuIiwidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgQ29tcG9zZXIgZnJvbSBcIi4uL2NvcmUvY29tcG9zZXJcIjtcbmV4cG9ydCB2YXIgQmFzZUJhZGdlID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hID0gcHJvcHMuYXNDaGlsZCwgYXNDaGlsZCA9IF9hID09PSB2b2lkIDAgPyBmYWxzZSA6IF9hLCBib3JkZXJDb2xvciA9IHByb3BzLmJvcmRlckNvbG9yLCBfYiA9IHByb3BzLnRleHRDb2xvciwgdGV4dENvbG9yID0gX2IgPT09IHZvaWQgMCA/IFwiYmxhY2tcIiA6IF9iLCByYWRpdXMgPSBwcm9wcy5yYWRpdXMsIGJhY2tncm91bmRDb2xvciA9IHByb3BzLmJhY2tncm91bmRDb2xvciwgX2MgPSBwcm9wcy5zaXplLCBzaXplID0gX2MgPT09IHZvaWQgMCA/IFwibFwiIDogX2MsIHN0eWxlID0gcHJvcHMuc3R5bGUsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZTtcbiAgICB2YXIgQ29tcCA9IGFzQ2hpbGQgPyBDb21wb3NlciA6IFwiZGl2XCI7XG4gICAgdmFyIGNvbXBvc2VkQ2xhc3NOYW1lID0gXCJudXJpLXRoZW1lIFwiLmNvbmNhdChhc0NoaWxkID8gXCJcIiA6IFwiYmFzZS1iYWRnZVwiLCBcIiBcIikuY29uY2F0KHNpemUsIFwiIGJvcmRlci1cIikuY29uY2F0KGJvcmRlckNvbG9yLCBcIiB0ZXh0LVwiKS5jb25jYXQodGV4dENvbG9yLCBcIiBiYWNrZ3JvdW5kLVwiKS5jb25jYXQoYmFja2dyb3VuZENvbG9yLCBcIiBcIikuY29uY2F0KGNsYXNzTmFtZSk7XG4gICAgcmV0dXJuIChfanN4KENvbXAsIHsgc3R5bGU6IF9fYXNzaWduKHsgYm9yZGVyUmFkaXVzOiBcIlwiLmNvbmNhdChyYWRpdXMsIFwicHhcIikgfSwgc3R5bGUpLCBjbGFzc05hbWU6IGNvbXBvc2VkQ2xhc3NOYW1lLCBjaGlsZHJlbjogY2hpbGRyZW4gfSkpO1xufTtcbiIsImltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFwiLi9hdmF0YXItc3R5bGUuY3NzXCI7XG5pbXBvcnQgeyBCYXNlQmFkZ2UgfSBmcm9tIFwiLi4vYmFkZ2UvYmFzZS1iYWRnZVwiO1xudmFyIEF2YXRhciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBzaXplID0gcHJvcHMuc2l6ZSwgc3JjID0gcHJvcHMuc3JjLCBhbHQgPSBwcm9wcy5hbHQsIGJhZGdlT3B0aW9uID0gcHJvcHMuYmFkZ2VPcHRpb247XG4gICAgdmFyIF9hID0gdXNlU3RhdGUoZmFsc2UpLCBpc0ltYWdlRG93bmxvYWQgPSBfYVswXSwgc2V0SXNJbWFnZURvd25sb2FkID0gX2FbMV07XG4gICAgcmV0dXJuIChfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJhdmF0YXIgXCIuY29uY2F0KHNpemUpLCBjaGlsZHJlbjogW19qc3goXCJpbWdcIiwgeyBzcmM6IHNyYywgYWx0OiBhbHQgIT09IG51bGwgJiYgYWx0ICE9PSB2b2lkIDAgPyBhbHQgOiBcImF2YXRhclwiLCBjbGFzc05hbWU6IFwiYXZhdGFyIFwiLmNvbmNhdChzaXplLCBcIiBcIikuY29uY2F0KCFpc0ltYWdlRG93bmxvYWQgPyBcImhpZGRlblwiIDogXCJcIiksIG9uTG9hZDogZnVuY3Rpb24gKCkgeyByZXR1cm4gc2V0SXNJbWFnZURvd25sb2FkKHRydWUpOyB9IH0pLCAhaXNJbWFnZURvd25sb2FkICYmIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImF2YXRhciBhdmF0YXItc2tlbGV0b24gXCIuY29uY2F0KHNpemUpLCBjaGlsZHJlbjogX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJhdmF0YXIgc2tlbGV0b24tYW5pbWF0aW9uXCIgfSkgfSkpLCBfanN4KEJhc2VCYWRnZSwgeyBhc0NoaWxkOiB0cnVlLCBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICAgICAgICAgICAgICAgICAgICByaWdodDogXCIwXCIsXG4gICAgICAgICAgICAgICAgICAgIGJvdHRvbTogXCIwXCIsXG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IGJhZGdlT3B0aW9uIH0pXSB9KSk7XG59O1xuZXhwb3J0IGRlZmF1bHQgQXZhdGFyO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2J1dHRvbi1zdHlsZS5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9idXR0b24tc3R5bGUuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2NvbG9yLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2NvbG9yLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9mb250LmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2ZvbnQuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBmb3J3YXJkUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgQ29tcG9zZXIgZnJvbSBcIi4uL2NvcmUvY29tcG9zZXJcIjtcbmltcG9ydCBcIi4vYnV0dG9uLXN0eWxlLmNzc1wiO1xuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2VuL2NvbG9yLmNzc1wiO1xuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzXCI7XG52YXIgQmFzZUJ1dHRvbiA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKF9hLCByZWYpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBfYS5jaGlsZHJlbiwgX2IgPSBfYS5hc0NoaWxkLCBhc0NoaWxkID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2IsIGNsYXNzTmFtZSA9IF9hLmNsYXNzTmFtZSwgcHJvcHMgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCIsIFwiYXNDaGlsZFwiLCBcImNsYXNzTmFtZVwiXSk7XG4gICAgdmFyIENvbXAgPSBhc0NoaWxkID8gQ29tcG9zZXIgOiBcImJ1dHRvblwiO1xuICAgIHJldHVybiAoX2pzeChDb21wLCBfX2Fzc2lnbih7IHJlZjogcmVmLCBjbGFzc05hbWU6IGFzQ2hpbGQgPyBjbGFzc05hbWUgOiBcImJhc2UtYnV0dG9uIFwiLmNvbmNhdChjbGFzc05hbWUgIT09IG51bGwgJiYgY2xhc3NOYW1lICE9PSB2b2lkIDAgPyBjbGFzc05hbWUgOiBcIlwiKSB9LCBwcm9wcywgeyBjaGlsZHJlbjogY2hpbGRyZW4gfSkpKTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgQmFzZUJ1dHRvbjtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9sb2FkaW5nLXN0eWxlLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2xvYWRpbmctc3R5bGUuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBcIi4vbG9hZGluZy1zdHlsZS5jc3NcIjtcbnZhciBMb2FkaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAoX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJjb21wb25lbnQtbG9hZGluZy1jb250YWluZXJcIiwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxvYWRpbmctaW5kaWNhdG9yLXJpbmdcIiwgY2hpbGRyZW46IFtfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nXCIgfSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibG9hZGluZy1pbmRpY2F0b3Itc2luZ2xlLXJpbmdcIiB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJsb2FkaW5nLWluZGljYXRvci1zaW5nbGUtcmluZ1wiIH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImxvYWRpbmctaW5kaWNhdG9yLXNpbmdsZS1yaW5nXCIgfSldIH0pIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCBMb2FkaW5nO1xuIiwidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBGcmFnbWVudCBhcyBfRnJhZ21lbnQsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBCYXNlQnV0dG9uIGZyb20gXCIuL2Jhc2UtYnV0dG9uXCI7XG5pbXBvcnQgTG9hZGluZyBmcm9tIFwiLi4vbG9hZGluZy9sb2FkaW5nXCI7XG52YXIgQ1RBQnV0dG9uID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHRleHQgPSBwcm9wcy50ZXh0LCBfYSA9IHByb3BzLnZhcmlhbnQsIHZhcmlhbnQgPSBfYSA9PT0gdm9pZCAwID8gXCJwcmltYXJ5XCIgOiBfYSwgX2IgPSBwcm9wcy5zaXplLCBzaXplID0gX2IgPT09IHZvaWQgMCA/IFwibVwiIDogX2IsIF9jID0gcHJvcHMuZGlzYWJsZWQsIGRpc2FibGVkID0gX2MgPT09IHZvaWQgMCA/IGZhbHNlIDogX2MsIGljb24gPSBwcm9wcy5pY29uLCBfZCA9IHByb3BzLmxvYWRpbmcsIGxvYWRpbmcgPSBfZCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfZDtcbiAgICByZXR1cm4gKF9qc3goQmFzZUJ1dHRvbiwgX19hc3NpZ24oe30sIHByb3BzLCB7IGNsYXNzTmFtZTogXCJudXJpLXRoZW1lIGN0YS1idXR0b24gXCIuY29uY2F0KGRpc2FibGVkID8gXCJkaXNhYmxlZFwiIDogdmFyaWFudCwgXCIgXCIpLmNvbmNhdChzaXplKSwgY2hpbGRyZW46IGxvYWRpbmcgPyAoX2pzeChMb2FkaW5nLCB7fSkpIDogKF9qc3hzKF9GcmFnbWVudCwgeyBjaGlsZHJlbjogW2ljb24sIHRleHRdIH0pKSB9KSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IENUQUJ1dHRvbjtcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgQmFzZUJhZGdlIH0gZnJvbSBcIi4vYmFzZS1iYWRnZVwiO1xudmFyIE9wdGlvbkJhZGdlID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIG9wdGlvbiA9IHByb3BzLm9wdGlvbjtcbiAgICByZXR1cm4gX2pzeChCYXNlQmFkZ2UsIF9fYXNzaWduKHt9LCBwcm9wcywgeyBjaGlsZHJlbjogb3B0aW9uIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCBPcHRpb25CYWRnZTtcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgQmFzZUJhZGdlIH0gZnJvbSBcIi4vYmFzZS1iYWRnZVwiO1xudmFyIEljb25UZXh0QmFkZ2UgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgaWNvbiA9IHByb3BzLmljb24sIHRleHQgPSBwcm9wcy50ZXh0O1xuICAgIHJldHVybiAoX2pzeHMoQmFzZUJhZGdlLCBfX2Fzc2lnbih7fSwgcHJvcHMsIHsgY2hpbGRyZW46IFtpY29uLCBfanN4KFwic3BhblwiLCB7IGNoaWxkcmVuOiB0ZXh0IH0pXSB9KSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IEljb25UZXh0QmFkZ2U7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vYmFkZ2Utc3R5bGUuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5vcHRpb25zLmluc2VydCA9IGluc2VydEZuLmJpbmQobnVsbCwgXCJoZWFkXCIpO1xub3B0aW9ucy5kb21BUEkgPSBkb21BUEk7XG5vcHRpb25zLmluc2VydFN0eWxlRWxlbWVudCA9IGluc2VydFN0eWxlRWxlbWVudDtcblxudmFyIHVwZGF0ZSA9IEFQSShjb250ZW50LCBvcHRpb25zKTtcblxuXG5cbmV4cG9ydCAqIGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vYmFkZ2Utc3R5bGUuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4LCBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgXCIuL2JhZGdlLXN0eWxlLmNzc1wiO1xuaW1wb3J0IHsgQmFzZUJhZGdlIH0gZnJvbSBcIi4vYmFzZS1iYWRnZVwiO1xudmFyIEljb25UZXh0T3B0aW9uQmFkZ2UgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgaWNvbiA9IHByb3BzLmljb24sIHRleHQgPSBwcm9wcy50ZXh0LCBvcHRpb24gPSBwcm9wcy5vcHRpb247XG4gICAgcmV0dXJuIChfanN4cyhCYXNlQmFkZ2UsIF9fYXNzaWduKHt9LCBwcm9wcywgeyBjbGFzc05hbWU6IFwiaWNvbi10ZXh0LW9wdGlvblwiLCBjaGlsZHJlbjogW19qc3hzKFwic3BhblwiLCB7IGNoaWxkcmVuOiBbaWNvbiwgX2pzeChcInNwYW5cIiwgeyBjaGlsZHJlbjogdGV4dCB9KV0gfSksIG9wdGlvbl0gfSkpKTtcbn07XG5leHBvcnQgZGVmYXVsdCBJY29uVGV4dE9wdGlvbkJhZGdlO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3RhYmxlLXN0eWxlLmNzc1wiO1xuICAgICAgXG4gICAgICBcblxudmFyIG9wdGlvbnMgPSB7fTtcblxub3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybSA9IHN0eWxlVGFnVHJhbnNmb3JtRm47XG5vcHRpb25zLnNldEF0dHJpYnV0ZXMgPSBzZXRBdHRyaWJ1dGVzO1xub3B0aW9ucy5pbnNlcnQgPSBpbnNlcnRGbi5iaW5kKG51bGwsIFwiaGVhZFwiKTtcbm9wdGlvbnMuZG9tQVBJID0gZG9tQVBJO1xub3B0aW9ucy5pbnNlcnRTdHlsZUVsZW1lbnQgPSBpbnNlcnRTdHlsZUVsZW1lbnQ7XG5cbnZhciB1cGRhdGUgPSBBUEkoY29udGVudCwgb3B0aW9ucyk7XG5cblxuXG5leHBvcnQgKiBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL3RhYmxlLXN0eWxlLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFwiLi90YWJsZS1zdHlsZS5jc3NcIjtcbnZhciBUYWJsZVJvb3QgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICByZXR1cm4gX2pzeChcInRhYmxlXCIsIHsgY2xhc3NOYW1lOiBcImJhc2UtdGFibGUgdGFibGUtcm9vdFwiLCBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW4gfSk7XG59O1xudmFyIFRhYmxlSGVhZGVyID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIF9hID0gcHJvcHMuanVzdGlmeSwganVzdGlmeSA9IF9hID09PSB2b2lkIDAgPyBcImNlbnRlclwiIDogX2EsIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wianVzdGlmeVwiLCBcImNsYXNzTmFtZVwiXSk7XG4gICAgcmV0dXJuIChfanN4KFwidGhlYWRcIiwgeyBjbGFzc05hbWU6IFwiYmFzZS10YWJsZSB0YWJsZS1oZWFkZXIgXCIuY29uY2F0KGp1c3RpZnksIFwiIFwiKS5jb25jYXQoY2xhc3NOYW1lKSwgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuIH0pKTtcbn07XG52YXIgVGFibGVSb3cgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJjbGFzc05hbWVcIl0pO1xuICAgIHZhciBjbGFzc05hbWVzID0gW1wiYmFzZS10YWJsZVwiLCBcInRhYmxlLXJvd1wiLCBjbGFzc05hbWVdLmpvaW4oXCIgXCIpO1xuICAgIHJldHVybiAoX2pzeChcInRyXCIsIF9fYXNzaWduKHsgY2xhc3NOYW1lOiBjbGFzc05hbWVzIH0sIHJlc3QsIHsgY2hpbGRyZW46IHByb3BzLmNoaWxkcmVuIH0pKSk7XG59O1xudmFyIFRhYmxlQm9keSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHJldHVybiBfanN4KFwidGJvZHlcIiwgeyBjbGFzc05hbWU6IFwiYmFzZS10YWJsZSB0YWJsZS1ib2R5XCIsIGNoaWxkcmVuOiBwcm9wcy5jaGlsZHJlbiB9KTtcbn07XG52YXIgVGFibGVDZWxsID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiY2xhc3NOYW1lXCJdKTtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IFtcImJhc2UtdGFibGVcIiwgXCJ0YWJsZS1jZWxsXCIsIGNsYXNzTmFtZV0uam9pbihcIiBcIik7XG4gICAgcmV0dXJuIChfanN4KFwidGRcIiwgX19hc3NpZ24oeyBjbGFzc05hbWU6IGNsYXNzTmFtZXMgfSwgcmVzdCwgeyBjaGlsZHJlbjogcHJvcHMuY2hpbGRyZW4gfSkpKTtcbn07XG5UYWJsZVJvb3QuSGVhZGVyID0gVGFibGVIZWFkZXI7XG5UYWJsZVJvb3QuQm9keSA9IFRhYmxlQm9keTtcblRhYmxlUm9vdC5Sb3cgPSBUYWJsZVJvdztcblRhYmxlUm9vdC5DZWxsID0gVGFibGVDZWxsO1xuZXhwb3J0IGRlZmF1bHQgVGFibGVSb290O1xuIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBUYWJsZVJvb3QgZnJvbSBcIi4vYmFzZS10YWJsZVwiO1xuaW1wb3J0IEJhc2VCdXR0b24gZnJvbSBcIi4uL2J1dHRvbi9iYXNlLWJ1dHRvblwiO1xudmFyIERhdGFUYWJsZSA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciByb3dzID0gcHJvcHMucm93cywgY29sdW1ucyA9IHByb3BzLmNvbHVtbnM7XG4gICAgdmFyIF9hID0gdXNlU3RhdGUocm93cy5tYXAoZnVuY3Rpb24gKHJvdykgeyByZXR1cm4gKHsgcm93OiByb3csIGhpZGU6IGZhbHNlIH0pOyB9KSksIGRpc3BsYXlSb3dzID0gX2FbMF0sIHNldERpc3BsYXlSb3dzID0gX2FbMV07XG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0RGlzcGxheVJvd3Mocm93cy5tYXAoZnVuY3Rpb24gKHJvdykge1xuICAgICAgICAgICAgdmFyIF9hLCBfYjtcbiAgICAgICAgICAgIHJldHVybiAoe1xuICAgICAgICAgICAgICAgIHJvdzogcm93LFxuICAgICAgICAgICAgICAgIGhpZGU6IChfYiA9IChfYSA9IGRpc3BsYXlSb3dzLmZpbmQoZnVuY3Rpb24gKGl0ZW0pIHsgcmV0dXJuIGl0ZW0ucm93LmlkID09PSByb3cuaWQ7IH0pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuaGlkZSkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogZmFsc2UsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkpO1xuICAgIH0sIFtyb3dzXSk7XG4gICAgcmV0dXJuIChfanN4cyhUYWJsZVJvb3QsIHsgY2hpbGRyZW46IFtfanN4KFRhYmxlUm9vdC5IZWFkZXIsIHsgY2xhc3NOYW1lOiBcImRhdGEtdGFibGVcIiwgY2hpbGRyZW46IF9qc3goVGFibGVSb290LlJvdywgeyBjaGlsZHJlbjogZGlzcGxheVJvd3MubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goVGFibGVSb290LkNlbGwsIHsgY2xhc3NOYW1lOiBpdGVtLmhpZGUgPyBcImhpZGVcIiA6IFwiXCIsIGNoaWxkcmVuOiBfanN4KEJhc2VCdXR0b24sIHsgYXNDaGlsZDogdHJ1ZSwgb25DbGljazogZnVuY3Rpb24gKCkgeyB2YXIgX2EsIF9iOyByZXR1cm4gKF9iID0gKF9hID0gaXRlbS5yb3cpLm9uQ2xpY2tSb3cpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5jYWxsKF9hLCBpdGVtLnJvdy5pZCk7IH0sIGNoaWxkcmVuOiBpdGVtLnJvdy52YWx1ZSB9KSB9LCBpdGVtLnJvdy5pZCkpO1xuICAgICAgICAgICAgICAgICAgICB9KSB9KSB9KSwgX2pzeChUYWJsZVJvb3QuQm9keSwgeyBjaGlsZHJlbjogY29sdW1ucy5tYXAoZnVuY3Rpb24gKGNvbHVtbikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gKF9qc3goVGFibGVSb290LlJvdywgeyBjbGFzc05hbWU6IFwiZGF0YS10YWJsZVwiLCBjaGlsZHJlbjogZGlzcGxheVJvd3MubWFwKGZ1bmN0aW9uIChpdGVtKSB7IHJldHVybiAoX2pzeChUYWJsZVJvb3QuQ2VsbCwgeyBjbGFzc05hbWU6IGl0ZW0uaGlkZSA/IFwiaGlkZVwiIDogXCJcIiwgY2hpbGRyZW46IF9qc3goQmFzZUJ1dHRvbiwgeyBhc0NoaWxkOiB0cnVlLCBvbkNsaWNrOiBmdW5jdGlvbiAoKSB7IHZhciBfYSwgX2I7IHJldHVybiAoX2IgPSAoX2EgPSBjb2x1bW5baXRlbS5yb3cuaWRdKS5vbkNsaWNrQ2VsbCkgPT09IG51bGwgfHwgX2IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9iLmNhbGwoX2EpOyB9LCBjaGlsZHJlbjogY29sdW1uW2l0ZW0ucm93LmlkXS52YWx1ZSB9KSB9LCBpdGVtLnJvdy5pZCkpOyB9KSB9KSk7XG4gICAgICAgICAgICAgICAgfSkgfSldIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCBEYXRhVGFibGU7XG4iLCJcbiAgICAgIGltcG9ydCBBUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbmplY3RTdHlsZXNJbnRvU3R5bGVUYWcuanNcIjtcbiAgICAgIGltcG9ydCBkb21BUEkgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZURvbUFQSS5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydEZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0QnlTZWxlY3Rvci5qc1wiO1xuICAgICAgaW1wb3J0IHNldEF0dHJpYnV0ZXMgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRTdHlsZUVsZW1lbnQgZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanNcIjtcbiAgICAgIGltcG9ydCBzdHlsZVRhZ1RyYW5zZm9ybUZuIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanNcIjtcbiAgICAgIGltcG9ydCBjb250ZW50LCAqIGFzIG5hbWVkRXhwb3J0IGZyb20gXCIhIS4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvY2pzLmpzIS4vdGV4dC1maWVsZC1zdHlsZS5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi90ZXh0LWZpZWxkLXN0eWxlLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VTdGF0ZSwgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBcIi4vdGV4dC1maWVsZC1zdHlsZS5jc3NcIjtcbmltcG9ydCBcIi4uLy4uL3N0eWxlcy90b2tlbi9mb250LmNzc1wiO1xudmFyIFRleHRMYWJlbCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB0ZXh0ID0gcHJvcHMudGV4dCwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lO1xuICAgIHJldHVybiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc05hbWUsIGNoaWxkcmVuOiB0ZXh0IH0pO1xufTtcbnZhciBJbnB1dEZpZWxkID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSwgcGxhY2Vob2xkZXIgPSBwcm9wcy5wbGFjZWhvbGRlciwgbmFtZSA9IHByb3BzLm5hbWUsIG9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2U7XG4gICAgdmFyIF9hID0gdXNlQ29udGV4dChUZXh0RmllbGRDb250ZXh0KSwgY29udmVydEVycm9yTWVzc2FnZSA9IF9hLmNvbnZlcnRFcnJvck1lc3NhZ2UsIGNvbnZlcnRFcnJvclN0YXRlID0gX2EuY29udmVydEVycm9yU3RhdGUsIHZhbGlkYXRpb25zID0gX2EudmFsaWRhdGlvbnM7XG4gICAgdmFyIHZhbGlkYXRlSW5wdXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgaWYgKHZhbGlkYXRpb25zKSB7XG4gICAgICAgICAgICB2YXIgZmFpbGVkVmFsaWRhdGlvbiA9IHZhbGlkYXRpb25zLmZpbmQoZnVuY3Rpb24gKHZhbGlkYXRpb24pIHsgcmV0dXJuICF2YWxpZGF0aW9uLnJ1bGUudGVzdCh2YWx1ZSk7IH0pO1xuICAgICAgICAgICAgaWYgKGZhaWxlZFZhbGlkYXRpb24pIHtcbiAgICAgICAgICAgICAgICBjb252ZXJ0RXJyb3JTdGF0ZSh0cnVlKTtcbiAgICAgICAgICAgICAgICBjb252ZXJ0RXJyb3JNZXNzYWdlKGZhaWxlZFZhbGlkYXRpb24ubWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udmVydEVycm9yU3RhdGUoZmFsc2UpO1xuICAgICAgICAgICAgY29udmVydEVycm9yTWVzc2FnZShcIlwiKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH07XG4gICAgcmV0dXJuIChfanN4KFwiaW5wdXRcIiwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBuYW1lOiBuYW1lLCBvbkNoYW5nZTogZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIHZhbGlkYXRlSW5wdXQoZS50YXJnZXQudmFsdWUpO1xuICAgICAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKGUpO1xuICAgICAgICB9IH0pKTtcbn07XG52YXIgSGVscGVyVGV4dCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciB0ZXh0ID0gcHJvcHMudGV4dCwgX2EgPSBwcm9wcy5jbGFzc05hbWUsIGNsYXNzTmFtZSA9IF9hID09PSB2b2lkIDAgPyBmYWxzZSA6IF9hO1xuICAgIHZhciBfYiA9IHVzZUNvbnRleHQoVGV4dEZpZWxkQ29udGV4dCksIGVycm9yTWVzc2FnZSA9IF9iLmVycm9yTWVzc2FnZSwgaXNFcnJvciA9IF9iLmlzRXJyb3I7XG4gICAgdmFyIGVycm9yQ2xhc3NOYW1lID0gaXNFcnJvciA/IFwiZXJyb3JcIiA6IFwiXCI7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChjbGFzc05hbWUsIFwiIFwiKS5jb25jYXQoZXJyb3JDbGFzc05hbWUpLCBjaGlsZHJlbjogZXJyb3JNZXNzYWdlICE9PSBudWxsICYmIGVycm9yTWVzc2FnZSAhPT0gdm9pZCAwID8gZXJyb3JNZXNzYWdlIDogdGV4dCB9KSk7XG59O1xudmFyIFRleHRGaWVsZENvbnRleHQgPSBjcmVhdGVDb250ZXh0KHtcbiAgICBpc0Vycm9yOiBmYWxzZSxcbiAgICBjb252ZXJ0RXJyb3JTdGF0ZTogZnVuY3Rpb24gKCkgeyB9LFxuICAgIHZhbGlkYXRpb25zOiBbXSxcbiAgICBlcnJvck1lc3NhZ2U6IFwiXCIsXG4gICAgY29udmVydEVycm9yTWVzc2FnZTogZnVuY3Rpb24gKHZhbHVlKSB7IH0sXG59KTtcbnZhciBUZXh0RmllbGRSb290ID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sIHZhbGlkYXRpb25zID0gX2EudmFsaWRhdGlvbnMsIHdpZHRoID0gX2Eud2lkdGg7XG4gICAgdmFyIF9iID0gdXNlU3RhdGUoZmFsc2UpLCBpc0Vycm9yID0gX2JbMF0sIHNldElzRXJyb3IgPSBfYlsxXTtcbiAgICB2YXIgX2MgPSB1c2VTdGF0ZShcIlwiKSwgZXJyb3JNZXNzYWdlID0gX2NbMF0sIHNldEVycm9yTWVzc2FnZSA9IF9jWzFdO1xuICAgIHZhciBjb252ZXJ0RXJyb3JTdGF0ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBzZXRJc0Vycm9yKHZhbHVlKTtcbiAgICB9O1xuICAgIHZhciBjb252ZXJ0RXJyb3JNZXNzYWdlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHNldEVycm9yTWVzc2FnZSh2YWx1ZSk7XG4gICAgfTtcbiAgICByZXR1cm4gKF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBcInRleHQtZmllbGQtcm9vdFwiLCBzdHlsZTogeyBkaXNwbGF5OiBcImJsb2NrXCIsIHdpZHRoOiBcIlwiLmNvbmNhdCh3aWR0aCwgXCJweFwiKSB9LCBjaGlsZHJlbjogX2pzeChUZXh0RmllbGRDb250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7XG4gICAgICAgICAgICAgICAgaXNFcnJvcjogaXNFcnJvcixcbiAgICAgICAgICAgICAgICBjb252ZXJ0RXJyb3JTdGF0ZTogY29udmVydEVycm9yU3RhdGUsXG4gICAgICAgICAgICAgICAgdmFsaWRhdGlvbnM6IHZhbGlkYXRpb25zLFxuICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZTogZXJyb3JNZXNzYWdlLFxuICAgICAgICAgICAgICAgIGNvbnZlcnRFcnJvck1lc3NhZ2U6IGNvbnZlcnRFcnJvck1lc3NhZ2UsXG4gICAgICAgICAgICB9LCBjaGlsZHJlbjogY2hpbGRyZW4gfSkgfSkpO1xufTtcblRleHRGaWVsZFJvb3QuVGV4dExhYmVsID0gVGV4dExhYmVsO1xuVGV4dEZpZWxkUm9vdC5JbnB1dEZpZWxkID0gSW5wdXRGaWVsZDtcblRleHRGaWVsZFJvb3QuSGVscGVyVGV4dCA9IEhlbHBlclRleHQ7XG5leHBvcnQgZGVmYXVsdCBUZXh0RmllbGRSb290O1xuIiwiaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBUZXh0RmllbGRSb290IGZyb20gXCIuL2Jhc2UtdGV4dC1maWVsZFwiO1xuaW1wb3J0IFwiLi90ZXh0LWZpZWxkLXN0eWxlLmNzc1wiO1xuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzXCI7XG52YXIgVGV4dEZpZWxkID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIF9iID0gX2Eud2lkdGgsIHdpZHRoID0gX2IgPT09IHZvaWQgMCA/IDM0MyA6IF9iLCBfYyA9IF9hLnBsYWNlaG9sZGVyLCBwbGFjZWhvbGRlciA9IF9jID09PSB2b2lkIDAgPyBcIlwiIDogX2MsIF9kID0gX2EubmFtZSwgbmFtZSA9IF9kID09PSB2b2lkIDAgPyBcIlwiIDogX2QsIGhlbHBlclRleHQgPSBfYS5oZWxwZXJUZXh0LCBsYWJlbFRleHQgPSBfYS5sYWJlbFRleHQsIG9uQ2hhbmdlID0gX2Eub25DaGFuZ2U7XG4gICAgcmV0dXJuIChfanN4cyhUZXh0RmllbGRSb290LCB7IHZhbGlkYXRpb25zOiBbXSwgd2lkdGg6IHdpZHRoLCBjaGlsZHJlbjogW2xhYmVsVGV4dCAmJiAoX2pzeChUZXh0RmllbGRSb290LlRleHRMYWJlbCwgeyB0ZXh0OiBsYWJlbFRleHQsIGNsYXNzTmFtZTogXCJudXJpLXRoZW1lIHRleHQtZmllbGQgbGFiZWxcIiB9KSksIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IFwibnVyaS10aGVtZSB0ZXh0LWZpZWxkIGlucHV0LXdyYXBwZXJcIiwgY2hpbGRyZW46IF9qc3goVGV4dEZpZWxkUm9vdC5JbnB1dEZpZWxkLCB7IGNsYXNzTmFtZTogXCJudXJpLXRoZW1lIHRleHQtZmllbGQgaW5wdXRcIiwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCBuYW1lOiBuYW1lLCBvbkNoYW5nZTogb25DaGFuZ2UgfSkgfSksIGhlbHBlclRleHQgJiYgKF9qc3goVGV4dEZpZWxkUm9vdC5IZWxwZXJUZXh0LCB7IHRleHQ6IGhlbHBlclRleHQsIGNsYXNzTmFtZTogXCJudXJpLXRoZW1lIHRleHQtZmllbGQgaGVscGVyLXRleHRcIiB9KSldIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCBUZXh0RmllbGQ7XG4iLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFRleHRGaWVsZFJvb3QgZnJvbSBcIi4vYmFzZS10ZXh0LWZpZWxkXCI7XG5pbXBvcnQgXCIuL3RleHQtZmllbGQtc3R5bGUuY3NzXCI7XG5pbXBvcnQgXCIuLi8uLi9zdHlsZXMvdG9rZW4vZm9udC5jc3NcIjtcbnZhciBUZXh0RmllbGRXaXRoRXJyb3IgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgX2IgPSBfYS53aWR0aCwgd2lkdGggPSBfYiA9PT0gdm9pZCAwID8gMzQzIDogX2IsIF9jID0gX2EucGxhY2Vob2xkZXIsIHBsYWNlaG9sZGVyID0gX2MgPT09IHZvaWQgMCA/IFwiXCIgOiBfYywgX2QgPSBfYS5uYW1lLCBuYW1lID0gX2QgPT09IHZvaWQgMCA/IFwiXCIgOiBfZCwgaGVscGVyVGV4dCA9IF9hLmhlbHBlclRleHQsIGxhYmVsVGV4dCA9IF9hLmxhYmVsVGV4dCwgdmFsaWRhdGlvbnMgPSBfYS52YWxpZGF0aW9ucztcbiAgICByZXR1cm4gKF9qc3hzKFRleHRGaWVsZFJvb3QsIHsgd2lkdGg6IHdpZHRoLCB2YWxpZGF0aW9uczogdmFsaWRhdGlvbnMsIGNoaWxkcmVuOiBbbGFiZWxUZXh0ICYmIChfanN4KFRleHRGaWVsZFJvb3QuVGV4dExhYmVsLCB7IHRleHQ6IGxhYmVsVGV4dCwgY2xhc3NOYW1lOiBcIm51cmktdGhlbWUgdGV4dC1maWVsZCBsYWJlbFwiIH0pKSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogXCJudXJpLXRoZW1lIHRleHQtZmllbGQgaW5wdXQtd3JhcHBlclwiLCBjaGlsZHJlbjogX2pzeChUZXh0RmllbGRSb290LklucHV0RmllbGQsIHsgY2xhc3NOYW1lOiBcIm51cmktdGhlbWUgdGV4dC1maWVsZCBpbnB1dFwiLCBwbGFjZWhvbGRlcjogcGxhY2Vob2xkZXIsIG5hbWU6IG5hbWUgfSkgfSksIGhlbHBlclRleHQgJiYgKF9qc3goVGV4dEZpZWxkUm9vdC5IZWxwZXJUZXh0LCB7IHRleHQ6IGhlbHBlclRleHQsIGNsYXNzTmFtZTogXCJudXJpLXRoZW1lIHRleHQtZmllbGQgaGVscGVyLXRleHRcIiwgaXNFcnJvcjogdHJ1ZSB9KSldIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCBUZXh0RmllbGRXaXRoRXJyb3I7XG4iLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuZXhwb3J0IHZhciB1c2VFeHRlcm5hbFN0YXRlID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHByb3AgPSBfYS5wcm9wLCBoYW5kbGVyID0gX2EuaGFuZGxlciwgZGVmYXVsdFByb3AgPSBfYS5kZWZhdWx0UHJvcDtcbiAgICB2YXIgX2IgPSB1c2VTdGF0ZShwcm9wICE9PSBudWxsICYmIHByb3AgIT09IHZvaWQgMCA/IHByb3AgOiBkZWZhdWx0UHJvcCksIGlubmVyU3RhdGUgPSBfYlswXSwgc2V0SW5uZXJTdGF0ZSA9IF9iWzFdO1xuICAgIHZhciBpc0NvbnRyb2xsZWRCeUV4dGVybmFsID0gcHJvcCAhPT0gdW5kZWZpbmVkO1xuICAgIHZhciB2YWx1ZSA9IGlzQ29udHJvbGxlZEJ5RXh0ZXJuYWwgPyBwcm9wIDogaW5uZXJTdGF0ZTtcbiAgICB2YXIgc2V0VmFsdWUgPSBmdW5jdGlvbiAoaGFuZGxlZFZhbHVlKSB7XG4gICAgICAgIGlmIChpc0NvbnRyb2xsZWRCeUV4dGVybmFsKSB7XG4gICAgICAgICAgICB2YXIgc2V0dGVyID0gaGFuZGxlZFZhbHVlO1xuICAgICAgICAgICAgdmFyIHZhbHVlXzEgPSB0eXBlb2YgaGFuZGxlZFZhbHVlID09PSBcImZ1bmN0aW9uXCJcbiAgICAgICAgICAgICAgICA/IHNldHRlcihwcm9wICE9PSBudWxsICYmIHByb3AgIT09IHZvaWQgMCA/IHByb3AgOiBkZWZhdWx0UHJvcClcbiAgICAgICAgICAgICAgICA6IGhhbmRsZWRWYWx1ZTtcbiAgICAgICAgICAgIGhhbmRsZXIgPT09IG51bGwgfHwgaGFuZGxlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogaGFuZGxlcih2YWx1ZV8xKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHNldElubmVyU3RhdGUoaGFuZGxlZFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIFt2YWx1ZSwgc2V0VmFsdWVdO1xufTtcbiIsImltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VFeHRlcm5hbFN0YXRlIH0gZnJvbSBcIi4uLy4uL2hlbHBlcnMvaG9va3MvdXNlRXh0ZXJuYWxTdGF0ZVwiO1xuaW1wb3J0IENvbXBvc2VyIGZyb20gXCIuLi9jb3JlL2NvbXBvc2VyXCI7XG5pbXBvcnQgXCIuLi8uLi9zdHlsZXMvdG9rZW4vY29sb3IuY3NzXCI7XG5pbXBvcnQgXCIuLi8uLi9zdHlsZXMvdG9rZW4vZm9udC5jc3NcIjtcbnZhciBSYWRpb0J1dHRvbiA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBhc0NoaWxkID0gcHJvcHMuYXNDaGlsZCwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCBpZCA9IHByb3BzLmlkO1xuICAgIHZhciBfYSA9IHVzZUNvbnRleHQoUmFkaW9Db250ZXh0KSwgc2VsZWN0ZWQgPSBfYS5zZWxlY3RlZCwgb25DaGFuZ2UgPSBfYS5vbkNoYW5nZTtcbiAgICB2YXIgQ29tcCA9IGFzQ2hpbGQgPyBDb21wb3NlciA6IFwiZGl2XCI7XG4gICAgcmV0dXJuIChfanN4KENvbXAsIHsgY2xhc3NOYW1lOiBcIm51cmktdGhlbWUgXCIuY29uY2F0KGNsYXNzTmFtZSksIG9uQ2xpY2s6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIG9uQ2hhbmdlKGlkKTsgfSwgY2hpbGRyZW46IGlkID09PSBzZWxlY3RlZCA/IGNoaWxkcmVuIDogbnVsbCB9KSk7XG59O1xudmFyIFJhZGlvSW5kaWNhdG9yID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGFzQ2hpbGQgPSBwcm9wcy5hc0NoaWxkLCBpZCA9IHByb3BzLmlkLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIHNlbGVjdGVkID0gdXNlQ29udGV4dChSYWRpb0NvbnRleHQpLnNlbGVjdGVkO1xuICAgIHZhciBDb21wID0gYXNDaGlsZCA/IENvbXBvc2VyIDogXCJpbnB1dFwiO1xuICAgIHJldHVybiAoX2pzeChDb21wLCB7IHR5cGU6IFwicmFkaW9cIiwgY2xhc3NOYW1lOiBcIm51cmktdGhlbWUgXCIuY29uY2F0KHNlbGVjdGVkID09PSBpZCA/IFwic2VsZWN0ZWRcIiA6IFwiXCIsIFwiIFwiKS5jb25jYXQoY2xhc3NOYW1lKSwgY2hlY2tlZDogc2VsZWN0ZWQgPT09IGlkLCBjaGlsZHJlbjogY2hpbGRyZW4gfSkpO1xufTtcbnZhciBSYWRpb0xhYmVsID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGFzQ2hpbGQgPSBwcm9wcy5hc0NoaWxkLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIENvbXAgPSBhc0NoaWxkID8gQ29tcG9zZXIgOiBcImxhYmVsXCI7XG4gICAgcmV0dXJuIF9qc3goQ29tcCwgeyBjbGFzc05hbWU6IFwibnVyaS10aGVtZSBcIi5jb25jYXQoY2xhc3NOYW1lKSwgY2hpbGRyZW46IGNoaWxkcmVuIH0pO1xufTtcbnZhciBSYWRpb09wdGlvbkdyb3VwID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGFzQ2hpbGQgPSBwcm9wcy5hc0NoaWxkLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWU7XG4gICAgdmFyIENvbXAgPSBhc0NoaWxkID8gQ29tcG9zZXIgOiBcInVsXCI7XG4gICAgcmV0dXJuIF9qc3goQ29tcCwgeyBjbGFzc05hbWU6IGNsYXNzTmFtZSwgY2hpbGRyZW46IGNoaWxkcmVuIH0pO1xufTtcbnZhciBSYWRpb0NvbnRleHQgPSBjcmVhdGVDb250ZXh0KHtcbiAgICBvcHRpb25zOiBbXSxcbiAgICBzZWxlY3RlZDogbnVsbCxcbiAgICBvbkNoYW5nZTogZnVuY3Rpb24gKGlkKSB7IH0sXG59KTtcbnZhciBSYWRpb1Jvb3QgPSBmdW5jdGlvbiAocHJvcHMpIHtcbiAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgb3B0aW9ucyA9IHByb3BzLm9wdGlvbnMsIF9hID0gcHJvcHMuc2VsZWN0ZWQsIHNlbGVjdGVkID0gX2EgPT09IHZvaWQgMCA/IG51bGwgOiBfYSwgZXh0ZXJuYWxPbkNoYW5nZSA9IHByb3BzLm9uQ2hhbmdlO1xuICAgIHZhciBfYiA9IHVzZUV4dGVybmFsU3RhdGUoe1xuICAgICAgICBwcm9wOiBzZWxlY3RlZCxcbiAgICAgICAgaGFuZGxlcjogZXh0ZXJuYWxPbkNoYW5nZSxcbiAgICAgICAgZGVmYXVsdFByb3A6IHNlbGVjdGVkLFxuICAgIH0pLCBzZWxlY3RlZElkID0gX2JbMF0sIHNldFNlbGVjdGVkSWQgPSBfYlsxXTtcbiAgICB2YXIgb25DaGFuZ2UgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICAgICAgc2V0U2VsZWN0ZWRJZChpZCk7XG4gICAgfTtcbiAgICByZXR1cm4gKF9qc3goUmFkaW9Db250ZXh0LlByb3ZpZGVyLCB7IHZhbHVlOiB7IHNlbGVjdGVkOiBzZWxlY3RlZElkLCBvbkNoYW5nZTogb25DaGFuZ2UsIG9wdGlvbnM6IG9wdGlvbnMgfSwgY2hpbGRyZW46IGNoaWxkcmVuIH0pKTtcbn07XG5SYWRpb1Jvb3QuSW5kaWNhdG9yID0gUmFkaW9JbmRpY2F0b3I7XG5SYWRpb1Jvb3QuTGFiZWwgPSBSYWRpb0xhYmVsO1xuUmFkaW9Sb290Lk9wdGlvbkdyb3VwID0gUmFkaW9PcHRpb25Hcm91cDtcblJhZGlvUm9vdC5CdXR0b24gPSBSYWRpb0J1dHRvbjtcbmV4cG9ydCBkZWZhdWx0IFJhZGlvUm9vdDtcbiIsIlxuICAgICAgaW1wb3J0IEFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qc1wiO1xuICAgICAgaW1wb3J0IGRvbUFQSSBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlRG9tQVBJLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0Rm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzXCI7XG4gICAgICBpbXBvcnQgc2V0QXR0cmlidXRlcyBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qc1wiO1xuICAgICAgaW1wb3J0IGluc2VydFN0eWxlRWxlbWVudCBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qc1wiO1xuICAgICAgaW1wb3J0IHN0eWxlVGFnVHJhbnNmb3JtRm4gZnJvbSBcIiEuLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zdHlsZVRhZ1RyYW5zZm9ybS5qc1wiO1xuICAgICAgaW1wb3J0IGNvbnRlbnQsICogYXMgbmFtZWRFeHBvcnQgZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9yYWRpby1zdHlsZS5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9yYWRpby1zdHlsZS5jc3NcIjtcbiAgICAgICBleHBvcnQgZGVmYXVsdCBjb250ZW50ICYmIGNvbnRlbnQubG9jYWxzID8gY29udGVudC5sb2NhbHMgOiB1bmRlZmluZWQ7XG4iLCJpbXBvcnQgeyBqc3ggYXMgX2pzeCwganN4cyBhcyBfanN4cyB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IFJhZGlvUm9vdCBmcm9tIFwiLi9iYXNlLXJhZGlvXCI7XG5pbXBvcnQgXCIuL3JhZGlvLXN0eWxlLmNzc1wiO1xudmFyIFJhZGlvID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIHNlbGVjdGVkID0gcHJvcHMuc2VsZWN0ZWQsIG9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2UsIG9wdGlvbnMgPSBwcm9wcy5vcHRpb25zO1xuICAgIHJldHVybiAoX2pzeChSYWRpb1Jvb3QsIHsgb3B0aW9uczogb3B0aW9ucywgc2VsZWN0ZWQ6IHNlbGVjdGVkLCBvbkNoYW5nZTogb25DaGFuZ2UsIGNoaWxkcmVuOiBfanN4KFJhZGlvUm9vdC5PcHRpb25Hcm91cCwgeyBjbGFzc05hbWU6IFwicmFkaW8gcmFkaW8tZ3JvdXBcIiwgY2hpbGRyZW46IG9wdGlvbnMubWFwKGZ1bmN0aW9uIChvcHRpb24pIHsgcmV0dXJuIChfanN4cyhcImxpXCIsIHsgc3R5bGU6IHsgZGlzcGxheTogXCJmbGV4XCIsIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsIGdhcDogXCI2cHhcIiB9LCBjaGlsZHJlbjogW19qc3goUmFkaW9Sb290LkJ1dHRvbiwgeyBpZDogb3B0aW9uLmlkLCBjbGFzc05hbWU6IFwicmFkaW8gcmFkaW8tYnV0dG9uXCIsIGNoaWxkcmVuOiBfanN4KFJhZGlvUm9vdC5JbmRpY2F0b3IsIHsgaWQ6IG9wdGlvbi5pZCwgYXNDaGlsZDogdHJ1ZSwgY2xhc3NOYW1lOiBcInJhZGlvIHJhZGlvLWluZGljYXRvclwiLCBjaGlsZHJlbjogX2pzeChcImRpdlwiLCB7fSkgfSkgfSksIF9qc3goUmFkaW9Sb290LkxhYmVsLCB7IGlkOiBvcHRpb24uaWQsIGNsYXNzTmFtZTogXCJyYWRpbyByYWRpby1sYWJlbFwiLCBjaGlsZHJlbjogb3B0aW9uLmxhYmVsIH0pXSB9LCBvcHRpb24uaWQpKTsgfSkgfSkgfSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IFJhZGlvO1xuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcyEuL2NoZWNrLWJveC1zdHlsZS5jc3NcIjtcbiAgICAgIFxuICAgICAgXG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuc3R5bGVUYWdUcmFuc2Zvcm0gPSBzdHlsZVRhZ1RyYW5zZm9ybUZuO1xub3B0aW9ucy5zZXRBdHRyaWJ1dGVzID0gc2V0QXR0cmlidXRlcztcbm9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanMhLi9jaGVjay1ib3gtc3R5bGUuY3NzXCI7XG4gICAgICAgZXhwb3J0IGRlZmF1bHQgY29udGVudCAmJiBjb250ZW50LmxvY2FscyA/IGNvbnRlbnQubG9jYWxzIDogdW5kZWZpbmVkO1xuIiwidmFyIF9wYXRoO1xuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IHJldHVybiBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gPyBPYmplY3QuYXNzaWduLmJpbmQoKSA6IGZ1bmN0aW9uIChuKSB7IGZvciAodmFyIGUgPSAxOyBlIDwgYXJndW1lbnRzLmxlbmd0aDsgZSsrKSB7IHZhciB0ID0gYXJndW1lbnRzW2VdOyBmb3IgKHZhciByIGluIHQpICh7fSkuaGFzT3duUHJvcGVydHkuY2FsbCh0LCByKSAmJiAobltyXSA9IHRbcl0pOyB9IHJldHVybiBuOyB9LCBfZXh0ZW5kcy5hcHBseShudWxsLCBhcmd1bWVudHMpOyB9XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbnZhciBTdmdDaGVjayA9IGZ1bmN0aW9uIFN2Z0NoZWNrKHByb3BzKSB7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChcInN2Z1wiLCBfZXh0ZW5kcyh7XG4gICAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcbiAgICB3aWR0aDogMTYsXG4gICAgaGVpZ2h0OiAxNixcbiAgICBmaWxsOiBcIm5vbmVcIlxuICB9LCBwcm9wcyksIF9wYXRoIHx8IChfcGF0aCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFwicGF0aFwiLCB7XG4gICAgc3Ryb2tlOiBcIiNmZmZcIixcbiAgICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXG4gICAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIixcbiAgICBzdHJva2VXaWR0aDogMS41LFxuICAgIGQ6IFwiTTIuNjY3IDguOCA1LjcxNCAxMmw3LjYyLThcIlxuICB9KSkpO1xufTtcbmV4cG9ydCBkZWZhdWx0IFN2Z0NoZWNrOyIsInZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG52YXIgX19yZXN0ID0gKHRoaXMgJiYgdGhpcy5fX3Jlc3QpIHx8IGZ1bmN0aW9uIChzLCBlKSB7XG4gICAgdmFyIHQgPSB7fTtcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcbiAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAoZS5pbmRleE9mKHBbaV0pIDwgMCAmJiBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwocywgcFtpXSkpXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XG4gICAgICAgIH1cbiAgICByZXR1cm4gdDtcbn07XG5pbXBvcnQgeyBqc3ggYXMgX2pzeCB9IGZyb20gXCJyZWFjdC9qc3gtcnVudGltZVwiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRXh0ZXJuYWxTdGF0ZSB9IGZyb20gXCIuLi8uLi9oZWxwZXJzL2hvb2tzL3VzZUV4dGVybmFsU3RhdGVcIjtcbmltcG9ydCBcIi4vY2hlY2stYm94LXN0eWxlLmNzc1wiO1xuaW1wb3J0IENvbXBvc2VyIGZyb20gXCIuLi9jb3JlL2NvbXBvc2VyXCI7XG52YXIgQ2hlY2tCb3hMYWJlbCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBhc0NoaWxkID0gcHJvcHMuYXNDaGlsZCwgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgICB2YXIgaWQgPSB1c2VDb250ZXh0KENoZWNrQm94Q29udGV4dCkuaWQ7XG4gICAgdmFyIENvbXAgPSBhc0NoaWxkID8gQ29tcG9zZXIgOiBcImxhYmVsXCI7XG4gICAgcmV0dXJuIChfanN4KENvbXAsIHsgY2xhc3NOYW1lOiBcImJhc2UtY2hlY2stYm94IGxhYmVsXCIsIGh0bWxGb3I6IGlkLCBjaGlsZHJlbjogY2hpbGRyZW4gfSkpO1xufTtcbnZhciBDaGVja0JveElucHV0ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGFzQ2hpbGQgPSBwcm9wcy5hc0NoaWxkLCBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLCBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcImFzQ2hpbGRcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiXSk7XG4gICAgdmFyIF9hID0gdXNlQ29udGV4dChDaGVja0JveENvbnRleHQpLCBjaGVja2VkID0gX2EuY2hlY2tlZCwgdG9nZ2xlQ2hlY2tlZCA9IF9hLnRvZ2dsZUNoZWNrZWQsIGlkID0gX2EuaWQsIGRpc2FibGVkID0gX2EuZGlzYWJsZWQ7XG4gICAgdmFyIENvbXAgPSBhc0NoaWxkID8gQ29tcG9zZXIgOiBcImlucHV0XCI7XG4gICAgcmV0dXJuIChfanN4KENvbXAsIF9fYXNzaWduKHsgdHlwZTogXCJjaGVja2JveFwiLCBjaGVja2VkOiBjaGVja2VkLCBvbkNoYW5nZTogdG9nZ2xlQ2hlY2tlZCwgb25DbGljazogdG9nZ2xlQ2hlY2tlZCwgaWQ6IGlkLCBjbGFzc05hbWU6IFwiXCIuY29uY2F0KGNsYXNzTmFtZSwgXCIgXCIpLmNvbmNhdChjaGVja2VkID8gXCJjaGVja2VkXCIgOiBcInVuY2hlY2tlZFwiLCBcIiBcIikuY29uY2F0KGRpc2FibGVkID8gXCJkaXNhYmxlZFwiIDogXCJcIikgfSwgcmVzdCwgeyBjaGlsZHJlbjogY2hpbGRyZW4gfSkpKTtcbn07XG52YXIgQ2hlY2tCb3hDb250ZXh0ID0gY3JlYXRlQ29udGV4dCh7XG4gICAgY2hlY2tlZDogZmFsc2UsXG4gICAgdG9nZ2xlQ2hlY2tlZDogZnVuY3Rpb24gKCkgeyB9LFxuICAgIGlkOiBcIlwiLFxuICAgIGRpc2FibGVkOiBmYWxzZSxcbn0pO1xudmFyIENoZWNrQm94Um9vdCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBleHRlcm5hbENoZWNrZWQgPSBwcm9wcy5jaGVja2VkLCBleHRlcm5hbE9uQ2hhbmdlID0gcHJvcHMub25DaGFuZ2UsIGlkID0gcHJvcHMuaWQsIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sIGRpc2FibGVkID0gcHJvcHMuZGlzYWJsZWQ7XG4gICAgdmFyIF9hID0gdXNlRXh0ZXJuYWxTdGF0ZSh7XG4gICAgICAgIHByb3A6IGV4dGVybmFsQ2hlY2tlZCxcbiAgICAgICAgaGFuZGxlcjogZXh0ZXJuYWxPbkNoYW5nZSxcbiAgICAgICAgZGVmYXVsdFByb3A6IGV4dGVybmFsQ2hlY2tlZCAhPT0gbnVsbCAmJiBleHRlcm5hbENoZWNrZWQgIT09IHZvaWQgMCA/IGV4dGVybmFsQ2hlY2tlZCA6IGZhbHNlLFxuICAgIH0pLCBjaGVja2VkID0gX2FbMF0sIHNldENoZWNrZWQgPSBfYVsxXTtcbiAgICB2YXIgdG9nZ2xlQ2hlY2tlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgc2V0Q2hlY2tlZChmdW5jdGlvbiAocHJldikgeyByZXR1cm4gIXByZXY7IH0pO1xuICAgIH07XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImNoZWNrLWJveC1yb290XCIsIGNoaWxkcmVuOiBfanN4KENoZWNrQm94Q29udGV4dC5Qcm92aWRlciwgeyB2YWx1ZTogeyBjaGVja2VkOiBjaGVja2VkLCB0b2dnbGVDaGVja2VkOiB0b2dnbGVDaGVja2VkLCBpZDogaWQsIGRpc2FibGVkOiBkaXNhYmxlZCB9LCBjaGlsZHJlbjogY2hpbGRyZW4gfSkgfSkpO1xufTtcbkNoZWNrQm94Um9vdC5MYWJlbCA9IENoZWNrQm94TGFiZWw7XG5DaGVja0JveFJvb3QuSW5wdXQgPSBDaGVja0JveElucHV0O1xuZXhwb3J0IGRlZmF1bHQgQ2hlY2tCb3hSb290O1xuIiwidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCBcIi4vY2hlY2stYm94LXN0eWxlLmNzc1wiO1xuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2VuL2NvbG9yLmNzc1wiO1xuaW1wb3J0IFwiLi4vLi4vc3R5bGVzL3Rva2VuL2ZvbnQuY3NzXCI7XG5pbXBvcnQgeyBSZWFjdENvbXBvbmVudCBhcyBDaGVja0ljb24gfSBmcm9tIFwiLi4vLi4vYXNzZXRzL2ljb25zL2NoZWNrLnN2Z1wiO1xuaW1wb3J0IENoZWNrQm94Um9vdCBmcm9tIFwiLi9iYXNlLWNoZWNrLWJveFwiO1xudmFyIENoZWNrQm94ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgdmFyIGNoZWNrZWQgPSBwcm9wcy5jaGVja2VkLCBvbkNoYW5nZSA9IHByb3BzLm9uQ2hhbmdlLCBsYWJlbCA9IHByb3BzLmxhYmVsLCByZXN0ID0gX19yZXN0KHByb3BzLCBbXCJjaGVja2VkXCIsIFwib25DaGFuZ2VcIiwgXCJsYWJlbFwiXSk7XG4gICAgcmV0dXJuIChfanN4KENoZWNrQm94Um9vdCwgeyBpZDogXCJjaGVjay1ib3hcIiwgY2hpbGRyZW46IF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcImNoZWNrLWJveFwiLCBjaGlsZHJlbjogW19qc3goQ2hlY2tCb3hSb290LklucHV0LCB7IGFzQ2hpbGQ6IHRydWUsIGNoaWxkcmVuOiBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBcIm51cmktdGhlbWUgY2hlY2stYm94LWlucHV0XCIsIGNoaWxkcmVuOiBfanN4KENoZWNrSWNvbiwge30pIH0pIH0pLCBfanN4KENoZWNrQm94Um9vdC5MYWJlbCwgeyBjaGlsZHJlbjogbGFiZWwgfSldIH0pIH0pKTtcbn07XG5leHBvcnQgZGVmYXVsdCBDaGVja0JveDtcbiIsImV4cG9ydCB7IGRlZmF1bHQgYXMgQXZhdGFyIH0gZnJvbSBcIi4vY29tcG9uZW50cy9hdmF0YXIvYXZhdGFyXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIENUQUJ1dHRvbiB9IGZyb20gXCIuL2NvbXBvbmVudHMvYnV0dG9uL2N0YS1idXR0b25cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgT3B0aW9uQmFkZ2UgfSBmcm9tIFwiLi9jb21wb25lbnRzL2JhZGdlL29wdGlvbi1iYWRnZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBJY29uVGV4dEJhZGdlIH0gZnJvbSBcIi4vY29tcG9uZW50cy9iYWRnZS9pY29uLXRleHQtYmFkZ2VcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgSWNvblRleHRPcHRpb25CYWRnZSB9IGZyb20gXCIuL2NvbXBvbmVudHMvYmFkZ2UvaWNvbi10ZXh0LW9wdGlvbi1iYWRnZVwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBEYXRhVGFibGUgfSBmcm9tIFwiLi9jb21wb25lbnRzL3RhYmxlL2RhdGEtdGFibGVcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVGV4dEZpZWxkIH0gZnJvbSBcIi4vY29tcG9uZW50cy90ZXh0LWZpZWxkL3RleHQtZmllbGRcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgVGV4dEZpZWxkV2l0aEVycm9yIH0gZnJvbSBcIi4vY29tcG9uZW50cy90ZXh0LWZpZWxkL3RleHQtZmllbGQtd2l0aC1lcnJvclwiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSYWRpbyB9IGZyb20gXCIuL2NvbXBvbmVudHMvcmFkaW8vcmFkaW9cIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgQ2hlY2tib3ggfSBmcm9tIFwiLi9jb21wb25lbnRzL2NoZWNrLWJveC9jaGVjay1ib3hcIjtcbiJdLCJuYW1lcyI6WyJfX2Fzc2lnbiIsIk9iamVjdCIsImFzc2lnbiIsInQiLCJzIiwiaSIsIm4iLCJhcmd1bWVudHMiLCJsZW5ndGgiLCJwIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiYXBwbHkiLCJfX3Jlc3QiLCJlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiQ2hpbGRyZW4iLCJjbG9uZUVsZW1lbnQiLCJmb3J3YXJkUmVmIiwiaXNWYWxpZEVsZW1lbnQiLCJjb21wb3NlUmVmcyIsInJlZnMiLCJfaSIsIm5vZGUiLCJmb3JFYWNoIiwicmVmIiwiY3VycmVudCIsIkNvbXBvc2VyIiwiX2EiLCJjaGlsZHJlbiIsImNvbXBvc2VyUHJvcHMiLCJjaGlsZEFycmF5IiwidG9BcnJheSIsIkVycm9yIiwiaXNWYWxpZENoaWxkIiwiY2hpbGQiLCJjaGlsZFJlZiIsImdldEVsZW1lbnRSZWYiLCJtZXJnZWRQcm9wcyIsIm1lcmdlUHJvcHMiLCJwcm9wcyIsImRpc3BsYXlOYW1lIiwiY2hpbGRQcm9wcyIsIm92ZXJyaWRlUHJvcHMiLCJfbG9vcF8xIiwicHJvcE5hbWUiLCJjb21wb3NlclByb3BWYWx1ZSIsImNoaWxkUHJvcFZhbHVlIiwiaXNIYW5kbGVyIiwidGVzdCIsImFyZ3MiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsImVsZW1lbnQiLCJfYiIsImdldHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImdldCIsIm1heVdhcm4iLCJpc1JlYWN0V2FybmluZyIsImpzeCIsIl9qc3giLCJCYXNlQmFkZ2UiLCJhc0NoaWxkIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJyYWRpdXMiLCJiYWNrZ3JvdW5kQ29sb3IiLCJfYyIsInNpemUiLCJzdHlsZSIsImNsYXNzTmFtZSIsIkNvbXAiLCJjb21wb3NlZENsYXNzTmFtZSIsImNvbmNhdCIsImJvcmRlclJhZGl1cyIsImpzeHMiLCJfanN4cyIsInVzZVN0YXRlIiwiQXZhdGFyIiwic3JjIiwiYWx0IiwiYmFkZ2VPcHRpb24iLCJpc0ltYWdlRG93bmxvYWQiLCJzZXRJc0ltYWdlRG93bmxvYWQiLCJvbkxvYWQiLCJwb3NpdGlvbiIsInJpZ2h0IiwiYm90dG9tIiwiQmFzZUJ1dHRvbiIsIkxvYWRpbmciLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkNUQUJ1dHRvbiIsInRleHQiLCJ2YXJpYW50IiwiZGlzYWJsZWQiLCJpY29uIiwiX2QiLCJsb2FkaW5nIiwiT3B0aW9uQmFkZ2UiLCJvcHRpb24iLCJJY29uVGV4dEJhZGdlIiwiSWNvblRleHRPcHRpb25CYWRnZSIsIlRhYmxlUm9vdCIsIlRhYmxlSGVhZGVyIiwianVzdGlmeSIsInJlc3QiLCJUYWJsZVJvdyIsImNsYXNzTmFtZXMiLCJUYWJsZUJvZHkiLCJUYWJsZUNlbGwiLCJIZWFkZXIiLCJCb2R5IiwiUm93IiwiQ2VsbCIsInVzZUVmZmVjdCIsIkRhdGFUYWJsZSIsInJvd3MiLCJjb2x1bW5zIiwibWFwIiwicm93IiwiaGlkZSIsImRpc3BsYXlSb3dzIiwic2V0RGlzcGxheVJvd3MiLCJmaW5kIiwiaXRlbSIsImlkIiwib25DbGljayIsIm9uQ2xpY2tSb3ciLCJ2YWx1ZSIsImNvbHVtbiIsIm9uQ2xpY2tDZWxsIiwiY3JlYXRlQ29udGV4dCIsInVzZUNvbnRleHQiLCJUZXh0TGFiZWwiLCJJbnB1dEZpZWxkIiwicGxhY2Vob2xkZXIiLCJuYW1lIiwib25DaGFuZ2UiLCJUZXh0RmllbGRDb250ZXh0IiwiY29udmVydEVycm9yTWVzc2FnZSIsImNvbnZlcnRFcnJvclN0YXRlIiwidmFsaWRhdGlvbnMiLCJ2YWxpZGF0ZUlucHV0IiwiZmFpbGVkVmFsaWRhdGlvbiIsInZhbGlkYXRpb24iLCJydWxlIiwibWVzc2FnZSIsInRhcmdldCIsIkhlbHBlclRleHQiLCJlcnJvck1lc3NhZ2UiLCJpc0Vycm9yIiwiZXJyb3JDbGFzc05hbWUiLCJUZXh0RmllbGRSb290Iiwid2lkdGgiLCJzZXRJc0Vycm9yIiwic2V0RXJyb3JNZXNzYWdlIiwiZGlzcGxheSIsIlByb3ZpZGVyIiwiVGV4dEZpZWxkIiwiaGVscGVyVGV4dCIsImxhYmVsVGV4dCIsIlRleHRGaWVsZFdpdGhFcnJvciIsInVzZUV4dGVybmFsU3RhdGUiLCJwcm9wIiwiaGFuZGxlciIsImRlZmF1bHRQcm9wIiwiaW5uZXJTdGF0ZSIsInNldElubmVyU3RhdGUiLCJpc0NvbnRyb2xsZWRCeUV4dGVybmFsIiwidW5kZWZpbmVkIiwic2V0VmFsdWUiLCJoYW5kbGVkVmFsdWUiLCJzZXR0ZXIiLCJ2YWx1ZV8xIiwiUmFkaW9CdXR0b24iLCJSYWRpb0NvbnRleHQiLCJzZWxlY3RlZCIsIlJhZGlvSW5kaWNhdG9yIiwidHlwZSIsImNoZWNrZWQiLCJSYWRpb0xhYmVsIiwiUmFkaW9PcHRpb25Hcm91cCIsIm9wdGlvbnMiLCJSYWRpb1Jvb3QiLCJleHRlcm5hbE9uQ2hhbmdlIiwic2VsZWN0ZWRJZCIsInNldFNlbGVjdGVkSWQiLCJJbmRpY2F0b3IiLCJMYWJlbCIsIk9wdGlvbkdyb3VwIiwiQnV0dG9uIiwiUmFkaW8iLCJhbGlnbkl0ZW1zIiwiZ2FwIiwibGFiZWwiLCJDaGVja0JveExhYmVsIiwiQ2hlY2tCb3hDb250ZXh0IiwiaHRtbEZvciIsIkNoZWNrQm94SW5wdXQiLCJ0b2dnbGVDaGVja2VkIiwiQ2hlY2tCb3hSb290IiwiZXh0ZXJuYWxDaGVja2VkIiwic2V0Q2hlY2tlZCIsInByZXYiLCJJbnB1dCIsIlJlYWN0Q29tcG9uZW50IiwiQ2hlY2tJY29uIiwiQ2hlY2tCb3giLCJkZWZhdWx0IiwiQ2hlY2tib3giXSwic291cmNlUm9vdCI6IiJ9