@k8slens/element-components 3.4.0 → 3.6.0
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.css +145 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +242 -54
- package/dist/src/elements.d.ts +10 -10
- package/dist/src/plugins/anchor/anchor.d.ts.map +1 -1
- package/dist/src/plugins/background-color/background-color.d.ts +1 -0
- package/dist/src/plugins/background-color/background-color.d.ts.map +1 -1
- package/dist/src/plugins/color/color.d.ts +1 -0
- package/dist/src/plugins/color/color.d.ts.map +1 -1
- package/dist/src/plugins/drop-down-menu/drop-down-menu.d.ts +15 -1
- package/dist/src/plugins/drop-down-menu/drop-down-menu.d.ts.map +1 -1
- package/dist/src/plugins/focusable/_private/use-keyboard-navigation.d.ts +3 -2
- package/dist/src/plugins/focusable/_private/use-keyboard-navigation.d.ts.map +1 -1
- package/dist/src/plugins/focusable/_shared/keyboard-navigation-state.injectable.d.ts +6 -2
- package/dist/src/plugins/focusable/_shared/keyboard-navigation-state.injectable.d.ts.map +1 -1
- package/dist/src/plugins/focusable/focusable-item-context.d.ts +32 -0
- package/dist/src/plugins/focusable/focusable-item-context.d.ts.map +1 -0
- package/dist/src/plugins/focusable/focusable.d.ts.map +1 -1
- package/dist/src/plugins/focusable/get-focusable-context.d.ts +15 -2
- package/dist/src/plugins/focusable/get-focusable-context.d.ts.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -55,6 +55,7 @@ __export(index_exports, {
|
|
|
55
55
|
Tr: () => Tr,
|
|
56
56
|
Ul: () => Ul,
|
|
57
57
|
contextForClosingPopover: () => contextForClosingPopover,
|
|
58
|
+
contextForFocusableItem: () => contextForFocusableItem,
|
|
58
59
|
doFocusForInjectionToken: () => doFocusForInjectionToken,
|
|
59
60
|
elementComponentFeature: () => elementComponentFeature,
|
|
60
61
|
getDraggableContext: () => getDraggableContext,
|
|
@@ -74,6 +75,7 @@ __export(index_exports, {
|
|
|
74
75
|
suppressTooltip: () => suppressTooltip,
|
|
75
76
|
tShirtSizeInPixels: () => tShirtSizeInPixels,
|
|
76
77
|
useClosePopover: () => useClosePopover,
|
|
78
|
+
useFocusableItem: () => useFocusableItem,
|
|
77
79
|
useLocalHoverable: () => useLocalHoverable,
|
|
78
80
|
useOnOutsideClick: () => useOnOutsideClick,
|
|
79
81
|
usePopoverIsOpen: () => usePopoverIsOpen
|
|
@@ -811,7 +813,30 @@ var background_color_module_default = {
|
|
|
811
813
|
"backgroundColor-hover--warningTint": "background-color-module__backgroundColor-hover--warningTint___Xi62F",
|
|
812
814
|
"backgroundColor-hover--criticalTint": "background-color-module__backgroundColor-hover--criticalTint___V0q2o",
|
|
813
815
|
"backgroundColor-hover--link": "background-color-module__backgroundColor-hover--link___X9LFq",
|
|
814
|
-
"backgroundColor-hover--code": "background-color-module__backgroundColor-hover--code___lHCIg"
|
|
816
|
+
"backgroundColor-hover--code": "background-color-module__backgroundColor-hover--code___lHCIg",
|
|
817
|
+
"backgroundColor-focus--inherit": "background-color-module__backgroundColor-focus--inherit___RJPWJ",
|
|
818
|
+
"backgroundColor-focus--white": "background-color-module__backgroundColor-focus--white___xF8u3",
|
|
819
|
+
"backgroundColor-focus--transparent": "background-color-module__backgroundColor-focus--transparent___tqq-x",
|
|
820
|
+
"backgroundColor-focus--grey100": "background-color-module__backgroundColor-focus--grey100___xt1xL",
|
|
821
|
+
"backgroundColor-focus--grey80": "background-color-module__backgroundColor-focus--grey80___e28jj",
|
|
822
|
+
"backgroundColor-focus--grey60": "background-color-module__backgroundColor-focus--grey60___wtDwT",
|
|
823
|
+
"backgroundColor-focus--grey40": "background-color-module__backgroundColor-focus--grey40___DDHkP",
|
|
824
|
+
"backgroundColor-focus--grey30": "background-color-module__backgroundColor-focus--grey30___ZVvD5",
|
|
825
|
+
"backgroundColor-focus--grey25": "background-color-module__backgroundColor-focus--grey25___AsV6f",
|
|
826
|
+
"backgroundColor-focus--grey20": "background-color-module__backgroundColor-focus--grey20___OL0ZY",
|
|
827
|
+
"backgroundColor-focus--grey10": "background-color-module__backgroundColor-focus--grey10___maizf",
|
|
828
|
+
"backgroundColor-focus--grey70": "background-color-module__backgroundColor-focus--grey70___vRnL2",
|
|
829
|
+
"backgroundColor-focus--grey80Alpha85": "background-color-module__backgroundColor-focus--grey80Alpha85___VhyuN",
|
|
830
|
+
"backgroundColor-focus--primary": "background-color-module__backgroundColor-focus--primary___7Tzku",
|
|
831
|
+
"backgroundColor-focus--success": "background-color-module__backgroundColor-focus--success___ny3zl",
|
|
832
|
+
"backgroundColor-focus--notice": "background-color-module__backgroundColor-focus--notice___ovFv1",
|
|
833
|
+
"backgroundColor-focus--warning": "background-color-module__backgroundColor-focus--warning___qln2u",
|
|
834
|
+
"backgroundColor-focus--critical": "background-color-module__backgroundColor-focus--critical___PgDI5",
|
|
835
|
+
"backgroundColor-focus--successTint": "background-color-module__backgroundColor-focus--successTint___cq-D5",
|
|
836
|
+
"backgroundColor-focus--warningTint": "background-color-module__backgroundColor-focus--warningTint___aHtgA",
|
|
837
|
+
"backgroundColor-focus--criticalTint": "background-color-module__backgroundColor-focus--criticalTint___eJ9Nh",
|
|
838
|
+
"backgroundColor-focus--link": "background-color-module__backgroundColor-focus--link___TlRRY",
|
|
839
|
+
"backgroundColor-focus--code": "background-color-module__backgroundColor-focus--code___fa65U"
|
|
815
840
|
};
|
|
816
841
|
|
|
817
842
|
// src/plugins/background-color/background-color.ts
|
|
@@ -823,14 +848,16 @@ var aliasToNominal = {
|
|
|
823
848
|
var isBackgroundColorAlias = (color) => color in aliasToNominal;
|
|
824
849
|
var backgroundColorPlugin = (0, import_element_component7.getPlugin)((props) => {
|
|
825
850
|
const { $backgroundColor: color } = props;
|
|
826
|
-
const { normal, hover } = typeof color === "string" ? { normal: color } : color ?? {};
|
|
851
|
+
const { normal, hover, focus } = typeof color === "string" ? { normal: color } : color ?? {};
|
|
827
852
|
const normalColor = normal ? isBackgroundColorAlias(normal) ? aliasToNominal[normal] : normal : void 0;
|
|
828
853
|
const hoverColor = hover ? isBackgroundColorAlias(hover) ? aliasToNominal[hover] : hover : void 0;
|
|
854
|
+
const focusColor = focus ? isBackgroundColorAlias(focus) ? aliasToNominal[focus] : focus : void 0;
|
|
829
855
|
return {
|
|
830
856
|
$className: [
|
|
831
857
|
props.$className,
|
|
832
858
|
normalColor ? background_color_module_default[`backgroundColor--${normalColor}`] : void 0,
|
|
833
|
-
hoverColor ? background_color_module_default[`backgroundColor-hover--${hoverColor}`] : void 0
|
|
859
|
+
hoverColor ? background_color_module_default[`backgroundColor-hover--${hoverColor}`] : void 0,
|
|
860
|
+
focusColor ? background_color_module_default[`backgroundColor-focus--${focusColor}`] : void 0
|
|
834
861
|
],
|
|
835
862
|
$backgroundColor: void 0
|
|
836
863
|
};
|
|
@@ -1587,6 +1614,7 @@ var keyboardNavigationStateInjectable = (0, import_injectable14.getInjectable2)(
|
|
|
1587
1614
|
id: "keyboard-navigation-state",
|
|
1588
1615
|
instantiate: () => {
|
|
1589
1616
|
const entriesByContext = /* @__PURE__ */ new Map();
|
|
1617
|
+
const itemInFocusByContext = /* @__PURE__ */ new Map();
|
|
1590
1618
|
const contextStack = [];
|
|
1591
1619
|
const entriesOf = (context) => {
|
|
1592
1620
|
const existing = entriesByContext.get(context);
|
|
@@ -1600,6 +1628,10 @@ var keyboardNavigationStateInjectable = (0, import_injectable14.getInjectable2)(
|
|
|
1600
1628
|
return () => ({
|
|
1601
1629
|
sortedEntriesOf: (context) => [...entriesOf(context)].sort((a, b) => a.orderNumber - b.orderNumber),
|
|
1602
1630
|
contextInFocus: () => contextStack.at(-1),
|
|
1631
|
+
itemInFocusOf: (context) => itemInFocusByContext.get(context),
|
|
1632
|
+
noteItemInFocus: (context, item) => {
|
|
1633
|
+
itemInFocusByContext.set(context, item);
|
|
1634
|
+
},
|
|
1603
1635
|
register: (context, entry) => {
|
|
1604
1636
|
const entries = entriesOf(context);
|
|
1605
1637
|
if (entries.size === 0) {
|
|
@@ -1615,6 +1647,7 @@ var keyboardNavigationStateInjectable = (0, import_injectable14.getInjectable2)(
|
|
|
1615
1647
|
if (indexInStack !== -1) {
|
|
1616
1648
|
contextStack.splice(indexInStack, 1);
|
|
1617
1649
|
}
|
|
1650
|
+
itemInFocusByContext.delete(context);
|
|
1618
1651
|
}
|
|
1619
1652
|
}
|
|
1620
1653
|
});
|
|
@@ -1647,9 +1680,9 @@ __export(test_util_runnable_injectable_exports, {
|
|
|
1647
1680
|
});
|
|
1648
1681
|
var import_test_utils = require("@k8slens/test-utils");
|
|
1649
1682
|
|
|
1650
|
-
// import-glob:./**/*.global-override-for-injectable.(ts|tsx)/proof-of-uniqueness/
|
|
1683
|
+
// import-glob:./**/*.global-override-for-injectable.(ts|tsx)/proof-of-uniqueness/569c4f1e-e7f4-486f-8a62-d05e75026dc8
|
|
1651
1684
|
var modules = [];
|
|
1652
|
-
var
|
|
1685
|
+
var c4f1e_e7f4_486f_8a62_d05e75026dc8_default = modules;
|
|
1653
1686
|
|
|
1654
1687
|
// src/plugins/draggable-and-droppable/make-sure-drag-and-drop-events-have-time-to-happen/make-sure-drag-and-drop-events-have-time-to-happen.default-override.ts
|
|
1655
1688
|
var make_sure_drag_and_drop_events_have_time_to_happen_default_override_exports = {};
|
|
@@ -1678,24 +1711,24 @@ var remove_css_module_clutter_default_override_default = () => {
|
|
|
1678
1711
|
removeCssModuleClutterForUnitTesting();
|
|
1679
1712
|
};
|
|
1680
1713
|
|
|
1681
|
-
// import-glob:./**/*.default-override.(ts|tsx)/proof-of-uniqueness/
|
|
1714
|
+
// import-glob:./**/*.default-override.(ts|tsx)/proof-of-uniqueness/c6340d4d-8b6a-4deb-b68a-2cec4346cb26
|
|
1682
1715
|
var modules2 = [make_sure_drag_and_drop_events_have_time_to_happen_default_override_exports, tooltip_delay_default_override_exports, remove_css_module_clutter_default_override_exports];
|
|
1683
|
-
var
|
|
1716
|
+
var c6340d4d_8b6a_4deb_b68a_2cec4346cb26_default = modules2;
|
|
1684
1717
|
|
|
1685
1718
|
// src/test-util-runnable.injectable.ts
|
|
1686
1719
|
var testUtilRunnableInjectable = (0, import_test_utils.getTestUtilRunnableForOverrides)({
|
|
1687
|
-
globalOverrides:
|
|
1688
|
-
defaultOverrides:
|
|
1720
|
+
globalOverrides: c4f1e_e7f4_486f_8a62_d05e75026dc8_default,
|
|
1721
|
+
defaultOverrides: c6340d4d_8b6a_4deb_b68a_2cec4346cb26_default
|
|
1689
1722
|
});
|
|
1690
1723
|
|
|
1691
|
-
// import-glob:./**/*.injectable.(ts|tsx)/proof-of-uniqueness/
|
|
1724
|
+
// import-glob:./**/*.injectable.(ts|tsx)/proof-of-uniqueness/fb8b30c6-3cc4-422c-bd11-3c070122a3a0
|
|
1692
1725
|
var modules3 = [is_mac_injectable_exports, on_right_trigger_injectable_exports, dragged_item_state_injectable_exports, item_being_dragged_injectable_exports, make_sure_drag_and_drop_events_have_time_to_happen_injectable_exports, focusable_html_element_ref_set_injectable_exports, focusable_item_state_injectable_exports, keyboard_navigation_state_injectable_exports, do_focus_injectable_exports, item_being_focused_injectable_exports, computed_now_injectable_exports, hovered_item_state_injectable_exports, item_being_hovered_injectable_exports, context_is_being_hovered_injectable_exports, tooltip_delay_injectable_exports, test_util_runnable_injectable_exports];
|
|
1693
|
-
var
|
|
1726
|
+
var fb8b30c6_3cc4_422c_bd11_3c070122a3a0_default = modules3;
|
|
1694
1727
|
|
|
1695
1728
|
// src/feature.ts
|
|
1696
1729
|
var elementComponentFeature = (0, import_feature_core.getFeature)({
|
|
1697
1730
|
id: "element-component",
|
|
1698
|
-
register: (di) => (0, import_feature_core2.registerInjectablesFromModules)(di,
|
|
1731
|
+
register: (di) => (0, import_feature_core2.registerInjectablesFromModules)(di, fb8b30c6_3cc4_422c_bd11_3c070122a3a0_default)
|
|
1699
1732
|
// No feature dependencies: a design system everyone may install cannot drag
|
|
1700
1733
|
// Lens features into the closure. The clock the hoverable plugin needs is
|
|
1701
1734
|
// local, and the platform is read directly.
|
|
@@ -2146,72 +2179,95 @@ var import_element_component22 = require("@k8slens/element-component");
|
|
|
2146
2179
|
var color_module_default = {
|
|
2147
2180
|
"color--inherit": "color-module__color--inherit___GMp-a",
|
|
2148
2181
|
"color-hover--inherit": "color-module__color-hover--inherit___fGLK6",
|
|
2182
|
+
"color-focus--inherit": "color-module__color-focus--inherit___yGfCe",
|
|
2149
2183
|
"color-disabled--inherit": "color-module__color-disabled--inherit___s9MCI",
|
|
2150
2184
|
"color--white": "color-module__color--white___f8c1s",
|
|
2151
2185
|
"color-hover--white": "color-module__color-hover--white___M6aRg",
|
|
2186
|
+
"color-focus--white": "color-module__color-focus--white___i6uYz",
|
|
2152
2187
|
"color-disabled--white": "color-module__color-disabled--white___ntjYE",
|
|
2153
2188
|
"color--transparent": "color-module__color--transparent___1vfrv",
|
|
2154
2189
|
"color-hover--transparent": "color-module__color-hover--transparent___xm7BD",
|
|
2190
|
+
"color-focus--transparent": "color-module__color-focus--transparent___pde-W",
|
|
2155
2191
|
"color-disabled--transparent": "color-module__color-disabled--transparent___Z0QuU",
|
|
2156
2192
|
"color--grey100": "color-module__color--grey100___CpDzv",
|
|
2157
2193
|
"color-hover--grey100": "color-module__color-hover--grey100___GFCom",
|
|
2194
|
+
"color-focus--grey100": "color-module__color-focus--grey100___AM7oM",
|
|
2158
2195
|
"color-disabled--grey100": "color-module__color-disabled--grey100___8SRuJ",
|
|
2159
2196
|
"color--grey80": "color-module__color--grey80___D71fn",
|
|
2160
2197
|
"color-hover--grey80": "color-module__color-hover--grey80___sBIxb",
|
|
2198
|
+
"color-focus--grey80": "color-module__color-focus--grey80___8Plyo",
|
|
2161
2199
|
"color-disabled--grey80": "color-module__color-disabled--grey80___w1npc",
|
|
2162
2200
|
"color--grey60": "color-module__color--grey60___UT28X",
|
|
2163
2201
|
"color-hover--grey60": "color-module__color-hover--grey60___xfZmb",
|
|
2202
|
+
"color-focus--grey60": "color-module__color-focus--grey60___kwm2G",
|
|
2164
2203
|
"color-disabled--grey60": "color-module__color-disabled--grey60___mfVgq",
|
|
2165
2204
|
"color--grey40": "color-module__color--grey40___iROzR",
|
|
2166
2205
|
"color-hover--grey40": "color-module__color-hover--grey40___rbN04",
|
|
2206
|
+
"color-focus--grey40": "color-module__color-focus--grey40___oIRUf",
|
|
2167
2207
|
"color-disabled--grey40": "color-module__color-disabled--grey40___NiZxi",
|
|
2168
2208
|
"color--grey30": "color-module__color--grey30___LwnL2",
|
|
2169
2209
|
"color-hover--grey30": "color-module__color-hover--grey30___X7h-h",
|
|
2210
|
+
"color-focus--grey30": "color-module__color-focus--grey30___QUb4S",
|
|
2170
2211
|
"color-disabled--grey30": "color-module__color-disabled--grey30___Kq9gW",
|
|
2171
2212
|
"color--grey25": "color-module__color--grey25___ENT5o",
|
|
2172
2213
|
"color-hover--grey25": "color-module__color-hover--grey25___tYygD",
|
|
2214
|
+
"color-focus--grey25": "color-module__color-focus--grey25___Txi5l",
|
|
2173
2215
|
"color-disabled--grey25": "color-module__color-disabled--grey25___bm-1c",
|
|
2174
2216
|
"color--grey20": "color-module__color--grey20___EF2OL",
|
|
2175
2217
|
"color-hover--grey20": "color-module__color-hover--grey20___uPtXU",
|
|
2218
|
+
"color-focus--grey20": "color-module__color-focus--grey20___w3rWc",
|
|
2176
2219
|
"color-disabled--grey20": "color-module__color-disabled--grey20___vpuy1",
|
|
2177
2220
|
"color--grey10": "color-module__color--grey10___l5aZp",
|
|
2178
2221
|
"color-hover--grey10": "color-module__color-hover--grey10___4Apcr",
|
|
2222
|
+
"color-focus--grey10": "color-module__color-focus--grey10___VwW71",
|
|
2179
2223
|
"color-disabled--grey10": "color-module__color-disabled--grey10___Y5qyw",
|
|
2180
2224
|
"color--grey70": "color-module__color--grey70___C9HHM",
|
|
2181
2225
|
"color-hover--grey70": "color-module__color-hover--grey70___3krtL",
|
|
2226
|
+
"color-focus--grey70": "color-module__color-focus--grey70___p3iex",
|
|
2182
2227
|
"color-disabled--grey70": "color-module__color-disabled--grey70___86JqV",
|
|
2183
2228
|
"color--grey80Alpha85": "color-module__color--grey80Alpha85___-3Tdd",
|
|
2184
2229
|
"color-hover--grey80Alpha85": "color-module__color-hover--grey80Alpha85___Dofo0",
|
|
2230
|
+
"color-focus--grey80Alpha85": "color-module__color-focus--grey80Alpha85___T4BgF",
|
|
2185
2231
|
"color-disabled--grey80Alpha85": "color-module__color-disabled--grey80Alpha85___eR3zs",
|
|
2186
2232
|
"color--primary": "color-module__color--primary___08WnV",
|
|
2187
2233
|
"color-hover--primary": "color-module__color-hover--primary___Vt-3f",
|
|
2234
|
+
"color-focus--primary": "color-module__color-focus--primary___t5r02",
|
|
2188
2235
|
"color-disabled--primary": "color-module__color-disabled--primary___0Xsk9",
|
|
2189
2236
|
"color--success": "color-module__color--success___woTF2",
|
|
2190
2237
|
"color-hover--success": "color-module__color-hover--success___7EIWc",
|
|
2238
|
+
"color-focus--success": "color-module__color-focus--success___KZ0di",
|
|
2191
2239
|
"color-disabled--success": "color-module__color-disabled--success___Ne2WI",
|
|
2192
2240
|
"color--notice": "color-module__color--notice___6D6KG",
|
|
2193
2241
|
"color-hover--notice": "color-module__color-hover--notice___eOdUp",
|
|
2242
|
+
"color-focus--notice": "color-module__color-focus--notice___NgURL",
|
|
2194
2243
|
"color-disabled--notice": "color-module__color-disabled--notice___sDo8r",
|
|
2195
2244
|
"color--warning": "color-module__color--warning___fKbwd",
|
|
2196
2245
|
"color-hover--warning": "color-module__color-hover--warning___Gj2hM",
|
|
2246
|
+
"color-focus--warning": "color-module__color-focus--warning___cBmt9",
|
|
2197
2247
|
"color-disabled--warning": "color-module__color-disabled--warning___rXDbR",
|
|
2198
2248
|
"color--critical": "color-module__color--critical___shFBq",
|
|
2199
2249
|
"color-hover--critical": "color-module__color-hover--critical___RQWZY",
|
|
2250
|
+
"color-focus--critical": "color-module__color-focus--critical___9YlCY",
|
|
2200
2251
|
"color-disabled--critical": "color-module__color-disabled--critical___h37-3",
|
|
2201
2252
|
"color--successTint": "color-module__color--successTint___Dd0Ry",
|
|
2202
2253
|
"color-hover--successTint": "color-module__color-hover--successTint___LKlzg",
|
|
2254
|
+
"color-focus--successTint": "color-module__color-focus--successTint___bQYhp",
|
|
2203
2255
|
"color-disabled--successTint": "color-module__color-disabled--successTint___lsmJh",
|
|
2204
2256
|
"color--warningTint": "color-module__color--warningTint___j3PZX",
|
|
2205
2257
|
"color-hover--warningTint": "color-module__color-hover--warningTint___jn1wu",
|
|
2258
|
+
"color-focus--warningTint": "color-module__color-focus--warningTint___C6znD",
|
|
2206
2259
|
"color-disabled--warningTint": "color-module__color-disabled--warningTint___W6jI8",
|
|
2207
2260
|
"color--criticalTint": "color-module__color--criticalTint___yRJaA",
|
|
2208
2261
|
"color-hover--criticalTint": "color-module__color-hover--criticalTint___VsoN5",
|
|
2262
|
+
"color-focus--criticalTint": "color-module__color-focus--criticalTint___8tDmg",
|
|
2209
2263
|
"color-disabled--criticalTint": "color-module__color-disabled--criticalTint___TABHk",
|
|
2210
2264
|
"color--link": "color-module__color--link___nSMm9",
|
|
2211
2265
|
"color-hover--link": "color-module__color-hover--link___GniY3",
|
|
2266
|
+
"color-focus--link": "color-module__color-focus--link___86Jtf",
|
|
2212
2267
|
"color-disabled--link": "color-module__color-disabled--link___FoJ5X",
|
|
2213
2268
|
"color--code": "color-module__color--code___nCOjA",
|
|
2214
2269
|
"color-hover--code": "color-module__color-hover--code___V5uuV",
|
|
2270
|
+
"color-focus--code": "color-module__color-focus--code___IAK7d",
|
|
2215
2271
|
"color-disabled--code": "color-module__color-disabled--code___w3VUw"
|
|
2216
2272
|
};
|
|
2217
2273
|
|
|
@@ -2224,15 +2280,17 @@ var aliasToNominal3 = {
|
|
|
2224
2280
|
var isTextColorAlias = (color) => color in aliasToNominal3;
|
|
2225
2281
|
var colorPlugin = (0, import_element_component22.getPlugin)((props) => {
|
|
2226
2282
|
const { $className, $color } = props;
|
|
2227
|
-
const { normal, hover, disabled } = typeof $color === "string" ? { normal: $color } : $color ?? {};
|
|
2283
|
+
const { normal, hover, focus, disabled } = typeof $color === "string" ? { normal: $color } : $color ?? {};
|
|
2228
2284
|
const normalColor = normal ? isTextColorAlias(normal) ? aliasToNominal3[normal] : normal : void 0;
|
|
2229
2285
|
const hoverColor = hover ? isTextColorAlias(hover) ? aliasToNominal3[hover] : hover : void 0;
|
|
2286
|
+
const focusColor = focus ? isTextColorAlias(focus) ? aliasToNominal3[focus] : focus : void 0;
|
|
2230
2287
|
const disabledColor = disabled ? isTextColorAlias(disabled) ? aliasToNominal3[disabled] : disabled : void 0;
|
|
2231
2288
|
return {
|
|
2232
2289
|
$className: [
|
|
2233
2290
|
$className,
|
|
2234
2291
|
normalColor ? color_module_default[`color--${normalColor}`] : void 0,
|
|
2235
2292
|
hoverColor ? color_module_default[`color-hover--${hoverColor}`] : void 0,
|
|
2293
|
+
focusColor ? color_module_default[`color-focus--${focusColor}`] : void 0,
|
|
2236
2294
|
disabledColor ? color_module_default[`color-disabled--${disabledColor}`] : void 0
|
|
2237
2295
|
],
|
|
2238
2296
|
$color: void 0
|
|
@@ -2858,9 +2916,15 @@ var useCleanupOnUnmount = (focusedRef, oldStateRef) => {
|
|
|
2858
2916
|
// src/plugins/focusable/_private/use-keyboard-navigation.ts
|
|
2859
2917
|
var import_react9 = require("react");
|
|
2860
2918
|
var import_use_inject6 = require("@k8slens/use-inject");
|
|
2861
|
-
var noKeyboardNavigation = {
|
|
2862
|
-
|
|
2863
|
-
|
|
2919
|
+
var noKeyboardNavigation = {
|
|
2920
|
+
onKeyDown: () => {
|
|
2921
|
+
},
|
|
2922
|
+
onFocus: () => {
|
|
2923
|
+
},
|
|
2924
|
+
focusWhatThePointerIsOn: () => {
|
|
2925
|
+
}
|
|
2926
|
+
};
|
|
2927
|
+
var useKeyboardNavigation = (context, item, orderNumber, element) => {
|
|
2864
2928
|
const navigation = (0, import_use_inject6.useSyncInject)(keyboardNavigationStateInjectable);
|
|
2865
2929
|
(0, import_react9.useEffect)(() => {
|
|
2866
2930
|
if (!context || !element) {
|
|
@@ -2874,8 +2938,8 @@ var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
|
|
|
2874
2938
|
return;
|
|
2875
2939
|
}
|
|
2876
2940
|
const entries = navigation.sortedEntriesOf(contextInFocus);
|
|
2877
|
-
const
|
|
2878
|
-
const toFocus = entries.find((candidate) => candidate.item ===
|
|
2941
|
+
const itemInFocus = navigation.itemInFocusOf(contextInFocus);
|
|
2942
|
+
const toFocus = entries.find((candidate) => candidate.item === itemInFocus) ?? entries[0];
|
|
2879
2943
|
if ((toFocus == null ? void 0 : toFocus.element.isConnected) && document.activeElement !== toFocus.element) {
|
|
2880
2944
|
toFocus.element.focus();
|
|
2881
2945
|
}
|
|
@@ -2885,13 +2949,31 @@ var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
|
|
|
2885
2949
|
navigation.deregister(context, entry);
|
|
2886
2950
|
void Promise.resolve().then(focusWhatShouldHaveFocus);
|
|
2887
2951
|
};
|
|
2888
|
-
}, [navigation, context, item, orderNumber, element
|
|
2952
|
+
}, [navigation, context, item, orderNumber, element]);
|
|
2889
2953
|
if (!context) {
|
|
2890
2954
|
return noKeyboardNavigation;
|
|
2891
2955
|
}
|
|
2892
2956
|
return {
|
|
2957
|
+
// Which member the context is on, remembered for as long as its members are there: it is what
|
|
2958
|
+
// focus returns to when something that took focus over goes away again.
|
|
2959
|
+
onFocus: () => navigation.noteItemInFocus(context, item),
|
|
2960
|
+
// Where the pointer goes, focus goes: the member under it becomes the focused one, so arrowing
|
|
2961
|
+
// on from there continues from what the user is looking at rather than from wherever the
|
|
2962
|
+
// keyboard was left. Whichever of the two moved last decides, which is why this answers to the
|
|
2963
|
+
// pointer moving as well as to it arriving — the keyboard may have taken focus elsewhere while
|
|
2964
|
+
// the pointer rested where it was, and moving it at all is the user pointing again.
|
|
2965
|
+
//
|
|
2966
|
+
// The element comes from the event rather than from the render this handler was created in:
|
|
2967
|
+
// the handler the DOM ends up with is the one from the first render, when there was no element
|
|
2968
|
+
// yet — React has no reason to render the element again for a wrapper's own state.
|
|
2969
|
+
focusWhatThePointerIsOn: (event) => {
|
|
2970
|
+
const hovered = event.currentTarget;
|
|
2971
|
+
if (document.activeElement !== hovered) {
|
|
2972
|
+
hovered.focus();
|
|
2973
|
+
}
|
|
2974
|
+
},
|
|
2893
2975
|
onKeyDown: (event) => {
|
|
2894
|
-
const step = stepOf(event.key);
|
|
2976
|
+
const step = stepOf(event.key, context.orientation);
|
|
2895
2977
|
if (step === void 0) {
|
|
2896
2978
|
return;
|
|
2897
2979
|
}
|
|
@@ -2909,14 +2991,16 @@ var useKeyboardNavigation = (context, item, orderNumber, element, state) => {
|
|
|
2909
2991
|
}
|
|
2910
2992
|
};
|
|
2911
2993
|
};
|
|
2912
|
-
var stepOf = (key) => {
|
|
2994
|
+
var stepOf = (key, orientation) => {
|
|
2913
2995
|
switch (key) {
|
|
2914
2996
|
case "ArrowDown":
|
|
2997
|
+
return orientation === "horizontal" ? void 0 : 1;
|
|
2915
2998
|
case "ArrowRight":
|
|
2916
|
-
return 1;
|
|
2999
|
+
return orientation === "vertical" ? void 0 : 1;
|
|
2917
3000
|
case "ArrowUp":
|
|
3001
|
+
return orientation === "horizontal" ? void 0 : -1;
|
|
2918
3002
|
case "ArrowLeft":
|
|
2919
|
-
return -1;
|
|
3003
|
+
return orientation === "vertical" ? void 0 : -1;
|
|
2920
3004
|
case "Home":
|
|
2921
3005
|
return "first";
|
|
2922
3006
|
case "End":
|
|
@@ -3001,13 +3085,13 @@ var FocusableWrapperComponent = ({
|
|
|
3001
3085
|
focusableContext.isKeyboardNavigable ? focusableContext : void 0,
|
|
3002
3086
|
focusableItem,
|
|
3003
3087
|
orderNumber,
|
|
3004
|
-
element
|
|
3005
|
-
state
|
|
3088
|
+
element
|
|
3006
3089
|
);
|
|
3007
3090
|
contributeProps({
|
|
3008
3091
|
tabIndex,
|
|
3009
3092
|
onFocus: (e) => {
|
|
3010
3093
|
handleFocus(e);
|
|
3094
|
+
keyboardNavigation.onFocus();
|
|
3011
3095
|
onFocus == null ? void 0 : onFocus(e);
|
|
3012
3096
|
},
|
|
3013
3097
|
onBlur: (e) => {
|
|
@@ -3020,7 +3104,9 @@ var FocusableWrapperComponent = ({
|
|
|
3020
3104
|
onKeyDown: (e) => {
|
|
3021
3105
|
onKeyDown == null ? void 0 : onKeyDown(e);
|
|
3022
3106
|
keyboardNavigation.onKeyDown(e);
|
|
3023
|
-
}
|
|
3107
|
+
},
|
|
3108
|
+
onMouseEnter: keyboardNavigation.focusWhatThePointerIsOn,
|
|
3109
|
+
onMouseMove: keyboardNavigation.focusWhatThePointerIsOn
|
|
3024
3110
|
});
|
|
3025
3111
|
return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_jsx_runtime4.Fragment, { children });
|
|
3026
3112
|
};
|
|
@@ -3553,13 +3639,31 @@ var import_use_inject10 = require("@k8slens/use-inject");
|
|
|
3553
3639
|
var import_react15 = require("react");
|
|
3554
3640
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
3555
3641
|
var hoverCloseDelayInMilliseconds = 200;
|
|
3556
|
-
var DropDownMenuWrapperComponent = ({
|
|
3642
|
+
var DropDownMenuWrapperComponent = ({
|
|
3643
|
+
dropDownMenu,
|
|
3644
|
+
contributeRef,
|
|
3645
|
+
contributeProps,
|
|
3646
|
+
children
|
|
3647
|
+
}) => {
|
|
3557
3648
|
const [isOpen, setIsOpen] = (0, import_react15.useState)(false);
|
|
3558
3649
|
const [cursor, setCursor] = (0, import_react15.useState)(void 0);
|
|
3559
3650
|
const closeTimerRef = (0, import_react15.useRef)(void 0);
|
|
3560
3651
|
const onRightTrigger = (0, import_use_inject10.useSyncInject)(onRightTriggerInjectable);
|
|
3652
|
+
const elementRef = (0, import_react15.useRef)(null);
|
|
3653
|
+
const menuRef = (0, import_react15.useRef)(null);
|
|
3654
|
+
const elementTakesFocusBackRef = (0, import_react15.useRef)(false);
|
|
3655
|
+
contributeRef(
|
|
3656
|
+
(0, import_react15.useCallback)((element) => {
|
|
3657
|
+
elementRef.current = element;
|
|
3658
|
+
}, [])
|
|
3659
|
+
);
|
|
3561
3660
|
const toggle = (0, import_react15.useCallback)(() => setIsOpen((wasOpen) => !wasOpen), []);
|
|
3562
|
-
const close = (0, import_react15.useCallback)(() =>
|
|
3661
|
+
const close = (0, import_react15.useCallback)(() => {
|
|
3662
|
+
var _a;
|
|
3663
|
+
const focused = document.activeElement;
|
|
3664
|
+
elementTakesFocusBackRef.current = focused === null || focused === document.body || ((_a = menuRef.current) == null ? void 0 : _a.contains(focused)) === true;
|
|
3665
|
+
setIsOpen(false);
|
|
3666
|
+
}, []);
|
|
3563
3667
|
const cancelScheduledClose = (0, import_react15.useCallback)(() => {
|
|
3564
3668
|
if (closeTimerRef.current !== void 0) {
|
|
3565
3669
|
clearTimeout(closeTimerRef.current);
|
|
@@ -3575,7 +3679,35 @@ var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children })
|
|
|
3575
3679
|
closeTimerRef.current = setTimeout(close, hoverCloseDelayInMilliseconds);
|
|
3576
3680
|
}, [cancelScheduledClose, close]);
|
|
3577
3681
|
(0, import_react15.useEffect)(() => cancelScheduledClose, [cancelScheduledClose]);
|
|
3682
|
+
(0, import_react15.useEffect)(() => {
|
|
3683
|
+
if (!isOpen) {
|
|
3684
|
+
return void 0;
|
|
3685
|
+
}
|
|
3686
|
+
elementTakesFocusBackRef.current = false;
|
|
3687
|
+
return () => {
|
|
3688
|
+
if (!elementTakesFocusBackRef.current) {
|
|
3689
|
+
return;
|
|
3690
|
+
}
|
|
3691
|
+
void Promise.resolve().then(() => {
|
|
3692
|
+
const element = elementRef.current;
|
|
3693
|
+
const focused = document.activeElement;
|
|
3694
|
+
if ((element == null ? void 0 : element.isConnected) && (focused === null || focused === document.body)) {
|
|
3695
|
+
element.focus();
|
|
3696
|
+
}
|
|
3697
|
+
});
|
|
3698
|
+
};
|
|
3699
|
+
}, [isOpen]);
|
|
3578
3700
|
const openOn = dropDownMenu.openOn ?? "click";
|
|
3701
|
+
const closeOnArrowLeft = (0, import_react15.useCallback)(
|
|
3702
|
+
(event) => {
|
|
3703
|
+
if (event.key === "ArrowLeft") {
|
|
3704
|
+
event.preventDefault();
|
|
3705
|
+
event.stopPropagation();
|
|
3706
|
+
close();
|
|
3707
|
+
}
|
|
3708
|
+
},
|
|
3709
|
+
[close]
|
|
3710
|
+
);
|
|
3579
3711
|
const outsideClickMarkingProps = useOnOutsideClick(
|
|
3580
3712
|
(0, import_react15.useCallback)(() => {
|
|
3581
3713
|
if (isOpen) {
|
|
@@ -3617,7 +3749,17 @@ var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children })
|
|
|
3617
3749
|
},
|
|
3618
3750
|
...openOn === "hover" && {
|
|
3619
3751
|
onMouseEnter: open,
|
|
3620
|
-
onMouseLeave: scheduleClose
|
|
3752
|
+
onMouseLeave: scheduleClose,
|
|
3753
|
+
// A menu that opens on hovering would be out of the keyboard's reach otherwise. Sideways
|
|
3754
|
+
// into it, since that is where such a menu sits: beside the element it belongs to. Focus
|
|
3755
|
+
// follows on its own, the menu taking it as it appears.
|
|
3756
|
+
onKeyDown: (event) => {
|
|
3757
|
+
if (event.key === "ArrowRight") {
|
|
3758
|
+
event.preventDefault();
|
|
3759
|
+
event.stopPropagation();
|
|
3760
|
+
open();
|
|
3761
|
+
}
|
|
3762
|
+
}
|
|
3621
3763
|
}
|
|
3622
3764
|
});
|
|
3623
3765
|
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
@@ -3629,33 +3771,55 @@ var DropDownMenuWrapperComponent = ({ dropDownMenu, contributeProps, children })
|
|
|
3629
3771
|
// rather than going on to whatever encloses the element the menu was opened from — a row
|
|
3630
3772
|
// of a menu of its own, say, which would take it for the row being activated. Only
|
|
3631
3773
|
// `click` stops: the outside-click detection above works on `pointerdown`.
|
|
3632
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
3633
|
-
|
|
3774
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
3775
|
+
"span",
|
|
3634
3776
|
{
|
|
3635
|
-
|
|
3636
|
-
|
|
3637
|
-
|
|
3638
|
-
|
|
3777
|
+
...outsideClickMarkingProps,
|
|
3778
|
+
ref: menuRef,
|
|
3779
|
+
style: displayContents,
|
|
3780
|
+
onClick: stopPropagation2,
|
|
3781
|
+
onKeyDown: openOn === "hover" ? closeOnArrowLeft : void 0,
|
|
3782
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
3783
|
+
import_drop_down_menu_contracts.DropDownMenu,
|
|
3784
|
+
{
|
|
3785
|
+
spec: dropDownMenu,
|
|
3786
|
+
anchorPoint: openOn === "right-click" ? cursor : void 0,
|
|
3787
|
+
onClose: close,
|
|
3788
|
+
onMenuHoverChange: openOn === "hover" ? (menuIsHovered) => menuIsHovered ? cancelScheduledClose() : scheduleClose() : void 0
|
|
3789
|
+
}
|
|
3790
|
+
)
|
|
3639
3791
|
}
|
|
3640
|
-
)
|
|
3792
|
+
)
|
|
3641
3793
|
] });
|
|
3642
3794
|
};
|
|
3643
3795
|
var displayContents = { display: "contents" };
|
|
3644
3796
|
var stopPropagation2 = (event) => event.stopPropagation();
|
|
3645
|
-
var dropDownMenuPlugin = (0, import_element_component50.getPlugin)(
|
|
3646
|
-
|
|
3647
|
-
|
|
3648
|
-
|
|
3649
|
-
|
|
3650
|
-
return {
|
|
3651
|
-
$dropDownMenu: void 0,
|
|
3652
|
-
...$dropDownMenu.openOn === "hover" ? {} : { tabIndex: props.tabIndex ?? 0 },
|
|
3653
|
-
$wrapper: {
|
|
3654
|
-
Component: DropDownMenuWrapperComponent,
|
|
3655
|
-
props: { dropDownMenu: $dropDownMenu }
|
|
3797
|
+
var dropDownMenuPlugin = (0, import_element_component50.getPlugin)(
|
|
3798
|
+
(props) => {
|
|
3799
|
+
const { $dropDownMenu, $cursor, role } = props;
|
|
3800
|
+
if ($dropDownMenu === void 0) {
|
|
3801
|
+
return { $dropDownMenu: void 0 };
|
|
3656
3802
|
}
|
|
3657
|
-
|
|
3658
|
-
|
|
3803
|
+
const opensOnClick = ($dropDownMenu.openOn ?? "click") === "click";
|
|
3804
|
+
const cannotBeUsed = isDisabled(props);
|
|
3805
|
+
return {
|
|
3806
|
+
$dropDownMenu: void 0,
|
|
3807
|
+
...$dropDownMenu.openOn === "hover" ? {} : { tabIndex: props.tabIndex ?? 0 },
|
|
3808
|
+
// An element that answers a click with a menu is a button, and the cursor is how it says so
|
|
3809
|
+
// -- or says that it cannot right now. Both would otherwise come from a click handler such an
|
|
3810
|
+
// element has no reason to have. Only a click: something right-clicked is not a button, and a
|
|
3811
|
+
// row that reveals a menu on hover is a row.
|
|
3812
|
+
...opensOnClick && {
|
|
3813
|
+
role: role ?? "button",
|
|
3814
|
+
$cursor: $cursor ?? (cannotBeUsed ? "not-allowed" : "pointer")
|
|
3815
|
+
},
|
|
3816
|
+
$wrapper: {
|
|
3817
|
+
Component: DropDownMenuWrapperComponent,
|
|
3818
|
+
props: { dropDownMenu: $dropDownMenu }
|
|
3819
|
+
}
|
|
3820
|
+
};
|
|
3821
|
+
}
|
|
3822
|
+
);
|
|
3659
3823
|
|
|
3660
3824
|
// src/plugins/anchor/anchor.tsx
|
|
3661
3825
|
var import_element_component51 = require("@k8slens/element-component");
|
|
@@ -3683,6 +3847,7 @@ var AnchorWrapperComponent = ({
|
|
|
3683
3847
|
const ownAnchorName = toAnchorName((0, import_react16.useId)());
|
|
3684
3848
|
const inheritedAnchorName = (0, import_react16.useContext)(anchorNameContext);
|
|
3685
3849
|
const elementRef = (0, import_react16.useRef)(null);
|
|
3850
|
+
const pointRef = (0, import_react16.useRef)(null);
|
|
3686
3851
|
contributeRef(
|
|
3687
3852
|
(0, import_react16.useCallback)((element) => {
|
|
3688
3853
|
elementRef.current = element;
|
|
@@ -3721,6 +3886,18 @@ var AnchorWrapperComponent = ({
|
|
|
3721
3886
|
}
|
|
3722
3887
|
}
|
|
3723
3888
|
});
|
|
3889
|
+
(0, import_react16.useEffect)(() => {
|
|
3890
|
+
const element = pointRef.current;
|
|
3891
|
+
if (!element || !isPopoverCapable2(element)) {
|
|
3892
|
+
return;
|
|
3893
|
+
}
|
|
3894
|
+
element.showPopover();
|
|
3895
|
+
return () => {
|
|
3896
|
+
if (element.isConnected) {
|
|
3897
|
+
element.hidePopover();
|
|
3898
|
+
}
|
|
3899
|
+
};
|
|
3900
|
+
}, []);
|
|
3724
3901
|
(0, import_react16.useEffect)(() => {
|
|
3725
3902
|
const element = elementRef.current;
|
|
3726
3903
|
if (!position || !element || !isPopoverCapable2(element)) {
|
|
@@ -3737,6 +3914,9 @@ var AnchorWrapperComponent = ({
|
|
|
3737
3914
|
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
3738
3915
|
"div",
|
|
3739
3916
|
{
|
|
3917
|
+
ref: pointRef,
|
|
3918
|
+
popover: "manual",
|
|
3919
|
+
"data-anchor-point-test": true,
|
|
3740
3920
|
className: anchor_module_default.anchorPoint,
|
|
3741
3921
|
style: {
|
|
3742
3922
|
[anchorNameProperty]: ownAnchorName,
|
|
@@ -3939,10 +4119,11 @@ var getFocusableContext = (id) => getOrCreateContext(id, () => {
|
|
|
3939
4119
|
};
|
|
3940
4120
|
return context;
|
|
3941
4121
|
});
|
|
3942
|
-
var getKeyboardNavigableFocusableContext = (id) => getOrCreateContext(id, () => {
|
|
4122
|
+
var getKeyboardNavigableFocusableContext = (id, options = {}) => getOrCreateContext(id, () => {
|
|
3943
4123
|
const context = {
|
|
3944
4124
|
id,
|
|
3945
4125
|
isKeyboardNavigable: true,
|
|
4126
|
+
orientation: options.orientation ?? "vertical",
|
|
3946
4127
|
focusable: (item, orderNumber) => ({ context, item, orderNumber })
|
|
3947
4128
|
};
|
|
3948
4129
|
return context;
|
|
@@ -3957,12 +4138,17 @@ var getOrCreateContext = (id, create) => {
|
|
|
3957
4138
|
return created;
|
|
3958
4139
|
};
|
|
3959
4140
|
|
|
4141
|
+
// src/plugins/focusable/focusable-item-context.ts
|
|
4142
|
+
var import_react17 = require("react");
|
|
4143
|
+
var contextForFocusableItem = (0, import_react17.createContext)(void 0);
|
|
4144
|
+
var useFocusableItem = () => (0, import_react17.useContext)(contextForFocusableItem);
|
|
4145
|
+
|
|
3960
4146
|
// src/plugins/hoverable/local-hoverable/local-hoverable.ts
|
|
3961
4147
|
var import_use_inject11 = require("@k8slens/use-inject");
|
|
3962
|
-
var
|
|
4148
|
+
var import_react18 = require("react");
|
|
3963
4149
|
var useLocalHoverable = () => {
|
|
3964
|
-
const hoverableContext = (0,
|
|
3965
|
-
const ref = (0,
|
|
4150
|
+
const hoverableContext = (0, import_react18.useMemo)(() => getHoverableContext(), []);
|
|
4151
|
+
const ref = (0, import_react18.useRef)(null);
|
|
3966
4152
|
const itemBeingHovered = (0, import_use_inject11.useSyncInject)(contextIsBeingHoveredInjectable, hoverableContext);
|
|
3967
4153
|
return {
|
|
3968
4154
|
ref,
|
|
@@ -4007,6 +4193,7 @@ var useLocalHoverable = () => {
|
|
|
4007
4193
|
Tr,
|
|
4008
4194
|
Ul,
|
|
4009
4195
|
contextForClosingPopover,
|
|
4196
|
+
contextForFocusableItem,
|
|
4010
4197
|
doFocusForInjectionToken,
|
|
4011
4198
|
elementComponentFeature,
|
|
4012
4199
|
getDraggableContext,
|
|
@@ -4026,8 +4213,9 @@ var useLocalHoverable = () => {
|
|
|
4026
4213
|
suppressTooltip,
|
|
4027
4214
|
tShirtSizeInPixels,
|
|
4028
4215
|
useClosePopover,
|
|
4216
|
+
useFocusableItem,
|
|
4029
4217
|
useLocalHoverable,
|
|
4030
4218
|
useOnOutsideClick,
|
|
4031
4219
|
usePopoverIsOpen
|
|
4032
4220
|
});
|
|
4033
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQudHMiLCAiLi4vc3JjL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9ob3ZlcmFibGUvY29tcHV0ZWQtbm93LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9lbGVtZW50cy9taW5pbWFsLWRpdi50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm9yZGVyL2JvcmRlci50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlcy50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvbnQvZm9udC50cyIsICIuLi9zcmMvcGx1Z2lucy9mb250L2ZvbnQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvdy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy50cyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9yZWYvcmVmLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZ2V0LWRyYWdnYWJsZS1jb250ZXh0LnRzIiwgIi4uL3NyYy9mZWF0dXJlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3Rlc3QtdXRpbC1ydW5uYWJsZS5pbmplY3RhYmxlLnRzIiwgImltcG9ydC1nbG9iOi4vKiovKi5nbG9iYWwtb3ZlcnJpZGUtZm9yLWluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9lNWFlNTcwYi0xOWRlLTRhODItOTk1MS00YzRkNGMwYTk5MWYiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4vbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4uZGVmYXVsdC1vdmVycmlkZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzIiwgIi4uL3NyYy9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmRlZmF1bHQtb3ZlcnJpZGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9mODNmYjk0Ny02MTg3LTQ3YzYtOTUwYi1lMDIyM2M1MDMwYjciLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy8wOTI3ZGY4Yy1hMDRhLTQwOGQtYmVlYS00NDU4MDMwYzZjZTMiLCAiLi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplcy50cyIsICIuLi9zcmMvZWxlbWVudHMudHMiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC9mbGV4Lm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgvZmxleC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmlkL2dyaWQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3N0eWxlL3N0eWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodC50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJhZ2dhYmxlLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2Ryb3BwYWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90cmFuc2l0aW9uL3RyYW5zaXRpb24udHMiLCAiLi4vc3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXQudHMiLCAiLi4vc3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGlkZGVuL2hpZGRlbi50cyIsICIuLi9zcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL21hcmdpbi9tYXJnaW4udHMiLCAiLi4vc3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy92aXN1YWxseS1oaWRkZW4vdmlzdWFsbHktaGlkZGVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC1jaGlsZC9mbGV4LWNoaWxkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGludC90aW50LnRzIiwgIi4uL3NyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC50cyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZS50c3giLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvbi50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvaGFuZGxlLWZvY3VzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS9oYW5kbGUtYmx1ci50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZy50cyIsICIuLi9zcmMvcGx1Z2lucy9hcmVhL2FyZWEudHMiLCAiLi4vc3JjL3BsdWdpbnMvYXJlYS1jb250ZW50L2FyZWEtY29udGVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9zaXplL3NpemUudHMiLCAiLi4vc3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvY2xpY2thYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLnRzeCIsICIuLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci50c3giLCAiLi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Zsb2F0aW5nL2Zsb2F0aW5nLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7IEJsb2NrUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ibG9jay9ibG9ja1wiO1xuZXhwb3J0IHR5cGUgeyBBbmNob3JlZEF0LCBBbmNob3JQbHVnaW5Qcm9wcywgQW5jaG9yUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yXCI7XG5leHBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29uLW91dHNpZGUtY2xpY2svb24tb3V0c2lkZS1jbGlja1wiO1xuZXhwb3J0IHR5cGUgeyBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZHJvcC1kb3duLW1lbnUvZHJvcC1kb3duLW1lbnVcIjtcbmV4cG9ydCB0eXBlIHsgVGV4dEFsaWduUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ25cIjtcblxuZXhwb3J0IHsgdHlwZSBEb0ZvY3VzLCB0eXBlIERvRm9jdXNGb3IsIGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9pdGVtLWJlaW5nLWZvY3VzZWQuaW5qZWN0YWJsZVwiO1xuZXhwb3J0IHR5cGUgeyBJdGVtQmVpbmdGb2N1c2VkIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlXCI7XG5leHBvcnQgeyB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcywgaXNEaXNhYmxlZCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZFwiO1xuZXhwb3J0IHR5cGUgeyBHcmF5c2NhbGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGVcIjtcbmV4cG9ydCB0eXBlIHsgVGludFBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdGludC90aW50XCI7XG5leHBvcnQgdHlwZSB7IEZhZGVkUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuXG5leHBvcnQgdHlwZSB7IFNpZGVTdHlsZXMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzXCI7XG5leHBvcnQgdHlwZSB7IENvcm5lclN0eWxlcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEJhY2tncm91bmRDb2xvclBsdWdpblByb3BzLFxuICBCYWNrZ3JvdW5kQ29sb3IsXG4gIEJhY2tncm91bmRDb2xvckFsaWFzLFxuICAkQmFja2dyb3VuZENvbG9yUHJvcHMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIE91dGxpbmVXaWR0aCxcbiAgJE91dGxpbmVQcm9wcyxcbiAgT3V0bGluZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmVcIjtcblxuZXhwb3J0IHR5cGUge1xuICBGbG9hdGluZ0NvbnRlbnRBcmdzLFxuICBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5LFxuICAkRmxvYXRpbmdQcm9wcyxcbiAgRmxvYXRpbmdQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcblxuZXhwb3J0IHR5cGUgeyBQYWRkaW5nUGx1Z2luUHJvcHMsIERpcmVjdGlvbmFsUGFkZGluZyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuZXhwb3J0IHR5cGUgeyBNYXJnaW5QbHVnaW5Qcm9wcywgRGlyZWN0aW9uYWxNYXJnaW4gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luXCI7XG5leHBvcnQgdHlwZSB7IE92ZXJmbG93UGx1Z2luUHJvcHMsIE92ZXJmbG93IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuZXhwb3J0IHR5cGUgeyBCb3hTaGFkb3dQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcyxcbiAgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZS1ieS1kcmFnZ2luZ1wiO1xuZXhwb3J0IHsgaG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmdcIjtcblxuZXhwb3J0IHR5cGUge1xuICBIb3ZlcmFibGVDb250ZXh0LFxuICAkSG92ZXJhYmxlUHJvcHMsXG4gIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zLFxuICBIb3ZlcmFibGVQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaG92ZXJhYmxlUGx1Z2luLCBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgUmVmUGx1Z2luUHJvcHMsICRSZWZQcm9wLCBSZWZMaWtlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSB7IEFic29sdXRlUGx1Z2luUHJvcHMsIEFic29sdXRlUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuZXhwb3J0IHR5cGUgeyBIaWRkZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW5cIjtcbmV4cG9ydCB0eXBlIHsgTm9Qb2ludGVyRXZlbnRzUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuZXhwb3J0IHR5cGUgeyBPZmZzZXRQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXRcIjtcbmV4cG9ydCB0eXBlIHsgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW5cIjtcbmV4cG9ydCB0eXBlIHsgUmVsYXRpdmVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5leHBvcnQgdHlwZSB7IFRyYW5zaXRpb25QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuZXhwb3J0IHR5cGUgeyBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuXG5leHBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgQ3Vyc29yUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5leHBvcnQgdHlwZSB7IERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgVG9vbHRpcFBsdWdpblByb3BzLCAkVG9vbHRpcFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwXCI7XG5leHBvcnQgeyBTdHlsZWRUb29sdGlwQ29udGFpbmVyLCBnZXRUb29sdGlwUHJvcHMsIHN1cHByZXNzVG9vbHRpcCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcFwiO1xuXG5leHBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGdldERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHsgZWxlbWVudENvbXBvbmVudEZlYXR1cmUgfSBmcm9tIFwiLi9zcmMvZmVhdHVyZVwiO1xuXG5leHBvcnQgdHlwZSB7IFNpemVQbHVnaW5Qcm9wcywgJFNpemVQcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuXG5leHBvcnQgdHlwZSB7IFdpZHRoUGx1Z2luUHJvcHMsICRXaWR0aFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcblxuZXhwb3J0IHR5cGUgeyBTdHlsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvc3R5bGUvc3R5bGVcIjtcblxuZXhwb3J0IHR5cGUgeyBIZWlnaHRQbHVnaW5Qcm9wcywgJEhlaWdodFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSB7IEZvbnRQbHVnaW5Qcm9wcywgRm9udFNpemUsIEZvbnRMaW5lSGVpZ2h0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9udC9mb250XCI7XG5cbmV4cG9ydCB0eXBlIHsgR3JpZFBsdWdpblByb3BzLCBHcmlkUHJvcHMsIEdyaWRDb2x1bW5zIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgRHJhZ2dhYmxlUGx1Z2luUHJvcHMsXG4gIERyb3BwYWJsZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgeyBDb2xvclBsdWdpblByb3BzLCAkQ29sb3JQcm9wcywgVGV4dENvbG9yLCBUZXh0Q29sb3JBbGlhcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NvbG9yL2NvbG9yXCI7XG5leHBvcnQgdHlwZSB7IENsYXNzTmFtZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQm9yZGVyUGx1Z2luUHJvcHMsXG4gIEJvcmRlckNvbG9yQWxpYXMsXG4gIEJvcmRlckNvbG9yLFxuICAkQm9yZGVyUHJvcHMsXG4gICRCb3JkZXJDb2xvclByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQm9yZGVyUmFkaXVzU2l6ZSwgQm9yZGVyV2lkdGgsIEJvcmRlclNpZGUgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuZXhwb3J0IHsgdFNoaXJ0U2l6ZUluUGl4ZWxzLCBzaXplVW5pdEluUGl4ZWxzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdGlvbiwgU2hvcnREaXJlY3Rpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmV4cG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIENsaWNrSGFuZGxlcixcbiAgQ2xpY2tIYW5kbGVyRGV0YWlscyxcbiAgQ2xpY2tQbHVnaW5Qcm9wcyxcbiAgUG9zaXRpb24yZCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEZsZXhQbHVnaW5Qcm9wcyxcbiAgSG9yaXpvbnRhbEZsZXhQcm9wcyxcbiAgTWF4aW1hbEZsZXhQcm9wcyxcbiAgU2ltcGxlRmxleFByb3AsXG4gIFZlcnRpY2FsRmxleFByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mbGV4L2ZsZXhcIjtcblxuaW1wb3J0IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nLFxuICBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgeyByZW1vdmVDc3NNb2R1bGVDbHV0dGVyRm9yVW5pdFRlc3RpbmcsIHNob3dDc3NNb2R1bGVDbHV0dGVyRm9yUHJvZHVjdGlvbiB9O1xuXG5leHBvcnQge1xuICBDbGlja2FibGVEaXYsXG4gIE5hdixcbiAgU3ZnLFxuICBEaXYsXG4gIEJ1dHRvbixcbiAgSSxcbiAgSW5wdXQsXG4gIEZvcm0sXG4gIFNwYW4sXG4gIFRleHRBcmVhLFxuICBBLFxuICBDb2RlLFxuICBQcmUsXG4gIEgxLFxuICBIMixcbiAgSDMsXG4gIEg0LFxuICBINSxcbiAgSDYsXG4gIFAsXG4gIENsaWNrYWJsZUxpLFxuICBMaSxcbiAgT2wsXG4gIFVsLFxuICBUaCxcbiAgVGQsXG4gIFRyLFxuICBUYWJsZSxcbiAgTGFiZWwsXG4gIFRCb2R5LFxuICBEaWFsb2csXG4gIENhbnZhcyxcbiAgSW1nLFxufSBmcm9tIFwiLi9zcmMvZWxlbWVudHNcIjtcblxuZXhwb3J0IHR5cGUge1xuICBDb21tb25Qcm9wcyxcbiAgQ2xpY2thYmxlRGl2UHJvcHMsXG4gIENsaWNrYWJsZUxpUHJvcHMsXG4gIE5hdlByb3BzLFxuICBTdmdQcm9wcyxcbiAgRGl2UHJvcHMsXG4gIEJ1dHRvblByb3BzLFxuICBJUHJvcHMsXG4gIElucHV0UHJvcHMsXG4gIEZvcm1Qcm9wcyxcbiAgU3BhblByb3BzLFxuICBUZXh0QXJlYVByb3BzLFxuICBBUHJvcHMsXG4gIENvZGVQcm9wcyxcbiAgUHJlUHJvcHMsXG4gIEgxUHJvcHMsXG4gIEgyUHJvcHMsXG4gIEgzUHJvcHMsXG4gIEg0UHJvcHMsXG4gIEg1UHJvcHMsXG4gIEg2UHJvcHMsXG4gIFBQcm9wcyxcbiAgTGlQcm9wcyxcbiAgT2xQcm9wcyxcbiAgVWxQcm9wcyxcbiAgVGhQcm9wcyxcbiAgVGRQcm9wcyxcbiAgVHJQcm9wcyxcbiAgVGFibGVQcm9wcyxcbiAgTGFiZWxQcm9wcyxcbiAgVEJvZHlQcm9wcyxcbiAgRGlhbG9nUHJvcHMsXG4gIENhbnZhc1Byb3BzLFxuICBJbWdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCB7XG4gIGdldEZvY3VzYWJsZUNvbnRleHQsXG4gIGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHR5cGUge1xuICAkRm9jdXNhYmxlUHJvcHMsXG4gIEFueUZvY3VzYWJsZUNvbnRleHQsXG4gIEZvY3VzYWJsZUNvbnRleHQsXG4gIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHsgdXNlQ2xvc2VQb3BvdmVyLCB1c2VQb3BvdmVySXNPcGVuLCBjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9wb3BvdmVyL3BvcG92ZXJcIjtcbmV4cG9ydCB7IHVzZUxvY2FsSG92ZXJhYmxlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2xvY2FsLWhvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGVcIjtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgdHlwZSBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcblxuICAvKipcbiAgICogQ2FsbGVkIHdoZW4gYSBwb2ludGVyLWRvd24gbGFuZHMgb3V0c2lkZSB0aGUgZWxlbWVudCdzIFJlYWN0IHRyZWUuIFRoZSB0cmVlIGluY2x1ZGVzIGNvbnRlbnRcbiAgICogdGhlIGVsZW1lbnQgcG9ydGFscyBlbHNld2hlcmUsIHNvIHBvcnRhbGVkIGNoaWxkcmVuIGNvdW50IGFzIGluc2lkZS4gQ2F2ZWF0OiBhbiBvdXRzaWRlXG4gICAqIHBvaW50ZXItZG93biB3aG9zZSBwcm9wYWdhdGlvbiB0byB0aGUgZG9jdW1lbnQgaXMgc3RvcHBlZCBuYXRpdmVseSBnb2VzIHVuZGV0ZWN0ZWQuXG4gICAqL1xuICByZWFkb25seSAkb25PdXRzaWRlQ2xpY2s/OiAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbn07XG5cbi8qKlxuICogUmVhY3QtdHJlZSBvdXRzaWRlLWNsaWNrIGRldGVjdGlvbjogYSBjYXB0dXJlLXBoYXNlIGhhbmRsZXIgb24gdGhlIGVsZW1lbnQgcmVjb3JkcyB0aGVcbiAqIHBvaW50ZXItZG93biBldmVudHMgb2YgaXRzIG93biBSZWFjdCB0cmVlIChwb3J0YWxzIGluY2x1ZGVkLCBzaW5jZSBSZWFjdCBldmVudHMgcHJvcGFnYXRlXG4gKiB0aHJvdWdoIHRoZW0pLCBhbmQgYSBkb2N1bWVudC1sZXZlbCBsaXN0ZW5lciByZXBvcnRzIGV2ZXJ5IHBvaW50ZXItZG93biBpdCBkaWQgbm90IHJlY29yZC5cbiAqIFJldHVybnMgdGhlIHByb3BzIG1hcmtpbmcgdGhlIGVsZW1lbnQncyB0cmVlOyBnaXZlIHRoZW0gdG8gYGNvbnRyaWJ1dGVQcm9wc2Agb3Igc3ByZWFkIHRoZW1cbiAqIG9udG8gdGhlIHN1YnRyZWUncyByb290LlxuICovXG5leHBvcnQgY29uc3QgdXNlT25PdXRzaWRlQ2xpY2sgPSAob25PdXRzaWRlQ2xpY2s6IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB2b2lkKSA9PiB7XG4gIGNvbnN0IGxhc3RJbnNpZGVQb2ludGVyRG93blJlZiA9IHVzZVJlZjxFdmVudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgY29uc3QgaGFuZGxlclJlZiA9IHVzZVJlZihvbk91dHNpZGVDbGljayk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBoYW5kbGVyUmVmLmN1cnJlbnQgPSBvbk91dHNpZGVDbGljaztcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVEb2N1bWVudFBvaW50ZXJEb3duID0gKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudCAhPT0gbGFzdEluc2lkZVBvaW50ZXJEb3duUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgaGFuZGxlclJlZi5jdXJyZW50KGV2ZW50KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcInBvaW50ZXJkb3duXCIsIGhhbmRsZURvY3VtZW50UG9pbnRlckRvd24pO1xuXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBoYW5kbGVEb2N1bWVudFBvaW50ZXJEb3duKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uUG9pbnRlckRvd25DYXB0dXJlID0gdXNlQ2FsbGJhY2soKGV2ZW50OiBSZWFjdC5Qb2ludGVyRXZlbnQpID0+IHtcbiAgICBsYXN0SW5zaWRlUG9pbnRlckRvd25SZWYuY3VycmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHsgb25Qb2ludGVyRG93bkNhcHR1cmUgfTtcbn07XG5cbnR5cGUgT25PdXRzaWRlQ2xpY2tXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IG9uT3V0c2lkZUNsaWNrOiAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBPbk91dHNpZGVDbGlja1dyYXBwZXJDb21wb25lbnQgPSAoeyBvbk91dHNpZGVDbGljaywgY29udHJpYnV0ZVByb3BzLCBjaGlsZHJlbiB9OiBPbk91dHNpZGVDbGlja1dyYXBwZXJQcm9wcykgPT4ge1xuICBjb250cmlidXRlUHJvcHModXNlT25PdXRzaWRlQ2xpY2sob25PdXRzaWRlQ2xpY2spKTtcblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xufTtcblxuZXhwb3J0IGNvbnN0IG9uT3V0c2lkZUNsaWNrUGx1Z2luID0gZ2V0UGx1Z2luPE9uT3V0c2lkZUNsaWNrUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRvbk91dHNpZGVDbGljayB9ID0gcHJvcHM7XG5cbiAgaWYgKCRvbk91dHNpZGVDbGljayA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgJG9uT3V0c2lkZUNsaWNrOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJG9uT3V0c2lkZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogT25PdXRzaWRlQ2xpY2tXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgcHJvcHM6IHsgb25PdXRzaWRlQ2xpY2s6ICRvbk91dHNpZGVDbGljayB9LFxuICAgIH0sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbmV4cG9ydCB0eXBlIERvRm9jdXM8VD4gPSAoaXRlbTogVCkgPT4gdm9pZDtcbmV4cG9ydCB0eXBlIERvRm9jdXNGb3IgPSA8VD4oZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT4gRG9Gb2N1czxUPjtcblxuZXhwb3J0IGNvbnN0IGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiA9IGdldEluamVjdGlvblRva2VuMjx7IHNpbmdsZUZhY3Rvcnk6ICgpID0+IERvRm9jdXNGb3IgfT4oe1xuICBpZDogXCJkby1mb2N1cy1mb3ItaW5qZWN0aW9uLXRva2VuXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IGRvRm9jdXNGb3JJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJkby1mb2N1cy1mb3JcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0UmVmU2V0ID0gZGkuaW5qZWN0KGZvY3VzYWJsZUh0bWxFbGVtZW50UmVmU2V0SW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKCkgPT5cbiAgICAgICg8VD4oZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT5cbiAgICAgICAgKGZvY3VzYWJsZUl0ZW06IFQpID0+IHtcbiAgICAgICAgICBjb25zdCBbZmlyc3RSZW5kZXJlZEZvY3VzYWJsZUVsZW1lbnRSZWZdID0gZ2V0UmVmU2V0KGZvY3VzYWJsZUNvbnRleHQsIGZvY3VzYWJsZUl0ZW0pO1xuXG4gICAgICAgICAgaWYgKGZpcnN0UmVuZGVyZWRGb2N1c2FibGVFbGVtZW50UmVmKSB7XG4gICAgICAgICAgICBhc3NlcnREZWZpbmVkKGZpcnN0UmVuZGVyZWRGb2N1c2FibGVFbGVtZW50UmVmLmN1cnJlbnQpO1xuXG4gICAgICAgICAgICBmaXJzdFJlbmRlcmVkRm9jdXNhYmxlRWxlbWVudFJlZi5jdXJyZW50LmZvY3VzKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSBhcyBEb0ZvY3VzRm9yO1xuICB9LFxuXG4gIGluamVjdGlvblRva2VuOiBkb0ZvY3VzRm9ySW5qZWN0aW9uVG9rZW4sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxudHlwZSBGb2N1c2FibGVJdGVtID0gYW55O1xuXG4vLyBUd28gaW5zdGFudGlhdGlvbiBwYXJhbWV0ZXJzIHJhdGhlciB0aGFuIG9uZSBjb21wb3NpdGUga2V5OiB2MiBrZXlzIGFcbi8vIHNpbmdsZXRvbiBieSBhbGwgb2YgdGhlbSwgc28gdGhlIGNvbnRleHQgYW5kIHRoZSBpdGVtIGNvbXBvc2UgYnkgaWRlbnRpdHkgb25cbi8vIHRoZWlyIG93bi5cbmV4cG9ydCBjb25zdCBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImh0bWwtZWxlbWVudHMtYnktZm9jdXNhYmxlLW1hcFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNhYmxlSXRlbT4sIF9pdGVtOiBGb2N1c2FibGVJdGVtKSA9PlxuICAgIG5ldyBTZXQ8TXV0YWJsZVJlZk9iamVjdDxIVE1MRWxlbWVudCB8IHVuZGVmaW5lZD4+KCksXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgSUNvbXB1dGVkVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCB0eXBlIEl0ZW1CZWluZ0ZvY3VzZWQgPSA8VD4oZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT4gSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdGb2N1c2VkSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBJdGVtQmVpbmdGb2N1c2VkIH0+KHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1mb2N1c2VkXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IHByaXZhdGVJdGVtQmVpbmdGb2N1c2VkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwicHJpdmF0ZS1pdGVtLWJlaW5nLWZvY3VzZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0Rm9jdXNhYmxlSXRlbVN0YXRlID0gZGkuaW5qZWN0KGZvY3VzYWJsZUl0ZW1TdGF0ZUluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuIChjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PGFueT4pID0+IGNvbXB1dGVkKCgpID0+IGdldEZvY3VzYWJsZUl0ZW1TdGF0ZShjb250ZXh0KS5nZXQoKSk7XG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpdGVtLWJlaW5nLWZvY3VzZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0ZvY3VzZWQgPSBkaS5pbmplY3QocHJpdmF0ZUl0ZW1CZWluZ0ZvY3VzZWRJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoKSA9PlxuICAgICAgKDxUPihjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PFQ+KSA9PlxuICAgICAgICBnZXRQcml2YXRlSXRlbUJlaW5nRm9jdXNlZChjb250ZXh0KSBhcyBJQ29tcHV0ZWRWYWx1ZTxUIHwgdW5kZWZpbmVkPikgYXMgSXRlbUJlaW5nRm9jdXNlZDtcbiAgfSxcblxuICBpbmplY3Rpb25Ub2tlbjogaXRlbUJlaW5nRm9jdXNlZEluamVjdGlvblRva2VuLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJmb2N1c2FibGUtaXRlbS1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8YW55PikgPT4gb2JzZXJ2YWJsZS5ib3g8dW5rbm93bj4oKSxcbn0pO1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZW5hYmxlZFN0eWxlcyBmcm9tIFwiLi9lbmFibGVkLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIFRoaXMgZmllbGQgaGFzIGhpZ2hlciBwcmlvcml0eSB0aGFuICRkaXNhYmxlZFxuICAgKi9cbiAgJGVuYWJsZWQ/OiBib29sZWFuO1xuICAkZGlzYWJsZWQ/OiBib29sZWFuO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBmaWVsZCBpcyBvdmVycmlkZGVuIHZpYSAkZGlzYWJsZWQgYW5kICRlbmFibGVkXG4gICAqL1xuICBkaXNhYmxlZD86IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBlbmFibGVkUGx1Z2luID0gZ2V0UGx1Z2luPEVuYWJsZWRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgZGlzYWJsZWQgPSBpc0Rpc2FibGVkKHByb3BzKTtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBkaXNhYmxlZCA/IGVuYWJsZWRTdHlsZXMuZGlzYWJsZWQgOiB1bmRlZmluZWRdLFxuICAgIGRpc2FibGVkLFxuICAgICRlbmFibGVkOiB1bmRlZmluZWQsXG4gICAgJGRpc2FibGVkOiB1bmRlZmluZWQsXG4gIH07XG59KTtcblxuZXhwb3J0IGNvbnN0IGlzRGlzYWJsZWQgPSAocHJvcHM6IEVuYWJsZWRQbHVnaW5Qcm9wcykgPT4ge1xuICBjb25zdCB7ICRlbmFibGVkLCAkZGlzYWJsZWQgfSA9IHByb3BzO1xuXG4gIHJldHVybiB0eXBlb2YgJGVuYWJsZWQgPT09IFwiYm9vbGVhblwiID8gISRlbmFibGVkIDogKCRkaXNhYmxlZCA/PyBmYWxzZSk7XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImRpc2FibGVkXCI6IFwiZW5hYmxlZC1tb2R1bGVfX2Rpc2FibGVkX19fTEwzc3dcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUlkLCB1c2VNZW1vLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgdHlwZSBDb250ZXh0TWFwVmFsdWUsIGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSB9IGZyb20gXCIuL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBhY3Rpb24sIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgaXNEZWZpbmVkLCBub29wLCB0eXBlIFNpbmdsZU9yTWFueSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IHJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgdHlwZSB7ICRIb3ZlcmFibGVQcm9wcyB9IGZyb20gXCIuL2hvdmVyYWJsZVwiO1xuXG5leHBvcnQgdHlwZSAkSG92ZXJhYmxlQnlEcmFnZ2luZ1Byb3BzPFQ+ID0gUGljazwkSG92ZXJhYmxlUHJvcHM8VD4sIFwiY29udGV4dFwiIHwgXCJpdGVtXCI+O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luUHJvcHM8VCA9IGFueT4gPSB7XG4gICRob3ZlcmFibGVCeURyYWdnaW5nPzogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVCeURyYWdnaW5nUHJvcHM8VD4+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW48VD4oKSB7XG4gIHJldHVybiBnZXRQbHVnaW48SG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpblByb3BzLCBbUmV0dXJuVHlwZTx0eXBlb2YgcmVmUGx1Z2luPFQ+Pl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGhvdmVyYWJsZUJ5RHJhZ2dpbmcsICRyZWYgfSA9IHByb3BzO1xuXG4gICAgaWYgKCRob3ZlcmFibGVCeURyYWdnaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICRob3ZlcmFibGVCeURyYWdnaW5nOiB1bmRlZmluZWQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGlkID0gdXNlSWQoKTtcbiAgICBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvciA9IHVzZVN5bmNJbmplY3QoaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlKTtcbiAgICBjb25zdCBob3ZlcmFibGVQcm9wc1JlZiA9IHVzZVJlZihvYnNlcnZhYmxlLm1hcCh0b0NvbnRleHRNYXAoJGhvdmVyYWJsZUJ5RHJhZ2dpbmcpLCB7IGRlZXA6IGZhbHNlIH0pKTtcbiAgICBjb25zdCBjb250cm9sbGVyID0gdXNlUmVmKG5ldyBBYm9ydENvbnRyb2xsZXIoKSk7XG5cbiAgICB1c2VFZmZlY3QoXG4gICAgICBhY3Rpb24oKCkgPT4ge1xuICAgICAgICBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LnJlcGxhY2UodG9Db250ZXh0TWFwKCRob3ZlcmFibGVCeURyYWdnaW5nKSk7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgY2FsbGJhY2tSZWYgPSB1c2VNZW1vKFxuICAgICAgKCkgPT5cbiAgICAgICAgYWN0aW9uKChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgICAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY3VycmVudC5hYm9ydCgpO1xuICAgICAgICAgICAgY29udHJvbGxlci5jdXJyZW50ID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIFwiZHJhZ2VudGVyXCIsXG4gICAgICAgICAgICBhY3Rpb24oKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFRhcmdldCwgcmVsYXRlZFRhcmdldCB9ID0gZXZlbnQ7XG4gICAgICAgICAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgICAgICAgICAgaWYgKCEoY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMocmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgICAgICAgICAgIGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpLnNldChpZCwge1xuICAgICAgICAgICAgICAgICAgICBob3ZlcmVkQXQ6IG9ic2VydmFibGUuYm94KGhvdmVyZWRBdCwgeyBkZWVwOiBmYWxzZSB9KSxcbiAgICAgICAgICAgICAgICAgICAgZ2V0UHJvcHM6ICgpID0+IGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQuZ2V0KGNvbnRleHQpLFxuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLmN1cnJlbnQuc2lnbmFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcbiAgICAgICAgICAgIFwiZHJhZ2xlYXZlXCIsXG4gICAgICAgICAgICBhY3Rpb24oKGV2ZW50KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFRhcmdldCwgcmVsYXRlZFRhcmdldCB9ID0gZXZlbnQ7XG4gICAgICAgICAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgICAgICAgICAgaWYgKCEoY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCkuY29udGFpbnMocmVsYXRlZFRhcmdldCBhcyBIVE1MRWxlbWVudCkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IGhvdmVyZWRTdGF0ZSA9IGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgICAgICBob3ZlcmVkU3RhdGUuZGVsZXRlKGlkKTtcbiAgICAgICAgICAgICAgICAgIGhvdmVyZWRTdGF0ZS5mb3JFYWNoKChzdGF0ZSkgPT4gc3RhdGUuaG92ZXJlZEF0LnNldChob3ZlcmVkQXQpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBzaWduYWw6IGNvbnRyb2xsZXIuY3VycmVudC5zaWduYWwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG4gICAgICAgIH0pLFxuICAgICAgW2hvdmVySXRlbVN0YXRlRm9yLCBpZF0sXG4gICAgKTtcblxuICAgIHJldHVybiB7XG4gICAgICAkcmVmOiBbJHJlZiwgY2FsbGJhY2tSZWZdLFxuICAgICAgJGhvdmVyYWJsZUJ5RHJhZ2dpbmc6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9KTtcbn1cblxuY29uc3QgdG9Db250ZXh0TWFwID0gKHByb3BzOiBTaW5nbGVPck1hbnk8JEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wczx1bmtub3duPj4gfCB1bmRlZmluZWQpID0+IHtcbiAgY29uc3QgaXRlbXMgPSBbcHJvcHNdLmZsYXQoKS5maWx0ZXIoaXNEZWZpbmVkKTtcbiAgY29uc3QgcmVzdWx0czogW29iamVjdCwgQ29udGV4dE1hcFZhbHVlXVtdID0gW107XG5cbiAgZm9yIChjb25zdCB7IGNvbnRleHQsIGl0ZW0gfSBvZiBpdGVtcykge1xuICAgIHJlc3VsdHMucHVzaChbY29udGV4dCwgeyBpdGVtLCBkZWxheTogMCwgb25Ib3Zlcjogbm9vcCwgb25VbmhvdmVyOiBub29wIH1dKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB0eXBlIElPYnNlcnZhYmxlVmFsdWUsIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuXG5leHBvcnQgdHlwZSBDb250ZXh0TWFwVmFsdWUgPSB7XG4gIHJlYWRvbmx5IGl0ZW06IHVua25vd247XG4gIHJlYWRvbmx5IGRlbGF5OiBudW1iZXI7XG4gIG9uSG92ZXI6IFZvaWRGdW5jdGlvbjtcbiAgb25VbmhvdmVyOiBWb2lkRnVuY3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmVkSXRlbVN0YXRlID0ge1xuICByZWFkb25seSBob3ZlcmVkQXQ6IElPYnNlcnZhYmxlVmFsdWU8bnVtYmVyPjtcbiAgcmVhZG9ubHkgZ2V0UHJvcHM6ICgpID0+IENvbnRleHRNYXBWYWx1ZSB8IHVuZGVmaW5lZDtcbn07XG5cbmV4cG9ydCBjb25zdCBob3ZlcmVkSXRlbVN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiaG92ZXJlZC1pdGVtLXN0YXRlXCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IChfY29udGV4dDogb2JqZWN0KSA9PiBvYnNlcnZhYmxlLm1hcDxzdHJpbmcsIEhvdmVyZWRJdGVtU3RhdGU+KFtdLCB7IGRlZXA6IGZhbHNlIH0pLFxufSk7XG5cbmV4cG9ydCBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvckluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImhvdmVyLWl0ZW0tc3RhdGUtZm9yXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldEhvdmVyZWRJdGVtU3RhdGUgPSBkaS5pbmplY3QoaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+IChjb250ZXh0OiBvYmplY3QpID0+IGdldEhvdmVyZWRJdGVtU3RhdGUoY29udGV4dCk7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5cbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlSWQsIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgeyB0eXBlIENvbnRleHRNYXBWYWx1ZSwgaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlIH0gZnJvbSBcIi4vaG92ZXJlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB7IGFjdGlvbiwgYXV0b3J1biwgY29tcGFyZXIsIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBpc0RlZmluZWQsIHR5cGUgU2luZ2xlT3JNYW55IH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlQ29udGV4dE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBJbiBtaWxsaXNlY29uZHNcbiAgICovXG4gIHJlYWRvbmx5IGRlbGF5PzogbnVtYmVyO1xuICByZWFkb25seSBvbkhvdmVyPzogVm9pZEZ1bmN0aW9uO1xuICByZWFkb25seSBvblVuaG92ZXI/OiBWb2lkRnVuY3Rpb247XG59O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVDb250ZXh0PEhvdmVyZWRJdGVtPiA9IHtcbiAgcmVhZG9ubHkgaG92ZXJhYmxlOiAoaXRlbTogSG92ZXJlZEl0ZW0sIG9wdGlvbnM/OiBIb3ZlcmFibGVDb250ZXh0T3B0aW9ucykgPT4gJEhvdmVyYWJsZVByb3BzPEhvdmVyZWRJdGVtPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgJEhvdmVyYWJsZVByb3BzPFRJdGVtID0gdW5rbm93bj4ge1xuICByZWFkb25seSBjb250ZXh0OiBvYmplY3Q7XG4gIHJlYWRvbmx5IGl0ZW06IFRJdGVtO1xuICByZWFkb25seSBvcHRpb25zOiBSZXF1aXJlZDxIb3ZlcmFibGVDb250ZXh0T3B0aW9ucz47XG59XG5cbmV4cG9ydCB0eXBlIEhvdmVyYWJsZVBsdWdpblByb3BzPFRFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+ID0ge1xuICByZWFkb25seSAkaG92ZXJhYmxlPzogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVQcm9wcz47XG4gIG9uTW91c2VFbnRlcj86IFJlYWN0LkhUTUxQcm9wczxURWxlbWVudD5bXCJvbk1vdXNlRW50ZXJcIl07XG4gIG9uTW91c2VMZWF2ZT86IFJlYWN0LkhUTUxQcm9wczxURWxlbWVudD5bXCJvbk1vdXNlTGVhdmVcIl07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0SG92ZXJhYmxlQ29udGV4dCA9IDxIb3ZlcmVkSXRlbSw+KCk6IEhvdmVyYWJsZUNvbnRleHQ8SG92ZXJlZEl0ZW0+ID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBob3ZlcmFibGU6IChpdGVtOiBIb3ZlcmVkSXRlbSwgeyBkZWxheSA9IDAsIG9uSG92ZXIgPSBub29wLCBvblVuaG92ZXIgPSBub29wIH06IEhvdmVyYWJsZUNvbnRleHRPcHRpb25zID0ge30pID0+ICh7XG4gICAgICBjb250ZXh0LFxuICAgICAgaXRlbSxcbiAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgZGVsYXksXG4gICAgICAgIG9uSG92ZXIsXG4gICAgICAgIG9uVW5ob3ZlcixcbiAgICAgIH0sXG4gICAgfSksXG4gIH07XG5cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVQbHVnaW48VCBleHRlbmRzIEhUTUxFbGVtZW50PiA9IFJldHVyblR5cGU8dHlwZW9mIGhvdmVyYWJsZVBsdWdpbjxUPj47XG5cbnR5cGUgSG92ZXJhYmxlV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBob3ZlcmFibGU6IFNpbmdsZU9yTWFueTwkSG92ZXJhYmxlUHJvcHM+O1xuICByZWFkb25seSBvbk1vdXNlRW50ZXI/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MRWxlbWVudD47XG4gIHJlYWRvbmx5IG9uTW91c2VMZWF2ZT86IFJlYWN0Lk1vdXNlRXZlbnRIYW5kbGVyPEhUTUxFbGVtZW50PjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBIb3ZlcmFibGVXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgaG92ZXJhYmxlLFxuICBvbk1vdXNlRW50ZXIsXG4gIG9uTW91c2VMZWF2ZSxcbiAgY29udHJpYnV0ZVByb3BzLFxuICBjaGlsZHJlbixcbn06IEhvdmVyYWJsZVdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvciA9IHVzZVN5bmNJbmplY3QoaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlKTtcbiAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IHVzZVN5bmNJbmplY3QoaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuKTtcbiAgY29uc3QgaWQgPSB1c2VJZCgpO1xuXG4gIGNvbnN0IGhvdmVyYWJsZVByb3BzUmVmID0gdXNlUmVmKFxuICAgIG9ic2VydmFibGUubWFwKHRvQ29udGV4dE1hcChob3ZlcmFibGUpLCB7IGRlZXA6IGZhbHNlLCBlcXVhbHM6IGNvbXBhcmVyLnN0cnVjdHVyYWwgfSksXG4gICk7XG5cbiAgdXNlRWZmZWN0KFxuICAgIGFjdGlvbigoKSA9PiB7XG4gICAgICBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LnJlcGxhY2UodG9Db250ZXh0TWFwKGhvdmVyYWJsZSkpO1xuICAgIH0pLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXRlbUJ5Q29udGV4dCA9IG5ldyBNYXA8b2JqZWN0LCB1bmtub3duPigpO1xuXG4gICAgcmV0dXJuIGF1dG9ydW4oKCkgPT4ge1xuICAgICAgZm9yIChjb25zdCBbY29udGV4dCwgeyBpdGVtLCBvbkhvdmVyLCBvblVuaG92ZXIgfV0gb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudCkge1xuICAgICAgICBjb25zdCBob3ZlcmVkSXRlbSA9IGl0ZW1CZWluZ0hvdmVyZWQoY29udGV4dCBhcyBIb3ZlcmFibGVDb250ZXh0PHVua25vd24+KS5nZXQoKTtcbiAgICAgICAgY29uc3QgcHJldmlvdXNJdGVtID0gaXRlbUJ5Q29udGV4dC5nZXQoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKGhvdmVyZWRJdGVtID09PSBpdGVtKSB7XG4gICAgICAgICAgb25Ib3ZlcigpO1xuICAgICAgICB9IGVsc2UgaWYgKHByZXZpb3VzSXRlbSA9PT0gaXRlbSkge1xuICAgICAgICAgIG9uVW5ob3ZlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgaXRlbUJ5Q29udGV4dC5zZXQoY29udGV4dCwgaG92ZXJlZEl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbaXRlbUJlaW5nSG92ZXJlZF0pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgYWN0aW9uKCgpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoY29udGV4dCkuZGVsZXRlKGlkKTtcbiAgICAgICAgfVxuICAgICAgfSksXG4gICAgW2hvdmVySXRlbVN0YXRlRm9yLCBpZF0sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlTW91c2VFbnRlciA9IHVzZUNhbGxiYWNrKFxuICAgIGFjdGlvbigoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbk1vdXNlRW50ZXI/LihldmVudCk7XG5cbiAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgIGZvciAoY29uc3QgY29udGV4dCBvZiBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LmtleXMoKSkge1xuICAgICAgICBob3Zlckl0ZW1TdGF0ZUZvcihjb250ZXh0KS5zZXQoaWQsIHtcbiAgICAgICAgICBob3ZlcmVkQXQ6IG9ic2VydmFibGUuYm94KGhvdmVyZWRBdCwgeyBkZWVwOiBmYWxzZSB9KSxcbiAgICAgICAgICBnZXRQcm9wczogKCkgPT4gaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5nZXQoY29udGV4dCksXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pLFxuICAgIFtdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZU1vdXNlTGVhdmUgPSB1c2VDYWxsYmFjayhcbiAgICBhY3Rpb24oKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Nb3VzZUxlYXZlPy4oZXZlbnQpO1xuXG4gICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgY29uc3QgaG92ZXJlZFN0YXRlID0gaG92ZXJJdGVtU3RhdGVGb3IoY29udGV4dCk7XG5cbiAgICAgICAgaG92ZXJlZFN0YXRlLmRlbGV0ZShpZCk7XG4gICAgICAgIGhvdmVyZWRTdGF0ZS5mb3JFYWNoKChzdGF0ZSkgPT4gc3RhdGUuaG92ZXJlZEF0LnNldChob3ZlcmVkQXQpKTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBbXSxcbiAgKTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIG9uTW91c2VFbnRlcjogaGFuZGxlTW91c2VFbnRlcixcbiAgICBvbk1vdXNlTGVhdmU6IGhhbmRsZU1vdXNlTGVhdmUsXG4gIH0pO1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gaG92ZXJhYmxlUGx1Z2luPFRFbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEhvdmVyYWJsZVBsdWdpblByb3BzPFRFbGVtZW50Pj4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkaG92ZXJhYmxlLCBvbk1vdXNlRW50ZXIsIG9uTW91c2VMZWF2ZSB9ID0gcHJvcHM7XG5cbiAgICBpZiAoJGhvdmVyYWJsZSA9PT0gdW5kZWZpbmVkIHx8IChBcnJheS5pc0FycmF5KCRob3ZlcmFibGUpICYmICRob3ZlcmFibGUubGVuZ3RoID09PSAwKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJGhvdmVyYWJsZTogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGhvdmVyYWJsZTogdW5kZWZpbmVkLFxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBIb3ZlcmFibGVXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIGhvdmVyYWJsZTogJGhvdmVyYWJsZSxcbiAgICAgICAgICBvbk1vdXNlRW50ZXIsXG4gICAgICAgICAgb25Nb3VzZUxlYXZlLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcbn1cblxuY29uc3QgdG9Db250ZXh0TWFwID0gKHByb3BzOiBTaW5nbGVPck1hbnk8JEhvdmVyYWJsZVByb3BzPHVua25vd24+PiB8IHVuZGVmaW5lZCkgPT4ge1xuICBjb25zdCBpdGVtcyA9IFtwcm9wc10uZmxhdCgpLmZpbHRlcihpc0RlZmluZWQpO1xuICBjb25zdCByZXN1bHRzOiBbb2JqZWN0LCBDb250ZXh0TWFwVmFsdWVdW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHsgY29udGV4dCwgaXRlbSwgb3B0aW9ucyB9IG9mIGl0ZW1zKSB7XG4gICAgcmVzdWx0cy5wdXNoKFtjb250ZXh0LCB7IGl0ZW0sIC4uLm9wdGlvbnMgfV0pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdHM7XG59O1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyLCBnZXRJbmplY3Rpb25Ub2tlbjIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBJQ29tcHV0ZWRWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBob3ZlcmVkSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEhvdmVyYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IGNvbXB1dGVkTm93SW5qZWN0YWJsZSB9IGZyb20gXCIuL2NvbXB1dGVkLW5vdy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIEl0ZW1CZWluZ0hvdmVyZWQgPSA8VD4oaG92ZXJhYmxlQ29udGV4dDogSG92ZXJhYmxlQ29udGV4dDxUPikgPT4gSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBJdGVtQmVpbmdIb3ZlcmVkIH0+KHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1ob3ZlcmVkXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IHByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwicHJpdmF0ZS1pdGVtLWJlaW5nLWhvdmVyZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0SG92ZXJlZEl0ZW1TdGF0ZSA9IGRpLmluamVjdChob3ZlcmVkSXRlbVN0YXRlSW5qZWN0YWJsZSk7XG4gICAgY29uc3QgZ2V0Q29tcHV0ZWROb3cgPSBkaS5pbmplY3QoY29tcHV0ZWROb3dJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoY29udGV4dDogb2JqZWN0KSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkSXRlbVN0YXRlID0gZ2V0SG92ZXJlZEl0ZW1TdGF0ZShjb250ZXh0KTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkTm93ID0gZ2V0Q29tcHV0ZWROb3coMSk7XG5cbiAgICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiB7XG4gICAgICAgIGNvbnN0IHRvcEl0ZW0gPSBbLi4uaG92ZXJlZEl0ZW1TdGF0ZS52YWx1ZXMoKV0uYXQoLTEpO1xuICAgICAgICBjb25zdCBwcm9wcyA9IHRvcEl0ZW0/LmdldFByb3BzKCk7XG5cbiAgICAgICAgaWYgKCF0b3BJdGVtIHx8ICFwcm9wcykge1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aGVuQ29uc2lkZXJlZEhvdmVyZWQgPSB0b3BJdGVtLmhvdmVyZWRBdC5nZXQoKSArIHByb3BzLmRlbGF5O1xuICAgICAgICBjb25zdCBub3cgPSBjb21wdXRlZE5vdy5nZXQoKTtcblxuICAgICAgICByZXR1cm4gbm93ID49IHdoZW5Db25zaWRlcmVkSG92ZXJlZCA/IHByb3BzLml0ZW0gOiB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgICB9O1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1ob3ZlcmVkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldFByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkID0gZGkuaW5qZWN0KHByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKCkgPT5cbiAgICAgICg8VD4oY29udGV4dDogSG92ZXJhYmxlQ29udGV4dDxUPikgPT5cbiAgICAgICAgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0hvdmVyZWQoY29udGV4dCkgYXMgSUNvbXB1dGVkVmFsdWU8VD4pIGFzIEl0ZW1CZWluZ0hvdmVyZWQ7XG4gIH0sXG5cbiAgaW5qZWN0aW9uVG9rZW46IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IGNvbXB1dGVkLCBvYnNlcnZhYmxlLCBvbkJlY29tZU9ic2VydmVkLCBvbkJlY29tZVVub2JzZXJ2ZWQsIHJ1bkluQWN0aW9uIH0gZnJvbSBcIm1vYnhcIjtcblxuLyoqXG4gKiBBIGNsb2NrIHRoYXQgYWR2YW5jZXMgb25seSB3aGlsZSBzb21ldGhpbmcgb2JzZXJ2ZXMgaXQsIHNvIGEgaG92ZXIgZGVsYXlcbiAqIGtlZXBzIGJlaW5nIHJlLWV2YWx1YXRlZCB1bnRpbCBpdCBoYXMgZWxhcHNlZCBhbmQgY29zdHMgbm90aGluZyBvbmNlIG5vYm9keVxuICogaXMgd2F0Y2hpbmcuXG4gKlxuICogTG9jYWwgcmF0aGVyIHRoYW4gdGFrZW4gZnJvbSB0aGUgc2hhcmVkIGludGVydmFsIGZlYXR1cmU6IGEgZGVzaWduIHN5c3RlbVxuICogY2Fubm90IGRlcGVuZCBvbiBhIGZlYXR1cmUgcGFja2FnZSwgYW5kIHRoZSBob3ZlcmFibGUgcGx1Z2luIGlzIHRoZSBvbmx5XG4gKiB0aGluZyBoZXJlIHRoYXQgbmVlZHMgYSBjbG9jay4gVGhlIGludGVydmFsIGlzIHRoZSBpbnN0YW50aWF0aW9uIHBhcmFtZXRlcixcbiAqIHNvIHYyIGtleXMgb25lIGNsb2NrIHBlciBpbnRlcnZhbC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvbXB1dGVkTm93SW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiY29tcHV0ZWQtbm93XCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IChpbnRlcnZhbE1zOiBudW1iZXIpID0+IHtcbiAgICBjb25zdCBub3cgPSBvYnNlcnZhYmxlLmJveChEYXRlLm5vdygpKTtcblxuICAgIGxldCBoYW5kbGU6IFJldHVyblR5cGU8dHlwZW9mIHNldEludGVydmFsPiB8IHVuZGVmaW5lZDtcblxuICAgIG9uQmVjb21lT2JzZXJ2ZWQobm93LCAoKSA9PiB7XG4gICAgICBydW5JbkFjdGlvbigoKSA9PiBub3cuc2V0KERhdGUubm93KCkpKTtcblxuICAgICAgaGFuZGxlID0gc2V0SW50ZXJ2YWwoKCkgPT4gcnVuSW5BY3Rpb24oKCkgPT4gbm93LnNldChEYXRlLm5vdygpKSksIGludGVydmFsTXMpO1xuICAgIH0pO1xuXG4gICAgb25CZWNvbWVVbm9ic2VydmVkKG5vdywgKCkgPT4ge1xuICAgICAgaWYgKGhhbmRsZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoaGFuZGxlKTtcbiAgICAgIH1cblxuICAgICAgaGFuZGxlID0gdW5kZWZpbmVkO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIGNvbXB1dGVkKCgpID0+IG5vdy5nZXQoKSk7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgSUNvbXB1dGVkVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBEcmFnZ2FibGVDb250ZXh0IH0gZnJvbSBcIi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyBkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcblxuZXhwb3J0IHR5cGUgSXRlbUJlaW5nRHJhZ2dlZCA9IDxUPihkcmFnZ2FibGVDb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+KSA9PiBJQ29tcHV0ZWRWYWx1ZTxUIHwgdW5kZWZpbmVkPjtcblxuZXhwb3J0IGNvbnN0IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiA9IGdldEluamVjdGlvblRva2VuMjx7IHNpbmdsZUZhY3Rvcnk6ICgpID0+IEl0ZW1CZWluZ0RyYWdnZWQgfT4oe1xuICBpZDogXCJpdGVtLWJlaW5nLWRyYWdnZWRcIixcbiAgY2FyZGluYWxpdHk6IFwib25lXCIsXG59KSgpO1xuXG5leHBvcnQgY29uc3QgcHJpdmF0ZUl0ZW1CZWluZ0RyYWdnZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJwcml2YXRlLWl0ZW0tYmVpbmctZHJhZ2dlZFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXREcmFnZ2VkSXRlbVN0YXRlID0gZGkuaW5qZWN0KGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoY29udGV4dDogRHJhZ2dhYmxlQ29udGV4dDxhbnk+KSA9PiBjb21wdXRlZCgoKSA9PiBnZXREcmFnZ2VkSXRlbVN0YXRlKGNvbnRleHQpLmdldCgpKTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nRHJhZ2dlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcIml0ZW0tYmVpbmctZHJhZ2dlZFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXRQcml2YXRlSXRlbUJlaW5nRHJhZ2dlZCA9IGRpLmluamVjdChwcml2YXRlSXRlbUJlaW5nRHJhZ2dlZEluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICAoPFQ+KGNvbnRleHQ6IERyYWdnYWJsZUNvbnRleHQ8VD4pID0+XG4gICAgICAgIGdldFByaXZhdGVJdGVtQmVpbmdEcmFnZ2VkKGNvbnRleHQpIGFzIElDb21wdXRlZFZhbHVlPFQ+KSBhcyBJdGVtQmVpbmdEcmFnZ2VkO1xuICB9LFxuXG4gIGluamVjdGlvblRva2VuOiBpdGVtQmVpbmdEcmFnZ2VkSW5qZWN0aW9uVG9rZW4sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB0eXBlIHsgRHJhZ2dhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuLy8gVGhlIGNvbnRleHQgaXMgdGhlIGluc3RhbnRpYXRpb24gcGFyYW1ldGVyLCBzbyB2MiBrZXlzIG9uZSBzdGF0ZSBib3ggcGVyXG4vLyBjb250ZXh0IGlkZW50aXR5IFx1MjAxNCB3aGF0IHRoZSBrZXllZFNpbmdsZXRvbiB1c2VkIHRvIHNwZWxsIG91dC5cbmV4cG9ydCBjb25zdCBkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiZHJhZ2dlZC1pdGVtLXN0YXRlXCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IChfY29udGV4dDogRHJhZ2dhYmxlQ29udGV4dDxhbnk+KSA9PiBvYnNlcnZhYmxlLmJveCh1bmRlZmluZWQsIHsgZGVlcDogZmFsc2UgfSksXG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzLCB0eXBlIENvbnRyaWJ1dGVSZWYgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgSG92ZXJhYmxlUGx1Z2luIH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IGdldEhvdmVyYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlIH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9ob3ZlcmVkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlSWQsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHRvb2x0aXBEZWxheUluamVjdGFibGUgfSBmcm9tIFwiLi90b29sdGlwLWRlbGF5L3Rvb2x0aXAtZGVsYXkuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi90b29sdGlwLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IFBsYWNlbWVudCB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBhdXRvVXBkYXRlLCBmbGlwLCBvZmZzZXQsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgdHlwZSB7IFJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgeyBub29wLCB0eXBlIE1heWJlQXN5bmNWb2lkRnVuY3Rpb24gfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgTWluaW1hbERpdiwgdHlwZSBNaW5pbWFsRGl2UHJvcHMgfSBmcm9tIFwiLi4vLi4vZWxlbWVudHMvbWluaW1hbC1kaXZcIjtcbmltcG9ydCB7IGFjdGlvbiwgYXV0b3J1biwgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5cbnR5cGUgVG9vbHRpcENvbnRlbnRQcm9wczxQcm9wcyBleHRlbmRzIG9iamVjdD4gPVxuICB8IHtcbiAgICAgIC8qKiBQbGFpbi10ZXh0IGNvbnRlbnQgb2YgdGhlIHRvb2x0aXAuIE11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoIGBDb250ZW50YC4gKi9cbiAgICAgIHJlYWRvbmx5IGNvbnRlbnRUZXh0OiBzdHJpbmc7XG4gICAgICByZWFkb25seSBDb250ZW50PzogdW5kZWZpbmVkO1xuICAgICAgcmVhZG9ubHkgY29udGVudFByb3BzPzogdW5kZWZpbmVkO1xuICAgIH1cbiAgfCB7XG4gICAgICByZWFkb25seSBjb250ZW50VGV4dD86IHVuZGVmaW5lZDtcbiAgICAgIC8qKlxuICAgICAgICogVGhlIGNvbXBvbmVudCByZW5kZXJlZCBhcyB0aGUgY29udGVudCBvZiB0aGUgdG9vbHRpcC4gTXVzdCBoYXZlIGEgc3RhYmxlXG4gICAgICAgKiBpZGVudGl0eSAobW9kdWxlIHNjb3BlKSBcdTIwMTQgZGF0YSBmbG93cyBpbiB0aHJvdWdoIGBjb250ZW50UHJvcHNgLCBuZXZlclxuICAgICAgICogdGhyb3VnaCBjbG9zdXJlIGNhcHR1cmUuXG4gICAgICAgKi9cbiAgICAgIHJlYWRvbmx5IENvbnRlbnQ6IFJlYWN0LkNvbXBvbmVudFR5cGU8UHJvcHM+O1xuICAgICAgLyoqIFRoZSBwcm9wcyB0aGUgdG9vbHRpcCBwYXNzZXMgdG8gYENvbnRlbnRgIHdoZW4gcmVuZGVyaW5nIGl0LiAqL1xuICAgICAgcmVhZG9ubHkgY29udGVudFByb3BzPzogUHJvcHM7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgJFRvb2x0aXBQcm9wczxQcm9wcyBleHRlbmRzIG9iamVjdCA9IFJlY29yZDxuZXZlciwgbmV2ZXI+PiA9IHtcbiAgcmVhZG9ubHkgcG9zaXRpb24/OiBQbGFjZW1lbnQ7XG4gIHJlYWRvbmx5IG9uVG9vbHRpcFNob3duPzogTWF5YmVBc3luY1ZvaWRGdW5jdGlvbjtcbn0gJiBUb29sdGlwQ29udGVudFByb3BzPFByb3BzPjtcblxuLyoqXG4gKiBUeXBlLWNoZWNrcyB0aGUgcGFpcmluZyBvZiBgQ29udGVudGAgYW5kIGBjb250ZW50UHJvcHNgIG9mIGFuIG9iamVjdC1mb3JtXG4gKiBgJHRvb2x0aXBgOiBgY29udGVudFByb3BzYCBpcyByZXF1aXJlZCB0byBiZSB0aGUgcHJvcHMgb2YgYENvbnRlbnRgLCBhbmQgaXRcbiAqIGlzIHJlcXVpcmVkIHRvIGJlIHByZXNlbnQgd2hlbiBgQ29udGVudGAgaGFzIHJlcXVpcmVkIHByb3BzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFByb3BzKHRvb2x0aXBQcm9wczogJFRvb2x0aXBQcm9wcyk6ICRUb29sdGlwUHJvcHM8YW55PjtcbmV4cG9ydCBmdW5jdGlvbiBnZXRUb29sdGlwUHJvcHM8UHJvcHMgZXh0ZW5kcyBvYmplY3Q+KFxuICB0b29sdGlwUHJvcHM6ICRUb29sdGlwUHJvcHM8UHJvcHM+ICYgeyByZWFkb25seSBjb250ZW50UHJvcHM6IFByb3BzIH0sXG4pOiAkVG9vbHRpcFByb3BzPGFueT47XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFByb3BzKHRvb2x0aXBQcm9wczogJFRvb2x0aXBQcm9wczxhbnk+KTogJFRvb2x0aXBQcm9wczxhbnk+IHtcbiAgcmV0dXJuIHRvb2x0aXBQcm9wcztcbn1cblxuZXhwb3J0IHR5cGUgVG9vbHRpcFBsdWdpblByb3BzID0ge1xuICAvKiogTnVsbGlzaCBtZWFucyBubyB0b29sdGlwLCBzbyBjb25kaXRpb25hbCBzb3VyY2VzIChgc3RyaW5nIHwgbnVsbGApIHBhc3MgdGhyb3VnaCBhcy1pcy4gKi9cbiAgJHRvb2x0aXA/OiBzdHJpbmcgfCAkVG9vbHRpcFByb3BzPGFueT4gfCBudWxsO1xufTtcblxuLyoqXG4gKiBBIHRvb2x0aXAgb2Ygbm90aGluZzogdGhlIGVsZW1lbnQgdGFrZXMgdGhlIGhvdmVyLCBzbyBubyBlbmNsb3NpbmcgZWxlbWVudCBzaG93cyBpdHMgdG9vbHRpcFxuICogd2hpbGUgdGhlIHBvaW50ZXIgaXMgb3ZlciB0aGlzIG9uZSwgYW5kIHNob3dzIG5vdGhpbmcgb2YgaXRzIG93bi4gTnVsbGlzaCBgJHRvb2x0aXBgIGxlYXZlcyB0aGVcbiAqIGVuY2xvc2luZyB0b29sdGlwIGFsb25lIGluc3RlYWQgXHUyMDE0IHVzZSB0aGlzIHdoZXJlIGFuIGVsZW1lbnQgbXVzdCBub3QgYmUgZGVzY3JpYmVkIGJ5IHdoYXRldmVyXG4gKiBlbmNsb3NlcyBpdCwgYSBwYW5lbCBvcGVuZWQgZnJvbSBhIHJvdyB3aXRoIGEgdG9vbHRpcCBiZWluZyB0aGUgY2FzZSB0aGF0IG5lZWRzIGl0OiBhIHRvb2x0aXBcbiAqIGdvZXMgaW50byB0aGUgdG9wIGxheWVyLCBzbyBpdCB3b3VsZCBwYWludCBvdmVyIHdoYXQgdGhlIHBhbmVsIGlzIHRoZXJlIGZvci5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiA8TGkgJHRvb2x0aXA9e3N1cHByZXNzVG9vbHRpcH0+XG4gKiAgIDxTZXR0aW5ncyAvPlxuICogPC9MaT5cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3Qgc3VwcHJlc3NUb29sdGlwOiAkVG9vbHRpcFByb3BzID0geyBjb250ZW50VGV4dDogXCJcIiB9O1xuXG5jb25zdCBob3ZlcmFibGVUb29sdGlwQ29udGV4dCA9IGdldEhvdmVyYWJsZUNvbnRleHQ8SFRNTEVsZW1lbnQgfCBudWxsPigpO1xuXG5leHBvcnQgY29uc3QgU3R5bGVkVG9vbHRpcENvbnRhaW5lciA9IChwcm9wczogTWluaW1hbERpdlByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGNsYXNzTmFtZSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgcmV0dXJuIChcbiAgICA8TWluaW1hbERpdlxuICAgICAgJHBhZGRpbmdcbiAgICAgICRiYWNrZ3JvdW5kQ29sb3I9XCJiYWNrZ3JvdW5kU2Vjb25kYXJ5XCJcbiAgICAgICRib3JkZXI9e3sgcmFkaXVzOiB0cnVlIH19XG4gICAgICAkZm9udD17eyBzaXplOiBcInNcIiB9fVxuICAgICAgJGJveFNoYWRvd1xuICAgICAgJG5vUG9pbnRlckV2ZW50c1xuICAgICAgJGFic29sdXRlXG4gICAgICAkY2xhc3NOYW1lPXtbc3R5bGVzLnRvb2x0aXAsICRjbGFzc05hbWVdfVxuICAgICAgZGF0YS10b29sdGlwLWNvbnRhaW5lci10ZXN0XG4gICAgICB7Li4ucmVzdH1cbiAgICAvPlxuICApO1xufTtcblxudHlwZSBGbG9hdGluZ1N0eWxlZFRvb2x0aXBDb250YWluZXJQcm9wcyA9IHtcbiAgY29udGVudDogUmVhY3QuUmVhY3ROb2RlO1xuICBwb3NpdGlvbjogUGxhY2VtZW50O1xuICByZWZlcmVuY2U6IEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgb25Ub29sdGlwU2hvd246IFZvaWRGdW5jdGlvbjtcbn07XG5cbnR5cGUgUG9wb3ZlckNhcGFibGUgPSBIVE1MRWxlbWVudCAmIHsgc2hvd1BvcG92ZXI6IFZvaWRGdW5jdGlvbjsgaGlkZVBvcG92ZXI6IFZvaWRGdW5jdGlvbiB9O1xuXG5jb25zdCBpc1BvcG92ZXJDYXBhYmxlID0gKGVsZW1lbnQ6IEhUTUxFbGVtZW50KTogZWxlbWVudCBpcyBQb3BvdmVyQ2FwYWJsZSA9PlxuICB0eXBlb2YgKGVsZW1lbnQgYXMgUGFydGlhbDxQb3BvdmVyQ2FwYWJsZT4pLnNob3dQb3BvdmVyID09PSBcImZ1bmN0aW9uXCI7XG5cbmNvbnN0IEZsb2F0aW5nU3R5bGVkVG9vbHRpcENvbnRhaW5lciA9IChwcm9wczogRmxvYXRpbmdTdHlsZWRUb29sdGlwQ29udGFpbmVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjb250ZW50LCBwb3NpdGlvbiwgcmVmZXJlbmNlLCBvblRvb2x0aXBTaG93biB9ID0gcHJvcHM7XG4gIGNvbnN0IFtmbG9hdGluZywgc2V0RmxvYXRpbmddID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogcG9zaXRpb24sXG4gICAgbWlkZGxld2FyZTogW2ZsaXAoKSwgb2Zmc2V0KDgpLCBzaGlmdCgpXSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgICBlbGVtZW50czoge1xuICAgICAgZmxvYXRpbmcsXG4gICAgICByZWZlcmVuY2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogd2UgZG9uJ3Qgd2FudCB0byBjYWxsIG9uVG9vbHRpcFNob3duIGV2ZXJ5IHRpbWUgaXQgdXBkYXRlcyB3aGlsZSB0aGUgdG9vbHRpcCBpcyBiZWluZyBzaG93XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdm9pZCBvblRvb2x0aXBTaG93bigpO1xuICB9LCBbXSk7XG5cbiAgLy8gSW50byB0aGUgdG9wIGxheWVyLCB3aGVyZSBhIGRyb3AtZG93biBtZW51IGFscmVhZHkgcHV0cyBpdHNlbGY6IG5vIHotaW5kZXggY2FuXG4gIC8vIHBhaW50IG92ZXIgYSBwb3BvdmVyLCBzbyBhIHRvb2x0aXAgYW55d2hlcmUgbmVhciBhbiBvcGVuIG1lbnUgd291bGQgYmUgaGlkZGVuXG4gIC8vIGJlaGluZCBpdC4gU2hvd24gYWZ0ZXIgdGhlIG1lbnUgb3BlbmVkLCBzbyBpdCBsYW5kcyBhYm92ZSBpdC5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWZsb2F0aW5nIHx8ICFpc1BvcG92ZXJDYXBhYmxlKGZsb2F0aW5nKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZsb2F0aW5nLnNob3dQb3BvdmVyKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGZsb2F0aW5nLmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGZsb2F0aW5nLmhpZGVQb3BvdmVyKCk7XG4gICAgICB9XG4gICAgfTtcbiAgfSwgW2Zsb2F0aW5nXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkVG9vbHRpcENvbnRhaW5lciAkcmVmPXtzZXRGbG9hdGluZ30gcG9wb3Zlcj1cIm1hbnVhbFwiIHN0eWxlPXtmbG9hdGluZ1N0eWxlc30+XG4gICAgICB7Y29udGVudH1cbiAgICA8L1N0eWxlZFRvb2x0aXBDb250YWluZXI+XG4gICk7XG59O1xuXG5leHBvcnQgdHlwZSBUb29sdGlwUGx1Z2luPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4gPSBSZXR1cm5UeXBlPHR5cGVvZiB0b29sdGlwUGx1Z2luPFQ+PjtcblxudHlwZSBOb3JtYWxpemVkVG9vbHRpcFByb3BzID0ge1xuICByZWFkb25seSBjb250ZW50VGV4dD86IHN0cmluZztcbiAgcmVhZG9ubHkgQ29udGVudD86IFJlYWN0LkNvbXBvbmVudFR5cGU8YW55PjtcbiAgcmVhZG9ubHkgY29udGVudFByb3BzPzogYW55O1xuICByZWFkb25seSBwb3NpdGlvbjogUGxhY2VtZW50O1xuICByZWFkb25seSBvblRvb2x0aXBTaG93bjogTWF5YmVBc3luY1ZvaWRGdW5jdGlvbjtcbn07XG5cbnR5cGUgVG9vbHRpcFdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgdG9vbHRpcDogTm9ybWFsaXplZFRvb2x0aXBQcm9wcztcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBUb29sdGlwV3JhcHBlckNvbXBvbmVudCA9ICh7IHRvb2x0aXAsIGNvbnRyaWJ1dGVSZWYsIGNvbnRyaWJ1dGVQcm9wcywgY2hpbGRyZW4gfTogVG9vbHRpcFdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCBbcmVmZXJlbmNlLCBzZXRSZWZlcmVuY2VdID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29udHJpYnV0ZVJlZihzZXRSZWZlcmVuY2UpO1xuXG4gIGNvbnN0IHRvb2x0aXBEZWxheSA9IHVzZVN5bmNJbmplY3QodG9vbHRpcERlbGF5SW5qZWN0YWJsZSk7XG4gIGNvbnN0IGhvdmVySXRlbVN0YXRlRm9yID0gdXNlU3luY0luamVjdChob3Zlckl0ZW1TdGF0ZUZvckluamVjdGFibGUpO1xuICBjb25zdCBob3ZlcmVkSXRlbSA9IHVzZVN5bmNJbmplY3QoaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuKShob3ZlcmFibGVUb29sdGlwQ29udGV4dCk7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcblxuICBjb25zdCByZWZlcmVuY2VSZWYgPSB1c2VSZWYocmVmZXJlbmNlKTtcbiAgcmVmZXJlbmNlUmVmLmN1cnJlbnQgPSByZWZlcmVuY2U7XG5cbiAgY29uc3QgdG9vbHRpcERlbGF5UmVmID0gdXNlUmVmKHRvb2x0aXBEZWxheSk7XG4gIHRvb2x0aXBEZWxheVJlZi5jdXJyZW50ID0gdG9vbHRpcERlbGF5O1xuXG4gIGNvbnRyaWJ1dGVQcm9wcyh7XG4gICAgb25Nb3VzZUVudGVyOiBhY3Rpb24oKCkgPT4ge1xuICAgICAgY29uc3QgaG92ZXJlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpLnNldChpZCwge1xuICAgICAgICBob3ZlcmVkQXQ6IG9ic2VydmFibGUuYm94KGhvdmVyZWRBdCwgeyBkZWVwOiBmYWxzZSB9KSxcbiAgICAgICAgZ2V0UHJvcHM6ICgpID0+ICh7XG4gICAgICAgICAgaXRlbTogcmVmZXJlbmNlUmVmLmN1cnJlbnQsXG4gICAgICAgICAgZGVsYXk6IHRvb2x0aXBEZWxheVJlZi5jdXJyZW50ID8/IDAsXG4gICAgICAgICAgb25Ib3Zlcjogbm9vcCxcbiAgICAgICAgICBvblVuaG92ZXI6IG5vb3AsXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG4gICAgfSksXG5cbiAgICBvbk1vdXNlTGVhdmU6IGFjdGlvbigoKSA9PiB7XG4gICAgICBjb25zdCBob3ZlcmVkU3RhdGUgPSBob3Zlckl0ZW1TdGF0ZUZvcihob3ZlcmFibGVUb29sdGlwQ29udGV4dCk7XG4gICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICBob3ZlcmVkU3RhdGUuZGVsZXRlKGlkKTtcbiAgICAgIGhvdmVyZWRTdGF0ZS5mb3JFYWNoKChzdGF0ZSkgPT4gc3RhdGUuaG92ZXJlZEF0LnNldChob3ZlcmVkQXQpKTtcbiAgICB9KSxcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KFxuICAgICgpID0+XG4gICAgICBhY3Rpb24oKCkgPT4ge1xuICAgICAgICBob3Zlckl0ZW1TdGF0ZUZvcihob3ZlcmFibGVUb29sdGlwQ29udGV4dCkuZGVsZXRlKGlkKTtcbiAgICAgIH0pLFxuICAgIFtob3Zlckl0ZW1TdGF0ZUZvciwgaWRdLFxuICApO1xuXG4gIGNvbnN0IFtob3ZlcmVkLCBzZXRIb3ZlcmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiBhdXRvcnVuKCgpID0+IHtcbiAgICAgIGNvbnN0IGlzSG92ZXJlZCA9IGhvdmVyZWRJdGVtLmdldCgpID09PSByZWZlcmVuY2VSZWYuY3VycmVudDtcbiAgICAgIHNldEhvdmVyZWQoaXNIb3ZlcmVkKTtcbiAgICB9KTtcbiAgfSwgW2hvdmVyZWRJdGVtXSk7XG5cbiAgY29uc3QgeyBjb250ZW50VGV4dCwgQ29udGVudCwgY29udGVudFByb3BzLCBwb3NpdGlvbiwgb25Ub29sdGlwU2hvd24gfSA9IHRvb2x0aXA7XG4gIGNvbnN0IGNvbnRlbnQgPSBob3ZlcmVkID8gQ29udGVudCA9PT0gdW5kZWZpbmVkID8gY29udGVudFRleHQgOiA8Q29udGVudCB7Li4uY29udGVudFByb3BzfSAvPiA6IHVuZGVmaW5lZDtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7Y29udGVudFxuICAgICAgICA/IGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICAgIDxGbG9hdGluZ1N0eWxlZFRvb2x0aXBDb250YWluZXIgey4uLnsgY29udGVudCwgcG9zaXRpb24sIG9uVG9vbHRpcFNob3duLCByZWZlcmVuY2UgfX0gLz4sXG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgICAgIClcbiAgICAgICAgOiBudWxsfVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRvb2x0aXBQbHVnaW48VCBleHRlbmRzIEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxUb29sdGlwUGx1Z2luUHJvcHMsIFtIb3ZlcmFibGVQbHVnaW48VD4sIFJlZlBsdWdpbjxUPl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJHRvb2x0aXAgfSA9IHByb3BzIGFzIHR5cGVvZiBwcm9wcyAmIHsgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGUgfTtcblxuICAgIGlmICgkdG9vbHRpcCA9PSBudWxsKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAkdG9vbHRpcDogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCB7XG4gICAgICBjb250ZW50VGV4dCxcbiAgICAgIENvbnRlbnQsXG4gICAgICBjb250ZW50UHJvcHMsXG4gICAgICBwb3NpdGlvbiA9IFwiYm90dG9tXCIsXG4gICAgICBvblRvb2x0aXBTaG93biA9IG5vb3AsXG4gICAgfTogJFRvb2x0aXBQcm9wczxhbnk+ID0gdHlwZW9mICR0b29sdGlwID09PSBcInN0cmluZ1wiID8geyBjb250ZW50VGV4dDogJHRvb2x0aXAgfSA6ICR0b29sdGlwO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICR0b29sdGlwOiB1bmRlZmluZWQsXG4gICAgICAkd3JhcHBlcjoge1xuICAgICAgICBDb21wb25lbnQ6IFRvb2x0aXBXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczoge1xuICAgICAgICAgIHRvb2x0aXA6IHsgY29udGVudFRleHQsIENvbnRlbnQsIGNvbnRlbnRQcm9wcywgcG9zaXRpb24sIG9uVG9vbHRpcFNob3duIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IHRvb2x0aXBEZWxheUluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcInRvb2x0aXAtZGVsYXlcIixcbiAgaW5zdGFudGlhdGU6ICgpID0+ICgpOiBudW1iZXIgfCB1bmRlZmluZWQgPT4gNTAwLFxufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwidG9vbHRpcFwiOiBcInRvb2x0aXAtbW9kdWxlX190b29sdGlwX19fdmFPQXVcIlxufTsiLCAiaW1wb3J0IHsgZ2V0RWxlbWVudENvbXBvbmVudCB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgb2JzZXJ2ZXIgfSBmcm9tIFwibW9ieC1yZWFjdFwiO1xuaW1wb3J0IHsgYWJzb2x1dGVQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuaW1wb3J0IHsgcGFkZGluZ1BsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuaW1wb3J0IHsgYmFja2dyb3VuZENvbG9yUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgeyBib3JkZXJQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5pbXBvcnQgeyBmb250UGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvZm9udC9mb250XCI7XG5pbXBvcnQgeyBib3hTaGFkb3dQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9ib3gtc2hhZG93L2JveC1zaGFkb3dcIjtcbmltcG9ydCB7IG5vUG9pbnRlckV2ZW50c1BsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzXCI7XG5pbXBvcnQgeyByZWZQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9yZWYvcmVmXCI7XG5pbXBvcnQgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IHJlbGF0aXZlUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmVcIjtcbmltcG9ydCB7IGhvdmVyYWJsZVBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGVcIjtcblxuY29uc3QgcGx1Z2lucyA9IFtcbiAgcGFkZGluZ1BsdWdpbixcbiAgYm94U2hhZG93UGx1Z2luLFxuICBib3JkZXJQbHVnaW4sXG4gIGZvbnRQbHVnaW4sXG4gIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgbm9Qb2ludGVyRXZlbnRzUGx1Z2luLFxuICByZWxhdGl2ZVBsdWdpbixcbiAgYWJzb2x1dGVQbHVnaW4sXG4gIGNsYXNzTmFtZVBsdWdpbixcbl07XG5cbmNvbnN0IGdldFR5cGVkUGx1Z2lucyA9IDxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KCkgPT4gW2hvdmVyYWJsZVBsdWdpbjxUPigpLCByZWZQbHVnaW48VD4oKV07XG5cbmV4cG9ydCBjb25zdCBNaW5pbWFsRGl2ID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImRpdlwiLCAuLi5wbHVnaW5zLCAuLi5nZXRUeXBlZFBsdWdpbnM8SFRNTERpdkVsZW1lbnQ+KCkpKTtcblxuZXhwb3J0IHR5cGUgTWluaW1hbERpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIE1pbmltYWxEaXY+O1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgYWJzb2x1dGVTdHlsZXMgZnJvbSBcIi4vYWJzb2x1dGUubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgQWJzb2x1dGVQb3NpdGlvbiA9XG4gIHwgXCJhYnNvbHV0ZS1jZW50ZXItbGVmdC10by1yZWxhdGl2ZS1jZW50ZXItcmlnaHRcIlxuICB8IFwiYWJzb2x1dGUtYm90dG9tLWxlZnQtdG8tcmVsYXRpdmUtdG9wLWxlZnRcIlxuICB8IFwiYWJzb2x1dGUtYm90dG9tLXRvLXJlbGF0aXZlLWJvdHRvbVwiXG4gIHwgXCJhYnNvbHV0ZS10b3AtY2VudGVyLXRvLXJlbGF0aXZlLXRvcC1jZW50ZXJcIjtcblxuZXhwb3J0IHR5cGUgQWJzb2x1dGVQbHVnaW5Qcm9wcyA9IHsgJGFic29sdXRlPzogQWJzb2x1dGVQb3NpdGlvbiB8IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGFic29sdXRlUGx1Z2luID0gZ2V0UGx1Z2luPEFic29sdXRlUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbXG4gICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICB7XG4gICAgICBbYWJzb2x1dGVTdHlsZXMuYWJzb2x1dGVdOiAhIXByb3BzLiRhYnNvbHV0ZSxcblxuICAgICAgW2Fic29sdXRlU3R5bGVzW2BhYnNvbHV0ZS0tJHtwcm9wcy4kYWJzb2x1dGV9YF1dOiB0eXBlb2YgcHJvcHMuJGFic29sdXRlID09PSBcInN0cmluZ1wiLFxuICAgIH0sXG4gIF0sXG5cbiAgJGFic29sdXRlOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvYWJzb2x1dGUvYWJzb2x1dGUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJhYnNvbHV0ZVwiOiBcImFic29sdXRlLW1vZHVsZV9fYWJzb2x1dGVfX19NWC0tWVwiLFxuICBcImFic29sdXRlLS1hYnNvbHV0ZS1jZW50ZXItbGVmdC10by1yZWxhdGl2ZS1jZW50ZXItcmlnaHRcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1jZW50ZXItbGVmdC10by1yZWxhdGl2ZS1jZW50ZXItcmlnaHRfX19sSjBwclwiLFxuICBcImFic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tbGVmdC10by1yZWxhdGl2ZS10b3AtbGVmdFwiOiBcImFic29sdXRlLW1vZHVsZV9fYWJzb2x1dGUtLWFic29sdXRlLWJvdHRvbS1sZWZ0LXRvLXJlbGF0aXZlLXRvcC1sZWZ0X19fM2cwc0RcIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWNlbnRlci10by1yZWxhdGl2ZS1ib3R0b20tcmlnaHRcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1jZW50ZXItY2VudGVyLXRvLXJlbGF0aXZlLWJvdHRvbS1yaWdodF9fX2dnbU84XCIsXG4gIFwiYWJzb2x1dGUtLWFic29sdXRlLWJvdHRvbS10by1yZWxhdGl2ZS1ib3R0b21cIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tdG8tcmVsYXRpdmUtYm90dG9tX19fQ2xtMG1cIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtdG9wLWNlbnRlci10by1yZWxhdGl2ZS10b3AtY2VudGVyXCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtdG9wLWNlbnRlci10by1yZWxhdGl2ZS10b3AtY2VudGVyX19fRXRreTVcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBwYWRkaW5nU3R5bGVzIGZyb20gXCIuL3BhZGRpbmcubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgRGlyZWN0aW9uYWxQYWRkaW5nID0ge1xuICB0b3A/OiBUU2hpcnRTaXplO1xuICBib3R0b20/OiBUU2hpcnRTaXplO1xuICBsZWZ0PzogVFNoaXJ0U2l6ZTtcbiAgcmlnaHQ/OiBUU2hpcnRTaXplO1xuICBob3Jpem9udGFsPzogVFNoaXJ0U2l6ZTtcbiAgdmVydGljYWw/OiBUU2hpcnRTaXplO1xufTtcblxuZXhwb3J0IHR5cGUgUGFkZGluZ1BsdWdpblByb3BzID0geyAkcGFkZGluZz86IGJvb2xlYW4gfCBEaXJlY3Rpb25hbFBhZGRpbmcgfCBUU2hpcnRTaXplIH07XG5cbmV4cG9ydCBjb25zdCBwYWRkaW5nUGx1Z2luID0gZ2V0UGx1Z2luPFBhZGRpbmdQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kcGFkZGluZykge1xuICAgIHJldHVybiB7ICRwYWRkaW5nOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHBhZGRpbmcgPSBwcm9wcy4kcGFkZGluZyA9PT0gdHJ1ZSA/IFwieHNcIiA6IHByb3BzLiRwYWRkaW5nO1xuXG4gIGlmIChpc1N0cmluZyhwYWRkaW5nKSkge1xuICAgIHJldHVybiB7XG4gICAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcGFkZGluZ1N0eWxlc1tgcGFkZGluZy0tJHtwYWRkaW5nfWBdXSxcbiAgICAgICRwYWRkaW5nOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHRvcFNpemUgPSBwYWRkaW5nLnRvcCB8fCBwYWRkaW5nLnZlcnRpY2FsO1xuICBjb25zdCBib3R0b21TaXplID0gcGFkZGluZy5ib3R0b20gfHwgcGFkZGluZy52ZXJ0aWNhbDtcbiAgY29uc3QgcmlnaHRTaXplID0gcGFkZGluZy5yaWdodCB8fCBwYWRkaW5nLmhvcml6b250YWw7XG4gIGNvbnN0IGxlZnRTaXplID0gcGFkZGluZy5sZWZ0IHx8IHBhZGRpbmcuaG9yaXpvbnRhbDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG5cbiAgICAgIHtcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX3RvcC0tJHt0b3BTaXplfWBdXTogdG9wU2l6ZSxcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX3JpZ2h0LS0ke3JpZ2h0U2l6ZX1gXV06IHJpZ2h0U2l6ZSxcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX2JvdHRvbS0tJHtib3R0b21TaXplfWBdXTogYm90dG9tU2l6ZSxcbiAgICAgICAgW3BhZGRpbmdTdHlsZXNbYHBhZGRpbmdfX2xlZnQtLSR7bGVmdFNpemV9YF1dOiBsZWZ0U2l6ZSxcbiAgICAgIH0sXG4gICAgXSxcblxuICAgICRwYWRkaW5nOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJwYWRkaW5nX190b3AtLXplcm9cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS16ZXJvX19fZ3FxZlpcIixcbiAgXCJwYWRkaW5nX190b3AtLTR4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTR4c19fX1kteTlzXCIsXG4gIFwicGFkZGluZ19fdG9wLS0zeHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS0zeHNfX19vY2M0TlwiLFxuICBcInBhZGRpbmdfX3RvcC0teHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teHhzX19fTjdCc2xcIixcbiAgXCJwYWRkaW5nX190b3AtLXhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teHNfX19MMFVERFwiLFxuICBcInBhZGRpbmdfX3RvcC0tc1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLXNfX19rbFFlMlwiLFxuICBcInBhZGRpbmdfX3RvcC0tbVwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLW1fX19jdGE1dFwiLFxuICBcInBhZGRpbmdfX3RvcC0tbFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLWxfX19MZy1wcVwiLFxuICBcInBhZGRpbmdfX3RvcC0teGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS14bF9fX1h2c3ZMXCIsXG4gIFwicGFkZGluZ19fdG9wLS14eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS14eGxfX18xa2VvZVwiLFxuICBcInBhZGRpbmdfX3RvcC0tM3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tM3hsX19fY1VQczlcIixcbiAgXCJwYWRkaW5nX190b3AtLTR4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTR4bF9fX3FpazJlXCIsXG4gIFwicGFkZGluZ19fdG9wLS01eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS01eGxfX19zOWtwUVwiLFxuICBcInBhZGRpbmdfX3RvcC0tNnhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tNnhsX19fcWMzRlpcIixcbiAgXCJwYWRkaW5nX190b3AtLTd4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTd4bF9fX3RhQy1QXCIsXG4gIFwicGFkZGluZ19fdG9wLS04eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS04eGxfX19MV2hqcVwiLFxuICBcInBhZGRpbmdfX3RvcC0tOXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tOXhsX19fTDEzY3BcIixcbiAgXCJwYWRkaW5nX190b3AtLTEweGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS0xMHhsX19fSWRlOUNcIixcbiAgXCJwYWRkaW5nX190b3AtLTExeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS0xMXhsX19fSHR0U2NcIixcbiAgXCJwYWRkaW5nX19yaWdodC0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0temVyb19fXzZ2WWJUXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTR4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tNHhzX19faGpPOERcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS0zeHNfX19NWFI3R1wiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXh4c19fX0ZuM09oXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS14c19fX2twc1FQXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXNfX183ZUJEVlwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS1tX19feEdkdHVcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tbFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tbF9fX015eWM0XCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS14bF9fXy1HR2pKXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0teHhsX19fMHlORVpcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tM3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS0zeGxfX19iYk9QQ1wiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTR4bF9fX3ZBWkVVXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tNXhsX19fcHNOaGJcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tNnhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS02eGxfX19Kd3drUlwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTd4bF9fX2dvbXc5XCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tOHhsX19fVmh2VlpcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tOXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS05eGxfX180T0JOblwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS0xMHhsX19fZU9VQTNcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tMTF4bF9fX0k3OTJnXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS16ZXJvXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0temVyb19fX0ZTOTg0XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS00eHNfX193aGkxeFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tM3hzX19fZTVya1lcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXh4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXh4c19fX3hRdlZ2XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXhzX19fb2N5aTBcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS1zX19fNkliblZcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLW1cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS1tX19fZ3hCMk1cIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS1sX19fY2JNbzdcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0teGxfX190TEFvelwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0teHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0teHhsX19fZzM1Qi1cIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTN4bF9fX0F6OGtpXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS00eGxfX19rYlMtUlwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tNXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tNXhsX19fd2psT29cIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTZ4bF9fX0lEeFJMXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS03eGxfX19IcUZtaVwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tOHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tOHhsX19fdUxOZUJcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTl4bF9fX2tYamYtXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tMTB4bF9fX1NKQ0J4XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS0xMXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tMTF4bF9fX0xSLW1zXCIsXG4gIFwicGFkZGluZ19fbGVmdC0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS16ZXJvX19fT0NUY1lcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNHhzX19fMDg5MDhcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS0zeHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tM3hzX19fZmVDMC1cIixcbiAgXCJwYWRkaW5nX19sZWZ0LS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teHhzX19feE5iMkpcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS14c19fX2RCYzZYXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tc1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS1zX19fa3NpZ3JcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLW1fX19sYm1SbFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tbF9fX2tHZ3huXCIsXG4gIFwicGFkZGluZ19fbGVmdC0teGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teGxfX19ROXBOSVwiLFxuICBcInBhZGRpbmdfX2xlZnQtLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS14eGxfX19rWDBhY1wiLFxuICBcInBhZGRpbmdfX2xlZnQtLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS0zeGxfX18zVW42YlwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTR4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS00eGxfX196bk8zblwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS01eGxfX19SVEhzUFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS02eGxfX19oNUJFQVwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTd4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS03eGxfX19yVFpmaFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS04eGxfX19uZE11OVwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS05eGxfX19iMEdBMFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTEweGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tMTB4bF9fX1B3RFNWXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS0xMXhsX19fMkhzdkpcIixcbiAgXCJwYWRkaW5nLS16ZXJvXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXplcm9fX19od21mcFwiLFxuICBcInBhZGRpbmctLTR4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS00eHNfX19RT1VLQlwiLFxuICBcInBhZGRpbmctLTN4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0zeHNfX19SczRJdVwiLFxuICBcInBhZGRpbmctLXh4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14eHNfX19NSWRDSlwiLFxuICBcInBhZGRpbmctLXhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXhzX19fUXdoYUJcIixcbiAgXCJwYWRkaW5nLS1zXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXNfX19CTEhlLVwiLFxuICBcInBhZGRpbmctLW1cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tbV9fX1BkdFphXCIsXG4gIFwicGFkZGluZy0tbFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS1sX19fUlZETGtcIixcbiAgXCJwYWRkaW5nLS14bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14bF9fX2N1UGFOXCIsXG4gIFwicGFkZGluZy0teHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLXh4bF9fX0g3VklIXCIsXG4gIFwicGFkZGluZy0tM3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTN4bF9fX2t2aXJUXCIsXG4gIFwicGFkZGluZy0tNHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTR4bF9fX3kxN0EwXCIsXG4gIFwicGFkZGluZy0tNXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTV4bF9fXzl5bUk5XCIsXG4gIFwicGFkZGluZy0tNnhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTZ4bF9fXzJLQ21hXCIsXG4gIFwicGFkZGluZy0tN3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTd4bF9fX1NzSXhuXCIsXG4gIFwicGFkZGluZy0tOHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTh4bF9fX3NIWnBtXCIsXG4gIFwicGFkZGluZy0tOXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTl4bF9fX29WY0lnXCIsXG4gIFwicGFkZGluZy0tMTB4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0xMHhsX19faktHa25cIixcbiAgXCJwYWRkaW5nLS0xMXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLTExeGxfX19BZ0pyR1wiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGJhY2tncm91bmRDb2xvclN0eWxlcyBmcm9tIFwiLi9iYWNrZ3JvdW5kLWNvbG9yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5cbmV4cG9ydCB0eXBlIEJhY2tncm91bmRDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuZXhwb3J0IHR5cGUgQmFja2dyb3VuZENvbG9yID0gQ29sb3IgfCBCYWNrZ3JvdW5kQ29sb3JBbGlhcztcblxuZXhwb3J0IHR5cGUgJEJhY2tncm91bmRDb2xvclByb3BzID0ge1xuICBub3JtYWw/OiBCYWNrZ3JvdW5kQ29sb3I7XG4gIGhvdmVyPzogQmFja2dyb3VuZENvbG9yO1xufTtcblxuZXhwb3J0IHR5cGUgQmFja2dyb3VuZENvbG9yUGx1Z2luUHJvcHMgPSB7ICRiYWNrZ3JvdW5kQ29sb3I/OiBCYWNrZ3JvdW5kQ29sb3IgfCAkQmFja2dyb3VuZENvbG9yUHJvcHMgfTtcblxuY29uc3QgYWxpYXNUb05vbWluYWwgPSB7XG4gIGJhY2tncm91bmRQcmltYXJ5OiBcImdyZXk4MFwiLFxuICBiYWNrZ3JvdW5kU2Vjb25kYXJ5OiBcImdyZXkxMDBcIixcbiAgYmFja2dyb3VuZFByaW1hcnlEaW1tZWQ6IFwiZ3JleTgwQWxwaGE4NVwiLFxufSBhcyBjb25zdDtcblxuY29uc3QgaXNCYWNrZ3JvdW5kQ29sb3JBbGlhcyA9IChjb2xvcjogQmFja2dyb3VuZENvbG9yKTogY29sb3IgaXMgQmFja2dyb3VuZENvbG9yQWxpYXMgPT4gY29sb3IgaW4gYWxpYXNUb05vbWluYWw7XG5cbmV4cG9ydCBjb25zdCBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4gPSBnZXRQbHVnaW48QmFja2dyb3VuZENvbG9yUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGJhY2tncm91bmRDb2xvcjogY29sb3IgfSA9IHByb3BzO1xuICBjb25zdCB7IG5vcm1hbCwgaG92ZXIgfSA9IHR5cGVvZiBjb2xvciA9PT0gXCJzdHJpbmdcIiA/IHsgbm9ybWFsOiBjb2xvciB9IDogKGNvbG9yID8/IHt9KTtcblxuICBjb25zdCBub3JtYWxDb2xvciA9IG5vcm1hbCA/IChpc0JhY2tncm91bmRDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaG92ZXJDb2xvciA9IGhvdmVyID8gKGlzQmFja2dyb3VuZENvbG9yQWxpYXMoaG92ZXIpID8gYWxpYXNUb05vbWluYWxbaG92ZXJdIDogaG92ZXIpIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIG5vcm1hbENvbG9yID8gYmFja2dyb3VuZENvbG9yU3R5bGVzW2BiYWNrZ3JvdW5kQ29sb3ItLSR7bm9ybWFsQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBob3ZlckNvbG9yID8gYmFja2dyb3VuZENvbG9yU3R5bGVzW2BiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLSR7aG92ZXJDb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgICBdLFxuICAgICRiYWNrZ3JvdW5kQ29sb3I6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImJhY2tncm91bmRDb2xvci0taW5oZXJpdFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWluaGVyaXRfX19OLUR0WVwiLFxuICBcImJhY2tncm91bmRDb2xvci0td2hpdGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS13aGl0ZV9fXzE4Znh1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS10cmFuc3BhcmVudFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXRyYW5zcGFyZW50X19fVmR0LVlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkxMDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MTAwX19fUFJ6VXRcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MF9fX2FieXR1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5NjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5NjBfX19QUEFTbFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTQwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTQwX19fd0ZCYWxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkzMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXkzMF9fXy0tOE1UXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MjVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MjVfX19ZRThRZlwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTIwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTIwX19fNjAwalFcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkxMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXkxMF9fX0lTc2M5XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5NzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5NzBfX19WLVpHTFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MEFscGhhODVfX183b1RYM1wiLFxuICBcImJhY2tncm91bmRDb2xvci0tcHJpbWFyeVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXByaW1hcnlfX19PSG5yTFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tc3VjY2Vzc1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXN1Y2Nlc3NfX19XVVIzeVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tbm90aWNlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tbm90aWNlX19fbFZOUmRcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXdhcm5pbmdcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS13YXJuaW5nX19fQXJWdmxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tY3JpdGljYWxfX19wLVdiOVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1zdWNjZXNzVGludF9fXzJVUDNZXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS13YXJuaW5nVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLXdhcm5pbmdUaW50X19fcXdGMDhcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsVGludF9fX2lLLWpsXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1saW5rXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tbGlua19fX2o0Umo3XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1jb2RlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tY29kZV9fX0VtLWJKXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1pbmhlcml0XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0taW5oZXJpdF9fX215MlJxXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS13aGl0ZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdoaXRlX19fdGUtZ3BcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXRyYW5zcGFyZW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tdHJhbnNwYXJlbnRfX18xRDJJalwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTEwMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMDBfX18tSkh1MlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwX19fei04NUlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk2MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk2MF9fX2hVYlkzXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NDBfX18zQS1lNlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTMwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTMwX19fNy1DRmpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkyNVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkyNV9fX21JVDhRXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjBfX19vTUFjRFwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTEwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTEwX19fZ1IxOTNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk3MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk3MF9fX2sySktNXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5ODBBbHBoYTg1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NV9fX0Nkay0tXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1wcmltYXJ5XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tcHJpbWFyeV9fX3p0Z3pBXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tc3VjY2Vzc19fX0czMFZIXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ub3RpY2VcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ub3RpY2VfX19qV0ZjQ1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0td2FybmluZ1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdfX192bi1CS1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jcml0aWNhbF9fX3I2YlpJXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXN1Y2Nlc3NUaW50X19fODhMRGpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0td2FybmluZ1RpbnRfX19YaTYyRlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxUaW50X19fVjBxMm9cIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWxpbmtcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1saW5rX19fWDlMRnFcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNvZGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jb2RlX19fbEhDSWdcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlcldpZHRoIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQ29ybmVyU3R5bGVzLCBnZXRDb3JuZXJTdHlsZXMgfSBmcm9tIFwiLi9nZXQtY29ybmVyLXN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0U2lkZVN0eWxlcywgdHlwZSBTaWRlU3R5bGVzIH0gZnJvbSBcIi4vZ2V0LXNpZGUtc3R5bGVzXCI7XG5pbXBvcnQgeyBjb21wYWN0IH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuXG5leHBvcnQgdHlwZSBCb3JkZXJDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuZXhwb3J0IHR5cGUgQm9yZGVyQ29sb3IgPSBDb2xvciB8IEJvcmRlckNvbG9yQWxpYXM7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0geyBib3JkZXJQcmltYXJ5OiBcImdyZXk2MFwiIH0gYXMgY29uc3Q7XG5cbmNvbnN0IGlzQm9yZGVyQ29sb3JBbGlhcyA9IChjb2xvcjogQm9yZGVyQ29sb3IpOiBjb2xvciBpcyBCb3JkZXJDb2xvckFsaWFzID0+IGNvbG9yIGluIGFsaWFzVG9Ob21pbmFsO1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGhvdmVyPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogQm9yZGVyQ29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyUHJvcHMgPSB7XG4gIGNvbG9yPzogQm9yZGVyQ29sb3IgfCAkQm9yZGVyQ29sb3JQcm9wcztcbiAgd2lkdGg/OiBCb3JkZXJXaWR0aCB8IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMZWF2ZSB0aGUgbGFzdCBvZiB0aGUgZWxlbWVudCdzIHNpYmxpbmdzIHdpdGhvdXQgdGhlIGJvcmRlciwgc28gdGhhdCBhIHN0YWNrXG4gICAqIG9mIGJvcmRlcmVkIHJvd3MgcmVhZHMgYXMgcm93cyBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIHJhdGhlciB0aGFuIGZyYW1lZC5cbiAgICovXG4gIGV4Y2VwdExhc3Q/OiBib29sZWFuO1xufSAmIFNpZGVTdHlsZXMgJlxuICBDb3JuZXJTdHlsZXM7XG5cbmV4cG9ydCB0eXBlIEJvcmRlclBsdWdpblByb3BzID0geyAkYm9yZGVyPzogJEJvcmRlclByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBib3JkZXJQbHVnaW4gPSBnZXRQbHVnaW48Qm9yZGVyUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGJvcmRlcikge1xuICAgIHJldHVybiB7ICRib3JkZXI6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Q29ybmVyU3R5bGVzKHByb3BzLiRib3JkZXIpLCBnZXRCb3JkZXJTdHlsZXMocHJvcHMuJGJvcmRlcildLFxuICAgICRib3JkZXI6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRCb3JkZXJTdHlsZXMgPSAoeyB3aWR0aCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wLCBjb2xvciwgZXhjZXB0TGFzdCB9OiAkQm9yZGVyUHJvcHMpID0+IHtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSB3aWR0aCA9PT0gdHJ1ZSB8fCAod2lkdGggPT09IHVuZGVmaW5lZCAmJiBjb2xvcikgPyBcInh4c1wiIDogd2lkdGg7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZGlzYWJsZWQgfSA9XG4gICAgYm9yZGVyV2lkdGggJiYgY29sb3IgPT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5vcm1hbDogXCJib3JkZXJQcmltYXJ5XCIgYXMgY29uc3QgfVxuICAgICAgOiB0eXBlb2YgY29sb3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyB7IG5vcm1hbDogY29sb3IgfVxuICAgICAgICA6IChjb2xvciA/PyB7fSk7XG5cbiAgY29uc3Qgbm9ybWFsQ29sb3IgPSBub3JtYWwgJiYgaXNCb3JkZXJDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsO1xuICBjb25zdCBob3ZlckNvbG9yID0gaG92ZXIgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGhvdmVyKSA/IGFsaWFzVG9Ob21pbmFsW2hvdmVyXSA6IGhvdmVyO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGRpc2FibGVkKSA/IGFsaWFzVG9Ob21pbmFsW2Rpc2FibGVkXSA6IGRpc2FibGVkO1xuXG4gIGNvbnN0IHN0eWxlQ2xhc3NlcyA9IGNvbXBhY3QoW1xuICAgIGJvcmRlcldpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX3dpZHRoLS0ke2JvcmRlcldpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgIG5vcm1hbENvbG9yID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX2NvbG9yLS0ke25vcm1hbENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIGhvdmVyQ29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fY29sb3ItLSR7aG92ZXJDb2xvcn0tLWhvdmVyYF0gOiB1bmRlZmluZWQsXG4gICAgZGlzYWJsZWRDb2xvciA/IGJvcmRlclN0eWxlc1tgYm9yZGVyX19jb2xvci0tJHtkaXNhYmxlZENvbG9yfS0tZGlzYWJsZWRgXSA6IHVuZGVmaW5lZCxcbiAgICAuLi5nZXRTaWRlU3R5bGVzKHsgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wIH0pLFxuICAgIGV4Y2VwdExhc3QgPyBib3JkZXJTdHlsZXNbXCJib3JkZXItLWV4Y2VwdC1sYXN0XCJdIDogdW5kZWZpbmVkLFxuICBdKTtcblxuICByZXR1cm4gW3N0eWxlQ2xhc3Nlcywgc3R5bGVDbGFzc2VzLmxlbmd0aCA+IDAgJiYgYm9yZGVyU3R5bGVzW1wiYm9yZGVyX19zdHlsZS0tc29saWRcIl1dO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYm9yZGVyX19zdHlsZS0tc29saWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3N0eWxlLS1zb2xpZF9fXzFReTFKXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0temVyb19fXy1rN1VDXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tc19fX3ZsbXVsXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tbV9fX0VvSHZqXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLW1sX19fa3NLUGVcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fcmFkaXVzLS1sX19fLTU0bnhcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tNTBfX19FYzVjY1wiLFxuICBcImJvcmRlcl9fcmFkaXVzLS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLWZ1bGxfX19mME9rTFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS16ZXJvX19fdUxjTzJcIixcbiAgXCJib3JkZXJfX3dpZHRoLS14eHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS14eHNfX19KMHRaOVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teHNfX19VUmNrSVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS1zX19feDlOVWpcIixcbiAgXCJib3JkZXJfX3dpZHRoLS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tbV9fX0NGOENFXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLWxfX19Zb0I2NVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teGxfX19CQ0xsTlwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXh4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLXh4bF9fXy1kcmdQXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tM3hsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tM3hsX19fZHFtaUZcIixcbiAgXCJib3JkZXJfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS00eGxfX19iRUw5MFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLTV4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLTV4bF9fX3pqMVZYXCIsXG4gIFwiYm9yZGVyX19jb2xvci0taW5oZXJpdFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWluaGVyaXRfX19FMk1Tc1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0taG92ZXJfX19XeW5CUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0tZGlzYWJsZWRfX19xLXRzRVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGVfX19nVDJvZ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3Zlcl9fX1FkcFZiXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkX19faXlUWEtcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50X19fc3dhbUhcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJfX19qVVotelwiLFxuICBcImJvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZF9fX3NpRHJ5XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMDBfX192NWw4M1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0taG92ZXJfX19KMS1PUVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0tZGlzYWJsZWRfX19RaktSUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MF9fX2txNWFUXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MC0taG92ZXJfX19DcHBsVlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5ODAtLWRpc2FibGVkX19fLThQS2xcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjBfX19QOUpNSFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk2MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWhvdmVyX19fQVppY0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTYwLS1kaXNhYmxlZF9fX2djVmREXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwX19fZjZTRHdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwLS1ob3Zlcl9fX1VIZElyXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk0MC0tZGlzYWJsZWRfX180ZURrQ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMF9fX2ZxYnR1XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTMwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMC0taG92ZXJfX19WTkRTUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MzAtLWRpc2FibGVkX19fcHlKT3FcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjVfX19zblZuZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkyNS0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWhvdmVyX19fbmRyZllcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTI1LS1kaXNhYmxlZF9fX29tUEpQXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwX19fZ2JuM1pcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwLS1ob3Zlcl9fX3hSc3djXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkyMC0tZGlzYWJsZWRfX19TVmVBVFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMF9fX1pVNUdhXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMC0taG92ZXJfX19VWmgtZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MTAtLWRpc2FibGVkX19fOVotT1RcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzBfX195cjlpTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk3MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWhvdmVyX19fbDlZVGRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTcwLS1kaXNhYmxlZF9fX1N3UlFpXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODVfX182RGJkU1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0taG92ZXJfX194U2t3QVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0tZGlzYWJsZWRfX195UDRPLVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1wcmltYXJ5X19fZ2Z4Qk9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWhvdmVyX19fcHVIRHBcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWRpc2FibGVkX19fSDVGc0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc19fX1p1cmxTXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1ob3Zlcl9fX1d5LTJNXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1kaXNhYmxlZF9fX1RQM1J2XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlX19fWndRdlRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ub3RpY2UtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlLS1ob3Zlcl9fX01KUVVoXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLW5vdGljZS0tZGlzYWJsZWRfX195VnVpMlwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS13YXJuaW5nX19fTEs2QXpcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWhvdmVyX19fbUFvU0JcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWRpc2FibGVkX19fV2NBSy1cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsX19fR1RZejFcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJfX191TUZqYVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZF9fX0s5Z2w3XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludF9fX1BTUk1uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyX19fVWZKUGdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRfX19Xa09wQVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnRfX19JVFdtTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3Zlcl9fX0pjLU5uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkX19fdXF6Qm9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRfX19PUXV4dFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsVGludC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWhvdmVyX19fbFdhOURcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tY3JpdGljYWxUaW50LS1kaXNhYmxlZF9fX2xZaGg0XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWxpbmtfX19pWWVGa1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0taG92ZXJfX180eVJKUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0tZGlzYWJsZWRfX18wazlkQlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jb2RlX19fOE9zRmlcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWhvdmVyX19fWjVzNWRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWRpc2FibGVkX19fdURRWk1cIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS16ZXJvXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0temVyb19fX1ZLUnEtXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0teHhzX19fOHppN1RcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhzX19fUk5FSzJcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tc19fX2FWbjFXXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLW1fX19CNjE0alwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS1sX19fLW9lUFBcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhsX19fWkpjNklcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS14eGxfX19NbnJIelwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLTN4bF9fXzV4Sy0tXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tNHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tNHhsX19fcEVEdGNcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS01eGxfX19NRnZmaFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1pbmhlcml0X19fQ3IxbmFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS13aGl0ZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdoaXRlX19fdS11UWJcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXRyYW5zcGFyZW50X19fUHNNbXhcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwMF9fX1djOXRMXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwX19fZUhqekZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBfX190U0F0ZVwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXk0MF9fX0hpcmdmXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwX19fQkJyQlFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVfX19VSFZaWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXkyMF9fXzFsdXBQXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwX19fRTJHZlRcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBfX19EYkMyR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fa0I5LXZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1wcmltYXJ5XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tcHJpbWFyeV9fXzUxMWprXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NfX183OS11alwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLW5vdGljZV9fXy1kT0QwXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdfX19UMzVrWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tY3JpdGljYWxfX19zLXF2a1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1RpbnRfX19QYTBOR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1RpbnRfX18yZVVRVFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludF9fX0hKQW8yXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWxpbmtfX19LWUZHS1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1jb2RlX19fdktPS3dcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXplcm9fX19ybERJblwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14eHNfX18tejc5YVwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXhzX19fd1pWaGpcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXNfX19NdFlUNlwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X193aWR0aC0tbV9fX1NEOTd3XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS1sX19fcVNJMEVcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14bF9fXzA1bjAwXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXh4bF9fXy1hRXd2XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTN4bF9fX0R1MFJvXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTR4bF9fXzJaQ1hrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTV4bF9fX1NwNDhrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0X19fOXlQZUlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13aGl0ZV9fX2hJT0JkXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tdHJhbnNwYXJlbnRfX19veElOSlwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMF9fX2FhU25hXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk4MF9fXzVQVDVqXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk2MF9fX29OVy1VXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk0MF9fXzJKd2k5XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkzMF9fX1Q2aHR4XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyNV9fX1FiRlVKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyMF9fX2VzTVFNXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkxMF9fX1owUXpmXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk3MF9fX3RrekFKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fajQ1VU5cIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlfX19ISWsyQVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc19fX1JJd2FIXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLW5vdGljZV9fX3ZVTGFUXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nX19fWTJpUGlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1jcml0aWNhbF9fX1htNnRRXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1RpbnRfX19tMW52WVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXdhcm5pbmdUaW50X19fbi1oeEZcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY3JpdGljYWxUaW50X19fNFZKTjhcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWxpbmtfX19IMnJlM1wiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY29kZV9fX1VDZE0wXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXplcm9fX19QbEFCTFwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXh4c19fX1pGbS1VXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14c19fX2hEelNzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXNfX19JV3QtdVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS1tX19fZjFyLXNcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tbF9fXzBIdmwxXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14bF9fX3NTUnRzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0teHhsX19fTnVCZ0ZcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxfX19HakxZVVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLTR4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLTR4bF9fX0J2SldQXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tNXhsX19fckNlREJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0taW5oZXJpdF9fXzczZHFWXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0td2hpdGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13aGl0ZV9fX0RabWo2XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS10cmFuc3BhcmVudF9fX3FrTmdGXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMDBfX19YMnY3eFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MF9fX3RuTWo1XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwX19fVU9XMG5cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBfX19jN3VjMFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMF9fX1k4NUM0XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1X19fa3YyTm1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBfX192Ty1tSlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMF9fX0ZhLWh5XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwX19faC1Da1ZcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2lyeG9IXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tcHJpbWFyeVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXByaW1hcnlfX19KLXI1SlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzX19fZnhadlJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VfX19JSUE1UlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nX19fbHNaRy1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWNyaXRpY2FsX19fQjdMNS1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fQXN2dGNcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdUaW50X19fNE9QZk9cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRfX194MlVMUVwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1saW5rX19fUjJYRHVcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jb2RlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tY29kZV9fX0VyOWhiXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0temVyb19fXzEtRk0tXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14eHNfX19vakFhcFwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14c19fX3oyWElGXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tc19fX0RxWGJjXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbV9fXzRqUHU1XCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbF9fX2xQYVJLXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXhsX19fTWMtLVJcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXh4bF9fX0tYT1JaXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS0zeGxfX180ZllJRVwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tNHhsX19fY2RVbFdcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLTV4bF9fXzdsOUgwXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0taW5oZXJpdF9fX3FkNGtEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlX19fLXJ6czdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRfX191VVVFeFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkxMDBfX19RRGJWMlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwX19fN2hWeThcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk2MF9fX3E5VHMyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5NDBfX195SXIwSlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTMwX19faXRVVXNcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyNV9fX3o5RWdEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5MjBfX19IcXJKblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTEwX19feXRaUE5cIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk3MF9fX0VveVZXXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwQWxwaGE4NV9fXzJHSVcyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tcHJpbWFyeV9fX0lOQzh5XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tc3VjY2Vzc19fXzEyS2l1XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ub3RpY2VfX19taEpBblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdhcm5pbmdfX191VjV0V1wiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbF9fX0E2SmlPXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50X19fZ09yWWpcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRfX19ON1VjVFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tY3JpdGljYWxUaW50X19fYS1mYUdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1saW5rX19fbXdSS3dcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jb2RlX19fdUpXRkhcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS16ZXJvX19fZGxzdFZcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1zX19fdm81ZWxcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1tX19fR0lFY3RcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxfX19tRWNEdlwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWxfX19yZy1EMFwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS01MF9fX1hsbEdzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tZnVsbF9fXzVaSXY4XCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0temVyb19fX084ZEUzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tc19fX254THRMXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbV9fX1NsNVJSXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sX19fQW9RMGJcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1sX19fNTJKb2xcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBfX183LXdPR1wiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLWZ1bGxfX19MQmFQNlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS16ZXJvX19fb1FCZG1cIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tc19fX3pGSUwzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1fX19LTlNjVFwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbWxfX192dDd4MlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1sX19fazhwaWtcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLTUwX19fZjJYVHVcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tZnVsbF9fX2VIajZzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLXplcm9fX19QMVl0d1wiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1zX19fSC1sWGVcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BMZWZ0LS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tbV9fXzNMUlIwXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1tbF9fX2lndjB3XCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLWxfX18zczJDSlwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLTUwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tNTBfX193Tll3UVwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1mdWxsX19fQ2Z6LVJcIixcbiAgXCJib3JkZXItLWV4Y2VwdC1sYXN0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyLS1leGNlcHQtbGFzdF9fXzIyWXNCXCJcbn07IiwgImltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlclJhZGl1c1NpemUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcm5lclN0eWxlcyB7XG4gIHJhZGl1cz86IEJvcmRlclJhZGl1c1NpemUgfCBib29sZWFuO1xuICByYWRpdXNUb3BSaWdodD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c0JvdHRvbVJpZ2h0PzogQm9yZGVyUmFkaXVzU2l6ZTtcbiAgcmFkaXVzQm90dG9tTGVmdD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c1RvcExlZnQ/OiBCb3JkZXJSYWRpdXNTaXplO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29ybmVyU3R5bGVzID0gKHN0eWxlczogQ29ybmVyU3R5bGVzKSA9PiB7XG4gIGNvbnN0IHsgcmFkaXVzLCByYWRpdXNUb3BSaWdodCwgcmFkaXVzQm90dG9tUmlnaHQsIHJhZGl1c0JvdHRvbUxlZnQsIHJhZGl1c1RvcExlZnQgfSA9IHN0eWxlcztcblxuICBpZiAocmFkaXVzKSB7XG4gICAgY29uc3QgYm9yZGVyUmFkaXVzU2l6ZSA9IHJhZGl1cyA9PT0gdHJ1ZSA/IFwic1wiIDogcmFkaXVzO1xuXG4gICAgcmV0dXJuIGJvcmRlclJhZGl1c1NpemUgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fcmFkaXVzLS0ke2JvcmRlclJhZGl1c1NpemV9YF0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHJhZGl1c1RvcFJpZ2h0ID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJSYWRpdXNUb3BSaWdodC0tJHtyYWRpdXNUb3BSaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICByYWRpdXNCb3R0b21SaWdodCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLSR7cmFkaXVzQm90dG9tUmlnaHR9YF0gOiB1bmRlZmluZWQsXG4gICAgcmFkaXVzQm90dG9tTGVmdCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tJHtyYWRpdXNCb3R0b21MZWZ0fWBdIDogdW5kZWZpbmVkLFxuICAgIHJhZGl1c1RvcExlZnQgPyBib3JkZXJTdHlsZXNbYGJvcmRlclJhZGl1c1RvcExlZnQtLSR7cmFkaXVzVG9wTGVmdH1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG4iLCAiaW1wb3J0IGJvcmRlclN0eWxlcyBmcm9tIFwiLi9ib3JkZXIubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgQm9yZGVyU2lkZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7IGNhcGl0YWxpemUgYXMgbG9kYXNoQ2FwaXRhbGl6ZSB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaWRlU3R5bGVzIHtcbiAgdG9wPzogQm9yZGVyU2lkZTtcbiAgcmlnaHQ/OiBCb3JkZXJTaWRlO1xuICBib3R0b20/OiBCb3JkZXJTaWRlO1xuICBsZWZ0PzogQm9yZGVyU2lkZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNpZGVTdHlsZXMgPSAoc2lkZXM6IFNpZGVTdHlsZXMpID0+IFtcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwidG9wXCIsIHNpZGVzKSxcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwicmlnaHRcIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJib3R0b21cIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJsZWZ0XCIsIHNpZGVzKSxcbl07XG5cbmNvbnN0IGdldFNwZWNpZmljU2lkZVN0eWxlcyA9IChzaWRlOiBrZXlvZiBTaWRlU3R5bGVzLCBzaWRlczogU2lkZVN0eWxlcykgPT4ge1xuICBjb25zdCB7IHdpZHRoLCBjb2xvciB9ID0gc2lkZXNbc2lkZV0gPz8ge307XG4gIGNvbnN0IHNpZGVOYW1lID0gY2FwaXRhbGl6ZShzaWRlKTtcblxuICByZXR1cm4gW1xuICAgIHdpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXIke3NpZGVOYW1lfV9fd2lkdGgtLSR7d2lkdGh9YF0gOiB1bmRlZmluZWQsXG4gICAgY29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlciR7c2lkZU5hbWV9X19jb2xvci0tJHtjb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG5cbmNvbnN0IGNhcGl0YWxpemUgPSA8VCBleHRlbmRzIHN0cmluZz4odGFyZ2V0OiBUKSA9PiBsb2Rhc2hDYXBpdGFsaXplKHRhcmdldCkgYXMgQ2FwaXRhbGl6ZTxUPjtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGZvbnRTdHlsZXMgZnJvbSBcIi4vZm9udC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBGb250U2l6ZSA9IFwieHhzXCIgfCBcInhzXCIgfCBcInNcIiB8IFwibVwiIHwgXCJsXCIgfCBcInhsXCIgfCBcInh4bFwiIHwgXCIzeGxcIiB8IFwiNHhsXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRCb2xkID0gXCI2MDBcIjtcblxuZXhwb3J0IHR5cGUgRm9udExpbmVIZWlnaHQgPSBcIm5vbmVcIiB8IFwidGlnaHRcIiB8IFwibm9ybWFsXCIgfCBcImxvb3NlXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRQbHVnaW5Qcm9wcyA9IHtcbiAgJGZvbnQ/OlxuICAgIHwgYm9vbGVhblxuICAgIHwge1xuICAgICAgICBzaXplPzogRm9udFNpemU7XG4gICAgICAgIGl0YWxpYz86IGJvb2xlYW47XG4gICAgICAgIGJvbGQ/OiBib29sZWFuIHwgRm9udEJvbGQ7XG4gICAgICAgIGxpbmVIZWlnaHQ/OiBGb250TGluZUhlaWdodDtcbiAgICAgICAgZm9yY2VXcmFwPzogYm9vbGVhbjtcbiAgICAgICAgbm9XcmFwPzogYm9vbGVhbjtcbiAgICAgICAgdXBwZXJjYXNlPzogYm9vbGVhbjtcbiAgICAgICAgdW5kZXJsaW5lPzogYm9vbGVhbjtcbiAgICAgICAgdGV4dE92ZXJmbG93PzogXCJjbGlwXCIgfCBcImVsbGlwc2lzXCIgfCBcImRlZmF1bHRcIjtcbiAgICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZm9udFBsdWdpbiA9IGdldFBsdWdpbjxGb250UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGZvbnQpIHtcbiAgICByZXR1cm4geyAkZm9udDogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB7XG4gICAgc2l6ZSA9IHVuZGVmaW5lZCxcbiAgICBib2xkID0gZmFsc2UsXG4gICAgbGluZUhlaWdodCA9IHVuZGVmaW5lZCxcbiAgICBub1dyYXAgPSBmYWxzZSxcbiAgICB1cHBlcmNhc2UgPSBmYWxzZSxcbiAgICBpdGFsaWMgPSBmYWxzZSxcbiAgICBmb3JjZVdyYXAgPSBmYWxzZSxcbiAgICB1bmRlcmxpbmUgPSBmYWxzZSxcbiAgICB0ZXh0T3ZlcmZsb3cgPSBcImRlZmF1bHRcIixcbiAgfSA9IHByb3BzLiRmb250ID09PSB0cnVlID8ge30gOiBwcm9wcy4kZm9udDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgICBzaXplID8gZm9udFN0eWxlc1tgZm9udF9fc2l6ZS0tJHtzaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgYm9sZCA9PT0gdHJ1ZSA/IGZvbnRTdHlsZXNbXCJmb250LS1ib2xkXCJdIDogYm9sZCA/IGZvbnRTdHlsZXNbYGZvbnQtLXdlaWdodC0ke2JvbGR9YF0gOiB1bmRlZmluZWQsXG4gICAgICBsaW5lSGVpZ2h0ID8gZm9udFN0eWxlc1tgZm9udF9fbGluZS1oZWlnaHQtLSR7bGluZUhlaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIHRleHRPdmVyZmxvdyA9PT0gXCJkZWZhdWx0XCIgPyB1bmRlZmluZWQgOiBmb250U3R5bGVzW2Bmb250LS10ZXh0LW92ZXJmbG93LS0ke3RleHRPdmVyZmxvd31gXSxcbiAgICAgIHtcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS1uby13cmFwXCJdXTogbm9XcmFwLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLWZvcmNlLXdyYXBcIl1dOiBmb3JjZVdyYXAsXG4gICAgICAgIFtmb250U3R5bGVzW1wiZm9udC0taXRhbGljXCJdXTogaXRhbGljLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLXVwcGVyY2FzZVwiXV06IHVwcGVyY2FzZSxcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS11bmRlcmxpbmVcIl1dOiB1bmRlcmxpbmUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgJGZvbnQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ZvbnQvZm9udC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZvbnRfX3NpemUtLXh4c1wiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14eHNfX19LSjJRLVwiLFxuICBcImZvbnRfX3NpemUtLXhzXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXhzX19feEVhVTlcIixcbiAgXCJmb250X19zaXplLS1zXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXNfX19UYm5NbFwiLFxuICBcImZvbnRfX3NpemUtLW1cIjogXCJmb250LW1vZHVsZV9fZm9udF9fc2l6ZS0tbV9fX2ZESkFqXCIsXG4gIFwiZm9udF9fc2l6ZS0tbFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS1sX19fdUtjdWtcIixcbiAgXCJmb250X19zaXplLS14bFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14bF9fX1JlaG9RXCIsXG4gIFwiZm9udF9fc2l6ZS0teHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXh4bF9fX0Nnb0tQXCIsXG4gIFwiZm9udF9fc2l6ZS0tM3hsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTN4bF9fX3NDSWV6XCIsXG4gIFwiZm9udF9fc2l6ZS0tNHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTR4bF9fX0E1a3NlXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLW5vbmVcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vbmVfX18xc0k5S1wiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS10aWdodFwiOiBcImZvbnQtbW9kdWxlX19mb250X19saW5lLWhlaWdodC0tdGlnaHRfX19yLUVCOVwiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS1ub3JtYWxcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vcm1hbF9fX3JKNFZOXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLWxvb3NlXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX2xpbmUtaGVpZ2h0LS1sb29zZV9fX2RwelMtXCIsXG4gIFwiZm9udC0tYm9sZFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1ib2xkX19fYmplLWJcIixcbiAgXCJmb250LS13ZWlnaHQtNjAwXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnQtLXdlaWdodC02MDBfX19FZ2R6bVwiLFxuICBcImZvbnQtLW5vLXdyYXBcIjogXCJmb250LW1vZHVsZV9fZm9udC0tbm8td3JhcF9fX3FiUlJPXCIsXG4gIFwiZm9udC0tZm9yY2Utd3JhcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1mb3JjZS13cmFwX19fT0dDRnpcIixcbiAgXCJmb250LS11cHBlcmNhc2VcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdXBwZXJjYXNlX19fdlFYbW5cIixcbiAgXCJmb250LS1pdGFsaWNcIjogXCJmb250LW1vZHVsZV9fZm9udC0taXRhbGljX19fSkg0VFpcIixcbiAgXCJmb250LS11bmRlcmxpbmVcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdW5kZXJsaW5lX19fZDRvbkxcIixcbiAgXCJmb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc1wiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc19fX0hxZlgtXCIsXG4gIFwiZm9udC0tdGV4dC1vdmVyZmxvdy0tY2xpcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1jbGlwX19fOTZ4QjlcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYm94LXNoYWRvdy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBCb3hTaGFkb3dQbHVnaW5Qcm9wcyA9IHtcbiAgJGJveFNoYWRvdz86IGJvb2xlYW4gfCBcImVsZXZhdGVkXCIgfCBcInN1YnRsZVwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGJveFNoYWRvd1BsdWdpbiA9IGdldFBsdWdpbjxCb3hTaGFkb3dQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kYm94U2hhZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRib3hTaGFkb3c6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdmFyaWFudCA9IHByb3BzLiRib3hTaGFkb3cgPT09IHRydWUgPyBcImVsZXZhdGVkXCIgOiBwcm9wcy4kYm94U2hhZG93O1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHN0eWxlc1tgYm94LXNoYWRvdy0tJHt2YXJpYW50fWBdXSxcbiAgICAkYm94U2hhZG93OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3gtc2hhZG93L2JveC1zaGFkb3cubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJib3gtc2hhZG93LS1lbGV2YXRlZFwiOiBcImJveC1zaGFkb3ctbW9kdWxlX19ib3gtc2hhZG93LS1lbGV2YXRlZF9fX2phaDdmXCIsXG4gIFwiYm94LXNoYWRvdy0tc3VidGxlXCI6IFwiYm94LXNoYWRvdy1tb2R1bGVfX2JveC1zaGFkb3ctLXN1YnRsZV9fX1ZvNnhNXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzID0geyAkbm9Qb2ludGVyRXZlbnRzPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3Qgbm9Qb2ludGVyRXZlbnRzUGx1Z2luID0gZ2V0UGx1Z2luPE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3N0eWxlc1tcIm5vLXBvaW50ZXItZXZlbnRzXCJdXTogcHJvcHMuJG5vUG9pbnRlckV2ZW50cyB9XSxcbiAgJG5vUG9pbnRlckV2ZW50czogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibm8tcG9pbnRlci1ldmVudHNcIjogXCJuby1wb2ludGVyLWV2ZW50cy1tb2R1bGVfX25vLXBvaW50ZXItZXZlbnRzX19fN21GMGJcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU2ltcGxpZmllZCB0eXBlIHNpbmNlIFJlZkNhbGxiYWNrIGZyb20gXCJyZWFjdFwiIGNhdXNlcyBVTkRFRklORURfVk9JRF9PTkxZIGVycm9yXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQ29uZnVzaW5nVm9pZFR5cGU6IHZvaWQgdHlwaW5nIHJlcXVpcmVkXG50eXBlIFJlZkNhbGxiYWNrPFQ+ID0gKGluc3RhbmNlOiBUIHwgbnVsbCkgPT4gdW5kZWZpbmVkIHwgdm9pZCB8ICgoKSA9PiBhbnkpO1xuXG5leHBvcnQgdHlwZSBSZWZMaWtlPFQ+ID0gUmVmQ2FsbGJhY2s8VD4gfCBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PFQgfCBudWxsPiB8IFJlYWN0LlJlZk9iamVjdDxUPiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgJFJlZlByb3A8VD4gPSBSZWZMaWtlPFQ+IHwgJFJlZlByb3A8VD5bXTtcblxuZXhwb3J0IHR5cGUgUmVmUGx1Z2luUHJvcHM8VD4gPSB7XG4gICRyZWY/OiAkUmVmUHJvcDxUPjtcbiAgcmVmPzogUmVmTGlrZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlZlBsdWdpbjxUPiA9IFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPiwgdW5rbm93bj47XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZQbHVnaW48VCA9IEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPj4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkcmVmIH0gPSBwcm9wcztcbiAgICBjb25zdCBwcmV2UmVmcyA9IHVzZVJlZihuZXcgU2V0PFJlZkxpa2U8VD4+KCkpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8VCB8IG51bGw+KG51bGwpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IFdlIGRvIG5vdCB3YW50IHRvIHJ1biB0aGlzIG11bHRpcGxlIHRpbWVzXG4gICAgY29uc3QgcmVmID0gdXNlQ2FsbGJhY2soKGN1cnJlbnQ6IFQpID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0UmVmcyA9IGZsYXR0ZW5SZWZzKCRyZWYpO1xuXG4gICAgICBmaXJzdFJlZnMuZm9yRWFjaChoYW5kbGVSZWZzRm9yKGN1cnJlbnQpKTtcbiAgICAgIHByZXZSZWZzLmN1cnJlbnQgPSBmaXJzdFJlZnM7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBjdXJyZW50O1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBwcmV2UmVmcy5jdXJyZW50LmZvckVhY2goaGFuZGxlUmVmc0ZvcjxUPihudWxsKSk7XG4gICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBmaXJzdFJlbmRlciA9IHVzZVJlZih0cnVlKTtcblxuICAgIGlmICghZmlyc3RSZW5kZXIuY3VycmVudCkge1xuICAgICAgY29uc3QgY3VycmVudFJlZnMgPSBmbGF0dGVuUmVmcygkcmVmKTtcbiAgICAgIGNvbnN0IGFkZGVkUmVmcyA9IGN1cnJlbnRSZWZzLmRpZmZlcmVuY2UocHJldlJlZnMuY3VycmVudCk7XG4gICAgICBjb25zdCByZW1vdmVkUmVmcyA9IHByZXZSZWZzLmN1cnJlbnQuZGlmZmVyZW5jZShjdXJyZW50UmVmcyk7XG5cbiAgICAgIGFkZGVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4oZWxlbWVudFJlZi5jdXJyZW50KSk7XG4gICAgICByZW1vdmVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4obnVsbCkpO1xuICAgICAgcHJldlJlZnMuY3VycmVudCA9IGN1cnJlbnRSZWZzO1xuICAgIH1cblxuICAgIGZpcnN0UmVuZGVyLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWYsXG4gICAgICAkcmVmOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IGZsYXR0ZW5SZWZzID0gPFQsPihyZWZzOiAkUmVmUHJvcDxUPik6IFNldDxSZWZMaWtlPFQ+PiA9PlxuICBuZXcgU2V0KChbcmVmc10uZmxhdChJbmZpbml0eSBhcyAxKSBhcyBBcnJheTxOb25OdWxsYWJsZTxSZWZMaWtlPFQ+Pj4pLmZpbHRlcihpc0RlZmluZWQpKTtcblxuY29uc3QgaGFuZGxlUmVmc0ZvciA9XG4gIDxULD4odmFsdWU6IFQgfCBudWxsKSA9PlxuICAocmVmczogJFJlZlByb3A8VD4pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzKSkge1xuICAgICAgcmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3IodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWZzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlZnModmFsdWUpO1xuICAgIH0gZWxzZSBpZiAocmVmcykge1xuICAgICAgKHJlZnMgYXMgTXV0YWJsZVJlZk9iamVjdDxUIHwgbnVsbD4pLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gIH07XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjc3NOYW1lcywgdHlwZSBJQ2xhc3NOYW1lIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lUGx1Z2luUHJvcHMgPSB7ICRjbGFzc05hbWU/OiBJQ2xhc3NOYW1lOyBjbGFzc05hbWU/OiBzdHJpbmcgfTtcblxubGV0IHNob3dDbHV0dGVyID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IGNsYXNzTmFtZVBsdWdpbiA9IGdldFBsdWdpbjxDbGFzc05hbWVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGNzc05hbWVzKHByb3BzLmNsYXNzTmFtZSwgcHJvcHMuJGNsYXNzTmFtZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oY2xhc3NOYW1lID8geyBjbGFzc05hbWU6IHNob3dDbHV0dGVyID8gY2xhc3NOYW1lIDogcmVtb3ZlQ2x1dHRlcihjbGFzc05hbWUpIH0gOiB7fSksXG4gICAgJGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmNvbnN0IHJlbW92ZUNsdXR0ZXIgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+XG4gIGNsYXNzTmFtZS5yZXBsYWNlKC9fX18uKj8oPz1cXHN8JCkvZywgXCJcIikucmVwbGFjZSgvXFxiW2EtekEtWjAtOS1dKy1tb2R1bGVfXy9nLCBcIlwiKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyA9ICgpID0+IHtcbiAgc2hvd0NsdXR0ZXIgPSBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24gPSAoKSA9PiB7XG4gIHNob3dDbHV0dGVyID0gdHJ1ZTtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCByZWxhdGl2ZVN0eWxlcyBmcm9tIFwiLi9yZWxhdGl2ZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBSZWxhdGl2ZVBsdWdpblByb3BzID0geyAkcmVsYXRpdmU/OiBib29sZWFuOyAkZml4ZWQ/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCByZWxhdGl2ZVBsdWdpbiA9IGdldFBsdWdpbjxSZWxhdGl2ZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW1xuICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgeyBbcmVsYXRpdmVTdHlsZXMucmVsYXRpdmVdOiAhIXByb3BzLiRyZWxhdGl2ZSwgW3JlbGF0aXZlU3R5bGVzLmZpeGVkXTogISFwcm9wcy4kZml4ZWQgfSxcbiAgXSxcbiAgJGZpeGVkOiB1bmRlZmluZWQsXG4gICRyZWxhdGl2ZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicmVsYXRpdmVcIjogXCJyZWxhdGl2ZS1tb2R1bGVfX3JlbGF0aXZlX19fa3dNNXFcIixcbiAgXCJmaXhlZFwiOiBcInJlbGF0aXZlLW1vZHVsZV9fZml4ZWRfX19Dc1hIRFwiXG59OyIsICJleHBvcnQgdHlwZSBEcmFnZ2FibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyYWdnYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIGl0ZW06IFQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcm9wcGFibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyb3BwYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIG9uRHJvcDogKGl0ZW06IFQpID0+IHZvaWQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcmFnZ2FibGVDb250ZXh0PERyYWdnZWRJdGVtPiA9IHtcbiAgZHJhZ2dhYmxlOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IE5vbk51bGxhYmxlPERyYWdnYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltgJGRyYWdnYWJsZWBdPjtcbiAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+IE5vbk51bGxhYmxlPERyb3BwYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltcIiRkcm9wcGFibGVcIl0+O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERyYWdnYWJsZUNvbnRleHQgPSA8RHJhZ2dlZEl0ZW0+KCk6IERyYWdnYWJsZUNvbnRleHQ8RHJhZ2dlZEl0ZW0+ID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBkcmFnZ2FibGU6IChpdGVtOiBEcmFnZ2VkSXRlbSkgPT4gKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICBpdGVtLFxuICAgIH0pLFxuXG4gICAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+ICh7XG4gICAgICBjb250ZXh0LFxuICAgICAgb25Ecm9wLFxuICAgIH0pLFxuICB9O1xuXG4gIHJldHVybiBjb250ZXh0O1xufTtcbiIsICJpbXBvcnQgeyBnZXRGZWF0dXJlIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJJbmplY3RhYmxlc0Zyb21Nb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMgZnJvbSBcIi4vKiovKi5pbmplY3RhYmxlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50Q29tcG9uZW50RmVhdHVyZSA9IGdldEZlYXR1cmUoe1xuICBpZDogXCJlbGVtZW50LWNvbXBvbmVudFwiLFxuICByZWdpc3RlcjogKGRpKSA9PiByZWdpc3RlckluamVjdGFibGVzRnJvbU1vZHVsZXMoZGksIG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMpLFxuICAvLyBObyBmZWF0dXJlIGRlcGVuZGVuY2llczogYSBkZXNpZ24gc3lzdGVtIGV2ZXJ5b25lIG1heSBpbnN0YWxsIGNhbm5vdCBkcmFnXG4gIC8vIExlbnMgZmVhdHVyZXMgaW50byB0aGUgY2xvc3VyZS4gVGhlIGNsb2NrIHRoZSBob3ZlcmFibGUgcGx1Z2luIG5lZWRzIGlzXG4gIC8vIGxvY2FsLCBhbmQgdGhlIHBsYXRmb3JtIGlzIHJlYWQgZGlyZWN0bHkuXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5cbi8qKlxuICogV2hldGhlciB0aGUga2V5Ym9hcmQgY29udmVudGlvbnMgb2YgbWFjT1MgYXBwbHkuXG4gKlxuICogUmVhZCBmcm9tIHRoZSBicm93c2VyIHJhdGhlciB0aGFuIGZyb20gYHByb2Nlc3NgIG9yIHRoZSB2YXJzIGZlYXR1cmU6IHRoaXMgaXNcbiAqIGEgcmVuZGVyZXItb25seSBkZXNpZ24gc3lzdGVtLCBpdCBtYXkgbm90IGRlcGVuZCBvbiBhIGZlYXR1cmUgcGFja2FnZSwgYW5kXG4gKiBgcHJvY2Vzc2AgaXMgbm90IHRoZXJlIHRvIHJlYWQgb25jZSB0aGUgcmVuZGVyZXIgc3RvcHMgcnVubmluZyB3aXRoIG5vZGVcbiAqIGludGVncmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgaXNNYWNJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpcy1tYWNcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4ge1xuICAgIGNvbnN0IHsgdXNlckFnZW50RGF0YSwgcGxhdGZvcm0sIHVzZXJBZ2VudCB9ID0gbmF2aWdhdG9yIGFzIE5hdmlnYXRvciAmIHtcbiAgICAgIHJlYWRvbmx5IHVzZXJBZ2VudERhdGE/OiB7IHJlYWRvbmx5IHBsYXRmb3JtPzogc3RyaW5nIH07XG4gICAgfTtcblxuICAgIHJldHVybiAvbWFjL2kudGVzdCh1c2VyQWdlbnREYXRhPy5wbGF0Zm9ybSA/PyBwbGF0Zm9ybSA/PyB1c2VyQWdlbnQgPz8gXCJcIik7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYXRjaGVzIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHsgaXNNYWNJbmplY3RhYmxlIH0gZnJvbSBcIi4vaXMtbWFjLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwib24tcmlnaHQtdHJpZ2dlclwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBpc01hYyA9IGRpLmluamVjdChpc01hY0luamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+IG9uUmlnaHRUcmlnZ2VyRm9yKGlzTWFjKCkgPyBpc01hY29zU2hvcnRjdXQgOiBpc0xpbnV4T3JXaW5kb3dzU2hvcnRjdXQpO1xuICB9LFxufSk7XG5cbmNvbnN0IG9uUmlnaHRUcmlnZ2VyRm9yID1cbiAgPFQ+KGNiOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8VD4pID0+IGJvb2xlYW4pID0+XG4gIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxUPiwgY2FsbGJhY2s6IFJlYWN0LktleWJvYXJkRXZlbnRIYW5kbGVyPFQ+KSA9PiB7XG4gICAgaWYgKGNiKGV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbmNvbnN0IGlzTWFjb3NTaG9ydGN1dCA9IG1hdGNoZXMoe1xuICBzaGlmdEtleTogZmFsc2UsXG4gIGFsdEtleTogZmFsc2UsXG4gIGN0cmxLZXk6IGZhbHNlLFxuICBtZXRhS2V5OiB0cnVlLFxuICBjb2RlOiBcIkVudGVyXCIsXG59KTtcblxuY29uc3QgaXNMaW51eE9yV2luZG93c1Nob3J0Y3V0ID0gbWF0Y2hlcyh7XG4gIHNoaWZ0S2V5OiBmYWxzZSxcbiAgYWx0S2V5OiBmYWxzZSxcbiAgY3RybEtleTogdHJ1ZSxcbiAgbWV0YUtleTogZmFsc2UsXG4gIGNvZGU6IFwiRW50ZXJcIixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG1ha2VTdXJlRHJhZ0FuZERyb3BFdmVudHNIYXZlVGltZVRvSGFwcGVuSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwibWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW5cIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4gKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0sIDUwKTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBOYXZpZ2FibGVFbnRyeSA9IHtcbiAgcmVhZG9ubHkgaXRlbTogdW5rbm93bjtcbiAgcmVhZG9ubHkgb3JkZXJOdW1iZXI6IG51bWJlcjtcbiAgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG59O1xuXG50eXBlIE5hdmlnYWJsZUNvbnRleHQgPSBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8YW55PjtcblxuLyoqXG4gKiBUaGUgbWVtYmVycyBvZiBldmVyeSBrZXlib2FyZC1uYXZpZ2FibGUgY29udGV4dCwgYW5kIHRoZSBvcmRlciB0aGUgY29udGV4dHMgYXBwZWFyZWQgaW4uIEZvY3VzXG4gKiBiZWxvbmdzIHRvIHRoZSBjb250ZXh0IHRoYXQgYXBwZWFyZWQgbGFzdDsgd2hlbiBpdCBnb2VzIGF3YXksIHRoZSBwcmV2aW91cyBvbmUgdGFrZXMgaXQgYmFjay5cbiAqL1xuZXhwb3J0IGNvbnN0IGtleWJvYXJkTmF2aWdhdGlvblN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwia2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiB7XG4gICAgY29uc3QgZW50cmllc0J5Q29udGV4dCA9IG5ldyBNYXA8TmF2aWdhYmxlQ29udGV4dCwgU2V0PE5hdmlnYWJsZUVudHJ5Pj4oKTtcbiAgICBjb25zdCBjb250ZXh0U3RhY2s6IE5hdmlnYWJsZUNvbnRleHRbXSA9IFtdO1xuXG4gICAgY29uc3QgZW50cmllc09mID0gKGNvbnRleHQ6IE5hdmlnYWJsZUNvbnRleHQpID0+IHtcbiAgICAgIGNvbnN0IGV4aXN0aW5nID0gZW50cmllc0J5Q29udGV4dC5nZXQoY29udGV4dCk7XG5cbiAgICAgIGlmIChleGlzdGluZykge1xuICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNyZWF0ZWQgPSBuZXcgU2V0PE5hdmlnYWJsZUVudHJ5PigpO1xuXG4gICAgICBlbnRyaWVzQnlDb250ZXh0LnNldChjb250ZXh0LCBjcmVhdGVkKTtcblxuICAgICAgcmV0dXJuIGNyZWF0ZWQ7XG4gICAgfTtcblxuICAgIHJldHVybiAoKSA9PiAoe1xuICAgICAgc29ydGVkRW50cmllc09mOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCkgPT5cbiAgICAgICAgWy4uLmVudHJpZXNPZihjb250ZXh0KV0uc29ydCgoYSwgYikgPT4gYS5vcmRlck51bWJlciAtIGIub3JkZXJOdW1iZXIpLFxuXG4gICAgICBjb250ZXh0SW5Gb2N1czogKCkgPT4gY29udGV4dFN0YWNrLmF0KC0xKSxcblxuICAgICAgcmVnaXN0ZXI6IChjb250ZXh0OiBOYXZpZ2FibGVDb250ZXh0LCBlbnRyeTogTmF2aWdhYmxlRW50cnkpID0+IHtcbiAgICAgICAgY29uc3QgZW50cmllcyA9IGVudHJpZXNPZihjb250ZXh0KTtcblxuICAgICAgICBpZiAoZW50cmllcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgY29udGV4dFN0YWNrLnB1c2goY29udGV4dCk7XG4gICAgICAgIH1cblxuICAgICAgICBlbnRyaWVzLmFkZChlbnRyeSk7XG4gICAgICB9LFxuXG4gICAgICBkZXJlZ2lzdGVyOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCwgZW50cnk6IE5hdmlnYWJsZUVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBlbnRyaWVzT2YoY29udGV4dCk7XG5cbiAgICAgICAgZW50cmllcy5kZWxldGUoZW50cnkpO1xuXG4gICAgICAgIGlmIChlbnRyaWVzLnNpemUgPT09IDApIHtcbiAgICAgICAgICBjb25zdCBpbmRleEluU3RhY2sgPSBjb250ZXh0U3RhY2subGFzdEluZGV4T2YoY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoaW5kZXhJblN0YWNrICE9PSAtMSkge1xuICAgICAgICAgICAgY29udGV4dFN0YWNrLnNwbGljZShpbmRleEluU3RhY2ssIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJtb2J4XCI7XG5cbmV4cG9ydCBjb25zdCBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJjb250ZXh0LWlzLWJlaW5nLWhvdmVyZWRcIixcbiAgY29uc3VtcHRpb25zOiBbaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuXSxcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IGRpLmluamVjdChpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4pO1xuXG4gICAgcmV0dXJuIChjb250ZXh0OiBIb3ZlcmFibGVDb250ZXh0PE11dGFibGVSZWZPYmplY3Q8YW55Pj4pID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWRJdGVtID0gaXRlbUJlaW5nSG92ZXJlZCgpKGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gISFob3ZlcmVkSXRlbS5nZXQoKSk7XG4gICAgfTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuaW1wb3J0IGdsb2JhbE92ZXJyaWRlcyBmcm9tIFwiLi8qKi8qLmdsb2JhbC1vdmVycmlkZS1mb3ItaW5qZWN0YWJsZS4odHN8dHN4KVwiO1xuaW1wb3J0IGRlZmF1bHRPdmVycmlkZXMgZnJvbSBcIi4vKiovKi5kZWZhdWx0LW92ZXJyaWRlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCB0ZXN0VXRpbFJ1bm5hYmxlSW5qZWN0YWJsZSA9IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMoe1xuICBnbG9iYWxPdmVycmlkZXMsXG4gIGRlZmF1bHRPdmVycmlkZXMsXG59KTtcbiIsICJcblxuY29uc3QgbW9kdWxlcyA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFtdXG4iLCAiaW1wb3J0IHR5cGUgeyBEaUNvbnRhaW5lciB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUgfSBmcm9tIFwiLi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlXCI7XG5cbi8vIFJ1bnMgdGhlIGNhbGxiYWNrIHN0cmFpZ2h0IGF3YXkgaW4gdGVzdHMsIGluc3RlYWQgb2YgYWZ0ZXIgdGhlIHJlYWwgZGVsYXkuXG5leHBvcnQgZGVmYXVsdCAoZGk6IERpQ29udGFpbmVyKSA9PiB7XG4gIGRpLm92ZXJyaWRlMihtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUsICgpID0+ICgpID0+IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gY2FsbGJhY2soKSk7XG59O1xuIiwgImltcG9ydCB0eXBlIHsgRGlDb250YWluZXIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdG9vbHRpcERlbGF5SW5qZWN0YWJsZSB9IGZyb20gXCIuL3Rvb2x0aXAtZGVsYXkuaW5qZWN0YWJsZVwiO1xuXG4vLyBObyBkZWxheSBpbiB0ZXN0cywgc28gYSB0b29sdGlwIGFwcGVhcnMgd2l0aG91dCBhbnlvbmUgYWR2YW5jaW5nIHRpbWVycy5cbi8vIFdyaXR0ZW4gYXMgYSBwbGFpbiBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aHJvdWdoIGdldERlZmF1bHRNb2NraW5nT3ZlcnJpZGUsXG4vLyB3aGljaCBpcyBhbiBpZGVudGl0eSBmdW5jdGlvbiBpbiBhIHRlc3QgcGFja2FnZSB0aGlzIG9uZSBtYXkgbm90IGltcG9ydC5cbmV4cG9ydCBkZWZhdWx0IChkaTogRGlDb250YWluZXIpID0+IHtcbiAgZGkub3ZlcnJpZGUyKHRvb2x0aXBEZWxheUluamVjdGFibGUsICgpID0+ICgpID0+IHVuZGVmaW5lZCk7XG59O1xuIiwgImltcG9ydCB7IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nKCk7XG59O1xuIiwgImltcG9ydCAqIGFzIG1vZHVsZTAgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTJdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFsncGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5kZWZhdWx0LW92ZXJyaWRlLnRzJywncGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzJywncmVtb3ZlLWNzcy1tb2R1bGUtY2x1dHRlci5kZWZhdWx0LW92ZXJyaWRlLnRzJ11cbiIsICJpbXBvcnQgKiBhcyBtb2R1bGUwIGZyb20gJy4vcGx1Z2lucy9jbGlja2FibGUvaXMtbWFjLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTMgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU0IGZyb20gJy4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU1IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNiBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNyBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU4IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlOSBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMCBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2NvbXB1dGVkLW5vdy5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMSBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMiBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMyBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2xvY2FsLWhvdmVyYWJsZS9fcHJpdmF0ZS9jb250ZXh0LWlzLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlMTQgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTE1IGZyb20gJy4vdGVzdC11dGlsLXJ1bm5hYmxlLmluamVjdGFibGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTIsbW9kdWxlMyxtb2R1bGU0LG1vZHVsZTUsbW9kdWxlNixtb2R1bGU3LG1vZHVsZTgsbW9kdWxlOSxtb2R1bGUxMCxtb2R1bGUxMSxtb2R1bGUxMixtb2R1bGUxMyxtb2R1bGUxNCxtb2R1bGUxNV07XG5cbmV4cG9ydCBkZWZhdWx0IG1vZHVsZXM7XG5leHBvcnQgY29uc3QgZmlsZW5hbWVzID0gWydwbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvY2xpY2thYmxlL29uLXJpZ2h0LXRyaWdnZXIuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9fc2hhcmVkL2ZvY3VzYWJsZS1odG1sLWVsZW1lbnQtcmVmLXNldC5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9rZXlib2FyZC1uYXZpZ2F0aW9uLXN0YXRlLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9jb21wdXRlZC1ub3cuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9ob3ZlcmFibGUvaXRlbS1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnLCd0ZXN0LXV0aWwtcnVubmFibGUuaW5qZWN0YWJsZS50cyddXG4iLCAiaW1wb3J0IHR5cGUgeyBUdXBsZSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IHR5cGUgVFNoaXJ0U2l6ZSA9XG4gIHwgXCJ6ZXJvXCJcbiAgfCBgJHtSYW5nZTwzLCA0Pn14c2BcbiAgfCBcInh4c1wiXG4gIHwgXCJ4c1wiXG4gIHwgXCJzXCJcbiAgfCBcIm1cIlxuICB8IFwibFwiXG4gIHwgXCJ4bFwiXG4gIHwgXCJ4eGxcIlxuICB8IGAke1JhbmdlPDMsIDExPn14bGA7XG5cbmV4cG9ydCB0eXBlIFJhbmdlPFN0YXJ0IGV4dGVuZHMgbnVtYmVyLCBFbmQgZXh0ZW5kcyBudW1iZXI+ID0gUmFuZ2VJbXBsPFN0YXJ0LCBFbmQ+O1xudHlwZSBSYW5nZUltcGw8XG4gIFN0YXJ0IGV4dGVuZHMgbnVtYmVyLFxuICBFbmQgZXh0ZW5kcyBudW1iZXIsXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9Db25mdXNpbmdWb2lkVHlwZTogcmVxdWlyZWQgZm9yIHRoZSBidWlsZCB0byBwYXNzXG4gIFQgZXh0ZW5kcyB2b2lkW10gPSBUdXBsZTx2b2lkLCBTdGFydD4sXG4+ID0gRW5kIGV4dGVuZHMgVFtcImxlbmd0aFwiXSA/IEVuZCA6IFRbXCJsZW5ndGhcIl0gfCBSYW5nZUltcGw8U3RhcnQsIEVuZCwgW3VuZGVmaW5lZCwgLi4uVF0+O1xuXG4vKiBjOCBpZ25vcmUgZW5kICovXG5cbi8qKiBUaGUgYmFzZSB1bml0IChpbiBwaXhlbHMpIHRoZSB0LXNoaXJ0IHNjYWxlIGlzIGJ1aWx0IG9uLiBNaXJyb3JzIGAkdW5pdGAgaW4gYHNpemVzLnNjc3NgLiAqL1xuZXhwb3J0IGNvbnN0IHNpemVVbml0SW5QaXhlbHMgPSA0O1xuXG4vLyBNdWx0aXBsaWVyIHBlciBzaXplLCBtaXJyb3JpbmcgdGhlIGAkc2l6ZXNgIG1hcCBpbiBgc2l6ZXMuc2Nzc2AuIEtlZXAgdGhlIHR3byBpbiBzeW5jLlxuY29uc3Qgc2l6ZU11bHRpcGxpZXJzOiBSZWNvcmQ8VFNoaXJ0U2l6ZSwgbnVtYmVyPiA9IHtcbiAgemVybzogMCxcbiAgXCI0eHNcIjogMSAvIDQsXG4gIFwiM3hzXCI6IDEgLyAyLFxuICB4eHM6IDEsXG4gIHhzOiAyLFxuICBzOiAzLFxuICBtOiA0LFxuICBsOiA1LFxuICB4bDogNixcbiAgeHhsOiA3LFxuICBcIjN4bFwiOiA4LFxuICBcIjR4bFwiOiA5LFxuICBcIjV4bFwiOiAxMCxcbiAgXCI2eGxcIjogMTEsXG4gIFwiN3hsXCI6IDEyLFxuICBcIjh4bFwiOiAxMyxcbiAgXCI5eGxcIjogMTQsXG4gIFwiMTB4bFwiOiAxNSxcbiAgXCIxMXhsXCI6IDE2LFxufTtcblxuLyoqXG4gKiBUaGUgcGl4ZWwgbGVuZ3RoIG9mIGEgdC1zaGlydCBzaXplIFx1MjAxNCB0aGUgc2FtZSB2YWx1ZSB0aGUgYCRzaXplYC9gJHdpZHRoYC9gJGhlaWdodGBcbiAqIGNsYXNzZXMgcmVzb2x2ZSB0byBpbiBDU1MuIFVzZSB3aGVuIGEgbGVuZ3RoIGlzIG5lZWRlZCByYXRoZXIgdGhhbiBhIHNpemluZyBjbGFzcyxcbiAqIGUuZy4gdG8gZHJpdmUgYW4gaWNvbiBmb250J3MgYGZvbnQtc2l6ZWAuXG4gKi9cbmV4cG9ydCBjb25zdCB0U2hpcnRTaXplSW5QaXhlbHMgPSAoc2l6ZTogVFNoaXJ0U2l6ZSk6IG51bWJlciA9PiBzaXplVW5pdEluUGl4ZWxzICogc2l6ZU11bHRpcGxpZXJzW3NpemVdO1xuIiwgIi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgZ2V0RWxlbWVudENvbXBvbmVudCB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZmxleFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxleC9mbGV4XCI7XG5pbXBvcnQgeyBncmlkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmlkL2dyaWRcIjtcbmltcG9ydCB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyB3aWR0aFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcbmltcG9ydCB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuaW1wb3J0IHsgc3R5bGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBoZWlnaHRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2hlaWdodC9oZWlnaHRcIjtcbmltcG9ydCB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYm9yZGVyL2JvcmRlclwiO1xuaW1wb3J0IHsgZm9udFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZm9udC9mb250XCI7XG5pbXBvcnQgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY29sb3IvY29sb3JcIjtcbmltcG9ydCB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgeyBncmFkaWVudFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZ3JhZGllbnQvZ3JhZGllbnRcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZHJhZ2dhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGVcIjtcbmltcG9ydCB7IGRyb3BwYWJsZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJvcHBhYmxlXCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCJtb2J4LXJlYWN0XCI7XG5pbXBvcnQgeyB0b29sdGlwUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90b29sdGlwL3Rvb2x0aXBcIjtcbmltcG9ydCB7IHRyYW5zaXRpb25QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuaW1wb3J0IHsgb2Zmc2V0UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9vZmZzZXQvb2Zmc2V0XCI7XG5pbXBvcnQgeyBvZmZzZXRDaGlsZHJlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb2Zmc2V0LWNoaWxkcmVuL29mZnNldC1jaGlsZHJlblwiO1xuaW1wb3J0IHsgaGlkZGVuUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9oaWRkZW4vaGlkZGVuXCI7XG5pbXBvcnQgeyBub1BvaW50ZXJFdmVudHNQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzXCI7XG5pbXBvcnQgeyBtYXJnaW5QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL21hcmdpbi9tYXJnaW5cIjtcbmltcG9ydCB7IHJlbGF0aXZlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9yZWxhdGl2ZS9yZWxhdGl2ZVwiO1xuaW1wb3J0IHsgYWJzb2x1dGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Fic29sdXRlL2Fic29sdXRlXCI7XG5pbXBvcnQgeyB2aXN1YWxseUhpZGRlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuaW1wb3J0IHsgaG92ZXJhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBob3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlLWJ5LWRyYWdnaW5nXCI7XG5pbXBvcnQgeyBib3hTaGFkb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuaW1wb3J0IHsgb3ZlcmZsb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL292ZXJmbG93L292ZXJmbG93XCI7XG5pbXBvcnQgeyBmbGV4Q2hpbGRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZFwiO1xuaW1wb3J0IHsgZ3JheXNjYWxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlXCI7XG5pbXBvcnQgeyB0aW50UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90aW50L3RpbnRcIjtcbmltcG9ydCB7IGZhZGVkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuaW1wb3J0IHsgZW5hYmxlZFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgeyBmb2N1c2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGVcIjtcbmltcG9ydCB7IGFyZWFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEvYXJlYVwiO1xuaW1wb3J0IHsgYXJlYUNvbnRlbnRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEtY29udGVudC9hcmVhLWNvbnRlbnRcIjtcbmltcG9ydCB7IHNpemVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuaW1wb3J0IHsgY3Vyc29yUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyBjbGlja2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHJlZlBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcmVmL3JlZlwiO1xuaW1wb3J0IHsgZGlzcGxheUNvbnRlbnRzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHNcIjtcbmltcG9ydCB7IHRleHRBbGlnblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduXCI7XG5pbXBvcnQgeyBibG9ja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmxvY2svYmxvY2tcIjtcbmltcG9ydCB7IG91dGxpbmVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL291dGxpbmUvb3V0bGluZVwiO1xuaW1wb3J0IHsgcG9wb3ZlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5pbXBvcnQgeyBmbG9hdGluZ1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcbmltcG9ydCB7IGludmlzaWJsZUJhY2tkcm9wUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wXCI7XG5pbXBvcnQgeyBvbk91dHNpZGVDbGlja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5pbXBvcnQgeyBkcm9wRG93bk1lbnVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51XCI7XG5pbXBvcnQgeyBhbmNob3JQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FuY2hvci9hbmNob3JcIjtcblxuZXhwb3J0IGNvbnN0IHNoYXJlZFBsdWdpbnMgPSBbXG4gIC8vIENvbnRyaWJ1dGVzIHByb3BzIG9mIGl0cyBvd24sIHNvIGl0IGhhcyB0byBydW4gYmVmb3JlIHRoZSBwbHVnaW5zIHRoYXQgcmVzb2x2ZSB0aGVtLlxuICBhbmNob3JQbHVnaW4sXG4gIHNpemVQbHVnaW4sXG4gIGRyYWdnYWJsZVBsdWdpbixcbiAgdGV4dEFsaWduUGx1Z2luLFxuICBkcm9wcGFibGVQbHVnaW4sXG4gIGFyZWFQbHVnaW4sXG4gIGFyZWFDb250ZW50UGx1Z2luLFxuICBmbGV4UGx1Z2luLFxuICBncmlkUGx1Z2luLFxuICB3aWR0aFBsdWdpbixcbiAgaGVpZ2h0UGx1Z2luLFxuICBmbGV4Q2hpbGRQbHVnaW4sXG4gIG92ZXJmbG93UGx1Z2luLFxuICBwYWRkaW5nUGx1Z2luLFxuICBtYXJnaW5QbHVnaW4sXG4gIGJsb2NrUGx1Z2luLFxuICBib3hTaGFkb3dQbHVnaW4sXG4gIGJvcmRlclBsdWdpbixcbiAgb3V0bGluZVBsdWdpbixcbiAgZm9udFBsdWdpbixcbiAgY29sb3JQbHVnaW4sXG4gIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgZ3JhZGllbnRQbHVnaW4sXG4gIGdyYXlzY2FsZVBsdWdpbixcbiAgdGludFBsdWdpbixcbiAgZmFkZWRQbHVnaW4sXG4gIHN0eWxlUGx1Z2luLFxuICB0cmFuc2l0aW9uUGx1Z2luLFxuICBvZmZzZXRQbHVnaW4sXG4gIG9mZnNldENoaWxkcmVuUGx1Z2luLFxuICBoaWRkZW5QbHVnaW4sXG4gIG5vUG9pbnRlckV2ZW50c1BsdWdpbixcbiAgaW52aXNpYmxlQmFja2Ryb3BQbHVnaW4sXG4gIHZpc3VhbGx5SGlkZGVuUGx1Z2luLFxuICByZWxhdGl2ZVBsdWdpbixcbiAgYWJzb2x1dGVQbHVnaW4sXG4gIGN1cnNvclBsdWdpbixcbiAgZGlzcGxheUNvbnRlbnRzUGx1Z2luLFxuICBvbk91dHNpZGVDbGlja1BsdWdpbixcbiAgY2xhc3NOYW1lUGx1Z2luLFxuXTtcblxuY29uc3Qgc2hhcmVkQ2xpY2thYmxlUGx1Z2lucyA9IFtkcm9wRG93bk1lbnVQbHVnaW4sIHBvcG92ZXJQbHVnaW4sIGVuYWJsZWRQbHVnaW4sIGNsaWNrYWJsZVBsdWdpbl07XG5cbmV4cG9ydCBjb25zdCBnZXRTaGFyZWRUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgLi4uZ2V0U2hhcmVkQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbiAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbl07XG5cbmNvbnN0IGdldFNoYXJlZENoaWxkcmVuQWRkaW5nVHlwZWRQbHVnaW5zID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiBbdG9vbHRpcFBsdWdpbjxUPigpLCBmbG9hdGluZ1BsdWdpbjxUPigpXTtcblxuY29uc3QgZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgaG92ZXJhYmxlUGx1Z2luPFQ+KCksXG4gIGhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW48VD4oKSxcbiAgZm9jdXNhYmxlUGx1Z2luPFQ+KCksXG4gIHJlZlBsdWdpbjxUPigpLFxuXTtcblxuZXhwb3J0IGNvbnN0IERpdiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIERpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERpdj47XG5cbi8vIFVzZSBkaXYgYXMgbmV1dHJhbCB0ZW1wbGF0ZSBmb3Igd2hhdCBjb21tb24gcHJvcHMgc2hvdWxkIGxvb2sgbGlrZVxuZXhwb3J0IGNvbnN0IENvbW1vbiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPGFueT4oKSkpO1xuZXhwb3J0IHR5cGUgQ29tbW9uUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29tbW9uPjtcblxuZXhwb3J0IGNvbnN0IFN2ZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJzdmdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIFN2Z1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFN2Zz47XG5cbmV4cG9ydCBjb25zdCBJbnB1dCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFxuICAgIFwiaW5wdXRcIixcbiAgICBlbmFibGVkUGx1Z2luLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8SFRNTElucHV0RWxlbWVudD4oKSxcbiAgKSxcbik7XG5leHBvcnQgdHlwZSBJbnB1dFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIElucHV0PjtcblxuZXhwb3J0IGNvbnN0IFRleHRBcmVhID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0ZXh0YXJlYVwiLCBlbmFibGVkUGx1Z2luLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRleHRBcmVhRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGV4dEFyZWFQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUZXh0QXJlYT47XG5cbmV4cG9ydCBjb25zdCBGb3JtID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJmb3JtXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRm9ybUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIEZvcm1Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBGb3JtPjtcblxuZXhwb3J0IGNvbnN0IFNwYW4gPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInNwYW5cIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxTcGFuRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgU3BhblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNwYW4+O1xuXG5leHBvcnQgY29uc3QgQ2xpY2thYmxlRGl2ID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBDbGlja2FibGVEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBDbGlja2FibGVEaXY+O1xuXG5leHBvcnQgY29uc3QgSSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEk+O1xuXG5leHBvcnQgY29uc3QgQSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJhXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQW5jaG9yRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgQVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEE+O1xuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXG4gICAgXCJidXR0b25cIixcbiAgICAuLi5zaGFyZWRDbGlja2FibGVQbHVnaW5zLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxCdXR0b25FbGVtZW50PigpLFxuICApLFxuKTtcbmV4cG9ydCB0eXBlIEJ1dHRvblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEJ1dHRvbj47XG5cbmV4cG9ydCBjb25zdCBDb2RlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImNvZGVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBDb2RlUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29kZT47XG5cbmV4cG9ydCBjb25zdCBMYWJlbCA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJsYWJlbFwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIExhYmVsUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTGFiZWw+O1xuXG5leHBvcnQgY29uc3QgUHJlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInByZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFByZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIFByZVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFByZT47XG5cbmV4cG9ydCBjb25zdCBOYXYgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwibmF2XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgTmF2UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTmF2PjtcblxuZXhwb3J0IGNvbnN0IEgxID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImgxXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEgxUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDE+O1xuXG5leHBvcnQgY29uc3QgSDIgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDJcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBIMj47XG5cbmV4cG9ydCBjb25zdCBIMyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoM1wiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBIM1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEgzPjtcblxuZXhwb3J0IGNvbnN0IEg0ID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImg0XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEg0UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDQ+O1xuXG5leHBvcnQgY29uc3QgSDUgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBINT47XG5cbmV4cG9ydCBjb25zdCBINiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoNlwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBINlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEg2PjtcblxuZXhwb3J0IGNvbnN0IE9sID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcIm9sXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MT0xpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBPbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIE9sPjtcblxuZXhwb3J0IGNvbnN0IFVsID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInVsXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVUxpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBVbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFVsPjtcblxuZXhwb3J0IGNvbnN0IExpID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImxpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MTElFbGVtZW50PigpKSk7XG5cbmV4cG9ydCBjb25zdCBDbGlja2FibGVMaSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwibGlcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxMSUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIENsaWNrYWJsZUxpUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2xpY2thYmxlTGk+O1xuZXhwb3J0IHR5cGUgTGlQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBMaT47XG5cbmV4cG9ydCBjb25zdCBQID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInBcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxQYXJhZ3JhcGhFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBQUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUD47XG5cbmV4cG9ydCBjb25zdCBUaCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGhcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZUNlbGxFbGVtZW50PigpKSxcbik7XG5cbmV4cG9ydCB0eXBlIFRoUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgVGg+O1xuXG5leHBvcnQgY29uc3QgVGQgPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInRkXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVGFibGVDZWxsRWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUZFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRkPjtcblxuZXhwb3J0IGNvbnN0IFRyID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0clwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlUm93RWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRyPjtcblxuZXhwb3J0IGNvbnN0IFRhYmxlID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0YWJsZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGFibGVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUYWJsZT47XG5cbmV4cG9ydCBjb25zdCBUQm9keSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGJvZHlcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBUQm9keVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRCb2R5PjtcblxuZXhwb3J0IGNvbnN0IERpYWxvZyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiZGlhbG9nXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRGlhbG9nRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgRGlhbG9nUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nPjtcblxuZXhwb3J0IGNvbnN0IENhbnZhcyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiY2FudmFzXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQ2FudmFzRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgQ2FudmFzUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2FudmFzPjtcblxuZXhwb3J0IGNvbnN0IEltZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpbWdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxJbWFnZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEltZ1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEltZz47XG5cbi8qIGM4IGlnbm9yZSBlbmQgKi9cbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mbGV4L2ZsZXgubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJmbGV4XCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX19lRkxFY1wiLFxuICBcImZsZXhfX3dyYXAtLXdyYXBcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fd3JhcC0td3JhcF9fXzJMcVRnXCIsXG4gIFwiZmxleF9fZGlyZWN0aW9uLS12ZXJ0aWNhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsX19fMEFpT2ZcIixcbiAgXCJmbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsLXJldmVyc2VkXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2RpcmVjdGlvbi0tdmVydGljYWwtcmV2ZXJzZWRfX19Jb2UtNVwiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWxfX19hMzJ6b1wiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbC1yZXZlcnNlZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWwtcmV2ZXJzZWRfX19pTHdES1wiLFxuICBcImZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5cIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2Vlbl9fX2E2b01IXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQXJvdW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUFyb3VuZF9fXzVZT1U0XCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWNlbnRlclwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tY2VudGVyX19fdXJaWUdcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaF9fX001YXowXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0X19fUEhGMUVcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZF9fX2FNUHgwXCIsXG4gIFwiZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19hbGlnbkl0ZW1zLS1zdHJldGNoX19fYkFOaWdcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyX19fMFZzeTlcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4U3RhcnRcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tZmxleFN0YXJ0X19fajBKenhcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4RW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2FsaWduSXRlbXMtLWZsZXhFbmRfX19EbVU1UlwiLFxuICBcImZsZXhfX2dhcC0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXplcm9fX193My1UZ1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS16ZXJvXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS16ZXJvX19fOTYwQTdcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0temVyb19fX29LdXNUXCIsXG4gIFwiZmxleF9fZ2FwLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS00eHNfX19yclRKZVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTR4c19fX1RSM1lFXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTR4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNHhzX19fNmluM2pcIixcbiAgXCJmbGV4X19nYXAtLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTN4c19fX1JjdW1SXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tM3hzX19fWC1DMWFcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tM3hzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS0zeHNfX19rVzBpT1wiLFxuICBcImZsZXhfX2dhcC0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhzX19fVUIzRmpcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eHNfX191SVp2MlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4c19fX3QtZ3FOXCIsXG4gIFwiZmxleF9fZ2FwLS14c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXhzX19fdHQzU29cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLXhzX19fQjVvWGNcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXhzX19fMUVYMmZcIixcbiAgXCJmbGV4X19nYXAtLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1zX19fOW1ZelNcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tc1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tc19fX2F2dGYtXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXNfX19ZT0JWVlwiLFxuICBcImZsZXhfX2dhcC0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLW1fX19BYi10MFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS1tXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS1tX19fUTZjQi1cIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tbV9fXzctRFEwXCIsXG4gIFwiZmxleF9fZ2FwLS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tbF9fX2N2bWp3XCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLWxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLWxfX19FcFF0VFwiLFxuICBcImZsZXhfX2dhcC0tcm93LS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS1sX19feFlpS2hcIixcbiAgXCJmbGV4X19nYXAtLXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teGxfX19DSXNOUFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0teGxfX19tTFV4UlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0teGxfX19LV04zM1wiLFxuICBcImZsZXhfX2dhcC0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhsX19fMTJ0LTZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eGxfX192QUx0ZlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4bF9fX0lkY3FVXCIsXG4gIFwiZmxleF9fZ2FwLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0zeGxfX19pVXJ4MVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTN4bF9fXy1OVjBaXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTN4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tM3hsX19fVlljUmhcIixcbiAgXCJmbGV4X19nYXAtLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTR4bF9fX2ZaaUtWXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tNHhsX19fWDlLcHlcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tNHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS00eGxfX19kYnZXMFwiLFxuICBcImZsZXhfX2dhcC0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tNXhsX19fNDNoSHZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS01eGxfX18yWHllUVwiLFxuICBcImZsZXhfX2dhcC0tcm93LS01eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTV4bF9fX3F2ak9FXCIsXG4gIFwiZmxleF9fZ2FwLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS02eGxfX19zUHk2TFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTZ4bF9fX3phZ1dNXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTZ4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNnhsX19fVS11WkpcIixcbiAgXCJmbGV4X19nYXAtLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTd4bF9fX09hd3YtXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tN3hsX19fS3pyTXJcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tN3hsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS03eGxfX19wQXZMdlwiLFxuICBcImZsZXhfX2dhcC0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tOHhsX19fRWVvRS1cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS04eGxfX19rYmlvSlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS04eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTh4bF9fX1AtOS1lXCIsXG4gIFwiZmxleF9fZ2FwLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS05eGxfX19UZ25VU1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTl4bF9fX05HbDNKXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTl4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tOXhsX19fRUd1ZWhcIixcbiAgXCJmbGV4X19nYXAtLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0xMHhsX19fQ2YxdzZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tMTB4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tMTB4bF9fX0xKUkdsXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTEweGxfX196UHR5TlwiLFxuICBcImZsZXhfX2dhcC0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTExeGxfX19vcmZnSVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0xMXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS0xMXhsX19fZERLZHBcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tMTF4bF9fX3ZERy1BXCJcbn07IiwgImltcG9ydCBmbGV4U3R5bGVzIGZyb20gXCIuL2ZsZXgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBIb3Jpem9udGFsRmxleFByb3BzID0ge1xuICBkaXJlY3Rpb24/OiBcImhvcml6b250YWxcIiB8IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiO1xuXG4gIGhvcml6b250YWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInN0cmV0Y2hcIiB8IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxuZXhwb3J0IHR5cGUgVmVydGljYWxGbGV4UHJvcHMgPSB7XG4gIGRpcmVjdGlvbj86IFwidmVydGljYWxcIiB8IFwidmVydGljYWwtcmV2ZXJzZWRcIjtcblxuICBob3Jpem9udGFsQWxpZ24/OiBcImNlbnRlclwiIHwgXCJzdHJldGNoXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcInRvcFwiIHwgXCJib3R0b21cIjtcbn07XG5cbmV4cG9ydCB0eXBlIE1heGltYWxGbGV4UHJvcHMgPSAoSG9yaXpvbnRhbEZsZXhQcm9wcyB8IFZlcnRpY2FsRmxleFByb3BzKSAmIHtcbiAgZ2FwPzogVFNoaXJ0U2l6ZSB8IHsgcm93PzogVFNoaXJ0U2l6ZTsgY29sdW1uPzogVFNoaXJ0U2l6ZSB9O1xuICB3cmFwPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFNpbXBsZUZsZXhQcm9wID0gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgRmxleFBsdWdpblByb3BzID0geyAkZmxleD86IFNpbXBsZUZsZXhQcm9wIHwgTWF4aW1hbEZsZXhQcm9wcyB9O1xuXG5leHBvcnQgY29uc3QgZmxleFBsdWdpbiA9IGdldFBsdWdpbjxGbGV4UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGZsZXggfSA9IHByb3BzO1xuXG4gIGlmICghJGZsZXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGZsZXg6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvbiA9IFwiaG9yaXpvbnRhbFwiLFxuICAgIHZlcnRpY2FsQWxpZ24gPSBcIlwiLFxuICAgIGhvcml6b250YWxBbGlnbiA9IFwiXCIsXG4gICAgZ2FwID0gdW5kZWZpbmVkLFxuICAgIHdyYXAsXG4gIH0gPSAkZmxleCA9PT0gdHJ1ZSA/IHt9IDogJGZsZXg7XG5cbiAgY29uc3QgaG9yaXpvbnRhbEFsaWduUHJvcHMgPSB7XG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLXN0cmV0Y2hgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3RyZXRjaFwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJib3R0b21cIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzcGFjZS1hcm91bmRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2VlbmBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInNwYWNlLWJldHdlZW5cIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXN0cmV0Y2hgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJjZW50ZXJcIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0YF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIikgfHxcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSxcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsLXJldmVyc2VkXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIiksXG4gIH07XG5cbiAgY29uc3QgdmVydGljYWxBbGlnblByb3BzID0ge1xuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYXJvdW5kXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5gXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYmV0d2VlblwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwidmVydGljYWxcIiAmJiB2ZXJ0aWNhbEFsaWduID09PSBcInRvcFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbC1yZXZlcnNlZFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpLFxuXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1mbGV4RW5kYF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpIHx8XG4gICAgICAoZGlyZWN0aW9uID09PSBcInZlcnRpY2FsLXJldmVyc2VkXCIgJiYgdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIiksXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInN0cmV0Y2hcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyYF1dOiBob3Jpem9udGFsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInJpZ2h0XCIsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBmbGV4U3R5bGVzLmZsZXgsXG4gICAgICBmbGV4U3R5bGVzW2BmbGV4X19kaXJlY3Rpb24tLSR7ZGlyZWN0aW9ufWBdLFxuXG4gICAgICBbXCJob3Jpem9udGFsXCIsIFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiXS5pbmNsdWRlcyhkaXJlY3Rpb24pID8gaG9yaXpvbnRhbEFsaWduUHJvcHMgOiB2ZXJ0aWNhbEFsaWduUHJvcHMsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZmxleFN0eWxlc1tgZmxleF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHdyYXAgJiYgZmxleFN0eWxlc1tgZmxleF9fd3JhcC0td3JhcGBdLFxuXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG5cbiAgICAkZmxleDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZ3JpZC9ncmlkLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JpZFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19fTVBUaE9cIixcbiAgXCJncmlkX19jb2x1bW5zLS0xXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTFfX19ZMFUyTVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTJcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tMl9fX1lnUzRIXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tM1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS0zX19fbWFCRDJcIixcbiAgXCJncmlkX19jb2x1bW5zLS00XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTRfX183M0JqQVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTVcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tNV9fX1NsdC1EXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tNlwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS02X19fbnlNOHpcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1zdHJldGNoXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0cmV0Y2hfX194WGQzWlwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLWNlbnRlclwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19hbGlnbkl0ZW1zLS1jZW50ZXJfX19FOG1MLVwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLXN0YXJ0XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0YXJ0X19fMk5kdlNcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1lbmRcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fYWxpZ25JdGVtcy0tZW5kX19fMUlwWW1cIixcbiAgXCJncmlkX19nYXAtLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS16ZXJvX19fRzFxOGRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0temVyb1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0temVyb19fX3lnUXBKXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXplcm9fX193MS1PeFwiLFxuICBcImdyaWRfX2dhcC0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNHhzX19fek8wbXZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS00eHNfX19HVW9kM1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS00eHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTR4c19fX3NWUVplXCIsXG4gIFwiZ3JpZF9fZ2FwLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0zeHNfX18tSXhTd1wiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTN4c19fX3V3NDY2XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTN4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tM3hzX19fSmZ3bVlcIixcbiAgXCJncmlkX19nYXAtLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4c19fX2doOGMtXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhzX19fRTc2Z0tcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eHNfX19uaHh6LVwiLFxuICBcImdyaWRfX2dhcC0teHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS14c19fX0dINGgyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS14c19fX3VScXJpXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14c19fX2xBTkV1XCIsXG4gIFwiZ3JpZF9fZ2FwLS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tc19fXzdSMHBzXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXNfX19hRFZBR1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS1zX19fQVJEbXhcIixcbiAgXCJncmlkX19nYXAtLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1tX19fbTNYaWhcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tbVwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tbV9fX0NzeWVNXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLW1fX19zT0FYblwiLFxuICBcImdyaWRfX2dhcC0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWxfX18wU3lLbFwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS1sXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS1sX19fSnZKaE1cIixcbiAgXCJncmlkX19nYXAtLXJvdy0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tbF9fX2FwSDhiXCIsXG4gIFwiZ3JpZF9fZ2FwLS14bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXhsX19fSS12UnRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXhsX19fdDBTTzNcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXhsX19fZXZORWRcIixcbiAgXCJncmlkX19nYXAtLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4bF9fX2VXUzAyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhsX19fcy0tLWJcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eGxfX19KNEY3b1wiLFxuICBcImdyaWRfX2dhcC0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tM3hsX19fSFZsa0RcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS0zeGxfX196S3RMTFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0zeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTN4bF9fX0U5U1Y5XCIsXG4gIFwiZ3JpZF9fZ2FwLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS00eGxfX19NM0czZlwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTR4bF9fX25udC1wXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTR4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tNHhsX19fMVc4YmRcIixcbiAgXCJncmlkX19nYXAtLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTV4bF9fX3lBblhEXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tNXhsX19fMnc0UjFcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tNXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS01eGxfX19WQ2ZqZ1wiLFxuICBcImdyaWRfX2dhcC0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNnhsX19faEVsMEZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS02eGxfX19GeFB0cFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS02eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTZ4bF9fX3luMWYtXCIsXG4gIFwiZ3JpZF9fZ2FwLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS03eGxfX19nYkdIdVwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTd4bF9fX1Z5ajFwXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTd4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tN3hsX19fNUJCc1NcIixcbiAgXCJncmlkX19nYXAtLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTh4bF9fX2pDbG1DXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tOHhsX19fYnE3RXpcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tOHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS04eGxfX193TnVaMlwiLFxuICBcImdyaWRfX2dhcC0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tOXhsX19faW5FMUVcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS05eGxfX19Nc2ZqcVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS05eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTl4bF9fX2kyMy1jXCIsXG4gIFwiZ3JpZF9fZ2FwLS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tMTB4bF9fX0xDRHRjXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxfX19vOGNCeVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS0xMHhsX19fUmpSdzlcIixcbiAgXCJncmlkX19nYXAtLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0xMXhsX19fU3F1TmFcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tMTF4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tMTF4bF9fX3VTZVd6XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTExeGxfX19qcUctSVwiXG59OyIsICJpbXBvcnQgZ3JpZFN0eWxlcyBmcm9tIFwiLi9ncmlkLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgR3JpZENvbHVtbnMgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG5cbmV4cG9ydCB0eXBlIEdyaWRQcm9wcyA9IHtcbiAgY29sdW1uczogR3JpZENvbHVtbnM7XG4gIGdhcD86IFRTaGlydFNpemUgfCB7IHJvdz86IFRTaGlydFNpemU7IGNvbHVtbj86IFRTaGlydFNpemUgfTtcbiAgYWxpZ25JdGVtcz86IFwic3RyZXRjaFwiIHwgXCJjZW50ZXJcIiB8IFwic3RhcnRcIiB8IFwiZW5kXCI7XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkUGx1Z2luUHJvcHMgPSB7ICRncmlkPzogR3JpZFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBncmlkUGx1Z2luID0gZ2V0UGx1Z2luPEdyaWRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZ3JpZCB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkZ3JpZCkge1xuICAgIHJldHVybiB7ICRncmlkOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgY29sdW1ucywgZ2FwLCBhbGlnbkl0ZW1zIH0gPSAkZ3JpZDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIGdyaWRTdHlsZXMuZ3JpZCxcbiAgICAgIGdyaWRTdHlsZXNbYGdyaWRfX2NvbHVtbnMtLSR7Y29sdW1uc31gXSxcbiAgICAgIGFsaWduSXRlbXMgPyBncmlkU3R5bGVzW2BncmlkX19hbGlnbkl0ZW1zLS0ke2FsaWduSXRlbXN9YF0gOiB1bmRlZmluZWQsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZ3JpZFN0eWxlc1tgZ3JpZF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcblxuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICBdLFxuXG4gICAgJGdyaWQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibWF4LXdpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLWZ1bGxfX19ub0lrVFwiLFxuICBcIm1heC13aWR0aC0tY29udGVudFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1jb250ZW50X19feWtzVXJcIixcbiAgXCJtYXgtd2lkdGgtLXplcm9cIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0temVyb19fXzhOVUYxXCIsXG4gIFwibWF4LXdpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNHhzX19fZ0hsTElcIixcbiAgXCJtYXgtd2lkdGgtLTN4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeHNfX19yZG9QOFwiLFxuICBcIm1heC13aWR0aC0teHhzXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXh4c19fX2pscDh2XCIsXG4gIFwibWF4LXdpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14c19fX2tRc1d4XCIsXG4gIFwibWF4LXdpZHRoLS1zXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXNfX19NZ0dhelwiLFxuICBcIm1heC13aWR0aC0tbVwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1tX19fYUZ6U2NcIixcbiAgXCJtYXgtd2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tbF9fX2lLbGFIXCIsXG4gIFwibWF4LXdpZHRoLS14bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14bF9fXzR6VWRDXCIsXG4gIFwibWF4LXdpZHRoLS14eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0teHhsX19fNTh6M1BcIixcbiAgXCJtYXgtd2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeGxfX18yWVhuSFwiLFxuICBcIm1heC13aWR0aC0tNHhsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTR4bF9fX2pGSjlWXCIsXG4gIFwibWF4LXdpZHRoLS01eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNXhsX19fNy1WUUdcIixcbiAgXCJtYXgtd2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS02eGxfX19QUzM3SlwiLFxuICBcIm1heC13aWR0aC0tN3hsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTd4bF9fX3NTQndrXCIsXG4gIFwibWF4LXdpZHRoLS04eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tOHhsX19fVjNJSHlcIixcbiAgXCJtYXgtd2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS05eGxfX180VldFTVwiLFxuICBcIm1heC13aWR0aC0tMTB4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0xMHhsX19fejk3VFFcIixcbiAgXCJtYXgtd2lkdGgtLTExeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tMTF4bF9fX2p4ZW5YXCIsXG4gIFwibWluLXdpZHRoXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGhfX19xbmxZQ1wiLFxuICBcIm1pbi13aWR0aC0tZml0XCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWZpdF9fXzJXLVREXCIsXG4gIFwibWluLXdpZHRoLS16ZXJvXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXplcm9fX185NDI5U1wiLFxuICBcIm1pbi13aWR0aC0tNHhzXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTR4c19fXzNUR00tXCIsXG4gIFwibWluLXdpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hzX19fUjZqMzJcIixcbiAgXCJtaW4td2lkdGgtLXh4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS14eHNfX192aktkQ1wiLFxuICBcIm1pbi13aWR0aC0teHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teHNfX19WLUwxc1wiLFxuICBcIm1pbi13aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS1zX19fZElmWm1cIixcbiAgXCJtaW4td2lkdGgtLW1cIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tbV9fX0pINUlQXCIsXG4gIFwibWluLXdpZHRoLS1sXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWxfX19HZ2tFOFwiLFxuICBcIm1pbi13aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teGxfX19hR0x1aVwiLFxuICBcIm1pbi13aWR0aC0teHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXh4bF9fX3pRT3RUXCIsXG4gIFwibWluLXdpZHRoLS0zeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hsX19fSmV2RFpcIixcbiAgXCJtaW4td2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS00eGxfX18xZTZOMVwiLFxuICBcIm1pbi13aWR0aC0tNXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTV4bF9fX0t1bXRvXCIsXG4gIFwibWluLXdpZHRoLS02eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tNnhsX19fWUVrbThcIixcbiAgXCJtaW4td2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS03eGxfX192WDFGWVwiLFxuICBcIm1pbi13aWR0aC0tOHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTh4bF9fX1ZiUWhrXCIsXG4gIFwibWluLXdpZHRoLS05eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tOXhsX19fZVVLUWlcIixcbiAgXCJtaW4td2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tMTB4bF9fX1pvTjNOXCIsXG4gIFwibWluLXdpZHRoLS0xMXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTExeGxfX19CTkZqQVwiLFxuICBcIndpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tZnVsbF9fXzFtcGl6XCIsXG4gIFwid2lkdGgtLXN0cmV0Y2hcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1zdHJldGNoX19fUnF3MDBcIixcbiAgXCJ3aWR0aC0temVyb1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXplcm9fX19JTmRWdlwiLFxuICBcIndpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS00eHNfX19kUlVoV1wiLFxuICBcIndpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0zeHNfX19vUkowelwiLFxuICBcIndpZHRoLS14eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14eHNfX19IeWw5UlwiLFxuICBcIndpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXhzX19fRzNqUXpcIixcbiAgXCJ3aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXNfX18tbXpxbVwiLFxuICBcIndpZHRoLS1tXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tbV9fX21FWjc3XCIsXG4gIFwid2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1sX19fcXlJTjdcIixcbiAgXCJ3aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14bF9fX21PMjVJXCIsXG4gIFwid2lkdGgtLXh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXh4bF9fX0VHUU1wXCIsXG4gIFwid2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTN4bF9fX0h1bDctXCIsXG4gIFwid2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTR4bF9fX3pPUGJTXCIsXG4gIFwid2lkdGgtLTV4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTV4bF9fX3hicW5pXCIsXG4gIFwid2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTZ4bF9fX05tYmY5XCIsXG4gIFwid2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTd4bF9fX0IwbnZ3XCIsXG4gIFwid2lkdGgtLTh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTh4bF9fX1cxSERQXCIsXG4gIFwid2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTl4bF9fX0tKTDhVXCIsXG4gIFwid2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0xMHhsX19fOTR6MTlcIixcbiAgXCJ3aWR0aC0tMTF4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTExeGxfX19qQi1MblwiXG59OyIsICJpbXBvcnQgd2lkdGhTdHlsZXMgZnJvbSBcIi4vd2lkdGgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBzdHlsZVBsdWdpbiB9IGZyb20gXCIuLi9zdHlsZS9zdHlsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG4vKiogQSBzaGFyZSBvZiB0aGUgcGFyZW50J3Mgd2lkdGgsIGUuZy4gYFwiMzAlXCJgLCBmb3IgbGF5b3V0cyB0aGF0IGRpdmlkZSBhIHJvdyByYXRoZXIgdGhhbiBzaXplIGEgYm94LiAqL1xuZXhwb3J0IHR5cGUgUGVyY2VudGFnZSA9IGAke251bWJlcn0lYDtcblxuZXhwb3J0IHR5cGUgJFdpZHRoUHJvcHMgPSB7XG4gIHdpZHRoPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBQZXJjZW50YWdlO1xuICBtaW4/OiBUU2hpcnRTaXplIHwgXCJmaXRcIiB8IFBlcmNlbnRhZ2U7XG4gIG1heD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwiY29udGVudFwiIHwgUGVyY2VudGFnZTtcbn07XG5cbmV4cG9ydCB0eXBlIFdpZHRoUGx1Z2luUHJvcHMgPSB7ICR3aWR0aD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwic3RyZXRjaFwiIHwgUGVyY2VudGFnZSB8ICRXaWR0aFByb3BzIH07XG5cbmNvbnN0IGlzUGVyY2VudGFnZSA9ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgUGVyY2VudGFnZSA9PiB2YWx1ZT8uZW5kc1dpdGgoXCIlXCIpID09PSB0cnVlO1xuXG5leHBvcnQgY29uc3Qgd2lkdGhQbHVnaW4gPSBnZXRQbHVnaW48V2lkdGhQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICR3aWR0aCwgJGNsYXNzTmFtZSwgJHN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgeyB3aWR0aCwgbWluLCBtYXggfSA9IHR5cGVvZiAkd2lkdGggPT09IFwic3RyaW5nXCIgPyB7IHdpZHRoOiAkd2lkdGggfSA6ICgkd2lkdGggPz8ge30pO1xuICBjb25zdCBwZXJjZW50YWdlcyA9IHtcbiAgICAuLi4oaXNQZXJjZW50YWdlKHdpZHRoKSA/IHsgd2lkdGggfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1pbikgPyB7IG1pbldpZHRoOiBtaW4gfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1heCkgPyB7IG1heFdpZHRoOiBtYXggfSA6IHt9KSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHdpZHRoICYmICFpc1BlcmNlbnRhZ2Uod2lkdGgpID8gd2lkdGhTdHlsZXNbYHdpZHRoLS0ke3dpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluICYmICFpc1BlcmNlbnRhZ2UobWluKSA/IHdpZHRoU3R5bGVzW2BtaW4td2lkdGgtLSR7bWlufWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWF4ICYmICFpc1BlcmNlbnRhZ2UobWF4KSA/IHdpZHRoU3R5bGVzW2BtYXgtd2lkdGgtLSR7bWF4fWBdIDogdW5kZWZpbmVkLFxuICAgICAgJGNsYXNzTmFtZSxcbiAgICBdLFxuICAgICRzdHlsZTogT2JqZWN0LmtleXMocGVyY2VudGFnZXMpLmxlbmd0aCA+IDAgPyB7IC4uLiRzdHlsZSwgLi4ucGVyY2VudGFnZXMgfSA6ICRzdHlsZSxcbiAgICAkd2lkdGg6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5leHBvcnQgdHlwZSBTdHlsZVBsdWdpblByb3BzID0geyAkc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzOyBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfTtcblxuZXhwb3J0IGNvbnN0IHN0eWxlUGx1Z2luID0gZ2V0UGx1Z2luPFN0eWxlUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCAkc3R5bGUgPSBwcm9wcy4kc3R5bGUgfHwge307XG5cbiAgY29uc3Qgc3R5bGUgPSBwcm9wcy5zdHlsZSB8fCB7fTtcblxuICByZXR1cm4ge1xuICAgIHN0eWxlOiB7IC4uLiRzdHlsZSwgLi4uc3R5bGUgfSxcbiAgICAkc3R5bGU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJtYXgtaGVpZ2h0LS1mdWxsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tZnVsbF9fXy1pb2pmXCIsXG4gIFwibWF4LWhlaWdodC0temVyb1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXplcm9fX19kNTd3V1wiLFxuICBcIm1heC1oZWlnaHQtLTR4c1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTR4c19fX0xKVUJuXCIsXG4gIFwibWF4LWhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hzX19fLTJXby1cIixcbiAgXCJtYXgtaGVpZ2h0LS14eHNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS14eHNfX19oRnJCZVwiLFxuICBcIm1heC1oZWlnaHQtLXhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teHNfX19jMnBhRFwiLFxuICBcIm1heC1oZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS1zX19fQWNwNlRcIixcbiAgXCJtYXgtaGVpZ2h0LS1tXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tbV9fX1Z6b1E5XCIsXG4gIFwibWF4LWhlaWdodC0tbFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLWxfX19XZ2xxYlwiLFxuICBcIm1heC1oZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teGxfX19MVW1sSlwiLFxuICBcIm1heC1oZWlnaHQtLXh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXh4bF9fX2RSM3pLXCIsXG4gIFwibWF4LWhlaWdodC0tM3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hsX19fYnViVERcIixcbiAgXCJtYXgtaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS00eGxfX19iZFpYNlwiLFxuICBcIm1heC1oZWlnaHQtLTV4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTV4bF9fX1RVVEFSXCIsXG4gIFwibWF4LWhlaWdodC0tNnhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tNnhsX19fR2MtSGxcIixcbiAgXCJtYXgtaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS03eGxfX19ZeGR0WFwiLFxuICBcIm1heC1oZWlnaHQtLTh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTh4bF9fX0EyV3ZkXCIsXG4gIFwibWF4LWhlaWdodC0tOXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tOXhsX19fSnZyR0pcIixcbiAgXCJtYXgtaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tMTB4bF9fX3dMUlF1XCIsXG4gIFwibWF4LWhlaWdodC0tMTF4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTExeGxfX19nVTN4SVwiLFxuICBcIm1pbi1oZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS16ZXJvX19fUEJWNDdcIixcbiAgXCJtaW4taGVpZ2h0LS00eHNcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS00eHNfX19WM04tYlwiLFxuICBcIm1pbi1oZWlnaHQtLTN4c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4c19fX3RnRFFRXCIsXG4gIFwibWluLWhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0teHhzX19fLXFoU3pcIixcbiAgXCJtaW4taGVpZ2h0LS14c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhzX19fWklwcXVcIixcbiAgXCJtaW4taGVpZ2h0LS1zXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tc19fX3hNaUdjXCIsXG4gIFwibWluLWhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLW1fX19WRVdMclwiLFxuICBcIm1pbi1oZWlnaHQtLWxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS1sX19fYTYtRjdcIixcbiAgXCJtaW4taGVpZ2h0LS14bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhsX19fLXlsRnVcIixcbiAgXCJtaW4taGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS14eGxfX183SzZmLVwiLFxuICBcIm1pbi1oZWlnaHQtLTN4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4bF9fXzBGWlFtXCIsXG4gIFwibWluLWhlaWdodC0tNHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tNHhsX19fY0dvSmtcIixcbiAgXCJtaW4taGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS01eGxfX19mVjNhT1wiLFxuICBcIm1pbi1oZWlnaHQtLTZ4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTZ4bF9fX0ZrVUdDXCIsXG4gIFwibWluLWhlaWdodC0tN3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tN3hsX19fQ3Npd1ZcIixcbiAgXCJtaW4taGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS04eGxfX19oLS1ES1wiLFxuICBcIm1pbi1oZWlnaHQtLTl4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTl4bF9fX25GTVNIXCIsXG4gIFwibWluLWhlaWdodC0tMTB4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTEweGxfX19LYS1jQVwiLFxuICBcIm1pbi1oZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS0xMXhsX19fZlFzZ2NcIixcbiAgXCJoZWlnaHQtLXN0cmV0Y2hcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXN0cmV0Y2hfX19yWWFZblwiLFxuICBcImhlaWdodC0tZnVsbFwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tZnVsbF9fX3ZXeGllXCIsXG4gIFwiaGVpZ2h0LS1hdXRvXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1hdXRvX19fNjduRk5cIixcbiAgXCJoZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXplcm9fX19BcUEwUFwiLFxuICBcImhlaWdodC0tNHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS00eHNfX19GZEowaFwiLFxuICBcImhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0zeHNfX19hc1VKYlwiLFxuICBcImhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14eHNfX19ZcVRxcFwiLFxuICBcImhlaWdodC0teHNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXhzX19fbE5SdFlcIixcbiAgXCJoZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXNfX19IN20tLVwiLFxuICBcImhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tbV9fX0NtTHAxXCIsXG4gIFwiaGVpZ2h0LS1sXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1sX19fMnRra2hcIixcbiAgXCJoZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14bF9fXzd4QkppXCIsXG4gIFwiaGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXh4bF9fX0NqU3U1XCIsXG4gIFwiaGVpZ2h0LS0zeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTN4bF9fX3BVZHZOXCIsXG4gIFwiaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTR4bF9fX1FIWll5XCIsXG4gIFwiaGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTV4bF9fX1diZ283XCIsXG4gIFwiaGVpZ2h0LS02eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTZ4bF9fX2t3YzhhXCIsXG4gIFwiaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTd4bF9fX211TzFsXCIsXG4gIFwiaGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTh4bF9fXzlwRU1OXCIsXG4gIFwiaGVpZ2h0LS05eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTl4bF9fXzZlNDZRXCIsXG4gIFwiaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0xMHhsX19fWGdYcC1cIixcbiAgXCJoZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTExeGxfX19hZHd1SFwiXG59OyIsICJpbXBvcnQgaGVpZ2h0U3R5bGVzIGZyb20gXCIuL2hlaWdodC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlICRIZWlnaHRQcm9wcyA9IHtcbiAgaGVpZ2h0PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBcImF1dG9cIjtcbiAgbWluPzogVFNoaXJ0U2l6ZTtcbiAgbWF4PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xufTtcblxuZXhwb3J0IHR5cGUgSGVpZ2h0UGx1Z2luUHJvcHMgPSB7ICRoZWlnaHQ/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCBcImF1dG9cIiB8IFwic3RyZXRjaFwiIHwgJEhlaWdodFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBoZWlnaHRQbHVnaW4gPSBnZXRQbHVnaW48SGVpZ2h0UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGhlaWdodCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgaGVpZ2h0LCBtaW4sIG1heCB9ID0gdHlwZW9mICRoZWlnaHQgPT09IFwic3RyaW5nXCIgPyB7IGhlaWdodDogJGhlaWdodCB9IDogKCRoZWlnaHQgPz8ge30pO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgaGVpZ2h0ID8gaGVpZ2h0U3R5bGVzW2BoZWlnaHQtLSR7aGVpZ2h0fWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluID8gaGVpZ2h0U3R5bGVzW2BtaW4taGVpZ2h0LS0ke21pbn1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIG1heCA/IGhlaWdodFN0eWxlc1tgbWF4LWhlaWdodC0tJHttYXh9YF0gOiB1bmRlZmluZWQsXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG4gICAgJGhlaWdodDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBjb2xvclN0eWxlcyBmcm9tIFwiLi9jb2xvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSBUZXh0Q29sb3IgPSBDb2xvciB8IFRleHRDb2xvckFsaWFzO1xuXG5leHBvcnQgdHlwZSAkQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogVGV4dENvbG9yO1xuICByZWFkb25seSBob3Zlcj86IFRleHRDb2xvcjtcbiAgcmVhZG9ubHkgZGlzYWJsZWQ/OiBUZXh0Q29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSBDb2xvclBsdWdpblByb3BzID0geyByZWFkb25seSAkY29sb3I/OiBUZXh0Q29sb3IgfCAkQ29sb3JQcm9wcyB9O1xuZXhwb3J0IHR5cGUgVGV4dENvbG9yQWxpYXMgPSBrZXlvZiB0eXBlb2YgYWxpYXNUb05vbWluYWw7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0ge1xuICB0ZXh0TXV0ZWQ6IFwiZ3JleTI1XCIsXG4gIHRleHREZWZhdWx0OiBcImdyZXkyMFwiLFxuICB0ZXh0SGlnaGxpZ2h0OiBcImdyZXkxMFwiLFxufSBhcyBjb25zdDtcblxuY29uc3QgaXNUZXh0Q29sb3JBbGlhcyA9IChjb2xvcjogVGV4dENvbG9yKTogY29sb3IgaXMgVGV4dENvbG9yQWxpYXMgPT4gY29sb3IgaW4gYWxpYXNUb05vbWluYWw7XG5cbmV4cG9ydCBjb25zdCBjb2xvclBsdWdpbiA9IGdldFBsdWdpbjxDb2xvclBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRjbGFzc05hbWUsICRjb2xvciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZGlzYWJsZWQgfSA9IHR5cGVvZiAkY29sb3IgPT09IFwic3RyaW5nXCIgPyB7IG5vcm1hbDogJGNvbG9yIH0gOiAoJGNvbG9yID8/IHt9KTtcblxuICBjb25zdCBub3JtYWxDb2xvciA9IG5vcm1hbCA/IChpc1RleHRDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaG92ZXJDb2xvciA9IGhvdmVyID8gKGlzVGV4dENvbG9yQWxpYXMoaG92ZXIpID8gYWxpYXNUb05vbWluYWxbaG92ZXJdIDogaG92ZXIpIDogdW5kZWZpbmVkO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgPyAoaXNUZXh0Q29sb3JBbGlhcyhkaXNhYmxlZCkgPyBhbGlhc1RvTm9taW5hbFtkaXNhYmxlZF0gOiBkaXNhYmxlZCkgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICAkY2xhc3NOYW1lLFxuICAgICAgbm9ybWFsQ29sb3IgPyBjb2xvclN0eWxlc1tgY29sb3ItLSR7bm9ybWFsQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBob3ZlckNvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWhvdmVyLS0ke2hvdmVyQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgICBkaXNhYmxlZENvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLWRpc2FibGVkLS0ke2Rpc2FibGVkQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkY29sb3I6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2NvbG9yL2NvbG9yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiY29sb3ItLWluaGVyaXRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1pbmhlcml0X19fR01wLWFcIixcbiAgXCJjb2xvci1ob3Zlci0taW5oZXJpdFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWluaGVyaXRfX19mR0xLNlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1pbmhlcml0XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0taW5oZXJpdF9fX3M5TUNJXCIsXG4gIFwiY29sb3ItLXdoaXRlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0td2hpdGVfX19mOGMxc1wiLFxuICBcImNvbG9yLWhvdmVyLS13aGl0ZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdoaXRlX19fTTZhUmdcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0td2hpdGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13aGl0ZV9fX250allFXCIsXG4gIFwiY29sb3ItLXRyYW5zcGFyZW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tdHJhbnNwYXJlbnRfX18xdmZydlwiLFxuICBcImNvbG9yLWhvdmVyLS10cmFuc3BhcmVudFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXRyYW5zcGFyZW50X19feG03QkRcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tdHJhbnNwYXJlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS10cmFuc3BhcmVudF9fX1owUXVVXCIsXG4gIFwiY29sb3ItLWdyZXkxMDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MTAwX19fQ3BEenZcIixcbiAgXCJjb2xvci1ob3Zlci0tZ3JleTEwMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkxMDBfX19HRkNvbVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MTAwXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tZ3JleTEwMF9fXzhTUnVKXCIsXG4gIFwiY29sb3ItLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk4MF9fX0Q3MWZuXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk4MF9fX3NCSXhiXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk4MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk4MF9fX3cxbnBjXCIsXG4gIFwiY29sb3ItLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk2MF9fX1VUMjhYXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk2MF9fX3hmWm1iXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk2MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk2MF9fX21mVmdxXCIsXG4gIFwiY29sb3ItLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk0MF9fX2lST3pSXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk0MF9fX3JiTjA0XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk0MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk0MF9fX05pWnhpXCIsXG4gIFwiY29sb3ItLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkzMF9fX0x3bkwyXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkzMF9fX1g3aC1oXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkzMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkzMF9fX0txOWdXXCIsXG4gIFwiY29sb3ItLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkyNV9fX0VOVDVvXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkyNV9fX3RZeWdEXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkyNVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkyNV9fX2JtLTFjXCIsXG4gIFwiY29sb3ItLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkyMF9fX0VGMk9MXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkyMF9fX3VQdFhVXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkyMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkyMF9fX3ZwdXkxXCIsXG4gIFwiY29sb3ItLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkxMF9fX2w1YVpwXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXkxMF9fXzRBcGNyXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXkxMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkxMF9fX1k1cXl3XCIsXG4gIFwiY29sb3ItLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXk3MF9fX0M5SEhNXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk3MF9fXzNrcnRMXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWdyZXk3MFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXk3MF9fXzg2SnFWXCIsXG4gIFwiY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fLTNUZGRcIixcbiAgXCJjb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVfX19Eb2ZvMFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5ODBBbHBoYTg1XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tZ3JleTgwQWxwaGE4NV9fX2VSM3pzXCIsXG4gIFwiY29sb3ItLXByaW1hcnlcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1wcmltYXJ5X19fMDhXblZcIixcbiAgXCJjb2xvci1ob3Zlci0tcHJpbWFyeVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXByaW1hcnlfX19WdC0zZlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1wcmltYXJ5XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tcHJpbWFyeV9fXzBYc2s5XCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1zdWNjZXNzX19fd29URjJcIixcbiAgXCJjb2xvci1ob3Zlci0tc3VjY2Vzc1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXN1Y2Nlc3NfX183RUlXY1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1zdWNjZXNzXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tc3VjY2Vzc19fX05lMldJXCIsXG4gIFwiY29sb3ItLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLW5vdGljZV9fXzZENktHXCIsXG4gIFwiY29sb3ItaG92ZXItLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLW5vdGljZV9fX2VPZFVwXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLW5vdGljZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLW5vdGljZV9fX3NEbzhyXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS13YXJuaW5nX19fZktid2RcIixcbiAgXCJjb2xvci1ob3Zlci0td2FybmluZ1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdhcm5pbmdfX19HajJoTVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS13YXJuaW5nXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0td2FybmluZ19fX3JYRGJSXCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tY3JpdGljYWxfX19zaEZCcVwiLFxuICBcImNvbG9yLWhvdmVyLS1jcml0aWNhbFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNyaXRpY2FsX19fUlFXWllcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tY3JpdGljYWxcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1jcml0aWNhbF9fX2gzNy0zXCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tc3VjY2Vzc1RpbnRfX19EZDBSeVwiLFxuICBcImNvbG9yLWhvdmVyLS1zdWNjZXNzVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXN1Y2Nlc3NUaW50X19fTEtsemdcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tc3VjY2Vzc1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1zdWNjZXNzVGludF9fX2xzbUpoXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0td2FybmluZ1RpbnRfX19qM1BaWFwiLFxuICBcImNvbG9yLWhvdmVyLS13YXJuaW5nVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdhcm5pbmdUaW50X19fam4xd3VcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0td2FybmluZ1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13YXJuaW5nVGludF9fX1c2akk4XCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsVGludF9fX3lSSmFBXCIsXG4gIFwiY29sb3ItaG92ZXItLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNyaXRpY2FsVGludF9fX1Zzb041XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsVGludF9fX1RBQkhrXCIsXG4gIFwiY29sb3ItLWxpbmtcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1saW5rX19fblNNbTlcIixcbiAgXCJjb2xvci1ob3Zlci0tbGlua1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWxpbmtfX19HbmlZM1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1saW5rXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tbGlua19fX0ZvSjVYXCIsXG4gIFwiY29sb3ItLWNvZGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1jb2RlX19fbkNPakFcIixcbiAgXCJjb2xvci1ob3Zlci0tY29kZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNvZGVfX19WNXV1VlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1jb2RlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tY29kZV9fX3czVlV3XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZ3JhZGllbnRTdHlsZXMgZnJvbSBcIi4vZ3JhZGllbnQubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgR3JhZGllbnRQbHVnaW5Qcm9wcyA9IHsgJGdyYWRpZW50PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgZ3JhZGllbnRQbHVnaW4gPSBnZXRQbHVnaW48R3JhZGllbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBwcm9wcy4kZ3JhZGllbnQgPyBncmFkaWVudFN0eWxlcy5ncmFkaWVudCA6IHVuZGVmaW5lZF0sXG4gICRncmFkaWVudDogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2dyYWRpZW50L2dyYWRpZW50Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JhZGllbnRcIjogXCJncmFkaWVudC1tb2R1bGVfX2dyYWRpZW50X19fTURCdkZcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IERyYWdnYWJsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyBhY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9fc2hhcmVkL2RyYWdnZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9kcmFnZ2FibGUubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBkcmFnZ2FibGVQbHVnaW4gPSBnZXRQbHVnaW48RHJhZ2dhYmxlUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGRyYWdnYWJsZSkge1xuICAgIHJldHVybiB7ICRkcmFnZ2FibGU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgY29uc3QgW2RyYWdnaW5nLCBzZXREcmFnZ2luZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgeyBjb250ZXh0LCBpdGVtIH0gPSBwcm9wcy4kZHJhZ2dhYmxlO1xuXG4gIGNvbnN0IGRyYWdnZWRJdGVtU3RhdGUgPSB1c2VTeW5jSW5qZWN0KGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlLCBjb250ZXh0KTtcblxuICByZXR1cm4ge1xuICAgIGRyYWdnYWJsZTogdHJ1ZSxcblxuICAgICR2aXN1YWxseUhpZGRlbjogZHJhZ2dpbmcsXG5cbiAgICBvbkRyYWdTdGFydDogYWN0aW9uKChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgZXZlbnQuZGF0YVRyYW5zZmVyLmVmZmVjdEFsbG93ZWQgPSBcIm1vdmVcIjtcblxuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25EcmFnU3RhcnQ/LihldmVudCk7XG5cbiAgICAgIG1ha2VDaHJvbWl1bU5vdEdsaXRjaFdoZW5EcmFnZ2luZyhldmVudCk7XG5cbiAgICAgIGRyYWdnZWRJdGVtU3RhdGUuc2V0KGl0ZW0pO1xuXG4gICAgICAvLyBEb24ndCBzZXQgZHJhZ2dpbmcgdG9vIGVhcmx5LCBiZWNhdXNlIGl0IHdvdWxkIGhpZGUgdGhlIFwiZHJhZyBwcmV2aWV3XCIgZm9yIGVsZW1lbnQgYmVpbmcgZHJhZ2dlZC5cbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXREcmFnZ2luZyh0cnVlKTtcbiAgICAgIH0sIDApO1xuICAgIH0pLFxuXG4gICAgb25EcmFnRW5kOiBhY3Rpb24oKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBwcm9wcy5vbkRyYWdFbmQ/LihldmVudCk7XG5cbiAgICAgIGRyYWdnZWRJdGVtU3RhdGUuc2V0KHVuZGVmaW5lZCk7XG4gICAgICBzZXREcmFnZ2luZyhmYWxzZSk7XG4gICAgfSksXG5cbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgc3R5bGVzLmRyYWdnYWJsZV0sXG5cbiAgICAkZHJhZ2dhYmxlOiB1bmRlZmluZWQsXG4gIH07XG59KTtcblxuY29uc3QgbWFrZUNocm9taXVtTm90R2xpdGNoV2hlbkRyYWdnaW5nID0gKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gIGV2ZW50LmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9wbGFpblwiLCBcInN0dWItZGF0YS10by1maXgtY2hyb21pdW1cIik7XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2RyYWdnYWJsZS5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImRyYWdnYWJsZVwiOiBcImRyYWdnYWJsZS1tb2R1bGVfX2RyYWdnYWJsZV9fX2JqQ0EzXCJcbn07IiwgImltcG9ydCB7IGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IG1ha2VTdXJlRHJhZ0FuZERyb3BFdmVudHNIYXZlVGltZVRvSGFwcGVuSW5qZWN0YWJsZSB9IGZyb20gXCIuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgRHJvcHBhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IGNvbnN0IGRyb3BwYWJsZVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wcGFibGVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGRyb3BwYWJsZSkge1xuICAgIHJldHVybiB7ICRkcm9wcGFibGU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgY29uc3QgeyBjb250ZXh0LCBvbkRyb3AgfSA9IHByb3BzLiRkcm9wcGFibGU7XG5cbiAgY29uc3QgZHJhZ2dlZEl0ZW1TdGF0ZSA9IHVzZVN5bmNJbmplY3QoZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUsIGNvbnRleHQpO1xuICBjb25zdCBzb21lID0gdXNlU3luY0luamVjdChtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUpO1xuXG4gIGNvbnN0IGRyYWdnZWRJdGVtID0gZHJhZ2dlZEl0ZW1TdGF0ZS5nZXQoKTtcblxuICByZXR1cm4ge1xuICAgIG9uRHJhZ092ZXI6IChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25EcmFnT3Zlcj8uKGV2ZW50KTtcblxuICAgICAgaWYgKGRyYWdnZWRJdGVtKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uRHJvcDogKGV2ZW50OiBSZWFjdC5EcmFnRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgICBwcm9wcy5vbkRyb3A/LihldmVudCk7XG5cbiAgICAgIGlmIChkcmFnZ2VkSXRlbSkge1xuICAgICAgICBzb21lKCgpID0+IHtcbiAgICAgICAgICBvbkRyb3AoZHJhZ2dlZEl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgJGRyb3BwYWJsZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0cmFuc2l0aW9uU3R5bGVzIGZyb20gXCIuL3RyYW5zaXRpb24ubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgVHJhbnNpdGlvblBsdWdpblByb3BzID0geyAkdHJhbnNpdGlvbj86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zaXRpb25QbHVnaW4gPSBnZXRQbHVnaW48VHJhbnNpdGlvblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3RyYW5zaXRpb25TdHlsZXMudHJhbnNpdGlvbl06ICEhcHJvcHMuJHRyYW5zaXRpb24gfV0sXG4gICR0cmFuc2l0aW9uOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwidHJhbnNpdGlvblwiOiBcInRyYW5zaXRpb24tbW9kdWxlX190cmFuc2l0aW9uX19fU3d3T0VcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBvZmZzZXRTdHlsZXMgZnJvbSBcIi4vb2Zmc2V0Lm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IERpcmVjdGlvbiB9IGZyb20gXCIuLi9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlIE9mZnNldFBsdWdpblByb3BzID0geyAkb2Zmc2V0PzogeyBkaXJlY3Rpb246IERpcmVjdGlvbjsgc2l6ZTogVFNoaXJ0U2l6ZSB9IH07XG5cbmV4cG9ydCBjb25zdCBvZmZzZXRQbHVnaW4gPSBnZXRQbHVnaW48T2Zmc2V0UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJG9mZnNldCkge1xuICAgIHJldHVybiB7ICRvZmZzZXQ6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgb2Zmc2V0U3R5bGVzW2BvZmZzZXRfXyR7cHJvcHMuJG9mZnNldC5kaXJlY3Rpb259LS0ke3Byb3BzLiRvZmZzZXQuc2l6ZX1gXV0sXG5cbiAgICAkb2Zmc2V0OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vZmZzZXQvb2Zmc2V0Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib2Zmc2V0X190b3AtLXplcm9cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0temVyb19fX2Fwck9yXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXplcm9cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0temVyb19fX2JGTnk0XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS16ZXJvX19fNUtkTXhcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0temVyb19fX0RyajB1XCIsXG4gIFwib2Zmc2V0X190b3AtLTR4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS00eHNfX19GYTh6ZVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tNHhzX19fSmM3WndcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTR4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tNHhzX19fdDdqR3pcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS00eHNfX18ybWNMWlwiLFxuICBcIm9mZnNldF9fdG9wLS0zeHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tM3hzX19faEh4QUtcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTN4c19fX3FQM0x2XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0zeHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTN4c19fX05tRDdpXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tM3hzX19fOVlsdWVcIixcbiAgXCJvZmZzZXRfX3RvcC0teHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXh4c19fX1pBS3hvXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS14eHNfX19rOUY0eFwiLFxuICBcIm9mZnNldF9fbGVmdC0teHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS14eHNfX19FRWY0RFwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXh4c19fXy1KNzVLXCIsXG4gIFwib2Zmc2V0X190b3AtLXhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXhzX19faXJwbmFcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0teHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0teHNfX18zR1hvSFwiLFxuICBcIm9mZnNldF9fbGVmdC0teHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXhzX19fN1dZSklcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS14c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXhzX19fcVktbE9cIixcbiAgXCJvZmZzZXRfX3RvcC0tc1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1zX19fTmRSS3FcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tc1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1zX19fWUtmOWVcIixcbiAgXCJvZmZzZXRfX2xlZnQtLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXNfX19taXhwQVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1zX19fbTZqZjVcIixcbiAgXCJvZmZzZXRfX3RvcC0tbVwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1tX19fRVhrcWlcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tbVwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1tX19fT3ZsWXJcIixcbiAgXCJvZmZzZXRfX2xlZnQtLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLW1fX19YUy1QR1wiLFxuICBcIm9mZnNldF9fcmlnaHQtLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1tX19fbzB6Wi1cIixcbiAgXCJvZmZzZXRfX3RvcC0tbFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS1sX19fMGJHYVBcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tbFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS1sX19fUzEtTFdcIixcbiAgXCJvZmZzZXRfX2xlZnQtLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLWxfX19oUzFiM1wiLFxuICBcIm9mZnNldF9fcmlnaHQtLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS1sX19fdlE0WXpcIixcbiAgXCJvZmZzZXRfX3RvcC0teGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0teGxfX182TWZLVlwiLFxuICBcIm9mZnNldF9fYm90dG9tLS14bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS14bF9fX2RnYldXXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS14bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0teGxfX18wYVdCNVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0teGxfX195UHo4T1wiLFxuICBcIm9mZnNldF9fdG9wLS14eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0teHhsX19faXZKUmRcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLXh4bF9fX1p0RTZaXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS14eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXh4bF9fXzRsSy1FXCIsXG4gIFwib2Zmc2V0X19yaWdodC0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0teHhsX19fRU04ckJcIixcbiAgXCJvZmZzZXRfX3RvcC0tM3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTN4bF9fX0E5QmtuXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS0zeGxfX196QzgtYVwiLFxuICBcIm9mZnNldF9fbGVmdC0tM3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0zeGxfX19XckwtVFwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTN4bF9fX25lV2FwXCIsXG4gIFwib2Zmc2V0X190b3AtLTR4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS00eGxfX19CV1E5aVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tNHhsX19fOFg0a0VcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTR4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tNHhsX19fSGM0MFRcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS00eGxfX19zUmpHUVwiLFxuICBcIm9mZnNldF9fdG9wLS01eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tNXhsX19fNnVSWFlcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTV4bF9fX25XYzZuXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS01eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTV4bF9fX1ZrV3pKXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tNXhsX19fY25nS0VcIixcbiAgXCJvZmZzZXRfX3RvcC0tNnhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTZ4bF9fX3RyN2hIXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS02eGxfX19DWVUxTVwiLFxuICBcIm9mZnNldF9fbGVmdC0tNnhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS02eGxfX18wSXVNYlwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTZ4bF9fXy0xc3dvXCIsXG4gIFwib2Zmc2V0X190b3AtLTd4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS03eGxfX19ONy1YZFwiLFxuICBcIm9mZnNldF9fYm90dG9tLS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tN3hsX19fLXBBaHlcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTd4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tN3hsX19fbXhWcmtcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS03eGxfX19uenVsUFwiLFxuICBcIm9mZnNldF9fdG9wLS04eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tOHhsX19fZU0tN1dcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTh4bF9fX2VucEVtXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS04eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTh4bF9fX2ppRlluXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tOHhsX19fRk5xTnNcIixcbiAgXCJvZmZzZXRfX3RvcC0tOXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTl4bF9fXy1DbWg5XCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS05eGxfX190d0UzdFwiLFxuICBcIm9mZnNldF9fbGVmdC0tOXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS05eGxfX183NW11YlwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTl4bF9fX2tDU3NDXCIsXG4gIFwib2Zmc2V0X190b3AtLTEweGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tMTB4bF9fX2psYmhaXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTEweGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tMTB4bF9fX3JleVRxXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0xMHhsX19fOXAzY25cIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tMTB4bF9fX3Qtdm83XCIsXG4gIFwib2Zmc2V0X190b3AtLTExeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tMTF4bF9fXzBuclphXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTExeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tMTF4bF9fX3djZldnXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0xMXhsX19fc0l0ZzVcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tMTF4bF9fX05VcC1uXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgb2Zmc2V0U3R5bGVzIGZyb20gXCIuL29mZnNldC1jaGlsZHJlbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3Rpb24gfSBmcm9tIFwiLi4vX3NoYXJlZC9kaXJlY3Rpb25zXCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBPZmZzZXRDaGlsZHJlblBsdWdpblByb3BzID0geyAkb2Zmc2V0Q2hpbGRyZW4/OiB7IGRpcmVjdGlvbjogRGlyZWN0aW9uOyBzaXplOiBUU2hpcnRTaXplIH0gfTtcblxuZXhwb3J0IGNvbnN0IG9mZnNldENoaWxkcmVuUGx1Z2luID0gZ2V0UGx1Z2luPE9mZnNldENoaWxkcmVuUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJG9mZnNldENoaWxkcmVuKSB7XG4gICAgcmV0dXJuIHsgJG9mZnNldENoaWxkcmVuOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIG9mZnNldFN0eWxlc1tgb2Zmc2V0LWNoaWxkcmVuX18ke3Byb3BzLiRvZmZzZXRDaGlsZHJlbi5kaXJlY3Rpb259LS0ke3Byb3BzLiRvZmZzZXRDaGlsZHJlbi5zaXplfWBdLFxuICAgIF0sXG5cbiAgICAkb2Zmc2V0Q2hpbGRyZW46IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0temVyb1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS16ZXJvX19fOGx5R2lcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0temVyb1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS16ZXJvX19fRGJJM2pcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXplcm9fX19paG5TWFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS16ZXJvX19fUTRMWE9cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tNHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4c19fX0xmTTB4XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eHNfX19ZZXl3NlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS00eHNfX19UQWFES1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4c19fXzZpV1VvXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTN4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0zeHNfX191cmtpZ1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tM3hzX19feVhIM3pcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTN4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tM3hzX19fZ0F6VkFcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0zeHNfX19XcjQ4Y1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS14eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teHhzX19fZHFUVFNcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXh4c19fX0VwNjZSXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXh4c19fXzl2UFlkXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhzX19fanV1S3BcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0teHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teHNfX19udzVhYVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14c19fX0pnQzZsXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0teHNfX19jeHRWeFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHNfX18yaVA1Z1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1zXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLXNfX19IbTJpcFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1zXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXNfX19XYTM4TlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tc19fX1dXQkZoXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXNfX193ekZWOVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1tXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLW1fX19aak9DTVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1tXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLW1fX19pcERrV1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tbV9fX1k4cURXXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLW1fX180WEpmdlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS1sXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLWxfX19RdlRSb1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1sXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLWxfX19FR2tBUlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tbF9fX1VuVUh2XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLWxfX19qVk5OWFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS14bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS14bF9fX0VOY2NYXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXhsX19fYm1yc2FcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14bF9fX0tqby1jXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14bF9fX0RIUnV5XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLXh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS14eGxfX19vbmplQVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHhsX19fdi0xVGxcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0teHhsX19faS1jMmhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14eGxfX19xRzA4NVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS0zeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tM3hsX19fTDltc1FcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTN4bF9fX3dNTWJtXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0zeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTN4bF9fX2JTU09yXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hsX19fZTlXN3ZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tNHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4bF9fX1ZBay14XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eGxfX19EeXk1WFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS00eGxfX19YMHg1YVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTR4bF9fX1F1bC1qXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTV4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS01eGxfX19lVzVRa1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNXhsX19fcGlhLVpcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTV4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tNXhsX19faUFBaG9cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS01eGxfX194anVDTFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS02eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tNnhsX19fQzBXdmtcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTZ4bF9fXzg0enAtXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS02eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTZ4bF9fX2l1ZUJGXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNnhsX19fVU5RLUJcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tN3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTd4bF9fX2hQY2xjXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS03eGxfX181Ulp3UVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tN3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS03eGxfX19ISXA2QlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTd4bF9fX0ZpT0VJXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS04eGxfX19ndDRmdVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tOHhsX19fZlBFT0RcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTh4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tOHhsX19fLXRUZlBcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS04eGxfX19kVVhSaFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS05eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tOXhsX19fa1JOQTZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTl4bF9fX2piSGFCXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS05eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTl4bF9fX1NGZ1BsXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOXhsX19fVEppZUhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTB4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0xMHhsX19fLXV0T25cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTB4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0xMHhsX19fYTU5d1RcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTEweGxfX19LY2V6ZVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMHhsX19fTm9tWXVcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTF4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS0xMXhsX19fU1l0Z25cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTF4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0xMXhsX19fUDYydTRcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTExeGxfX19nMG9vZVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMXhsX19fRU9XTC1cIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBoaWRkZW5TdHlsZXMgZnJvbSBcIi4vaGlkZGVuLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEhpZGRlblBsdWdpblByb3BzID0geyAkaGlkZGVuPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgaGlkZGVuUGx1Z2luID0gZ2V0UGx1Z2luPEhpZGRlblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW2hpZGRlblN0eWxlcy5oaWRkZW5dOiAhIXByb3BzLiRoaWRkZW4gfV0sXG5cbiAgJGhpZGRlbjogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW4ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJoaWRkZW5cIjogXCJoaWRkZW4tbW9kdWxlX19oaWRkZW5fX19uVVVpMVwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IG1hcmdpblN0eWxlcyBmcm9tIFwiLi9tYXJnaW4ubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGlzU3RyaW5nIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgRGlyZWN0aW9uYWxNYXJnaW4gPSB7XG4gIHRvcD86IFRTaGlydFNpemU7XG4gIGJvdHRvbT86IFRTaGlydFNpemU7XG4gIGxlZnQ/OiBUU2hpcnRTaXplO1xuICByaWdodD86IFRTaGlydFNpemU7XG4gIGhvcml6b250YWw/OiBUU2hpcnRTaXplO1xuICB2ZXJ0aWNhbD86IFRTaGlydFNpemU7XG59O1xuXG5leHBvcnQgdHlwZSBNYXJnaW5QbHVnaW5Qcm9wcyA9IHsgJG1hcmdpbj86IGJvb2xlYW4gfCBEaXJlY3Rpb25hbE1hcmdpbiB8IFRTaGlydFNpemUgfCBcImF1dG9cIiB9O1xuXG5leHBvcnQgY29uc3QgbWFyZ2luUGx1Z2luID0gZ2V0UGx1Z2luPE1hcmdpblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRtYXJnaW4pIHtcbiAgICByZXR1cm4geyAkbWFyZ2luOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IG1hcmdpbiA9IHByb3BzLiRtYXJnaW4gPT09IHRydWUgPyBcInhzXCIgOiBwcm9wcy4kbWFyZ2luO1xuXG4gIGlmIChpc1N0cmluZyhtYXJnaW4pKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBtYXJnaW5TdHlsZXNbYG1hcmdpbi0tJHttYXJnaW59YF1dLFxuICAgICAgJG1hcmdpbjogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB0b3BTaXplID0gbWFyZ2luLnRvcCB8fCBtYXJnaW4udmVydGljYWw7XG4gIGNvbnN0IGJvdHRvbVNpemUgPSBtYXJnaW4uYm90dG9tIHx8IG1hcmdpbi52ZXJ0aWNhbDtcbiAgY29uc3QgcmlnaHRTaXplID0gbWFyZ2luLnJpZ2h0IHx8IG1hcmdpbi5ob3Jpem9udGFsO1xuICBjb25zdCBsZWZ0U2l6ZSA9IG1hcmdpbi5sZWZ0IHx8IG1hcmdpbi5ob3Jpem9udGFsO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIHRvcFNpemUgPyBtYXJnaW5TdHlsZXNbYG1hcmdpbl9fdG9wLS0ke3RvcFNpemV9YF0gOiB1bmRlZmluZWQsXG4gICAgICByaWdodFNpemUgPyBtYXJnaW5TdHlsZXNbYG1hcmdpbl9fcmlnaHQtLSR7cmlnaHRTaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgYm90dG9tU2l6ZSA/IG1hcmdpblN0eWxlc1tgbWFyZ2luX19ib3R0b20tLSR7Ym90dG9tU2l6ZX1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIGxlZnRTaXplID8gbWFyZ2luU3R5bGVzW2BtYXJnaW5fX2xlZnQtLSR7bGVmdFNpemV9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkbWFyZ2luOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibWFyZ2luX190b3AtLXplcm9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0temVyb19fX2dHTHF3XCIsXG4gIFwibWFyZ2luX190b3AtLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS00eHNfX19FdjhyN1wiLFxuICBcIm1hcmdpbl9fdG9wLS0zeHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tM3hzX19fbTRZT1pcIixcbiAgXCJtYXJnaW5fX3RvcC0teHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXh4c19fX29wWHZwXCIsXG4gIFwibWFyZ2luX190b3AtLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXhzX19fSklqWUNcIixcbiAgXCJtYXJnaW5fX3RvcC0tc1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1zX19fWU44RElcIixcbiAgXCJtYXJnaW5fX3RvcC0tbVwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1tX19fWHdrLVNcIixcbiAgXCJtYXJnaW5fX3RvcC0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS1sX19fS1RXaUdcIixcbiAgXCJtYXJnaW5fX3RvcC0teGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0teGxfX185SU9iWlwiLFxuICBcIm1hcmdpbl9fdG9wLS14eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0teHhsX19fM01XenBcIixcbiAgXCJtYXJnaW5fX3RvcC0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTN4bF9fX004eEgzXCIsXG4gIFwibWFyZ2luX190b3AtLTR4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS00eGxfX19ydk5IUlwiLFxuICBcIm1hcmdpbl9fdG9wLS01eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tNXhsX19fSW5FUnhcIixcbiAgXCJtYXJnaW5fX3RvcC0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTZ4bF9fX1BTLXQ2XCIsXG4gIFwibWFyZ2luX190b3AtLTd4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS03eGxfX19QNVlielwiLFxuICBcIm1hcmdpbl9fdG9wLS04eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tOHhsX19fOTZNb0tcIixcbiAgXCJtYXJnaW5fX3RvcC0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTl4bF9fX29wZURjXCIsXG4gIFwibWFyZ2luX190b3AtLTEweGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tMTB4bF9fX3B2RjZ4XCIsXG4gIFwibWFyZ2luX190b3AtLTExeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tMTF4bF9fX3BCekFtXCIsXG4gIFwibWFyZ2luX19yaWdodC0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXplcm9fX19CV3c2T1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTR4c19fX3JkUE9vXCIsXG4gIFwibWFyZ2luX19yaWdodC0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tM3hzX19fLVk5T09cIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS14eHNfX19Kcm9BQVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0teHNfX19abDhNaVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS1zX19fMjRESW5cIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tbV9fX1pMbDZCXCIsXG4gIFwibWFyZ2luX19yaWdodC0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLWxfX19lSFMtQlwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0teGxfX19JVzhkNFwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXh4bF9fXy1PRDdMXCIsXG4gIFwibWFyZ2luX19yaWdodC0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tM3hsX19fdEdZUlJcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS00eGxfX19FWHFoM1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTV4bF9fX0N1WVZHXCIsXG4gIFwibWFyZ2luX19yaWdodC0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tNnhsX19fREtnRFRcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS03eGxfX19Geng0YlwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTh4bF9fX0VsU1dNXCIsXG4gIFwibWFyZ2luX19yaWdodC0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tOXhsX19fMG9hVHhcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tMTB4bF9fX1E1NVBDXCIsXG4gIFwibWFyZ2luX19yaWdodC0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTExeGxfX19wMDJrblwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS16ZXJvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXplcm9fX19uLU5WUVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tNHhzX19faUpKYWFcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTN4c19fX2Z3UWQxXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXh4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14eHNfX182VWFmSFwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14c19fX3oySjFlXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tc19fXy1IRjZRXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLW1cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tbV9fX0pKT1JFXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tbF9fX0dJWmNGXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXhsX19fTTRBd05cIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0teHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXh4bF9fX1RyOG1aXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS0zeGxfX18tMFotSFwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tNHhsX19fNGxrU0ZcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tNXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTV4bF9fX3ppelVQXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS02eGxfX19zTW10S1wiLFxuICBcIm1hcmdpbl9fYm90dG9tLS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tN3hsX19fSk9BWnJcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tOHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTh4bF9fX0E1UTRDXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS05eGxfX183dVN6dlwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTEweGxfX19KbVFKNVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS0xMXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTExeGxfX182S0VZc1wiLFxuICBcIm1hcmdpbl9fbGVmdC0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0temVyb19fX3ZDdlNvXCIsXG4gIFwibWFyZ2luX19sZWZ0LS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTR4c19fX2xLNS15XCIsXG4gIFwibWFyZ2luX19sZWZ0LS0zeHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTN4c19fXzcteFYtXCIsXG4gIFwibWFyZ2luX19sZWZ0LS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXh4c19fX2dlNlZKXCIsXG4gIFwibWFyZ2luX19sZWZ0LS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0teHNfX19kdnJValwiLFxuICBcIm1hcmdpbl9fbGVmdC0tc1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tc19fX0RNWkoyXCIsXG4gIFwibWFyZ2luX19sZWZ0LS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS1tX19fNXBlZHdcIixcbiAgXCJtYXJnaW5fX2xlZnQtLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLWxfX18tU3hESVwiLFxuICBcIm1hcmdpbl9fbGVmdC0teGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXhsX19fNk4ta1pcIixcbiAgXCJtYXJnaW5fX2xlZnQtLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0teHhsX19fWWthcFlcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tM3hsX19fOFVVdXhcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTR4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNHhsX19fYXFsNWJcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNXhsX19faFFOdHBcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tNnhsX19fU3FQMzFcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTd4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tN3hsX19fZTBqLWpcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tOHhsX19fdWtwVnpcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tOXhsX19fbE5IQlRcIixcbiAgXCJtYXJnaW5fX2xlZnQtLTEweGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTEweGxfX19DQlVTblwiLFxuICBcIm1hcmdpbl9fbGVmdC0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tMTF4bF9fX3VjS0M4XCIsXG4gIFwibWFyZ2luLS16ZXJvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS16ZXJvX19feUtMREhcIixcbiAgXCJtYXJnaW4tLTR4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tNHhzX19fN25qc2lcIixcbiAgXCJtYXJnaW4tLTN4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tM3hzX19fa1dCYmVcIixcbiAgXCJtYXJnaW4tLXh4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teHhzX19fZlppVWFcIixcbiAgXCJtYXJnaW4tLXhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS14c19fXy10ZE9qXCIsXG4gIFwibWFyZ2luLS1zXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS1zX19fMHhQMGdcIixcbiAgXCJtYXJnaW4tLW1cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLW1fX19XZDRwcFwiLFxuICBcIm1hcmdpbi0tbFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tbF9fX3lNVVhzXCIsXG4gIFwibWFyZ2luLS14bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teGxfX193alpQUlwiLFxuICBcIm1hcmdpbi0teHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS14eGxfX19FbTRUN1wiLFxuICBcIm1hcmdpbi0tM3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS0zeGxfX19jUVpIZlwiLFxuICBcIm1hcmdpbi0tNHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS00eGxfX183SVdyTVwiLFxuICBcIm1hcmdpbi0tNXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS01eGxfX19jU09VUVwiLFxuICBcIm1hcmdpbi0tNnhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS02eGxfX19GM2JTbVwiLFxuICBcIm1hcmdpbi0tN3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS03eGxfX18xVVFtSlwiLFxuICBcIm1hcmdpbi0tOHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS04eGxfX19HRTBTdlwiLFxuICBcIm1hcmdpbi0tOXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS05eGxfX19oNWhoRVwiLFxuICBcIm1hcmdpbi0tMTB4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tMTB4bF9fX2RHSy1SXCIsXG4gIFwibWFyZ2luLS0xMXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS0xMXhsX19fM3l4QnBcIixcbiAgXCJtYXJnaW4tLWF1dG9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLWF1dG9fX195N2dmOVwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHZpc3VhbGx5SGlkZGVuU3R5bGVzIGZyb20gXCIuL3Zpc3VhbGx5LWhpZGRlbi5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzID0geyAkdmlzdWFsbHlIaWRkZW4/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCB2aXN1YWxseUhpZGRlblBsdWdpbiA9IGdldFBsdWdpbjxWaXN1YWxseUhpZGRlblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3Zpc3VhbGx5SGlkZGVuU3R5bGVzW1widmlzdWFsbHktaGlkZGVuXCJdXTogISFwcm9wcy4kdmlzdWFsbHlIaWRkZW4gfV0sXG5cbiAgJHZpc3VhbGx5SGlkZGVuOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlbi5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInZpc3VhbGx5LWhpZGRlblwiOiBcInZpc3VhbGx5LWhpZGRlbi1tb2R1bGVfX3Zpc3VhbGx5LWhpZGRlbl9fX0RQdWxNXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgb3ZlcmZsb3dTdHlsZXMgZnJvbSBcIi4vb3ZlcmZsb3cubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgT3ZlcmZsb3cgPSBcImhpZGRlblwiIHwgXCJzY3JvbGxcIiB8IFwiYXV0b1wiIHwgXCJ2aXNpYmxlXCI7XG5cbmV4cG9ydCB0eXBlIE92ZXJmbG93UGx1Z2luUHJvcHMgPSB7ICRvdmVyZmxvdz86IE92ZXJmbG93IHwgeyB4PzogT3ZlcmZsb3c7IHk/OiBPdmVyZmxvdzsgaGlkZVNjcm9sbGJhcj86IGJvb2xlYW4gfSB9O1xuXG5leHBvcnQgY29uc3Qgb3ZlcmZsb3dQbHVnaW4gPSBnZXRQbHVnaW48T3ZlcmZsb3dQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgJG92ZXJmbG93ID0gcHJvcHMuJG92ZXJmbG93O1xuXG4gIGlmICghJG92ZXJmbG93KSB7XG4gICAgcmV0dXJuIHsgJG92ZXJmbG93OiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHggPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gJG92ZXJmbG93IDogJG92ZXJmbG93Lng7XG4gIGNvbnN0IHkgPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gJG92ZXJmbG93IDogJG92ZXJmbG93Lnk7XG4gIGNvbnN0IGhpZGVTY3JvbGxiYXIgPSB0eXBlb2YgJG92ZXJmbG93ID09PSBcInN0cmluZ1wiID8gZmFsc2UgOiAkb3ZlcmZsb3cuaGlkZVNjcm9sbGJhcjtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG5cbiAgICAgIHtcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvd19feC0tJHt4fWBdXTogeCxcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvd19feS0tJHt5fWBdXTogeSxcbiAgICAgICAgW292ZXJmbG93U3R5bGVzW2BvdmVyZmxvdy0taGlkZS1zY3JvbGxiYXJgXV06IGhpZGVTY3JvbGxiYXIsXG4gICAgICB9LFxuICAgIF0sXG5cbiAgICAkb3ZlcmZsb3c6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL292ZXJmbG93L292ZXJmbG93Lm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib3ZlcmZsb3ctLWhpZGUtc2Nyb2xsYmFyXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvdy0taGlkZS1zY3JvbGxiYXJfX193YzZqUFwiLFxuICBcIm92ZXJmbG93X195LS1oaWRkZW5cIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X195LS1oaWRkZW5fX19VQklYUVwiLFxuICBcIm92ZXJmbG93X195LS12aXNpYmxlXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feS0tdmlzaWJsZV9fX3NmT2JVXCIsXG4gIFwib3ZlcmZsb3dfX3ktLXNjcm9sbFwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3ktLXNjcm9sbF9fX3lrWjIxXCIsXG4gIFwib3ZlcmZsb3dfX3ktLWF1dG9cIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X195LS1hdXRvX19fMU9OSEtcIixcbiAgXCJvdmVyZmxvd19feC0taGlkZGVuXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feC0taGlkZGVuX19fTEszVWhcIixcbiAgXCJvdmVyZmxvd19feC0tdmlzaWJsZVwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3gtLXZpc2libGVfX191LS02RlwiLFxuICBcIm92ZXJmbG93X194LS1zY3JvbGxcIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X194LS1zY3JvbGxfX19haUlINlwiLFxuICBcIm92ZXJmbG93X194LS1hdXRvXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feC0tYXV0b19fX1M2b1ZMXCJcbn07IiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZsZXgtY2hpbGRcIjogXCJmbGV4LWNoaWxkLW1vZHVsZV9fZmxleC1jaGlsZF9fXzdCZGhkXCIsXG4gIFwiZmxleC1jaGlsZC0tc2hyaW5rYWJsZVwiOiBcImZsZXgtY2hpbGQtbW9kdWxlX19mbGV4LWNoaWxkLS1zaHJpbmthYmxlX19fNkg1LS1cIixcbiAgXCJmbGV4LWNoaWxkLS1maXhlZFwiOiBcImZsZXgtY2hpbGQtbW9kdWxlX19mbGV4LWNoaWxkLS1maXhlZF9fX0ZLZXRMXCJcbn07IiwgImltcG9ydCBmbGV4Q2hpbGRTdHlsZXMgZnJvbSBcIi4vZmxleC1jaGlsZC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IHN0eWxlUGx1Z2luIH0gZnJvbSBcIi4uL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuLyoqXG4gKiAtIGB0cnVlYDogc2hhcmUgdGhlIHBhcmVudCdzIHJlbWFpbmluZyBzcGFjZSBlcXVhbGx5IChgZmxleDogMSAxIDBgKS5cbiAqIC0gYFwic2hyaW5rYWJsZVwiYDogYWRkaXRpb25hbGx5IHJlbW92ZSB0aGUgaXRlbSdzIGltcGxpY2l0IGNvbnRlbnQtc2l6ZWRcbiAqICAgbWluaW11bSAoYG1pbi1oZWlnaHQ6IGF1dG9gIC8gYG1pbi13aWR0aDogYXV0b2ApLCBzbyBpdCBjYW4gYWN0dWFsbHkgYmVcbiAqICAgc2l6ZWQgdG8gdGhlIHJlbWFpbmluZyBzcGFjZSBpbiBhIGNvbnN0cmFpbmVkIGxheW91dCBcdTIwMTQgcmVxdWlyZWQgZm9yIGFcbiAqICAgZGVzY2VuZGFudCB0byBzY3JvbGwgaW50ZXJuYWxseSBpbnN0ZWFkIG9mIGluZmxhdGluZyBldmVyeSBhbmNlc3Rvci5cbiAqIC0gYSBudW1iZXI6IGxpa2UgYFwic2hyaW5rYWJsZVwiYCwgYnV0IHRha2luZyB0aGF0IG1hbnkgc2hhcmVzIG9mIHRoZVxuICogICByZW1haW5pbmcgc3BhY2UgaW5zdGVhZCBvZiBvbmUgKGBmbGV4LWdyb3dgKSwgZm9yIHdlaWdodGVkIHNwbGl0cyBiZXR3ZWVuXG4gKiAgIHNpYmxpbmdzLlxuICogLSBgXCJmaXhlZFwiYDogdGhlIG9wcG9zaXRlIFx1MjAxNCBrZWVwIHRoZSBpdGVtJ3Mgb3duIHNpemUgKGBmbGV4LXNocmluazogMGApLFxuICogICBvcHRpbmcgb3V0IG9mIHRoZSBzaHJpbmsgbmVnb3RpYXRpb24gZW50aXJlbHkgKGUuZy4gYSBjb250ZW50LWh1Z2dpbmdcbiAqICAgcGFuZWwgbmV4dCB0byBhIGZpbGxpbmcgb25lKS5cbiAqL1xuZXhwb3J0IHR5cGUgRmxleENoaWxkUGx1Z2luUHJvcHMgPSB7ICRmbGV4Q2hpbGQ/OiBib29sZWFuIHwgbnVtYmVyIHwgXCJzaHJpbmthYmxlXCIgfCBcImZpeGVkXCIgfTtcblxuZXhwb3J0IGNvbnN0IGZsZXhDaGlsZFBsdWdpbiA9IGdldFBsdWdpbjxGbGV4Q2hpbGRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KFxuICAocHJvcHMpID0+IHtcbiAgICBjb25zdCB3ZWlnaHQgPSB0eXBlb2YgcHJvcHMuJGZsZXhDaGlsZCA9PT0gXCJudW1iZXJcIiA/IHByb3BzLiRmbGV4Q2hpbGQgOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2hyaW5rYWJsZSA9IHByb3BzLiRmbGV4Q2hpbGQgPT09IFwic2hyaW5rYWJsZVwiIHx8IHdlaWdodCAhPT0gdW5kZWZpbmVkO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgICRjbGFzc05hbWU6IFtcbiAgICAgICAgcHJvcHMuJGZsZXhDaGlsZCA9PT0gdHJ1ZSB8fCBzaHJpbmthYmxlID8gZmxleENoaWxkU3R5bGVzW1wiZmxleC1jaGlsZFwiXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgc2hyaW5rYWJsZSA/IGZsZXhDaGlsZFN0eWxlc1tcImZsZXgtY2hpbGQtLXNocmlua2FibGVcIl0gOiB1bmRlZmluZWQsXG4gICAgICAgIHByb3BzLiRmbGV4Q2hpbGQgPT09IFwiZml4ZWRcIiA/IGZsZXhDaGlsZFN0eWxlc1tcImZsZXgtY2hpbGQtLWZpeGVkXCJdIDogdW5kZWZpbmVkLFxuICAgICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgICAgXSxcbiAgICAgICRzdHlsZTogd2VpZ2h0ID09PSB1bmRlZmluZWQgPyBwcm9wcy4kc3R5bGUgOiB7IC4uLnByb3BzLiRzdHlsZSwgZmxleEdyb3c6IHdlaWdodCB9LFxuICAgICAgJGZsZXhDaGlsZDogdW5kZWZpbmVkLFxuICAgIH07XG4gIH0sXG4pO1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZ3JheXNjYWxlU3R5bGVzIGZyb20gXCIuL2dyYXlzY2FsZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBHcmF5c2NhbGVQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIEZ1bGx5IGRlc2F0dXJhdGVzIHRoZSBlbGVtZW50IChgZmlsdGVyOiBncmF5c2NhbGUoMTAwJSlgKSB3aGVuIGB0cnVlYCBcdTIwMTQgc29cbiAgICogZXZlbiBmaXhlZC1jb2xvdXIgY29udGVudCAoZS5nLiBicmFuZCBsb2dvcykgZ3JleXMgb3V0LCBub3QganVzdCB0aGVtZWRcbiAgICogY29sb3Vycy4gQ29tYmluZSB3aXRoIGAkZmFkZWRgIHRvIGRlLWVtcGhhc2lzZSBhbiB1bmF2YWlsYWJsZSBpdGVtLlxuICAgKi9cbiAgJGdyYXlzY2FsZT86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZ3JheXNjYWxlUGx1Z2luID0gZ2V0UGx1Z2luPEdyYXlzY2FsZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHByb3BzLiRncmF5c2NhbGUgPyBncmF5c2NhbGVTdHlsZXMuZ3JheXNjYWxlIDogdW5kZWZpbmVkXSxcbiAgJGdyYXlzY2FsZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJncmF5c2NhbGVcIjogXCJncmF5c2NhbGUtbW9kdWxlX19ncmF5c2NhbGVfX18zbVpQNlwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB0eXBlIHsgc3R5bGVQbHVnaW4gfSBmcm9tIFwiLi4vc3R5bGUvc3R5bGVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdGludFN0eWxlcyBmcm9tIFwiLi90aW50Lm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIFRpbnRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlcyB0aGUgZWxlbWVudCdzIChhbmQgaXRzIGRlc2NlbmRhbnRzJykgU1ZHIGBmaWxsYCB0byB0aGlzIGNvbG91ciwgdmlhIGEgQ1NTIGN1c3RvbVxuICAgKiBwcm9wZXJ0eSBcdTIwMTQgYHN0cm9rZWAgaXMgbGVmdCB1bnRvdWNoZWQsIHNvIHN0cm9rZWQgZGV0YWlscyBzdXJ2aXZlLiBVbmxpa2UgYCRncmF5c2NhbGVgICh3aGljaCBvbmx5XG4gICAqIGRlc2F0dXJhdGVzKSB0aGlzIHBhaW50cyB0aGUgc2hhcGUgYW4gZXhhY3QgZmxhdCBjb2xvdXIgd2hpbGUgcmVzcGVjdGluZyB0cmFuc3BhcmVuY3ksIHNvIGFcbiAgICogZml4ZWQtY29sb3VyIGJyYW5kIG1hcmsgY2FuIGJlIHRpbnRlZCAoZS5nLiBhbiBBSS10b29sIGxvZ28gdGludGVkIHRvIHRoZSBjbHVzdGVyIGNvbG91cikuIExlYXZlXG4gICAqIHVuc2V0IHRvIHJlbmRlciB0aGUgZWxlbWVudCdzIG5hdHVyYWwgY29sb3Vycy5cbiAgICovXG4gICR0aW50Pzogc3RyaW5nO1xufTtcblxuZXhwb3J0IGNvbnN0IHRpbnRQbHVnaW4gPSBnZXRQbHVnaW48VGludFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbiwgdHlwZW9mIHN0eWxlUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcHJvcHMuJHRpbnQgPyB0aW50U3R5bGVzLnRpbnQgOiB1bmRlZmluZWRdLFxuICAvLyBUaGUgdGludCBjb2xvdXIgaXMgZXhwb3NlZCBhcyBhIGN1c3RvbSBwcm9wZXJ0eSB0aGUgYC50aW50YCBjbGFzcyByZWFkcyAoYGZpbGw6IHZhcigtLWVsZW1lbnQtdGludClgKS5cbiAgJHN0eWxlOiBwcm9wcy4kdGludCA/ICh7IC4uLnByb3BzLiRzdHlsZSwgXCItLWVsZW1lbnQtdGludFwiOiBwcm9wcy4kdGludCB9IGFzIFJlYWN0LkNTU1Byb3BlcnRpZXMpIDogcHJvcHMuJHN0eWxlLFxuICAkdGludDogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInRpbnRcIjogXCJ0aW50LW1vZHVsZV9fdGludF9fX2dDekc3XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgZmFkZWRTdHlsZXMgZnJvbSBcIi4vZmFkZWQubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgRmFkZWRQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqXG4gICAqIEZhZGVzIHRoZSBlbGVtZW50IChgb3BhY2l0eTogNTAlYCkgd2hlbiBgdHJ1ZWAuIENvbWJpbmUgd2l0aCBgJGdyYXlzY2FsZWBcbiAgICogdG8gZGUtZW1waGFzaXNlIGFuIHVuYXZhaWxhYmxlIGl0ZW0uXG4gICAqL1xuICAkZmFkZWQ/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGZhZGVkUGx1Z2luID0gZ2V0UGx1Z2luPEZhZGVkUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcHJvcHMuJGZhZGVkID8gZmFkZWRTdHlsZXMuZmFkZWQgOiB1bmRlZmluZWRdLFxuICAkZmFkZWQ6IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZhZGVkXCI6IFwiZmFkZWQtbW9kdWxlX19mYWRlZF9fXy11YmJNXCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyB1c2VVcGRhdGVXaGVuUHJvcHNDaGFuZ2UgfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2UtdXBkYXRlLXdoZW4tcHJvcHMtY2hhbmdlXCI7XG5pbXBvcnQgeyB1c2VDbGVhbnVwT25Vbm1vdW50IH0gZnJvbSBcIi4vX3ByaXZhdGUvdXNlLWNsZWFudXAtb24tdW5tb3VudFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgeyB1c2VLZXlib2FyZE5hdmlnYXRpb24gfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvblwiO1xuaW1wb3J0IHsgaGFuZGxlRm9jdXNGb3IgfSBmcm9tIFwiLi9fcHJpdmF0ZS9oYW5kbGUtZm9jdXNcIjtcbmltcG9ydCB7IGhhbmRsZUJsdXJGb3IgfSBmcm9tIFwiLi9fcHJpdmF0ZS9oYW5kbGUtYmx1clwiO1xuaW1wb3J0IHsgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcgfSBmcm9tIFwiLi9fcHJpdmF0ZS91c2UtcHJvZ3JhbW1hdGljLWZvY3VzaW5nXCI7XG5pbXBvcnQgdHlwZSB7IHJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5cbmV4cG9ydCB0eXBlIEZvY3VzYWJsZVBsdWdpblByb3BzPFQsIEZvY3VzZWRJdGVtID0gYW55PiA9IHtcbiAgJGZvY3VzYWJsZT86IHtcbiAgICBjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPjtcbiAgICBpdGVtOiBGb2N1c2VkSXRlbTtcbiAgICBvcmRlck51bWJlcj86IG51bWJlcjtcbiAgfTtcblxuICBvbkZvY3VzPzogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8VD47XG4gIG9uQmx1cj86IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPFQ+O1xuICBvbktleURvd24/OiBSZWFjdC5LZXlib2FyZEV2ZW50SGFuZGxlcjxUPjtcbiAgdGFiSW5kZXg/OiBIVE1MRWxlbWVudFtcInRhYkluZGV4XCJdO1xufTtcblxudHlwZSBGb2N1c2FibGVXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGZvY3VzYWJsZToge1xuICAgIGNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8YW55PjtcbiAgICBpdGVtOiBhbnk7XG4gICAgb3JkZXJOdW1iZXI/OiBudW1iZXI7XG4gIH07XG4gIHJlYWRvbmx5IHRhYkluZGV4OiBudW1iZXI7XG4gIHJlYWRvbmx5IG9uRm9jdXM/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBvbkJsdXI/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBvbktleURvd24/OiBSZWFjdC5LZXlib2FyZEV2ZW50SGFuZGxlcjxhbnk+O1xuICByZWFkb25seSBjb250cmlidXRlUmVmOiBDb250cmlidXRlUmVmO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IEZvY3VzYWJsZVdyYXBwZXJDb21wb25lbnQgPSAoe1xuICBmb2N1c2FibGUsXG4gIHRhYkluZGV4LFxuICBvbkZvY3VzLFxuICBvbkJsdXIsXG4gIG9uS2V5RG93bixcbiAgY29udHJpYnV0ZVJlZixcbiAgY29udHJpYnV0ZVByb3BzLFxuICBjaGlsZHJlbixcbn06IEZvY3VzYWJsZVdyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IGNvbnRleHQ6IGZvY3VzYWJsZUNvbnRleHQsIGl0ZW06IGZvY3VzYWJsZUl0ZW0sIG9yZGVyTnVtYmVyIH0gPSBmb2N1c2FibGU7XG5cbiAgY29uc3QgW2VsZW1lbnQsIHNldEVsZW1lbnRdID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29udHJpYnV0ZVJlZihzZXRFbGVtZW50KTtcblxuICBjb25zdCBodG1sRWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudD4odW5kZWZpbmVkKTtcbiAgaHRtbEVsZW1lbnRSZWYuY3VycmVudCA9IChlbGVtZW50ID8/IHVuZGVmaW5lZCkgYXMgSFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3QgaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICBjb25zdCBvbGRTdGF0ZVJlZiA9IHVzZVJlZjxJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+Pih1bmRlZmluZWQpO1xuXG4gIGNvbnN0IHN0YXRlID0gdXNlU3luY0luamVjdChmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlLCBmb2N1c2FibGVDb250ZXh0KTtcblxuICB1c2VVcGRhdGVXaGVuUHJvcHNDaGFuZ2UoaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYsIG9sZFN0YXRlUmVmLCBzdGF0ZSwgZm9jdXNhYmxlSXRlbSk7XG4gIHVzZUNsZWFudXBPblVubW91bnQoaHRtbEVsZW1lbnRJc0ZvY3VzZWRSZWYsIG9sZFN0YXRlUmVmKTtcbiAgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcoZm9jdXNhYmxlQ29udGV4dCwgZm9jdXNhYmxlSXRlbSwgaHRtbEVsZW1lbnRSZWYpO1xuXG4gIGNvbnN0IGhhbmRsZUZvY3VzID0gaGFuZGxlRm9jdXNGb3Ioc3RhdGUsIGZvY3VzYWJsZUl0ZW0sIGZvY3VzYWJsZUNvbnRleHQsIGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmKTtcbiAgY29uc3QgaGFuZGxlQmx1ciA9IGhhbmRsZUJsdXJGb3IoZm9jdXNhYmxlQ29udGV4dCwgc3RhdGUsIGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmKTtcblxuICBjb25zdCBrZXlib2FyZE5hdmlnYXRpb24gPSB1c2VLZXlib2FyZE5hdmlnYXRpb24oXG4gICAgZm9jdXNhYmxlQ29udGV4dC5pc0tleWJvYXJkTmF2aWdhYmxlID8gZm9jdXNhYmxlQ29udGV4dCA6IHVuZGVmaW5lZCxcbiAgICBmb2N1c2FibGVJdGVtLFxuICAgIG9yZGVyTnVtYmVyLFxuICAgIGVsZW1lbnQsXG4gICAgc3RhdGUsXG4gICk7XG5cbiAgY29udHJpYnV0ZVByb3BzKHtcbiAgICB0YWJJbmRleCxcblxuICAgIG9uRm9jdXM6IChlOiBSZWFjdC5Gb2N1c0V2ZW50PGFueT4pID0+IHtcbiAgICAgIGhhbmRsZUZvY3VzKGUpO1xuICAgICAgb25Gb2N1cz8uKGUpO1xuICAgIH0sXG5cbiAgICBvbkJsdXI6IChlOiBSZWFjdC5Gb2N1c0V2ZW50PGFueT4pID0+IHtcbiAgICAgIGlmICghaHRtbEVsZW1lbnRSZWYuY3VycmVudD8uY29udGFpbnMoZS5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICBoYW5kbGVCbHVyKGUpO1xuICAgICAgfVxuICAgICAgb25CbHVyPy4oZSk7XG4gICAgfSxcblxuICAgIG9uS2V5RG93bjogKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8YW55PikgPT4ge1xuICAgICAgb25LZXlEb3duPy4oZSk7XG4gICAgICBrZXlib2FyZE5hdmlnYXRpb24ub25LZXlEb3duKGUpO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNhYmxlUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEZvY3VzYWJsZVBsdWdpblByb3BzPFQ+LCBbUmV0dXJuVHlwZTx0eXBlb2YgcmVmUGx1Z2luPFQ+Pl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGZvY3VzYWJsZSwgdGFiSW5kZXgsIG9uQmx1ciwgb25Gb2N1cywgb25LZXlEb3duIH0gPSBwcm9wcztcblxuICAgIGlmICghJGZvY3VzYWJsZSkge1xuICAgICAgcmV0dXJuIHsgJGZvY3VzYWJsZTogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRmb2N1c2FibGU6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRm9jdXNhYmxlV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBmb2N1c2FibGU6ICRmb2N1c2FibGUsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4ID8/IC0xLFxuICAgICAgICAgIG9uRm9jdXMsXG4gICAgICAgICAgb25CbHVyLFxuICAgICAgICAgIG9uS2V5RG93bixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgcnVuSW5BY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB0eXBlIE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVVwZGF0ZVdoZW5Qcm9wc0NoYW5nZSA9IChcbiAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgb2xkU3RhdGVSZWY6IE11dGFibGVSZWZPYmplY3Q8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPiB8IHVuZGVmaW5lZD4sXG4gIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+LFxuICBmb2N1c2FibGVJdGVtOiB1bmtub3duLFxuKSA9PiB7XG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHJlbW92ZSB3aGVuIHBvc3NpYmxlXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoZm9jdXNlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICBzdGF0ZS5zZXQoZm9jdXNhYmxlSXRlbSk7XG5cbiAgICAgICAgICBjb25zdCBjb250ZXh0SGFzQ2hhbmdlZCA9IG9sZFN0YXRlUmVmLmN1cnJlbnQgIT09IHN0YXRlO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHRIYXNDaGFuZ2VkICYmIG9sZFN0YXRlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGFzc2VydERlZmluZWQob2xkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBvbGRTdGF0ZVJlZi5jdXJyZW50LnNldCh1bmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG9sZFN0YXRlUmVmLmN1cnJlbnQgPSBzdGF0ZTtcbiAgICB9LFxuICAgIC8vIE5vdGU6IGZvY3VzZWRSZWYgYW5kIG9sZFN0YXRlUmVmIG5ldmVyIGNoYW5nZS5cbiAgICBbZm9jdXNhYmxlSXRlbSwgc3RhdGVdLFxuICApO1xufTtcbiIsICJpbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHR5cGUgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgdXNlQ2xlYW51cE9uVW5tb3VudCA9IChcbiAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgb2xkU3RhdGVSZWY6IE11dGFibGVSZWZPYmplY3Q8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPiB8IHVuZGVmaW5lZD4sXG4pID0+IHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogcmVtb3ZlIHdoZW4gcG9zc2libGVcbiAgdXNlRWZmZWN0KFxuICAgICgpID0+ICgpID0+IHtcbiAgICAgIGlmIChmb2N1c2VkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgIGFzc2VydERlZmluZWQob2xkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgICAgb2xkU3RhdGVSZWYuY3VycmVudC5zZXQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIE5vdGU6IGZvY3VzZWRSZWYgYW5kIG9sZFN0YXRlUmVmIG5ldmVyIGNoYW5nZS5cbiAgICBbXSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQge1xuICBrZXlib2FyZE5hdmlnYXRpb25TdGF0ZUluamVjdGFibGUsXG4gIHR5cGUgTmF2aWdhYmxlRW50cnksXG59IGZyb20gXCIuLi9fc2hhcmVkL2tleWJvYXJkLW5hdmlnYXRpb24tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbnR5cGUgS2V5Ym9hcmROYXZpZ2F0aW9uID0ge1xuICByZWFkb25seSBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IG5vS2V5Ym9hcmROYXZpZ2F0aW9uOiBLZXlib2FyZE5hdmlnYXRpb24gPSB7IG9uS2V5RG93bjogKCkgPT4ge30gfTtcblxuZXhwb3J0IGNvbnN0IHVzZUtleWJvYXJkTmF2aWdhdGlvbiA9IChcbiAgY29udGV4dDogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PGFueT4gfCB1bmRlZmluZWQsXG4gIGl0ZW06IHVua25vd24sXG4gIG9yZGVyTnVtYmVyOiBudW1iZXIgfCB1bmRlZmluZWQsXG4gIGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCxcbiAgc3RhdGU6IElPYnNlcnZhYmxlVmFsdWU8dW5rbm93bj4sXG4pOiBLZXlib2FyZE5hdmlnYXRpb24gPT4ge1xuICBjb25zdCBuYXZpZ2F0aW9uID0gdXNlU3luY0luamVjdChrZXlib2FyZE5hdmlnYXRpb25TdGF0ZUluamVjdGFibGUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjb250ZXh0IHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZW50cnk6IE5hdmlnYWJsZUVudHJ5ID0geyBpdGVtLCBvcmRlck51bWJlcjogb3JkZXJOdW1iZXIgPz8gMCwgZWxlbWVudCB9O1xuXG4gICAgbmF2aWdhdGlvbi5yZWdpc3Rlcihjb250ZXh0LCBlbnRyeSk7XG5cbiAgICBjb25zdCBmb2N1c1doYXRTaG91bGRIYXZlRm9jdXMgPSAoKSA9PiB7XG4gICAgICBjb25zdCBjb250ZXh0SW5Gb2N1cyA9IG5hdmlnYXRpb24uY29udGV4dEluRm9jdXMoKTtcblxuICAgICAgaWYgKCFjb250ZXh0SW5Gb2N1cykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGVudHJpZXMgPSBuYXZpZ2F0aW9uLnNvcnRlZEVudHJpZXNPZihjb250ZXh0SW5Gb2N1cyk7XG4gICAgICBjb25zdCBmb2N1c2VkSXRlbSA9IHN0YXRlLmdldCgpO1xuICAgICAgY29uc3QgdG9Gb2N1cyA9IGVudHJpZXMuZmluZCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUuaXRlbSA9PT0gZm9jdXNlZEl0ZW0pID8/IGVudHJpZXNbMF07XG5cbiAgICAgIGlmICh0b0ZvY3VzPy5lbGVtZW50LmlzQ29ubmVjdGVkICYmIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHRvRm9jdXMuZWxlbWVudCkge1xuICAgICAgICB0b0ZvY3VzLmVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgLy8gRGVmZXJyZWQgc28gdGhhdCBldmVyeXRoaW5nIGFwcGVhcmluZyB0b2dldGhlciBoYXMgcmVnaXN0ZXJlZCwgYW5kIHRoZSBsb3dlc3Qgb3JkZXIgbnVtYmVyIG9mXG4gICAgLy8gdGhlIHdob2xlIHNldCB3aW5zIHJhdGhlciB0aGFuIHdoaWNoZXZlciBhcHBlYXJlZCBmaXJzdC5cbiAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm9jdXNXaGF0U2hvdWxkSGF2ZUZvY3VzKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBuYXZpZ2F0aW9uLmRlcmVnaXN0ZXIoY29udGV4dCwgZW50cnkpO1xuXG4gICAgICB2b2lkIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oZm9jdXNXaGF0U2hvdWxkSGF2ZUZvY3VzKTtcbiAgICB9O1xuICB9LCBbbmF2aWdhdGlvbiwgY29udGV4dCwgaXRlbSwgb3JkZXJOdW1iZXIsIGVsZW1lbnQsIHN0YXRlXSk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5vS2V5Ym9hcmROYXZpZ2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgY29uc3Qgc3RlcCA9IHN0ZXBPZihldmVudC5rZXkpO1xuXG4gICAgICBpZiAoc3RlcCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50cmllcyA9IG5hdmlnYXRpb24uc29ydGVkRW50cmllc09mKGNvbnRleHQpO1xuXG4gICAgICBpZiAoZW50cmllcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBlbnRyaWVzLmZpbmRJbmRleCgoY2FuZGlkYXRlKSA9PiBjYW5kaWRhdGUuaXRlbSA9PT0gaXRlbSk7XG5cbiAgICAgIGNvbnN0IG5leHRJbmRleCA9XG4gICAgICAgIHN0ZXAgPT09IFwiZmlyc3RcIlxuICAgICAgICAgID8gMFxuICAgICAgICAgIDogc3RlcCA9PT0gXCJsYXN0XCJcbiAgICAgICAgICAgID8gZW50cmllcy5sZW5ndGggLSAxXG4gICAgICAgICAgICA6IChjdXJyZW50SW5kZXggKyBzdGVwICsgZW50cmllcy5sZW5ndGgpICUgZW50cmllcy5sZW5ndGg7XG5cbiAgICAgIGNvbnN0IG5leHQgPSBlbnRyaWVzW25leHRJbmRleF07XG5cbiAgICAgIGlmIChuZXh0KSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIG5leHQuZWxlbWVudC5mb2N1cygpO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59O1xuXG5jb25zdCBzdGVwT2YgPSAoa2V5OiBzdHJpbmcpID0+IHtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlIFwiQXJyb3dEb3duXCI6XG4gICAgY2FzZSBcIkFycm93UmlnaHRcIjpcbiAgICAgIHJldHVybiAxO1xuICAgIGNhc2UgXCJBcnJvd1VwXCI6XG4gICAgY2FzZSBcIkFycm93TGVmdFwiOlxuICAgICAgcmV0dXJuIC0xO1xuICAgIGNhc2UgXCJIb21lXCI6XG4gICAgICByZXR1cm4gXCJmaXJzdFwiIGFzIGNvbnN0O1xuICAgIGNhc2UgXCJFbmRcIjpcbiAgICAgIHJldHVybiBcImxhc3RcIiBhcyBjb25zdDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxufTtcbiIsICJpbXBvcnQgeyBydW5JbkFjdGlvbiwgdHlwZSBJT2JzZXJ2YWJsZVZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVFdmVudCB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWV2ZW50XCI7XG5cbmV4cG9ydCBjb25zdCBoYW5kbGVGb2N1c0ZvciA9XG4gIDxGb2N1c2FibGVJdGVtPihcbiAgICBzdGF0ZTogSU9ic2VydmFibGVWYWx1ZTxGb2N1c2FibGVJdGVtIHwgdW5kZWZpbmVkPixcbiAgICBmb2N1c2FibGVJdGVtOiBGb2N1c2FibGVJdGVtLFxuICAgIGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNhYmxlSXRlbT4sXG4gICAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgKSA9PlxuICA8VD4oZXZlbnQ6IEZvY3VzYWJsZUV2ZW50PFQ+KSA9PiB7XG4gICAgY29uc3QgbmF0aXZlRXZlbnQgPSBldmVudC5uYXRpdmVFdmVudDtcblxuICAgIG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cyA/Pz0gbmV3IFNldCgpO1xuXG4gICAgaWYgKG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cy5oYXMoZm9jdXNhYmxlQ29udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBuYXRpdmVFdmVudC5hbHJlYWR5UHJvY2Vzc2VkRm9jdXNhYmxlQ29udGV4dHMuYWRkKGZvY3VzYWJsZUNvbnRleHQpO1xuXG4gICAgZm9jdXNlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgIHN0YXRlLnNldChmb2N1c2FibGVJdGVtKTtcbiAgICB9KTtcbiAgfTtcbiIsICJpbXBvcnQgdHlwZSB7IElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgcnVuSW5BY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVFdmVudCB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWV2ZW50XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUJsdXJGb3IgPVxuICA8VD4oXG4gICAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPixcbiAgICBzdGF0ZTogSU9ic2VydmFibGVWYWx1ZTxUIHwgdW5kZWZpbmVkPixcbiAgICBmb2N1c2VkUmVmOiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+LFxuICApID0+XG4gIDxUPihldmVudDogRm9jdXNhYmxlRXZlbnQ8VD4pID0+IHtcbiAgICBjb25zdCBuYXRpdmVFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuXG4gICAgaWYgKG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cz8uaGFzKGZvY3VzYWJsZUNvbnRleHQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9jdXNlZFJlZi5jdXJyZW50ID0gZmFsc2U7XG5cbiAgICBydW5JbkFjdGlvbigoKSA9PiB7XG4gICAgICBzdGF0ZS5zZXQodW5kZWZpbmVkKTtcbiAgICB9KTtcbiAgfTtcbiIsICJpbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlIH0gZnJvbSBcIi4uL19zaGFyZWQvZm9jdXNhYmxlLWh0bWwtZWxlbWVudC1yZWYtc2V0LmluamVjdGFibGVcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgdXNlUHJvZ3JhbW1hdGljRm9jdXNpbmcgPSA8VD4oXG4gIGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4sXG4gIGZvY3VzYWJsZUl0ZW06IFQsXG4gIGh0bWxFbGVtZW50UmVmOiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkPixcbikgPT4ge1xuICBjb25zdCBodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcCA9IHVzZVN5bmNJbmplY3QoXG4gICAgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlLFxuICAgIGZvY3VzYWJsZUNvbnRleHQsXG4gICAgZm9jdXNhYmxlSXRlbSxcbiAgKTtcblxuICAvLyBiaW9tZS1pZ25vcmUgbGludC9jb3JyZWN0bmVzcy91c2VFeGhhdXN0aXZlRGVwZW5kZW5jaWVzOiByZW1vdmUgd2hlbiBwb3NzaWJsZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGh0bWxFbGVtZW50c0J5Rm9jdXNhYmxlTWFwLmFkZChodG1sRWxlbWVudFJlZik7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAuZGVsZXRlKGh0bWxFbGVtZW50UmVmKTtcbiAgICB9O1xuICB9LCBbaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAsIGZvY3VzYWJsZUl0ZW0sIGh0bWxFbGVtZW50UmVmXSk7XG59O1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBmbGV4UGx1Z2luIH0gZnJvbSBcIi4uL2ZsZXgvZmxleFwiO1xuaW1wb3J0IHsgaXNPYmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyBvdmVyZmxvd1BsdWdpbiB9IGZyb20gXCIuLi9vdmVyZmxvdy9vdmVyZmxvd1wiO1xuXG5leHBvcnQgdHlwZSBBcmVhUGx1Z2luUHJvcHMgPSB7ICRhcmVhPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgYXJlYVBsdWdpbiA9IGdldFBsdWdpbjxBcmVhUGx1Z2luUHJvcHMsIFt0eXBlb2YgZmxleFBsdWdpbiwgdHlwZW9mIG92ZXJmbG93UGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGV4cGxpY2l0RmxleFByb3BzID0gaXNPYmplY3QocHJvcHMuJGZsZXgpID8gcHJvcHMuJGZsZXggOiB7fTtcblxuICByZXR1cm4ge1xuICAgICRhcmVhOiB1bmRlZmluZWQsXG5cbiAgICAkZmxleDogcHJvcHMuJGFyZWFcbiAgICAgID8ge1xuICAgICAgICAgIHZlcnRpY2FsQWxpZ246IFwic3RyZXRjaFwiLFxuICAgICAgICAgIGhvcml6b250YWxBbGlnbjogXCJzdHJldGNoXCIsXG4gICAgICAgICAgLi4uZXhwbGljaXRGbGV4UHJvcHMsXG4gICAgICAgIH1cbiAgICAgIDogcHJvcHMuJGZsZXgsXG5cbiAgICAkb3ZlcmZsb3c6IHByb3BzLiRvdmVyZmxvdyA/PyAocHJvcHMuJGFyZWEgPyBcImhpZGRlblwiIDogdW5kZWZpbmVkKSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBmbGV4Q2hpbGRQbHVnaW4gfSBmcm9tIFwiLi4vZmxleC1jaGlsZC9mbGV4LWNoaWxkXCI7XG5cbmV4cG9ydCB0eXBlIEFyZWFDb250ZW50UGx1Z2luUHJvcHMgPSB7ICRhcmVhQ29udGVudD86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGFyZWFDb250ZW50UGx1Z2luID0gZ2V0UGx1Z2luPEFyZWFDb250ZW50UGx1Z2luUHJvcHMsIFt0eXBlb2YgZmxleENoaWxkUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkYXJlYUNvbnRlbnQ6IHVuZGVmaW5lZCxcbiAgJGZsZXhDaGlsZDogcHJvcHMuJGFyZWFDb250ZW50ID8gdHJ1ZSA6IHByb3BzLiRmbGV4Q2hpbGQsXG59KSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuaW1wb3J0IHR5cGUgeyB3aWR0aFBsdWdpbiB9IGZyb20gXCIuLi93aWR0aC93aWR0aFwiO1xuaW1wb3J0IHR5cGUgeyBoZWlnaHRQbHVnaW4gfSBmcm9tIFwiLi4vaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSAkU2l6ZVByb3BzID0ge1xuICBzaXplPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJhdXRvXCI7XG4gIG1pbj86IFRTaGlydFNpemUgfCBcImZ1bGxcIjtcbiAgbWF4PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xufTtcblxuZXhwb3J0IHR5cGUgU2l6ZVBsdWdpblByb3BzID0geyAkc2l6ZT86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8ICRTaXplUHJvcHMgfTtcblxuZXhwb3J0IGNvbnN0IHNpemVQbHVnaW4gPSBnZXRQbHVnaW48U2l6ZVBsdWdpblByb3BzLCBbdHlwZW9mIHdpZHRoUGx1Z2luLCB0eXBlb2YgaGVpZ2h0UGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHNpemUgfSA9IHByb3BzO1xuXG4gIGlmICghJHNpemUpIHtcbiAgICByZXR1cm4geyAkc2l6ZTogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB7IHNpemUsIG1pbiwgbWF4IH0gPSB0eXBlb2YgJHNpemUgPT09IFwic3RyaW5nXCIgPyB7IHNpemU6ICRzaXplIH0gOiAkc2l6ZTtcblxuICByZXR1cm4ge1xuICAgICRoZWlnaHQ6IHsgaGVpZ2h0OiBzaXplLCBtaW4sIG1heCB9LFxuICAgICR3aWR0aDogeyB3aWR0aDogc2l6ZSwgbWluLCBtYXggfSxcbiAgICAkc2l6ZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImFsaWFzXCI6IFwiY3Vyc29yLW1vZHVsZV9fYWxpYXNfX18waXlIMlwiLFxuICBcImFsbC1zY3JvbGxcIjogXCJjdXJzb3ItbW9kdWxlX19hbGwtc2Nyb2xsX19fVTlobzhcIixcbiAgXCJjZWxsXCI6IFwiY3Vyc29yLW1vZHVsZV9fY2VsbF9fXzVXTzJGXCIsXG4gIFwiY29sdW1uLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX2NvbHVtbi1yZXNpemVfX19wTHEzc1wiLFxuICBcImNvbnRleHQtbWVudVwiOiBcImN1cnNvci1tb2R1bGVfX2NvbnRleHQtbWVudV9fX0lxcDU2XCIsXG4gIFwiY29weVwiOiBcImN1cnNvci1tb2R1bGVfX2NvcHlfX19YVTd5TFwiLFxuICBcImNyb3NzaGFpclwiOiBcImN1cnNvci1tb2R1bGVfX2Nyb3NzaGFpcl9fXzE4YXlrXCIsXG4gIFwiZGVmYXVsdFwiOiBcImN1cnNvci1tb2R1bGVfX2RlZmF1bHRfX192RC04VFwiLFxuICBcImVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fZWFzdC1yZXNpemVfX19TNEhGNVwiLFxuICBcImVhc3QtYW5kLXdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fZWFzdC1hbmQtd2VzdC1yZXNpemVfX191LUpmLVwiLFxuICBcImdyYWJcIjogXCJjdXJzb3ItbW9kdWxlX19ncmFiX19fVXZBRjdcIixcbiAgXCJncmFiYmluZ1wiOiBcImN1cnNvci1tb2R1bGVfX2dyYWJiaW5nX19fTU1pdlhcIixcbiAgXCJoZWxwXCI6IFwiY3Vyc29yLW1vZHVsZV9faGVscF9fX2lCOEc0XCIsXG4gIFwibW92ZVwiOiBcImN1cnNvci1tb2R1bGVfX21vdmVfX195cGQtUFwiLFxuICBcIm5vcnRoLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRoLXJlc2l6ZV9fXzdOa2hWXCIsXG4gIFwibm9ydGhlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRoZWFzdC1yZXNpemVfX19NNE1JelwiLFxuICBcIm5vcnRoZWFzdC1hbmQtc291dGh3ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRoZWFzdC1hbmQtc291dGh3ZXN0LXJlc2l6ZV9fX3otMWRxXCIsXG4gIFwibm8tZHJvcFwiOiBcImN1cnNvci1tb2R1bGVfX25vLWRyb3BfX19XVDF0OVwiLFxuICBcIm5vbmVcIjogXCJjdXJzb3ItbW9kdWxlX19ub25lX19fRWk5c3pcIixcbiAgXCJub3QtYWxsb3dlZFwiOiBcImN1cnNvci1tb2R1bGVfX25vdC1hbGxvd2VkX19fOXVGTHVcIixcbiAgXCJub3J0aC1hbmQtc291dGgtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGgtYW5kLXNvdXRoLXJlc2l6ZV9fX1FHNUFOXCIsXG4gIFwibm9ydGh3ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRod2VzdC1yZXNpemVfX19ja0NvaFwiLFxuICBcIm5vcnRod2VzdC1hbmQtc291dGhlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX25vcnRod2VzdC1hbmQtc291dGhlYXN0LXJlc2l6ZV9fX25qNFZTXCIsXG4gIFwicG9pbnRlclwiOiBcImN1cnNvci1tb2R1bGVfX3BvaW50ZXJfX19GaWRmS1wiLFxuICBcInByb2dyZXNzXCI6IFwiY3Vyc29yLW1vZHVsZV9fcHJvZ3Jlc3NfX19JZ0V4eVwiLFxuICBcInJvdy1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19yb3ctcmVzaXplX19fMFNzZTZcIixcbiAgXCJzb3V0aC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19zb3V0aC1yZXNpemVfX180RmVuU1wiLFxuICBcInNvdXRoZWFzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19zb3V0aGVhc3QtcmVzaXplX19fdzhoR3FcIixcbiAgXCJzb3V0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fc291dGh3ZXN0LXJlc2l6ZV9fXzZVdjRHXCIsXG4gIFwidGV4dFwiOiBcImN1cnNvci1tb2R1bGVfX3RleHRfX190cS1Bd1wiLFxuICBcInZlcnRpY2FsLXRleHRcIjogXCJjdXJzb3ItbW9kdWxlX192ZXJ0aWNhbC10ZXh0X19fM09hekVcIixcbiAgXCJ3ZXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3dlc3QtcmVzaXplX19fYnJXNTZcIixcbiAgXCJ3YWl0XCI6IFwiY3Vyc29yLW1vZHVsZV9fd2FpdF9fX1F0WGxHXCIsXG4gIFwiem9vbS1pblwiOiBcImN1cnNvci1tb2R1bGVfX3pvb20taW5fX196RURIUVwiLFxuICBcInpvb20tb3V0XCI6IFwiY3Vyc29yLW1vZHVsZV9fem9vbS1vdXRfX19xYnFvNlwiXG59OyIsICJpbXBvcnQgcmF3U3R5bGVzIGZyb20gXCIuL2N1cnNvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IHNhbml0aXplU2Nzc01vZHVsZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuXG5jb25zdCBzdHlsZXMgPSBzYW5pdGl6ZVNjc3NNb2R1bGVzKHJhd1N0eWxlcyk7XG5cbmV4cG9ydCB0eXBlICRDdXJzb3JQcm9wcyA9XG4gIHwgXCJhbGlhc1wiXG4gIHwgXCJhbGwtc2Nyb2xsXCJcbiAgfCBcImNlbGxcIlxuICB8IFwiY29sdW1uLXJlc2l6ZVwiXG4gIHwgXCJjb250ZXh0LW1lbnVcIlxuICB8IFwiY29weVwiXG4gIHwgXCJjcm9zc2hhaXJcIlxuICB8IFwiZGVmYXVsdFwiXG4gIHwgXCJlYXN0LXJlc2l6ZVwiXG4gIHwgXCJlYXN0LWFuZC13ZXN0LXJlc2l6ZVwiXG4gIHwgXCJncmFiXCJcbiAgfCBcImdyYWJiaW5nXCJcbiAgfCBcImhlbHBcIlxuICB8IFwibW92ZVwiXG4gIHwgXCJub3J0aC1yZXNpemVcIlxuICB8IFwibm9ydGhlYXN0LXJlc2l6ZVwiXG4gIHwgXCJub3J0aGVhc3QtYW5kLXNvdXRod2VzdC1yZXNpemVcIlxuICB8IFwibm8tZHJvcFwiXG4gIHwgXCJub25lXCJcbiAgfCBcIm5vdC1hbGxvd2VkXCJcbiAgfCBcIm5vcnRoLWFuZC1zb3V0aC1yZXNpemVcIlxuICB8IFwibm9ydGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJub3J0aHdlc3QtYW5kLXNvdXRoZWFzdC1yZXNpemVcIlxuICB8IFwicG9pbnRlclwiXG4gIHwgXCJwcm9ncmVzc1wiXG4gIHwgXCJyb3ctcmVzaXplXCJcbiAgfCBcInNvdXRoLXJlc2l6ZVwiXG4gIHwgXCJzb3V0aGVhc3QtcmVzaXplXCJcbiAgfCBcInNvdXRod2VzdC1yZXNpemVcIlxuICB8IFwidGV4dFwiXG4gIHwgXCJ2ZXJ0aWNhbC10ZXh0XCJcbiAgfCBcIndlc3QtcmVzaXplXCJcbiAgfCBcIndhaXRcIlxuICB8IFwiem9vbS1pblwiXG4gIHwgXCJ6b29tLW91dFwiO1xuXG5leHBvcnQgdHlwZSBDdXJzb3JQbHVnaW5Qcm9wcyA9IHtcbiAgJGN1cnNvcj86ICRDdXJzb3JQcm9wcztcbn07XG5cbmV4cG9ydCBjb25zdCBjdXJzb3JQbHVnaW4gPSBnZXRQbHVnaW48Q3Vyc29yUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGN1cnNvciwgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkY3Vyc29yKSB7XG4gICAgcmV0dXJuIHsgJGN1cnNvcjogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRjdXJzb3I6IHVuZGVmaW5lZCxcbiAgICAkY2xhc3NOYW1lOiBbJGNsYXNzTmFtZSwgc3R5bGVzWyRjdXJzb3JdXSxcbiAgICBcImRhdGEtY3Vyc29yLXRlc3RcIjogJGN1cnNvcixcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgb25NaWRkbGVDbGljaywgb25UcmlnZ2VyIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBlbmFibGVkUGx1Z2luIH0gZnJvbSBcIi4uL2VuYWJsZWQvZW5hYmxlZFwiO1xuaW1wb3J0IHR5cGUgeyAkQ3Vyc29yUHJvcHMsIGN1cnNvclBsdWdpbiB9IGZyb20gXCIuLi9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgeyBvblJpZ2h0VHJpZ2dlckluamVjdGFibGUgfSBmcm9tIFwiLi9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGVcIjtcblxuZXhwb3J0IHR5cGUgUG9zaXRpb24yZCA9IHtcbiAgcmVhZG9ubHkgeDogbnVtYmVyO1xuICByZWFkb25seSB5OiBudW1iZXI7XG59O1xuXG5leHBvcnQgdHlwZSBDbGlja0hhbmRsZXJEZXRhaWxzID0ge1xuICByZWFkb25seSBjdXJzb3I6IFBvc2l0aW9uMmQ7XG4gIHJlYWRvbmx5IGNhdXNlOiBcImNsaWNrXCIgfCBcImtleWJvYXJkXCI7XG59O1xuXG5leHBvcnQgdHlwZSBDbGlja0hhbmRsZXIgPSAoKGRldGFpbHM6IENsaWNrSGFuZGxlckRldGFpbHMpID0+IHZvaWQpIHwgKChkZXRhaWxzOiBDbGlja0hhbmRsZXJEZXRhaWxzKSA9PiBQcm9taXNlPHZvaWQ+KTtcblxuZXhwb3J0IHR5cGUgQ2xpY2tQbHVnaW5Qcm9wcyA9IHtcbiAgJG9uQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gICRvbk9ubHlNb3VzZUNsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25Eb3VibGVDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uUmlnaHRDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uTWlkZGxlQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gIHRhYkluZGV4PzogbnVtYmVyO1xufTtcblxuY29uc3QgY2xpY2tVc2VkID0gU3ltYm9sKCk7XG5cbmV4cG9ydCBjb25zdCBjbGlja2FibGVQbHVnaW4gPSBnZXRQbHVnaW48Q2xpY2tQbHVnaW5Qcm9wcywgW3R5cGVvZiBlbmFibGVkUGx1Z2luLCB0eXBlb2YgY3Vyc29yUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIC8vIHR5cGluZyByZXF1aXJlZCBkdWUgdG8gbGFjayBvZiBnb29kIHR5cGluZyBvZiBwcmUtcHJvY2Vzc2VkIGRlcGVuZGVudCBwbHVnaW5zXG4gIGNvbnN0IHtcbiAgICAkY3Vyc29yLFxuICAgICRvbkNsaWNrLFxuICAgICRvbk9ubHlNb3VzZUNsaWNrLFxuICAgICRvbk1pZGRsZUNsaWNrLFxuICAgICRvblJpZ2h0Q2xpY2ssXG4gICAgJG9uRG91YmxlQ2xpY2ssXG4gICAgb25Eb3VibGVDbGljayxcbiAgICBvbkF1eENsaWNrLFxuICAgIG9uQ2xpY2ssXG4gICAgb25Db250ZXh0TWVudSxcbiAgICBvbktleURvd24sXG4gICAgdGFiSW5kZXgsXG4gICAgZGlzYWJsZWQsXG4gICAgcm9sZSxcbiAgfSA9IHByb3BzIGFzIHR5cGVvZiBwcm9wcyAmIFJlYWN0LkhUTUxQcm9wczxIVE1MRWxlbWVudD47XG4gIGNvbnN0IFtwZW5kaW5nLCBzZXRQZW5kaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgb25SaWdodFRyaWdnZXIgPSB1c2VTeW5jSW5qZWN0KG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSk7XG4gIGNvbnN0IG9uTW91c2VDbGljayA9ICRvbkNsaWNrID8/ICRvbk9ubHlNb3VzZUNsaWNrO1xuXG4gIGlmICgkb25DbGljayAmJiAkb25Pbmx5TW91c2VDbGljaykge1xuICAgIGNvbnNvbGUud2FybihcIkNhbm5vdCBoYXZlIGJvdGggJG9uQ2xpY2sgYW5kICRvbk1vdXNlQ2xpY2tPbmx5IG9uIHRoZSBzYW1lIGNvbXBvbmVudFwiKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJG9uQ2xpY2s6IHVuZGVmaW5lZCxcbiAgICAkb25NaWRkbGVDbGljazogdW5kZWZpbmVkLFxuICAgICRvblJpZ2h0Q2xpY2s6IHVuZGVmaW5lZCxcbiAgICAkb25Eb3VibGVDbGljazogdW5kZWZpbmVkLFxuICAgICRvbk9ubHlNb3VzZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgdGFiSW5kZXg6IHRhYkluZGV4ID8/IChvbk1vdXNlQ2xpY2sgfHwgJG9uUmlnaHRDbGljayB8fCAkb25Eb3VibGVDbGljayA/IDAgOiB1bmRlZmluZWQpLFxuICAgICRjdXJzb3I6IGdldEN1cnNvclByb3BzKCRjdXJzb3IsIGRpc2FibGVkLCBwZW5kaW5nLCBvbk1vdXNlQ2xpY2ssICRvblJpZ2h0Q2xpY2spLFxuICAgIHJvbGU6IHJvbGUgPz8gKG9uTW91c2VDbGljayA/IFwiYnV0dG9uXCIgOiByb2xlKSxcbiAgICBvbkNsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkNsaWNrPy4oZXZlbnQpO1xuXG4gICAgICBpZiAoIWRpc2FibGVkICYmIG9uTW91c2VDbGljayAmJiAhKGNsaWNrVXNlZCBpbiBldmVudCkpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihldmVudCwgeyBbY2xpY2tVc2VkXTogdHJ1ZSB9KTtcblxuICAgICAgICBjb25zdCBtYXliZVByb21pc2UgPSBvbk1vdXNlQ2xpY2sodG9EZXRhaWxzKGV2ZW50KSk7XG5cbiAgICAgICAgaWYgKGlzUHJvbWlzZUxpa2UobWF5YmVQcm9taXNlKSkge1xuICAgICAgICAgIHNldFBlbmRpbmcodHJ1ZSk7XG4gICAgICAgICAgbWF5YmVQcm9taXNlLnRoZW4oKCkgPT4gc2V0UGVuZGluZyhmYWxzZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBvbkRvdWJsZUNsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkRvdWJsZUNsaWNrPy4oZXZlbnQpO1xuICAgICAgJG9uRG91YmxlQ2xpY2s/Lih0b0RldGFpbHMoZXZlbnQpKTtcbiAgICB9LFxuICAgIG9uQ29udGV4dE1lbnU6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQ29udGV4dE1lbnU/LihldmVudCk7XG4gICAgICAkb25SaWdodENsaWNrPy4odG9EZXRhaWxzKGV2ZW50KSk7XG4gICAgfSxcbiAgICBvbkF1eENsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+KSA9PiB7XG4gICAgICBvbkF1eENsaWNrPy4oZXZlbnQpO1xuICAgICAgb25NaWRkbGVDbGljayhldmVudCwgKCkgPT4gJG9uTWlkZGxlQ2xpY2s/Lih0b0RldGFpbHMoZXZlbnQpKSk7XG4gICAgfSxcbiAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uS2V5RG93bj8uKGV2ZW50KTtcblxuICAgICAgaWYgKCRvbkNsaWNrKSB7XG4gICAgICAgIG9uVHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgIGlmICghZGlzYWJsZWQgJiYgIShjbGlja1VzZWQgaW4gZXZlbnQpKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGV2ZW50LCB7IFtjbGlja1VzZWRdOiB0cnVlIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBtYXliZVByb21pc2UgPSAkb25DbGljayh0b0RldGFpbHMoZXZlbnQpKTtcblxuICAgICAgICAgICAgaWYgKGlzUHJvbWlzZUxpa2UobWF5YmVQcm9taXNlKSkge1xuICAgICAgICAgICAgICBzZXRQZW5kaW5nKHRydWUpO1xuICAgICAgICAgICAgICBtYXliZVByb21pc2UudGhlbigoKSA9PiBzZXRQZW5kaW5nKGZhbHNlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKCRvblJpZ2h0Q2xpY2spIHtcbiAgICAgICAgb25SaWdodFRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICAkb25SaWdodENsaWNrKHRvRGV0YWlscyhldmVudCkpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICB9O1xufSk7XG5cbmNvbnN0IHRvTWlkZGxlID0gKHJlY3Q6IERPTVJlY3QpID0+ICh7XG4gIHg6IHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyLFxuICB5OiByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMixcbn0pO1xuXG5jb25zdCB0b0RldGFpbHMgPSAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTEVsZW1lbnQ+IHwgUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MRWxlbWVudD4pOiBDbGlja0hhbmRsZXJEZXRhaWxzID0+IHtcbiAgY29uc3QgY3Vyc29yID1cbiAgICBcImNsaWVudFhcIiBpbiBldmVudFxuICAgICAgPyB7XG4gICAgICAgICAgeDogZXZlbnQuY2xpZW50WCxcbiAgICAgICAgICB5OiBldmVudC5jbGllbnRZLFxuICAgICAgICB9XG4gICAgICA6IHRvTWlkZGxlKGV2ZW50LmN1cnJlbnRUYXJnZXQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpO1xuXG4gIHJldHVybiB7XG4gICAgY3Vyc29yLFxuICAgIGNhdXNlOiBldmVudC5kZXRhaWwgPyBcImNsaWNrXCIgOiBcImtleWJvYXJkXCIsXG4gIH07XG59O1xuXG5jb25zdCBpc1Byb21pc2VMaWtlID0gKHZhbHVlOiB1bmtub3duKTogdmFsdWUgaXMgUHJvbWlzZTx1bmtub3duPiA9PlxuICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCIgJiYgISF2YWx1ZSAmJiBcInRoZW5cIiBpbiB2YWx1ZTtcblxuY29uc3QgZ2V0Q3Vyc29yUHJvcHMgPSAoXG4gICRjdXJzb3I6ICRDdXJzb3JQcm9wcyB8IHVuZGVmaW5lZCxcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWQsXG4gIHBlbmRpbmc6IGJvb2xlYW4sXG4gICRvbkNsaWNrOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCxcbiAgJG9uUmlnaHRDbGljazogRnVuY3Rpb24gfCB1bmRlZmluZWQsXG4pOiAkQ3Vyc29yUHJvcHMgfCB1bmRlZmluZWQgPT4ge1xuICBpZiAoJGN1cnNvcikge1xuICAgIHJldHVybiAkY3Vyc29yO1xuICB9XG5cbiAgaWYgKHBlbmRpbmcpIHtcbiAgICByZXR1cm4gXCJwcm9ncmVzc1wiO1xuICB9XG5cbiAgaWYgKCEkb25DbGljayAmJiAhJG9uUmlnaHRDbGljaykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICBpZiAoZGlzYWJsZWQpIHtcbiAgICByZXR1cm4gXCJub3QtYWxsb3dlZFwiO1xuICB9XG5cbiAgaWYgKCRvbkNsaWNrKSB7XG4gICAgcmV0dXJuIFwicG9pbnRlclwiO1xuICB9XG5cbiAgcmV0dXJuIFwiY29udGV4dC1tZW51XCI7XG59O1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2Rpc3BsYXktY29udGVudHMvZGlzcGxheS1jb250ZW50cy5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImNvbnRlbnRzXCI6IFwiZGlzcGxheS1jb250ZW50cy1tb2R1bGVfX2NvbnRlbnRzX19fbVJlWEtcIlxufTsiLCAiaW1wb3J0IHJhd1N0eWxlcyBmcm9tIFwiLi9kaXNwbGF5LWNvbnRlbnRzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgc2FuaXRpemVTY3NzTW9kdWxlcyB9IGZyb20gXCJAazhzbGVucy90ZXN0LXV0aWxzXCI7XG5cbmNvbnN0IHN0eWxlcyA9IHNhbml0aXplU2Nzc01vZHVsZXMocmF3U3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgRGlzcGxheUNvbnRlbnRzUGx1Z2luUHJvcHMgPSB7XG4gICRkaXNwbGF5Q29udGVudHM/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGRpc3BsYXlDb250ZW50c1BsdWdpbiA9IGdldFBsdWdpbjxEaXNwbGF5Q29udGVudHNQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZGlzcGxheUNvbnRlbnRzLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRkaXNwbGF5Q29udGVudHMpIHtcbiAgICByZXR1cm4geyAkZGlzcGxheUNvbnRlbnRzOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGRpc3BsYXlDb250ZW50czogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCBzdHlsZXMuY29udGVudHNdLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwidGV4dC1hbGlnbi0tY2VudGVyXCI6IFwidGV4dC1hbGlnbi1tb2R1bGVfX3RleHQtYWxpZ24tLWNlbnRlcl9fX2JEclIyXCIsXG4gIFwidGV4dC1hbGlnbi0tcmlnaHRcIjogXCJ0ZXh0LWFsaWduLW1vZHVsZV9fdGV4dC1hbGlnbi0tcmlnaHRfX19KVlJNUFwiLFxuICBcInRleHQtYWxpZ24tLWxlZnRcIjogXCJ0ZXh0LWFsaWduLW1vZHVsZV9fdGV4dC1hbGlnbi0tbGVmdF9fX0xMTGs2XCJcbn07IiwgImltcG9ydCBzdHlsZXMgZnJvbSBcIi4vdGV4dC1hbGlnbi5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuZXhwb3J0IHR5cGUgVGV4dEFsaWduUGx1Z2luUHJvcHMgPSB7ICR0ZXh0QWxpZ24/OiBcImxlZnRcIiB8IFwiY2VudGVyXCIgfCBcInJpZ2h0XCIgfTtcblxuZXhwb3J0IGNvbnN0IHRleHRBbGlnblBsdWdpbiA9IGdldFBsdWdpbjxUZXh0QWxpZ25QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkdGV4dEFsaWduIH0gPSBwcm9wcztcblxuICBpZiAoISR0ZXh0QWxpZ24pIHtcbiAgICByZXR1cm4geyAkdGV4dEFsaWduOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7ICRjbGFzc05hbWU6IFtzdHlsZXNbYHRleHQtYWxpZ24tLSR7JHRleHRBbGlnbn1gXSwgcHJvcHMuJGNsYXNzTmFtZV0sICR0ZXh0QWxpZ246IHVuZGVmaW5lZCB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvYmxvY2svYmxvY2subW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJibG9ja1wiOiBcImJsb2NrLW1vZHVsZV9fYmxvY2tfX19ZNHR6alwiLFxuICBcImJsb2NrLS1pbmxpbmVcIjogXCJibG9jay1tb2R1bGVfX2Jsb2NrLS1pbmxpbmVfX18tMVlDZ1wiXG59OyIsICJpbXBvcnQgc3R5bGVzIGZyb20gXCIuL2Jsb2NrLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgdHlwZSBCbG9ja1BsdWdpblByb3BzID0ge1xuICAkYmxvY2s/OiBib29sZWFuIHwgXCJpbmxpbmVcIjtcbn07XG5cbmV4cG9ydCBjb25zdCBibG9ja1BsdWdpbiA9IGdldFBsdWdpbjxCbG9ja1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRibG9jaywgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkYmxvY2spIHtcbiAgICByZXR1cm4geyAkYmxvY2s6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkYmxvY2s6IHVuZGVmaW5lZCxcbiAgICAkY2xhc3NOYW1lOiBbJGNsYXNzTmFtZSwgJGJsb2NrID09PSBcImlubGluZVwiID8gc3R5bGVzW1wiYmxvY2stLWlubGluZVwiXSA6IHN0eWxlcy5ibG9ja10sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuaW1wb3J0IHR5cGUgeyBSYW5nZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5pbXBvcnQgb3V0bGluZVN0eWxlcyBmcm9tIFwiLi9vdXRsaW5lLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZVNjc3NNb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL3Rlc3QtdXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUNsYXNzTmFtZSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbmNvbnN0IHN0eWxlcyA9IHNhbml0aXplU2Nzc01vZHVsZXMob3V0bGluZVN0eWxlcyk7XG5cbmV4cG9ydCB0eXBlIE91dGxpbmVXaWR0aCA9IFwiemVyb1wiIHwgXCJ4eHNcIiB8IFwieHNcIiB8IFwic1wiIHwgXCJtXCIgfCBcImxcIiB8IFwieGxcIiB8IFwieHhsXCIgfCBgJHtSYW5nZTwzLCA1Pn14bGA7XG5cbmV4cG9ydCB0eXBlICRPdXRsaW5lUHJvcHMgPSB7IGNvbG9yPzogQ29sb3I7IHdpZHRoPzogT3V0bGluZVdpZHRoIH07XG5cbmV4cG9ydCB0eXBlIE91dGxpbmVQbHVnaW5Qcm9wcyA9IHsgJG91dGxpbmU/OiB7IGZvY3VzVmlzaWJsZT86ICRPdXRsaW5lUHJvcHMgfSB9O1xuXG5leHBvcnQgY29uc3Qgb3V0bGluZVBsdWdpbiA9IGdldFBsdWdpbjxPdXRsaW5lUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIGdldEZvY3VzVmlzaWJsZU91dGxpbmVTdHlsZXMocHJvcHMuJG91dGxpbmU/LmZvY3VzVmlzaWJsZSldLFxuICAgICRvdXRsaW5lOiB1bmRlZmluZWQsXG4gIH07XG59KTtcblxuY29uc3QgZ2V0Rm9jdXNWaXNpYmxlT3V0bGluZVN0eWxlcyA9IChwcm9wczogJE91dGxpbmVQcm9wcyB8IHVuZGVmaW5lZCk6IElDbGFzc05hbWUgPT4ge1xuICBpZiAoIXByb3BzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0IHsgY29sb3IsIHdpZHRoIH0gPSBwcm9wcztcblxuICByZXR1cm4gW1xuICAgIGNvbG9yICE9PSB1bmRlZmluZWQgfHwgd2lkdGggIT09IHVuZGVmaW5lZCA/IFtzdHlsZXMub3V0bGluZSwgc3R5bGVzLmZvY3VzVmlzaWJsZV0gOiB1bmRlZmluZWQsXG4gICAgY29sb3IgPyBzdHlsZXNbYGNvbG9yLS0ke2NvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIHdpZHRoID8gc3R5bGVzW2B3aWR0aC0tJHt3aWR0aH1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib3V0bGluZVwiOiBcIm91dGxpbmUtbW9kdWxlX19vdXRsaW5lX19fQW9CdEZcIixcbiAgXCJmb2N1c1Zpc2libGVcIjogXCJvdXRsaW5lLW1vZHVsZV9fZm9jdXNWaXNpYmxlX19fSkFyUEpcIixcbiAgXCJjb2xvci0taW5oZXJpdFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0taW5oZXJpdF9fXzBXUDByXCIsXG4gIFwiY29sb3ItLXdoaXRlXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS13aGl0ZV9fX1VxLWdkXCIsXG4gIFwiY29sb3ItLXRyYW5zcGFyZW50XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS10cmFuc3BhcmVudF9fX1ROb012XCIsXG4gIFwiY29sb3ItLWdyZXkxMDBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkxMDBfX19WTUY3WVwiLFxuICBcImNvbG9yLS1ncmV5ODBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXk4MF9fX0tkOGZNXCIsXG4gIFwiY29sb3ItLWdyZXk2MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTYwX19fWkdqT3RcIixcbiAgXCJjb2xvci0tZ3JleTQwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NDBfX191YUZuR1wiLFxuICBcImNvbG9yLS1ncmV5MzBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkzMF9fXzdRQlZWXCIsXG4gIFwiY29sb3ItLWdyZXkyNVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTI1X19fci1iYkpcIixcbiAgXCJjb2xvci0tZ3JleTIwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5MjBfX19pd3plTFwiLFxuICBcImNvbG9yLS1ncmV5MTBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkxMF9fX2hKdHRTXCIsXG4gIFwiY29sb3ItLWdyZXk3MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTcwX19fME9HbFVcIixcbiAgXCJjb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2pSd0huXCIsXG4gIFwiY29sb3ItLXByaW1hcnlcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXByaW1hcnlfX19QeGNteFwiLFxuICBcImNvbG9yLS1zdWNjZXNzXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1zdWNjZXNzX19feGpKTG5cIixcbiAgXCJjb2xvci0tbm90aWNlXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ub3RpY2VfX19DUmlZYlwiLFxuICBcImNvbG9yLS13YXJuaW5nXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS13YXJuaW5nX19fMU9lN1dcIixcbiAgXCJjb2xvci0tY3JpdGljYWxcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsX19feVF4LUxcIixcbiAgXCJjb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fR0hhcS1cIixcbiAgXCJjb2xvci0td2FybmluZ1RpbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXdhcm5pbmdUaW50X19fWUFudHVcIixcbiAgXCJjb2xvci0tY3JpdGljYWxUaW50XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1jcml0aWNhbFRpbnRfX19RMW1kaFwiLFxuICBcImNvbG9yLS1saW5rXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1saW5rX19fdUlrM29cIixcbiAgXCJjb2xvci0tY29kZVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tY29kZV9fX3libndpXCIsXG4gIFwid2lkdGgtLXplcm9cIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXplcm9fX19Fa2Z6TlwiLFxuICBcIndpZHRoLS14eHNcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXh4c19fX2JHeVRyXCIsXG4gIFwid2lkdGgtLXhzXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14c19fX1paUjJCXCIsXG4gIFwid2lkdGgtLXNcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXNfX184ZERFelwiLFxuICBcIndpZHRoLS1tXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS1tX19fZzJ1RzVcIixcbiAgXCJ3aWR0aC0tbFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tbF9fX1doMGJDXCIsXG4gIFwid2lkdGgtLXhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14bF9fXzhkT01qXCIsXG4gIFwid2lkdGgtLXh4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0teHhsX19fQkVzVW1cIixcbiAgXCJ3aWR0aC0tM3hsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS0zeGxfX19FczBTWVwiLFxuICBcIndpZHRoLS00eGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLTR4bF9fX1llb3Y4XCIsXG4gIFwid2lkdGgtLTV4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tNXhsX19fTnNWOFBcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHR5cGUgeyBjbGlja2FibGVQbHVnaW4sIENsaWNrSGFuZGxlckRldGFpbHMgfSBmcm9tIFwiLi4vY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgZmxpcCwgb2Zmc2V0LCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHR5cGUgeyBSZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHsgZXhwZWN0RGVmaW5lZCwgc3RvcFByb3BhZ2F0aW9uIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vcG9wb3Zlci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgTWluaW1hbERpdiB9IGZyb20gXCIuLi8uLi9lbGVtZW50cy9taW5pbWFsLWRpdlwiO1xuXG5leHBvcnQgdHlwZSBQb3BvdmVyUGx1Z2luUHJvcHMgPSB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICAkcG9wb3Zlcj86ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmV4cG9ydCBjb25zdCBwb3BvdmVySXNPcGVuQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoZmFsc2UpO1xuXG5leHBvcnQgY29uc3QgdXNlUG9wb3ZlcklzT3BlbiA9ICgpID0+IHVzZUNvbnRleHQocG9wb3ZlcklzT3BlbkNvbnRleHQpO1xuXG5leHBvcnQgY29uc3QgcG9wb3ZlclBsdWdpbiA9IGdldFBsdWdpbjxQb3BvdmVyUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xpY2thYmxlUGx1Z2luLCBSZWZQbHVnaW48YW55Pl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRwb3BvdmVyLCAkb25DbGljaywgJHJlZiB9ID0gcHJvcHM7XG4gIGNvbnN0IFtwb3BvdmVyQ29udGVudElzU2hvd24sIHNldFBvcG92ZXJDb250ZW50SXNTaG93bl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZlcmVuY2UsIHNldEVsZW1lbnRdID0gdXNlU3RhdGU8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgY2xvc2VQb3BvdmVyID0gdXNlQ2FsbGJhY2soKCkgPT4gc2V0UG9wb3ZlckNvbnRlbnRJc1Nob3duKGZhbHNlKSwgW10pO1xuXG4gIGlmICghJHBvcG92ZXIpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJHBvcG92ZXI6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkcG9wb3ZlcjogdW5kZWZpbmVkLFxuICAgICRyZWY6IFskcmVmLCBzZXRFbGVtZW50XSxcbiAgICAkb25DbGljazogKGRldGFpbHM6IENsaWNrSGFuZGxlckRldGFpbHMpID0+IHtcbiAgICAgIHNldFBvcG92ZXJDb250ZW50SXNTaG93bighcG9wb3ZlckNvbnRlbnRJc1Nob3duKTtcbiAgICAgICRvbkNsaWNrPy4oZGV0YWlscyk7XG4gICAgfSxcbiAgICBvbkNsaWNrOiBzdG9wUHJvcGFnYXRpb24sXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogUG9wb3ZlcldyYXBwZXJDb21wb25lbnQsXG4gICAgICBwcm9wczoge1xuICAgICAgICBwb3BvdmVyOiB7XG4gICAgICAgICAgJHBvcG92ZXIsXG4gICAgICAgICAgaXNTaG93bjogcG9wb3ZlckNvbnRlbnRJc1Nob3duLFxuICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICBjbG9zZVBvcG92ZXIsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59KTtcblxudHlwZSBQb3BvdmVyV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBwb3BvdmVyOiB7XG4gICAgcmVhZG9ubHkgJHBvcG92ZXI6ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgICByZWFkb25seSBpc1Nob3duOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHJlZmVyZW5jZTogSFRNTERpdkVsZW1lbnQgfCBudWxsO1xuICAgIHJlYWRvbmx5IGNsb3NlUG9wb3ZlcjogVm9pZEZ1bmN0aW9uO1xuICB9O1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgUG9wb3ZlcldyYXBwZXJDb21wb25lbnQgPSAoeyBwb3BvdmVyLCBjaGlsZHJlbiB9OiBQb3BvdmVyV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHBvcG92ZXIsIGlzU2hvd24sIHJlZmVyZW5jZSwgY2xvc2VQb3BvdmVyIH0gPSBwb3BvdmVyO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1Nob3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8UG9wb3Zlck92ZXJsYXlDb250ZW50XG4gICAgICAgICAgICB7Li4ue1xuICAgICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICAgICRwb3BvdmVyLFxuICAgICAgICAgICAgICBjbG9zZVBvcG92ZXIsXG4gICAgICAgICAgICB9fVxuICAgICAgICAgIC8+LFxuICAgICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICAgICl9XG4gICAgICA8cG9wb3ZlcklzT3BlbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2lzU2hvd259PntjaGlsZHJlbn08L3BvcG92ZXJJc09wZW5Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvPlxuICApO1xufTtcblxudHlwZSBQb3BvdmVyT3ZlcmxheUNvbnRlbnRQcm9wcyA9IHtcbiAgcmVmZXJlbmNlOiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XG4gICRwb3BvdmVyOiAoKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG4gIGNsb3NlUG9wb3ZlcjogVm9pZEZ1bmN0aW9uO1xufTtcblxuY29uc3QgUG9wb3Zlck92ZXJsYXlDb250ZW50ID0gKHByb3BzOiBQb3BvdmVyT3ZlcmxheUNvbnRlbnRQcm9wcykgPT4ge1xuICBjb25zdCB7ICRwb3BvdmVyLCBjbG9zZVBvcG92ZXIsIHJlZmVyZW5jZSB9ID0gcHJvcHM7XG4gIGNvbnN0IFtmbG9hdGluZywgc2V0RmxvYXRpbmddID0gdXNlU3RhdGU8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgeyBmbG9hdGluZ1N0eWxlcyB9ID0gdXNlRmxvYXRpbmcoe1xuICAgIHBsYWNlbWVudDogXCJib3R0b21cIixcbiAgICBtaWRkbGV3YXJlOiBbZmxpcCgpLCBvZmZzZXQoOCksIHNoaWZ0KCldLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkOiBhdXRvVXBkYXRlLFxuICAgIGVsZW1lbnRzOiB7XG4gICAgICBmbG9hdGluZyxcbiAgICAgIHJlZmVyZW5jZSxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCBjbG9zZVBvcG92ZXJGcm9tT3ZlcmxheSA9IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgIHN0b3BQcm9wYWdhdGlvbihldmVudCk7XG4gICAgY2xvc2VQb3BvdmVyKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8TWluaW1hbERpdlxuICAgICAgZGF0YS1wb3BvdmVyLW92ZXJsYXktdGVzdFxuICAgICAgJGFic29sdXRlXG4gICAgICAkY2xhc3NOYW1lPXtzdHlsZXMucG9wb3Zlcl9fb3ZlcmxheX1cbiAgICAgIG9uQ2xpY2s9e2Nsb3NlUG9wb3ZlckZyb21PdmVybGF5fVxuICAgID5cbiAgICAgIDxNaW5pbWFsRGl2XG4gICAgICAgICRyZWY9e3NldEZsb2F0aW5nfVxuICAgICAgICBzdHlsZT17ZmxvYXRpbmdTdHlsZXN9XG4gICAgICAgIG9uQ2xpY2s9e3N0b3BQcm9wYWdhdGlvbn1cbiAgICAgICAgJGNsYXNzTmFtZT17c3R5bGVzLnBvcG92ZXJfX2NvbnRlbnR9XG4gICAgICA+XG4gICAgICAgIDxjb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIuUHJvdmlkZXIgdmFsdWU9e2Nsb3NlUG9wb3Zlcn0+eyRwb3BvdmVyKCl9PC9jb250ZXh0Rm9yQ2xvc2luZ1BvcG92ZXIuUHJvdmlkZXI+XG4gICAgICA8L01pbmltYWxEaXY+XG4gICAgPC9NaW5pbWFsRGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGNvbnRleHRGb3JDbG9zaW5nUG9wb3ZlciA9IGNyZWF0ZUNvbnRleHQ8Vm9pZEZ1bmN0aW9uIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5leHBvcnQgY29uc3QgdXNlQ2xvc2VQb3BvdmVyID0gKCkgPT5cbiAgZXhwZWN0RGVmaW5lZChcbiAgICB1c2VDb250ZXh0KGNvbnRleHRGb3JDbG9zaW5nUG9wb3ZlciksXG4gICAgXCJUcmllZCB0byB1c2UgY2xvc2UgcG9wb3ZlciB3aGlsZSBjb250ZW50IGlzIG5vdCBzaG93biBpbnNpZGUgdGhlIHBvcG92ZXIgY29udGVudC5cIixcbiAgKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9wb3BvdmVyL3BvcG92ZXIubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJwb3BvdmVyX19vdmVybGF5XCI6IFwicG9wb3Zlci1tb2R1bGVfX3BvcG92ZXJfX292ZXJsYXlfX19UY0t2LVwiLFxuICBcInBvcG92ZXJfX2NvbnRlbnRcIjogXCJwb3BvdmVyLW1vZHVsZV9fcG9wb3Zlcl9fY29udGVudF9fX1VDVVo2XCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUmVmLCB0eXBlIFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBSZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBhdXRvVXBkYXRlLCBmbGlwLCBvZmZzZXQsIHNoaWZ0LCB1c2VGbG9hdGluZywgdHlwZSBQbGFjZW1lbnQgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdDb250ZW50QXJncyA9IHtcbiAgcmVhZG9ubHkgZmxvYXRpbmdTdHlsZXM6IFJlYWN0LkNTU1Byb3BlcnRpZXM7XG4gIHJlYWRvbmx5IGNvbnRlbnRSZWY6IE5vbk51bGxhYmxlPFJlYWN0LlJlZjxIVE1MRGl2RWxlbWVudD4+O1xufTtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdDb250ZW50RmFjdG9yeSA9IChhcmdzOiBGbG9hdGluZ0NvbnRlbnRBcmdzKSA9PiBSZWFjdC5SZWFjdE5vZGU7XG5cbmV4cG9ydCB0eXBlICRGbG9hdGluZ1Byb3BzID0ge1xuICByZWFkb25seSBwb3NpdGlvbj86IFBsYWNlbWVudDtcbiAgcmVhZG9ubHkgY29udGVudDogRmxvYXRpbmdDb250ZW50RmFjdG9yeTtcbn07XG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nUGx1Z2luUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICByZWFkb25seSAkZmxvYXRpbmc/OiAkRmxvYXRpbmdQcm9wcztcbn07XG5cbmV4cG9ydCB0eXBlIEZsb2F0aW5nUGx1Z2luID0gUGx1Z2luPEZsb2F0aW5nUGx1Z2luUHJvcHMsIHVua25vd24+O1xuXG50eXBlIEZsb2F0aW5nV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBmbG9hdGluZzogJEZsb2F0aW5nUHJvcHM7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBGbG9hdGluZ1dyYXBwZXJDb21wb25lbnQgPSAoeyBmbG9hdGluZywgY29udHJpYnV0ZVJlZiwgY2hpbGRyZW4gfTogRmxvYXRpbmdXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgW3JlZmVyZW5jZSwgc2V0UmVmZXJlbmNlXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtmbG9hdGluZ0VsLCBzZXRGbG9hdGluZ10gPSB1c2VTdGF0ZTxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnRyaWJ1dGVSZWYoc2V0UmVmZXJlbmNlKTtcblxuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyh7XG4gICAgcGxhY2VtZW50OiBmbG9hdGluZy5wb3NpdGlvbiA/PyBcImJvdHRvbVwiLFxuICAgIG1pZGRsZXdhcmU6IFtmbGlwKCksIG9mZnNldCg4KSwgc2hpZnQoKV0sXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nOiBmbG9hdGluZ0VsLFxuICAgICAgcmVmZXJlbmNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGZsb2F0aW5nQ29udGVudCA9IGZsb2F0aW5nLmNvbnRlbnQoeyBmbG9hdGluZ1N0eWxlcywgY29udGVudFJlZjogc2V0RmxvYXRpbmcgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2Zsb2F0aW5nQ29udGVudCA/IGNyZWF0ZVBvcnRhbChmbG9hdGluZ0NvbnRlbnQsIGRvY3VtZW50LmJvZHkpIDogbnVsbH1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBmbG9hdGluZ1BsdWdpbjxUPigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxGbG9hdGluZ1BsdWdpblByb3BzLCBbUmVmUGx1Z2luPFQ+XT4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkZmxvYXRpbmcgfSA9IHByb3BzO1xuXG4gICAgaWYgKCRmbG9hdGluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4geyAkZmxvYXRpbmc6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICAkZmxvYXRpbmc6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRmxvYXRpbmdXcmFwcGVyQ29tcG9uZW50LFxuICAgICAgICBwcm9wczogeyBmbG9hdGluZzogJGZsb2F0aW5nIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0pO1xufVxuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJpbnZpc2libGVCYWNrZHJvcFwiOiBcImludmlzaWJsZS1iYWNrZHJvcC1tb2R1bGVfX2ludmlzaWJsZUJhY2tkcm9wX19faE9oNWJcIlxufTsiLCAiaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbnZpc2libGUtYmFja2Ryb3AubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIEludmlzaWJsZUJhY2tkcm9wUGx1Z2luUHJvcHMgPSB7XG4gICRpbnZpc2libGVCYWNrZHJvcD86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgaW52aXNpYmxlQmFja2Ryb3BQbHVnaW4gPSBnZXRQbHVnaW48SW52aXNpYmxlQmFja2Ryb3BQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkaW52aXNpYmxlQmFja2Ryb3AsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGludmlzaWJsZUJhY2tkcm9wKSB7XG4gICAgcmV0dXJuIHsgJGludmlzaWJsZUJhY2tkcm9wOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGludmlzaWJsZUJhY2tkcm9wOiB1bmRlZmluZWQsXG4gICAgJGNsYXNzTmFtZTogWyRjbGFzc05hbWUsIHN0eWxlcy5pbnZpc2libGVCYWNrZHJvcF0sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEcm9wRG93bk1lbnUsIHR5cGUgRHJvcERvd25NZW51U3BlYyB9IGZyb20gXCJAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNcIjtcbmltcG9ydCB7IG9uVHJpZ2dlciB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgb25SaWdodFRyaWdnZXJJbmplY3RhYmxlIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgUG9zaXRpb24yZCB9IGZyb20gXCIuLi9jbGlja2FibGUvY2xpY2thYmxlXCI7XG5pbXBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuLi9vbi1vdXRzaWRlLWNsaWNrL29uLW91dHNpZGUtY2xpY2tcIjtcblxuZXhwb3J0IHR5cGUgRHJvcERvd25NZW51UGx1Z2luUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xuICByZWFkb25seSB0YWJJbmRleD86IG51bWJlcjtcblxuICAvKipcbiAgICogQXR0YWNoZXMgYSBkcm9wLWRvd24gbWVudSB0byB0aGUgZWxlbWVudC4gQ3JlYXRlIHRoZSB2YWx1ZSB3aXRoIGBkcm9wRG93bk1lbnUoa2luZCwgb3B0aW9ucz8pYFxuICAgKiBmcm9tIGBAazhzbGVucy9kcm9wLWRvd24tbWVudS1jb250cmFjdHNgOyB0aGUgaXRlbXMgY29tZSBmcm9tIHRoZSBjb250cmlidXRpb25zIHJlZ2lzdGVyZWQgZm9yXG4gICAqIHRoZSBraW5kLlxuICAgKlxuICAgKiBUaGUgbWVudSBwb3NpdGlvbnMgaXRzZWxmIGFnYWluc3QgdGhlIG5lYXJlc3QgYW5jaG9yIGFyb3VuZCBpdCwgc28gdGhlIGVsZW1lbnQgXHUyMDE0IG9yIHNvbWV0aGluZ1xuICAgKiBlbmNsb3NpbmcgaXQgXHUyMDE0IGRlY2xhcmVzIGAkYW5jaG9yYC5cbiAgICpcbiAgICogUmVxdWlyZXMgYGRyb3BEb3duTWVudUZlYXR1cmVgIG9mIGBAbGVuc2FwcC9kcm9wLWRvd24tbWVudWAgdG8gYmUgcmVnaXN0ZXJlZDogdGhlIG1lbnVcbiAgICogY29tcG9uZW50IGlzIHJlc29sdmVkIHRocm91Z2ggYW4gaW5qZWN0aW9uIHRva2VuIHRoaXMgcGFja2FnZSBkb2VzIG5vdCBpbXBsZW1lbnQuXG4gICAqL1xuICByZWFkb25seSAkZHJvcERvd25NZW51PzogRHJvcERvd25NZW51U3BlYztcbn07XG5cbmNvbnN0IGhvdmVyQ2xvc2VEZWxheUluTWlsbGlzZWNvbmRzID0gMjAwO1xuXG50eXBlIERyb3BEb3duTWVudVdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgZHJvcERvd25NZW51OiBEcm9wRG93bk1lbnVTcGVjO1xuICByZWFkb25seSBjb250cmlidXRlUHJvcHM6IENvbnRyaWJ1dGVQcm9wcztcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IERyb3BEb3duTWVudVdyYXBwZXJDb21wb25lbnQgPSAoeyBkcm9wRG93bk1lbnUsIGNvbnRyaWJ1dGVQcm9wcywgY2hpbGRyZW4gfTogRHJvcERvd25NZW51V3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSB1c2VTdGF0ZTxQb3NpdGlvbjJkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBjbG9zZVRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBvblJpZ2h0VHJpZ2dlciA9IHVzZVN5bmNJbmplY3Qob25SaWdodFRyaWdnZXJJbmplY3RhYmxlKTtcblxuICBjb25zdCB0b2dnbGUgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRJc09wZW4oKHdhc09wZW4pID0+ICF3YXNPcGVuKSwgW10pO1xuICBjb25zdCBjbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldElzT3BlbihmYWxzZSksIFtdKTtcblxuICBjb25zdCBjYW5jZWxTY2hlZHVsZWRDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoY2xvc2VUaW1lclJlZi5jdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dChjbG9zZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9wZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBzZXRJc09wZW4odHJ1ZSk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIGNvbnN0IHNjaGVkdWxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGNsb3NlLCBob3ZlckNsb3NlRGVsYXlJbk1pbGxpc2Vjb25kcyk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZSwgY2xvc2VdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gY2FuY2VsU2NoZWR1bGVkQ2xvc2UsIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIGNvbnN0IG9wZW5PbiA9IGRyb3BEb3duTWVudS5vcGVuT24gPz8gXCJjbGlja1wiO1xuXG4gIC8vIE1hcmtzIHRoZSBlbGVtZW50IGFuZCwgYmVsb3csIHRoZSBtZW51IGl0IG9wZW5zIGFzIG9uZSB0aGluZyBmb3Igb3V0c2lkZS1jbGljayBwdXJwb3Nlcy5cbiAgY29uc3Qgb3V0c2lkZUNsaWNrTWFya2luZ1Byb3BzID0gdXNlT25PdXRzaWRlQ2xpY2soXG4gICAgdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgaWYgKGlzT3Blbikge1xuICAgICAgICBzZXRJc09wZW4oZmFsc2UpO1xuICAgICAgfVxuICAgIH0sIFtpc09wZW5dKSxcbiAgKTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIC4uLm91dHNpZGVDbGlja01hcmtpbmdQcm9wcyxcbiAgICBcImFyaWEtaGFzcG9wdXBcIjogXCJtZW51XCIsXG5cbiAgICAuLi4ob3Blbk9uID09PSBcImNsaWNrXCIgJiYge1xuICAgICAgb25DbGljazogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0b2dnbGUoKTtcbiAgICAgIH0sXG5cbiAgICAgIC8vIEEga2V5IHByZXNzIHRoZSBlbGVtZW50IGFuc3dlcnMgd2l0aCBhIG1lbnUgaXMgYW5zd2VyZWQgaGVyZSBhbmQgbm93aGVyZSBlbHNlLFxuICAgICAgLy8gZXhhY3RseSBhcyBpdHMgY2xpY2sgaXM6IHdoYXRldmVyIGVuY2xvc2VzIHRoZSBlbGVtZW50IChhIG1lbnUgcm93IHdpdGggYW5cbiAgICAgIC8vIGFjdGlvbiBvZiBpdHMgb3duLCBzYXkpIG11c3Qgbm90IHRha2UgdGhlIHNhbWUgcHJlc3MgZm9yIGJlaW5nIGFjdGl2YXRlZCB0b28uXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBvblRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJyaWdodC1jbGlja1wiICYmIHtcbiAgICAgIG9uQ29udGV4dE1lbnU6IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgLy8gQSBtZW51IG9wZW5lZCBieSByaWdodC1jbGlja2luZyBiZWxvbmdzIGF0IHRoZSBjdXJzb3IgcmF0aGVyIHRoYW4gYXQgdGhlIGVsZW1lbnQuXG4gICAgICAgIHNldEN1cnNvcih7IHg6IGV2ZW50LmNsaWVudFgsIHk6IGV2ZW50LmNsaWVudFkgfSk7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgfSxcblxuICAgICAgb25LZXlEb3duOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgb25SaWdodFRyaWdnZXIoZXZlbnQsICgpID0+IHtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9LFxuICAgIH0pLFxuXG4gICAgLi4uKG9wZW5PbiA9PT0gXCJob3ZlclwiICYmIHtcbiAgICAgIG9uTW91c2VFbnRlcjogb3BlbixcbiAgICAgIG9uTW91c2VMZWF2ZTogc2NoZWR1bGVDbG9zZSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NoaWxkcmVufVxuXG4gICAgICB7aXNPcGVuICYmIChcbiAgICAgICAgLy8gTWFya2VkIGFzIGluc2lkZSBmb3IgdGhlIG91dHNpZGUtY2xpY2sgZGV0ZWN0aW9uIGFib3ZlOiB0aGUgbWVudSBpcyBhIHNpYmxpbmcgb2YgdGhlXG4gICAgICAgIC8vIGVsZW1lbnQgaW4gdGhlIERPTSwgYnV0IHBhcnQgb2YgdGhlIHNhbWUgdGhpbmcgYXMgZmFyIGFzIGEgdXNlciBpcyBjb25jZXJuZWQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEEgY2xpY2sgbGFuZGluZyBvbiB0aGUgbWVudSBpcyBhIGNsaWNrIG9uIHRoZSBtZW51IGFuZCBub3RoaW5nIGVsc2UsIHNvIGl0IHN0b3BzIGhlcmVcbiAgICAgICAgLy8gcmF0aGVyIHRoYW4gZ29pbmcgb24gdG8gd2hhdGV2ZXIgZW5jbG9zZXMgdGhlIGVsZW1lbnQgdGhlIG1lbnUgd2FzIG9wZW5lZCBmcm9tIFx1MjAxNCBhIHJvd1xuICAgICAgICAvLyBvZiBhIG1lbnUgb2YgaXRzIG93biwgc2F5LCB3aGljaCB3b3VsZCB0YWtlIGl0IGZvciB0aGUgcm93IGJlaW5nIGFjdGl2YXRlZC4gT25seVxuICAgICAgICAvLyBgY2xpY2tgIHN0b3BzOiB0aGUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb24gYWJvdmUgd29ya3Mgb24gYHBvaW50ZXJkb3duYC5cbiAgICAgICAgPHNwYW4gey4uLm91dHNpZGVDbGlja01hcmtpbmdQcm9wc30gc3R5bGU9e2Rpc3BsYXlDb250ZW50c30gb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufT5cbiAgICAgICAgICA8RHJvcERvd25NZW51XG4gICAgICAgICAgICBzcGVjPXtkcm9wRG93bk1lbnV9XG4gICAgICAgICAgICBhbmNob3JQb2ludD17b3Blbk9uID09PSBcInJpZ2h0LWNsaWNrXCIgPyBjdXJzb3IgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBvbkNsb3NlPXtjbG9zZX1cbiAgICAgICAgICAgIG9uTWVudUhvdmVyQ2hhbmdlPXtcbiAgICAgICAgICAgICAgb3Blbk9uID09PSBcImhvdmVyXCJcbiAgICAgICAgICAgICAgICA/IChtZW51SXNIb3ZlcmVkKSA9PiAobWVudUlzSG92ZXJlZCA/IGNhbmNlbFNjaGVkdWxlZENsb3NlKCkgOiBzY2hlZHVsZUNsb3NlKCkpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgZGlzcGxheUNvbnRlbnRzID0geyBkaXNwbGF5OiBcImNvbnRlbnRzXCIgfSBhcyBjb25zdDtcblxuY29uc3Qgc3RvcFByb3BhZ2F0aW9uID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuZXhwb3J0IGNvbnN0IGRyb3BEb3duTWVudVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wRG93bk1lbnVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGRyb3BEb3duTWVudSB9ID0gcHJvcHM7XG5cbiAgaWYgKCRkcm9wRG93bk1lbnUgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7ICRkcm9wRG93bk1lbnU6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkZHJvcERvd25NZW51OiB1bmRlZmluZWQsXG5cbiAgICAuLi4oJGRyb3BEb3duTWVudS5vcGVuT24gPT09IFwiaG92ZXJcIiA/IHt9IDogeyB0YWJJbmRleDogcHJvcHMudGFiSW5kZXggPz8gMCB9KSxcblxuICAgICR3cmFwcGVyOiB7XG4gICAgICBDb21wb25lbnQ6IERyb3BEb3duTWVudVdyYXBwZXJDb21wb25lbnQsXG4gICAgICBwcm9wczogeyBkcm9wRG93bk1lbnU6ICRkcm9wRG93bk1lbnUgfSxcbiAgICB9LFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcywgdHlwZSBDb250cmlidXRlUmVmIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjc3NOYW1lcyB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYW5jaG9yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uMmQgfSBmcm9tIFwiLi4vY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBUU2hpcnRTaXplLCB0U2hpcnRTaXplSW5QaXhlbHMgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IGNvbG9yUGx1Z2luIH0gZnJvbSBcIi4uL2NvbG9yL2NvbG9yXCI7XG5pbXBvcnQgdHlwZSB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuLi9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3JcIjtcbmltcG9ydCB0eXBlIHsgYm9yZGVyUGx1Z2luIH0gZnJvbSBcIi4uL2JvcmRlci9ib3JkZXJcIjtcbmltcG9ydCB0eXBlIHsgcGFkZGluZ1BsdWdpbiB9IGZyb20gXCIuLi9wYWRkaW5nL3BhZGRpbmdcIjtcbmltcG9ydCB0eXBlIHsgbWFyZ2luUGx1Z2luIH0gZnJvbSBcIi4uL21hcmdpbi9tYXJnaW5cIjtcbmltcG9ydCB0eXBlIHsgb3ZlcmZsb3dQbHVnaW4gfSBmcm9tIFwiLi4vb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuLyoqXG4gKiBXaGVyZSBhbiBlbGVtZW50IHNpdHMgcmVsYXRpdmUgdG8gaXRzIGFuY2hvcjogYSBzaWRlIG9mIHRoZSBhbmNob3IsIG9wdGlvbmFsbHkgcmVmaW5lZCB3aXRoIGhvd1xuICogdGhlIGVsZW1lbnQgZXh0ZW5kcyBhbG9uZyB0aGF0IHNpZGUuIEEgYmFyZSBzaWRlIGNlbnRlcnMgdGhlIGVsZW1lbnQgb24gaXQ7IGBzcGFuLTxkaXJlY3Rpb24+YFxuICogYWxpZ25zIHRoZWlyIGVkZ2VzIGFuZCBsZXRzIHRoZSBlbGVtZW50IGV4dGVuZCB0b3dhcmQgdGhhdCBkaXJlY3Rpb24uXG4gKlxuICogV2hlbiB0aGUgZWxlbWVudCB3b3VsZCBub3QgZml0IHRoZSB2aWV3cG9ydCwgaXQgZmFsbHMgYmFjayB0byB0aGUgbWlycm9yZWQgcG9zaXRpb25zLlxuICovXG5leHBvcnQgdHlwZSBBbmNob3JQb3NpdGlvbiA9XG4gIHwgXCJ0b3BcIlxuICB8IFwiYm90dG9tXCJcbiAgfCBcImxlZnRcIlxuICB8IFwicmlnaHRcIlxuICB8IFwidG9wIHNwYW4tbGVmdFwiXG4gIHwgXCJ0b3Agc3Bhbi1yaWdodFwiXG4gIHwgXCJib3R0b20gc3Bhbi1sZWZ0XCJcbiAgfCBcImJvdHRvbSBzcGFuLXJpZ2h0XCJcbiAgfCBcImxlZnQgc3Bhbi10b3BcIlxuICB8IFwibGVmdCBzcGFuLWJvdHRvbVwiXG4gIHwgXCJyaWdodCBzcGFuLXRvcFwiXG4gIHwgXCJyaWdodCBzcGFuLWJvdHRvbVwiO1xuXG4vKipcbiAqIEVpdGhlciBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBuZWFyZXN0IGFuY2VzdG9yIGAkYW5jaG9yYCwgb3IgdGhlIHNhbWUgcG9zaXRpb24gcmVsYXRpdmUgdG8gYVxuICogcG9pbnQgaW4gdGhlIHZpZXdwb3J0LlxuICovXG5leHBvcnQgdHlwZSBBbmNob3JlZEF0ID1cbiAgfCBBbmNob3JQb3NpdGlvblxuICB8IHtcbiAgICAgIHJlYWRvbmx5IHBvc2l0aW9uOiBBbmNob3JQb3NpdGlvbjtcblxuICAgICAgLyoqIEhvdyBmYXIgZnJvbSB0aGUgYW5jaG9yIHRoZSBlbGVtZW50IHNpdHMuIERlZmF1bHRzIHRvIGBcInhzXCJgLiAqL1xuICAgICAgcmVhZG9ubHkgZ2FwPzogVFNoaXJ0U2l6ZTtcblxuICAgICAgLyoqIFNpdCBhdCB0aGlzIHZpZXdwb3J0IHBvaW50IGluc3RlYWQgb2YgYXQgYW4gYW5jaG9yLiAqL1xuICAgICAgcmVhZG9ubHkgcG9pbnQ/OiBQb3NpdGlvbjJkO1xuICAgIH07XG5cbmNvbnN0IGRlZmF1bHRHYXA6IFRTaGlydFNpemUgPSBcInhzXCI7XG5cbmV4cG9ydCB0eXBlIEFuY2hvclBsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcblxuICAvKipcbiAgICogTWFrZXMgdGhlIGVsZW1lbnQgYW4gYW5jaG9yIGZvciB0aGUgZWxlbWVudHMgb2YgaXRzIHN1YnRyZWUgdGhhdCBkZWNsYXJlIHtAbGluayAkYW5jaG9yZWRBdH0uXG4gICAqIFRoZSBuZWFyZXN0IHN1Y2ggYW5jZXN0b3Igd2lucywgc28gbmVzdGluZyB3b3JrcyB3aXRob3V0IG5hbWluZyBhbnl0aGluZy5cbiAgICovXG4gIHJlYWRvbmx5ICRhbmNob3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBQb3NpdGlvbnMgdGhlIGVsZW1lbnQgcmVsYXRpdmUgdG8gYW4gYW5jaG9yLCBhYm92ZSBldmVyeXRoaW5nIGVsc2Ugb24gdGhlIHBhZ2UgXHUyMDE0IGl0IGVzY2FwZXNcbiAgICogY2xpcHBpbmcgYW5jZXN0b3JzIGFuZCBzdGFja2luZyBjb250ZXh0cywgc28gaXQgbmVlZHMgbm8gcG9ydGFsLlxuICAgKlxuICAgKiBUaGUgYW5jaG9yIGlzIHRoZSBuZWFyZXN0IGFuY2VzdG9yIGRlY2xhcmluZyB7QGxpbmsgJGFuY2hvcn0sIG9yIHRoZSBnaXZlbiBwb2ludCB3aGVuIGEgcG9pbnRcbiAgICogaXMgcHJvdmlkZWQgaW5zdGVhZC5cbiAgICovXG4gIHJlYWRvbmx5ICRhbmNob3JlZEF0PzogQW5jaG9yZWRBdDtcbn07XG5cbmNvbnN0IGFuY2hvck5hbWVDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbnR5cGUgQW5jaG9yV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBpc0FuY2hvcjogYm9vbGVhbjtcbiAgcmVhZG9ubHkgYW5jaG9yZWRBdDogQW5jaG9yZWRBdCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBBbmNob3JXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgaXNBbmNob3IsXG4gIGFuY2hvcmVkQXQsXG4gIGNvbnRyaWJ1dGVSZWYsXG4gIGNvbnRyaWJ1dGVQcm9wcyxcbiAgY2hpbGRyZW4sXG59OiBBbmNob3JXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3Qgb3duQW5jaG9yTmFtZSA9IHRvQW5jaG9yTmFtZSh1c2VJZCgpKTtcbiAgY29uc3QgaW5oZXJpdGVkQW5jaG9yTmFtZSA9IHVzZUNvbnRleHQoYW5jaG9yTmFtZUNvbnRleHQpO1xuICBjb25zdCBlbGVtZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29udHJpYnV0ZVJlZihcbiAgICB1c2VDYWxsYmFjaygoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBlbGVtZW50O1xuICAgIH0sIFtdKSxcbiAgKTtcblxuICBjb25zdCBwb3NpdGlvbiA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcInN0cmluZ1wiID8gYW5jaG9yZWRBdCA6IGFuY2hvcmVkQXQ/LnBvc2l0aW9uO1xuICBjb25zdCBwb2ludCA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcIm9iamVjdFwiID8gYW5jaG9yZWRBdC5wb2ludCA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZ2FwID0gdHlwZW9mIGFuY2hvcmVkQXQgPT09IFwib2JqZWN0XCIgPyAoYW5jaG9yZWRBdC5nYXAgPz8gZGVmYXVsdEdhcCkgOiBkZWZhdWx0R2FwO1xuXG4gIGlmIChwb3NpdGlvbiAmJiAhcG9pbnQgJiYgIWluaGVyaXRlZEFuY2hvck5hbWUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgVHJpZWQgdG8gcG9zaXRpb24gYW4gZWxlbWVudCBhdCBcIiR7cG9zaXRpb259XCIgd2l0aG91dCBhbiBhbmNob3IuIEVpdGhlciBnaXZlIGFuIGFuY2VzdG9yIHRoZSAkYW5jaG9yIHByb3AsIG9yIGFuY2hvciB0byBhIHBvaW50IGluc3RlYWQuYCxcbiAgICApO1xuICB9XG5cbiAgLy8gQSBwb2ludCBhbmNob3IgaXMgdGhlIGVsZW1lbnQncyBvd247IG90aGVyd2lzZSBpdCBwb3NpdGlvbnMgYWdhaW5zdCB3aGF0ZXZlciBhbmNob3IgZW5jbG9zZXMgaXQuXG4gIGNvbnN0IGFuY2hvck5hbWVUb1Bvc2l0aW9uQWdhaW5zdCA9IHBvaW50ID8gb3duQW5jaG9yTmFtZSA6IGluaGVyaXRlZEFuY2hvck5hbWU7XG5cbiAgaWYgKGFuY2hvcmVkQXQgIT09IHVuZGVmaW5lZCkge1xuICAgIGNvbnRyaWJ1dGVQcm9wcyh7IHBvcG92ZXI6IFwibWFudWFsXCIgfSk7XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNBbmNob3IpIHtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYW5jaG9yTmFtZVByb3BlcnR5LCBvd25BbmNob3JOYW1lKTtcbiAgICB9XG5cbiAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9zaXRpb25Qcm9wZXJ0eSwgcG9zaXRpb24pO1xuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShnYXBQcm9wZXJ0eSwgYCR7dFNoaXJ0U2l6ZUluUGl4ZWxzKGdhcCl9cHhgKTtcblxuICAgICAgLy8gT25seSB0b3dhcmQgdGhlIGFuY2hvciwgc28gdGhlIGVsZW1lbnQgc3RpbGwgbGluZXMgdXAgd2l0aCBpdCBvbiB0aGUgb3RoZXIgYXhpcy4gQVxuICAgICAgLy8gZmFsbGJhY2sgdGhhdCBtaXJyb3JzIHRoZSBwb3NpdGlvbiBtaXJyb3JzIHRoaXMgbWFyZ2luIHdpdGggaXQuXG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KG1hcmdpblByb3BlcnR5VG93YXJkc0FuY2hvcihwb3NpdGlvbiksIGAke3RTaGlydFNpemVJblBpeGVscyhnYXApfXB4YCk7XG5cbiAgICAgIGlmIChhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb3NpdGlvbkFuY2hvclByb3BlcnR5LCBhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QpO1xuICAgICAgfVxuXG4gICAgICBpZiAocG9pbnQpIHtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb2ludFhQcm9wZXJ0eSwgYCR7cG9pbnQueH1weGApO1xuICAgICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHBvaW50WVByb3BlcnR5LCBgJHtwb2ludC55fXB4YCk7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIXBvc2l0aW9uIHx8ICFlbGVtZW50IHx8ICFpc1BvcG92ZXJDYXBhYmxlKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGVsZW1lbnQuaGlkZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbcG9zaXRpb25dKTtcblxuICBjb25zdCBjb250ZW50ID0gcG9pbnQgPyAoXG4gICAgPD5cbiAgICAgIHsvKiBBIHplcm8tc2l6ZSBhbmNob3IgYXQgdGhlIHBvaW50LCBzbyBhIGN1cnNvci1hbmNob3JlZCBlbGVtZW50IHBvc2l0aW9ucyBsaWtlIGFueSBvdGhlci4gKi99XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFuY2hvclBvaW50fVxuICAgICAgICBzdHlsZT17XG4gICAgICAgICAge1xuICAgICAgICAgICAgW2FuY2hvck5hbWVQcm9wZXJ0eV06IG93bkFuY2hvck5hbWUsXG4gICAgICAgICAgICBbcG9pbnRYUHJvcGVydHldOiBgJHtwb2ludC54fXB4YCxcbiAgICAgICAgICAgIFtwb2ludFlQcm9wZXJ0eV06IGAke3BvaW50Lnl9cHhgLFxuICAgICAgICAgIH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllc1xuICAgICAgICB9XG4gICAgICAvPlxuXG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC8+XG4gICkgOiAoXG4gICAgY2hpbGRyZW5cbiAgKTtcblxuICBpZiAoaXNBbmNob3IpIHtcbiAgICByZXR1cm4gPGFuY2hvck5hbWVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtvd25BbmNob3JOYW1lfT57Y29udGVudH08L2FuY2hvck5hbWVDb250ZXh0LlByb3ZpZGVyPjtcbiAgfVxuXG4gIHJldHVybiA8Pntjb250ZW50fTwvPjtcbn07XG5cbmV4cG9ydCBjb25zdCBhbmNob3JQbHVnaW4gPSBnZXRQbHVnaW48XG4gIEFuY2hvclBsdWdpblByb3BzLFxuICBbXG4gICAgdHlwZW9mIGNsYXNzTmFtZVBsdWdpbixcbiAgICB0eXBlb2YgY29sb3JQbHVnaW4sXG4gICAgdHlwZW9mIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgICB0eXBlb2YgYm9yZGVyUGx1Z2luLFxuICAgIHR5cGVvZiBwYWRkaW5nUGx1Z2luLFxuICAgIHR5cGVvZiBtYXJnaW5QbHVnaW4sXG4gICAgdHlwZW9mIG92ZXJmbG93UGx1Z2luLFxuICBdXG4+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRhbmNob3IsICRhbmNob3JlZEF0LCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRhbmNob3IgJiYgJGFuY2hvcmVkQXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7ICRhbmNob3I6IHVuZGVmaW5lZCwgJGFuY2hvcmVkQXQ6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkYW5jaG9yOiB1bmRlZmluZWQsXG4gICAgJGFuY2hvcmVkQXQ6IHVuZGVmaW5lZCxcblxuICAgIC8vIFJpc2luZyB0byB0aGUgdG9wIGxheWVyIGlzIGEgdGVjaG5pY2FsaXR5IG9mIHBvc2l0aW9uaW5nLCBidXQgdGhlIGJyb3dzZXIgbWFrZXMgaXQgYSBsb29rOlxuICAgIC8vIGNvbG91cnMgb2YgaXRzIG93biwgYSBib3JkZXIsIHBhZGRpbmcsIGFuZCBhIG1hcmdpbiB0aGF0IHdvdWxkIGNlbnRlciB0aGUgZWxlbWVudC4gVW5kbyB0aGF0LFxuICAgIC8vIHNvIGFuIGVsZW1lbnQgcG9zaXRpb25lZCB0aGlzIHdheSBsb29rcyBsaWtlIGl0IGRvZXMgYW55d2hlcmUgZWxzZSwgYW5kIGxldCB3aGF0ZXZlciBpdCBzYXlzXG4gICAgLy8gYWJvdXQgaXRzZWxmIHdpbi5cbiAgICAuLi4oJGFuY2hvcmVkQXQgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAkY29sb3I6IHByb3BzLiRjb2xvciA/PyBcImluaGVyaXRcIixcbiAgICAgICRiYWNrZ3JvdW5kQ29sb3I6IHByb3BzLiRiYWNrZ3JvdW5kQ29sb3IgPz8gXCJ0cmFuc3BhcmVudFwiLFxuICAgICAgJGJvcmRlcjogeyB3aWR0aDogXCJ6ZXJvXCIsIC4uLnByb3BzLiRib3JkZXIgfSxcbiAgICAgICRwYWRkaW5nOiBwcm9wcy4kcGFkZGluZyA/PyBcInplcm9cIixcbiAgICAgICRtYXJnaW46IHByb3BzLiRtYXJnaW4gPz8gXCJ6ZXJvXCIsXG4gICAgICAkb3ZlcmZsb3c6IHByb3BzLiRvdmVyZmxvdyA/PyBcInZpc2libGVcIixcbiAgICB9KSxcblxuICAgICRjbGFzc05hbWU6IGNzc05hbWVzKCRjbGFzc05hbWUsIHtcbiAgICAgIFtzdHlsZXMuYW5jaG9yXTogISEkYW5jaG9yLFxuICAgICAgW3N0eWxlcy5hbmNob3JlZEF0XTogJGFuY2hvcmVkQXQgIT09IHVuZGVmaW5lZCxcbiAgICB9KSxcblxuICAgICR3cmFwcGVyOiB7XG4gICAgICBDb21wb25lbnQ6IEFuY2hvcldyYXBwZXJDb21wb25lbnQsXG4gICAgICBwcm9wczogeyBpc0FuY2hvcjogISEkYW5jaG9yLCBhbmNob3JlZEF0OiAkYW5jaG9yZWRBdCB9LFxuICAgIH0sXG4gIH07XG59KTtcblxuY29uc3QgbWFyZ2luUHJvcGVydHlUb3dhcmRzQW5jaG9yID0gKHBvc2l0aW9uOiBBbmNob3JQb3NpdGlvbikgPT4ge1xuICBpZiAocG9zaXRpb24uc3RhcnRzV2l0aChcImJvdHRvbVwiKSkge1xuICAgIHJldHVybiBcIm1hcmdpbi10b3BcIjtcbiAgfVxuXG4gIGlmIChwb3NpdGlvbi5zdGFydHNXaXRoKFwidG9wXCIpKSB7XG4gICAgcmV0dXJuIFwibWFyZ2luLWJvdHRvbVwiO1xuICB9XG5cbiAgcmV0dXJuIHBvc2l0aW9uLnN0YXJ0c1dpdGgoXCJyaWdodFwiKSA/IFwibWFyZ2luLWxlZnRcIiA6IFwibWFyZ2luLXJpZ2h0XCI7XG59O1xuXG5jb25zdCBhbmNob3JOYW1lUHJvcGVydHkgPSBcIi0tYW5jaG9yLW5hbWVcIjtcbmNvbnN0IGdhcFByb3BlcnR5ID0gXCItLWFuY2hvci1nYXBcIjtcbmNvbnN0IHBvc2l0aW9uQW5jaG9yUHJvcGVydHkgPSBcIi0tYW5jaG9yLXRhcmdldFwiO1xuY29uc3QgcG9zaXRpb25Qcm9wZXJ0eSA9IFwiLS1hbmNob3ItcG9zaXRpb25cIjtcbmNvbnN0IHBvaW50WFByb3BlcnR5ID0gXCItLWFuY2hvci1wb2ludC14XCI7XG5jb25zdCBwb2ludFlQcm9wZXJ0eSA9IFwiLS1hbmNob3ItcG9pbnQteVwiO1xuXG4vKiogQW5jaG9yIG5hbWVzIGFyZSBkYXNoZWQgaWRlbnRzLCBzbyB0aGUgZ2VuZXJhdGVkIGlkIGhhcyB0byBsb3NlIGV2ZXJ5dGhpbmcgZWxzZS4gKi9cbmNvbnN0IHRvQW5jaG9yTmFtZSA9IChpZDogc3RyaW5nKSA9PiBgLS1hbmNob3ItJHtpZC5yZXBsYWNlKC9bXmEtekEtWjAtOV0vZywgXCJcIil9YDtcblxudHlwZSBQb3BvdmVyQ2FwYWJsZSA9IEhUTUxFbGVtZW50ICYgeyBzaG93UG9wb3ZlcjogVm9pZEZ1bmN0aW9uOyBoaWRlUG9wb3ZlcjogVm9pZEZ1bmN0aW9uIH07XG5cbmNvbnN0IGlzUG9wb3ZlckNhcGFibGUgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQpOiBlbGVtZW50IGlzIFBvcG92ZXJDYXBhYmxlID0+XG4gIHR5cGVvZiAoZWxlbWVudCBhcyBQYXJ0aWFsPFBvcG92ZXJDYXBhYmxlPikuc2hvd1BvcG92ZXIgPT09IFwiZnVuY3Rpb25cIjtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYW5jaG9yXCI6IFwiYW5jaG9yLW1vZHVsZV9fYW5jaG9yX19fbS01dWJcIixcbiAgXCJhbmNob3JlZEF0XCI6IFwiYW5jaG9yLW1vZHVsZV9fYW5jaG9yZWRBdF9fX1VBclVLXCIsXG4gIFwiYW5jaG9yUG9pbnRcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JQb2ludF9fX3NBMUFjXCJcbn07IiwgImltcG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9mb2N1c2FibGVcIjtcblxuZXhwb3J0IHR5cGUgJEZvY3VzYWJsZVByb3BzPEZvY3VzZWRJdGVtPiA9IFJlcXVpcmVkPEZvY3VzYWJsZVBsdWdpblByb3BzPEZvY3VzZWRJdGVtPj5bXCIkZm9jdXNhYmxlXCJdO1xuXG4vKipcbiAqIElkZW50aWZpZXMgYSBzZXQgb2YgZm9jdXNhYmxlcyBjb21wZXRpbmcgZm9yIG9uZSBmb2N1c2VkIGl0ZW0uIEVsZW1lbnRzIGpvaW4gaXQgYnkgZGVjbGFyaW5nXG4gKiBgJGZvY3VzYWJsZWA7IG5vdGhpbmcgZW51bWVyYXRlcyB0aGVtIGF0IHRoZSBjYWxsIHNpdGUuXG4gKi9cbmV4cG9ydCB0eXBlIEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBpc0tleWJvYXJkTmF2aWdhYmxlOiBmYWxzZTtcbiAgZm9jdXNhYmxlOiAoaXRlbTogRm9jdXNlZEl0ZW0pID0+ICRGb2N1c2FibGVQcm9wczxGb2N1c2VkSXRlbT47XG59O1xuXG4vKipcbiAqIEEgZm9jdXNhYmxlIGNvbnRleHQgd2hvc2UgbWVtYmVycyBhcmUgYWxzbyBuYXZpZ2F0ZWQgd2l0aCBhcnJvdyBrZXlzLCBpbiB0aGUgb3JkZXIgdGhleSBzdGF0ZS5cbiAqIFRoZSBsb3dlc3Qgb3JkZXIgbnVtYmVyIGlzIGZvY3VzZWQgd2hlbiB0aGUgbWVtYmVycyBhcHBlYXIsIGFuZCBmb2N1cyByZXR1cm5zIHRvIHRoZSBlbmNsb3NpbmdcbiAqIGNvbnRleHQgd2hlbiB0aGV5IGdvIGF3YXkuXG4gKi9cbmV4cG9ydCB0eXBlIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzS2V5Ym9hcmROYXZpZ2FibGU6IHRydWU7XG4gIGZvY3VzYWJsZTogKGl0ZW06IEZvY3VzZWRJdGVtLCBvcmRlck51bWJlcjogbnVtYmVyKSA9PiAkRm9jdXNhYmxlUHJvcHM8Rm9jdXNlZEl0ZW0+O1xufTtcblxuZXhwb3J0IHR5cGUgQW55Rm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbSA9IGFueT4gPVxuICB8IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+XG4gIHwgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPjtcblxuY29uc3QgY29udGV4dHNCeUlkID0gbmV3IE1hcDxzdHJpbmcsIEFueUZvY3VzYWJsZUNvbnRleHQ+KCk7XG5cbi8qKlxuICogRGVjbGFyZXMgYSBmb2N1c2FibGUgY29udGV4dC4gVGhlIHNhbWUgaWQgYWx3YXlzIHlpZWxkcyB0aGUgc2FtZSBjb250ZXh0LCBzbyBjYWxsaW5nIHRoaXMgZHVyaW5nXG4gKiByZW5kZXIgaXMgc3RhYmxlIFx1MjAxNCB3aGljaCBpcyB3aGF0IGxldHMgYSBzdXJmYWNlIHdpdGggc2V2ZXJhbCBsaXZlIGluc3RhbmNlcyBuYW1lIG9uZSBjb250ZXh0IHBlclxuICogaW5zdGFuY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRGb2N1c2FibGVDb250ZXh0ID0gPEZvY3VzZWRJdGVtLD4oaWQ6IHN0cmluZyk6IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0+XG4gIGdldE9yQ3JlYXRlQ29udGV4dChpZCwgKCkgPT4ge1xuICAgIGNvbnN0IGNvbnRleHQ6IEZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICAgICAgaWQsXG4gICAgICBpc0tleWJvYXJkTmF2aWdhYmxlOiBmYWxzZSxcbiAgICAgIGZvY3VzYWJsZTogKGl0ZW0pID0+ICh7IGNvbnRleHQsIGl0ZW0gfSksXG4gICAgfTtcblxuICAgIHJldHVybiBjb250ZXh0O1xuICB9KTtcblxuLyoqXG4gKiBEZWNsYXJlcyBhIGZvY3VzYWJsZSBjb250ZXh0IHdob3NlIG1lbWJlcnMgYXJlIG5hdmlnYXRlZCB3aXRoIGFycm93IGtleXMuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQgPSA8Rm9jdXNlZEl0ZW0sPihcbiAgaWQ6IHN0cmluZyxcbik6IEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPT5cbiAgZ2V0T3JDcmVhdGVDb250ZXh0KGlkLCAoKSA9PiB7XG4gICAgY29uc3QgY29udGV4dDogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgICAgIGlkLFxuICAgICAgaXNLZXlib2FyZE5hdmlnYWJsZTogdHJ1ZSxcbiAgICAgIGZvY3VzYWJsZTogKGl0ZW0sIG9yZGVyTnVtYmVyKSA9PiAoeyBjb250ZXh0LCBpdGVtLCBvcmRlck51bWJlciB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGNvbnRleHQ7XG4gIH0pO1xuXG5jb25zdCBnZXRPckNyZWF0ZUNvbnRleHQgPSA8VCBleHRlbmRzIEFueUZvY3VzYWJsZUNvbnRleHQ+KGlkOiBzdHJpbmcsIGNyZWF0ZTogKCkgPT4gVCk6IFQgPT4ge1xuICBjb25zdCBleGlzdGluZyA9IGNvbnRleHRzQnlJZC5nZXQoaWQpO1xuXG4gIGlmIChleGlzdGluZykge1xuICAgIHJldHVybiBleGlzdGluZyBhcyBUO1xuICB9XG5cbiAgY29uc3QgY3JlYXRlZCA9IGNyZWF0ZSgpO1xuXG4gIGNvbnRleHRzQnlJZC5zZXQoaWQsIGNyZWF0ZWQpO1xuXG4gIHJldHVybiBjcmVhdGVkO1xufTtcbiIsICJpbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IGdldEhvdmVyYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyB0eXBlIE11dGFibGVSZWZPYmplY3QsIHVzZU1lbW8sIHVzZVJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29udGV4dElzQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSB9IGZyb20gXCIuL19wcml2YXRlL2NvbnRleHQtaXMtYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VMb2NhbEhvdmVyYWJsZSA9IDxFbGVtIGV4dGVuZHMgSFRNTEVsZW1lbnQ+KCkgPT4ge1xuICBjb25zdCBob3ZlcmFibGVDb250ZXh0ID0gdXNlTWVtbygoKSA9PiBnZXRIb3ZlcmFibGVDb250ZXh0PE11dGFibGVSZWZPYmplY3Q8RWxlbSB8IG51bGw+PigpLCBbXSk7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxFbGVtPihudWxsKTtcbiAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IHVzZVN5bmNJbmplY3QoY29udGV4dElzQmVpbmdIb3ZlcmVkSW5qZWN0YWJsZSwgaG92ZXJhYmxlQ29udGV4dCk7XG5cbiAgcmV0dXJuIHtcbiAgICByZWYsXG4gICAgY29udGV4dDogaG92ZXJhYmxlQ29udGV4dC5ob3ZlcmFibGUocmVmKSxcbiAgICBjb21wb25lbnRJc0hvdmVyZWQ6IGl0ZW1CZWluZ0hvdmVyZWQsXG4gIH07XG59O1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsK0JBQWdEO0FBRWhELG1CQUErQztBQXdEdEM7QUFwQ0YsSUFBTSxvQkFBb0IsQ0FBQyxtQkFBa0Q7QUFDbEYsUUFBTSwrQkFBMkIscUJBQTBCLE1BQVM7QUFDcEUsUUFBTSxpQkFBYSxxQkFBTyxjQUFjO0FBRXhDLDhCQUFVLE1BQU07QUFDZCxlQUFXLFVBQVU7QUFBQSxFQUN2QixDQUFDO0FBRUQsOEJBQVUsTUFBTTtBQUNkLFVBQU0sNEJBQTRCLENBQUMsVUFBd0I7QUFDekQsVUFBSSxVQUFVLHlCQUF5QixTQUFTO0FBQzlDLG1CQUFXLFFBQVEsS0FBSztBQUFBLE1BQzFCO0FBQUEsSUFDRjtBQUVBLGFBQVMsaUJBQWlCLGVBQWUseUJBQXlCO0FBRWxFLFdBQU8sTUFBTSxTQUFTLG9CQUFvQixlQUFlLHlCQUF5QjtBQUFBLEVBQ3BGLEdBQUcsQ0FBQyxDQUFDO0FBRUwsUUFBTSwy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cUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QixpQkFB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RUFDckIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIscUJBQXFCO0FBQUEsRUFDckIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsd0JBQXdCO0FBQUEsRUFDeEIsK0JBQStCO0FBQUEsRUFDL0Isa0NBQWtDO0FBQUEsRUFDbEMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsZ0NBQWdDO0FBQUEsRUFDaEMsdUNBQXVDO0FBQUEsRUFDdkMsMENBQTBDO0FBQUEsRUFDMUMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsMkJBQTJCO0FBQUEsRUFDM0Isa0NBQWtDO0FBQUEsRUFDbEMscUNBQXFDO0FBQUEsRUFDckMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsK0JBQStCO0FBQUEsRUFDL0Isc0NBQXNDO0FBQUEsRUFDdEMseUNBQXlDO0FBQUEsRUFDekMsdUJBQXVCO0FBQUEsRUFDdkIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsdUJBQXVCO0FBQUEsRUFDdkIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsd0JBQXdCO0FBQUEsRUFDeEIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsaUNBQWlDO0FBQUEsRUFDakMsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsbUNBQW1DO0FBQUEsRUFDbkMsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsaUNBQWlDO0FBQUEsRUFDakMsa0NBQWtDO0FBQUEsRUFDbEMsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsNEJBQTRCO0FBQUEsRUFDNUIsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsbUNBQW1DO0FBQUEsRUFDbkMsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsbUNBQW1DO0FBQUEsRUFDbkMsb0NBQW9DO0FBQUEsRUFDcEMsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0IsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsb0NBQW9DO0FBQUEsRUFDcEMsZ0NBQWdDO0FBQUEsRUFDaEMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0Isc0NBQXNDO0FBQUEsRUFDdEMsZ0NBQWdDO0FBQUEsRUFDaEMsZ0NBQWdDO0FBQUEsRUFDaEMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsb0NBQW9DO0FBQUEsRUFDcEMscUNBQXFDO0FBQUEsRUFDckMsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsa0NBQWtDO0FBQUEsRUFDbEMsOEJBQThCO0FBQUEsRUFDOUIsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEs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M0Isd0JBQXdCO0FBQUEsRUFDeEIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsaUJBQWlCO0FBQUEsRUFDakIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsaUJBQWlCO0FBQUEsRUFDakIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsbUJBQW1CO0FBQUEsRUFD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b0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQ2xCOzs7QUM1REEsSUFBQUMsNkJBQTBCO0FBV25CLElBQU0sbUJBQWUsc0NBQXVELENBQUMsVUFBVTtBQUM1RixRQUFNLEVBQUUsUUFBUSxJQUFJO0FBQ3BCLFFBQU0sRUFBRSxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUUsUUFBUSxRQUFRLElBQUssV0FBVyxDQUFDO0FBRTlGLFNBQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxNQUNWLFNBQVMsc0JBQWEsV0FBVyxNQUFNLEVBQUUsSUFBSTtBQUFBLE1BQzdDLE1BQU0sc0JBQWEsZUFBZSxHQUFHLEVBQUUsSUFBSTtBQUFBLE1BQzNDLE1BQU0sc0JBQWEsZUFBZSxHQUFHLEVBQUUsSUFBSTtBQUFBLE1BQzNDLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxTQUFTO0FBQUEsRUFDWDtBQUNGLENBQUM7OztBQ3pCRCxJQUFBQyw2QkFBMEI7OztBQ0Q2QixJQUFPLHVCQUFRO0FBQUEsRUFDcEUsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsZ0JBQWdCO0FBQUEsRUFDaEIsc0JBQXNCO0FBQUEsRUFDdEIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0Isa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsd0JBQXdCO0FBQUEsRUFDeEIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0Isa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsbUJBQW1CO0FBQUEsRUFDbkIseUJBQXlCO0FBQUEsRUFDekIsNEJBQTRCO0FBQUEsRUFDNUIsc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0Isc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0IsdUJBQXVCO0FBQUEsRUFDdkIsNkJBQTZCO0FBQUEsRUFDN0IsZ0NBQWdDO0FBQUEsRUFDaEMsZUFBZTtBQUFBLEVBQ2YscUJBQXFCO0FBQUEsRUFDckIsd0JBQXdCO0FBQUEsRUFDeEIsZUFBZTtBQUFBLEVBQ2YscUJBQXFCO0FBQUEsRUFDckIsd0JBQXdCO0FBQzFC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LHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG1CQUFtQjtBQUFBLEVBQ25CLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLGtCQUFrQjtBQUFBLEVBQ2xCLHFCQUFxQjtBQUFBLEVBQ3JCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLG9CQUFvQjtBQUFBLEVBQ3BCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHFCQUFxQjtBQUFBLEVBQ3JCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUN6Qjs7O0FEckVPLElBQU0sbUJBQWUsc0NBQXVELENBQUMsVUFBVTtBQUM1RixNQUFJLENBQUMsTUFBTSxTQUFTO0FBQ2xCLFdBQU8sRUFBRSxTQUFTLE9BQVU7QUFBQSxFQUM5QjtBQUVBLFNBQU87QUFBQSxJQUNMLFlBQVksQ0FBQyxNQUFNLFlBQVksc0JBQWEsV0FBVyxNQUFNLFFBQVEsU0FBUyxLQUFLLE1BQU0sUUFBUSxJQUFJLEVBQUUsQ0FBQztBQUFBLElBRXhHLFNBQVM7QUFBQSxFQUNYO0FBQ0YsQ0FBQzs7O0FFakJELElBQUFDLDZCQUEwQjs7O0FDRGlELElBQU8saUNBQVE7QUFBQSxFQUN4Riw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw0QkFBNEI7QUFBQSxFQUM1QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5QiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3QiwyQkFBMkI7QUFBQSxFQUMzQiw4QkFBOEI7QUFBQSxFQUM5Qiw0QkFBNEI7QUFBQSxFQUM1Qiw2QkFBNkI7QUFBQSxFQUM3Qiw0QkFBNEI7QUFBQSxFQUM1QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3Qiw4QkFBOEI7QUFBQSxFQUM5Qiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw2QkFBNkI7QUFBQSxFQUM3QixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QiwrQkFBK0I7QUFBQSxFQUMvQiw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFBQSxFQUNoQyw4QkFBOEI7QUFBQSxFQUM5QixpQ0FBaUM7QUFBQSxFQUNqQywrQkFBK0I7QUFBQSxFQUMvQixnQ0FBZ0M7QUFDbEM7OztBRHJFTyxJQUFNLDJCQUF1QixzQ0FBK0QsQ0FBQyxVQUFVO0FBQzVHLE1BQUksQ0FBQyxNQUFNLGlCQUFpQjtBQUMxQixXQUFPLEVBQUUsaUJBQWlCLE9BQVU7QUFBQSxFQUN0QztBQUVBLFNBQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxNQUNWLE1BQU07QUFBQSxNQUNOLCtCQUFhLG9CQUFvQixNQUFNLGdCQUFnQixTQUFTLEtBQUssTUFBTSxnQkFBZ0IsSUFBSSxFQUFFO0FBQUEsSUFDbkc7QUFBQSxJQUVBLGlCQUFpQjtBQUFBLEVBQ25CO0FBQ0YsQ0FBQzs7O0FFcEJELElBQUFDLDZCQUEwQjs7O0FDRCtCLElBQU8sd0JBQVE7QUFBQSxFQUN0RSxVQUFVO0FBQ1o7OztBRElPLElBQU0sbUJBQWUsc0NBQXVELENBQUMsV0FBVztBQUFBLEVBQzdGLFlBQVksQ0FBQyxNQUFNLFlBQVksRUFBRSxDQUFDLHNCQUFhLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxRQUFRLENBQUM7QUFBQSxFQUV6RSxTQUFTO0FBQ1gsRUFBRTs7O0FFVEYsSUFBQUMsNkJBQTBCOzs7QUNEK0IsSUFBTyx3QkFBUTtBQUFBLEVBQ3RFLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLGtCQUFrQjtBQUFBLEVBQ2xCLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLG9CQUFvQjtBQUFBLEVBQ3BCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHNCQUFzQjtBQUFBLEVBQ3RCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHVCQUF1QjtBQUFBLEVBQ3ZCLHdCQUF3QjtBQUFBLEVBQ3hCLHdCQUF3QjtBQUFBLEVBQ3hCLHNCQUFzQjtBQUFBLEVBQ3RCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLHFCQUFxQjtBQUFBLEVBQ3JCLG9CQUFvQjtBQUFBLEVBQ3BCLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG1CQUFtQjtBQUFBLEVBQ25CLG9CQUFv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QUEsRUFDVDtBQUVBLFFBQU0sVUFBVSxPQUFPO0FBRXZCLGVBQWEsSUFBSSxJQUFJLE9BQU87QUFFNUIsU0FBTztBQUNUOzs7QUMzRUEsSUFBQUMsc0JBQThCO0FBRTlCLElBQUFDLGlCQUF1RDtBQUdoRCxJQUFNLG9CQUFvQixNQUFnQztBQUMvRCxRQUFNLHVCQUFtQix3QkFBUSxNQUFNLG9CQUFtRCxHQUFHLENBQUMsQ0FBQztBQUMvRixRQUFNLFVBQU0sdUJBQWEsSUFBSTtBQUM3QixRQUFNLHVCQUFtQixtQ0FBYyxpQ0FBaUMsZ0JBQWdCO0FBRXhGLFNBQU87QUFBQSxJQUNMO0FBQUEsSUFDQSxTQUFTLGlCQUFpQixVQUFVLEdBQUc7QUFBQSxJQUN2QyxvQkFBb0I7QUFBQSxFQUN0QjtBQUNGOyIsCiAgIm5hbWVzIjogWyJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJ0b0NvbnRleHRNYXAiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgInN0eWxlcyIsICJpbXBvcnRfZnAiLCAibG9kYXNoQ2FwaXRhbGl6ZSIsICJpbXBvcnRfZnAiLCAiYWxpYXNUb05vbWluYWwiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZmVhdHVyZV9jb3JlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9mcCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJtb2R1bGVzIiwgIm1vZHVsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImFsaWFzVG9Ob21pbmFsIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfbW9ieF9yZWFjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9mcCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgInN0eWxlcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfdGVzdF91dGlscyIsICJzdHlsZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9yZWFjdF9kb20iLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0X2RvbSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJzdG9wUHJvcGFnYXRpb24iLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaXNQb3BvdmVyQ2FwYWJsZSIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiXQp9Cg==
|
|
4221
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vaW5kZXgudHMiLCAiLi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQudHMiLCAiLi4vc3JjL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9ob3ZlcmFibGUvY29tcHV0ZWQtbm93LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAudHN4IiwgIi4uL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9lbGVtZW50cy9taW5pbWFsLWRpdi50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS50cyIsICIuLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZS5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmcudHMiLCAiLi4vc3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm9yZGVyL2JvcmRlci50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlcy50cyIsICIuLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvbnQvZm9udC50cyIsICIuLi9zcmMvcGx1Z2lucy9mb250L2ZvbnQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvdy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy50cyIsICIuLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50cy5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9yZWYvcmVmLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGFzcy1uYW1lL2NsYXNzLW5hbWUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvcmVsYXRpdmUvcmVsYXRpdmUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZ2V0LWRyYWdnYWJsZS1jb250ZXh0LnRzIiwgIi4uL3NyYy9mZWF0dXJlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMiLCAiLi4vc3JjL3Rlc3QtdXRpbC1ydW5uYWJsZS5pbmplY3RhYmxlLnRzIiwgImltcG9ydC1nbG9iOi4vKiovKi5nbG9iYWwtb3ZlcnJpZGUtZm9yLWluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy81NjljNGYxZS1lN2Y0LTQ4NmYtOGE2Mi1kMDVlNzUwMjZkYzgiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4vbWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW4uZGVmYXVsdC1vdmVycmlkZS50cyIsICIuLi9zcmMvcGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzIiwgIi4uL3NyYy9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmRlZmF1bHQtb3ZlcnJpZGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9jNjM0MGQ0ZC04YjZhLTRkZWItYjY4YS0yY2VjNDM0NmNiMjYiLCAiaW1wb3J0LWdsb2I6Li8qKi8qLmluamVjdGFibGUuKHRzfHRzeCkvcHJvb2Ytb2YtdW5pcXVlbmVzcy9mYjhiMzBjNi0zY2M0LTQyMmMtYmQxMS0zYzA3MDEyMmEzYTAiLCAiLi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplcy50cyIsICIuLi9zcmMvZWxlbWVudHMudHMiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC9mbGV4Lm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgvZmxleC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmlkL2dyaWQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3N0eWxlL3N0eWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodC50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci50cyIsICIuLi9zcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUudHMiLCAiLi4vc3JjL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJhZ2dhYmxlLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2Ryb3BwYWJsZS50cyIsICIuLi9zcmMvcGx1Z2lucy90cmFuc2l0aW9uL3RyYW5zaXRpb24udHMiLCAiLi4vc3JjL3BsdWdpbnMvdHJhbnNpdGlvbi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXQudHMiLCAiLi4vc3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvaGlkZGVuL2hpZGRlbi50cyIsICIuLi9zcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL21hcmdpbi9tYXJnaW4udHMiLCAiLi4vc3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy92aXN1YWxseS1oaWRkZW4vdmlzdWFsbHktaGlkZGVuLnRzIiwgIi4uL3NyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3cubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZmxleC1jaGlsZC9mbGV4LWNoaWxkLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZC50cyIsICIuLi9zcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGUubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGludC90aW50LnRzIiwgIi4uL3NyYy9wbHVnaW5zL3RpbnQvdGludC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC50cyIsICIuLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZC5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZS50c3giLCAiLi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS91c2Uta2V5Ym9hcmQtbmF2aWdhdGlvbi50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvaGFuZGxlLWZvY3VzLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9fcHJpdmF0ZS9oYW5kbGUtYmx1ci50cyIsICIuLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZy50cyIsICIuLi9zcmMvcGx1Z2lucy9hcmVhL2FyZWEudHMiLCAiLi4vc3JjL3BsdWdpbnMvYXJlYS1jb250ZW50L2FyZWEtY29udGVudC50cyIsICIuLi9zcmMvcGx1Z2lucy9zaXplL3NpemUudHMiLCAiLi4vc3JjL3BsdWdpbnMvY3Vyc29yL2N1cnNvci5tb2R1bGUuc2NzcyIsICIuLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9jbGlja2FibGUvY2xpY2thYmxlLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLnRzeCIsICIuLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MiLCAiLi4vc3JjL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduLnRzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Jsb2NrL2Jsb2NrLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUudHMiLCAiLi4vc3JjL3BsdWdpbnMvb3V0bGluZS9vdXRsaW5lLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci50c3giLCAiLi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2Zsb2F0aW5nL2Zsb2F0aW5nLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ludmlzaWJsZS1iYWNrZHJvcC9pbnZpc2libGUtYmFja2Ryb3AudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51LnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLnRzeCIsICIuLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yLm1vZHVsZS5zY3NzIiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHQudHN4IiwgIi4uL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGUtaXRlbS1jb250ZXh0LnRzIiwgIi4uL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlLnRzIl0sCiAgInNvdXJjZXNDb250ZW50IjogWyJleHBvcnQgdHlwZSB7IEJsb2NrUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ibG9jay9ibG9ja1wiO1xuZXhwb3J0IHR5cGUgeyBBbmNob3JlZEF0LCBBbmNob3JQbHVnaW5Qcm9wcywgQW5jaG9yUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hbmNob3IvYW5jaG9yXCI7XG5leHBvcnQgeyB1c2VPbk91dHNpZGVDbGljayB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29uLW91dHNpZGUtY2xpY2svb24tb3V0c2lkZS1jbGlja1wiO1xuZXhwb3J0IHR5cGUgeyBPbk91dHNpZGVDbGlja1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5leHBvcnQgdHlwZSB7IERyb3BEb3duTWVudVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZHJvcC1kb3duLW1lbnUvZHJvcC1kb3duLW1lbnVcIjtcbmV4cG9ydCB0eXBlIHsgVGV4dEFsaWduUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ25cIjtcblxuZXhwb3J0IHsgdHlwZSBEb0ZvY3VzLCB0eXBlIERvRm9jdXNGb3IsIGRvRm9jdXNGb3JJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9pdGVtLWJlaW5nLWZvY3VzZWQuaW5qZWN0YWJsZVwiO1xuZXhwb3J0IHR5cGUgeyBJdGVtQmVpbmdGb2N1c2VkIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgRm9jdXNhYmxlUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mb2N1c2FibGUvZm9jdXNhYmxlXCI7XG5leHBvcnQgeyB0eXBlIEVuYWJsZWRQbHVnaW5Qcm9wcywgaXNEaXNhYmxlZCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2VuYWJsZWQvZW5hYmxlZFwiO1xuZXhwb3J0IHR5cGUgeyBHcmF5c2NhbGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2dyYXlzY2FsZS9ncmF5c2NhbGVcIjtcbmV4cG9ydCB0eXBlIHsgVGludFBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdGludC90aW50XCI7XG5leHBvcnQgdHlwZSB7IEZhZGVkUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuXG5leHBvcnQgdHlwZSB7IFNpZGVTdHlsZXMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvZ2V0LXNpZGUtc3R5bGVzXCI7XG5leHBvcnQgdHlwZSB7IENvcm5lclN0eWxlcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JvcmRlci9nZXQtY29ybmVyLXN0eWxlc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEJhY2tncm91bmRDb2xvclBsdWdpblByb3BzLFxuICBCYWNrZ3JvdW5kQ29sb3IsXG4gIEJhY2tncm91bmRDb2xvckFsaWFzLFxuICAkQmFja2dyb3VuZENvbG9yUHJvcHMsXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIE91dGxpbmVXaWR0aCxcbiAgJE91dGxpbmVQcm9wcyxcbiAgT3V0bGluZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmVcIjtcblxuZXhwb3J0IHR5cGUge1xuICBGbG9hdGluZ0NvbnRlbnRBcmdzLFxuICBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5LFxuICAkRmxvYXRpbmdQcm9wcyxcbiAgRmxvYXRpbmdQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcblxuZXhwb3J0IHR5cGUgeyBQYWRkaW5nUGx1Z2luUHJvcHMsIERpcmVjdGlvbmFsUGFkZGluZyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuZXhwb3J0IHR5cGUgeyBNYXJnaW5QbHVnaW5Qcm9wcywgRGlyZWN0aW9uYWxNYXJnaW4gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9tYXJnaW4vbWFyZ2luXCI7XG5leHBvcnQgdHlwZSB7IE92ZXJmbG93UGx1Z2luUHJvcHMsIE92ZXJmbG93IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvb3ZlcmZsb3cvb3ZlcmZsb3dcIjtcblxuZXhwb3J0IHR5cGUgeyBCb3hTaGFkb3dQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcyxcbiAgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZS1ieS1kcmFnZ2luZ1wiO1xuZXhwb3J0IHsgaG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9ob3ZlcmFibGUtYnktZHJhZ2dpbmdcIjtcblxuZXhwb3J0IHR5cGUge1xuICBIb3ZlcmFibGVDb250ZXh0LFxuICAkSG92ZXJhYmxlUHJvcHMsXG4gIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zLFxuICBIb3ZlcmFibGVQbHVnaW5Qcm9wcyxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaG92ZXJhYmxlUGx1Z2luLCBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyYWJsZVwiO1xuZXhwb3J0IHsgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgUmVmUGx1Z2luUHJvcHMsICRSZWZQcm9wLCBSZWZMaWtlIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSB7IEFic29sdXRlUGx1Z2luUHJvcHMsIEFic29sdXRlUG9zaXRpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9hYnNvbHV0ZS9hYnNvbHV0ZVwiO1xuZXhwb3J0IHR5cGUgeyBIaWRkZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hpZGRlbi9oaWRkZW5cIjtcbmV4cG9ydCB0eXBlIHsgTm9Qb2ludGVyRXZlbnRzUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuZXhwb3J0IHR5cGUgeyBPZmZzZXRQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC9vZmZzZXRcIjtcbmV4cG9ydCB0eXBlIHsgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL29mZnNldC1jaGlsZHJlbi9vZmZzZXQtY2hpbGRyZW5cIjtcbmV4cG9ydCB0eXBlIHsgUmVsYXRpdmVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5leHBvcnQgdHlwZSB7IFRyYW5zaXRpb25QbHVnaW5Qcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuZXhwb3J0IHR5cGUgeyBWaXN1YWxseUhpZGRlblBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuXG5leHBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgQ3Vyc29yUGx1Z2luUHJvcHMgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5leHBvcnQgdHlwZSB7IERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzXCI7XG5cbmV4cG9ydCB7IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIHsgVG9vbHRpcFBsdWdpblByb3BzLCAkVG9vbHRpcFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvdG9vbHRpcC90b29sdGlwXCI7XG5leHBvcnQgeyBTdHlsZWRUb29sdGlwQ29udGFpbmVyLCBnZXRUb29sdGlwUHJvcHMsIHN1cHByZXNzVG9vbHRpcCB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcFwiO1xuXG5leHBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGdldERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHsgZWxlbWVudENvbXBvbmVudEZlYXR1cmUgfSBmcm9tIFwiLi9zcmMvZmVhdHVyZVwiO1xuXG5leHBvcnQgdHlwZSB7IFNpemVQbHVnaW5Qcm9wcywgJFNpemVQcm9wcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuXG5leHBvcnQgdHlwZSB7IFdpZHRoUGx1Z2luUHJvcHMsICRXaWR0aFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcblxuZXhwb3J0IHR5cGUgeyBTdHlsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvc3R5bGUvc3R5bGVcIjtcblxuZXhwb3J0IHR5cGUgeyBIZWlnaHRQbHVnaW5Qcm9wcywgJEhlaWdodFByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvaGVpZ2h0L2hlaWdodFwiO1xuXG5leHBvcnQgdHlwZSB7IEZvbnRQbHVnaW5Qcm9wcywgRm9udFNpemUsIEZvbnRMaW5lSGVpZ2h0IH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9udC9mb250XCI7XG5cbmV4cG9ydCB0eXBlIHsgR3JpZFBsdWdpblByb3BzLCBHcmlkUHJvcHMsIEdyaWRDb2x1bW5zIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZ3JpZC9ncmlkXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgRHJhZ2dhYmxlUGx1Z2luUHJvcHMsXG4gIERyb3BwYWJsZVBsdWdpblByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9nZXQtZHJhZ2dhYmxlLWNvbnRleHRcIjtcblxuZXhwb3J0IHR5cGUgeyBDb2xvclBsdWdpblByb3BzLCAkQ29sb3JQcm9wcywgVGV4dENvbG9yLCBUZXh0Q29sb3JBbGlhcyB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NvbG9yL2NvbG9yXCI7XG5leHBvcnQgdHlwZSB7IENsYXNzTmFtZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIHtcbiAgQm9yZGVyUGx1Z2luUHJvcHMsXG4gIEJvcmRlckNvbG9yQWxpYXMsXG4gIEJvcmRlckNvbG9yLFxuICAkQm9yZGVyUHJvcHMsXG4gICRCb3JkZXJDb2xvclByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyXCI7XG5cbmV4cG9ydCB0eXBlIHsgQm9yZGVyUmFkaXVzU2l6ZSwgQm9yZGVyV2lkdGgsIEJvcmRlclNpZGUgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9ib3JkZXIvdHlwZXNcIjtcblxuZXhwb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuZXhwb3J0IHsgdFNoaXJ0U2l6ZUluUGl4ZWxzLCBzaXplVW5pdEluUGl4ZWxzIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSB7IERpcmVjdGlvbiwgU2hvcnREaXJlY3Rpb24gfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2RpcmVjdGlvbnNcIjtcbmV4cG9ydCB0eXBlIHsgQ29sb3IgfSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSB7XG4gIENsaWNrSGFuZGxlcixcbiAgQ2xpY2tIYW5kbGVyRGV0YWlscyxcbiAgQ2xpY2tQbHVnaW5Qcm9wcyxcbiAgUG9zaXRpb24yZCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuXG5leHBvcnQgdHlwZSB7XG4gIEZsZXhQbHVnaW5Qcm9wcyxcbiAgSG9yaXpvbnRhbEZsZXhQcm9wcyxcbiAgTWF4aW1hbEZsZXhQcm9wcyxcbiAgU2ltcGxlRmxleFByb3AsXG4gIFZlcnRpY2FsRmxleFByb3BzLFxufSBmcm9tIFwiLi9zcmMvcGx1Z2lucy9mbGV4L2ZsZXhcIjtcblxuaW1wb3J0IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nLFxuICBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuXG5leHBvcnQgeyByZW1vdmVDc3NNb2R1bGVDbHV0dGVyRm9yVW5pdFRlc3RpbmcsIHNob3dDc3NNb2R1bGVDbHV0dGVyRm9yUHJvZHVjdGlvbiB9O1xuXG5leHBvcnQge1xuICBDbGlja2FibGVEaXYsXG4gIE5hdixcbiAgU3ZnLFxuICBEaXYsXG4gIEJ1dHRvbixcbiAgSSxcbiAgSW5wdXQsXG4gIEZvcm0sXG4gIFNwYW4sXG4gIFRleHRBcmVhLFxuICBBLFxuICBDb2RlLFxuICBQcmUsXG4gIEgxLFxuICBIMixcbiAgSDMsXG4gIEg0LFxuICBINSxcbiAgSDYsXG4gIFAsXG4gIENsaWNrYWJsZUxpLFxuICBMaSxcbiAgT2wsXG4gIFVsLFxuICBUaCxcbiAgVGQsXG4gIFRyLFxuICBUYWJsZSxcbiAgTGFiZWwsXG4gIFRCb2R5LFxuICBEaWFsb2csXG4gIENhbnZhcyxcbiAgSW1nLFxufSBmcm9tIFwiLi9zcmMvZWxlbWVudHNcIjtcblxuZXhwb3J0IHR5cGUge1xuICBDb21tb25Qcm9wcyxcbiAgQ2xpY2thYmxlRGl2UHJvcHMsXG4gIENsaWNrYWJsZUxpUHJvcHMsXG4gIE5hdlByb3BzLFxuICBTdmdQcm9wcyxcbiAgRGl2UHJvcHMsXG4gIEJ1dHRvblByb3BzLFxuICBJUHJvcHMsXG4gIElucHV0UHJvcHMsXG4gIEZvcm1Qcm9wcyxcbiAgU3BhblByb3BzLFxuICBUZXh0QXJlYVByb3BzLFxuICBBUHJvcHMsXG4gIENvZGVQcm9wcyxcbiAgUHJlUHJvcHMsXG4gIEgxUHJvcHMsXG4gIEgyUHJvcHMsXG4gIEgzUHJvcHMsXG4gIEg0UHJvcHMsXG4gIEg1UHJvcHMsXG4gIEg2UHJvcHMsXG4gIFBQcm9wcyxcbiAgTGlQcm9wcyxcbiAgT2xQcm9wcyxcbiAgVWxQcm9wcyxcbiAgVGhQcm9wcyxcbiAgVGRQcm9wcyxcbiAgVHJQcm9wcyxcbiAgVGFibGVQcm9wcyxcbiAgTGFiZWxQcm9wcyxcbiAgVEJvZHlQcm9wcyxcbiAgRGlhbG9nUHJvcHMsXG4gIENhbnZhc1Byb3BzLFxuICBJbWdQcm9wcyxcbn0gZnJvbSBcIi4vc3JjL2VsZW1lbnRzXCI7XG5cbmV4cG9ydCB7XG4gIGdldEZvY3VzYWJsZUNvbnRleHQsXG4gIGdldEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbn0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuZXhwb3J0IHR5cGUge1xuICAkRm9jdXNhYmxlUHJvcHMsXG4gIEFueUZvY3VzYWJsZUNvbnRleHQsXG4gIEZvY3VzYWJsZUNvbnRleHQsXG4gIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCxcbiAgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0T3B0aW9ucyxcbiAgS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb24sXG59IGZyb20gXCIuL3NyYy9wbHVnaW5zL2ZvY3VzYWJsZS9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmV4cG9ydCB7IGNvbnRleHRGb3JGb2N1c2FibGVJdGVtLCB1c2VGb2N1c2FibGVJdGVtIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvZm9jdXNhYmxlL2ZvY3VzYWJsZS1pdGVtLWNvbnRleHRcIjtcbmV4cG9ydCB7IHVzZUNsb3NlUG9wb3ZlciwgdXNlUG9wb3ZlcklzT3BlbiwgY29udGV4dEZvckNsb3NpbmdQb3BvdmVyIH0gZnJvbSBcIi4vc3JjL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5leHBvcnQgeyB1c2VMb2NhbEhvdmVyYWJsZSB9IGZyb20gXCIuL3NyYy9wbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvbG9jYWwtaG92ZXJhYmxlXCI7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcyB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IHR5cGUgT25PdXRzaWRlQ2xpY2tQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG5cbiAgLyoqXG4gICAqIENhbGxlZCB3aGVuIGEgcG9pbnRlci1kb3duIGxhbmRzIG91dHNpZGUgdGhlIGVsZW1lbnQncyBSZWFjdCB0cmVlLiBUaGUgdHJlZSBpbmNsdWRlcyBjb250ZW50XG4gICAqIHRoZSBlbGVtZW50IHBvcnRhbHMgZWxzZXdoZXJlLCBzbyBwb3J0YWxlZCBjaGlsZHJlbiBjb3VudCBhcyBpbnNpZGUuIENhdmVhdDogYW4gb3V0c2lkZVxuICAgKiBwb2ludGVyLWRvd24gd2hvc2UgcHJvcGFnYXRpb24gdG8gdGhlIGRvY3VtZW50IGlzIHN0b3BwZWQgbmF0aXZlbHkgZ29lcyB1bmRldGVjdGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgJG9uT3V0c2lkZUNsaWNrPzogKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG59O1xuXG4vKipcbiAqIFJlYWN0LXRyZWUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb246IGEgY2FwdHVyZS1waGFzZSBoYW5kbGVyIG9uIHRoZSBlbGVtZW50IHJlY29yZHMgdGhlXG4gKiBwb2ludGVyLWRvd24gZXZlbnRzIG9mIGl0cyBvd24gUmVhY3QgdHJlZSAocG9ydGFscyBpbmNsdWRlZCwgc2luY2UgUmVhY3QgZXZlbnRzIHByb3BhZ2F0ZVxuICogdGhyb3VnaCB0aGVtKSwgYW5kIGEgZG9jdW1lbnQtbGV2ZWwgbGlzdGVuZXIgcmVwb3J0cyBldmVyeSBwb2ludGVyLWRvd24gaXQgZGlkIG5vdCByZWNvcmQuXG4gKiBSZXR1cm5zIHRoZSBwcm9wcyBtYXJraW5nIHRoZSBlbGVtZW50J3MgdHJlZTsgZ2l2ZSB0aGVtIHRvIGBjb250cmlidXRlUHJvcHNgIG9yIHNwcmVhZCB0aGVtXG4gKiBvbnRvIHRoZSBzdWJ0cmVlJ3Mgcm9vdC5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZU9uT3V0c2lkZUNsaWNrID0gKG9uT3V0c2lkZUNsaWNrOiAoZXZlbnQ6IFBvaW50ZXJFdmVudCkgPT4gdm9pZCkgPT4ge1xuICBjb25zdCBsYXN0SW5zaWRlUG9pbnRlckRvd25SZWYgPSB1c2VSZWY8RXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IGhhbmRsZXJSZWYgPSB1c2VSZWYob25PdXRzaWRlQ2xpY2spO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaGFuZGxlclJlZi5jdXJyZW50ID0gb25PdXRzaWRlQ2xpY2s7XG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlRG9jdW1lbnRQb2ludGVyRG93biA9IChldmVudDogUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQgIT09IGxhc3RJbnNpZGVQb2ludGVyRG93blJlZi5jdXJyZW50KSB7XG4gICAgICAgIGhhbmRsZXJSZWYuY3VycmVudChldmVudCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJwb2ludGVyZG93blwiLCBoYW5kbGVEb2N1bWVudFBvaW50ZXJEb3duKTtcblxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwicG9pbnRlcmRvd25cIiwgaGFuZGxlRG9jdW1lbnRQb2ludGVyRG93bik7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblBvaW50ZXJEb3duQ2FwdHVyZSA9IHVzZUNhbGxiYWNrKChldmVudDogUmVhY3QuUG9pbnRlckV2ZW50KSA9PiB7XG4gICAgbGFzdEluc2lkZVBvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSBldmVudC5uYXRpdmVFdmVudDtcbiAgfSwgW10pO1xuXG4gIHJldHVybiB7IG9uUG9pbnRlckRvd25DYXB0dXJlIH07XG59O1xuXG50eXBlIE9uT3V0c2lkZUNsaWNrV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBvbk91dHNpZGVDbGljazogKGV2ZW50OiBQb2ludGVyRXZlbnQpID0+IHZvaWQ7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgT25PdXRzaWRlQ2xpY2tXcmFwcGVyQ29tcG9uZW50ID0gKHsgb25PdXRzaWRlQ2xpY2ssIGNvbnRyaWJ1dGVQcm9wcywgY2hpbGRyZW4gfTogT25PdXRzaWRlQ2xpY2tXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29udHJpYnV0ZVByb3BzKHVzZU9uT3V0c2lkZUNsaWNrKG9uT3V0c2lkZUNsaWNrKSk7XG5cbiAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcbn07XG5cbmV4cG9ydCBjb25zdCBvbk91dHNpZGVDbGlja1BsdWdpbiA9IGdldFBsdWdpbjxPbk91dHNpZGVDbGlja1BsdWdpblByb3BzPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkb25PdXRzaWRlQ2xpY2sgfSA9IHByb3BzO1xuXG4gIGlmICgkb25PdXRzaWRlQ2xpY2sgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiB7ICRvbk91dHNpZGVDbGljazogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRvbk91dHNpZGVDbGljazogdW5kZWZpbmVkLFxuICAgICR3cmFwcGVyOiB7XG4gICAgICBDb21wb25lbnQ6IE9uT3V0c2lkZUNsaWNrV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7IG9uT3V0c2lkZUNsaWNrOiAkb25PdXRzaWRlQ2xpY2sgfSxcbiAgICB9LFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIsIGdldEluamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi9nZXQtZm9jdXNhYmxlLWNvbnRleHRcIjtcbmltcG9ydCB7IGZvY3VzYWJsZUh0bWxFbGVtZW50UmVmU2V0SW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWh0bWwtZWxlbWVudC1yZWYtc2V0LmluamVjdGFibGVcIjtcbmltcG9ydCB7IGFzc2VydERlZmluZWQgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuXG5leHBvcnQgdHlwZSBEb0ZvY3VzPFQ+ID0gKGl0ZW06IFQpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBEb0ZvY3VzRm9yID0gPFQ+KGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4pID0+IERvRm9jdXM8VD47XG5cbmV4cG9ydCBjb25zdCBkb0ZvY3VzRm9ySW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBEb0ZvY3VzRm9yIH0+KHtcbiAgaWQ6IFwiZG8tZm9jdXMtZm9yLWluamVjdGlvbi10b2tlblwiLFxuICBjYXJkaW5hbGl0eTogXCJvbmVcIixcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBkb0ZvY3VzRm9ySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiZG8tZm9jdXMtZm9yXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldFJlZlNldCA9IGRpLmluamVjdChmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICAoPFQ+KGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4pID0+XG4gICAgICAgIChmb2N1c2FibGVJdGVtOiBUKSA9PiB7XG4gICAgICAgICAgY29uc3QgW2ZpcnN0UmVuZGVyZWRGb2N1c2FibGVFbGVtZW50UmVmXSA9IGdldFJlZlNldChmb2N1c2FibGVDb250ZXh0LCBmb2N1c2FibGVJdGVtKTtcblxuICAgICAgICAgIGlmIChmaXJzdFJlbmRlcmVkRm9jdXNhYmxlRWxlbWVudFJlZikge1xuICAgICAgICAgICAgYXNzZXJ0RGVmaW5lZChmaXJzdFJlbmRlcmVkRm9jdXNhYmxlRWxlbWVudFJlZi5jdXJyZW50KTtcblxuICAgICAgICAgICAgZmlyc3RSZW5kZXJlZEZvY3VzYWJsZUVsZW1lbnRSZWYuY3VycmVudC5mb2N1cygpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSkgYXMgRG9Gb2N1c0ZvcjtcbiAgfSxcblxuICBpbmplY3Rpb25Ub2tlbjogZG9Gb2N1c0ZvckluamVjdGlvblRva2VuLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbnR5cGUgRm9jdXNhYmxlSXRlbSA9IGFueTtcblxuLy8gVHdvIGluc3RhbnRpYXRpb24gcGFyYW1ldGVycyByYXRoZXIgdGhhbiBvbmUgY29tcG9zaXRlIGtleTogdjIga2V5cyBhXG4vLyBzaW5nbGV0b24gYnkgYWxsIG9mIHRoZW0sIHNvIHRoZSBjb250ZXh0IGFuZCB0aGUgaXRlbSBjb21wb3NlIGJ5IGlkZW50aXR5IG9uXG4vLyB0aGVpciBvd24uXG5leHBvcnQgY29uc3QgZm9jdXNhYmxlSHRtbEVsZW1lbnRSZWZTZXRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJodG1sLWVsZW1lbnRzLWJ5LWZvY3VzYWJsZS1tYXBcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKF9jb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PEZvY3VzYWJsZUl0ZW0+LCBfaXRlbTogRm9jdXNhYmxlSXRlbSkgPT5cbiAgICBuZXcgU2V0PE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ+PigpLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIsIGdldEluamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IElDb21wdXRlZFZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGZvY3VzYWJsZUl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9fc2hhcmVkL2ZvY3VzYWJsZS1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBJdGVtQmVpbmdGb2N1c2VkID0gPFQ+KGZvY3VzYWJsZUNvbnRleHQ6IEFueUZvY3VzYWJsZUNvbnRleHQ8VD4pID0+IElDb21wdXRlZFZhbHVlPFQgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nRm9jdXNlZEluamVjdGlvblRva2VuID0gZ2V0SW5qZWN0aW9uVG9rZW4yPHsgc2luZ2xlRmFjdG9yeTogKCkgPT4gSXRlbUJlaW5nRm9jdXNlZCB9Pih7XG4gIGlkOiBcIml0ZW0tYmVpbmctZm9jdXNlZFwiLFxuICBjYXJkaW5hbGl0eTogXCJvbmVcIixcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBwcml2YXRlSXRlbUJlaW5nRm9jdXNlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcInByaXZhdGUtaXRlbS1iZWluZy1mb2N1c2VkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldEZvY3VzYWJsZUl0ZW1TdGF0ZSA9IGRpLmluamVjdChmb2N1c2FibGVJdGVtU3RhdGVJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoY29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxhbnk+KSA9PiBjb21wdXRlZCgoKSA9PiBnZXRGb2N1c2FibGVJdGVtU3RhdGUoY29udGV4dCkuZ2V0KCkpO1xuICB9LFxufSk7XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdGb2N1c2VkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1mb2N1c2VkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldFByaXZhdGVJdGVtQmVpbmdGb2N1c2VkID0gZGkuaW5qZWN0KHByaXZhdGVJdGVtQmVpbmdGb2N1c2VkSW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKCkgPT5cbiAgICAgICg8VD4oY29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPikgPT5cbiAgICAgICAgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0ZvY3VzZWQoY29udGV4dCkgYXMgSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD4pIGFzIEl0ZW1CZWluZ0ZvY3VzZWQ7XG4gIH0sXG5cbiAgaW5qZWN0aW9uVG9rZW46IGl0ZW1CZWluZ0ZvY3VzZWRJbmplY3Rpb25Ub2tlbixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgY29uc3QgZm9jdXNhYmxlSXRlbVN0YXRlSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwiZm9jdXNhYmxlLWl0ZW0tc3RhdGVcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKF9jb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PGFueT4pID0+IG9ic2VydmFibGUuYm94PHVua25vd24+KCksXG59KTtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGVuYWJsZWRTdHlsZXMgZnJvbSBcIi4vZW5hYmxlZC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBFbmFibGVkUGx1Z2luUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBUaGlzIGZpZWxkIGhhcyBoaWdoZXIgcHJpb3JpdHkgdGhhbiAkZGlzYWJsZWRcbiAgICovXG4gICRlbmFibGVkPzogYm9vbGVhbjtcbiAgJGRpc2FibGVkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEBkZXByZWNhdGVkIFRoaXMgZmllbGQgaXMgb3ZlcnJpZGRlbiB2aWEgJGRpc2FibGVkIGFuZCAkZW5hYmxlZFxuICAgKi9cbiAgZGlzYWJsZWQ/OiB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgZW5hYmxlZFBsdWdpbiA9IGdldFBsdWdpbjxFbmFibGVkUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGRpc2FibGVkID0gaXNEaXNhYmxlZChwcm9wcyk7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZGlzYWJsZWQgPyBlbmFibGVkU3R5bGVzLmRpc2FibGVkIDogdW5kZWZpbmVkXSxcbiAgICBkaXNhYmxlZCxcbiAgICAkZW5hYmxlZDogdW5kZWZpbmVkLFxuICAgICRkaXNhYmxlZDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmV4cG9ydCBjb25zdCBpc0Rpc2FibGVkID0gKHByb3BzOiBFbmFibGVkUGx1Z2luUHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZW5hYmxlZCwgJGRpc2FibGVkIH0gPSBwcm9wcztcblxuICByZXR1cm4gdHlwZW9mICRlbmFibGVkID09PSBcImJvb2xlYW5cIiA/ICEkZW5hYmxlZCA6ICgkZGlzYWJsZWQgPz8gZmFsc2UpO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9lbmFibGVkL2VuYWJsZWQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJkaXNhYmxlZFwiOiBcImVuYWJsZWQtbW9kdWxlX19kaXNhYmxlZF9fX0xMM3N3XCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VJZCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IHR5cGUgQ29udGV4dE1hcFZhbHVlLCBob3Zlckl0ZW1TdGF0ZUZvckluamVjdGFibGUgfSBmcm9tIFwiLi9ob3ZlcmVkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgYWN0aW9uLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGlzRGVmaW5lZCwgbm9vcCwgdHlwZSBTaW5nbGVPck1hbnkgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgeyByZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHR5cGUgeyAkSG92ZXJhYmxlUHJvcHMgfSBmcm9tIFwiLi9ob3ZlcmFibGVcIjtcblxuZXhwb3J0IHR5cGUgJEhvdmVyYWJsZUJ5RHJhZ2dpbmdQcm9wczxUPiA9IFBpY2s8JEhvdmVyYWJsZVByb3BzPFQ+LCBcImNvbnRleHRcIiB8IFwiaXRlbVwiPjtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlQnlEcmFnZ2luZ1BsdWdpblByb3BzPFQgPSBhbnk+ID0ge1xuICAkaG92ZXJhYmxlQnlEcmFnZ2luZz86IFNpbmdsZU9yTWFueTwkSG92ZXJhYmxlQnlEcmFnZ2luZ1Byb3BzPFQ+Pjtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBob3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW5Qcm9wcywgW1JldHVyblR5cGU8dHlwZW9mIHJlZlBsdWdpbjxUPj5dPigocHJvcHMpID0+IHtcbiAgICBjb25zdCB7ICRob3ZlcmFibGVCeURyYWdnaW5nLCAkcmVmIH0gPSBwcm9wcztcblxuICAgIGlmICgkaG92ZXJhYmxlQnlEcmFnZ2luZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAkaG92ZXJhYmxlQnlEcmFnZ2luZzogdW5kZWZpbmVkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBpZCA9IHVzZUlkKCk7XG4gICAgY29uc3QgaG92ZXJJdGVtU3RhdGVGb3IgPSB1c2VTeW5jSW5qZWN0KGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSk7XG4gICAgY29uc3QgaG92ZXJhYmxlUHJvcHNSZWYgPSB1c2VSZWYob2JzZXJ2YWJsZS5tYXAodG9Db250ZXh0TWFwKCRob3ZlcmFibGVCeURyYWdnaW5nKSwgeyBkZWVwOiBmYWxzZSB9KSk7XG4gICAgY29uc3QgY29udHJvbGxlciA9IHVzZVJlZihuZXcgQWJvcnRDb250cm9sbGVyKCkpO1xuXG4gICAgdXNlRWZmZWN0KFxuICAgICAgYWN0aW9uKCgpID0+IHtcbiAgICAgICAgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5yZXBsYWNlKHRvQ29udGV4dE1hcCgkaG92ZXJhYmxlQnlEcmFnZ2luZykpO1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGNhbGxiYWNrUmVmID0gdXNlTWVtbyhcbiAgICAgICgpID0+XG4gICAgICAgIGFjdGlvbigoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKSA9PiB7XG4gICAgICAgICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICAgICAgICBjb250cm9sbGVyLmN1cnJlbnQuYWJvcnQoKTtcbiAgICAgICAgICAgIGNvbnRyb2xsZXIuY3VycmVudCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBcImRyYWdlbnRlclwiLFxuICAgICAgICAgICAgYWN0aW9uKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQsIHJlbGF0ZWRUYXJnZXQgfSA9IGV2ZW50O1xuICAgICAgICAgICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgICAgICAgIGlmICghKGN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgICAgICAgICAgICBob3Zlckl0ZW1TdGF0ZUZvcihjb250ZXh0KS5zZXQoaWQsIHtcbiAgICAgICAgICAgICAgICAgICAgaG92ZXJlZEF0OiBvYnNlcnZhYmxlLmJveChob3ZlcmVkQXQsIHsgZGVlcDogZmFsc2UgfSksXG4gICAgICAgICAgICAgICAgICAgIGdldFByb3BzOiAoKSA9PiBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LmdldChjb250ZXh0KSxcbiAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHNpZ25hbDogY29udHJvbGxlci5jdXJyZW50LnNpZ25hbCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcbiAgICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoXG4gICAgICAgICAgICBcImRyYWdsZWF2ZVwiLFxuICAgICAgICAgICAgYWN0aW9uKChldmVudCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCB7IGN1cnJlbnRUYXJnZXQsIHJlbGF0ZWRUYXJnZXQgfSA9IGV2ZW50O1xuICAgICAgICAgICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgICAgICAgIGlmICghKGN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNvbnRhaW5zKHJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgICAgICAgICAgICBjb25zdCBob3ZlcmVkU3RhdGUgPSBob3Zlckl0ZW1TdGF0ZUZvcihjb250ZXh0KTtcblxuICAgICAgICAgICAgICAgICAgaG92ZXJlZFN0YXRlLmRlbGV0ZShpZCk7XG4gICAgICAgICAgICAgICAgICBob3ZlcmVkU3RhdGUuZm9yRWFjaCgoc3RhdGUpID0+IHN0YXRlLmhvdmVyZWRBdC5zZXQoaG92ZXJlZEF0KSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLmN1cnJlbnQuc2lnbmFsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuICAgICAgICB9KSxcbiAgICAgIFtob3Zlckl0ZW1TdGF0ZUZvciwgaWRdLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJHJlZjogWyRyZWYsIGNhbGxiYWNrUmVmXSxcbiAgICAgICRob3ZlcmFibGVCeURyYWdnaW5nOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IHRvQ29udGV4dE1hcCA9IChwcm9wczogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVCeURyYWdnaW5nUHJvcHM8dW5rbm93bj4+IHwgdW5kZWZpbmVkKSA9PiB7XG4gIGNvbnN0IGl0ZW1zID0gW3Byb3BzXS5mbGF0KCkuZmlsdGVyKGlzRGVmaW5lZCk7XG4gIGNvbnN0IHJlc3VsdHM6IFtvYmplY3QsIENvbnRleHRNYXBWYWx1ZV1bXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgeyBjb250ZXh0LCBpdGVtIH0gb2YgaXRlbXMpIHtcbiAgICByZXN1bHRzLnB1c2goW2NvbnRleHQsIHsgaXRlbSwgZGVsYXk6IDAsIG9uSG92ZXI6IG5vb3AsIG9uVW5ob3Zlcjogbm9vcCB9XSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0cztcbn07XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdHlwZSBJT2JzZXJ2YWJsZVZhbHVlLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcblxuZXhwb3J0IHR5cGUgQ29udGV4dE1hcFZhbHVlID0ge1xuICByZWFkb25seSBpdGVtOiB1bmtub3duO1xuICByZWFkb25seSBkZWxheTogbnVtYmVyO1xuICBvbkhvdmVyOiBWb2lkRnVuY3Rpb247XG4gIG9uVW5ob3ZlcjogVm9pZEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgSG92ZXJlZEl0ZW1TdGF0ZSA9IHtcbiAgcmVhZG9ubHkgaG92ZXJlZEF0OiBJT2JzZXJ2YWJsZVZhbHVlPG51bWJlcj47XG4gIHJlYWRvbmx5IGdldFByb3BzOiAoKSA9PiBDb250ZXh0TWFwVmFsdWUgfCB1bmRlZmluZWQ7XG59O1xuXG5leHBvcnQgY29uc3QgaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImhvdmVyZWQtaXRlbS1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IG9iamVjdCkgPT4gb2JzZXJ2YWJsZS5tYXA8c3RyaW5nLCBIb3ZlcmVkSXRlbVN0YXRlPihbXSwgeyBkZWVwOiBmYWxzZSB9KSxcbn0pO1xuXG5leHBvcnQgY29uc3QgaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJob3Zlci1pdGVtLXN0YXRlLWZvclwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXRIb3ZlcmVkSXRlbVN0YXRlID0gZGkuaW5qZWN0KGhvdmVyZWRJdGVtU3RhdGVJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoKSA9PiAoY29udGV4dDogb2JqZWN0KSA9PiBnZXRIb3ZlcmVkSXRlbVN0YXRlKGNvbnRleHQpO1xuICB9LFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcyB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZUlkLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgdHlwZSBDb250ZXh0TWFwVmFsdWUsIGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSB9IGZyb20gXCIuL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBhY3Rpb24sIGF1dG9ydW4sIGNvbXBhcmVyLCBvYnNlcnZhYmxlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IG5vb3AgfSBmcm9tIFwibG9kYXNoL2ZwXCI7XG5pbXBvcnQgeyBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4gfSBmcm9tIFwiLi9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgaXNEZWZpbmVkLCB0eXBlIFNpbmdsZU9yTWFueSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbmV4cG9ydCB0eXBlIEhvdmVyYWJsZUNvbnRleHRPcHRpb25zID0ge1xuICAvKipcbiAgICogSW4gbWlsbGlzZWNvbmRzXG4gICAqL1xuICByZWFkb25seSBkZWxheT86IG51bWJlcjtcbiAgcmVhZG9ubHkgb25Ib3Zlcj86IFZvaWRGdW5jdGlvbjtcbiAgcmVhZG9ubHkgb25VbmhvdmVyPzogVm9pZEZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlQ29udGV4dDxIb3ZlcmVkSXRlbT4gPSB7XG4gIHJlYWRvbmx5IGhvdmVyYWJsZTogKGl0ZW06IEhvdmVyZWRJdGVtLCBvcHRpb25zPzogSG92ZXJhYmxlQ29udGV4dE9wdGlvbnMpID0+ICRIb3ZlcmFibGVQcm9wczxIb3ZlcmVkSXRlbT47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlICRIb3ZlcmFibGVQcm9wczxUSXRlbSA9IHVua25vd24+IHtcbiAgcmVhZG9ubHkgY29udGV4dDogb2JqZWN0O1xuICByZWFkb25seSBpdGVtOiBUSXRlbTtcbiAgcmVhZG9ubHkgb3B0aW9uczogUmVxdWlyZWQ8SG92ZXJhYmxlQ29udGV4dE9wdGlvbnM+O1xufVxuXG5leHBvcnQgdHlwZSBIb3ZlcmFibGVQbHVnaW5Qcm9wczxURWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50PiA9IHtcbiAgcmVhZG9ubHkgJGhvdmVyYWJsZT86IFNpbmdsZU9yTWFueTwkSG92ZXJhYmxlUHJvcHM+O1xuICBvbk1vdXNlRW50ZXI/OiBSZWFjdC5IVE1MUHJvcHM8VEVsZW1lbnQ+W1wib25Nb3VzZUVudGVyXCJdO1xuICBvbk1vdXNlTGVhdmU/OiBSZWFjdC5IVE1MUHJvcHM8VEVsZW1lbnQ+W1wib25Nb3VzZUxlYXZlXCJdO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEhvdmVyYWJsZUNvbnRleHQgPSA8SG92ZXJlZEl0ZW0sPigpOiBIb3ZlcmFibGVDb250ZXh0PEhvdmVyZWRJdGVtPiA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgaG92ZXJhYmxlOiAoaXRlbTogSG92ZXJlZEl0ZW0sIHsgZGVsYXkgPSAwLCBvbkhvdmVyID0gbm9vcCwgb25VbmhvdmVyID0gbm9vcCB9OiBIb3ZlcmFibGVDb250ZXh0T3B0aW9ucyA9IHt9KSA9PiAoe1xuICAgICAgY29udGV4dCxcbiAgICAgIGl0ZW0sXG4gICAgICBvcHRpb25zOiB7XG4gICAgICAgIGRlbGF5LFxuICAgICAgICBvbkhvdmVyLFxuICAgICAgICBvblVuaG92ZXIsXG4gICAgICB9LFxuICAgIH0pLFxuICB9O1xuXG4gIHJldHVybiBjb250ZXh0O1xufTtcblxuZXhwb3J0IHR5cGUgSG92ZXJhYmxlUGx1Z2luPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4gPSBSZXR1cm5UeXBlPHR5cGVvZiBob3ZlcmFibGVQbHVnaW48VD4+O1xuXG50eXBlIEhvdmVyYWJsZVdyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgaG92ZXJhYmxlOiBTaW5nbGVPck1hbnk8JEhvdmVyYWJsZVByb3BzPjtcbiAgcmVhZG9ubHkgb25Nb3VzZUVudGVyPzogUmVhY3QuTW91c2VFdmVudEhhbmRsZXI8SFRNTEVsZW1lbnQ+O1xuICByZWFkb25seSBvbk1vdXNlTGVhdmU/OiBSZWFjdC5Nb3VzZUV2ZW50SGFuZGxlcjxIVE1MRWxlbWVudD47XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgSG92ZXJhYmxlV3JhcHBlckNvbXBvbmVudCA9ICh7XG4gIGhvdmVyYWJsZSxcbiAgb25Nb3VzZUVudGVyLFxuICBvbk1vdXNlTGVhdmUsXG4gIGNvbnRyaWJ1dGVQcm9wcyxcbiAgY2hpbGRyZW4sXG59OiBIb3ZlcmFibGVXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgaG92ZXJJdGVtU3RhdGVGb3IgPSB1c2VTeW5jSW5qZWN0KGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSk7XG4gIGNvbnN0IGl0ZW1CZWluZ0hvdmVyZWQgPSB1c2VTeW5jSW5qZWN0KGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbik7XG4gIGNvbnN0IGlkID0gdXNlSWQoKTtcblxuICBjb25zdCBob3ZlcmFibGVQcm9wc1JlZiA9IHVzZVJlZihcbiAgICBvYnNlcnZhYmxlLm1hcCh0b0NvbnRleHRNYXAoaG92ZXJhYmxlKSwgeyBkZWVwOiBmYWxzZSwgZXF1YWxzOiBjb21wYXJlci5zdHJ1Y3R1cmFsIH0pLFxuICApO1xuXG4gIHVzZUVmZmVjdChcbiAgICBhY3Rpb24oKCkgPT4ge1xuICAgICAgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5yZXBsYWNlKHRvQ29udGV4dE1hcChob3ZlcmFibGUpKTtcbiAgICB9KSxcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGl0ZW1CeUNvbnRleHQgPSBuZXcgTWFwPG9iamVjdCwgdW5rbm93bj4oKTtcblxuICAgIHJldHVybiBhdXRvcnVuKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgW2NvbnRleHQsIHsgaXRlbSwgb25Ib3Zlciwgb25VbmhvdmVyIH1dIG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgaG92ZXJlZEl0ZW0gPSBpdGVtQmVpbmdIb3ZlcmVkKGNvbnRleHQgYXMgSG92ZXJhYmxlQ29udGV4dDx1bmtub3duPikuZ2V0KCk7XG4gICAgICAgIGNvbnN0IHByZXZpb3VzSXRlbSA9IGl0ZW1CeUNvbnRleHQuZ2V0KGNvbnRleHQpO1xuXG4gICAgICAgIGlmIChob3ZlcmVkSXRlbSA9PT0gaXRlbSkge1xuICAgICAgICAgIG9uSG92ZXIoKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcmV2aW91c0l0ZW0gPT09IGl0ZW0pIHtcbiAgICAgICAgICBvblVuaG92ZXIoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGl0ZW1CeUNvbnRleHQuc2V0KGNvbnRleHQsIGhvdmVyZWRJdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSwgW2l0ZW1CZWluZ0hvdmVyZWRdKTtcblxuICB1c2VFZmZlY3QoXG4gICAgKCkgPT5cbiAgICAgIGFjdGlvbigoKSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgY29udGV4dCBvZiBob3ZlcmFibGVQcm9wc1JlZi5jdXJyZW50LmtleXMoKSkge1xuICAgICAgICAgIGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpLmRlbGV0ZShpZCk7XG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIFtob3Zlckl0ZW1TdGF0ZUZvciwgaWRdLFxuICApO1xuXG4gIGNvbnN0IGhhbmRsZU1vdXNlRW50ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhY3Rpb24oKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Nb3VzZUVudGVyPy4oZXZlbnQpO1xuXG4gICAgICBjb25zdCBob3ZlcmVkQXQgPSBEYXRlLm5vdygpO1xuXG4gICAgICBmb3IgKGNvbnN0IGNvbnRleHQgb2YgaG92ZXJhYmxlUHJvcHNSZWYuY3VycmVudC5rZXlzKCkpIHtcbiAgICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoY29udGV4dCkuc2V0KGlkLCB7XG4gICAgICAgICAgaG92ZXJlZEF0OiBvYnNlcnZhYmxlLmJveChob3ZlcmVkQXQsIHsgZGVlcDogZmFsc2UgfSksXG4gICAgICAgICAgZ2V0UHJvcHM6ICgpID0+IGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQuZ2V0KGNvbnRleHQpLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KSxcbiAgICBbXSxcbiAgKTtcblxuICBjb25zdCBoYW5kbGVNb3VzZUxlYXZlID0gdXNlQ2FsbGJhY2soXG4gICAgYWN0aW9uKChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uTW91c2VMZWF2ZT8uKGV2ZW50KTtcblxuICAgICAgY29uc3QgaG92ZXJlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgZm9yIChjb25zdCBjb250ZXh0IG9mIGhvdmVyYWJsZVByb3BzUmVmLmN1cnJlbnQua2V5cygpKSB7XG4gICAgICAgIGNvbnN0IGhvdmVyZWRTdGF0ZSA9IGhvdmVySXRlbVN0YXRlRm9yKGNvbnRleHQpO1xuXG4gICAgICAgIGhvdmVyZWRTdGF0ZS5kZWxldGUoaWQpO1xuICAgICAgICBob3ZlcmVkU3RhdGUuZm9yRWFjaCgoc3RhdGUpID0+IHN0YXRlLmhvdmVyZWRBdC5zZXQoaG92ZXJlZEF0KSk7XG4gICAgICB9XG4gICAgfSksXG4gICAgW10sXG4gICk7XG5cbiAgY29udHJpYnV0ZVByb3BzKHtcbiAgICBvbk1vdXNlRW50ZXI6IGhhbmRsZU1vdXNlRW50ZXIsXG4gICAgb25Nb3VzZUxlYXZlOiBoYW5kbGVNb3VzZUxlYXZlLFxuICB9KTtcblxuICByZXR1cm4gPD57Y2hpbGRyZW59PC8+O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGhvdmVyYWJsZVBsdWdpbjxURWxlbWVudCBleHRlbmRzIEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxIb3ZlcmFibGVQbHVnaW5Qcm9wczxURWxlbWVudD4+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGhvdmVyYWJsZSwgb25Nb3VzZUVudGVyLCBvbk1vdXNlTGVhdmUgfSA9IHByb3BzO1xuXG4gICAgaWYgKCRob3ZlcmFibGUgPT09IHVuZGVmaW5lZCB8fCAoQXJyYXkuaXNBcnJheSgkaG92ZXJhYmxlKSAmJiAkaG92ZXJhYmxlLmxlbmd0aCA9PT0gMCkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgICRob3ZlcmFibGU6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRob3ZlcmFibGU6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogSG92ZXJhYmxlV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBob3ZlcmFibGU6ICRob3ZlcmFibGUsXG4gICAgICAgICAgb25Nb3VzZUVudGVyLFxuICAgICAgICAgIG9uTW91c2VMZWF2ZSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IHRvQ29udGV4dE1hcCA9IChwcm9wczogU2luZ2xlT3JNYW55PCRIb3ZlcmFibGVQcm9wczx1bmtub3duPj4gfCB1bmRlZmluZWQpID0+IHtcbiAgY29uc3QgaXRlbXMgPSBbcHJvcHNdLmZsYXQoKS5maWx0ZXIoaXNEZWZpbmVkKTtcbiAgY29uc3QgcmVzdWx0czogW29iamVjdCwgQ29udGV4dE1hcFZhbHVlXVtdID0gW107XG5cbiAgZm9yIChjb25zdCB7IGNvbnRleHQsIGl0ZW0sIG9wdGlvbnMgfSBvZiBpdGVtcykge1xuICAgIHJlc3VsdHMucHVzaChbY29udGV4dCwgeyBpdGVtLCAuLi5vcHRpb25zIH1dKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHRzO1xufTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiwgZ2V0SW5qZWN0aW9uVG9rZW4yIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgSUNvbXB1dGVkVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgY29tcHV0ZWQgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9ob3ZlcmVkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4vaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBjb21wdXRlZE5vd0luamVjdGFibGUgfSBmcm9tIFwiLi9jb21wdXRlZC1ub3cuaW5qZWN0YWJsZVwiO1xuXG5leHBvcnQgdHlwZSBJdGVtQmVpbmdIb3ZlcmVkID0gPFQ+KGhvdmVyYWJsZUNvbnRleHQ6IEhvdmVyYWJsZUNvbnRleHQ8VD4pID0+IElDb21wdXRlZFZhbHVlPFQgfCB1bmRlZmluZWQ+O1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuID0gZ2V0SW5qZWN0aW9uVG9rZW4yPHsgc2luZ2xlRmFjdG9yeTogKCkgPT4gSXRlbUJlaW5nSG92ZXJlZCB9Pih7XG4gIGlkOiBcIml0ZW0tYmVpbmctaG92ZXJlZFwiLFxuICBjYXJkaW5hbGl0eTogXCJvbmVcIixcbn0pKCk7XG5cbmV4cG9ydCBjb25zdCBwcml2YXRlSXRlbUJlaW5nSG92ZXJlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcInByaXZhdGUtaXRlbS1iZWluZy1ob3ZlcmVkXCIsXG5cbiAgaW5zdGFudGlhdGU6IChkaSkgPT4ge1xuICAgIGNvbnN0IGdldEhvdmVyZWRJdGVtU3RhdGUgPSBkaS5pbmplY3QoaG92ZXJlZEl0ZW1TdGF0ZUluamVjdGFibGUpO1xuICAgIGNvbnN0IGdldENvbXB1dGVkTm93ID0gZGkuaW5qZWN0KGNvbXB1dGVkTm93SW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKGNvbnRleHQ6IG9iamVjdCkgPT4ge1xuICAgICAgY29uc3QgaG92ZXJlZEl0ZW1TdGF0ZSA9IGdldEhvdmVyZWRJdGVtU3RhdGUoY29udGV4dCk7XG4gICAgICBjb25zdCBjb21wdXRlZE5vdyA9IGdldENvbXB1dGVkTm93KDEpO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4ge1xuICAgICAgICBjb25zdCB0b3BJdGVtID0gWy4uLmhvdmVyZWRJdGVtU3RhdGUudmFsdWVzKCldLmF0KC0xKTtcbiAgICAgICAgY29uc3QgcHJvcHMgPSB0b3BJdGVtPy5nZXRQcm9wcygpO1xuXG4gICAgICAgIGlmICghdG9wSXRlbSB8fCAhcHJvcHMpIHtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2hlbkNvbnNpZGVyZWRIb3ZlcmVkID0gdG9wSXRlbS5ob3ZlcmVkQXQuZ2V0KCkgKyBwcm9wcy5kZWxheTtcbiAgICAgICAgY29uc3Qgbm93ID0gY29tcHV0ZWROb3cuZ2V0KCk7XG5cbiAgICAgICAgcmV0dXJuIG5vdyA+PSB3aGVuQ29uc2lkZXJlZEhvdmVyZWQgPyBwcm9wcy5pdGVtIDogdW5kZWZpbmVkO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfSxcbn0pO1xuXG5leHBvcnQgY29uc3QgaXRlbUJlaW5nSG92ZXJlZEluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcIml0ZW0tYmVpbmctaG92ZXJlZFwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBnZXRQcml2YXRlSXRlbUJlaW5nSG92ZXJlZCA9IGRpLmluamVjdChwcml2YXRlSXRlbUJlaW5nSG92ZXJlZEluamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+XG4gICAgICAoPFQ+KGNvbnRleHQ6IEhvdmVyYWJsZUNvbnRleHQ8VD4pID0+XG4gICAgICAgIGdldFByaXZhdGVJdGVtQmVpbmdIb3ZlcmVkKGNvbnRleHQpIGFzIElDb21wdXRlZFZhbHVlPFQ+KSBhcyBJdGVtQmVpbmdIb3ZlcmVkO1xuICB9LFxuXG4gIGluamVjdGlvblRva2VuOiBpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBjb21wdXRlZCwgb2JzZXJ2YWJsZSwgb25CZWNvbWVPYnNlcnZlZCwgb25CZWNvbWVVbm9ic2VydmVkLCBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5cbi8qKlxuICogQSBjbG9jayB0aGF0IGFkdmFuY2VzIG9ubHkgd2hpbGUgc29tZXRoaW5nIG9ic2VydmVzIGl0LCBzbyBhIGhvdmVyIGRlbGF5XG4gKiBrZWVwcyBiZWluZyByZS1ldmFsdWF0ZWQgdW50aWwgaXQgaGFzIGVsYXBzZWQgYW5kIGNvc3RzIG5vdGhpbmcgb25jZSBub2JvZHlcbiAqIGlzIHdhdGNoaW5nLlxuICpcbiAqIExvY2FsIHJhdGhlciB0aGFuIHRha2VuIGZyb20gdGhlIHNoYXJlZCBpbnRlcnZhbCBmZWF0dXJlOiBhIGRlc2lnbiBzeXN0ZW1cbiAqIGNhbm5vdCBkZXBlbmQgb24gYSBmZWF0dXJlIHBhY2thZ2UsIGFuZCB0aGUgaG92ZXJhYmxlIHBsdWdpbiBpcyB0aGUgb25seVxuICogdGhpbmcgaGVyZSB0aGF0IG5lZWRzIGEgY2xvY2suIFRoZSBpbnRlcnZhbCBpcyB0aGUgaW5zdGFudGlhdGlvbiBwYXJhbWV0ZXIsXG4gKiBzbyB2MiBrZXlzIG9uZSBjbG9jayBwZXIgaW50ZXJ2YWwuXG4gKi9cbmV4cG9ydCBjb25zdCBjb21wdXRlZE5vd0luamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImNvbXB1dGVkLW5vd1wiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoaW50ZXJ2YWxNczogbnVtYmVyKSA9PiB7XG4gICAgY29uc3Qgbm93ID0gb2JzZXJ2YWJsZS5ib3goRGF0ZS5ub3coKSk7XG5cbiAgICBsZXQgaGFuZGxlOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD4gfCB1bmRlZmluZWQ7XG5cbiAgICBvbkJlY29tZU9ic2VydmVkKG5vdywgKCkgPT4ge1xuICAgICAgcnVuSW5BY3Rpb24oKCkgPT4gbm93LnNldChEYXRlLm5vdygpKSk7XG5cbiAgICAgIGhhbmRsZSA9IHNldEludGVydmFsKCgpID0+IHJ1bkluQWN0aW9uKCgpID0+IG5vdy5zZXQoRGF0ZS5ub3coKSkpLCBpbnRlcnZhbE1zKTtcbiAgICB9KTtcblxuICAgIG9uQmVjb21lVW5vYnNlcnZlZChub3csICgpID0+IHtcbiAgICAgIGlmIChoYW5kbGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBjbGVhckludGVydmFsKGhhbmRsZSk7XG4gICAgICB9XG5cbiAgICAgIGhhbmRsZSA9IHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIHJldHVybiBjb21wdXRlZCgoKSA9PiBub3cuZ2V0KCkpO1xuICB9LFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIsIGdldEluamVjdGlvblRva2VuMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IElDb21wdXRlZFZhbHVlIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGNvbXB1dGVkIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB0eXBlIHsgRHJhZ2dhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1kcmFnZ2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHsgZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUgfSBmcm9tIFwiLi9fc2hhcmVkL2RyYWdnZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCB0eXBlIEl0ZW1CZWluZ0RyYWdnZWQgPSA8VD4oZHJhZ2dhYmxlQ29udGV4dDogRHJhZ2dhYmxlQ29udGV4dDxUPikgPT4gSUNvbXB1dGVkVmFsdWU8VCB8IHVuZGVmaW5lZD47XG5cbmV4cG9ydCBjb25zdCBpdGVtQmVpbmdEcmFnZ2VkSW5qZWN0aW9uVG9rZW4gPSBnZXRJbmplY3Rpb25Ub2tlbjI8eyBzaW5nbGVGYWN0b3J5OiAoKSA9PiBJdGVtQmVpbmdEcmFnZ2VkIH0+KHtcbiAgaWQ6IFwiaXRlbS1iZWluZy1kcmFnZ2VkXCIsXG4gIGNhcmRpbmFsaXR5OiBcIm9uZVwiLFxufSkoKTtcblxuZXhwb3J0IGNvbnN0IHByaXZhdGVJdGVtQmVpbmdEcmFnZ2VkSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwicHJpdmF0ZS1pdGVtLWJlaW5nLWRyYWdnZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0RHJhZ2dlZEl0ZW1TdGF0ZSA9IGRpLmluamVjdChkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSk7XG5cbiAgICByZXR1cm4gKGNvbnRleHQ6IERyYWdnYWJsZUNvbnRleHQ8YW55PikgPT4gY29tcHV0ZWQoKCkgPT4gZ2V0RHJhZ2dlZEl0ZW1TdGF0ZShjb250ZXh0KS5nZXQoKSk7XG4gIH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IGl0ZW1CZWluZ0RyYWdnZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpdGVtLWJlaW5nLWRyYWdnZWRcIixcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgZ2V0UHJpdmF0ZUl0ZW1CZWluZ0RyYWdnZWQgPSBkaS5pbmplY3QocHJpdmF0ZUl0ZW1CZWluZ0RyYWdnZWRJbmplY3RhYmxlKTtcblxuICAgIHJldHVybiAoKSA9PlxuICAgICAgKDxUPihjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+KSA9PlxuICAgICAgICBnZXRQcml2YXRlSXRlbUJlaW5nRHJhZ2dlZChjb250ZXh0KSBhcyBJQ29tcHV0ZWRWYWx1ZTxUPikgYXMgSXRlbUJlaW5nRHJhZ2dlZDtcbiAgfSxcblxuICBpbmplY3Rpb25Ub2tlbjogaXRlbUJlaW5nRHJhZ2dlZEluamVjdGlvblRva2VuLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0SW5qZWN0YWJsZTIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgb2JzZXJ2YWJsZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IERyYWdnYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5cbi8vIFRoZSBjb250ZXh0IGlzIHRoZSBpbnN0YW50aWF0aW9uIHBhcmFtZXRlciwgc28gdjIga2V5cyBvbmUgc3RhdGUgYm94IHBlclxuLy8gY29udGV4dCBpZGVudGl0eSBcdTIwMTQgd2hhdCB0aGUga2V5ZWRTaW5nbGV0b24gdXNlZCB0byBzcGVsbCBvdXQuXG5leHBvcnQgY29uc3QgZHJhZ2dlZEl0ZW1TdGF0ZUluamVjdGFibGUgPSBnZXRJbmplY3RhYmxlMih7XG4gIGlkOiBcImRyYWdnZWQtaXRlbS1zdGF0ZVwiLFxuXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoX2NvbnRleHQ6IERyYWdnYWJsZUNvbnRleHQ8YW55PikgPT4gb2JzZXJ2YWJsZS5ib3godW5kZWZpbmVkLCB7IGRlZXA6IGZhbHNlIH0pLFxufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVQcm9wcywgdHlwZSBDb250cmlidXRlUmVmIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IEhvdmVyYWJsZVBsdWdpbiB9IGZyb20gXCIuLi9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBnZXRIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uL2hvdmVyYWJsZS9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi9ob3ZlcmFibGUvaXRlbS1iZWluZy1ob3ZlcmVkLmluamVjdGFibGVcIjtcbmltcG9ydCB7IGhvdmVySXRlbVN0YXRlRm9ySW5qZWN0YWJsZSB9IGZyb20gXCIuLi9ob3ZlcmFibGUvaG92ZXJlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZUlkLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB0b29sdGlwRGVsYXlJbmplY3RhYmxlIH0gZnJvbSBcIi4vdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGVcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vdG9vbHRpcC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBQbGFjZW1lbnQgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHsgYXV0b1VwZGF0ZSwgZmxpcCwgb2Zmc2V0LCBzaGlmdCwgdXNlRmxvYXRpbmcgfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSBcInJlYWN0LWRvbVwiO1xuaW1wb3J0IHR5cGUgeyBSZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuaW1wb3J0IHsgbm9vcCwgdHlwZSBNYXliZUFzeW5jVm9pZEZ1bmN0aW9uIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB7IE1pbmltYWxEaXYsIHR5cGUgTWluaW1hbERpdlByb3BzIH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzL21pbmltYWwtZGl2XCI7XG5pbXBvcnQgeyBhY3Rpb24sIGF1dG9ydW4sIG9ic2VydmFibGUgfSBmcm9tIFwibW9ieFwiO1xuXG50eXBlIFRvb2x0aXBDb250ZW50UHJvcHM8UHJvcHMgZXh0ZW5kcyBvYmplY3Q+ID1cbiAgfCB7XG4gICAgICAvKiogUGxhaW4tdGV4dCBjb250ZW50IG9mIHRoZSB0b29sdGlwLiBNdXR1YWxseSBleGNsdXNpdmUgd2l0aCBgQ29udGVudGAuICovXG4gICAgICByZWFkb25seSBjb250ZW50VGV4dDogc3RyaW5nO1xuICAgICAgcmVhZG9ubHkgQ29udGVudD86IHVuZGVmaW5lZDtcbiAgICAgIHJlYWRvbmx5IGNvbnRlbnRQcm9wcz86IHVuZGVmaW5lZDtcbiAgICB9XG4gIHwge1xuICAgICAgcmVhZG9ubHkgY29udGVudFRleHQ/OiB1bmRlZmluZWQ7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBjb21wb25lbnQgcmVuZGVyZWQgYXMgdGhlIGNvbnRlbnQgb2YgdGhlIHRvb2x0aXAuIE11c3QgaGF2ZSBhIHN0YWJsZVxuICAgICAgICogaWRlbnRpdHkgKG1vZHVsZSBzY29wZSkgXHUyMDE0IGRhdGEgZmxvd3MgaW4gdGhyb3VnaCBgY29udGVudFByb3BzYCwgbmV2ZXJcbiAgICAgICAqIHRocm91Z2ggY2xvc3VyZSBjYXB0dXJlLlxuICAgICAgICovXG4gICAgICByZWFkb25seSBDb250ZW50OiBSZWFjdC5Db21wb25lbnRUeXBlPFByb3BzPjtcbiAgICAgIC8qKiBUaGUgcHJvcHMgdGhlIHRvb2x0aXAgcGFzc2VzIHRvIGBDb250ZW50YCB3aGVuIHJlbmRlcmluZyBpdC4gKi9cbiAgICAgIHJlYWRvbmx5IGNvbnRlbnRQcm9wcz86IFByb3BzO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlICRUb29sdGlwUHJvcHM8UHJvcHMgZXh0ZW5kcyBvYmplY3QgPSBSZWNvcmQ8bmV2ZXIsIG5ldmVyPj4gPSB7XG4gIHJlYWRvbmx5IHBvc2l0aW9uPzogUGxhY2VtZW50O1xuICByZWFkb25seSBvblRvb2x0aXBTaG93bj86IE1heWJlQXN5bmNWb2lkRnVuY3Rpb247XG59ICYgVG9vbHRpcENvbnRlbnRQcm9wczxQcm9wcz47XG5cbi8qKlxuICogVHlwZS1jaGVja3MgdGhlIHBhaXJpbmcgb2YgYENvbnRlbnRgIGFuZCBgY29udGVudFByb3BzYCBvZiBhbiBvYmplY3QtZm9ybVxuICogYCR0b29sdGlwYDogYGNvbnRlbnRQcm9wc2AgaXMgcmVxdWlyZWQgdG8gYmUgdGhlIHByb3BzIG9mIGBDb250ZW50YCwgYW5kIGl0XG4gKiBpcyByZXF1aXJlZCB0byBiZSBwcmVzZW50IHdoZW4gYENvbnRlbnRgIGhhcyByZXF1aXJlZCBwcm9wcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBQcm9wcyh0b29sdGlwUHJvcHM6ICRUb29sdGlwUHJvcHMpOiAkVG9vbHRpcFByb3BzPGFueT47XG5leHBvcnQgZnVuY3Rpb24gZ2V0VG9vbHRpcFByb3BzPFByb3BzIGV4dGVuZHMgb2JqZWN0PihcbiAgdG9vbHRpcFByb3BzOiAkVG9vbHRpcFByb3BzPFByb3BzPiAmIHsgcmVhZG9ubHkgY29udGVudFByb3BzOiBQcm9wcyB9LFxuKTogJFRvb2x0aXBQcm9wczxhbnk+O1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRvb2x0aXBQcm9wcyh0b29sdGlwUHJvcHM6ICRUb29sdGlwUHJvcHM8YW55Pik6ICRUb29sdGlwUHJvcHM8YW55PiB7XG4gIHJldHVybiB0b29sdGlwUHJvcHM7XG59XG5cbmV4cG9ydCB0eXBlIFRvb2x0aXBQbHVnaW5Qcm9wcyA9IHtcbiAgLyoqIE51bGxpc2ggbWVhbnMgbm8gdG9vbHRpcCwgc28gY29uZGl0aW9uYWwgc291cmNlcyAoYHN0cmluZyB8IG51bGxgKSBwYXNzIHRocm91Z2ggYXMtaXMuICovXG4gICR0b29sdGlwPzogc3RyaW5nIHwgJFRvb2x0aXBQcm9wczxhbnk+IHwgbnVsbDtcbn07XG5cbi8qKlxuICogQSB0b29sdGlwIG9mIG5vdGhpbmc6IHRoZSBlbGVtZW50IHRha2VzIHRoZSBob3Zlciwgc28gbm8gZW5jbG9zaW5nIGVsZW1lbnQgc2hvd3MgaXRzIHRvb2x0aXBcbiAqIHdoaWxlIHRoZSBwb2ludGVyIGlzIG92ZXIgdGhpcyBvbmUsIGFuZCBzaG93cyBub3RoaW5nIG9mIGl0cyBvd24uIE51bGxpc2ggYCR0b29sdGlwYCBsZWF2ZXMgdGhlXG4gKiBlbmNsb3NpbmcgdG9vbHRpcCBhbG9uZSBpbnN0ZWFkIFx1MjAxNCB1c2UgdGhpcyB3aGVyZSBhbiBlbGVtZW50IG11c3Qgbm90IGJlIGRlc2NyaWJlZCBieSB3aGF0ZXZlclxuICogZW5jbG9zZXMgaXQsIGEgcGFuZWwgb3BlbmVkIGZyb20gYSByb3cgd2l0aCBhIHRvb2x0aXAgYmVpbmcgdGhlIGNhc2UgdGhhdCBuZWVkcyBpdDogYSB0b29sdGlwXG4gKiBnb2VzIGludG8gdGhlIHRvcCBsYXllciwgc28gaXQgd291bGQgcGFpbnQgb3ZlciB3aGF0IHRoZSBwYW5lbCBpcyB0aGVyZSBmb3IuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogPExpICR0b29sdGlwPXtzdXBwcmVzc1Rvb2x0aXB9PlxuICogICA8U2V0dGluZ3MgLz5cbiAqIDwvTGk+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IHN1cHByZXNzVG9vbHRpcDogJFRvb2x0aXBQcm9wcyA9IHsgY29udGVudFRleHQ6IFwiXCIgfTtcblxuY29uc3QgaG92ZXJhYmxlVG9vbHRpcENvbnRleHQgPSBnZXRIb3ZlcmFibGVDb250ZXh0PEhUTUxFbGVtZW50IHwgbnVsbD4oKTtcblxuZXhwb3J0IGNvbnN0IFN0eWxlZFRvb2x0aXBDb250YWluZXIgPSAocHJvcHM6IE1pbmltYWxEaXZQcm9wcykgPT4ge1xuICBjb25zdCB7ICRjbGFzc05hbWUsIC4uLnJlc3QgfSA9IHByb3BzO1xuXG4gIHJldHVybiAoXG4gICAgPE1pbmltYWxEaXZcbiAgICAgICRwYWRkaW5nXG4gICAgICAkYmFja2dyb3VuZENvbG9yPVwiYmFja2dyb3VuZFNlY29uZGFyeVwiXG4gICAgICAkYm9yZGVyPXt7IHJhZGl1czogdHJ1ZSB9fVxuICAgICAgJGZvbnQ9e3sgc2l6ZTogXCJzXCIgfX1cbiAgICAgICRib3hTaGFkb3dcbiAgICAgICRub1BvaW50ZXJFdmVudHNcbiAgICAgICRhYnNvbHV0ZVxuICAgICAgJGNsYXNzTmFtZT17W3N0eWxlcy50b29sdGlwLCAkY2xhc3NOYW1lXX1cbiAgICAgIGRhdGEtdG9vbHRpcC1jb250YWluZXItdGVzdFxuICAgICAgey4uLnJlc3R9XG4gICAgLz5cbiAgKTtcbn07XG5cbnR5cGUgRmxvYXRpbmdTdHlsZWRUb29sdGlwQ29udGFpbmVyUHJvcHMgPSB7XG4gIGNvbnRlbnQ6IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcG9zaXRpb246IFBsYWNlbWVudDtcbiAgcmVmZXJlbmNlOiBIVE1MRWxlbWVudCB8IG51bGw7XG4gIG9uVG9vbHRpcFNob3duOiBWb2lkRnVuY3Rpb247XG59O1xuXG50eXBlIFBvcG92ZXJDYXBhYmxlID0gSFRNTEVsZW1lbnQgJiB7IHNob3dQb3BvdmVyOiBWb2lkRnVuY3Rpb247IGhpZGVQb3BvdmVyOiBWb2lkRnVuY3Rpb24gfTtcblxuY29uc3QgaXNQb3BvdmVyQ2FwYWJsZSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgUG9wb3ZlckNhcGFibGUgPT5cbiAgdHlwZW9mIChlbGVtZW50IGFzIFBhcnRpYWw8UG9wb3ZlckNhcGFibGU+KS5zaG93UG9wb3ZlciA9PT0gXCJmdW5jdGlvblwiO1xuXG5jb25zdCBGbG9hdGluZ1N0eWxlZFRvb2x0aXBDb250YWluZXIgPSAocHJvcHM6IEZsb2F0aW5nU3R5bGVkVG9vbHRpcENvbnRhaW5lclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgY29udGVudCwgcG9zaXRpb24sIHJlZmVyZW5jZSwgb25Ub29sdGlwU2hvd24gfSA9IHByb3BzO1xuICBjb25zdCBbZmxvYXRpbmcsIHNldEZsb2F0aW5nXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICBwbGFjZW1lbnQ6IHBvc2l0aW9uLFxuICAgIG1pZGRsZXdhcmU6IFtmbGlwKCksIG9mZnNldCg4KSwgc2hpZnQoKV0sXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgcmVmZXJlbmNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHdlIGRvbid0IHdhbnQgdG8gY2FsbCBvblRvb2x0aXBTaG93biBldmVyeSB0aW1lIGl0IHVwZGF0ZXMgd2hpbGUgdGhlIHRvb2x0aXAgaXMgYmVpbmcgc2hvd1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHZvaWQgb25Ub29sdGlwU2hvd24oKTtcbiAgfSwgW10pO1xuXG4gIC8vIEludG8gdGhlIHRvcCBsYXllciwgd2hlcmUgYSBkcm9wLWRvd24gbWVudSBhbHJlYWR5IHB1dHMgaXRzZWxmOiBubyB6LWluZGV4IGNhblxuICAvLyBwYWludCBvdmVyIGEgcG9wb3Zlciwgc28gYSB0b29sdGlwIGFueXdoZXJlIG5lYXIgYW4gb3BlbiBtZW51IHdvdWxkIGJlIGhpZGRlblxuICAvLyBiZWhpbmQgaXQuIFNob3duIGFmdGVyIHRoZSBtZW51IG9wZW5lZCwgc28gaXQgbGFuZHMgYWJvdmUgaXQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFmbG9hdGluZyB8fCAhaXNQb3BvdmVyQ2FwYWJsZShmbG9hdGluZykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmbG9hdGluZy5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChmbG9hdGluZy5pc0Nvbm5lY3RlZCkge1xuICAgICAgICBmbG9hdGluZy5oaWRlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtmbG9hdGluZ10pO1xuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFRvb2x0aXBDb250YWluZXIgJHJlZj17c2V0RmxvYXRpbmd9IHBvcG92ZXI9XCJtYW51YWxcIiBzdHlsZT17ZmxvYXRpbmdTdHlsZXN9PlxuICAgICAge2NvbnRlbnR9XG4gICAgPC9TdHlsZWRUb29sdGlwQ29udGFpbmVyPlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgVG9vbHRpcFBsdWdpbjxUIGV4dGVuZHMgSFRNTEVsZW1lbnQ+ID0gUmV0dXJuVHlwZTx0eXBlb2YgdG9vbHRpcFBsdWdpbjxUPj47XG5cbnR5cGUgTm9ybWFsaXplZFRvb2x0aXBQcm9wcyA9IHtcbiAgcmVhZG9ubHkgY29udGVudFRleHQ/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IENvbnRlbnQ/OiBSZWFjdC5Db21wb25lbnRUeXBlPGFueT47XG4gIHJlYWRvbmx5IGNvbnRlbnRQcm9wcz86IGFueTtcbiAgcmVhZG9ubHkgcG9zaXRpb246IFBsYWNlbWVudDtcbiAgcmVhZG9ubHkgb25Ub29sdGlwU2hvd246IE1heWJlQXN5bmNWb2lkRnVuY3Rpb247XG59O1xuXG50eXBlIFRvb2x0aXBXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IHRvb2x0aXA6IE5vcm1hbGl6ZWRUb29sdGlwUHJvcHM7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgVG9vbHRpcFdyYXBwZXJDb21wb25lbnQgPSAoeyB0b29sdGlwLCBjb250cmlidXRlUmVmLCBjb250cmlidXRlUHJvcHMsIGNoaWxkcmVuIH06IFRvb2x0aXBXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgW3JlZmVyZW5jZSwgc2V0UmVmZXJlbmNlXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnRyaWJ1dGVSZWYoc2V0UmVmZXJlbmNlKTtcblxuICBjb25zdCB0b29sdGlwRGVsYXkgPSB1c2VTeW5jSW5qZWN0KHRvb2x0aXBEZWxheUluamVjdGFibGUpO1xuICBjb25zdCBob3Zlckl0ZW1TdGF0ZUZvciA9IHVzZVN5bmNJbmplY3QoaG92ZXJJdGVtU3RhdGVGb3JJbmplY3RhYmxlKTtcbiAgY29uc3QgaG92ZXJlZEl0ZW0gPSB1c2VTeW5jSW5qZWN0KGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbikoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpO1xuICBjb25zdCBpZCA9IHVzZUlkKCk7XG5cbiAgY29uc3QgcmVmZXJlbmNlUmVmID0gdXNlUmVmKHJlZmVyZW5jZSk7XG4gIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gcmVmZXJlbmNlO1xuXG4gIGNvbnN0IHRvb2x0aXBEZWxheVJlZiA9IHVzZVJlZih0b29sdGlwRGVsYXkpO1xuICB0b29sdGlwRGVsYXlSZWYuY3VycmVudCA9IHRvb2x0aXBEZWxheTtcblxuICBjb250cmlidXRlUHJvcHMoe1xuICAgIG9uTW91c2VFbnRlcjogYWN0aW9uKCgpID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWRBdCA9IERhdGUubm93KCk7XG5cbiAgICAgIGhvdmVySXRlbVN0YXRlRm9yKGhvdmVyYWJsZVRvb2x0aXBDb250ZXh0KS5zZXQoaWQsIHtcbiAgICAgICAgaG92ZXJlZEF0OiBvYnNlcnZhYmxlLmJveChob3ZlcmVkQXQsIHsgZGVlcDogZmFsc2UgfSksXG4gICAgICAgIGdldFByb3BzOiAoKSA9PiAoe1xuICAgICAgICAgIGl0ZW06IHJlZmVyZW5jZVJlZi5jdXJyZW50LFxuICAgICAgICAgIGRlbGF5OiB0b29sdGlwRGVsYXlSZWYuY3VycmVudCA/PyAwLFxuICAgICAgICAgIG9uSG92ZXI6IG5vb3AsXG4gICAgICAgICAgb25VbmhvdmVyOiBub29wLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH0pLFxuXG4gICAgb25Nb3VzZUxlYXZlOiBhY3Rpb24oKCkgPT4ge1xuICAgICAgY29uc3QgaG92ZXJlZFN0YXRlID0gaG92ZXJJdGVtU3RhdGVGb3IoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpO1xuICAgICAgY29uc3QgaG92ZXJlZEF0ID0gRGF0ZS5ub3coKTtcblxuICAgICAgaG92ZXJlZFN0YXRlLmRlbGV0ZShpZCk7XG4gICAgICBob3ZlcmVkU3RhdGUuZm9yRWFjaCgoc3RhdGUpID0+IHN0YXRlLmhvdmVyZWRBdC5zZXQoaG92ZXJlZEF0KSk7XG4gICAgfSksXG4gIH0pO1xuXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PlxuICAgICAgYWN0aW9uKCgpID0+IHtcbiAgICAgICAgaG92ZXJJdGVtU3RhdGVGb3IoaG92ZXJhYmxlVG9vbHRpcENvbnRleHQpLmRlbGV0ZShpZCk7XG4gICAgICB9KSxcbiAgICBbaG92ZXJJdGVtU3RhdGVGb3IsIGlkXSxcbiAgKTtcblxuICBjb25zdCBbaG92ZXJlZCwgc2V0SG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gYXV0b3J1bigoKSA9PiB7XG4gICAgICBjb25zdCBpc0hvdmVyZWQgPSBob3ZlcmVkSXRlbS5nZXQoKSA9PT0gcmVmZXJlbmNlUmVmLmN1cnJlbnQ7XG4gICAgICBzZXRIb3ZlcmVkKGlzSG92ZXJlZCk7XG4gICAgfSk7XG4gIH0sIFtob3ZlcmVkSXRlbV0pO1xuXG4gIGNvbnN0IHsgY29udGVudFRleHQsIENvbnRlbnQsIGNvbnRlbnRQcm9wcywgcG9zaXRpb24sIG9uVG9vbHRpcFNob3duIH0gPSB0b29sdGlwO1xuICBjb25zdCBjb250ZW50ID0gaG92ZXJlZCA/IENvbnRlbnQgPT09IHVuZGVmaW5lZCA/IGNvbnRlbnRUZXh0IDogPENvbnRlbnQgey4uLmNvbnRlbnRQcm9wc30gLz4gOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2NvbnRlbnRcbiAgICAgICAgPyBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgICA8RmxvYXRpbmdTdHlsZWRUb29sdGlwQ29udGFpbmVyIHsuLi57IGNvbnRlbnQsIHBvc2l0aW9uLCBvblRvb2x0aXBTaG93biwgcmVmZXJlbmNlIH19IC8+LFxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgICApXG4gICAgICAgIDogbnVsbH1cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiB0b29sdGlwUGx1Z2luPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSB7XG4gIHJldHVybiBnZXRQbHVnaW48VG9vbHRpcFBsdWdpblByb3BzLCBbSG92ZXJhYmxlUGx1Z2luPFQ+LCBSZWZQbHVnaW48VD5dPigocHJvcHMpID0+IHtcbiAgICBjb25zdCB7ICR0b29sdGlwIH0gPSBwcm9wcyBhcyB0eXBlb2YgcHJvcHMgJiB7IHJlYWRvbmx5IGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlIH07XG5cbiAgICBpZiAoJHRvb2x0aXAgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgJHRvb2x0aXA6IHVuZGVmaW5lZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qge1xuICAgICAgY29udGVudFRleHQsXG4gICAgICBDb250ZW50LFxuICAgICAgY29udGVudFByb3BzLFxuICAgICAgcG9zaXRpb24gPSBcImJvdHRvbVwiLFxuICAgICAgb25Ub29sdGlwU2hvd24gPSBub29wLFxuICAgIH06ICRUb29sdGlwUHJvcHM8YW55PiA9IHR5cGVvZiAkdG9vbHRpcCA9PT0gXCJzdHJpbmdcIiA/IHsgY29udGVudFRleHQ6ICR0b29sdGlwIH0gOiAkdG9vbHRpcDtcblxuICAgIHJldHVybiB7XG4gICAgICAkdG9vbHRpcDogdW5kZWZpbmVkLFxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBUb29sdGlwV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICB0b29sdGlwOiB7IGNvbnRlbnRUZXh0LCBDb250ZW50LCBjb250ZW50UHJvcHMsIHBvc2l0aW9uLCBvblRvb2x0aXBTaG93biB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuICB9KTtcbn1cbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5cbmV4cG9ydCBjb25zdCB0b29sdGlwRGVsYXlJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJ0b29sdGlwLWRlbGF5XCIsXG4gIGluc3RhbnRpYXRlOiAoKSA9PiAoKTogbnVtYmVyIHwgdW5kZWZpbmVkID0+IDUwMCxcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInRvb2x0aXBcIjogXCJ0b29sdGlwLW1vZHVsZV9fdG9vbHRpcF9fX3ZhT0F1XCJcbn07IiwgImltcG9ydCB7IGdldEVsZW1lbnRDb21wb25lbnQgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB7IG9ic2VydmVyIH0gZnJvbSBcIm1vYngtcmVhY3RcIjtcbmltcG9ydCB7IGFic29sdXRlUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYWJzb2x1dGUvYWJzb2x1dGVcIjtcbmltcG9ydCB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9wYWRkaW5nL3BhZGRpbmdcIjtcbmltcG9ydCB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL2JhY2tncm91bmQtY29sb3IvYmFja2dyb3VuZC1jb2xvclwiO1xuaW1wb3J0IHsgYm9yZGVyUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYm9yZGVyL2JvcmRlclwiO1xuaW1wb3J0IHsgZm9udFBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL2ZvbnQvZm9udFwiO1xuaW1wb3J0IHsgYm94U2hhZG93UGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvYm94LXNoYWRvdy9ib3gtc2hhZG93XCI7XG5pbXBvcnQgeyBub1BvaW50ZXJFdmVudHNQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9uby1wb2ludGVyLWV2ZW50cy9uby1wb2ludGVyLWV2ZW50c1wiO1xuaW1wb3J0IHsgcmVmUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvcmVmL3JlZlwiO1xuaW1wb3J0IHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyByZWxhdGl2ZVBsdWdpbiB9IGZyb20gXCIuLi9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlXCI7XG5pbXBvcnQgeyBob3ZlcmFibGVQbHVnaW4gfSBmcm9tIFwiLi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5cbmNvbnN0IHBsdWdpbnMgPSBbXG4gIHBhZGRpbmdQbHVnaW4sXG4gIGJveFNoYWRvd1BsdWdpbixcbiAgYm9yZGVyUGx1Z2luLFxuICBmb250UGx1Z2luLFxuICBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4sXG4gIG5vUG9pbnRlckV2ZW50c1BsdWdpbixcbiAgcmVsYXRpdmVQbHVnaW4sXG4gIGFic29sdXRlUGx1Z2luLFxuICBjbGFzc05hbWVQbHVnaW4sXG5dO1xuXG5jb25zdCBnZXRUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtob3ZlcmFibGVQbHVnaW48VD4oKSwgcmVmUGx1Z2luPFQ+KCldO1xuXG5leHBvcnQgY29uc3QgTWluaW1hbERpdiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4ucGx1Z2lucywgLi4uZ2V0VHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIE1pbmltYWxEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBNaW5pbWFsRGl2PjtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGFic29sdXRlU3R5bGVzIGZyb20gXCIuL2Fic29sdXRlLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEFic29sdXRlUG9zaXRpb24gPVxuICB8IFwiYWJzb2x1dGUtY2VudGVyLWxlZnQtdG8tcmVsYXRpdmUtY2VudGVyLXJpZ2h0XCJcbiAgfCBcImFic29sdXRlLWJvdHRvbS1sZWZ0LXRvLXJlbGF0aXZlLXRvcC1sZWZ0XCJcbiAgfCBcImFic29sdXRlLWJvdHRvbS10by1yZWxhdGl2ZS1ib3R0b21cIlxuICB8IFwiYWJzb2x1dGUtdG9wLWNlbnRlci10by1yZWxhdGl2ZS10b3AtY2VudGVyXCI7XG5cbmV4cG9ydCB0eXBlIEFic29sdXRlUGx1Z2luUHJvcHMgPSB7ICRhYnNvbHV0ZT86IEFic29sdXRlUG9zaXRpb24gfCBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBhYnNvbHV0ZVBsdWdpbiA9IGdldFBsdWdpbjxBYnNvbHV0ZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW1xuICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAge1xuICAgICAgW2Fic29sdXRlU3R5bGVzLmFic29sdXRlXTogISFwcm9wcy4kYWJzb2x1dGUsXG5cbiAgICAgIFthYnNvbHV0ZVN0eWxlc1tgYWJzb2x1dGUtLSR7cHJvcHMuJGFic29sdXRlfWBdXTogdHlwZW9mIHByb3BzLiRhYnNvbHV0ZSA9PT0gXCJzdHJpbmdcIixcbiAgICB9LFxuICBdLFxuXG4gICRhYnNvbHV0ZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2Fic29sdXRlL2Fic29sdXRlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYWJzb2x1dGVcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlX19fTVgtLVlcIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWxlZnQtdG8tcmVsYXRpdmUtY2VudGVyLXJpZ2h0XCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWxlZnQtdG8tcmVsYXRpdmUtY2VudGVyLXJpZ2h0X19fbEowcHJcIixcbiAgXCJhYnNvbHV0ZS0tYWJzb2x1dGUtYm90dG9tLWxlZnQtdG8tcmVsYXRpdmUtdG9wLWxlZnRcIjogXCJhYnNvbHV0ZS1tb2R1bGVfX2Fic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tbGVmdC10by1yZWxhdGl2ZS10b3AtbGVmdF9fXzNnMHNEXCIsXG4gIFwiYWJzb2x1dGUtLWFic29sdXRlLWNlbnRlci1jZW50ZXItdG8tcmVsYXRpdmUtYm90dG9tLXJpZ2h0XCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtY2VudGVyLWNlbnRlci10by1yZWxhdGl2ZS1ib3R0b20tcmlnaHRfX19nZ21POFwiLFxuICBcImFic29sdXRlLS1hYnNvbHV0ZS1ib3R0b20tdG8tcmVsYXRpdmUtYm90dG9tXCI6IFwiYWJzb2x1dGUtbW9kdWxlX19hYnNvbHV0ZS0tYWJzb2x1dGUtYm90dG9tLXRvLXJlbGF0aXZlLWJvdHRvbV9fX0NsbTBtXCIsXG4gIFwiYWJzb2x1dGUtLWFic29sdXRlLXRvcC1jZW50ZXItdG8tcmVsYXRpdmUtdG9wLWNlbnRlclwiOiBcImFic29sdXRlLW1vZHVsZV9fYWJzb2x1dGUtLWFic29sdXRlLXRvcC1jZW50ZXItdG8tcmVsYXRpdmUtdG9wLWNlbnRlcl9fX0V0a3k1XCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgcGFkZGluZ1N0eWxlcyBmcm9tIFwiLi9wYWRkaW5nLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlIERpcmVjdGlvbmFsUGFkZGluZyA9IHtcbiAgdG9wPzogVFNoaXJ0U2l6ZTtcbiAgYm90dG9tPzogVFNoaXJ0U2l6ZTtcbiAgbGVmdD86IFRTaGlydFNpemU7XG4gIHJpZ2h0PzogVFNoaXJ0U2l6ZTtcbiAgaG9yaXpvbnRhbD86IFRTaGlydFNpemU7XG4gIHZlcnRpY2FsPzogVFNoaXJ0U2l6ZTtcbn07XG5cbmV4cG9ydCB0eXBlIFBhZGRpbmdQbHVnaW5Qcm9wcyA9IHsgJHBhZGRpbmc/OiBib29sZWFuIHwgRGlyZWN0aW9uYWxQYWRkaW5nIHwgVFNoaXJ0U2l6ZSB9O1xuXG5leHBvcnQgY29uc3QgcGFkZGluZ1BsdWdpbiA9IGdldFBsdWdpbjxQYWRkaW5nUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJHBhZGRpbmcpIHtcbiAgICByZXR1cm4geyAkcGFkZGluZzogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCBwYWRkaW5nID0gcHJvcHMuJHBhZGRpbmcgPT09IHRydWUgPyBcInhzXCIgOiBwcm9wcy4kcGFkZGluZztcblxuICBpZiAoaXNTdHJpbmcocGFkZGluZykpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHBhZGRpbmdTdHlsZXNbYHBhZGRpbmctLSR7cGFkZGluZ31gXV0sXG4gICAgICAkcGFkZGluZzogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICBjb25zdCB0b3BTaXplID0gcGFkZGluZy50b3AgfHwgcGFkZGluZy52ZXJ0aWNhbDtcbiAgY29uc3QgYm90dG9tU2l6ZSA9IHBhZGRpbmcuYm90dG9tIHx8IHBhZGRpbmcudmVydGljYWw7XG4gIGNvbnN0IHJpZ2h0U2l6ZSA9IHBhZGRpbmcucmlnaHQgfHwgcGFkZGluZy5ob3Jpem9udGFsO1xuICBjb25zdCBsZWZ0U2l6ZSA9IHBhZGRpbmcubGVmdCB8fCBwYWRkaW5nLmhvcml6b250YWw7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuXG4gICAgICB7XG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX190b3AtLSR7dG9wU2l6ZX1gXV06IHRvcFNpemUsXG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX19yaWdodC0tJHtyaWdodFNpemV9YF1dOiByaWdodFNpemUsXG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX19ib3R0b20tLSR7Ym90dG9tU2l6ZX1gXV06IGJvdHRvbVNpemUsXG4gICAgICAgIFtwYWRkaW5nU3R5bGVzW2BwYWRkaW5nX19sZWZ0LS0ke2xlZnRTaXplfWBdXTogbGVmdFNpemUsXG4gICAgICB9LFxuICAgIF0sXG5cbiAgICAkcGFkZGluZzogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvcGFkZGluZy9wYWRkaW5nLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicGFkZGluZ19fdG9wLS16ZXJvXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0temVyb19fX2dxcWZaXCIsXG4gIFwicGFkZGluZ19fdG9wLS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS00eHNfX19ZLXk5c1wiLFxuICBcInBhZGRpbmdfX3RvcC0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tM3hzX19fb2NjNE5cIixcbiAgXCJwYWRkaW5nX190b3AtLXh4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLXh4c19fX043QnNsXCIsXG4gIFwicGFkZGluZ19fdG9wLS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLXhzX19fTDBVRERcIixcbiAgXCJwYWRkaW5nX190b3AtLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS1zX19fa2xRZTJcIixcbiAgXCJwYWRkaW5nX190b3AtLW1cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS1tX19fY3RhNXRcIixcbiAgXCJwYWRkaW5nX190b3AtLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS1sX19fTGctcHFcIixcbiAgXCJwYWRkaW5nX190b3AtLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teGxfX19YdnN2TFwiLFxuICBcInBhZGRpbmdfX3RvcC0teHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0teHhsX19fMWtlb2VcIixcbiAgXCJwYWRkaW5nX190b3AtLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTN4bF9fX2NVUHM5XCIsXG4gIFwicGFkZGluZ19fdG9wLS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS00eGxfX19xaWsyZVwiLFxuICBcInBhZGRpbmdfX3RvcC0tNXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tNXhsX19fczlrcFFcIixcbiAgXCJwYWRkaW5nX190b3AtLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTZ4bF9fX3FjM0ZaXCIsXG4gIFwicGFkZGluZ19fdG9wLS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fdG9wLS03eGxfX190YUMtUFwiLFxuICBcInBhZGRpbmdfX3RvcC0tOHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tOHhsX19fTFdoanFcIixcbiAgXCJwYWRkaW5nX190b3AtLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX190b3AtLTl4bF9fX0wxM2NwXCIsXG4gIFwicGFkZGluZ19fdG9wLS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tMTB4bF9fX0lkZTlDXCIsXG4gIFwicGFkZGluZ19fdG9wLS0xMXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3RvcC0tMTF4bF9fX0h0dFNjXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLXplcm9cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXplcm9fX182dlliVFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTR4c19fX2hqTzhEXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTN4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tM3hzX19fTVhSN0dcIixcbiAgXCJwYWRkaW5nX19yaWdodC0teHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS14eHNfX19GbjNPaFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0teHNfX19rcHNRUFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS1zXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS1zX19fN2VCRFZcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tbVwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tbV9fX3hHZHR1XCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLWxfX19NeXljNFwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0teGxfX18tR0dqSlwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS14eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLXh4bF9fXzB5TkVaXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tM3hsX19fYmJPUENcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tNHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS00eGxfX192QVpFVVwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS01eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTV4bF9fX3BzTmhiXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tNnhsX19fSnd3a1JcIixcbiAgXCJwYWRkaW5nX19yaWdodC0tN3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX3JpZ2h0LS03eGxfX19nb213OVwiLFxuICBcInBhZGRpbmdfX3JpZ2h0LS04eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTh4bF9fX1ZodlZaXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tOXhsX19fNE9CTm5cIixcbiAgXCJwYWRkaW5nX19yaWdodC0tMTB4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19yaWdodC0tMTB4bF9fX2VPVUEzXCIsXG4gIFwicGFkZGluZ19fcmlnaHQtLTExeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fcmlnaHQtLTExeGxfX19JNzkyZ1wiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXplcm9fX19GUzk4NFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tNHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tNHhzX19fd2hpMXhcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTN4c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTN4c19fX2U1cmtZXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS14eHNfX194UXZWdlwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0teHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS14c19fX29jeWkwXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS1zXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tc19fXzZJYm5WXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tbV9fX2d4QjJNXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS1sXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tbF9fX2NiTW83XCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS14bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXhsX19fdExBb3pcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLXh4bF9fX2czNUItXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS0zeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS0zeGxfX19BejhraVwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tNHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tNHhsX19fa2JTLVJcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTV4bF9fX3dqbE9vXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS02eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS02eGxfX19JRHhSTFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tN3hsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2JvdHRvbS0tN3hsX19fSHFGbWlcIixcbiAgXCJwYWRkaW5nX19ib3R0b20tLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTh4bF9fX3VMTmVCXCIsXG4gIFwicGFkZGluZ19fYm90dG9tLS05eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fYm90dG9tLS05eGxfX19rWGpmLVwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tMTB4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTEweGxfX19TSkNCeFwiLFxuICBcInBhZGRpbmdfX2JvdHRvbS0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19ib3R0b20tLTExeGxfX19MUi1tc1wiLFxuICBcInBhZGRpbmdfX2xlZnQtLXplcm9cIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0temVyb19fX09DVGNZXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tNHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLTR4c19fXzA4OTA4XCIsXG4gIFwicGFkZGluZ19fbGVmdC0tM3hzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLTN4c19fX2ZlQzAtXCIsXG4gIFwicGFkZGluZ19fbGVmdC0teHhzXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLXh4c19fX3hOYjJKXCIsXG4gIFwicGFkZGluZ19fbGVmdC0teHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teHNfX19kQmM2WFwiLFxuICBcInBhZGRpbmdfX2xlZnQtLXNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tc19fX2tzaWdyXCIsXG4gIFwicGFkZGluZ19fbGVmdC0tbVwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nX19sZWZ0LS1tX19fbGJtUmxcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS1sXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLWxfX19rR2d4blwiLFxuICBcInBhZGRpbmdfX2xlZnQtLXhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLXhsX19fUTlwTklcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS14eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0teHhsX19fa1gwYWNcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS0zeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tM3hsX19fM1VuNmJcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS00eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNHhsX19fem5PM25cIixcbiAgXCJwYWRkaW5nX19sZWZ0LS01eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNXhsX19fUlRIc1BcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS02eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tNnhsX19faDVCRUFcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS03eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tN3hsX19fclRaZmhcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS04eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tOHhsX19fbmRNdTlcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS05eGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tOXhsX19fYjBHQTBcIixcbiAgXCJwYWRkaW5nX19sZWZ0LS0xMHhsXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmdfX2xlZnQtLTEweGxfX19Qd0RTVlwiLFxuICBcInBhZGRpbmdfX2xlZnQtLTExeGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZ19fbGVmdC0tMTF4bF9fXzJIc3ZKXCIsXG4gIFwicGFkZGluZy0temVyb1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS16ZXJvX19faHdtZnBcIixcbiAgXCJwYWRkaW5nLS00eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tNHhzX19fUU9VS0JcIixcbiAgXCJwYWRkaW5nLS0zeHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tM3hzX19fUnM0SXVcIixcbiAgXCJwYWRkaW5nLS14eHNcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0teHhzX19fTUlkQ0pcIixcbiAgXCJwYWRkaW5nLS14c1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14c19fX1F3aGFCXCIsXG4gIFwicGFkZGluZy0tc1wiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS1zX19fQkxIZS1cIixcbiAgXCJwYWRkaW5nLS1tXCI6IFwicGFkZGluZy1tb2R1bGVfX3BhZGRpbmctLW1fX19QZHRaYVwiLFxuICBcInBhZGRpbmctLWxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tbF9fX1JWRExrXCIsXG4gIFwicGFkZGluZy0teGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0teGxfX19jdVBhTlwiLFxuICBcInBhZGRpbmctLXh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS14eGxfX19IN1ZJSFwiLFxuICBcInBhZGRpbmctLTN4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0zeGxfX19rdmlyVFwiLFxuICBcInBhZGRpbmctLTR4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS00eGxfX195MTdBMFwiLFxuICBcInBhZGRpbmctLTV4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS01eGxfX185eW1JOVwiLFxuICBcInBhZGRpbmctLTZ4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS02eGxfX18yS0NtYVwiLFxuICBcInBhZGRpbmctLTd4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS03eGxfX19Tc0l4blwiLFxuICBcInBhZGRpbmctLTh4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS04eGxfX19zSFpwbVwiLFxuICBcInBhZGRpbmctLTl4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS05eGxfX19vVmNJZ1wiLFxuICBcInBhZGRpbmctLTEweGxcIjogXCJwYWRkaW5nLW1vZHVsZV9fcGFkZGluZy0tMTB4bF9fX2pLR2tuXCIsXG4gIFwicGFkZGluZy0tMTF4bFwiOiBcInBhZGRpbmctbW9kdWxlX19wYWRkaW5nLS0xMXhsX19fQWdKckdcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBiYWNrZ3JvdW5kQ29sb3JTdHlsZXMgZnJvbSBcIi4vYmFja2dyb3VuZC1jb2xvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSBCYWNrZ3JvdW5kQ29sb3JBbGlhcyA9IGtleW9mIHR5cGVvZiBhbGlhc1RvTm9taW5hbDtcbmV4cG9ydCB0eXBlIEJhY2tncm91bmRDb2xvciA9IENvbG9yIHwgQmFja2dyb3VuZENvbG9yQWxpYXM7XG5cbmV4cG9ydCB0eXBlICRCYWNrZ3JvdW5kQ29sb3JQcm9wcyA9IHtcbiAgbm9ybWFsPzogQmFja2dyb3VuZENvbG9yO1xuICBob3Zlcj86IEJhY2tncm91bmRDb2xvcjtcbiAgZm9jdXM/OiBCYWNrZ3JvdW5kQ29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSBCYWNrZ3JvdW5kQ29sb3JQbHVnaW5Qcm9wcyA9IHsgJGJhY2tncm91bmRDb2xvcj86IEJhY2tncm91bmRDb2xvciB8ICRCYWNrZ3JvdW5kQ29sb3JQcm9wcyB9O1xuXG5jb25zdCBhbGlhc1RvTm9taW5hbCA9IHtcbiAgYmFja2dyb3VuZFByaW1hcnk6IFwiZ3JleTgwXCIsXG4gIGJhY2tncm91bmRTZWNvbmRhcnk6IFwiZ3JleTEwMFwiLFxuICBiYWNrZ3JvdW5kUHJpbWFyeURpbW1lZDogXCJncmV5ODBBbHBoYTg1XCIsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBpc0JhY2tncm91bmRDb2xvckFsaWFzID0gKGNvbG9yOiBCYWNrZ3JvdW5kQ29sb3IpOiBjb2xvciBpcyBCYWNrZ3JvdW5kQ29sb3JBbGlhcyA9PiBjb2xvciBpbiBhbGlhc1RvTm9taW5hbDtcblxuZXhwb3J0IGNvbnN0IGJhY2tncm91bmRDb2xvclBsdWdpbiA9IGdldFBsdWdpbjxCYWNrZ3JvdW5kQ29sb3JQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkYmFja2dyb3VuZENvbG9yOiBjb2xvciB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZm9jdXMgfSA9IHR5cGVvZiBjb2xvciA9PT0gXCJzdHJpbmdcIiA/IHsgbm9ybWFsOiBjb2xvciB9IDogKGNvbG9yID8/IHt9KTtcblxuICBjb25zdCBub3JtYWxDb2xvciA9IG5vcm1hbCA/IChpc0JhY2tncm91bmRDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgaG92ZXJDb2xvciA9IGhvdmVyID8gKGlzQmFja2dyb3VuZENvbG9yQWxpYXMoaG92ZXIpID8gYWxpYXNUb05vbWluYWxbaG92ZXJdIDogaG92ZXIpIDogdW5kZWZpbmVkO1xuICBjb25zdCBmb2N1c0NvbG9yID0gZm9jdXMgPyAoaXNCYWNrZ3JvdW5kQ29sb3JBbGlhcyhmb2N1cykgPyBhbGlhc1RvTm9taW5hbFtmb2N1c10gOiBmb2N1cykgOiB1bmRlZmluZWQ7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgICAgbm9ybWFsQ29sb3IgPyBiYWNrZ3JvdW5kQ29sb3JTdHlsZXNbYGJhY2tncm91bmRDb2xvci0tJHtub3JtYWxDb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIGhvdmVyQ29sb3IgPyBiYWNrZ3JvdW5kQ29sb3JTdHlsZXNbYGJhY2tncm91bmRDb2xvci1ob3Zlci0tJHtob3ZlckNvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgICAgZm9jdXNDb2xvciA/IGJhY2tncm91bmRDb2xvclN0eWxlc1tgYmFja2dyb3VuZENvbG9yLWZvY3VzLS0ke2ZvY3VzQ29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgXSxcbiAgICAkYmFja2dyb3VuZENvbG9yOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9iYWNrZ3JvdW5kLWNvbG9yL2JhY2tncm91bmQtY29sb3IubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWluaGVyaXRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1pbmhlcml0X19fTi1EdFlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXdoaXRlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0td2hpdGVfX18xOGZ4dVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tdHJhbnNwYXJlbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS10cmFuc3BhcmVudF9fX1ZkdC1ZXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MTAwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTEwMF9fX1BSelV0XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5ODBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5ODBfX19hYnl0dVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTYwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTYwX19fUFBBU2xcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk0MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXk0MF9fX3dGQmFsXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MzBfX18tLThNVFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTI1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTI1X19fWUU4UWZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXkyMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWdyZXkyMF9fXzYwMGpRXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1ncmV5MTBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5MTBfX19JU3NjOVwiLFxuICBcImJhY2tncm91bmRDb2xvci0tZ3JleTcwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tZ3JleTcwX19fVi1aR0xcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1ncmV5ODBBbHBoYTg1X19fN29UWDNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXByaW1hcnlcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1wcmltYXJ5X19fT0huckxcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXN1Y2Nlc3NcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1zdWNjZXNzX19fV1VSM3lcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLW5vdGljZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLW5vdGljZV9fX2xWTlJkXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS13YXJuaW5nXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0td2FybmluZ19fX0FyVnZsXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1jcml0aWNhbFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWNyaXRpY2FsX19fcC1XYjlcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci0tc3VjY2Vzc1RpbnRfX18yVVAzWVwiLFxuICBcImJhY2tncm91bmRDb2xvci0td2FybmluZ1RpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS13YXJuaW5nVGludF9fX3F3RjA4XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLS1jcml0aWNhbFRpbnRfX19pSy1qbFwiLFxuICBcImJhY2tncm91bmRDb2xvci0tbGlua1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWxpbmtfX19qNFJqN1wiLFxuICBcImJhY2tncm91bmRDb2xvci0tY29kZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItLWNvZGVfX19FbS1iSlwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0taW5oZXJpdFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWluaGVyaXRfX19teTJScVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0td2hpdGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS13aGl0ZV9fX3RlLWdwXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS10cmFuc3BhcmVudFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXRyYW5zcGFyZW50X19fMUQySWpcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MTAwX19fLUpIdTJcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk4MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk4MF9fX3otODVJXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NjBfX19oVWJZM1wiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTQwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTQwX19fM0EtZTZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkzMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkzMF9fXzctQ0ZqXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5MjVfX19tSVQ4UVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTIwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTIwX19fb01BY0RcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXkxMF9fX2dSMTkzXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NzBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1ncmV5NzBfX19rMkpLTVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tZ3JleTgwQWxwaGE4NVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVfX19DZGstLVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tcHJpbWFyeVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXByaW1hcnlfX196dGd6QVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tc3VjY2Vzc1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXN1Y2Nlc3NfX19HMzBWSFwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tbm90aWNlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tbm90aWNlX19faldGY0NcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS13YXJuaW5nX19fdm4tQktcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNyaXRpY2FsXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tY3JpdGljYWxfX19yNmJaSVwiLFxuICBcImJhY2tncm91bmRDb2xvci1ob3Zlci0tc3VjY2Vzc1RpbnRcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWhvdmVyLS1zdWNjZXNzVGludF9fXzg4TERqXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS13YXJuaW5nVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLXdhcm5pbmdUaW50X19fWGk2MkZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNyaXRpY2FsVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItaG92ZXItLWNyaXRpY2FsVGludF9fX1YwcTJvXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1saW5rXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tbGlua19fX1g5TEZxXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWhvdmVyLS1jb2RlXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1ob3Zlci0tY29kZV9fX2xIQ0lnXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1pbmhlcml0XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0taW5oZXJpdF9fX1JKUFdKXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS13aGl0ZVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdoaXRlX19feEY4dTNcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXRyYW5zcGFyZW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tdHJhbnNwYXJlbnRfX190cXEteFwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTEwMFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkxMDBfX194dDF4TFwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTgwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTgwX19fZTI4ampcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk2MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk2MF9fX3d0RHdUXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5NDBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5NDBfX19EREhrUFwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTMwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTMwX19fWlZ2RDVcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkyNVwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXkyNV9fX0FzVjZmXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MjBcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5MjBfX19PTDBaWVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTEwXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTEwX19fbWFpemZcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk3MFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWdyZXk3MF9fX3ZSbkwyXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ncmV5ODBBbHBoYTg1XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tZ3JleTgwQWxwaGE4NV9fX1ZoeXVOXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1wcmltYXJ5XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tcHJpbWFyeV9fXzdUemt1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1zdWNjZXNzXCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tc3VjY2Vzc19fX255M3psXCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ub3RpY2VcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1ub3RpY2VfX19vdkZ2MVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0td2FybmluZ1wiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdhcm5pbmdfX19xbG4ydVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1jcml0aWNhbF9fX1BnREk1XCIsXG4gIFwiYmFja2dyb3VuZENvbG9yLWZvY3VzLS1zdWNjZXNzVGludFwiOiBcImJhY2tncm91bmQtY29sb3ItbW9kdWxlX19iYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXN1Y2Nlc3NUaW50X19fY3EtRDVcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLXdhcm5pbmdUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0td2FybmluZ1RpbnRfX19hSHRnQVwiLFxuICBcImJhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxUaW50XCI6IFwiYmFja2dyb3VuZC1jb2xvci1tb2R1bGVfX2JhY2tncm91bmRDb2xvci1mb2N1cy0tY3JpdGljYWxUaW50X19fZUo5TmhcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWxpbmtcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1saW5rX19fVGxSUllcIixcbiAgXCJiYWNrZ3JvdW5kQ29sb3ItZm9jdXMtLWNvZGVcIjogXCJiYWNrZ3JvdW5kLWNvbG9yLW1vZHVsZV9fYmFja2dyb3VuZENvbG9yLWZvY3VzLS1jb2RlX19fZmE2NVVcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlcldpZHRoIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB7IHR5cGUgQ29ybmVyU3R5bGVzLCBnZXRDb3JuZXJTdHlsZXMgfSBmcm9tIFwiLi9nZXQtY29ybmVyLXN0eWxlc1wiO1xuaW1wb3J0IHsgZ2V0U2lkZVN0eWxlcywgdHlwZSBTaWRlU3R5bGVzIH0gZnJvbSBcIi4vZ2V0LXNpZGUtc3R5bGVzXCI7XG5pbXBvcnQgeyBjb21wYWN0IH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuXG5leHBvcnQgdHlwZSBCb3JkZXJDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuZXhwb3J0IHR5cGUgQm9yZGVyQ29sb3IgPSBDb2xvciB8IEJvcmRlckNvbG9yQWxpYXM7XG5cbmNvbnN0IGFsaWFzVG9Ob21pbmFsID0geyBib3JkZXJQcmltYXJ5OiBcImdyZXk2MFwiIH0gYXMgY29uc3Q7XG5cbmNvbnN0IGlzQm9yZGVyQ29sb3JBbGlhcyA9IChjb2xvcjogQm9yZGVyQ29sb3IpOiBjb2xvciBpcyBCb3JkZXJDb2xvckFsaWFzID0+IGNvbG9yIGluIGFsaWFzVG9Ob21pbmFsO1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGhvdmVyPzogQm9yZGVyQ29sb3I7XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogQm9yZGVyQ29sb3I7XG59O1xuXG5leHBvcnQgdHlwZSAkQm9yZGVyUHJvcHMgPSB7XG4gIGNvbG9yPzogQm9yZGVyQ29sb3IgfCAkQm9yZGVyQ29sb3JQcm9wcztcbiAgd2lkdGg/OiBCb3JkZXJXaWR0aCB8IGJvb2xlYW47XG4gIC8qKlxuICAgKiBMZWF2ZSB0aGUgbGFzdCBvZiB0aGUgZWxlbWVudCdzIHNpYmxpbmdzIHdpdGhvdXQgdGhlIGJvcmRlciwgc28gdGhhdCBhIHN0YWNrXG4gICAqIG9mIGJvcmRlcmVkIHJvd3MgcmVhZHMgYXMgcm93cyBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIHJhdGhlciB0aGFuIGZyYW1lZC5cbiAgICovXG4gIGV4Y2VwdExhc3Q/OiBib29sZWFuO1xufSAmIFNpZGVTdHlsZXMgJlxuICBDb3JuZXJTdHlsZXM7XG5cbmV4cG9ydCB0eXBlIEJvcmRlclBsdWdpblByb3BzID0geyAkYm9yZGVyPzogJEJvcmRlclByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBib3JkZXJQbHVnaW4gPSBnZXRQbHVnaW48Qm9yZGVyUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGJvcmRlcikge1xuICAgIHJldHVybiB7ICRib3JkZXI6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Q29ybmVyU3R5bGVzKHByb3BzLiRib3JkZXIpLCBnZXRCb3JkZXJTdHlsZXMocHJvcHMuJGJvcmRlcildLFxuICAgICRib3JkZXI6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRCb3JkZXJTdHlsZXMgPSAoeyB3aWR0aCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wLCBjb2xvciwgZXhjZXB0TGFzdCB9OiAkQm9yZGVyUHJvcHMpID0+IHtcbiAgY29uc3QgYm9yZGVyV2lkdGggPSB3aWR0aCA9PT0gdHJ1ZSB8fCAod2lkdGggPT09IHVuZGVmaW5lZCAmJiBjb2xvcikgPyBcInh4c1wiIDogd2lkdGg7XG4gIGNvbnN0IHsgbm9ybWFsLCBob3ZlciwgZGlzYWJsZWQgfSA9XG4gICAgYm9yZGVyV2lkdGggJiYgY29sb3IgPT09IHVuZGVmaW5lZFxuICAgICAgPyB7IG5vcm1hbDogXCJib3JkZXJQcmltYXJ5XCIgYXMgY29uc3QgfVxuICAgICAgOiB0eXBlb2YgY29sb3IgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyB7IG5vcm1hbDogY29sb3IgfVxuICAgICAgICA6IChjb2xvciA/PyB7fSk7XG5cbiAgY29uc3Qgbm9ybWFsQ29sb3IgPSBub3JtYWwgJiYgaXNCb3JkZXJDb2xvckFsaWFzKG5vcm1hbCkgPyBhbGlhc1RvTm9taW5hbFtub3JtYWxdIDogbm9ybWFsO1xuICBjb25zdCBob3ZlckNvbG9yID0gaG92ZXIgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGhvdmVyKSA/IGFsaWFzVG9Ob21pbmFsW2hvdmVyXSA6IGhvdmVyO1xuICBjb25zdCBkaXNhYmxlZENvbG9yID0gZGlzYWJsZWQgJiYgaXNCb3JkZXJDb2xvckFsaWFzKGRpc2FibGVkKSA/IGFsaWFzVG9Ob21pbmFsW2Rpc2FibGVkXSA6IGRpc2FibGVkO1xuXG4gIGNvbnN0IHN0eWxlQ2xhc3NlcyA9IGNvbXBhY3QoW1xuICAgIGJvcmRlcldpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX3dpZHRoLS0ke2JvcmRlcldpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgIG5vcm1hbENvbG9yID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJfX2NvbG9yLS0ke25vcm1hbENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIGhvdmVyQ29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fY29sb3ItLSR7aG92ZXJDb2xvcn0tLWhvdmVyYF0gOiB1bmRlZmluZWQsXG4gICAgZGlzYWJsZWRDb2xvciA/IGJvcmRlclN0eWxlc1tgYm9yZGVyX19jb2xvci0tJHtkaXNhYmxlZENvbG9yfS0tZGlzYWJsZWRgXSA6IHVuZGVmaW5lZCxcbiAgICAuLi5nZXRTaWRlU3R5bGVzKHsgbGVmdCwgcmlnaHQsIGJvdHRvbSwgdG9wIH0pLFxuICAgIGV4Y2VwdExhc3QgPyBib3JkZXJTdHlsZXNbXCJib3JkZXItLWV4Y2VwdC1sYXN0XCJdIDogdW5kZWZpbmVkLFxuICBdKTtcblxuICByZXR1cm4gW3N0eWxlQ2xhc3Nlcywgc3R5bGVDbGFzc2VzLmxlbmd0aCA+IDAgJiYgYm9yZGVyU3R5bGVzW1wiYm9yZGVyX19zdHlsZS0tc29saWRcIl1dO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3JkZXIvYm9yZGVyLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYm9yZGVyX19zdHlsZS0tc29saWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3N0eWxlLS1zb2xpZF9fXzFReTFKXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0temVyb19fXy1rN1VDXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tc19fX3ZsbXVsXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tbV9fX0VvSHZqXCIsXG4gIFwiYm9yZGVyX19yYWRpdXMtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLW1sX19fa3NLUGVcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fcmFkaXVzLS1sX19fLTU0bnhcIixcbiAgXCJib3JkZXJfX3JhZGl1cy0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3JhZGl1cy0tNTBfX19FYzVjY1wiLFxuICBcImJvcmRlcl9fcmFkaXVzLS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19yYWRpdXMtLWZ1bGxfX19mME9rTFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS16ZXJvX19fdUxjTzJcIixcbiAgXCJib3JkZXJfX3dpZHRoLS14eHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS14eHNfX19KMHRaOVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teHNfX19VUmNrSVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS1zX19feDlOVWpcIixcbiAgXCJib3JkZXJfX3dpZHRoLS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tbV9fX0NGOENFXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLWxfX19Zb0I2NVwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0teGxfX19CQ0xsTlwiLFxuICBcImJvcmRlcl9fd2lkdGgtLXh4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLXh4bF9fXy1kcmdQXCIsXG4gIFwiYm9yZGVyX193aWR0aC0tM3hsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX193aWR0aC0tM3hsX19fZHFtaUZcIixcbiAgXCJib3JkZXJfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX3dpZHRoLS00eGxfX19iRUw5MFwiLFxuICBcImJvcmRlcl9fd2lkdGgtLTV4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fd2lkdGgtLTV4bF9fX3pqMVZYXCIsXG4gIFwiYm9yZGVyX19jb2xvci0taW5oZXJpdFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWluaGVyaXRfX19FMk1Tc1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0taG92ZXJfX19XeW5CUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWluaGVyaXQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0taW5oZXJpdC0tZGlzYWJsZWRfX19xLXRzRVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGVfX19nVDJvZ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdoaXRlLS1ob3Zlcl9fX1FkcFZiXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2hpdGUtLWRpc2FibGVkX19faXlUWEtcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50X19fc3dhbUhcIixcbiAgXCJib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS10cmFuc3BhcmVudC0taG92ZXJfX19qVVotelwiLFxuICBcImJvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXRyYW5zcGFyZW50LS1kaXNhYmxlZF9fX3NpRHJ5XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMDBfX192NWw4M1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0taG92ZXJfX19KMS1PUVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMDAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTEwMC0tZGlzYWJsZWRfX19RaktSUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MF9fX2txNWFUXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MC0taG92ZXJfX19DcHBsVlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5ODAtLWRpc2FibGVkX19fLThQS2xcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjBfX19QOUpNSFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk2MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWhvdmVyX19fQVppY0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NjAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTYwLS1kaXNhYmxlZF9fX2djVmREXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwX19fZjZTRHdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NDAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTQwLS1ob3Zlcl9fX1VIZElyXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTQwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk0MC0tZGlzYWJsZWRfX180ZURrQ1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMF9fX2ZxYnR1XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTMwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkzMC0taG92ZXJfX19WTkRTUlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkzMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MzAtLWRpc2FibGVkX19fcHlKT3FcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjVfX19zblZuZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkyNS0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWhvdmVyX19fbmRyZllcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTI1LS1kaXNhYmxlZF9fX29tUEpQXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwX19fZ2JuM1pcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5MjAtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTIwLS1ob3Zlcl9fX3hSc3djXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTIwLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkyMC0tZGlzYWJsZWRfX19TVmVBVFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMF9fX1pVNUdhXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTEwLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXkxMC0taG92ZXJfX19VWmgtZFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXkxMC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5MTAtLWRpc2FibGVkX19fOVotT1RcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzBfX195cjlpTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk3MC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWhvdmVyX19fbDlZVGRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ncmV5NzAtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTcwLS1kaXNhYmxlZF9fX1N3UlFpXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODVfX182RGJkU1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0taG92ZXJfX194U2t3QVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWdyZXk4MEFscGhhODUtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tZ3JleTgwQWxwaGE4NS0tZGlzYWJsZWRfX195UDRPLVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1wcmltYXJ5X19fZ2Z4Qk9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWhvdmVyX19fcHVIRHBcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1wcmltYXJ5LS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXByaW1hcnktLWRpc2FibGVkX19fSDVGc0dcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc19fX1p1cmxTXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1ob3Zlcl9fX1d5LTJNXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzcy0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzLS1kaXNhYmxlZF9fX1RQM1J2XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlX19fWndRdlRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1ub3RpY2UtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbm90aWNlLS1ob3Zlcl9fX01KUVVoXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbm90aWNlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLW5vdGljZS0tZGlzYWJsZWRfX195VnVpMlwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS13YXJuaW5nX19fTEs2QXpcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWhvdmVyX19fbUFvU0JcIixcbiAgXCJib3JkZXJfX2NvbG9yLS13YXJuaW5nLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmctLWRpc2FibGVkX19fV2NBSy1cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsX19fR1RZejFcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbC0taG92ZXJfX191TUZqYVwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNyaXRpY2FsLS1kaXNhYmxlZF9fX0s5Z2w3XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludF9fX1BTUk1uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tc3VjY2Vzc1RpbnQtLWhvdmVyX19fVWZKUGdcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1zdWNjZXNzVGludC0tZGlzYWJsZWRfX19Xa09wQVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnRfX19JVFdtTVwiLFxuICBcImJvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLXdhcm5pbmdUaW50LS1ob3Zlcl9fX0pjLU5uXCIsXG4gIFwiYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0td2FybmluZ1RpbnQtLWRpc2FibGVkX19fdXF6Qm9cIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnRfX19PUXV4dFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNyaXRpY2FsVGludC0taG92ZXJcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWhvdmVyX19fbFdhOURcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jcml0aWNhbFRpbnQtLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tY3JpdGljYWxUaW50LS1kaXNhYmxlZF9fX2xZaGg0XCIsXG4gIFwiYm9yZGVyX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWxpbmtfX19pWWVGa1wiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWhvdmVyXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0taG92ZXJfX180eVJKUFwiLFxuICBcImJvcmRlcl9fY29sb3ItLWxpbmstLWRpc2FibGVkXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyX19jb2xvci0tbGluay0tZGlzYWJsZWRfX18wazlkQlwiLFxuICBcImJvcmRlcl9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJfX2NvbG9yLS1jb2RlX19fOE9zRmlcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1ob3ZlclwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWhvdmVyX19fWjVzNWRcIixcbiAgXCJib3JkZXJfX2NvbG9yLS1jb2RlLS1kaXNhYmxlZFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlcl9fY29sb3ItLWNvZGUtLWRpc2FibGVkX19fdURRWk1cIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS16ZXJvXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0temVyb19fX1ZLUnEtXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0teHhzX19fOHppN1RcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhzX19fUk5FSzJcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tc19fX2FWbjFXXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLW1fX19CNjE0alwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS1sX19fLW9lUFBcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLXhsX19fWkpjNklcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS14eGxfX19NbnJIelwiLFxuICBcImJvcmRlclRvcF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fd2lkdGgtLTN4bF9fXzV4Sy0tXCIsXG4gIFwiYm9yZGVyVG9wX193aWR0aC0tNHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX193aWR0aC0tNHhsX19fcEVEdGNcIixcbiAgXCJib3JkZXJUb3BfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX3dpZHRoLS01eGxfX19NRnZmaFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1pbmhlcml0X19fQ3IxbmFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS13aGl0ZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdoaXRlX19fdS11UWJcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXRyYW5zcGFyZW50X19fUHNNbXhcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwMF9fX1djOXRMXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTgwX19fZUhqekZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NjBfX190U0F0ZVwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXk0MF9fX0hpcmdmXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTMwX19fQkJyQlFcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5MjVfX19VSFZaWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWdyZXkyMF9fXzFsdXBQXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tZ3JleTEwX19fRTJHZlRcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5NzBfX19EYkMyR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fa0I5LXZcIixcbiAgXCJib3JkZXJUb3BfX2NvbG9yLS1wcmltYXJ5XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tcHJpbWFyeV9fXzUxMWprXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NfX183OS11alwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLW5vdGljZV9fXy1kT0QwXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdfX19UMzVrWFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tY3JpdGljYWxfX19zLXF2a1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0tc3VjY2Vzc1RpbnRfX19QYTBOR1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLXdhcm5pbmdUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyVG9wX19jb2xvci0td2FybmluZ1RpbnRfX18yZVVRVFwiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWNyaXRpY2FsVGludF9fX0hKQW8yXCIsXG4gIFwiYm9yZGVyVG9wX19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclRvcF9fY29sb3ItLWxpbmtfX19LWUZHS1wiLFxuICBcImJvcmRlclRvcF9fY29sb3ItLWNvZGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJUb3BfX2NvbG9yLS1jb2RlX19fdktPS3dcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXplcm9fX19ybERJblwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHhzXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14eHNfX18tejc5YVwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXhzX19fd1pWaGpcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXNfX19NdFlUNlwiLFxuICBcImJvcmRlclJpZ2h0X193aWR0aC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X193aWR0aC0tbV9fX1NEOTd3XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS1sX19fcVNJMEVcIixcbiAgXCJib3JkZXJSaWdodF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX3dpZHRoLS14bF9fXzA1bjAwXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS14eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLXh4bF9fXy1hRXd2XCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTN4bF9fX0R1MFJvXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTR4bF9fXzJaQ1hrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX3dpZHRoLS01eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fd2lkdGgtLTV4bF9fX1NwNDhrXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1pbmhlcml0X19fOXlQZUlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13aGl0ZV9fX2hJT0JkXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS10cmFuc3BhcmVudFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tdHJhbnNwYXJlbnRfX19veElOSlwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tZ3JleTEwMF9fX2FhU25hXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk4MF9fXzVQVDVqXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk2MF9fX29OVy1VXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk0MF9fXzJKd2k5XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkzMF9fX1Q2aHR4XCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyNV9fX1FiRlVKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkyMF9fX2VzTVFNXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXkxMF9fX1owUXpmXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5NzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWdyZXk3MF9fX3RrekFKXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19fajQ1VU5cIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXByaW1hcnlfX19ISWsyQVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc19fX1JJd2FIXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLW5vdGljZV9fX3ZVTGFUXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS13YXJuaW5nX19fWTJpUGlcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmlnaHRfX2NvbG9yLS1jcml0aWNhbF9fX1htNnRRXCIsXG4gIFwiYm9yZGVyUmlnaHRfX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tc3VjY2Vzc1RpbnRfX19tMW52WVwiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLXdhcm5pbmdUaW50X19fbi1oeEZcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY3JpdGljYWxUaW50X19fNFZKTjhcIixcbiAgXCJib3JkZXJSaWdodF9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSaWdodF9fY29sb3ItLWxpbmtfX19IMnJlM1wiLFxuICBcImJvcmRlclJpZ2h0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJpZ2h0X19jb2xvci0tY29kZV9fX1VDZE0wXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXplcm9fX19QbEFCTFwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXh4c19fX1pGbS1VXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14c19fX2hEelNzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLXNfX19JV3QtdVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS1tX19fZjFyLXNcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tbF9fXzBIdmwxXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS14bF9fX3NTUnRzXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0teHhsX19fTnVCZ0ZcIixcbiAgXCJib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX3dpZHRoLS0zeGxfX19HakxZVVwiLFxuICBcImJvcmRlckJvdHRvbV9fd2lkdGgtLTR4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fd2lkdGgtLTR4bF9fX0J2SldQXCIsXG4gIFwiYm9yZGVyQm90dG9tX193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX193aWR0aC0tNXhsX19fckNlREJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1pbmhlcml0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0taW5oZXJpdF9fXzczZHFWXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0td2hpdGVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13aGl0ZV9fX0RabWo2XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS10cmFuc3BhcmVudF9fX3FrTmdGXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTEwMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMDBfX19YMnY3eFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXk4MF9fX3RuTWo1XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTYwX19fVU9XMG5cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5NDBfX19jN3VjMFwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkzMF9fX1k4NUM0XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTI1X19fa3YyTm1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5MjBfX192Ty1tSlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWdyZXkxMF9fX0ZhLWh5XCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTcwX19faC1Da1ZcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fX2lyeG9IXCIsXG4gIFwiYm9yZGVyQm90dG9tX19jb2xvci0tcHJpbWFyeVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXByaW1hcnlfX19KLXI1SlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzX19fZnhadlJcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1ub3RpY2VfX19JSUE1UlwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nX19fbHNaRy1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLWNyaXRpY2FsX19fQjdMNS1cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1zdWNjZXNzVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fQXN2dGNcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS13YXJuaW5nVGludFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckJvdHRvbV9fY29sb3ItLXdhcm5pbmdUaW50X19fNE9QZk9cIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1jcml0aWNhbFRpbnRfX194MlVMUVwiLFxuICBcImJvcmRlckJvdHRvbV9fY29sb3ItLWxpbmtcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJCb3R0b21fX2NvbG9yLS1saW5rX19fUjJYRHVcIixcbiAgXCJib3JkZXJCb3R0b21fX2NvbG9yLS1jb2RlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyQm90dG9tX19jb2xvci0tY29kZV9fX0VyOWhiXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0temVyb19fXzEtRk0tXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXh4c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14eHNfX19vakFhcFwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS14c1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS14c19fX3oyWElGXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tc19fX0RxWGJjXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbV9fXzRqUHU1XCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tbF9fX2xQYVJLXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXhsX19fTWMtLVJcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0teHhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLXh4bF9fX0tYT1JaXCIsXG4gIFwiYm9yZGVyTGVmdF9fd2lkdGgtLTN4bFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX3dpZHRoLS0zeGxfX180ZllJRVwiLFxuICBcImJvcmRlckxlZnRfX3dpZHRoLS00eGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X193aWR0aC0tNHhsX19fY2RVbFdcIixcbiAgXCJib3JkZXJMZWZ0X193aWR0aC0tNXhsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fd2lkdGgtLTV4bF9fXzdsOUgwXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWluaGVyaXRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0taW5oZXJpdF9fX3FkNGtEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdoaXRlX19fLXJ6czdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tdHJhbnNwYXJlbnRfX191VVVFeFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTAwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkxMDBfX19RRGJWMlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5ODBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwX19fN2hWeThcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTYwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk2MF9fX3E5VHMyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk0MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5NDBfX195SXIwSlwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MzBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTMwX19faXRVVXNcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTI1XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyNV9fX3o5RWdEXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXkyMFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ncmV5MjBfX19IcXJKblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1ncmV5MTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTEwX19feXRaUE5cIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tZ3JleTcwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk3MF9fX0VveVZXXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLWdyZXk4MEFscGhhODVcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tZ3JleTgwQWxwaGE4NV9fXzJHSVcyXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXByaW1hcnlcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tcHJpbWFyeV9fX0lOQzh5XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tc3VjY2Vzc19fXzEyS2l1XCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLW5vdGljZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1ub3RpY2VfX19taEpBblwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS13YXJuaW5nXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXdhcm5pbmdfX191VjV0V1wiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbF9fX0E2SmlPXCIsXG4gIFwiYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyTGVmdF9fY29sb3ItLXN1Y2Nlc3NUaW50X19fZ09yWWpcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0td2FybmluZ1RpbnRfX19ON1VjVFwiLFxuICBcImJvcmRlckxlZnRfX2NvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJMZWZ0X19jb2xvci0tY3JpdGljYWxUaW50X19fYS1mYUdcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tbGlua1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1saW5rX19fbXdSS3dcIixcbiAgXCJib3JkZXJMZWZ0X19jb2xvci0tY29kZVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlckxlZnRfX2NvbG9yLS1jb2RlX19fdUpXRkhcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS16ZXJvX19fZGxzdFZcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tc1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1zX19fdm81ZWxcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS1tX19fR0lFY3RcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tbWxfX19tRWNEdlwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWxfX19yZy1EMFwiLFxuICBcImJvcmRlclJhZGl1c1RvcFJpZ2h0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcFJpZ2h0LS01MF9fX1hsbEdzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wUmlnaHQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BSaWdodC0tZnVsbF9fXzVaSXY4XCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0temVyb19fX084ZEUzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tc19fX254THRMXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbV9fX1NsNVJSXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLW1sX19fQW9RMGJcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1sX19fNTJKb2xcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21SaWdodC0tNTBfX183LXdPR1wiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbVJpZ2h0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLWZ1bGxfX19MQmFQNlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLXplcm9cIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS16ZXJvX19fb1FCZG1cIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1zXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tc19fX3pGSUwzXCIsXG4gIFwiYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbVwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1fX19LTlNjVFwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLW1sXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tbWxfX192dDd4MlwiLFxuICBcImJvcmRlclJhZGl1c0JvdHRvbUxlZnQtLWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1sX19fazhwaWtcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS01MFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c0JvdHRvbUxlZnQtLTUwX19fZjJYVHVcIixcbiAgXCJib3JkZXJSYWRpdXNCb3R0b21MZWZ0LS1mdWxsXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tZnVsbF9fX2VIajZzXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0temVyb1wiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLXplcm9fX19QMVl0d1wiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLXNcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1zX19fSC1sWGVcIixcbiAgXCJib3JkZXJSYWRpdXNUb3BMZWZ0LS1tXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tbV9fXzNMUlIwXCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbWxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1tbF9fX2lndjB3XCIsXG4gIFwiYm9yZGVyUmFkaXVzVG9wTGVmdC0tbFwiOiBcImJvcmRlci1tb2R1bGVfX2JvcmRlclJhZGl1c1RvcExlZnQtLWxfX18zczJDSlwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLTUwXCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyUmFkaXVzVG9wTGVmdC0tNTBfX193Tll3UVwiLFxuICBcImJvcmRlclJhZGl1c1RvcExlZnQtLWZ1bGxcIjogXCJib3JkZXItbW9kdWxlX19ib3JkZXJSYWRpdXNUb3BMZWZ0LS1mdWxsX19fQ2Z6LVJcIixcbiAgXCJib3JkZXItLWV4Y2VwdC1sYXN0XCI6IFwiYm9yZGVyLW1vZHVsZV9fYm9yZGVyLS1leGNlcHQtbGFzdF9fXzIyWXNCXCJcbn07IiwgImltcG9ydCBib3JkZXJTdHlsZXMgZnJvbSBcIi4vYm9yZGVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IEJvcmRlclJhZGl1c1NpemUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvcm5lclN0eWxlcyB7XG4gIHJhZGl1cz86IEJvcmRlclJhZGl1c1NpemUgfCBib29sZWFuO1xuICByYWRpdXNUb3BSaWdodD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c0JvdHRvbVJpZ2h0PzogQm9yZGVyUmFkaXVzU2l6ZTtcbiAgcmFkaXVzQm90dG9tTGVmdD86IEJvcmRlclJhZGl1c1NpemU7XG4gIHJhZGl1c1RvcExlZnQ/OiBCb3JkZXJSYWRpdXNTaXplO1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q29ybmVyU3R5bGVzID0gKHN0eWxlczogQ29ybmVyU3R5bGVzKSA9PiB7XG4gIGNvbnN0IHsgcmFkaXVzLCByYWRpdXNUb3BSaWdodCwgcmFkaXVzQm90dG9tUmlnaHQsIHJhZGl1c0JvdHRvbUxlZnQsIHJhZGl1c1RvcExlZnQgfSA9IHN0eWxlcztcblxuICBpZiAocmFkaXVzKSB7XG4gICAgY29uc3QgYm9yZGVyUmFkaXVzU2l6ZSA9IHJhZGl1cyA9PT0gdHJ1ZSA/IFwic1wiIDogcmFkaXVzO1xuXG4gICAgcmV0dXJuIGJvcmRlclJhZGl1c1NpemUgPyBib3JkZXJTdHlsZXNbYGJvcmRlcl9fcmFkaXVzLS0ke2JvcmRlclJhZGl1c1NpemV9YF0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4gW1xuICAgIHJhZGl1c1RvcFJpZ2h0ID8gYm9yZGVyU3R5bGVzW2Bib3JkZXJSYWRpdXNUb3BSaWdodC0tJHtyYWRpdXNUb3BSaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICByYWRpdXNCb3R0b21SaWdodCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tUmlnaHQtLSR7cmFkaXVzQm90dG9tUmlnaHR9YF0gOiB1bmRlZmluZWQsXG4gICAgcmFkaXVzQm90dG9tTGVmdCA/IGJvcmRlclN0eWxlc1tgYm9yZGVyUmFkaXVzQm90dG9tTGVmdC0tJHtyYWRpdXNCb3R0b21MZWZ0fWBdIDogdW5kZWZpbmVkLFxuICAgIHJhZGl1c1RvcExlZnQgPyBib3JkZXJTdHlsZXNbYGJvcmRlclJhZGl1c1RvcExlZnQtLSR7cmFkaXVzVG9wTGVmdH1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG4iLCAiaW1wb3J0IGJvcmRlclN0eWxlcyBmcm9tIFwiLi9ib3JkZXIubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgQm9yZGVyU2lkZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7IGNhcGl0YWxpemUgYXMgbG9kYXNoQ2FwaXRhbGl6ZSB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTaWRlU3R5bGVzIHtcbiAgdG9wPzogQm9yZGVyU2lkZTtcbiAgcmlnaHQ/OiBCb3JkZXJTaWRlO1xuICBib3R0b20/OiBCb3JkZXJTaWRlO1xuICBsZWZ0PzogQm9yZGVyU2lkZTtcbn1cblxuZXhwb3J0IGNvbnN0IGdldFNpZGVTdHlsZXMgPSAoc2lkZXM6IFNpZGVTdHlsZXMpID0+IFtcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwidG9wXCIsIHNpZGVzKSxcbiAgLi4uZ2V0U3BlY2lmaWNTaWRlU3R5bGVzKFwicmlnaHRcIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJib3R0b21cIiwgc2lkZXMpLFxuICAuLi5nZXRTcGVjaWZpY1NpZGVTdHlsZXMoXCJsZWZ0XCIsIHNpZGVzKSxcbl07XG5cbmNvbnN0IGdldFNwZWNpZmljU2lkZVN0eWxlcyA9IChzaWRlOiBrZXlvZiBTaWRlU3R5bGVzLCBzaWRlczogU2lkZVN0eWxlcykgPT4ge1xuICBjb25zdCB7IHdpZHRoLCBjb2xvciB9ID0gc2lkZXNbc2lkZV0gPz8ge307XG4gIGNvbnN0IHNpZGVOYW1lID0gY2FwaXRhbGl6ZShzaWRlKTtcblxuICByZXR1cm4gW1xuICAgIHdpZHRoID8gYm9yZGVyU3R5bGVzW2Bib3JkZXIke3NpZGVOYW1lfV9fd2lkdGgtLSR7d2lkdGh9YF0gOiB1bmRlZmluZWQsXG4gICAgY29sb3IgPyBib3JkZXJTdHlsZXNbYGJvcmRlciR7c2lkZU5hbWV9X19jb2xvci0tJHtjb2xvcn1gXSA6IHVuZGVmaW5lZCxcbiAgXTtcbn07XG5cbmNvbnN0IGNhcGl0YWxpemUgPSA8VCBleHRlbmRzIHN0cmluZz4odGFyZ2V0OiBUKSA9PiBsb2Rhc2hDYXBpdGFsaXplKHRhcmdldCkgYXMgQ2FwaXRhbGl6ZTxUPjtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGZvbnRTdHlsZXMgZnJvbSBcIi4vZm9udC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBGb250U2l6ZSA9IFwieHhzXCIgfCBcInhzXCIgfCBcInNcIiB8IFwibVwiIHwgXCJsXCIgfCBcInhsXCIgfCBcInh4bFwiIHwgXCIzeGxcIiB8IFwiNHhsXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRCb2xkID0gXCI2MDBcIjtcblxuZXhwb3J0IHR5cGUgRm9udExpbmVIZWlnaHQgPSBcIm5vbmVcIiB8IFwidGlnaHRcIiB8IFwibm9ybWFsXCIgfCBcImxvb3NlXCI7XG5cbmV4cG9ydCB0eXBlIEZvbnRQbHVnaW5Qcm9wcyA9IHtcbiAgJGZvbnQ/OlxuICAgIHwgYm9vbGVhblxuICAgIHwge1xuICAgICAgICBzaXplPzogRm9udFNpemU7XG4gICAgICAgIGl0YWxpYz86IGJvb2xlYW47XG4gICAgICAgIGJvbGQ/OiBib29sZWFuIHwgRm9udEJvbGQ7XG4gICAgICAgIGxpbmVIZWlnaHQ/OiBGb250TGluZUhlaWdodDtcbiAgICAgICAgZm9yY2VXcmFwPzogYm9vbGVhbjtcbiAgICAgICAgbm9XcmFwPzogYm9vbGVhbjtcbiAgICAgICAgdXBwZXJjYXNlPzogYm9vbGVhbjtcbiAgICAgICAgdW5kZXJsaW5lPzogYm9vbGVhbjtcbiAgICAgICAgdGV4dE92ZXJmbG93PzogXCJjbGlwXCIgfCBcImVsbGlwc2lzXCIgfCBcImRlZmF1bHRcIjtcbiAgICAgIH07XG59O1xuXG5leHBvcnQgY29uc3QgZm9udFBsdWdpbiA9IGdldFBsdWdpbjxGb250UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGlmICghcHJvcHMuJGZvbnQpIHtcbiAgICByZXR1cm4geyAkZm9udDogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB7XG4gICAgc2l6ZSA9IHVuZGVmaW5lZCxcbiAgICBib2xkID0gZmFsc2UsXG4gICAgbGluZUhlaWdodCA9IHVuZGVmaW5lZCxcbiAgICBub1dyYXAgPSBmYWxzZSxcbiAgICB1cHBlcmNhc2UgPSBmYWxzZSxcbiAgICBpdGFsaWMgPSBmYWxzZSxcbiAgICBmb3JjZVdyYXAgPSBmYWxzZSxcbiAgICB1bmRlcmxpbmUgPSBmYWxzZSxcbiAgICB0ZXh0T3ZlcmZsb3cgPSBcImRlZmF1bHRcIixcbiAgfSA9IHByb3BzLiRmb250ID09PSB0cnVlID8ge30gOiBwcm9wcy4kZm9udDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgICBzaXplID8gZm9udFN0eWxlc1tgZm9udF9fc2l6ZS0tJHtzaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgYm9sZCA9PT0gdHJ1ZSA/IGZvbnRTdHlsZXNbXCJmb250LS1ib2xkXCJdIDogYm9sZCA/IGZvbnRTdHlsZXNbYGZvbnQtLXdlaWdodC0ke2JvbGR9YF0gOiB1bmRlZmluZWQsXG4gICAgICBsaW5lSGVpZ2h0ID8gZm9udFN0eWxlc1tgZm9udF9fbGluZS1oZWlnaHQtLSR7bGluZUhlaWdodH1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIHRleHRPdmVyZmxvdyA9PT0gXCJkZWZhdWx0XCIgPyB1bmRlZmluZWQgOiBmb250U3R5bGVzW2Bmb250LS10ZXh0LW92ZXJmbG93LS0ke3RleHRPdmVyZmxvd31gXSxcbiAgICAgIHtcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS1uby13cmFwXCJdXTogbm9XcmFwLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLWZvcmNlLXdyYXBcIl1dOiBmb3JjZVdyYXAsXG4gICAgICAgIFtmb250U3R5bGVzW1wiZm9udC0taXRhbGljXCJdXTogaXRhbGljLFxuICAgICAgICBbZm9udFN0eWxlc1tcImZvbnQtLXVwcGVyY2FzZVwiXV06IHVwcGVyY2FzZSxcbiAgICAgICAgW2ZvbnRTdHlsZXNbXCJmb250LS11bmRlcmxpbmVcIl1dOiB1bmRlcmxpbmUsXG4gICAgICB9LFxuICAgIF0sXG4gICAgJGZvbnQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2ZvbnQvZm9udC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImZvbnRfX3NpemUtLXh4c1wiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14eHNfX19LSjJRLVwiLFxuICBcImZvbnRfX3NpemUtLXhzXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXhzX19feEVhVTlcIixcbiAgXCJmb250X19zaXplLS1zXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXNfX19UYm5NbFwiLFxuICBcImZvbnRfX3NpemUtLW1cIjogXCJmb250LW1vZHVsZV9fZm9udF9fc2l6ZS0tbV9fX2ZESkFqXCIsXG4gIFwiZm9udF9fc2l6ZS0tbFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS1sX19fdUtjdWtcIixcbiAgXCJmb250X19zaXplLS14bFwiOiBcImZvbnQtbW9kdWxlX19mb250X19zaXplLS14bF9fX1JlaG9RXCIsXG4gIFwiZm9udF9fc2l6ZS0teHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLXh4bF9fX0Nnb0tQXCIsXG4gIFwiZm9udF9fc2l6ZS0tM3hsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTN4bF9fX3NDSWV6XCIsXG4gIFwiZm9udF9fc2l6ZS0tNHhsXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX3NpemUtLTR4bF9fX0E1a3NlXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLW5vbmVcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vbmVfX18xc0k5S1wiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS10aWdodFwiOiBcImZvbnQtbW9kdWxlX19mb250X19saW5lLWhlaWdodC0tdGlnaHRfX19yLUVCOVwiLFxuICBcImZvbnRfX2xpbmUtaGVpZ2h0LS1ub3JtYWxcIjogXCJmb250LW1vZHVsZV9fZm9udF9fbGluZS1oZWlnaHQtLW5vcm1hbF9fX3JKNFZOXCIsXG4gIFwiZm9udF9fbGluZS1oZWlnaHQtLWxvb3NlXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnRfX2xpbmUtaGVpZ2h0LS1sb29zZV9fX2RwelMtXCIsXG4gIFwiZm9udC0tYm9sZFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1ib2xkX19fYmplLWJcIixcbiAgXCJmb250LS13ZWlnaHQtNjAwXCI6IFwiZm9udC1tb2R1bGVfX2ZvbnQtLXdlaWdodC02MDBfX19FZ2R6bVwiLFxuICBcImZvbnQtLW5vLXdyYXBcIjogXCJmb250LW1vZHVsZV9fZm9udC0tbm8td3JhcF9fX3FiUlJPXCIsXG4gIFwiZm9udC0tZm9yY2Utd3JhcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS1mb3JjZS13cmFwX19fT0dDRnpcIixcbiAgXCJmb250LS11cHBlcmNhc2VcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdXBwZXJjYXNlX19fdlFYbW5cIixcbiAgXCJmb250LS1pdGFsaWNcIjogXCJmb250LW1vZHVsZV9fZm9udC0taXRhbGljX19fSkg0VFpcIixcbiAgXCJmb250LS11bmRlcmxpbmVcIjogXCJmb250LW1vZHVsZV9fZm9udC0tdW5kZXJsaW5lX19fZDRvbkxcIixcbiAgXCJmb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc1wiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1lbGxpcHNpc19fX0hxZlgtXCIsXG4gIFwiZm9udC0tdGV4dC1vdmVyZmxvdy0tY2xpcFwiOiBcImZvbnQtbW9kdWxlX19mb250LS10ZXh0LW92ZXJmbG93LS1jbGlwX19fOTZ4QjlcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYm94LXNoYWRvdy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBCb3hTaGFkb3dQbHVnaW5Qcm9wcyA9IHtcbiAgJGJveFNoYWRvdz86IGJvb2xlYW4gfCBcImVsZXZhdGVkXCIgfCBcInN1YnRsZVwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGJveFNoYWRvd1BsdWdpbiA9IGdldFBsdWdpbjxCb3hTaGFkb3dQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kYm94U2hhZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICRib3hTaGFkb3c6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdmFyaWFudCA9IHByb3BzLiRib3hTaGFkb3cgPT09IHRydWUgPyBcImVsZXZhdGVkXCIgOiBwcm9wcy4kYm94U2hhZG93O1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHN0eWxlc1tgYm94LXNoYWRvdy0tJHt2YXJpYW50fWBdXSxcbiAgICAkYm94U2hhZG93OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ib3gtc2hhZG93L2JveC1zaGFkb3cubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJib3gtc2hhZG93LS1lbGV2YXRlZFwiOiBcImJveC1zaGFkb3ctbW9kdWxlX19ib3gtc2hhZG93LS1lbGV2YXRlZF9fX2phaDdmXCIsXG4gIFwiYm94LXNoYWRvdy0tc3VidGxlXCI6IFwiYm94LXNoYWRvdy1tb2R1bGVfX2JveC1zaGFkb3ctLXN1YnRsZV9fX1ZvNnhNXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzID0geyAkbm9Qb2ludGVyRXZlbnRzPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3Qgbm9Qb2ludGVyRXZlbnRzUGx1Z2luID0gZ2V0UGx1Z2luPE5vUG9pbnRlckV2ZW50c1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHsgW3N0eWxlc1tcIm5vLXBvaW50ZXItZXZlbnRzXCJdXTogcHJvcHMuJG5vUG9pbnRlckV2ZW50cyB9XSxcbiAgJG5vUG9pbnRlckV2ZW50czogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibm8tcG9pbnRlci1ldmVudHNcIjogXCJuby1wb2ludGVyLWV2ZW50cy1tb2R1bGVfX25vLXBvaW50ZXItZXZlbnRzX19fN21GMGJcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcblxuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBpc0RlZmluZWQgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU2ltcGxpZmllZCB0eXBlIHNpbmNlIFJlZkNhbGxiYWNrIGZyb20gXCJyZWFjdFwiIGNhdXNlcyBVTkRFRklORURfVk9JRF9PTkxZIGVycm9yXG4vLyBiaW9tZS1pZ25vcmUgbGludC9zdXNwaWNpb3VzL25vQ29uZnVzaW5nVm9pZFR5cGU6IHZvaWQgdHlwaW5nIHJlcXVpcmVkXG50eXBlIFJlZkNhbGxiYWNrPFQ+ID0gKGluc3RhbmNlOiBUIHwgbnVsbCkgPT4gdW5kZWZpbmVkIHwgdm9pZCB8ICgoKSA9PiBhbnkpO1xuXG5leHBvcnQgdHlwZSBSZWZMaWtlPFQ+ID0gUmVmQ2FsbGJhY2s8VD4gfCBSZWFjdC5NdXRhYmxlUmVmT2JqZWN0PFQgfCBudWxsPiB8IFJlYWN0LlJlZk9iamVjdDxUPiB8IHVuZGVmaW5lZDtcblxuZXhwb3J0IHR5cGUgJFJlZlByb3A8VD4gPSBSZWZMaWtlPFQ+IHwgJFJlZlByb3A8VD5bXTtcblxuZXhwb3J0IHR5cGUgUmVmUGx1Z2luUHJvcHM8VD4gPSB7XG4gICRyZWY/OiAkUmVmUHJvcDxUPjtcbiAgcmVmPzogUmVmTGlrZTxUPjtcbn07XG5cbmV4cG9ydCB0eXBlIFJlZlBsdWdpbjxUPiA9IFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPiwgdW5rbm93bj47XG5cbmV4cG9ydCBmdW5jdGlvbiByZWZQbHVnaW48VCA9IEhUTUxFbGVtZW50PigpIHtcbiAgcmV0dXJuIGdldFBsdWdpbjxSZWZQbHVnaW5Qcm9wczxUPj4oKHByb3BzKSA9PiB7XG4gICAgY29uc3QgeyAkcmVmIH0gPSBwcm9wcztcbiAgICBjb25zdCBwcmV2UmVmcyA9IHVzZVJlZihuZXcgU2V0PFJlZkxpa2U8VD4+KCkpO1xuICAgIGNvbnN0IGVsZW1lbnRSZWYgPSB1c2VSZWY8VCB8IG51bGw+KG51bGwpO1xuICAgIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IFdlIGRvIG5vdCB3YW50IHRvIHJ1biB0aGlzIG11bHRpcGxlIHRpbWVzXG4gICAgY29uc3QgcmVmID0gdXNlQ2FsbGJhY2soKGN1cnJlbnQ6IFQpID0+IHtcbiAgICAgIGNvbnN0IGZpcnN0UmVmcyA9IGZsYXR0ZW5SZWZzKCRyZWYpO1xuXG4gICAgICBmaXJzdFJlZnMuZm9yRWFjaChoYW5kbGVSZWZzRm9yKGN1cnJlbnQpKTtcbiAgICAgIHByZXZSZWZzLmN1cnJlbnQgPSBmaXJzdFJlZnM7XG4gICAgICBlbGVtZW50UmVmLmN1cnJlbnQgPSBjdXJyZW50O1xuXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBwcmV2UmVmcy5jdXJyZW50LmZvckVhY2goaGFuZGxlUmVmc0ZvcjxUPihudWxsKSk7XG4gICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBmaXJzdFJlbmRlciA9IHVzZVJlZih0cnVlKTtcblxuICAgIGlmICghZmlyc3RSZW5kZXIuY3VycmVudCkge1xuICAgICAgY29uc3QgY3VycmVudFJlZnMgPSBmbGF0dGVuUmVmcygkcmVmKTtcbiAgICAgIGNvbnN0IGFkZGVkUmVmcyA9IGN1cnJlbnRSZWZzLmRpZmZlcmVuY2UocHJldlJlZnMuY3VycmVudCk7XG4gICAgICBjb25zdCByZW1vdmVkUmVmcyA9IHByZXZSZWZzLmN1cnJlbnQuZGlmZmVyZW5jZShjdXJyZW50UmVmcyk7XG5cbiAgICAgIGFkZGVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4oZWxlbWVudFJlZi5jdXJyZW50KSk7XG4gICAgICByZW1vdmVkUmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3I8VD4obnVsbCkpO1xuICAgICAgcHJldlJlZnMuY3VycmVudCA9IGN1cnJlbnRSZWZzO1xuICAgIH1cblxuICAgIGZpcnN0UmVuZGVyLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJldHVybiB7XG4gICAgICByZWYsXG4gICAgICAkcmVmOiB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSk7XG59XG5cbmNvbnN0IGZsYXR0ZW5SZWZzID0gPFQsPihyZWZzOiAkUmVmUHJvcDxUPik6IFNldDxSZWZMaWtlPFQ+PiA9PlxuICBuZXcgU2V0KChbcmVmc10uZmxhdChJbmZpbml0eSBhcyAxKSBhcyBBcnJheTxOb25OdWxsYWJsZTxSZWZMaWtlPFQ+Pj4pLmZpbHRlcihpc0RlZmluZWQpKTtcblxuY29uc3QgaGFuZGxlUmVmc0ZvciA9XG4gIDxULD4odmFsdWU6IFQgfCBudWxsKSA9PlxuICAocmVmczogJFJlZlByb3A8VD4pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZWZzKSkge1xuICAgICAgcmVmcy5mb3JFYWNoKGhhbmRsZVJlZnNGb3IodmFsdWUpKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWZzID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIHJlZnModmFsdWUpO1xuICAgIH0gZWxzZSBpZiAocmVmcykge1xuICAgICAgKHJlZnMgYXMgTXV0YWJsZVJlZk9iamVjdDxUIHwgbnVsbD4pLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICB9XG4gIH07XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjc3NOYW1lcywgdHlwZSBJQ2xhc3NOYW1lIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuZXhwb3J0IHR5cGUgQ2xhc3NOYW1lUGx1Z2luUHJvcHMgPSB7ICRjbGFzc05hbWU/OiBJQ2xhc3NOYW1lOyBjbGFzc05hbWU/OiBzdHJpbmcgfTtcblxubGV0IHNob3dDbHV0dGVyID0gdHJ1ZTtcblxuZXhwb3J0IGNvbnN0IGNsYXNzTmFtZVBsdWdpbiA9IGdldFBsdWdpbjxDbGFzc05hbWVQbHVnaW5Qcm9wcz4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGNzc05hbWVzKHByb3BzLmNsYXNzTmFtZSwgcHJvcHMuJGNsYXNzTmFtZSk7XG5cbiAgcmV0dXJuIHtcbiAgICAuLi4oY2xhc3NOYW1lID8geyBjbGFzc05hbWU6IHNob3dDbHV0dGVyID8gY2xhc3NOYW1lIDogcmVtb3ZlQ2x1dHRlcihjbGFzc05hbWUpIH0gOiB7fSksXG4gICAgJGNsYXNzTmFtZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmNvbnN0IHJlbW92ZUNsdXR0ZXIgPSAoY2xhc3NOYW1lOiBzdHJpbmcpID0+XG4gIGNsYXNzTmFtZS5yZXBsYWNlKC9fX18uKj8oPz1cXHN8JCkvZywgXCJcIikucmVwbGFjZSgvXFxiW2EtekEtWjAtOS1dKy1tb2R1bGVfXy9nLCBcIlwiKTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyA9ICgpID0+IHtcbiAgc2hvd0NsdXR0ZXIgPSBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBzaG93Q3NzTW9kdWxlQ2x1dHRlckZvclByb2R1Y3Rpb24gPSAoKSA9PiB7XG4gIHNob3dDbHV0dGVyID0gdHJ1ZTtcbn07XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCByZWxhdGl2ZVN0eWxlcyBmcm9tIFwiLi9yZWxhdGl2ZS5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBSZWxhdGl2ZVBsdWdpblByb3BzID0geyAkcmVsYXRpdmU/OiBib29sZWFuOyAkZml4ZWQ/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCByZWxhdGl2ZVBsdWdpbiA9IGdldFBsdWdpbjxSZWxhdGl2ZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW1xuICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgeyBbcmVsYXRpdmVTdHlsZXMucmVsYXRpdmVdOiAhIXByb3BzLiRyZWxhdGl2ZSwgW3JlbGF0aXZlU3R5bGVzLmZpeGVkXTogISFwcm9wcy4kZml4ZWQgfSxcbiAgXSxcbiAgJGZpeGVkOiB1bmRlZmluZWQsXG4gICRyZWxhdGl2ZTogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3JlbGF0aXZlL3JlbGF0aXZlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwicmVsYXRpdmVcIjogXCJyZWxhdGl2ZS1tb2R1bGVfX3JlbGF0aXZlX19fa3dNNXFcIixcbiAgXCJmaXhlZFwiOiBcInJlbGF0aXZlLW1vZHVsZV9fZml4ZWRfX19Dc1hIRFwiXG59OyIsICJleHBvcnQgdHlwZSBEcmFnZ2FibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyYWdnYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIGl0ZW06IFQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcm9wcGFibGVQbHVnaW5Qcm9wczxUID0gYW55PiA9IHtcbiAgJGRyb3BwYWJsZT86IHtcbiAgICBjb250ZXh0OiBEcmFnZ2FibGVDb250ZXh0PFQ+O1xuICAgIG9uRHJvcDogKGl0ZW06IFQpID0+IHZvaWQ7XG4gIH07XG59O1xuXG5leHBvcnQgdHlwZSBEcmFnZ2FibGVDb250ZXh0PERyYWdnZWRJdGVtPiA9IHtcbiAgZHJhZ2dhYmxlOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IE5vbk51bGxhYmxlPERyYWdnYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltgJGRyYWdnYWJsZWBdPjtcbiAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+IE5vbk51bGxhYmxlPERyb3BwYWJsZVBsdWdpblByb3BzPERyYWdnZWRJdGVtPltcIiRkcm9wcGFibGVcIl0+O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldERyYWdnYWJsZUNvbnRleHQgPSA8RHJhZ2dlZEl0ZW0+KCk6IERyYWdnYWJsZUNvbnRleHQ8RHJhZ2dlZEl0ZW0+ID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHtcbiAgICBkcmFnZ2FibGU6IChpdGVtOiBEcmFnZ2VkSXRlbSkgPT4gKHtcbiAgICAgIGNvbnRleHQsXG4gICAgICBpdGVtLFxuICAgIH0pLFxuXG4gICAgZHJvcHBhYmxlOiAob25Ecm9wOiAoaXRlbTogRHJhZ2dlZEl0ZW0pID0+IHZvaWQpID0+ICh7XG4gICAgICBjb250ZXh0LFxuICAgICAgb25Ecm9wLFxuICAgIH0pLFxuICB9O1xuXG4gIHJldHVybiBjb250ZXh0O1xufTtcbiIsICJpbXBvcnQgeyBnZXRGZWF0dXJlIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IHsgcmVnaXN0ZXJJbmplY3RhYmxlc0Zyb21Nb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL2ZlYXR1cmUtY29yZVwiO1xuaW1wb3J0IG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMgZnJvbSBcIi4vKiovKi5pbmplY3RhYmxlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCBlbGVtZW50Q29tcG9uZW50RmVhdHVyZSA9IGdldEZlYXR1cmUoe1xuICBpZDogXCJlbGVtZW50LWNvbXBvbmVudFwiLFxuICByZWdpc3RlcjogKGRpKSA9PiByZWdpc3RlckluamVjdGFibGVzRnJvbU1vZHVsZXMoZGksIG1vZHVsZXNXaXRoSW5qZWN0YWJsZXMpLFxuICAvLyBObyBmZWF0dXJlIGRlcGVuZGVuY2llczogYSBkZXNpZ24gc3lzdGVtIGV2ZXJ5b25lIG1heSBpbnN0YWxsIGNhbm5vdCBkcmFnXG4gIC8vIExlbnMgZmVhdHVyZXMgaW50byB0aGUgY2xvc3VyZS4gVGhlIGNsb2NrIHRoZSBob3ZlcmFibGUgcGx1Z2luIG5lZWRzIGlzXG4gIC8vIGxvY2FsLCBhbmQgdGhlIHBsYXRmb3JtIGlzIHJlYWQgZGlyZWN0bHkuXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5cbi8qKlxuICogV2hldGhlciB0aGUga2V5Ym9hcmQgY29udmVudGlvbnMgb2YgbWFjT1MgYXBwbHkuXG4gKlxuICogUmVhZCBmcm9tIHRoZSBicm93c2VyIHJhdGhlciB0aGFuIGZyb20gYHByb2Nlc3NgIG9yIHRoZSB2YXJzIGZlYXR1cmU6IHRoaXMgaXNcbiAqIGEgcmVuZGVyZXItb25seSBkZXNpZ24gc3lzdGVtLCBpdCBtYXkgbm90IGRlcGVuZCBvbiBhIGZlYXR1cmUgcGFja2FnZSwgYW5kXG4gKiBgcHJvY2Vzc2AgaXMgbm90IHRoZXJlIHRvIHJlYWQgb25jZSB0aGUgcmVuZGVyZXIgc3RvcHMgcnVubmluZyB3aXRoIG5vZGVcbiAqIGludGVncmF0aW9uLlxuICovXG5leHBvcnQgY29uc3QgaXNNYWNJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJpcy1tYWNcIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4ge1xuICAgIGNvbnN0IHsgdXNlckFnZW50RGF0YSwgcGxhdGZvcm0sIHVzZXJBZ2VudCB9ID0gbmF2aWdhdG9yIGFzIE5hdmlnYXRvciAmIHtcbiAgICAgIHJlYWRvbmx5IHVzZXJBZ2VudERhdGE/OiB7IHJlYWRvbmx5IHBsYXRmb3JtPzogc3RyaW5nIH07XG4gICAgfTtcblxuICAgIHJldHVybiAvbWFjL2kudGVzdCh1c2VyQWdlbnREYXRhPy5wbGF0Zm9ybSA/PyBwbGF0Zm9ybSA/PyB1c2VyQWdlbnQgPz8gXCJcIik7XG4gIH0sXG59KTtcbiIsICJpbXBvcnQgeyBnZXRJbmplY3RhYmxlMiB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYXRjaGVzIH0gZnJvbSBcImxvZGFzaC9mcFwiO1xuaW1wb3J0IHsgaXNNYWNJbmplY3RhYmxlIH0gZnJvbSBcIi4vaXMtbWFjLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwib24tcmlnaHQtdHJpZ2dlclwiLFxuXG4gIGluc3RhbnRpYXRlOiAoZGkpID0+IHtcbiAgICBjb25zdCBpc01hYyA9IGRpLmluamVjdChpc01hY0luamVjdGFibGUpO1xuXG4gICAgcmV0dXJuICgpID0+IG9uUmlnaHRUcmlnZ2VyRm9yKGlzTWFjKCkgPyBpc01hY29zU2hvcnRjdXQgOiBpc0xpbnV4T3JXaW5kb3dzU2hvcnRjdXQpO1xuICB9LFxufSk7XG5cbmNvbnN0IG9uUmlnaHRUcmlnZ2VyRm9yID1cbiAgPFQ+KGNiOiAoZXZlbnQ6IFJlYWN0LktleWJvYXJkRXZlbnQ8VD4pID0+IGJvb2xlYW4pID0+XG4gIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudDxUPiwgY2FsbGJhY2s6IFJlYWN0LktleWJvYXJkRXZlbnRIYW5kbGVyPFQ+KSA9PiB7XG4gICAgaWYgKGNiKGV2ZW50KSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGNhbGxiYWNrKGV2ZW50KTtcbiAgICB9XG4gIH07XG5cbmNvbnN0IGlzTWFjb3NTaG9ydGN1dCA9IG1hdGNoZXMoe1xuICBzaGlmdEtleTogZmFsc2UsXG4gIGFsdEtleTogZmFsc2UsXG4gIGN0cmxLZXk6IGZhbHNlLFxuICBtZXRhS2V5OiB0cnVlLFxuICBjb2RlOiBcIkVudGVyXCIsXG59KTtcblxuY29uc3QgaXNMaW51eE9yV2luZG93c1Nob3J0Y3V0ID0gbWF0Y2hlcyh7XG4gIHNoaWZ0S2V5OiBmYWxzZSxcbiAgYWx0S2V5OiBmYWxzZSxcbiAgY3RybEtleTogdHJ1ZSxcbiAgbWV0YUtleTogZmFsc2UsXG4gIGNvZGU6IFwiRW50ZXJcIixcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IG1ha2VTdXJlRHJhZ0FuZERyb3BFdmVudHNIYXZlVGltZVRvSGFwcGVuSW5qZWN0YWJsZSA9IGdldEluamVjdGFibGUyKHtcbiAgaWQ6IFwibWFrZS1zdXJlLWRyYWctYW5kLWRyb3AtZXZlbnRzLWhhdmUtdGltZS10by1oYXBwZW5cIixcblxuICBpbnN0YW50aWF0ZTogKCkgPT4gKCkgPT4gKGNhbGxiYWNrOiAoKSA9PiB2b2lkKSA9PiB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjYWxsYmFjaygpO1xuICAgIH0sIDUwKTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB0eXBlIHsgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuXG5leHBvcnQgdHlwZSBOYXZpZ2FibGVFbnRyeSA9IHtcbiAgcmVhZG9ubHkgaXRlbTogdW5rbm93bjtcbiAgcmVhZG9ubHkgb3JkZXJOdW1iZXI6IG51bWJlcjtcbiAgcmVhZG9ubHkgZWxlbWVudDogSFRNTEVsZW1lbnQ7XG59O1xuXG50eXBlIE5hdmlnYWJsZUNvbnRleHQgPSBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8YW55PjtcblxuLyoqXG4gKiBUaGUgbWVtYmVycyBvZiBldmVyeSBrZXlib2FyZC1uYXZpZ2FibGUgY29udGV4dCwgdGhlIG9yZGVyIHRoZSBjb250ZXh0cyBhcHBlYXJlZCBpbiwgYW5kIHdoaWNoXG4gKiBtZW1iZXIgb2YgZWFjaCBoYWQgZm9jdXMuIEZvY3VzIGJlbG9uZ3MgdG8gdGhlIGNvbnRleHQgdGhhdCBhcHBlYXJlZCBsYXN0OyB3aGVuIGl0IGdvZXMgYXdheSwgdGhlXG4gKiBwcmV2aW91cyBvbmUgdGFrZXMgaXQgYmFjayBcdTIwMTQgYXQgdGhlIG1lbWJlciBpdCB3YXMgbGVmdCBvbiwgd2hpY2ggaXMgd2hhdCBtYWtlcyBzdGVwcGluZyBpbnRvXG4gKiBzb21ldGhpbmcgYW5kIGJhY2sgb3V0IG9mIGl0IGxhbmQgd2hlcmUgaXQgc3RhcnRlZCByYXRoZXIgdGhhbiBhdCB0aGUgYmVnaW5uaW5nLlxuICovXG5leHBvcnQgY29uc3Qga2V5Ym9hcmROYXZpZ2F0aW9uU3RhdGVJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJrZXlib2FyZC1uYXZpZ2F0aW9uLXN0YXRlXCIsXG5cbiAgaW5zdGFudGlhdGU6ICgpID0+IHtcbiAgICBjb25zdCBlbnRyaWVzQnlDb250ZXh0ID0gbmV3IE1hcDxOYXZpZ2FibGVDb250ZXh0LCBTZXQ8TmF2aWdhYmxlRW50cnk+PigpO1xuICAgIGNvbnN0IGl0ZW1JbkZvY3VzQnlDb250ZXh0ID0gbmV3IE1hcDxOYXZpZ2FibGVDb250ZXh0LCB1bmtub3duPigpO1xuICAgIGNvbnN0IGNvbnRleHRTdGFjazogTmF2aWdhYmxlQ29udGV4dFtdID0gW107XG5cbiAgICBjb25zdCBlbnRyaWVzT2YgPSAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCkgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBlbnRyaWVzQnlDb250ZXh0LmdldChjb250ZXh0KTtcblxuICAgICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZztcbiAgICAgIH1cblxuICAgICAgY29uc3QgY3JlYXRlZCA9IG5ldyBTZXQ8TmF2aWdhYmxlRW50cnk+KCk7XG5cbiAgICAgIGVudHJpZXNCeUNvbnRleHQuc2V0KGNvbnRleHQsIGNyZWF0ZWQpO1xuXG4gICAgICByZXR1cm4gY3JlYXRlZDtcbiAgICB9O1xuXG4gICAgcmV0dXJuICgpID0+ICh7XG4gICAgICBzb3J0ZWRFbnRyaWVzT2Y6IChjb250ZXh0OiBOYXZpZ2FibGVDb250ZXh0KSA9PlxuICAgICAgICBbLi4uZW50cmllc09mKGNvbnRleHQpXS5zb3J0KChhLCBiKSA9PiBhLm9yZGVyTnVtYmVyIC0gYi5vcmRlck51bWJlciksXG5cbiAgICAgIGNvbnRleHRJbkZvY3VzOiAoKSA9PiBjb250ZXh0U3RhY2suYXQoLTEpLFxuXG4gICAgICBpdGVtSW5Gb2N1c09mOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCkgPT4gaXRlbUluRm9jdXNCeUNvbnRleHQuZ2V0KGNvbnRleHQpLFxuXG4gICAgICBub3RlSXRlbUluRm9jdXM6IChjb250ZXh0OiBOYXZpZ2FibGVDb250ZXh0LCBpdGVtOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGl0ZW1JbkZvY3VzQnlDb250ZXh0LnNldChjb250ZXh0LCBpdGVtKTtcbiAgICAgIH0sXG5cbiAgICAgIHJlZ2lzdGVyOiAoY29udGV4dDogTmF2aWdhYmxlQ29udGV4dCwgZW50cnk6IE5hdmlnYWJsZUVudHJ5KSA9PiB7XG4gICAgICAgIGNvbnN0IGVudHJpZXMgPSBlbnRyaWVzT2YoY29udGV4dCk7XG5cbiAgICAgICAgaWYgKGVudHJpZXMuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgIGNvbnRleHRTdGFjay5wdXNoKGNvbnRleHQpO1xuICAgICAgICB9XG5cbiAgICAgICAgZW50cmllcy5hZGQoZW50cnkpO1xuICAgICAgfSxcblxuICAgICAgZGVyZWdpc3RlcjogKGNvbnRleHQ6IE5hdmlnYWJsZUNvbnRleHQsIGVudHJ5OiBOYXZpZ2FibGVFbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gZW50cmllc09mKGNvbnRleHQpO1xuXG4gICAgICAgIGVudHJpZXMuZGVsZXRlKGVudHJ5KTtcblxuICAgICAgICBpZiAoZW50cmllcy5zaXplID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgaW5kZXhJblN0YWNrID0gY29udGV4dFN0YWNrLmxhc3RJbmRleE9mKGNvbnRleHQpO1xuXG4gICAgICAgICAgaWYgKGluZGV4SW5TdGFjayAhPT0gLTEpIHtcbiAgICAgICAgICAgIGNvbnRleHRTdGFjay5zcGxpY2UoaW5kZXhJblN0YWNrLCAxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBBIGNvbnRleHQgdGhhdCBpcyBnb25lIHJlbWVtYmVycyBub3RoaW5nOiB0aGUgbmV4dCB0aW1lIGl0cyBtZW1iZXJzIGFwcGVhciwgdGhleVxuICAgICAgICAgIC8vIGFwcGVhciBhbmV3LCBhbmQgdGhlIGxvd2VzdCBvcmRlciBudW1iZXIgdGFrZXMgZm9jdXMgYXMgaXQgZGlkIHRoZSBmaXJzdCB0aW1lLlxuICAgICAgICAgIGl0ZW1JbkZvY3VzQnlDb250ZXh0LmRlbGV0ZShjb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldEluamVjdGFibGUyIH0gZnJvbSBcIkBrOHNsZW5zL2luamVjdGFibGVcIjtcbmltcG9ydCB7IGl0ZW1CZWluZ0hvdmVyZWRJbmplY3Rpb25Ub2tlbiB9IGZyb20gXCIuLi8uLi9pdGVtLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBIb3ZlcmFibGVDb250ZXh0IH0gZnJvbSBcIi4uLy4uL2hvdmVyYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb21wdXRlZCB9IGZyb20gXCJtb2J4XCI7XG5cbmV4cG9ydCBjb25zdCBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlID0gZ2V0SW5qZWN0YWJsZTIoe1xuICBpZDogXCJjb250ZXh0LWlzLWJlaW5nLWhvdmVyZWRcIixcbiAgY29uc3VtcHRpb25zOiBbaXRlbUJlaW5nSG92ZXJlZEluamVjdGlvblRva2VuXSxcblxuICBpbnN0YW50aWF0ZTogKGRpKSA9PiB7XG4gICAgY29uc3QgaXRlbUJlaW5nSG92ZXJlZCA9IGRpLmluamVjdChpdGVtQmVpbmdIb3ZlcmVkSW5qZWN0aW9uVG9rZW4pO1xuXG4gICAgcmV0dXJuIChjb250ZXh0OiBIb3ZlcmFibGVDb250ZXh0PE11dGFibGVSZWZPYmplY3Q8YW55Pj4pID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWRJdGVtID0gaXRlbUJlaW5nSG92ZXJlZCgpKGNvbnRleHQpO1xuXG4gICAgICByZXR1cm4gY29tcHV0ZWQoKCkgPT4gISFob3ZlcmVkSXRlbS5nZXQoKSk7XG4gICAgfTtcbiAgfSxcbn0pO1xuIiwgImltcG9ydCB7IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuaW1wb3J0IGdsb2JhbE92ZXJyaWRlcyBmcm9tIFwiLi8qKi8qLmdsb2JhbC1vdmVycmlkZS1mb3ItaW5qZWN0YWJsZS4odHN8dHN4KVwiO1xuaW1wb3J0IGRlZmF1bHRPdmVycmlkZXMgZnJvbSBcIi4vKiovKi5kZWZhdWx0LW92ZXJyaWRlLih0c3x0c3gpXCI7XG5cbmV4cG9ydCBjb25zdCB0ZXN0VXRpbFJ1bm5hYmxlSW5qZWN0YWJsZSA9IGdldFRlc3RVdGlsUnVubmFibGVGb3JPdmVycmlkZXMoe1xuICBnbG9iYWxPdmVycmlkZXMsXG4gIGRlZmF1bHRPdmVycmlkZXMsXG59KTtcbiIsICJcblxuY29uc3QgbW9kdWxlcyA9IFtdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFtdXG4iLCAiaW1wb3J0IHR5cGUgeyBEaUNvbnRhaW5lciB9IGZyb20gXCJAazhzbGVucy9pbmplY3RhYmxlXCI7XG5pbXBvcnQgeyBtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUgfSBmcm9tIFwiLi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlXCI7XG5cbi8vIFJ1bnMgdGhlIGNhbGxiYWNrIHN0cmFpZ2h0IGF3YXkgaW4gdGVzdHMsIGluc3RlYWQgb2YgYWZ0ZXIgdGhlIHJlYWwgZGVsYXkuXG5leHBvcnQgZGVmYXVsdCAoZGk6IERpQ29udGFpbmVyKSA9PiB7XG4gIGRpLm92ZXJyaWRlMihtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUsICgpID0+ICgpID0+IChjYWxsYmFjazogKCkgPT4gdm9pZCkgPT4gY2FsbGJhY2soKSk7XG59O1xuIiwgImltcG9ydCB0eXBlIHsgRGlDb250YWluZXIgfSBmcm9tIFwiQGs4c2xlbnMvaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdG9vbHRpcERlbGF5SW5qZWN0YWJsZSB9IGZyb20gXCIuL3Rvb2x0aXAtZGVsYXkuaW5qZWN0YWJsZVwiO1xuXG4vLyBObyBkZWxheSBpbiB0ZXN0cywgc28gYSB0b29sdGlwIGFwcGVhcnMgd2l0aG91dCBhbnlvbmUgYWR2YW5jaW5nIHRpbWVycy5cbi8vIFdyaXR0ZW4gYXMgYSBwbGFpbiBmdW5jdGlvbiByYXRoZXIgdGhhbiB0aHJvdWdoIGdldERlZmF1bHRNb2NraW5nT3ZlcnJpZGUsXG4vLyB3aGljaCBpcyBhbiBpZGVudGl0eSBmdW5jdGlvbiBpbiBhIHRlc3QgcGFja2FnZSB0aGlzIG9uZSBtYXkgbm90IGltcG9ydC5cbmV4cG9ydCBkZWZhdWx0IChkaTogRGlDb250YWluZXIpID0+IHtcbiAgZGkub3ZlcnJpZGUyKHRvb2x0aXBEZWxheUluamVjdGFibGUsICgpID0+ICgpID0+IHVuZGVmaW5lZCk7XG59O1xuIiwgImltcG9ydCB7IHJlbW92ZUNzc01vZHVsZUNsdXR0ZXJGb3JVbml0VGVzdGluZyB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCBkZWZhdWx0ICgpID0+IHtcbiAgcmVtb3ZlQ3NzTW9kdWxlQ2x1dHRlckZvclVuaXRUZXN0aW5nKCk7XG59O1xuIiwgImltcG9ydCAqIGFzIG1vZHVsZTAgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmRlZmF1bHQtb3ZlcnJpZGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9yZW1vdmUtY3NzLW1vZHVsZS1jbHV0dGVyLmRlZmF1bHQtb3ZlcnJpZGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTJdO1xuXG5leHBvcnQgZGVmYXVsdCBtb2R1bGVzO1xuZXhwb3J0IGNvbnN0IGZpbGVuYW1lcyA9IFsncGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5kZWZhdWx0LW92ZXJyaWRlLnRzJywncGx1Z2lucy90b29sdGlwL3Rvb2x0aXAtZGVsYXkvdG9vbHRpcC1kZWxheS5kZWZhdWx0LW92ZXJyaWRlLnRzJywncmVtb3ZlLWNzcy1tb2R1bGUtY2x1dHRlci5kZWZhdWx0LW92ZXJyaWRlLnRzJ11cbiIsICJpbXBvcnQgKiBhcyBtb2R1bGUwIGZyb20gJy4vcGx1Z2lucy9jbGlja2FibGUvaXMtbWFjLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTEgZnJvbSAnLi9wbHVnaW5zL2NsaWNrYWJsZS9vbi1yaWdodC10cmlnZ2VyLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTIgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTMgZnJvbSAnLi9wbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL2l0ZW0tYmVpbmctZHJhZ2dlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU0IGZyb20gJy4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU1IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNiBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlNyBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGU4IGZyb20gJy4vcGx1Z2lucy9mb2N1c2FibGUvZG8tZm9jdXMuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlOSBmcm9tICcuL3BsdWdpbnMvZm9jdXNhYmxlL2l0ZW0tYmVpbmctZm9jdXNlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMCBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2NvbXB1dGVkLW5vdy5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMSBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMiBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2l0ZW0tYmVpbmctaG92ZXJlZC5pbmplY3RhYmxlLnRzJztpbXBvcnQgKiBhcyBtb2R1bGUxMyBmcm9tICcuL3BsdWdpbnMvaG92ZXJhYmxlL2xvY2FsLWhvdmVyYWJsZS9fcHJpdmF0ZS9jb250ZXh0LWlzLWJlaW5nLWhvdmVyZWQuaW5qZWN0YWJsZS50cyc7aW1wb3J0ICogYXMgbW9kdWxlMTQgZnJvbSAnLi9wbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnO2ltcG9ydCAqIGFzIG1vZHVsZTE1IGZyb20gJy4vdGVzdC11dGlsLXJ1bm5hYmxlLmluamVjdGFibGUudHMnXG5cbmNvbnN0IG1vZHVsZXMgPSBbbW9kdWxlMCxtb2R1bGUxLG1vZHVsZTIsbW9kdWxlMyxtb2R1bGU0LG1vZHVsZTUsbW9kdWxlNixtb2R1bGU3LG1vZHVsZTgsbW9kdWxlOSxtb2R1bGUxMCxtb2R1bGUxMSxtb2R1bGUxMixtb2R1bGUxMyxtb2R1bGUxNCxtb2R1bGUxNV07XG5cbmV4cG9ydCBkZWZhdWx0IG1vZHVsZXM7XG5leHBvcnQgY29uc3QgZmlsZW5hbWVzID0gWydwbHVnaW5zL2NsaWNrYWJsZS9pcy1tYWMuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvY2xpY2thYmxlL29uLXJpZ2h0LXRyaWdnZXIuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvaXRlbS1iZWluZy1kcmFnZ2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2RyYWdnYWJsZS1hbmQtZHJvcHBhYmxlL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuL21ha2Utc3VyZS1kcmFnLWFuZC1kcm9wLWV2ZW50cy1oYXZlLXRpbWUtdG8taGFwcGVuLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9fc2hhcmVkL2ZvY3VzYWJsZS1odG1sLWVsZW1lbnQtcmVmLXNldC5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9mb2N1c2FibGUtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvX3NoYXJlZC9rZXlib2FyZC1uYXZpZ2F0aW9uLXN0YXRlLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2ZvY3VzYWJsZS9kby1mb2N1cy5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9mb2N1c2FibGUvaXRlbS1iZWluZy1mb2N1c2VkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9jb21wdXRlZC1ub3cuaW5qZWN0YWJsZS50cycsJ3BsdWdpbnMvaG92ZXJhYmxlL2hvdmVyZWQtaXRlbS1zdGF0ZS5pbmplY3RhYmxlLnRzJywncGx1Z2lucy9ob3ZlcmFibGUvaXRlbS1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL2hvdmVyYWJsZS9sb2NhbC1ob3ZlcmFibGUvX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGUudHMnLCdwbHVnaW5zL3Rvb2x0aXAvdG9vbHRpcC1kZWxheS90b29sdGlwLWRlbGF5LmluamVjdGFibGUudHMnLCd0ZXN0LXV0aWwtcnVubmFibGUuaW5qZWN0YWJsZS50cyddXG4iLCAiaW1wb3J0IHR5cGUgeyBUdXBsZSB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5cbi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuZXhwb3J0IHR5cGUgVFNoaXJ0U2l6ZSA9XG4gIHwgXCJ6ZXJvXCJcbiAgfCBgJHtSYW5nZTwzLCA0Pn14c2BcbiAgfCBcInh4c1wiXG4gIHwgXCJ4c1wiXG4gIHwgXCJzXCJcbiAgfCBcIm1cIlxuICB8IFwibFwiXG4gIHwgXCJ4bFwiXG4gIHwgXCJ4eGxcIlxuICB8IGAke1JhbmdlPDMsIDExPn14bGA7XG5cbmV4cG9ydCB0eXBlIFJhbmdlPFN0YXJ0IGV4dGVuZHMgbnVtYmVyLCBFbmQgZXh0ZW5kcyBudW1iZXI+ID0gUmFuZ2VJbXBsPFN0YXJ0LCBFbmQ+O1xudHlwZSBSYW5nZUltcGw8XG4gIFN0YXJ0IGV4dGVuZHMgbnVtYmVyLFxuICBFbmQgZXh0ZW5kcyBudW1iZXIsXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L3N1c3BpY2lvdXMvbm9Db25mdXNpbmdWb2lkVHlwZTogcmVxdWlyZWQgZm9yIHRoZSBidWlsZCB0byBwYXNzXG4gIFQgZXh0ZW5kcyB2b2lkW10gPSBUdXBsZTx2b2lkLCBTdGFydD4sXG4+ID0gRW5kIGV4dGVuZHMgVFtcImxlbmd0aFwiXSA/IEVuZCA6IFRbXCJsZW5ndGhcIl0gfCBSYW5nZUltcGw8U3RhcnQsIEVuZCwgW3VuZGVmaW5lZCwgLi4uVF0+O1xuXG4vKiBjOCBpZ25vcmUgZW5kICovXG5cbi8qKiBUaGUgYmFzZSB1bml0IChpbiBwaXhlbHMpIHRoZSB0LXNoaXJ0IHNjYWxlIGlzIGJ1aWx0IG9uLiBNaXJyb3JzIGAkdW5pdGAgaW4gYHNpemVzLnNjc3NgLiAqL1xuZXhwb3J0IGNvbnN0IHNpemVVbml0SW5QaXhlbHMgPSA0O1xuXG4vLyBNdWx0aXBsaWVyIHBlciBzaXplLCBtaXJyb3JpbmcgdGhlIGAkc2l6ZXNgIG1hcCBpbiBgc2l6ZXMuc2Nzc2AuIEtlZXAgdGhlIHR3byBpbiBzeW5jLlxuY29uc3Qgc2l6ZU11bHRpcGxpZXJzOiBSZWNvcmQ8VFNoaXJ0U2l6ZSwgbnVtYmVyPiA9IHtcbiAgemVybzogMCxcbiAgXCI0eHNcIjogMSAvIDQsXG4gIFwiM3hzXCI6IDEgLyAyLFxuICB4eHM6IDEsXG4gIHhzOiAyLFxuICBzOiAzLFxuICBtOiA0LFxuICBsOiA1LFxuICB4bDogNixcbiAgeHhsOiA3LFxuICBcIjN4bFwiOiA4LFxuICBcIjR4bFwiOiA5LFxuICBcIjV4bFwiOiAxMCxcbiAgXCI2eGxcIjogMTEsXG4gIFwiN3hsXCI6IDEyLFxuICBcIjh4bFwiOiAxMyxcbiAgXCI5eGxcIjogMTQsXG4gIFwiMTB4bFwiOiAxNSxcbiAgXCIxMXhsXCI6IDE2LFxufTtcblxuLyoqXG4gKiBUaGUgcGl4ZWwgbGVuZ3RoIG9mIGEgdC1zaGlydCBzaXplIFx1MjAxNCB0aGUgc2FtZSB2YWx1ZSB0aGUgYCRzaXplYC9gJHdpZHRoYC9gJGhlaWdodGBcbiAqIGNsYXNzZXMgcmVzb2x2ZSB0byBpbiBDU1MuIFVzZSB3aGVuIGEgbGVuZ3RoIGlzIG5lZWRlZCByYXRoZXIgdGhhbiBhIHNpemluZyBjbGFzcyxcbiAqIGUuZy4gdG8gZHJpdmUgYW4gaWNvbiBmb250J3MgYGZvbnQtc2l6ZWAuXG4gKi9cbmV4cG9ydCBjb25zdCB0U2hpcnRTaXplSW5QaXhlbHMgPSAoc2l6ZTogVFNoaXJ0U2l6ZSk6IG51bWJlciA9PiBzaXplVW5pdEluUGl4ZWxzICogc2l6ZU11bHRpcGxpZXJzW3NpemVdO1xuIiwgIi8qIGM4IGlnbm9yZSBzdGFydCAqL1xuaW1wb3J0IHsgZ2V0RWxlbWVudENvbXBvbmVudCB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZmxleFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxleC9mbGV4XCI7XG5pbXBvcnQgeyBncmlkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmlkL2dyaWRcIjtcbmltcG9ydCB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyB3aWR0aFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvd2lkdGgvd2lkdGhcIjtcbmltcG9ydCB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3BhZGRpbmcvcGFkZGluZ1wiO1xuaW1wb3J0IHsgc3R5bGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBoZWlnaHRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2hlaWdodC9oZWlnaHRcIjtcbmltcG9ydCB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYm9yZGVyL2JvcmRlclwiO1xuaW1wb3J0IHsgZm9udFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZm9udC9mb250XCI7XG5pbXBvcnQgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvY29sb3IvY29sb3JcIjtcbmltcG9ydCB7IGJhY2tncm91bmRDb2xvclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgeyBncmFkaWVudFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZ3JhZGllbnQvZ3JhZGllbnRcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZHJhZ2dhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGVcIjtcbmltcG9ydCB7IGRyb3BwYWJsZVBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZHJhZ2dhYmxlLWFuZC1kcm9wcGFibGUvZHJvcHBhYmxlXCI7XG5pbXBvcnQgeyBvYnNlcnZlciB9IGZyb20gXCJtb2J4LXJlYWN0XCI7XG5pbXBvcnQgeyB0b29sdGlwUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90b29sdGlwL3Rvb2x0aXBcIjtcbmltcG9ydCB7IHRyYW5zaXRpb25QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvblwiO1xuaW1wb3J0IHsgb2Zmc2V0UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9vZmZzZXQvb2Zmc2V0XCI7XG5pbXBvcnQgeyBvZmZzZXRDaGlsZHJlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb2Zmc2V0LWNoaWxkcmVuL29mZnNldC1jaGlsZHJlblwiO1xuaW1wb3J0IHsgaGlkZGVuUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9oaWRkZW4vaGlkZGVuXCI7XG5pbXBvcnQgeyBub1BvaW50ZXJFdmVudHNQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL25vLXBvaW50ZXItZXZlbnRzL25vLXBvaW50ZXItZXZlbnRzXCI7XG5pbXBvcnQgeyBtYXJnaW5QbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL21hcmdpbi9tYXJnaW5cIjtcbmltcG9ydCB7IHJlbGF0aXZlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9yZWxhdGl2ZS9yZWxhdGl2ZVwiO1xuaW1wb3J0IHsgYWJzb2x1dGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Fic29sdXRlL2Fic29sdXRlXCI7XG5pbXBvcnQgeyB2aXN1YWxseUhpZGRlblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdmlzdWFsbHktaGlkZGVuL3Zpc3VhbGx5LWhpZGRlblwiO1xuaW1wb3J0IHsgaG92ZXJhYmxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlXCI7XG5pbXBvcnQgeyBob3ZlcmFibGVCeURyYWdnaW5nUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ob3ZlcmFibGUvaG92ZXJhYmxlLWJ5LWRyYWdnaW5nXCI7XG5pbXBvcnQgeyBib3hTaGFkb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2JveC1zaGFkb3cvYm94LXNoYWRvd1wiO1xuaW1wb3J0IHsgb3ZlcmZsb3dQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL292ZXJmbG93L292ZXJmbG93XCI7XG5pbXBvcnQgeyBmbGV4Q2hpbGRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZsZXgtY2hpbGQvZmxleC1jaGlsZFwiO1xuaW1wb3J0IHsgZ3JheXNjYWxlUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlXCI7XG5pbXBvcnQgeyB0aW50UGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy90aW50L3RpbnRcIjtcbmltcG9ydCB7IGZhZGVkUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9mYWRlZC9mYWRlZFwiO1xuaW1wb3J0IHsgZW5hYmxlZFBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgeyBmb2N1c2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2ZvY3VzYWJsZS9mb2N1c2FibGVcIjtcbmltcG9ydCB7IGFyZWFQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEvYXJlYVwiO1xuaW1wb3J0IHsgYXJlYUNvbnRlbnRQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FyZWEtY29udGVudC9hcmVhLWNvbnRlbnRcIjtcbmltcG9ydCB7IHNpemVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL3NpemUvc2l6ZVwiO1xuaW1wb3J0IHsgY3Vyc29yUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9jdXJzb3IvY3Vyc29yXCI7XG5pbXBvcnQgeyBjbGlja2FibGVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHJlZlBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcmVmL3JlZlwiO1xuaW1wb3J0IHsgZGlzcGxheUNvbnRlbnRzUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9kaXNwbGF5LWNvbnRlbnRzL2Rpc3BsYXktY29udGVudHNcIjtcbmltcG9ydCB7IHRleHRBbGlnblBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvdGV4dC1hbGlnbi90ZXh0LWFsaWduXCI7XG5pbXBvcnQgeyBibG9ja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvYmxvY2svYmxvY2tcIjtcbmltcG9ydCB7IG91dGxpbmVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL291dGxpbmUvb3V0bGluZVwiO1xuaW1wb3J0IHsgcG9wb3ZlclBsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvcG9wb3Zlci9wb3BvdmVyXCI7XG5pbXBvcnQgeyBmbG9hdGluZ1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvZmxvYXRpbmcvZmxvYXRpbmdcIjtcbmltcG9ydCB7IGludmlzaWJsZUJhY2tkcm9wUGx1Z2luIH0gZnJvbSBcIi4vcGx1Z2lucy9pbnZpc2libGUtYmFja2Ryb3AvaW52aXNpYmxlLWJhY2tkcm9wXCI7XG5pbXBvcnQgeyBvbk91dHNpZGVDbGlja1BsdWdpbiB9IGZyb20gXCIuL3BsdWdpbnMvb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5pbXBvcnQgeyBkcm9wRG93bk1lbnVQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2Ryb3AtZG93bi1tZW51L2Ryb3AtZG93bi1tZW51XCI7XG5pbXBvcnQgeyBhbmNob3JQbHVnaW4gfSBmcm9tIFwiLi9wbHVnaW5zL2FuY2hvci9hbmNob3JcIjtcblxuZXhwb3J0IGNvbnN0IHNoYXJlZFBsdWdpbnMgPSBbXG4gIC8vIENvbnRyaWJ1dGVzIHByb3BzIG9mIGl0cyBvd24sIHNvIGl0IGhhcyB0byBydW4gYmVmb3JlIHRoZSBwbHVnaW5zIHRoYXQgcmVzb2x2ZSB0aGVtLlxuICBhbmNob3JQbHVnaW4sXG4gIHNpemVQbHVnaW4sXG4gIGRyYWdnYWJsZVBsdWdpbixcbiAgdGV4dEFsaWduUGx1Z2luLFxuICBkcm9wcGFibGVQbHVnaW4sXG4gIGFyZWFQbHVnaW4sXG4gIGFyZWFDb250ZW50UGx1Z2luLFxuICBmbGV4UGx1Z2luLFxuICBncmlkUGx1Z2luLFxuICB3aWR0aFBsdWdpbixcbiAgaGVpZ2h0UGx1Z2luLFxuICBmbGV4Q2hpbGRQbHVnaW4sXG4gIG92ZXJmbG93UGx1Z2luLFxuICBwYWRkaW5nUGx1Z2luLFxuICBtYXJnaW5QbHVnaW4sXG4gIGJsb2NrUGx1Z2luLFxuICBib3hTaGFkb3dQbHVnaW4sXG4gIGJvcmRlclBsdWdpbixcbiAgb3V0bGluZVBsdWdpbixcbiAgZm9udFBsdWdpbixcbiAgY29sb3JQbHVnaW4sXG4gIGJhY2tncm91bmRDb2xvclBsdWdpbixcbiAgZ3JhZGllbnRQbHVnaW4sXG4gIGdyYXlzY2FsZVBsdWdpbixcbiAgdGludFBsdWdpbixcbiAgZmFkZWRQbHVnaW4sXG4gIHN0eWxlUGx1Z2luLFxuICB0cmFuc2l0aW9uUGx1Z2luLFxuICBvZmZzZXRQbHVnaW4sXG4gIG9mZnNldENoaWxkcmVuUGx1Z2luLFxuICBoaWRkZW5QbHVnaW4sXG4gIG5vUG9pbnRlckV2ZW50c1BsdWdpbixcbiAgaW52aXNpYmxlQmFja2Ryb3BQbHVnaW4sXG4gIHZpc3VhbGx5SGlkZGVuUGx1Z2luLFxuICByZWxhdGl2ZVBsdWdpbixcbiAgYWJzb2x1dGVQbHVnaW4sXG4gIGN1cnNvclBsdWdpbixcbiAgZGlzcGxheUNvbnRlbnRzUGx1Z2luLFxuICBvbk91dHNpZGVDbGlja1BsdWdpbixcbiAgY2xhc3NOYW1lUGx1Z2luLFxuXTtcblxuY29uc3Qgc2hhcmVkQ2xpY2thYmxlUGx1Z2lucyA9IFtkcm9wRG93bk1lbnVQbHVnaW4sIHBvcG92ZXJQbHVnaW4sIGVuYWJsZWRQbHVnaW4sIGNsaWNrYWJsZVBsdWdpbl07XG5cbmV4cG9ydCBjb25zdCBnZXRTaGFyZWRUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgLi4uZ2V0U2hhcmVkQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbiAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8VD4oKSxcbl07XG5cbmNvbnN0IGdldFNoYXJlZENoaWxkcmVuQWRkaW5nVHlwZWRQbHVnaW5zID0gPFQgZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiBbdG9vbHRpcFBsdWdpbjxUPigpLCBmbG9hdGluZ1BsdWdpbjxUPigpXTtcblxuY29uc3QgZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnMgPSA8VCBleHRlbmRzIEhUTUxFbGVtZW50PigpID0+IFtcbiAgaG92ZXJhYmxlUGx1Z2luPFQ+KCksXG4gIGhvdmVyYWJsZUJ5RHJhZ2dpbmdQbHVnaW48VD4oKSxcbiAgZm9jdXNhYmxlUGx1Z2luPFQ+KCksXG4gIHJlZlBsdWdpbjxUPigpLFxuXTtcblxuZXhwb3J0IGNvbnN0IERpdiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIERpdlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIERpdj47XG5cbi8vIFVzZSBkaXYgYXMgbmV1dHJhbCB0ZW1wbGF0ZSBmb3Igd2hhdCBjb21tb24gcHJvcHMgc2hvdWxkIGxvb2sgbGlrZVxuZXhwb3J0IGNvbnN0IENvbW1vbiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPGFueT4oKSkpO1xuZXhwb3J0IHR5cGUgQ29tbW9uUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29tbW9uPjtcblxuZXhwb3J0IGNvbnN0IFN2ZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJzdmdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5cbmV4cG9ydCB0eXBlIFN2Z1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFN2Zz47XG5cbmV4cG9ydCBjb25zdCBJbnB1dCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFxuICAgIFwiaW5wdXRcIixcbiAgICBlbmFibGVkUGx1Z2luLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkTm9uQ2hpbGRyZW5BZGRpbmdUeXBlZFBsdWdpbnM8SFRNTElucHV0RWxlbWVudD4oKSxcbiAgKSxcbik7XG5leHBvcnQgdHlwZSBJbnB1dFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIElucHV0PjtcblxuZXhwb3J0IGNvbnN0IFRleHRBcmVhID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0ZXh0YXJlYVwiLCBlbmFibGVkUGx1Z2luLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRleHRBcmVhRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGV4dEFyZWFQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUZXh0QXJlYT47XG5cbmV4cG9ydCBjb25zdCBGb3JtID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJmb3JtXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRm9ybUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIEZvcm1Qcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBGb3JtPjtcblxuZXhwb3J0IGNvbnN0IFNwYW4gPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInNwYW5cIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxTcGFuRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgU3BhblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFNwYW4+O1xuXG5leHBvcnQgY29uc3QgQ2xpY2thYmxlRGl2ID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJkaXZcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxEaXZFbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBDbGlja2FibGVEaXZQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBDbGlja2FibGVEaXY+O1xuXG5leHBvcnQgY29uc3QgSSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEk+O1xuXG5leHBvcnQgY29uc3QgQSA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJhXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQW5jaG9yRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgQVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEE+O1xuXG5leHBvcnQgY29uc3QgQnV0dG9uID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXG4gICAgXCJidXR0b25cIixcbiAgICAuLi5zaGFyZWRDbGlja2FibGVQbHVnaW5zLFxuICAgIC4uLnNoYXJlZFBsdWdpbnMsXG4gICAgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxCdXR0b25FbGVtZW50PigpLFxuICApLFxuKTtcbmV4cG9ydCB0eXBlIEJ1dHRvblByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEJ1dHRvbj47XG5cbmV4cG9ydCBjb25zdCBDb2RlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImNvZGVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBDb2RlUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ29kZT47XG5cbmV4cG9ydCBjb25zdCBMYWJlbCA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJsYWJlbFwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIExhYmVsUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTGFiZWw+O1xuXG5leHBvcnQgY29uc3QgUHJlID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInByZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFByZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIFByZVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFByZT47XG5cbmV4cG9ydCBjb25zdCBOYXYgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwibmF2XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgTmF2UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgTmF2PjtcblxuZXhwb3J0IGNvbnN0IEgxID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImgxXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEgxUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDE+O1xuXG5leHBvcnQgY29uc3QgSDIgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDJcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDJQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBIMj47XG5cbmV4cG9ydCBjb25zdCBIMyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoM1wiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBIM1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEgzPjtcblxuZXhwb3J0IGNvbnN0IEg0ID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImg0XCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MSGVhZGluZ0VsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEg0UHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgSDQ+O1xuXG5leHBvcnQgY29uc3QgSDUgPSBvYnNlcnZlcihnZXRFbGVtZW50Q29tcG9uZW50KFwiaDVcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxIZWFkaW5nRWxlbWVudD4oKSkpO1xuZXhwb3J0IHR5cGUgSDVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBINT47XG5cbmV4cG9ydCBjb25zdCBINiA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJoNlwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTEhlYWRpbmdFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBINlByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEg2PjtcblxuZXhwb3J0IGNvbnN0IE9sID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcIm9sXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MT0xpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBPbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIE9sPjtcblxuZXhwb3J0IGNvbnN0IFVsID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInVsXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVUxpc3RFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBVbFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFVsPjtcblxuZXhwb3J0IGNvbnN0IExpID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcImxpXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MTElFbGVtZW50PigpKSk7XG5cbmV4cG9ydCBjb25zdCBDbGlja2FibGVMaSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwibGlcIiwgLi4uc2hhcmVkQ2xpY2thYmxlUGx1Z2lucywgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxMSUVsZW1lbnQ+KCkpLFxuKTtcbmV4cG9ydCB0eXBlIENsaWNrYWJsZUxpUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2xpY2thYmxlTGk+O1xuZXhwb3J0IHR5cGUgTGlQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBMaT47XG5cbmV4cG9ydCBjb25zdCBQID0gb2JzZXJ2ZXIoZ2V0RWxlbWVudENvbXBvbmVudChcInBcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxQYXJhZ3JhcGhFbGVtZW50PigpKSk7XG5leHBvcnQgdHlwZSBQUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgUD47XG5cbmV4cG9ydCBjb25zdCBUaCA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGhcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZUNlbGxFbGVtZW50PigpKSxcbik7XG5cbmV4cG9ydCB0eXBlIFRoUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgVGg+O1xuXG5leHBvcnQgY29uc3QgVGQgPSBvYnNlcnZlcihcbiAgZ2V0RWxlbWVudENvbXBvbmVudChcInRkXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MVGFibGVDZWxsRWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUZFByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRkPjtcblxuZXhwb3J0IGNvbnN0IFRyID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0clwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlUm93RWxlbWVudD4oKSksXG4pO1xuXG5leHBvcnQgdHlwZSBUclByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRyPjtcblxuZXhwb3J0IGNvbnN0IFRhYmxlID0gb2JzZXJ2ZXIoXG4gIGdldEVsZW1lbnRDb21wb25lbnQoXCJ0YWJsZVwiLCAuLi5zaGFyZWRQbHVnaW5zLCAuLi5nZXRTaGFyZWRUeXBlZFBsdWdpbnM8SFRNTFRhYmxlRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgVGFibGVQcm9wcyA9IFJlYWN0LkNvbXBvbmVudFByb3BzPHR5cGVvZiBUYWJsZT47XG5cbmV4cG9ydCBjb25zdCBUQm9keSA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwidGJvZHlcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PigpKSxcbik7XG5leHBvcnQgdHlwZSBUQm9keVByb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIFRCb2R5PjtcblxuZXhwb3J0IGNvbnN0IERpYWxvZyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiZGlhbG9nXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MRGlhbG9nRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgRGlhbG9nUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgRGlhbG9nPjtcblxuZXhwb3J0IGNvbnN0IENhbnZhcyA9IG9ic2VydmVyKFxuICBnZXRFbGVtZW50Q29tcG9uZW50KFwiY2FudmFzXCIsIC4uLnNoYXJlZFBsdWdpbnMsIC4uLmdldFNoYXJlZFR5cGVkUGx1Z2luczxIVE1MQ2FudmFzRWxlbWVudD4oKSksXG4pO1xuZXhwb3J0IHR5cGUgQ2FudmFzUHJvcHMgPSBSZWFjdC5Db21wb25lbnRQcm9wczx0eXBlb2YgQ2FudmFzPjtcblxuZXhwb3J0IGNvbnN0IEltZyA9IG9ic2VydmVyKGdldEVsZW1lbnRDb21wb25lbnQoXCJpbWdcIiwgLi4uc2hhcmVkUGx1Z2lucywgLi4uZ2V0U2hhcmVkVHlwZWRQbHVnaW5zPEhUTUxJbWFnZUVsZW1lbnQ+KCkpKTtcbmV4cG9ydCB0eXBlIEltZ1Byb3BzID0gUmVhY3QuQ29tcG9uZW50UHJvcHM8dHlwZW9mIEltZz47XG5cbi8qIGM4IGlnbm9yZSBlbmQgKi9cbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mbGV4L2ZsZXgubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJmbGV4XCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX19lRkxFY1wiLFxuICBcImZsZXhfX3dyYXAtLXdyYXBcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fd3JhcC0td3JhcF9fXzJMcVRnXCIsXG4gIFwiZmxleF9fZGlyZWN0aW9uLS12ZXJ0aWNhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsX19fMEFpT2ZcIixcbiAgXCJmbGV4X19kaXJlY3Rpb24tLXZlcnRpY2FsLXJldmVyc2VkXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2RpcmVjdGlvbi0tdmVydGljYWwtcmV2ZXJzZWRfX19Jb2UtNVwiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWxfX19hMzJ6b1wiLFxuICBcImZsZXhfX2RpcmVjdGlvbi0taG9yaXpvbnRhbC1yZXZlcnNlZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19kaXJlY3Rpb24tLWhvcml6b250YWwtcmV2ZXJzZWRfX19pTHdES1wiLFxuICBcImZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5cIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2Vlbl9fX2E2b01IXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQXJvdW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUFyb3VuZF9fXzVZT1U0XCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWNlbnRlclwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tY2VudGVyX19fdXJaWUdcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaF9fX001YXowXCIsXG4gIFwiZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0X19fUEhGMUVcIixcbiAgXCJmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZF9fX2FNUHgwXCIsXG4gIFwiZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19hbGlnbkl0ZW1zLS1zdHJldGNoX19fYkFOaWdcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyX19fMFZzeTlcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4U3RhcnRcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fYWxpZ25JdGVtcy0tZmxleFN0YXJ0X19fajBKenhcIixcbiAgXCJmbGV4X19hbGlnbkl0ZW1zLS1mbGV4RW5kXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2FsaWduSXRlbXMtLWZsZXhFbmRfX19EbVU1UlwiLFxuICBcImZsZXhfX2dhcC0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXplcm9fX193My1UZ1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS16ZXJvXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS16ZXJvX19fOTYwQTdcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0temVyb1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0temVyb19fX29LdXNUXCIsXG4gIFwiZmxleF9fZ2FwLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS00eHNfX19yclRKZVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS00eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTR4c19fX1RSM1lFXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTR4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNHhzX19fNmluM2pcIixcbiAgXCJmbGV4X19nYXAtLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTN4c19fX1JjdW1SXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTN4c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tM3hzX19fWC1DMWFcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tM3hzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS0zeHNfX19rVzBpT1wiLFxuICBcImZsZXhfX2dhcC0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhzX19fVUIzRmpcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhzXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eHNfX191SVp2MlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4c19fX3QtZ3FOXCIsXG4gIFwiZmxleF9fZ2FwLS14c1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXhzX19fdHQzU29cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLXhzX19fQjVvWGNcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0teHNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXhzX19fMUVYMmZcIixcbiAgXCJmbGV4X19nYXAtLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1zX19fOW1ZelNcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tc1wiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tc19fX2F2dGYtXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLXNcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXNfX19ZT0JWVlwiLFxuICBcImZsZXhfX2dhcC0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLW1fX19BYi10MFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS1tXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS1tX19fUTZjQi1cIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tbVwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tbV9fXzctRFEwXCIsXG4gIFwiZmxleF9fZ2FwLS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tbF9fX2N2bWp3XCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLWxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLWxfX19FcFF0VFwiLFxuICBcImZsZXhfX2dhcC0tcm93LS1sXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS1sX19feFlpS2hcIixcbiAgXCJmbGV4X19nYXAtLXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teGxfX19DSXNOUFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0teGxfX19tTFV4UlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0teGxfX19LV04zM1wiLFxuICBcImZsZXhfX2dhcC0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0teHhsX19fMTJ0LTZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0teHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS14eGxfX192QUx0ZlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS14eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLXh4bF9fX0lkY3FVXCIsXG4gIFwiZmxleF9fZ2FwLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0zeGxfX19pVXJ4MVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0zeGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTN4bF9fXy1OVjBaXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTN4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tM3hsX19fVlljUmhcIixcbiAgXCJmbGV4X19nYXAtLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTR4bF9fX2ZaaUtWXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTR4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tNHhsX19fWDlLcHlcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tNHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS00eGxfX19kYnZXMFwiLFxuICBcImZsZXhfX2dhcC0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tNXhsX19fNDNoSHZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tNXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS01eGxfX18yWHllUVwiLFxuICBcImZsZXhfX2dhcC0tcm93LS01eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTV4bF9fX3F2ak9FXCIsXG4gIFwiZmxleF9fZ2FwLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS02eGxfX19zUHk2TFwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS02eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTZ4bF9fX3phZ1dNXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTZ4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tNnhsX19fVS11WkpcIixcbiAgXCJmbGV4X19nYXAtLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTd4bF9fX09hd3YtXCIsXG4gIFwiZmxleF9fZ2FwLS1jb2x1bW4tLTd4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tN3hsX19fS3pyTXJcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tN3hsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tcm93LS03eGxfX19wQXZMdlwiLFxuICBcImZsZXhfX2dhcC0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tOHhsX19fRWVvRS1cIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tOHhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS04eGxfX19rYmlvSlwiLFxuICBcImZsZXhfX2dhcC0tcm93LS04eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTh4bF9fX1AtOS1lXCIsXG4gIFwiZmxleF9fZ2FwLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS05eGxfX19UZ25VU1wiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS05eGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1jb2x1bW4tLTl4bF9fX05HbDNKXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTl4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tOXhsX19fRUd1ZWhcIixcbiAgXCJmbGV4X19nYXAtLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS0xMHhsX19fQ2YxdzZcIixcbiAgXCJmbGV4X19nYXAtLWNvbHVtbi0tMTB4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLWNvbHVtbi0tMTB4bF9fX0xKUkdsXCIsXG4gIFwiZmxleF9fZ2FwLS1yb3ctLTEweGxcIjogXCJmbGV4LW1vZHVsZV9fZmxleF9fZ2FwLS1yb3ctLTEweGxfX196UHR5TlwiLFxuICBcImZsZXhfX2dhcC0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLTExeGxfX19vcmZnSVwiLFxuICBcImZsZXhfX2dhcC0tY29sdW1uLS0xMXhsXCI6IFwiZmxleC1tb2R1bGVfX2ZsZXhfX2dhcC0tY29sdW1uLS0xMXhsX19fZERLZHBcIixcbiAgXCJmbGV4X19nYXAtLXJvdy0tMTF4bFwiOiBcImZsZXgtbW9kdWxlX19mbGV4X19nYXAtLXJvdy0tMTF4bF9fX3ZERy1BXCJcbn07IiwgImltcG9ydCBmbGV4U3R5bGVzIGZyb20gXCIuL2ZsZXgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBIb3Jpem9udGFsRmxleFByb3BzID0ge1xuICBkaXJlY3Rpb24/OiBcImhvcml6b250YWxcIiB8IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiO1xuXG4gIGhvcml6b250YWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInN0cmV0Y2hcIiB8IFwidG9wXCIgfCBcImJvdHRvbVwiO1xufTtcblxuZXhwb3J0IHR5cGUgVmVydGljYWxGbGV4UHJvcHMgPSB7XG4gIGRpcmVjdGlvbj86IFwidmVydGljYWxcIiB8IFwidmVydGljYWwtcmV2ZXJzZWRcIjtcblxuICBob3Jpem9udGFsQWxpZ24/OiBcImNlbnRlclwiIHwgXCJzdHJldGNoXCIgfCBcImxlZnRcIiB8IFwicmlnaHRcIjtcbiAgdmVydGljYWxBbGlnbj86IFwiY2VudGVyXCIgfCBcInNwYWNlLWJldHdlZW5cIiB8IFwic3BhY2UtYXJvdW5kXCIgfCBcInRvcFwiIHwgXCJib3R0b21cIjtcbn07XG5cbmV4cG9ydCB0eXBlIE1heGltYWxGbGV4UHJvcHMgPSAoSG9yaXpvbnRhbEZsZXhQcm9wcyB8IFZlcnRpY2FsRmxleFByb3BzKSAmIHtcbiAgZ2FwPzogVFNoaXJ0U2l6ZSB8IHsgcm93PzogVFNoaXJ0U2l6ZTsgY29sdW1uPzogVFNoaXJ0U2l6ZSB9O1xuICB3cmFwPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCB0eXBlIFNpbXBsZUZsZXhQcm9wID0gYm9vbGVhbjtcblxuZXhwb3J0IHR5cGUgRmxleFBsdWdpblByb3BzID0geyAkZmxleD86IFNpbXBsZUZsZXhQcm9wIHwgTWF4aW1hbEZsZXhQcm9wcyB9O1xuXG5leHBvcnQgY29uc3QgZmxleFBsdWdpbiA9IGdldFBsdWdpbjxGbGV4UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGZsZXggfSA9IHByb3BzO1xuXG4gIGlmICghJGZsZXgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGZsZXg6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGRpcmVjdGlvbiA9IFwiaG9yaXpvbnRhbFwiLFxuICAgIHZlcnRpY2FsQWxpZ24gPSBcIlwiLFxuICAgIGhvcml6b250YWxBbGlnbiA9IFwiXCIsXG4gICAgZ2FwID0gdW5kZWZpbmVkLFxuICAgIHdyYXAsXG4gIH0gPSAkZmxleCA9PT0gdHJ1ZSA/IHt9IDogJGZsZXg7XG5cbiAgY29uc3QgaG9yaXpvbnRhbEFsaWduUHJvcHMgPSB7XG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLXN0cmV0Y2hgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3RyZXRjaFwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19hbGlnbkl0ZW1zLS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJib3R0b21cIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzcGFjZS1hcm91bmRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXNwYWNlQmV0d2VlbmBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInNwYWNlLWJldHdlZW5cIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLXN0cmV0Y2hgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IGhvcml6b250YWxBbGlnbiA9PT0gXCJjZW50ZXJcIixcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleFN0YXJ0YF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIikgfHxcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSxcblxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tZmxleEVuZGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwiaG9yaXpvbnRhbFwiICYmIGhvcml6b250YWxBbGlnbiA9PT0gXCJyaWdodFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJob3Jpem9udGFsLXJldmVyc2VkXCIgJiYgaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIiksXG4gIH07XG5cbiAgY29uc3QgdmVydGljYWxBbGlnblByb3BzID0ge1xuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3BhY2VBcm91bmRgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYXJvdW5kXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1zcGFjZUJldHdlZW5gXV06IHZlcnRpY2FsQWxpZ24gPT09IFwic3BhY2UtYmV0d2VlblwiLFxuICAgIFtmbGV4U3R5bGVzW2BmbGV4X19qdXN0aWZ5Q29udGVudC0tc3RyZXRjaGBdXTogdmVydGljYWxBbGlnbiA9PT0gXCJzdHJldGNoXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1jZW50ZXJgXV06IHZlcnRpY2FsQWxpZ24gPT09IFwiY2VudGVyXCIsXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fanVzdGlmeUNvbnRlbnQtLWZsZXhTdGFydGBdXTpcbiAgICAgIChkaXJlY3Rpb24gPT09IFwidmVydGljYWxcIiAmJiB2ZXJ0aWNhbEFsaWduID09PSBcInRvcFwiKSB8fFxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbC1yZXZlcnNlZFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpLFxuXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2p1c3RpZnlDb250ZW50LS1mbGV4RW5kYF1dOlxuICAgICAgKGRpcmVjdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiICYmIHZlcnRpY2FsQWxpZ24gPT09IFwiYm90dG9tXCIpIHx8XG4gICAgICAoZGlyZWN0aW9uID09PSBcInZlcnRpY2FsLXJldmVyc2VkXCIgJiYgdmVydGljYWxBbGlnbiA9PT0gXCJ0b3BcIiksXG5cbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tc3RyZXRjaGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInN0cmV0Y2hcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tY2VudGVyYF1dOiBob3Jpem9udGFsQWxpZ24gPT09IFwiY2VudGVyXCIsXG4gICAgW2ZsZXhTdHlsZXNbYGZsZXhfX2FsaWduSXRlbXMtLWZsZXhTdGFydGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcImxlZnRcIixcbiAgICBbZmxleFN0eWxlc1tgZmxleF9fYWxpZ25JdGVtcy0tZmxleEVuZGBdXTogaG9yaXpvbnRhbEFsaWduID09PSBcInJpZ2h0XCIsXG4gIH07XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBmbGV4U3R5bGVzLmZsZXgsXG4gICAgICBmbGV4U3R5bGVzW2BmbGV4X19kaXJlY3Rpb24tLSR7ZGlyZWN0aW9ufWBdLFxuXG4gICAgICBbXCJob3Jpem9udGFsXCIsIFwiaG9yaXpvbnRhbC1yZXZlcnNlZFwiXS5pbmNsdWRlcyhkaXJlY3Rpb24pID8gaG9yaXpvbnRhbEFsaWduUHJvcHMgOiB2ZXJ0aWNhbEFsaWduUHJvcHMsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBmbGV4U3R5bGVzW2BmbGV4X19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZmxleFN0eWxlc1tgZmxleF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHdyYXAgJiYgZmxleFN0eWxlc1tgZmxleF9fd3JhcC0td3JhcGBdLFxuXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG5cbiAgICAkZmxleDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZ3JpZC9ncmlkLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JpZFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19fTVBUaE9cIixcbiAgXCJncmlkX19jb2x1bW5zLS0xXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTFfX19ZMFUyTVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTJcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tMl9fX1lnUzRIXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tM1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS0zX19fbWFCRDJcIixcbiAgXCJncmlkX19jb2x1bW5zLS00XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2NvbHVtbnMtLTRfX183M0JqQVwiLFxuICBcImdyaWRfX2NvbHVtbnMtLTVcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fY29sdW1ucy0tNV9fX1NsdC1EXCIsXG4gIFwiZ3JpZF9fY29sdW1ucy0tNlwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19jb2x1bW5zLS02X19fbnlNOHpcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1zdHJldGNoXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0cmV0Y2hfX194WGQzWlwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLWNlbnRlclwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19hbGlnbkl0ZW1zLS1jZW50ZXJfX19FOG1MLVwiLFxuICBcImdyaWRfX2FsaWduSXRlbXMtLXN0YXJ0XCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2FsaWduSXRlbXMtLXN0YXJ0X19fMk5kdlNcIixcbiAgXCJncmlkX19hbGlnbkl0ZW1zLS1lbmRcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fYWxpZ25JdGVtcy0tZW5kX19fMUlwWW1cIixcbiAgXCJncmlkX19nYXAtLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS16ZXJvX19fRzFxOGRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0temVyb1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0temVyb19fX3lnUXBKXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXplcm9cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXplcm9fX193MS1PeFwiLFxuICBcImdyaWRfX2dhcC0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNHhzX19fek8wbXZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS00eHNfX19HVW9kM1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS00eHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTR4c19fX3NWUVplXCIsXG4gIFwiZ3JpZF9fZ2FwLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0zeHNfX18tSXhTd1wiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS0zeHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTN4c19fX3V3NDY2XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTN4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tM3hzX19fSmZ3bVlcIixcbiAgXCJncmlkX19nYXAtLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4c19fX2doOGMtXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4c1wiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhzX19fRTc2Z0tcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eHNfX19uaHh6LVwiLFxuICBcImdyaWRfX2dhcC0teHNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS14c19fX0dINGgyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS14c19fX3VScXJpXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLXhzXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14c19fX2xBTkV1XCIsXG4gIFwiZ3JpZF9fZ2FwLS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tc19fXzdSMHBzXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXNcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXNfX19hRFZBR1wiLFxuICBcImdyaWRfX2dhcC0tcm93LS1zXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS1zX19fQVJEbXhcIixcbiAgXCJncmlkX19nYXAtLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1tX19fbTNYaWhcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tbVwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tbV9fX0NzeWVNXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLW1cIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLW1fX19zT0FYblwiLFxuICBcImdyaWRfX2dhcC0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWxfX18wU3lLbFwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS1sXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS1sX19fSnZKaE1cIixcbiAgXCJncmlkX19nYXAtLXJvdy0tbFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tbF9fX2FwSDhiXCIsXG4gIFwiZ3JpZF9fZ2FwLS14bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXhsX19fSS12UnRcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLXhsX19fdDBTTzNcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLXhsX19fZXZORWRcIixcbiAgXCJncmlkX19nYXAtLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXh4bF9fX2VXUzAyXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLXh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0teHhsX19fcy0tLWJcIixcbiAgXCJncmlkX19nYXAtLXJvdy0teHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS14eGxfX19KNEY3b1wiLFxuICBcImdyaWRfX2dhcC0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tM3hsX19fSFZsa0RcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tM3hsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS0zeGxfX196S3RMTFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0zeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTN4bF9fX0U5U1Y5XCIsXG4gIFwiZ3JpZF9fZ2FwLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS00eGxfX19NM0czZlwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS00eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTR4bF9fX25udC1wXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTR4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tNHhsX19fMVc4YmRcIixcbiAgXCJncmlkX19nYXAtLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTV4bF9fX3lBblhEXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTV4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tNXhsX19fMnc0UjFcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tNXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS01eGxfX19WQ2ZqZ1wiLFxuICBcImdyaWRfX2dhcC0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tNnhsX19faEVsMEZcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tNnhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS02eGxfX19GeFB0cFwiLFxuICBcImdyaWRfX2dhcC0tcm93LS02eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTZ4bF9fX3luMWYtXCIsXG4gIFwiZ3JpZF9fZ2FwLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS03eGxfX19nYkdIdVwiLFxuICBcImdyaWRfX2dhcC0tY29sdW1uLS03eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTd4bF9fX1Z5ajFwXCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTd4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLXJvdy0tN3hsX19fNUJCc1NcIixcbiAgXCJncmlkX19nYXAtLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLTh4bF9fX2pDbG1DXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTh4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tOHhsX19fYnE3RXpcIixcbiAgXCJncmlkX19nYXAtLXJvdy0tOHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS04eGxfX193TnVaMlwiLFxuICBcImdyaWRfX2dhcC0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tOXhsX19faW5FMUVcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tOXhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tY29sdW1uLS05eGxfX19Nc2ZqcVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS05eGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTl4bF9fX2kyMy1jXCIsXG4gIFwiZ3JpZF9fZ2FwLS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tMTB4bF9fX0xDRHRjXCIsXG4gIFwiZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1jb2x1bW4tLTEweGxfX19vOGNCeVwiLFxuICBcImdyaWRfX2dhcC0tcm93LS0xMHhsXCI6IFwiZ3JpZC1tb2R1bGVfX2dyaWRfX2dhcC0tcm93LS0xMHhsX19fUmpSdzlcIixcbiAgXCJncmlkX19nYXAtLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS0xMXhsX19fU3F1TmFcIixcbiAgXCJncmlkX19nYXAtLWNvbHVtbi0tMTF4bFwiOiBcImdyaWQtbW9kdWxlX19ncmlkX19nYXAtLWNvbHVtbi0tMTF4bF9fX3VTZVd6XCIsXG4gIFwiZ3JpZF9fZ2FwLS1yb3ctLTExeGxcIjogXCJncmlkLW1vZHVsZV9fZ3JpZF9fZ2FwLS1yb3ctLTExeGxfX19qcUctSVwiXG59OyIsICJpbXBvcnQgZ3JpZFN0eWxlcyBmcm9tIFwiLi9ncmlkLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgR3JpZENvbHVtbnMgPSAxIHwgMiB8IDMgfCA0IHwgNSB8IDY7XG5cbmV4cG9ydCB0eXBlIEdyaWRQcm9wcyA9IHtcbiAgY29sdW1uczogR3JpZENvbHVtbnM7XG4gIGdhcD86IFRTaGlydFNpemUgfCB7IHJvdz86IFRTaGlydFNpemU7IGNvbHVtbj86IFRTaGlydFNpemUgfTtcbiAgYWxpZ25JdGVtcz86IFwic3RyZXRjaFwiIHwgXCJjZW50ZXJcIiB8IFwic3RhcnRcIiB8IFwiZW5kXCI7XG59O1xuXG5leHBvcnQgdHlwZSBHcmlkUGx1Z2luUHJvcHMgPSB7ICRncmlkPzogR3JpZFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBncmlkUGx1Z2luID0gZ2V0UGx1Z2luPEdyaWRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkZ3JpZCB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkZ3JpZCkge1xuICAgIHJldHVybiB7ICRncmlkOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgY29sdW1ucywgZ2FwLCBhbGlnbkl0ZW1zIH0gPSAkZ3JpZDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIGdyaWRTdHlsZXMuZ3JpZCxcbiAgICAgIGdyaWRTdHlsZXNbYGdyaWRfX2NvbHVtbnMtLSR7Y29sdW1uc31gXSxcbiAgICAgIGFsaWduSXRlbXMgPyBncmlkU3R5bGVzW2BncmlkX19hbGlnbkl0ZW1zLS0ke2FsaWduSXRlbXN9YF0gOiB1bmRlZmluZWQsXG5cbiAgICAgIHR5cGVvZiBnYXAgPT09IFwic3RyaW5nXCJcbiAgICAgICAgPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLSR7Z2FwfWBdXG4gICAgICAgIDogZ2FwXG4gICAgICAgICAgPyBbXG4gICAgICAgICAgICAgIGdhcC5jb2x1bW4gPyBncmlkU3R5bGVzW2BncmlkX19nYXAtLWNvbHVtbi0tJHtnYXAuY29sdW1ufWBdIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICBnYXAucm93ID8gZ3JpZFN0eWxlc1tgZ3JpZF9fZ2FwLS1yb3ctLSR7Z2FwLnJvd31gXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIF1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcblxuICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICBdLFxuXG4gICAgJGdyaWQ6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3dpZHRoL3dpZHRoLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwibWF4LXdpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLWZ1bGxfX19ub0lrVFwiLFxuICBcIm1heC13aWR0aC0tY29udGVudFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1jb250ZW50X19feWtzVXJcIixcbiAgXCJtYXgtd2lkdGgtLXplcm9cIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0temVyb19fXzhOVUYxXCIsXG4gIFwibWF4LXdpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNHhzX19fZ0hsTElcIixcbiAgXCJtYXgtd2lkdGgtLTN4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeHNfX19yZG9QOFwiLFxuICBcIm1heC13aWR0aC0teHhzXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXh4c19fX2pscDh2XCIsXG4gIFwibWF4LXdpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14c19fX2tRc1d4XCIsXG4gIFwibWF4LXdpZHRoLS1zXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLXNfX19NZ0dhelwiLFxuICBcIm1heC13aWR0aC0tbVwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS1tX19fYUZ6U2NcIixcbiAgXCJtYXgtd2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tbF9fX2lLbGFIXCIsXG4gIFwibWF4LXdpZHRoLS14bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS14bF9fXzR6VWRDXCIsXG4gIFwibWF4LXdpZHRoLS14eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0teHhsX19fNTh6M1BcIixcbiAgXCJtYXgtd2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0zeGxfX18yWVhuSFwiLFxuICBcIm1heC13aWR0aC0tNHhsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTR4bF9fX2pGSjlWXCIsXG4gIFwibWF4LXdpZHRoLS01eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tNXhsX19fNy1WUUdcIixcbiAgXCJtYXgtd2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS02eGxfX19QUzM3SlwiLFxuICBcIm1heC13aWR0aC0tN3hsXCI6IFwid2lkdGgtbW9kdWxlX19tYXgtd2lkdGgtLTd4bF9fX3NTQndrXCIsXG4gIFwibWF4LXdpZHRoLS04eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tOHhsX19fVjNJSHlcIixcbiAgXCJtYXgtd2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS05eGxfX180VldFTVwiLFxuICBcIm1heC13aWR0aC0tMTB4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWF4LXdpZHRoLS0xMHhsX19fejk3VFFcIixcbiAgXCJtYXgtd2lkdGgtLTExeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21heC13aWR0aC0tMTF4bF9fX2p4ZW5YXCIsXG4gIFwibWluLXdpZHRoXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGhfX19xbmxZQ1wiLFxuICBcIm1pbi13aWR0aC0tZml0XCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWZpdF9fXzJXLVREXCIsXG4gIFwibWluLXdpZHRoLS16ZXJvXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXplcm9fX185NDI5U1wiLFxuICBcIm1pbi13aWR0aC0tNHhzXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTR4c19fXzNUR00tXCIsXG4gIFwibWluLXdpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hzX19fUjZqMzJcIixcbiAgXCJtaW4td2lkdGgtLXh4c1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS14eHNfX192aktkQ1wiLFxuICBcIm1pbi13aWR0aC0teHNcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teHNfX19WLUwxc1wiLFxuICBcIm1pbi13aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS1zX19fZElmWm1cIixcbiAgXCJtaW4td2lkdGgtLW1cIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tbV9fX0pINUlQXCIsXG4gIFwibWluLXdpZHRoLS1sXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLWxfX19HZ2tFOFwiLFxuICBcIm1pbi13aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0teGxfX19hR0x1aVwiLFxuICBcIm1pbi13aWR0aC0teHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLXh4bF9fX3pRT3RUXCIsXG4gIFwibWluLXdpZHRoLS0zeGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tM3hsX19fSmV2RFpcIixcbiAgXCJtaW4td2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS00eGxfX18xZTZOMVwiLFxuICBcIm1pbi13aWR0aC0tNXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTV4bF9fX0t1bXRvXCIsXG4gIFwibWluLXdpZHRoLS02eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tNnhsX19fWUVrbThcIixcbiAgXCJtaW4td2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fbWluLXdpZHRoLS03eGxfX192WDFGWVwiLFxuICBcIm1pbi13aWR0aC0tOHhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTh4bF9fX1ZiUWhrXCIsXG4gIFwibWluLXdpZHRoLS05eGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tOXhsX19fZVVLUWlcIixcbiAgXCJtaW4td2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX21pbi13aWR0aC0tMTB4bF9fX1pvTjNOXCIsXG4gIFwibWluLXdpZHRoLS0xMXhsXCI6IFwid2lkdGgtbW9kdWxlX19taW4td2lkdGgtLTExeGxfX19CTkZqQVwiLFxuICBcIndpZHRoLS1mdWxsXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tZnVsbF9fXzFtcGl6XCIsXG4gIFwid2lkdGgtLXN0cmV0Y2hcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1zdHJldGNoX19fUnF3MDBcIixcbiAgXCJ3aWR0aC0temVyb1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXplcm9fX19JTmRWdlwiLFxuICBcIndpZHRoLS00eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS00eHNfX19kUlVoV1wiLFxuICBcIndpZHRoLS0zeHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0zeHNfX19vUkowelwiLFxuICBcIndpZHRoLS14eHNcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14eHNfX19IeWw5UlwiLFxuICBcIndpZHRoLS14c1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXhzX19fRzNqUXpcIixcbiAgXCJ3aWR0aC0tc1wiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXNfX18tbXpxbVwiLFxuICBcIndpZHRoLS1tXCI6IFwid2lkdGgtbW9kdWxlX193aWR0aC0tbV9fX21FWjc3XCIsXG4gIFwid2lkdGgtLWxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS1sX19fcXlJTjdcIixcbiAgXCJ3aWR0aC0teGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS14bF9fX21PMjVJXCIsXG4gIFwid2lkdGgtLXh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLXh4bF9fX0VHUU1wXCIsXG4gIFwid2lkdGgtLTN4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTN4bF9fX0h1bDctXCIsXG4gIFwid2lkdGgtLTR4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTR4bF9fX3pPUGJTXCIsXG4gIFwid2lkdGgtLTV4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTV4bF9fX3hicW5pXCIsXG4gIFwid2lkdGgtLTZ4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTZ4bF9fX05tYmY5XCIsXG4gIFwid2lkdGgtLTd4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTd4bF9fX0IwbnZ3XCIsXG4gIFwid2lkdGgtLTh4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTh4bF9fX1cxSERQXCIsXG4gIFwid2lkdGgtLTl4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTl4bF9fX0tKTDhVXCIsXG4gIFwid2lkdGgtLTEweGxcIjogXCJ3aWR0aC1tb2R1bGVfX3dpZHRoLS0xMHhsX19fOTR6MTlcIixcbiAgXCJ3aWR0aC0tMTF4bFwiOiBcIndpZHRoLW1vZHVsZV9fd2lkdGgtLTExeGxfX19qQi1MblwiXG59OyIsICJpbXBvcnQgd2lkdGhTdHlsZXMgZnJvbSBcIi4vd2lkdGgubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBzdHlsZVBsdWdpbiB9IGZyb20gXCIuLi9zdHlsZS9zdHlsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG4vKiogQSBzaGFyZSBvZiB0aGUgcGFyZW50J3Mgd2lkdGgsIGUuZy4gYFwiMzAlXCJgLCBmb3IgbGF5b3V0cyB0aGF0IGRpdmlkZSBhIHJvdyByYXRoZXIgdGhhbiBzaXplIGEgYm94LiAqL1xuZXhwb3J0IHR5cGUgUGVyY2VudGFnZSA9IGAke251bWJlcn0lYDtcblxuZXhwb3J0IHR5cGUgJFdpZHRoUHJvcHMgPSB7XG4gIHdpZHRoPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBQZXJjZW50YWdlO1xuICBtaW4/OiBUU2hpcnRTaXplIHwgXCJmaXRcIiB8IFBlcmNlbnRhZ2U7XG4gIG1heD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwiY29udGVudFwiIHwgUGVyY2VudGFnZTtcbn07XG5cbmV4cG9ydCB0eXBlIFdpZHRoUGx1Z2luUHJvcHMgPSB7ICR3aWR0aD86IFRTaGlydFNpemUgfCBcImZ1bGxcIiB8IFwic3RyZXRjaFwiIHwgUGVyY2VudGFnZSB8ICRXaWR0aFByb3BzIH07XG5cbmNvbnN0IGlzUGVyY2VudGFnZSA9ICh2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogdmFsdWUgaXMgUGVyY2VudGFnZSA9PiB2YWx1ZT8uZW5kc1dpdGgoXCIlXCIpID09PSB0cnVlO1xuXG5leHBvcnQgY29uc3Qgd2lkdGhQbHVnaW4gPSBnZXRQbHVnaW48V2lkdGhQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICR3aWR0aCwgJGNsYXNzTmFtZSwgJHN0eWxlIH0gPSBwcm9wcztcbiAgY29uc3QgeyB3aWR0aCwgbWluLCBtYXggfSA9IHR5cGVvZiAkd2lkdGggPT09IFwic3RyaW5nXCIgPyB7IHdpZHRoOiAkd2lkdGggfSA6ICgkd2lkdGggPz8ge30pO1xuICBjb25zdCBwZXJjZW50YWdlcyA9IHtcbiAgICAuLi4oaXNQZXJjZW50YWdlKHdpZHRoKSA/IHsgd2lkdGggfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1pbikgPyB7IG1pbldpZHRoOiBtaW4gfSA6IHt9KSxcbiAgICAuLi4oaXNQZXJjZW50YWdlKG1heCkgPyB7IG1heFdpZHRoOiBtYXggfSA6IHt9KSxcbiAgfTtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHdpZHRoICYmICFpc1BlcmNlbnRhZ2Uod2lkdGgpID8gd2lkdGhTdHlsZXNbYHdpZHRoLS0ke3dpZHRofWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluICYmICFpc1BlcmNlbnRhZ2UobWluKSA/IHdpZHRoU3R5bGVzW2BtaW4td2lkdGgtLSR7bWlufWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWF4ICYmICFpc1BlcmNlbnRhZ2UobWF4KSA/IHdpZHRoU3R5bGVzW2BtYXgtd2lkdGgtLSR7bWF4fWBdIDogdW5kZWZpbmVkLFxuICAgICAgJGNsYXNzTmFtZSxcbiAgICBdLFxuICAgICRzdHlsZTogT2JqZWN0LmtleXMocGVyY2VudGFnZXMpLmxlbmd0aCA+IDAgPyB7IC4uLiRzdHlsZSwgLi4ucGVyY2VudGFnZXMgfSA6ICRzdHlsZSxcbiAgICAkd2lkdGg6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5leHBvcnQgdHlwZSBTdHlsZVBsdWdpblByb3BzID0geyAkc3R5bGU/OiBSZWFjdC5DU1NQcm9wZXJ0aWVzOyBzdHlsZT86IFJlYWN0LkNTU1Byb3BlcnRpZXMgfTtcblxuZXhwb3J0IGNvbnN0IHN0eWxlUGx1Z2luID0gZ2V0UGx1Z2luPFN0eWxlUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICAvKiBjOCBpZ25vcmUgbmV4dCAqL1xuICBjb25zdCAkc3R5bGUgPSBwcm9wcy4kc3R5bGUgfHwge307XG5cbiAgY29uc3Qgc3R5bGUgPSBwcm9wcy5zdHlsZSB8fCB7fTtcblxuICByZXR1cm4ge1xuICAgIHN0eWxlOiB7IC4uLiRzdHlsZSwgLi4uc3R5bGUgfSxcbiAgICAkc3R5bGU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2hlaWdodC9oZWlnaHQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJtYXgtaGVpZ2h0LS1mdWxsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tZnVsbF9fXy1pb2pmXCIsXG4gIFwibWF4LWhlaWdodC0temVyb1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXplcm9fX19kNTd3V1wiLFxuICBcIm1heC1oZWlnaHQtLTR4c1wiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTR4c19fX0xKVUJuXCIsXG4gIFwibWF4LWhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hzX19fLTJXby1cIixcbiAgXCJtYXgtaGVpZ2h0LS14eHNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS14eHNfX19oRnJCZVwiLFxuICBcIm1heC1oZWlnaHQtLXhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teHNfX19jMnBhRFwiLFxuICBcIm1heC1oZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS1zX19fQWNwNlRcIixcbiAgXCJtYXgtaGVpZ2h0LS1tXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tbV9fX1Z6b1E5XCIsXG4gIFwibWF4LWhlaWdodC0tbFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLWxfX19XZ2xxYlwiLFxuICBcIm1heC1oZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0teGxfX19MVW1sSlwiLFxuICBcIm1heC1oZWlnaHQtLXh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLXh4bF9fX2RSM3pLXCIsXG4gIFwibWF4LWhlaWdodC0tM3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tM3hsX19fYnViVERcIixcbiAgXCJtYXgtaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS00eGxfX19iZFpYNlwiLFxuICBcIm1heC1oZWlnaHQtLTV4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTV4bF9fX1RVVEFSXCIsXG4gIFwibWF4LWhlaWdodC0tNnhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tNnhsX19fR2MtSGxcIixcbiAgXCJtYXgtaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19tYXgtaGVpZ2h0LS03eGxfX19ZeGR0WFwiLFxuICBcIm1heC1oZWlnaHQtLTh4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTh4bF9fX0EyV3ZkXCIsXG4gIFwibWF4LWhlaWdodC0tOXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tOXhsX19fSnZyR0pcIixcbiAgXCJtYXgtaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWF4LWhlaWdodC0tMTB4bF9fX3dMUlF1XCIsXG4gIFwibWF4LWhlaWdodC0tMTF4bFwiOiBcImhlaWdodC1tb2R1bGVfX21heC1oZWlnaHQtLTExeGxfX19nVTN4SVwiLFxuICBcIm1pbi1oZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS16ZXJvX19fUEJWNDdcIixcbiAgXCJtaW4taGVpZ2h0LS00eHNcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS00eHNfX19WM04tYlwiLFxuICBcIm1pbi1oZWlnaHQtLTN4c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4c19fX3RnRFFRXCIsXG4gIFwibWluLWhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0teHhzX19fLXFoU3pcIixcbiAgXCJtaW4taGVpZ2h0LS14c1wiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhzX19fWklwcXVcIixcbiAgXCJtaW4taGVpZ2h0LS1zXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tc19fX3hNaUdjXCIsXG4gIFwibWluLWhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLW1fX19WRVdMclwiLFxuICBcIm1pbi1oZWlnaHQtLWxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS1sX19fYTYtRjdcIixcbiAgXCJtaW4taGVpZ2h0LS14bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLXhsX19fLXlsRnVcIixcbiAgXCJtaW4taGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS14eGxfX183SzZmLVwiLFxuICBcIm1pbi1oZWlnaHQtLTN4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTN4bF9fXzBGWlFtXCIsXG4gIFwibWluLWhlaWdodC0tNHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tNHhsX19fY0dvSmtcIixcbiAgXCJtaW4taGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS01eGxfX19mVjNhT1wiLFxuICBcIm1pbi1oZWlnaHQtLTZ4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTZ4bF9fX0ZrVUdDXCIsXG4gIFwibWluLWhlaWdodC0tN3hsXCI6IFwiaGVpZ2h0LW1vZHVsZV9fbWluLWhlaWdodC0tN3hsX19fQ3Npd1ZcIixcbiAgXCJtaW4taGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS04eGxfX19oLS1ES1wiLFxuICBcIm1pbi1oZWlnaHQtLTl4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTl4bF9fX25GTVNIXCIsXG4gIFwibWluLWhlaWdodC0tMTB4bFwiOiBcImhlaWdodC1tb2R1bGVfX21pbi1oZWlnaHQtLTEweGxfX19LYS1jQVwiLFxuICBcIm1pbi1oZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19taW4taGVpZ2h0LS0xMXhsX19fZlFzZ2NcIixcbiAgXCJoZWlnaHQtLXN0cmV0Y2hcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXN0cmV0Y2hfX19yWWFZblwiLFxuICBcImhlaWdodC0tZnVsbFwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tZnVsbF9fX3ZXeGllXCIsXG4gIFwiaGVpZ2h0LS1hdXRvXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1hdXRvX19fNjduRk5cIixcbiAgXCJoZWlnaHQtLXplcm9cIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXplcm9fX19BcUEwUFwiLFxuICBcImhlaWdodC0tNHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS00eHNfX19GZEowaFwiLFxuICBcImhlaWdodC0tM3hzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0zeHNfX19hc1VKYlwiLFxuICBcImhlaWdodC0teHhzXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14eHNfX19ZcVRxcFwiLFxuICBcImhlaWdodC0teHNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXhzX19fbE5SdFlcIixcbiAgXCJoZWlnaHQtLXNcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXNfX19IN20tLVwiLFxuICBcImhlaWdodC0tbVwiOiBcImhlaWdodC1tb2R1bGVfX2hlaWdodC0tbV9fX0NtTHAxXCIsXG4gIFwiaGVpZ2h0LS1sXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS1sX19fMnRra2hcIixcbiAgXCJoZWlnaHQtLXhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS14bF9fXzd4QkppXCIsXG4gIFwiaGVpZ2h0LS14eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLXh4bF9fX0NqU3U1XCIsXG4gIFwiaGVpZ2h0LS0zeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTN4bF9fX3BVZHZOXCIsXG4gIFwiaGVpZ2h0LS00eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTR4bF9fX1FIWll5XCIsXG4gIFwiaGVpZ2h0LS01eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTV4bF9fX1diZ283XCIsXG4gIFwiaGVpZ2h0LS02eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTZ4bF9fX2t3YzhhXCIsXG4gIFwiaGVpZ2h0LS03eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTd4bF9fX211TzFsXCIsXG4gIFwiaGVpZ2h0LS04eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTh4bF9fXzlwRU1OXCIsXG4gIFwiaGVpZ2h0LS05eGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTl4bF9fXzZlNDZRXCIsXG4gIFwiaGVpZ2h0LS0xMHhsXCI6IFwiaGVpZ2h0LW1vZHVsZV9faGVpZ2h0LS0xMHhsX19fWGdYcC1cIixcbiAgXCJoZWlnaHQtLTExeGxcIjogXCJoZWlnaHQtbW9kdWxlX19oZWlnaHQtLTExeGxfX19hZHd1SFwiXG59OyIsICJpbXBvcnQgaGVpZ2h0U3R5bGVzIGZyb20gXCIuL2hlaWdodC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlICRIZWlnaHRQcm9wcyA9IHtcbiAgaGVpZ2h0PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgXCJzdHJldGNoXCIgfCBcImF1dG9cIjtcbiAgbWluPzogVFNoaXJ0U2l6ZTtcbiAgbWF4PzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xufTtcblxuZXhwb3J0IHR5cGUgSGVpZ2h0UGx1Z2luUHJvcHMgPSB7ICRoZWlnaHQ/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCBcImF1dG9cIiB8IFwic3RyZXRjaFwiIHwgJEhlaWdodFByb3BzIH07XG5cbmV4cG9ydCBjb25zdCBoZWlnaHRQbHVnaW4gPSBnZXRQbHVnaW48SGVpZ2h0UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGhlaWdodCB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgaGVpZ2h0LCBtaW4sIG1heCB9ID0gdHlwZW9mICRoZWlnaHQgPT09IFwic3RyaW5nXCIgPyB7IGhlaWdodDogJGhlaWdodCB9IDogKCRoZWlnaHQgPz8ge30pO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgaGVpZ2h0ID8gaGVpZ2h0U3R5bGVzW2BoZWlnaHQtLSR7aGVpZ2h0fWBdIDogdW5kZWZpbmVkLFxuICAgICAgbWluID8gaGVpZ2h0U3R5bGVzW2BtaW4taGVpZ2h0LS0ke21pbn1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIG1heCA/IGhlaWdodFN0eWxlc1tgbWF4LWhlaWdodC0tJHttYXh9YF0gOiB1bmRlZmluZWQsXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuICAgIF0sXG4gICAgJGhlaWdodDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBjb2xvclN0eWxlcyBmcm9tIFwiLi9jb2xvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBDb2xvciB9IGZyb20gXCIuLi9fc2hhcmVkL2NvbG9yc1wiO1xuXG5leHBvcnQgdHlwZSBUZXh0Q29sb3IgPSBDb2xvciB8IFRleHRDb2xvckFsaWFzO1xuXG5leHBvcnQgdHlwZSAkQ29sb3JQcm9wcyA9IHtcbiAgcmVhZG9ubHkgbm9ybWFsPzogVGV4dENvbG9yO1xuICByZWFkb25seSBob3Zlcj86IFRleHRDb2xvcjtcbiAgcmVhZG9ubHkgZm9jdXM/OiBUZXh0Q29sb3I7XG4gIHJlYWRvbmx5IGRpc2FibGVkPzogVGV4dENvbG9yO1xufTtcblxuZXhwb3J0IHR5cGUgQ29sb3JQbHVnaW5Qcm9wcyA9IHsgcmVhZG9ubHkgJGNvbG9yPzogVGV4dENvbG9yIHwgJENvbG9yUHJvcHMgfTtcbmV4cG9ydCB0eXBlIFRleHRDb2xvckFsaWFzID0ga2V5b2YgdHlwZW9mIGFsaWFzVG9Ob21pbmFsO1xuXG5jb25zdCBhbGlhc1RvTm9taW5hbCA9IHtcbiAgdGV4dE11dGVkOiBcImdyZXkyNVwiLFxuICB0ZXh0RGVmYXVsdDogXCJncmV5MjBcIixcbiAgdGV4dEhpZ2hsaWdodDogXCJncmV5MTBcIixcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IGlzVGV4dENvbG9yQWxpYXMgPSAoY29sb3I6IFRleHRDb2xvcik6IGNvbG9yIGlzIFRleHRDb2xvckFsaWFzID0+IGNvbG9yIGluIGFsaWFzVG9Ob21pbmFsO1xuXG5leHBvcnQgY29uc3QgY29sb3JQbHVnaW4gPSBnZXRQbHVnaW48Q29sb3JQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkY2xhc3NOYW1lLCAkY29sb3IgfSA9IHByb3BzO1xuICBjb25zdCB7IG5vcm1hbCwgaG92ZXIsIGZvY3VzLCBkaXNhYmxlZCB9ID0gdHlwZW9mICRjb2xvciA9PT0gXCJzdHJpbmdcIiA/IHsgbm9ybWFsOiAkY29sb3IgfSA6ICgkY29sb3IgPz8ge30pO1xuXG4gIGNvbnN0IG5vcm1hbENvbG9yID0gbm9ybWFsID8gKGlzVGV4dENvbG9yQWxpYXMobm9ybWFsKSA/IGFsaWFzVG9Ob21pbmFsW25vcm1hbF0gOiBub3JtYWwpIDogdW5kZWZpbmVkO1xuICBjb25zdCBob3ZlckNvbG9yID0gaG92ZXIgPyAoaXNUZXh0Q29sb3JBbGlhcyhob3ZlcikgPyBhbGlhc1RvTm9taW5hbFtob3Zlcl0gOiBob3ZlcikgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGZvY3VzQ29sb3IgPSBmb2N1cyA/IChpc1RleHRDb2xvckFsaWFzKGZvY3VzKSA/IGFsaWFzVG9Ob21pbmFsW2ZvY3VzXSA6IGZvY3VzKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgZGlzYWJsZWRDb2xvciA9IGRpc2FibGVkID8gKGlzVGV4dENvbG9yQWxpYXMoZGlzYWJsZWQpID8gYWxpYXNUb05vbWluYWxbZGlzYWJsZWRdIDogZGlzYWJsZWQpIDogdW5kZWZpbmVkO1xuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW1xuICAgICAgJGNsYXNzTmFtZSxcbiAgICAgIG5vcm1hbENvbG9yID8gY29sb3JTdHlsZXNbYGNvbG9yLS0ke25vcm1hbENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgICAgaG92ZXJDb2xvciA/IGNvbG9yU3R5bGVzW2Bjb2xvci1ob3Zlci0tJHtob3ZlckNvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgICAgZm9jdXNDb2xvciA/IGNvbG9yU3R5bGVzW2Bjb2xvci1mb2N1cy0tJHtmb2N1c0NvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgICAgZGlzYWJsZWRDb2xvciA/IGNvbG9yU3R5bGVzW2Bjb2xvci1kaXNhYmxlZC0tJHtkaXNhYmxlZENvbG9yfWBdIDogdW5kZWZpbmVkLFxuICAgIF0sXG4gICAgJGNvbG9yOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9jb2xvci9jb2xvci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImNvbG9yLS1pbmhlcml0XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0taW5oZXJpdF9fX0dNcC1hXCIsXG4gIFwiY29sb3ItaG92ZXItLWluaGVyaXRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1pbmhlcml0X19fZkdMSzZcIixcbiAgXCJjb2xvci1mb2N1cy0taW5oZXJpdFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWluaGVyaXRfX195R2ZDZVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1pbmhlcml0XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0taW5oZXJpdF9fX3M5TUNJXCIsXG4gIFwiY29sb3ItLXdoaXRlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0td2hpdGVfX19mOGMxc1wiLFxuICBcImNvbG9yLWhvdmVyLS13aGl0ZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXdoaXRlX19fTTZhUmdcIixcbiAgXCJjb2xvci1mb2N1cy0td2hpdGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS13aGl0ZV9fX2k2dVl6XCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLXdoaXRlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0td2hpdGVfX19udGpZRVwiLFxuICBcImNvbG9yLS10cmFuc3BhcmVudFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLXRyYW5zcGFyZW50X19fMXZmcnZcIixcbiAgXCJjb2xvci1ob3Zlci0tdHJhbnNwYXJlbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS10cmFuc3BhcmVudF9fX3htN0JEXCIsXG4gIFwiY29sb3ItZm9jdXMtLXRyYW5zcGFyZW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tdHJhbnNwYXJlbnRfX19wZGUtV1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS10cmFuc3BhcmVudFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLXRyYW5zcGFyZW50X19fWjBRdVVcIixcbiAgXCJjb2xvci0tZ3JleTEwMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWdyZXkxMDBfX19DcER6dlwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5MTAwXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tZ3JleTEwMF9fX0dGQ29tXCIsXG4gIFwiY29sb3ItZm9jdXMtLWdyZXkxMDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5MTAwX19fQU03b01cIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tZ3JleTEwMFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWdyZXkxMDBfX184U1J1SlwiLFxuICBcImNvbG9yLS1ncmV5ODBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5ODBfX19ENzFmblwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5ODBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5ODBfX19zQkl4YlwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5ODBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5ODBfX184UGx5b1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5ODBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5ODBfX193MW5wY1wiLFxuICBcImNvbG9yLS1ncmV5NjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5NjBfX19VVDI4WFwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5NjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5NjBfX194ZlptYlwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5NjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5NjBfX19rd20yR1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5NjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5NjBfX19tZlZncVwiLFxuICBcImNvbG9yLS1ncmV5NDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5NDBfX19pUk96UlwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5NDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5NDBfX19yYk4wNFwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5NDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5NDBfX19vSVJVZlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5NDBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5NDBfX19OaVp4aVwiLFxuICBcImNvbG9yLS1ncmV5MzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MzBfX19Md25MMlwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5MzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5MzBfX19YN2gtaFwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5MzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5MzBfX19RVWI0U1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5MzBfX19LcTlnV1wiLFxuICBcImNvbG9yLS1ncmV5MjVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MjVfX19FTlQ1b1wiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5MjVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5MjVfX190WXlnRFwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5MjVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5MjVfX19UeGk1bFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MjVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5MjVfX19ibS0xY1wiLFxuICBcImNvbG9yLS1ncmV5MjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MjBfX19FRjJPTFwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5MjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5MjBfX191UHRYVVwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5MjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5MjBfX193M3JXY1wiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MjBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5MjBfX192cHV5MVwiLFxuICBcImNvbG9yLS1ncmV5MTBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5MTBfX19sNWFacFwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5MTBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5MTBfX180QXBjclwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5MTBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5MTBfX19Wd1c3MVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5MTBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5MTBfX19ZNXF5d1wiLFxuICBcImNvbG9yLS1ncmV5NzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ncmV5NzBfX19DOUhITVwiLFxuICBcImNvbG9yLWhvdmVyLS1ncmV5NzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5NzBfX18za3J0TFwiLFxuICBcImNvbG9yLWZvY3VzLS1ncmV5NzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ncmV5NzBfX19wM2lleFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5NzBcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ncmV5NzBfX184NkpxVlwiLFxuICBcImNvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tZ3JleTgwQWxwaGE4NV9fXy0zVGRkXCIsXG4gIFwiY29sb3ItaG92ZXItLWdyZXk4MEFscGhhODVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ncmV5ODBBbHBoYTg1X19fRG9mbzBcIixcbiAgXCJjb2xvci1mb2N1cy0tZ3JleTgwQWxwaGE4NVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWdyZXk4MEFscGhhODVfX19UNEJnRlwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ncmV5ODBBbHBoYTg1XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tZ3JleTgwQWxwaGE4NV9fX2VSM3pzXCIsXG4gIFwiY29sb3ItLXByaW1hcnlcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1wcmltYXJ5X19fMDhXblZcIixcbiAgXCJjb2xvci1ob3Zlci0tcHJpbWFyeVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLXByaW1hcnlfX19WdC0zZlwiLFxuICBcImNvbG9yLWZvY3VzLS1wcmltYXJ5XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tcHJpbWFyeV9fX3Q1cjAyXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLXByaW1hcnlcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1wcmltYXJ5X19fMFhzazlcIixcbiAgXCJjb2xvci0tc3VjY2Vzc1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLXN1Y2Nlc3NfX193b1RGMlwiLFxuICBcImNvbG9yLWhvdmVyLS1zdWNjZXNzXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tc3VjY2Vzc19fXzdFSVdjXCIsXG4gIFwiY29sb3ItZm9jdXMtLXN1Y2Nlc3NcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1zdWNjZXNzX19fS1owZGlcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tc3VjY2Vzc1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLXN1Y2Nlc3NfX19OZTJXSVwiLFxuICBcImNvbG9yLS1ub3RpY2VcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1ub3RpY2VfX182RDZLR1wiLFxuICBcImNvbG9yLWhvdmVyLS1ub3RpY2VcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1ub3RpY2VfX19lT2RVcFwiLFxuICBcImNvbG9yLWZvY3VzLS1ub3RpY2VcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1ub3RpY2VfX19OZ1VSTFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1ub3RpY2VcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1ub3RpY2VfX19zRG84clwiLFxuICBcImNvbG9yLS13YXJuaW5nXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0td2FybmluZ19fX2ZLYndkXCIsXG4gIFwiY29sb3ItaG92ZXItLXdhcm5pbmdcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS13YXJuaW5nX19fR2oyaE1cIixcbiAgXCJjb2xvci1mb2N1cy0td2FybmluZ1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLXdhcm5pbmdfX19jQm10OVwiLFxuICBcImNvbG9yLWRpc2FibGVkLS13YXJuaW5nXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0td2FybmluZ19fX3JYRGJSXCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci0tY3JpdGljYWxfX19zaEZCcVwiLFxuICBcImNvbG9yLWhvdmVyLS1jcml0aWNhbFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNyaXRpY2FsX19fUlFXWllcIixcbiAgXCJjb2xvci1mb2N1cy0tY3JpdGljYWxcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1jcml0aWNhbF9fXzlZbENZXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1kaXNhYmxlZC0tY3JpdGljYWxfX19oMzctM1wiLFxuICBcImNvbG9yLS1zdWNjZXNzVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLXN1Y2Nlc3NUaW50X19fRGQwUnlcIixcbiAgXCJjb2xvci1ob3Zlci0tc3VjY2Vzc1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWhvdmVyLS1zdWNjZXNzVGludF9fX0xLbHpnXCIsXG4gIFwiY29sb3ItZm9jdXMtLXN1Y2Nlc3NUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tc3VjY2Vzc1RpbnRfX19iUVlocFwiLFxuICBcImNvbG9yLWRpc2FibGVkLS1zdWNjZXNzVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLXN1Y2Nlc3NUaW50X19fbHNtSmhcIixcbiAgXCJjb2xvci0td2FybmluZ1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS13YXJuaW5nVGludF9fX2ozUFpYXCIsXG4gIFwiY29sb3ItaG92ZXItLXdhcm5pbmdUaW50XCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0td2FybmluZ1RpbnRfX19qbjF3dVwiLFxuICBcImNvbG9yLWZvY3VzLS13YXJuaW5nVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLXdhcm5pbmdUaW50X19fQzZ6bkRcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0td2FybmluZ1RpbnRcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS13YXJuaW5nVGludF9fX1c2akk4XCIsXG4gIFwiY29sb3ItLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsVGludF9fX3lSSmFBXCIsXG4gIFwiY29sb3ItaG92ZXItLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWNyaXRpY2FsVGludF9fX1Zzb041XCIsXG4gIFwiY29sb3ItZm9jdXMtLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZm9jdXMtLWNyaXRpY2FsVGludF9fXzh0RG1nXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsVGludFwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWNyaXRpY2FsVGludF9fX1RBQkhrXCIsXG4gIFwiY29sb3ItLWxpbmtcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLS1saW5rX19fblNNbTlcIixcbiAgXCJjb2xvci1ob3Zlci0tbGlua1wiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItaG92ZXItLWxpbmtfX19HbmlZM1wiLFxuICBcImNvbG9yLWZvY3VzLS1saW5rXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1mb2N1cy0tbGlua19fXzg2SnRmXCIsXG4gIFwiY29sb3ItZGlzYWJsZWQtLWxpbmtcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWRpc2FibGVkLS1saW5rX19fRm9KNVhcIixcbiAgXCJjb2xvci0tY29kZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItLWNvZGVfX19uQ09qQVwiLFxuICBcImNvbG9yLWhvdmVyLS1jb2RlXCI6IFwiY29sb3ItbW9kdWxlX19jb2xvci1ob3Zlci0tY29kZV9fX1Y1dXVWXCIsXG4gIFwiY29sb3ItZm9jdXMtLWNvZGVcIjogXCJjb2xvci1tb2R1bGVfX2NvbG9yLWZvY3VzLS1jb2RlX19fSUFLN2RcIixcbiAgXCJjb2xvci1kaXNhYmxlZC0tY29kZVwiOiBcImNvbG9yLW1vZHVsZV9fY29sb3ItZGlzYWJsZWQtLWNvZGVfX193M1ZVd1wiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGdyYWRpZW50U3R5bGVzIGZyb20gXCIuL2dyYWRpZW50Lm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEdyYWRpZW50UGx1Z2luUHJvcHMgPSB7ICRncmFkaWVudD86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGdyYWRpZW50UGx1Z2luID0gZ2V0UGx1Z2luPEdyYWRpZW50UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiAoe1xuICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgcHJvcHMuJGdyYWRpZW50ID8gZ3JhZGllbnRTdHlsZXMuZ3JhZGllbnQgOiB1bmRlZmluZWRdLFxuICAkZ3JhZGllbnQ6IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ncmFkaWVudC9ncmFkaWVudC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImdyYWRpZW50XCI6IFwiZ3JhZGllbnQtbW9kdWxlX19ncmFkaWVudF9fX01EQnZGXCJcbn07IiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBEcmFnZ2FibGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL2dldC1kcmFnZ2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHsgYWN0aW9uIH0gZnJvbSBcIm1vYnhcIjtcbmltcG9ydCB7IGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3NoYXJlZC9kcmFnZ2VkLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vZHJhZ2dhYmxlLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgZHJhZ2dhYmxlUGx1Z2luID0gZ2V0UGx1Z2luPERyYWdnYWJsZVBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRkcmFnZ2FibGUpIHtcbiAgICByZXR1cm4geyAkZHJhZ2dhYmxlOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IFtkcmFnZ2luZywgc2V0RHJhZ2dpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IHsgY29udGV4dCwgaXRlbSB9ID0gcHJvcHMuJGRyYWdnYWJsZTtcblxuICBjb25zdCBkcmFnZ2VkSXRlbVN0YXRlID0gdXNlU3luY0luamVjdChkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSwgY29udGV4dCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkcmFnZ2FibGU6IHRydWUsXG5cbiAgICAkdmlzdWFsbHlIaWRkZW46IGRyYWdnaW5nLFxuXG4gICAgb25EcmFnU3RhcnQ6IGFjdGlvbigoZXZlbnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIGV2ZW50LmRhdGFUcmFuc2Zlci5lZmZlY3RBbGxvd2VkID0gXCJtb3ZlXCI7XG5cbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIHByb3BzLm9uRHJhZ1N0YXJ0Py4oZXZlbnQpO1xuXG4gICAgICBtYWtlQ2hyb21pdW1Ob3RHbGl0Y2hXaGVuRHJhZ2dpbmcoZXZlbnQpO1xuXG4gICAgICBkcmFnZ2VkSXRlbVN0YXRlLnNldChpdGVtKTtcblxuICAgICAgLy8gRG9uJ3Qgc2V0IGRyYWdnaW5nIHRvbyBlYXJseSwgYmVjYXVzZSBpdCB3b3VsZCBoaWRlIHRoZSBcImRyYWcgcHJldmlld1wiIGZvciBlbGVtZW50IGJlaW5nIGRyYWdnZWQuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0RHJhZ2dpbmcodHJ1ZSk7XG4gICAgICB9LCAwKTtcbiAgICB9KSxcblxuICAgIG9uRHJhZ0VuZDogYWN0aW9uKChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25EcmFnRW5kPy4oZXZlbnQpO1xuXG4gICAgICBkcmFnZ2VkSXRlbVN0YXRlLnNldCh1bmRlZmluZWQpO1xuICAgICAgc2V0RHJhZ2dpbmcoZmFsc2UpO1xuICAgIH0pLFxuXG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHN0eWxlcy5kcmFnZ2FibGVdLFxuXG4gICAgJGRyYWdnYWJsZTogdW5kZWZpbmVkLFxuICB9O1xufSk7XG5cbmNvbnN0IG1ha2VDaHJvbWl1bU5vdEdsaXRjaFdoZW5EcmFnZ2luZyA9IChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICBldmVudC5kYXRhVHJhbnNmZXIuc2V0RGF0YShcInRleHQvcGxhaW5cIiwgXCJzdHViLWRhdGEtdG8tZml4LWNocm9taXVtXCIpO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9kcmFnZ2FibGUtYW5kLWRyb3BwYWJsZS9kcmFnZ2FibGUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJkcmFnZ2FibGVcIjogXCJkcmFnZ2FibGUtbW9kdWxlX19kcmFnZ2FibGVfX19iakNBM1wiXG59OyIsICJpbXBvcnQgeyBkcmFnZ2VkSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZHJhZ2dlZC1pdGVtLXN0YXRlLmluamVjdGFibGVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgeyBtYWtlU3VyZURyYWdBbmREcm9wRXZlbnRzSGF2ZVRpbWVUb0hhcHBlbkluamVjdGFibGUgfSBmcm9tIFwiLi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi9tYWtlLXN1cmUtZHJhZy1hbmQtZHJvcC1ldmVudHMtaGF2ZS10aW1lLXRvLWhhcHBlbi5pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IERyb3BwYWJsZVBsdWdpblByb3BzIH0gZnJvbSBcIi4vZ2V0LWRyYWdnYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCBkcm9wcGFibGVQbHVnaW4gPSBnZXRQbHVnaW48RHJvcHBhYmxlUGx1Z2luUHJvcHM+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRkcm9wcGFibGUpIHtcbiAgICByZXR1cm4geyAkZHJvcHBhYmxlOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgY29udGV4dCwgb25Ecm9wIH0gPSBwcm9wcy4kZHJvcHBhYmxlO1xuXG4gIGNvbnN0IGRyYWdnZWRJdGVtU3RhdGUgPSB1c2VTeW5jSW5qZWN0KGRyYWdnZWRJdGVtU3RhdGVJbmplY3RhYmxlLCBjb250ZXh0KTtcbiAgY29uc3Qgc29tZSA9IHVzZVN5bmNJbmplY3QobWFrZVN1cmVEcmFnQW5kRHJvcEV2ZW50c0hhdmVUaW1lVG9IYXBwZW5JbmplY3RhYmxlKTtcblxuICBjb25zdCBkcmFnZ2VkSXRlbSA9IGRyYWdnZWRJdGVtU3RhdGUuZ2V0KCk7XG5cbiAgcmV0dXJuIHtcbiAgICBvbkRyYWdPdmVyOiAoZXZlbnQ6IFJlYWN0LkRyYWdFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICAgIHByb3BzLm9uRHJhZ092ZXI/LihldmVudCk7XG5cbiAgICAgIGlmIChkcmFnZ2VkSXRlbSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBvbkRyb3A6IChldmVudDogUmVhY3QuRHJhZ0V2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgICAgcHJvcHMub25Ecm9wPy4oZXZlbnQpO1xuXG4gICAgICBpZiAoZHJhZ2dlZEl0ZW0pIHtcbiAgICAgICAgc29tZSgoKSA9PiB7XG4gICAgICAgICAgb25Ecm9wKGRyYWdnZWRJdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgICRkcm9wcGFibGU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHJhbnNpdGlvblN0eWxlcyBmcm9tIFwiLi90cmFuc2l0aW9uLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIFRyYW5zaXRpb25QbHVnaW5Qcm9wcyA9IHsgJHRyYW5zaXRpb24/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2l0aW9uUGx1Z2luID0gZ2V0UGx1Z2luPFRyYW5zaXRpb25QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCB7IFt0cmFuc2l0aW9uU3R5bGVzLnRyYW5zaXRpb25dOiAhIXByb3BzLiR0cmFuc2l0aW9uIH1dLFxuICAkdHJhbnNpdGlvbjogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3RyYW5zaXRpb24vdHJhbnNpdGlvbi5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInRyYW5zaXRpb25cIjogXCJ0cmFuc2l0aW9uLW1vZHVsZV9fdHJhbnNpdGlvbl9fX1N3d09FXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgb2Zmc2V0U3R5bGVzIGZyb20gXCIuL29mZnNldC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBEaXJlY3Rpb24gfSBmcm9tIFwiLi4vX3NoYXJlZC9kaXJlY3Rpb25zXCI7XG5pbXBvcnQgdHlwZSB7IFRTaGlydFNpemUgfSBmcm9tIFwiLi4vX3NoYXJlZC9zaXplc1wiO1xuXG5leHBvcnQgdHlwZSBPZmZzZXRQbHVnaW5Qcm9wcyA9IHsgJG9mZnNldD86IHsgZGlyZWN0aW9uOiBEaXJlY3Rpb247IHNpemU6IFRTaGlydFNpemUgfSB9O1xuXG5leHBvcnQgY29uc3Qgb2Zmc2V0UGx1Z2luID0gZ2V0UGx1Z2luPE9mZnNldFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRvZmZzZXQpIHtcbiAgICByZXR1cm4geyAkb2Zmc2V0OiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIG9mZnNldFN0eWxlc1tgb2Zmc2V0X18ke3Byb3BzLiRvZmZzZXQuZGlyZWN0aW9ufS0tJHtwcm9wcy4kb2Zmc2V0LnNpemV9YF1dLFxuXG4gICAgJG9mZnNldDogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvb2Zmc2V0L29mZnNldC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcIm9mZnNldF9fdG9wLS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXplcm9fX19hcHJPclwiLFxuICBcIm9mZnNldF9fYm90dG9tLS16ZXJvXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLXplcm9fX19iRk55NFwiLFxuICBcIm9mZnNldF9fbGVmdC0temVyb1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0temVyb19fXzVLZE14XCIsXG4gIFwib2Zmc2V0X19yaWdodC0temVyb1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXplcm9fX19EcmowdVwiLFxuICBcIm9mZnNldF9fdG9wLS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tNHhzX19fRmE4emVcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tNHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTR4c19fX0pjN1p3XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS00eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTR4c19fX3Q3akd6XCIsXG4gIFwib2Zmc2V0X19yaWdodC0tNHhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tNHhzX19fMm1jTFpcIixcbiAgXCJvZmZzZXRfX3RvcC0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTN4c19fX2hIeEFLXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTN4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS0zeHNfX19xUDNMdlwiLFxuICBcIm9mZnNldF9fbGVmdC0tM3hzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS0zeHNfX19ObUQ3aVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTN4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTN4c19fXzlZbHVlXCIsXG4gIFwib2Zmc2V0X190b3AtLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS14eHNfX19aQUt4b1wiLFxuICBcIm9mZnNldF9fYm90dG9tLS14eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0teHhzX19fazlGNHhcIixcbiAgXCJvZmZzZXRfX2xlZnQtLXh4c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0teHhzX19fRUVmNERcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS14eHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS14eHNfX18tSjc1S1wiLFxuICBcIm9mZnNldF9fdG9wLS14c1wiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS14c19fX2lycG5hXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLXhzX19fM0dYb0hcIixcbiAgXCJvZmZzZXRfX2xlZnQtLXhzXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS14c19fXzdXWUpJXCIsXG4gIFwib2Zmc2V0X19yaWdodC0teHNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS14c19fX3FZLWxPXCIsXG4gIFwib2Zmc2V0X190b3AtLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tc19fX05kUktxXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXNcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tc19fX1lLZjllXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS1zXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS1zX19fbWl4cEFcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS1zXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tc19fX202amY1XCIsXG4gIFwib2Zmc2V0X190b3AtLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tbV9fX0VYa3FpXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLW1cIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tbV9fX092bFlyXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS1tXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS1tX19fWFMtUEdcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS1tXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tbV9fX28welotXCIsXG4gIFwib2Zmc2V0X190b3AtLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tbF9fXzBiR2FQXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLWxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tbF9fX1MxLUxXXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS1sXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS1sX19faFMxYjNcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS1sXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tbF9fX3ZRNFl6XCIsXG4gIFwib2Zmc2V0X190b3AtLXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXhsX19fNk1mS1ZcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0teGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0teGxfX19kZ2JXV1wiLFxuICBcIm9mZnNldF9fbGVmdC0teGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLXhsX19fMGFXQjVcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS14bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXhsX19feVB6OE9cIixcbiAgXCJvZmZzZXRfX3RvcC0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLXh4bF9fX2l2SlJkXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLXh4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS14eGxfX19adEU2WlwiLFxuICBcIm9mZnNldF9fbGVmdC0teHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS14eGxfX180bEstRVwiLFxuICBcIm9mZnNldF9fcmlnaHQtLXh4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLXh4bF9fX0VNOHJCXCIsXG4gIFwib2Zmc2V0X190b3AtLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS0zeGxfX19BOUJrblwiLFxuICBcIm9mZnNldF9fYm90dG9tLS0zeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tM3hsX19fekM4LWFcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTN4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tM3hsX19fV3JMLVRcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS0zeGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS0zeGxfX19uZVdhcFwiLFxuICBcIm9mZnNldF9fdG9wLS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tNHhsX19fQldROWlcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tNHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTR4bF9fXzhYNGtFXCIsXG4gIFwib2Zmc2V0X19sZWZ0LS00eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTR4bF9fX0hjNDBUXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tNHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tNHhsX19fc1JqR1FcIixcbiAgXCJvZmZzZXRfX3RvcC0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTV4bF9fXzZ1UlhZXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTV4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS01eGxfX19uV2M2blwiLFxuICBcIm9mZnNldF9fbGVmdC0tNXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS01eGxfX19Wa1d6SlwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTV4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTV4bF9fX2NuZ0tFXCIsXG4gIFwib2Zmc2V0X190b3AtLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS02eGxfX190cjdoSFwiLFxuICBcIm9mZnNldF9fYm90dG9tLS02eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tNnhsX19fQ1lVMU1cIixcbiAgXCJvZmZzZXRfX2xlZnQtLTZ4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tNnhsX19fMEl1TWJcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS02eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS02eGxfX18tMXN3b1wiLFxuICBcIm9mZnNldF9fdG9wLS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3RvcC0tN3hsX19fTjctWGRcIixcbiAgXCJvZmZzZXRfX2JvdHRvbS0tN3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTd4bF9fXy1wQWh5XCIsXG4gIFwib2Zmc2V0X19sZWZ0LS03eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2xlZnQtLTd4bF9fX214VnJrXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tN3hsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19yaWdodC0tN3hsX19fbnp1bFBcIixcbiAgXCJvZmZzZXRfX3RvcC0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTh4bF9fX2VNLTdXXCIsXG4gIFwib2Zmc2V0X19ib3R0b20tLTh4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fYm90dG9tLS04eGxfX19lbnBFbVwiLFxuICBcIm9mZnNldF9fbGVmdC0tOHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19sZWZ0LS04eGxfX19qaUZZblwiLFxuICBcIm9mZnNldF9fcmlnaHQtLTh4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTh4bF9fX0ZOcU5zXCIsXG4gIFwib2Zmc2V0X190b3AtLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fdG9wLS05eGxfX18tQ21oOVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS05eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX2JvdHRvbS0tOXhsX19fdHdFM3RcIixcbiAgXCJvZmZzZXRfX2xlZnQtLTl4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tOXhsX19fNzVtdWJcIixcbiAgXCJvZmZzZXRfX3JpZ2h0LS05eGxcIjogXCJvZmZzZXQtbW9kdWxlX19vZmZzZXRfX3JpZ2h0LS05eGxfX19rQ1NzQ1wiLFxuICBcIm9mZnNldF9fdG9wLS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTEweGxfX19qbGJoWlwiLFxuICBcIm9mZnNldF9fYm90dG9tLS0xMHhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTEweGxfX19yZXlUcVwiLFxuICBcIm9mZnNldF9fbGVmdC0tMTB4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tMTB4bF9fXzlwM2NuXCIsXG4gIFwib2Zmc2V0X19yaWdodC0tMTB4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTEweGxfX190LXZvN1wiLFxuICBcIm9mZnNldF9fdG9wLS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X190b3AtLTExeGxfX18wbnJaYVwiLFxuICBcIm9mZnNldF9fYm90dG9tLS0xMXhsXCI6IFwib2Zmc2V0LW1vZHVsZV9fb2Zmc2V0X19ib3R0b20tLTExeGxfX193Y2ZXZ1wiLFxuICBcIm9mZnNldF9fbGVmdC0tMTF4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fbGVmdC0tMTF4bF9fX3NJdGc1XCIsXG4gIFwib2Zmc2V0X19yaWdodC0tMTF4bFwiOiBcIm9mZnNldC1tb2R1bGVfX29mZnNldF9fcmlnaHQtLTExeGxfX19OVXAtblwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IG9mZnNldFN0eWxlcyBmcm9tIFwiLi9vZmZzZXQtY2hpbGRyZW4ubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgRGlyZWN0aW9uIH0gZnJvbSBcIi4uL19zaGFyZWQvZGlyZWN0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBUU2hpcnRTaXplIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcblxuZXhwb3J0IHR5cGUgT2Zmc2V0Q2hpbGRyZW5QbHVnaW5Qcm9wcyA9IHsgJG9mZnNldENoaWxkcmVuPzogeyBkaXJlY3Rpb246IERpcmVjdGlvbjsgc2l6ZTogVFNoaXJ0U2l6ZSB9IH07XG5cbmV4cG9ydCBjb25zdCBvZmZzZXRDaGlsZHJlblBsdWdpbiA9IGdldFBsdWdpbjxPZmZzZXRDaGlsZHJlblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBpZiAoIXByb3BzLiRvZmZzZXRDaGlsZHJlbikge1xuICAgIHJldHVybiB7ICRvZmZzZXRDaGlsZHJlbjogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgICBvZmZzZXRTdHlsZXNbYG9mZnNldC1jaGlsZHJlbl9fJHtwcm9wcy4kb2Zmc2V0Q2hpbGRyZW4uZGlyZWN0aW9ufS0tJHtwcm9wcy4kb2Zmc2V0Q2hpbGRyZW4uc2l6ZX1gXSxcbiAgICBdLFxuXG4gICAgJG9mZnNldENoaWxkcmVuOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vZmZzZXQtY2hpbGRyZW4vb2Zmc2V0LWNoaWxkcmVuLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0temVyb19fXzhseUdpXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXplcm9cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0temVyb19fX0RiSTNqXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS16ZXJvXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS16ZXJvX19faWhuU1hcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS16ZXJvXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0temVyb19fX1E0TFhPXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS00eHNfX19MZk0weFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNHhzX19fWWV5dzZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTR4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhzX19fVEFhREtcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS00eHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS00eHNfX182aVdVb1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tM3hzX19fdXJraWdcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tM3hzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTN4c19fX3lYSDN6XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0zeHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTN4c19fX2dBelZBXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tM3hzX19fV3I0OGNcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLXh4c19fX2RxVFRTXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXh4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14eHNfX19FcDY2UlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0teHhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14eHNfX185dlBZZFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXh4c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXh4c19fX2p1dUtwXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLXhzXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLXhzX19fbnc1YWFcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHNfX19KZ0M2bFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0teHNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXhzX19fY3h0VnhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS14c1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXhzX19fMmlQNWdcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS1zX19fSG0yaXBcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tc1wiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1zX19fV2EzOE5cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXNfX19XV0JGaFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXNcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS1zX19fd3pGVjlcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS1tX19fWmpPQ01cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tbVwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1tX19faXBEa1dcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLW1cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLW1fX19ZOHFEV1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLW1cIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS1tX19fNFhKZnZcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS1sX19fUXZUUm9cIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tbFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS1sX19fRUdrQVJcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLWxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLWxfX19VblVIdlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLWxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS1sX19falZOTlhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0teGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teGxfX19FTmNjWFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS14bF9fX2JtcnNhXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0teGxfX19Lam8tY1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teGxfX19ESFJ1eVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0teHhsX19fb25qZUFcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0teHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLXh4bF9fX3YtMVRsXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS14eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLXh4bF9fX2ktYzJoXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0teHhsX19fcUcwODVcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTN4bF9fX0w5bXNRXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTN4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS0zeGxfX193TU1ibVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tM3hsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0zeGxfX19iU1NPclwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTN4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTN4bF9fX2U5Vzd2XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS00eGxfX19WQWsteFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS00eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNHhsX19fRHl5NVhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTR4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tNHhsX19fWDB4NWFcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS00eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS00eGxfX19RdWwtalwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tNXhsX19fZVc1UWtcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tNXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTV4bF9fX3BpYS1aXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS01eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTV4bF9fX2lBQWhvXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tNXhsX19feGp1Q0xcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTZ4bF9fX0MwV3ZrXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTZ4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS02eGxfX184NHpwLVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tNnhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS02eGxfX19pdWVCRlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTZ4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTZ4bF9fX1VOUS1CXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fdG9wLS03eGxfX19oUGNsY1wiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fYm90dG9tLS03eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tN3hsX19fNVJad1FcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTd4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fbGVmdC0tN3hsX19fSElwNkJcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS03eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS03eGxfX19GaU9FSVwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fdG9wLS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tOHhsX19fZ3Q0ZnVcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tOHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTh4bF9fX2ZQRU9EXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS04eGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2xlZnQtLTh4bF9fXy10VGZQXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tOHhsX19fZFVYUmhcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3RvcC0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX190b3AtLTl4bF9fX2tSTkE2XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTl4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fYm90dG9tLS05eGxfX19qYkhhQlwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fbGVmdC0tOXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS05eGxfX19TRmdQbFwiLFxuICBcIm9mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTl4bFwiOiBcIm9mZnNldC1jaGlsZHJlbi1tb2R1bGVfX29mZnNldC1jaGlsZHJlbl9fcmlnaHQtLTl4bF9fX1RKaWVIXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTB4bF9fXy11dE9uXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTEweGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTB4bF9fX2E1OXdUXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0xMHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0xMHhsX19fS2NlemVcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMHhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tMTB4bF9fX05vbVl1XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX190b3AtLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX3RvcC0tMTF4bF9fX1NZdGduXCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19ib3R0b20tLTExeGxcIjogXCJvZmZzZXQtY2hpbGRyZW4tbW9kdWxlX19vZmZzZXQtY2hpbGRyZW5fX2JvdHRvbS0tMTF4bF9fX1A2MnU0XCIsXG4gIFwib2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0xMXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19sZWZ0LS0xMXhsX19fZzBvb2VcIixcbiAgXCJvZmZzZXQtY2hpbGRyZW5fX3JpZ2h0LS0xMXhsXCI6IFwib2Zmc2V0LWNoaWxkcmVuLW1vZHVsZV9fb2Zmc2V0LWNoaWxkcmVuX19yaWdodC0tMTF4bF9fX0VPV0wtXCJcbn07IiwgImltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgaGlkZGVuU3R5bGVzIGZyb20gXCIuL2hpZGRlbi5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBIaWRkZW5QbHVnaW5Qcm9wcyA9IHsgJGhpZGRlbj86IGJvb2xlYW4gfTtcblxuZXhwb3J0IGNvbnN0IGhpZGRlblBsdWdpbiA9IGdldFBsdWdpbjxIaWRkZW5QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCB7IFtoaWRkZW5TdHlsZXMuaGlkZGVuXTogISFwcm9wcy4kaGlkZGVuIH1dLFxuXG4gICRoaWRkZW46IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9oaWRkZW4vaGlkZGVuLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiaGlkZGVuXCI6IFwiaGlkZGVuLW1vZHVsZV9faGlkZGVuX19fblVVaTFcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCBtYXJnaW5TdHlsZXMgZnJvbSBcIi4vbWFyZ2luLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBpc1N0cmluZyB9IGZyb20gXCJsb2Rhc2gvZnBcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5cbmV4cG9ydCB0eXBlIERpcmVjdGlvbmFsTWFyZ2luID0ge1xuICB0b3A/OiBUU2hpcnRTaXplO1xuICBib3R0b20/OiBUU2hpcnRTaXplO1xuICBsZWZ0PzogVFNoaXJ0U2l6ZTtcbiAgcmlnaHQ/OiBUU2hpcnRTaXplO1xuICBob3Jpem9udGFsPzogVFNoaXJ0U2l6ZTtcbiAgdmVydGljYWw/OiBUU2hpcnRTaXplO1xufTtcblxuZXhwb3J0IHR5cGUgTWFyZ2luUGx1Z2luUHJvcHMgPSB7ICRtYXJnaW4/OiBib29sZWFuIHwgRGlyZWN0aW9uYWxNYXJnaW4gfCBUU2hpcnRTaXplIHwgXCJhdXRvXCIgfTtcblxuZXhwb3J0IGNvbnN0IG1hcmdpblBsdWdpbiA9IGdldFBsdWdpbjxNYXJnaW5QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgaWYgKCFwcm9wcy4kbWFyZ2luKSB7XG4gICAgcmV0dXJuIHsgJG1hcmdpbjogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCBtYXJnaW4gPSBwcm9wcy4kbWFyZ2luID09PSB0cnVlID8gXCJ4c1wiIDogcHJvcHMuJG1hcmdpbjtcblxuICBpZiAoaXNTdHJpbmcobWFyZ2luKSkge1xuICAgIHJldHVybiB7XG4gICAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgbWFyZ2luU3R5bGVzW2BtYXJnaW4tLSR7bWFyZ2lufWBdXSxcbiAgICAgICRtYXJnaW46IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgdG9wU2l6ZSA9IG1hcmdpbi50b3AgfHwgbWFyZ2luLnZlcnRpY2FsO1xuICBjb25zdCBib3R0b21TaXplID0gbWFyZ2luLmJvdHRvbSB8fCBtYXJnaW4udmVydGljYWw7XG4gIGNvbnN0IHJpZ2h0U2l6ZSA9IG1hcmdpbi5yaWdodCB8fCBtYXJnaW4uaG9yaXpvbnRhbDtcbiAgY29uc3QgbGVmdFNpemUgPSBtYXJnaW4ubGVmdCB8fCBtYXJnaW4uaG9yaXpvbnRhbDtcblxuICByZXR1cm4ge1xuICAgICRjbGFzc05hbWU6IFtcbiAgICAgIHByb3BzLiRjbGFzc05hbWUsXG4gICAgICB0b3BTaXplID8gbWFyZ2luU3R5bGVzW2BtYXJnaW5fX3RvcC0tJHt0b3BTaXplfWBdIDogdW5kZWZpbmVkLFxuICAgICAgcmlnaHRTaXplID8gbWFyZ2luU3R5bGVzW2BtYXJnaW5fX3JpZ2h0LS0ke3JpZ2h0U2l6ZX1gXSA6IHVuZGVmaW5lZCxcbiAgICAgIGJvdHRvbVNpemUgPyBtYXJnaW5TdHlsZXNbYG1hcmdpbl9fYm90dG9tLS0ke2JvdHRvbVNpemV9YF0gOiB1bmRlZmluZWQsXG4gICAgICBsZWZ0U2l6ZSA/IG1hcmdpblN0eWxlc1tgbWFyZ2luX19sZWZ0LS0ke2xlZnRTaXplfWBdIDogdW5kZWZpbmVkLFxuICAgIF0sXG4gICAgJG1hcmdpbjogdW5kZWZpbmVkLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvbWFyZ2luL21hcmdpbi5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcIm1hcmdpbl9fdG9wLS16ZXJvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXplcm9fX19nR0xxd1wiLFxuICBcIm1hcmdpbl9fdG9wLS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tNHhzX19fRXY4cjdcIixcbiAgXCJtYXJnaW5fX3RvcC0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTN4c19fX200WU9aXCIsXG4gIFwibWFyZ2luX190b3AtLXh4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS14eHNfX19vcFh2cFwiLFxuICBcIm1hcmdpbl9fdG9wLS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS14c19fX0pJallDXCIsXG4gIFwibWFyZ2luX190b3AtLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tc19fX1lOOERJXCIsXG4gIFwibWFyZ2luX190b3AtLW1cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tbV9fX1h3ay1TXCIsXG4gIFwibWFyZ2luX190b3AtLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tbF9fX0tUV2lHXCIsXG4gIFwibWFyZ2luX190b3AtLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXhsX19fOUlPYlpcIixcbiAgXCJtYXJnaW5fX3RvcC0teHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLXh4bF9fXzNNV3pwXCIsXG4gIFwibWFyZ2luX190b3AtLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS0zeGxfX19NOHhIM1wiLFxuICBcIm1hcmdpbl9fdG9wLS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tNHhsX19fcnZOSFJcIixcbiAgXCJtYXJnaW5fX3RvcC0tNXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTV4bF9fX0luRVJ4XCIsXG4gIFwibWFyZ2luX190b3AtLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS02eGxfX19QUy10NlwiLFxuICBcIm1hcmdpbl9fdG9wLS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3RvcC0tN3hsX19fUDVZYnpcIixcbiAgXCJtYXJnaW5fX3RvcC0tOHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTh4bF9fXzk2TW9LXCIsXG4gIFwibWFyZ2luX190b3AtLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fdG9wLS05eGxfX19vcGVEY1wiLFxuICBcIm1hcmdpbl9fdG9wLS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTEweGxfX19wdkY2eFwiLFxuICBcIm1hcmdpbl9fdG9wLS0xMXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX190b3AtLTExeGxfX19wQnpBbVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLXplcm9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS16ZXJvX19fQld3Nk9cIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS00eHNfX19yZFBPb1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTN4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTN4c19fXy1ZOU9PXCIsXG4gIFwibWFyZ2luX19yaWdodC0teHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0teHhzX19fSnJvQUFcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXhzX19fWmw4TWlcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS1zXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tc19fXzI0REluXCIsXG4gIFwibWFyZ2luX19yaWdodC0tbVwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLW1fX19aTGw2QlwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS1sX19fZUhTLUJcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS14bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLXhsX19fSVc4ZDRcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS14eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS14eGxfX18tT0Q3TFwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTN4bF9fX3RHWVJSXCIsXG4gIFwibWFyZ2luX19yaWdodC0tNHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tNHhsX19fRVhxaDNcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS01eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS01eGxfX19DdVlWR1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTZ4bF9fX0RLZ0RUXCIsXG4gIFwibWFyZ2luX19yaWdodC0tN3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19yaWdodC0tN3hsX19fRnp4NGJcIixcbiAgXCJtYXJnaW5fX3JpZ2h0LS04eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS04eGxfX19FbFNXTVwiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTl4bF9fXzBvYVR4XCIsXG4gIFwibWFyZ2luX19yaWdodC0tMTB4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fcmlnaHQtLTEweGxfX19RNTVQQ1wiLFxuICBcIm1hcmdpbl9fcmlnaHQtLTExeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX3JpZ2h0LS0xMXhsX19fcDAya25cIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS16ZXJvX19fbi1OVlFcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tNHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTR4c19fX2lKSmFhXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTN4c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS0zeHNfX19md1FkMVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0teHhzX19fNlVhZkhcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0teHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0teHNfX196MkoxZVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS1zXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLXNfX18tSEY2UVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLW1fX19KSk9SRVwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS1sXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLWxfX19HSVpjRlwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS14bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14bF9fX000QXdOXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS14eGxfX19UcjhtWlwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS0zeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tM3hsX19fLTBaLUhcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tNHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTR4bF9fXzRsa1NGXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS01eGxfX196aXpVUFwiLFxuICBcIm1hcmdpbl9fYm90dG9tLS02eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tNnhsX19fc01tdEtcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tN3hsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19ib3R0b20tLTd4bF9fX0pPQVpyXCIsXG4gIFwibWFyZ2luX19ib3R0b20tLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS04eGxfX19BNVE0Q1wiLFxuICBcIm1hcmdpbl9fYm90dG9tLS05eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2JvdHRvbS0tOXhsX19fN3VTenZcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tMTB4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS0xMHhsX19fSm1RSjVcIixcbiAgXCJtYXJnaW5fX2JvdHRvbS0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fYm90dG9tLS0xMXhsX19fNktFWXNcIixcbiAgXCJtYXJnaW5fX2xlZnQtLXplcm9cIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXplcm9fX192Q3ZTb1wiLFxuICBcIm1hcmdpbl9fbGVmdC0tNHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS00eHNfX19sSzUteVwiLFxuICBcIm1hcmdpbl9fbGVmdC0tM3hzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS0zeHNfX183LXhWLVwiLFxuICBcIm1hcmdpbl9fbGVmdC0teHhzXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS14eHNfX19nZTZWSlwiLFxuICBcIm1hcmdpbl9fbGVmdC0teHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXhzX19fZHZyVWpcIixcbiAgXCJtYXJnaW5fX2xlZnQtLXNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXNfX19ETVpKMlwiLFxuICBcIm1hcmdpbl9fbGVmdC0tbVwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbl9fbGVmdC0tbV9fXzVwZWR3XCIsXG4gIFwibWFyZ2luX19sZWZ0LS1sXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS1sX19fLVN4RElcIixcbiAgXCJtYXJnaW5fX2xlZnQtLXhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS14bF9fXzZOLWtaXCIsXG4gIFwibWFyZ2luX19sZWZ0LS14eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLXh4bF9fX1lrYXBZXCIsXG4gIFwibWFyZ2luX19sZWZ0LS0zeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTN4bF9fXzhVVXV4XCIsXG4gIFwibWFyZ2luX19sZWZ0LS00eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTR4bF9fX2FxbDViXCIsXG4gIFwibWFyZ2luX19sZWZ0LS01eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTV4bF9fX2hRTnRwXCIsXG4gIFwibWFyZ2luX19sZWZ0LS02eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTZ4bF9fX1NxUDMxXCIsXG4gIFwibWFyZ2luX19sZWZ0LS03eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTd4bF9fX2Uwai1qXCIsXG4gIFwibWFyZ2luX19sZWZ0LS04eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTh4bF9fX3VrcFZ6XCIsXG4gIFwibWFyZ2luX19sZWZ0LS05eGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTl4bF9fX2xOSEJUXCIsXG4gIFwibWFyZ2luX19sZWZ0LS0xMHhsXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luX19sZWZ0LS0xMHhsX19fQ0JVU25cIixcbiAgXCJtYXJnaW5fX2xlZnQtLTExeGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW5fX2xlZnQtLTExeGxfX191Y0tDOFwiLFxuICBcIm1hcmdpbi0temVyb1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0temVyb19fX3lLTERIXCIsXG4gIFwibWFyZ2luLS00eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLTR4c19fXzduanNpXCIsXG4gIFwibWFyZ2luLS0zeHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLTN4c19fX2tXQmJlXCIsXG4gIFwibWFyZ2luLS14eHNcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLXh4c19fX2ZaaVVhXCIsXG4gIFwibWFyZ2luLS14c1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teHNfX18tdGRPalwiLFxuICBcIm1hcmdpbi0tc1wiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tc19fXzB4UDBnXCIsXG4gIFwibWFyZ2luLS1tXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS1tX19fV2Q0cHBcIixcbiAgXCJtYXJnaW4tLWxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLWxfX195TVVYc1wiLFxuICBcIm1hcmdpbi0teGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLXhsX19fd2paUFJcIixcbiAgXCJtYXJnaW4tLXh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0teHhsX19fRW00VDdcIixcbiAgXCJtYXJnaW4tLTN4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tM3hsX19fY1FaSGZcIixcbiAgXCJtYXJnaW4tLTR4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tNHhsX19fN0lXck1cIixcbiAgXCJtYXJnaW4tLTV4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tNXhsX19fY1NPVVFcIixcbiAgXCJtYXJnaW4tLTZ4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tNnhsX19fRjNiU21cIixcbiAgXCJtYXJnaW4tLTd4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tN3hsX19fMVVRbUpcIixcbiAgXCJtYXJnaW4tLTh4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tOHhsX19fR0UwU3ZcIixcbiAgXCJtYXJnaW4tLTl4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tOXhsX19faDVoaEVcIixcbiAgXCJtYXJnaW4tLTEweGxcIjogXCJtYXJnaW4tbW9kdWxlX19tYXJnaW4tLTEweGxfX19kR0stUlwiLFxuICBcIm1hcmdpbi0tMTF4bFwiOiBcIm1hcmdpbi1tb2R1bGVfX21hcmdpbi0tMTF4bF9fXzN5eEJwXCIsXG4gIFwibWFyZ2luLS1hdXRvXCI6IFwibWFyZ2luLW1vZHVsZV9fbWFyZ2luLS1hdXRvX19feTdnZjlcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB2aXN1YWxseUhpZGRlblN0eWxlcyBmcm9tIFwiLi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgVmlzdWFsbHlIaWRkZW5QbHVnaW5Qcm9wcyA9IHsgJHZpc3VhbGx5SGlkZGVuPzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgdmlzdWFsbHlIaWRkZW5QbHVnaW4gPSBnZXRQbHVnaW48VmlzdWFsbHlIaWRkZW5QbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCB7IFt2aXN1YWxseUhpZGRlblN0eWxlc1tcInZpc3VhbGx5LWhpZGRlblwiXV06ICEhcHJvcHMuJHZpc3VhbGx5SGlkZGVuIH1dLFxuXG4gICR2aXN1YWxseUhpZGRlbjogdW5kZWZpbmVkLFxufSkpO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3Zpc3VhbGx5LWhpZGRlbi92aXN1YWxseS1oaWRkZW4ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJ2aXN1YWxseS1oaWRkZW5cIjogXCJ2aXN1YWxseS1oaWRkZW4tbW9kdWxlX192aXN1YWxseS1oaWRkZW5fX19EUHVsTVwiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IG92ZXJmbG93U3R5bGVzIGZyb20gXCIuL292ZXJmbG93Lm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIE92ZXJmbG93ID0gXCJoaWRkZW5cIiB8IFwic2Nyb2xsXCIgfCBcImF1dG9cIiB8IFwidmlzaWJsZVwiO1xuXG5leHBvcnQgdHlwZSBPdmVyZmxvd1BsdWdpblByb3BzID0geyAkb3ZlcmZsb3c/OiBPdmVyZmxvdyB8IHsgeD86IE92ZXJmbG93OyB5PzogT3ZlcmZsb3c7IGhpZGVTY3JvbGxiYXI/OiBib29sZWFuIH0gfTtcblxuZXhwb3J0IGNvbnN0IG92ZXJmbG93UGx1Z2luID0gZ2V0UGx1Z2luPE92ZXJmbG93UGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0ICRvdmVyZmxvdyA9IHByb3BzLiRvdmVyZmxvdztcblxuICBpZiAoISRvdmVyZmxvdykge1xuICAgIHJldHVybiB7ICRvdmVyZmxvdzogdW5kZWZpbmVkIH07XG4gIH1cblxuICBjb25zdCB4ID0gdHlwZW9mICRvdmVyZmxvdyA9PT0gXCJzdHJpbmdcIiA/ICRvdmVyZmxvdyA6ICRvdmVyZmxvdy54O1xuICBjb25zdCB5ID0gdHlwZW9mICRvdmVyZmxvdyA9PT0gXCJzdHJpbmdcIiA/ICRvdmVyZmxvdyA6ICRvdmVyZmxvdy55O1xuICBjb25zdCBoaWRlU2Nyb2xsYmFyID0gdHlwZW9mICRvdmVyZmxvdyA9PT0gXCJzdHJpbmdcIiA/IGZhbHNlIDogJG92ZXJmbG93LmhpZGVTY3JvbGxiYXI7XG5cbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbXG4gICAgICBwcm9wcy4kY2xhc3NOYW1lLFxuXG4gICAgICB7XG4gICAgICAgIFtvdmVyZmxvd1N0eWxlc1tgb3ZlcmZsb3dfX3gtLSR7eH1gXV06IHgsXG4gICAgICAgIFtvdmVyZmxvd1N0eWxlc1tgb3ZlcmZsb3dfX3ktLSR7eX1gXV06IHksXG4gICAgICAgIFtvdmVyZmxvd1N0eWxlc1tgb3ZlcmZsb3ctLWhpZGUtc2Nyb2xsYmFyYF1dOiBoaWRlU2Nyb2xsYmFyLFxuICAgICAgfSxcbiAgICBdLFxuXG4gICAgJG92ZXJmbG93OiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vdmVyZmxvdy9vdmVyZmxvdy5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcIm92ZXJmbG93LS1oaWRlLXNjcm9sbGJhclwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3ctLWhpZGUtc2Nyb2xsYmFyX19fd2M2alBcIixcbiAgXCJvdmVyZmxvd19feS0taGlkZGVuXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feS0taGlkZGVuX19fVUJJWFFcIixcbiAgXCJvdmVyZmxvd19feS0tdmlzaWJsZVwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3ktLXZpc2libGVfX19zZk9iVVwiLFxuICBcIm92ZXJmbG93X195LS1zY3JvbGxcIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X195LS1zY3JvbGxfX195a1oyMVwiLFxuICBcIm92ZXJmbG93X195LS1hdXRvXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feS0tYXV0b19fXzFPTkhLXCIsXG4gIFwib3ZlcmZsb3dfX3gtLWhpZGRlblwiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3gtLWhpZGRlbl9fX0xLM1VoXCIsXG4gIFwib3ZlcmZsb3dfX3gtLXZpc2libGVcIjogXCJvdmVyZmxvdy1tb2R1bGVfX292ZXJmbG93X194LS12aXNpYmxlX19fdS0tNkZcIixcbiAgXCJvdmVyZmxvd19feC0tc2Nyb2xsXCI6IFwib3ZlcmZsb3ctbW9kdWxlX19vdmVyZmxvd19feC0tc2Nyb2xsX19fYWlJSDZcIixcbiAgXCJvdmVyZmxvd19feC0tYXV0b1wiOiBcIm92ZXJmbG93LW1vZHVsZV9fb3ZlcmZsb3dfX3gtLWF1dG9fX19TNm9WTFwiXG59OyIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9mbGV4LWNoaWxkL2ZsZXgtY2hpbGQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJmbGV4LWNoaWxkXCI6IFwiZmxleC1jaGlsZC1tb2R1bGVfX2ZsZXgtY2hpbGRfX183QmRoZFwiLFxuICBcImZsZXgtY2hpbGQtLXNocmlua2FibGVcIjogXCJmbGV4LWNoaWxkLW1vZHVsZV9fZmxleC1jaGlsZC0tc2hyaW5rYWJsZV9fXzZINS0tXCIsXG4gIFwiZmxleC1jaGlsZC0tZml4ZWRcIjogXCJmbGV4LWNoaWxkLW1vZHVsZV9fZmxleC1jaGlsZC0tZml4ZWRfX19GS2V0TFwiXG59OyIsICJpbXBvcnQgZmxleENoaWxkU3R5bGVzIGZyb20gXCIuL2ZsZXgtY2hpbGQubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBzdHlsZVBsdWdpbiB9IGZyb20gXCIuLi9zdHlsZS9zdHlsZVwiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5cbi8qKlxuICogLSBgdHJ1ZWA6IHNoYXJlIHRoZSBwYXJlbnQncyByZW1haW5pbmcgc3BhY2UgZXF1YWxseSAoYGZsZXg6IDEgMSAwYCkuXG4gKiAtIGBcInNocmlua2FibGVcImA6IGFkZGl0aW9uYWxseSByZW1vdmUgdGhlIGl0ZW0ncyBpbXBsaWNpdCBjb250ZW50LXNpemVkXG4gKiAgIG1pbmltdW0gKGBtaW4taGVpZ2h0OiBhdXRvYCAvIGBtaW4td2lkdGg6IGF1dG9gKSwgc28gaXQgY2FuIGFjdHVhbGx5IGJlXG4gKiAgIHNpemVkIHRvIHRoZSByZW1haW5pbmcgc3BhY2UgaW4gYSBjb25zdHJhaW5lZCBsYXlvdXQgXHUyMDE0IHJlcXVpcmVkIGZvciBhXG4gKiAgIGRlc2NlbmRhbnQgdG8gc2Nyb2xsIGludGVybmFsbHkgaW5zdGVhZCBvZiBpbmZsYXRpbmcgZXZlcnkgYW5jZXN0b3IuXG4gKiAtIGEgbnVtYmVyOiBsaWtlIGBcInNocmlua2FibGVcImAsIGJ1dCB0YWtpbmcgdGhhdCBtYW55IHNoYXJlcyBvZiB0aGVcbiAqICAgcmVtYWluaW5nIHNwYWNlIGluc3RlYWQgb2Ygb25lIChgZmxleC1ncm93YCksIGZvciB3ZWlnaHRlZCBzcGxpdHMgYmV0d2VlblxuICogICBzaWJsaW5ncy5cbiAqIC0gYFwiZml4ZWRcImA6IHRoZSBvcHBvc2l0ZSBcdTIwMTQga2VlcCB0aGUgaXRlbSdzIG93biBzaXplIChgZmxleC1zaHJpbms6IDBgKSxcbiAqICAgb3B0aW5nIG91dCBvZiB0aGUgc2hyaW5rIG5lZ290aWF0aW9uIGVudGlyZWx5IChlLmcuIGEgY29udGVudC1odWdnaW5nXG4gKiAgIHBhbmVsIG5leHQgdG8gYSBmaWxsaW5nIG9uZSkuXG4gKi9cbmV4cG9ydCB0eXBlIEZsZXhDaGlsZFBsdWdpblByb3BzID0geyAkZmxleENoaWxkPzogYm9vbGVhbiB8IG51bWJlciB8IFwic2hyaW5rYWJsZVwiIHwgXCJmaXhlZFwiIH07XG5cbmV4cG9ydCBjb25zdCBmbGV4Q2hpbGRQbHVnaW4gPSBnZXRQbHVnaW48RmxleENoaWxkUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luLCB0eXBlb2Ygc3R5bGVQbHVnaW5dPihcbiAgKHByb3BzKSA9PiB7XG4gICAgY29uc3Qgd2VpZ2h0ID0gdHlwZW9mIHByb3BzLiRmbGV4Q2hpbGQgPT09IFwibnVtYmVyXCIgPyBwcm9wcy4kZmxleENoaWxkIDogdW5kZWZpbmVkO1xuICAgIGNvbnN0IHNocmlua2FibGUgPSBwcm9wcy4kZmxleENoaWxkID09PSBcInNocmlua2FibGVcIiB8fCB3ZWlnaHQgIT09IHVuZGVmaW5lZDtcblxuICAgIHJldHVybiB7XG4gICAgICAkY2xhc3NOYW1lOiBbXG4gICAgICAgIHByb3BzLiRmbGV4Q2hpbGQgPT09IHRydWUgfHwgc2hyaW5rYWJsZSA/IGZsZXhDaGlsZFN0eWxlc1tcImZsZXgtY2hpbGRcIl0gOiB1bmRlZmluZWQsXG4gICAgICAgIHNocmlua2FibGUgPyBmbGV4Q2hpbGRTdHlsZXNbXCJmbGV4LWNoaWxkLS1zaHJpbmthYmxlXCJdIDogdW5kZWZpbmVkLFxuICAgICAgICBwcm9wcy4kZmxleENoaWxkID09PSBcImZpeGVkXCIgPyBmbGV4Q2hpbGRTdHlsZXNbXCJmbGV4LWNoaWxkLS1maXhlZFwiXSA6IHVuZGVmaW5lZCxcbiAgICAgICAgcHJvcHMuJGNsYXNzTmFtZSxcbiAgICAgIF0sXG4gICAgICAkc3R5bGU6IHdlaWdodCA9PT0gdW5kZWZpbmVkID8gcHJvcHMuJHN0eWxlIDogeyAuLi5wcm9wcy4kc3R5bGUsIGZsZXhHcm93OiB3ZWlnaHQgfSxcbiAgICAgICRmbGV4Q2hpbGQ6IHVuZGVmaW5lZCxcbiAgICB9O1xuICB9LFxuKTtcbiIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGdyYXlzY2FsZVN0eWxlcyBmcm9tIFwiLi9ncmF5c2NhbGUubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IHR5cGUgR3JheXNjYWxlUGx1Z2luUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBGdWxseSBkZXNhdHVyYXRlcyB0aGUgZWxlbWVudCAoYGZpbHRlcjogZ3JheXNjYWxlKDEwMCUpYCkgd2hlbiBgdHJ1ZWAgXHUyMDE0IHNvXG4gICAqIGV2ZW4gZml4ZWQtY29sb3VyIGNvbnRlbnQgKGUuZy4gYnJhbmQgbG9nb3MpIGdyZXlzIG91dCwgbm90IGp1c3QgdGhlbWVkXG4gICAqIGNvbG91cnMuIENvbWJpbmUgd2l0aCBgJGZhZGVkYCB0byBkZS1lbXBoYXNpc2UgYW4gdW5hdmFpbGFibGUgaXRlbS5cbiAgICovXG4gICRncmF5c2NhbGU/OiBib29sZWFuO1xufTtcblxuZXhwb3J0IGNvbnN0IGdyYXlzY2FsZVBsdWdpbiA9IGdldFBsdWdpbjxHcmF5c2NhbGVQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRjbGFzc05hbWU6IFtwcm9wcy4kY2xhc3NOYW1lLCBwcm9wcy4kZ3JheXNjYWxlID8gZ3JheXNjYWxlU3R5bGVzLmdyYXlzY2FsZSA6IHVuZGVmaW5lZF0sXG4gICRncmF5c2NhbGU6IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ncmF5c2NhbGUvZ3JheXNjYWxlLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiZ3JheXNjYWxlXCI6IFwiZ3JheXNjYWxlLW1vZHVsZV9fZ3JheXNjYWxlX19fM21aUDZcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IHN0eWxlUGx1Z2luIH0gZnJvbSBcIi4uL3N0eWxlL3N0eWxlXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHRpbnRTdHlsZXMgZnJvbSBcIi4vdGludC5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgdHlwZSBUaW50UGx1Z2luUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBPdmVycmlkZXMgdGhlIGVsZW1lbnQncyAoYW5kIGl0cyBkZXNjZW5kYW50cycpIFNWRyBgZmlsbGAgdG8gdGhpcyBjb2xvdXIsIHZpYSBhIENTUyBjdXN0b21cbiAgICogcHJvcGVydHkgXHUyMDE0IGBzdHJva2VgIGlzIGxlZnQgdW50b3VjaGVkLCBzbyBzdHJva2VkIGRldGFpbHMgc3Vydml2ZS4gVW5saWtlIGAkZ3JheXNjYWxlYCAod2hpY2ggb25seVxuICAgKiBkZXNhdHVyYXRlcykgdGhpcyBwYWludHMgdGhlIHNoYXBlIGFuIGV4YWN0IGZsYXQgY29sb3VyIHdoaWxlIHJlc3BlY3RpbmcgdHJhbnNwYXJlbmN5LCBzbyBhXG4gICAqIGZpeGVkLWNvbG91ciBicmFuZCBtYXJrIGNhbiBiZSB0aW50ZWQgKGUuZy4gYW4gQUktdG9vbCBsb2dvIHRpbnRlZCB0byB0aGUgY2x1c3RlciBjb2xvdXIpLiBMZWF2ZVxuICAgKiB1bnNldCB0byByZW5kZXIgdGhlIGVsZW1lbnQncyBuYXR1cmFsIGNvbG91cnMuXG4gICAqL1xuICAkdGludD86IHN0cmluZztcbn07XG5cbmV4cG9ydCBjb25zdCB0aW50UGx1Z2luID0gZ2V0UGx1Z2luPFRpbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW4sIHR5cGVvZiBzdHlsZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHByb3BzLiR0aW50ID8gdGludFN0eWxlcy50aW50IDogdW5kZWZpbmVkXSxcbiAgLy8gVGhlIHRpbnQgY29sb3VyIGlzIGV4cG9zZWQgYXMgYSBjdXN0b20gcHJvcGVydHkgdGhlIGAudGludGAgY2xhc3MgcmVhZHMgKGBmaWxsOiB2YXIoLS1lbGVtZW50LXRpbnQpYCkuXG4gICRzdHlsZTogcHJvcHMuJHRpbnQgPyAoeyAuLi5wcm9wcy4kc3R5bGUsIFwiLS1lbGVtZW50LXRpbnRcIjogcHJvcHMuJHRpbnQgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzKSA6IHByb3BzLiRzdHlsZSxcbiAgJHRpbnQ6IHVuZGVmaW5lZCxcbn0pKTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy90aW50L3RpbnQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJ0aW50XCI6IFwidGludC1tb2R1bGVfX3RpbnRfX19nQ3pHN1wiXG59OyIsICJpbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IGZhZGVkU3R5bGVzIGZyb20gXCIuL2ZhZGVkLm1vZHVsZS5zY3NzXCI7XG5cbmV4cG9ydCB0eXBlIEZhZGVkUGx1Z2luUHJvcHMgPSB7XG4gIC8qKlxuICAgKiBGYWRlcyB0aGUgZWxlbWVudCAoYG9wYWNpdHk6IDUwJWApIHdoZW4gYHRydWVgLiBDb21iaW5lIHdpdGggYCRncmF5c2NhbGVgXG4gICAqIHRvIGRlLWVtcGhhc2lzZSBhbiB1bmF2YWlsYWJsZSBpdGVtLlxuICAgKi9cbiAgJGZhZGVkPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBmYWRlZFBsdWdpbiA9IGdldFBsdWdpbjxGYWRlZFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4gKHtcbiAgJGNsYXNzTmFtZTogW3Byb3BzLiRjbGFzc05hbWUsIHByb3BzLiRmYWRlZCA/IGZhZGVkU3R5bGVzLmZhZGVkIDogdW5kZWZpbmVkXSxcbiAgJGZhZGVkOiB1bmRlZmluZWQsXG59KSk7XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZmFkZWQvZmFkZWQubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJmYWRlZFwiOiBcImZhZGVkLW1vZHVsZV9fZmFkZWRfX18tdWJiTVwiXG59OyIsICJpbXBvcnQgeyBnZXRQbHVnaW4sIHR5cGUgQ29udHJpYnV0ZVByb3BzLCB0eXBlIENvbnRyaWJ1dGVSZWYgfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgZm9jdXNhYmxlSXRlbVN0YXRlSW5qZWN0YWJsZSB9IGZyb20gXCIuL19zaGFyZWQvZm9jdXNhYmxlLWl0ZW0tc3RhdGUuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgdXNlVXBkYXRlV2hlblByb3BzQ2hhbmdlIH0gZnJvbSBcIi4vX3ByaXZhdGUvdXNlLXVwZGF0ZS13aGVuLXByb3BzLWNoYW5nZVwiO1xuaW1wb3J0IHsgdXNlQ2xlYW51cE9uVW5tb3VudCB9IGZyb20gXCIuL19wcml2YXRlL3VzZS1jbGVhbnVwLW9uLXVubW91bnRcIjtcbmltcG9ydCB0eXBlIHsgQW55Rm9jdXNhYmxlQ29udGV4dCB9IGZyb20gXCIuL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHsgdXNlS2V5Ym9hcmROYXZpZ2F0aW9uIH0gZnJvbSBcIi4vX3ByaXZhdGUvdXNlLWtleWJvYXJkLW5hdmlnYXRpb25cIjtcbmltcG9ydCB7IGhhbmRsZUZvY3VzRm9yIH0gZnJvbSBcIi4vX3ByaXZhdGUvaGFuZGxlLWZvY3VzXCI7XG5pbXBvcnQgeyBoYW5kbGVCbHVyRm9yIH0gZnJvbSBcIi4vX3ByaXZhdGUvaGFuZGxlLWJsdXJcIjtcbmltcG9ydCB7IHVzZVByb2dyYW1tYXRpY0ZvY3VzaW5nIH0gZnJvbSBcIi4vX3ByaXZhdGUvdXNlLXByb2dyYW1tYXRpYy1mb2N1c2luZ1wiO1xuaW1wb3J0IHR5cGUgeyByZWZQbHVnaW4gfSBmcm9tIFwiLi4vcmVmL3JlZlwiO1xuXG5leHBvcnQgdHlwZSBGb2N1c2FibGVQbHVnaW5Qcm9wczxULCBGb2N1c2VkSXRlbSA9IGFueT4gPSB7XG4gICRmb2N1c2FibGU/OiB7XG4gICAgY29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT47XG4gICAgaXRlbTogRm9jdXNlZEl0ZW07XG4gICAgb3JkZXJOdW1iZXI/OiBudW1iZXI7XG4gIH07XG5cbiAgb25Gb2N1cz86IFJlYWN0LkZvY3VzRXZlbnRIYW5kbGVyPFQ+O1xuICBvbkJsdXI/OiBSZWFjdC5Gb2N1c0V2ZW50SGFuZGxlcjxUPjtcbiAgb25LZXlEb3duPzogUmVhY3QuS2V5Ym9hcmRFdmVudEhhbmRsZXI8VD47XG4gIHRhYkluZGV4PzogSFRNTEVsZW1lbnRbXCJ0YWJJbmRleFwiXTtcbn07XG5cbnR5cGUgRm9jdXNhYmxlV3JhcHBlclByb3BzID0ge1xuICByZWFkb25seSBmb2N1c2FibGU6IHtcbiAgICBjb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PGFueT47XG4gICAgaXRlbTogYW55O1xuICAgIG9yZGVyTnVtYmVyPzogbnVtYmVyO1xuICB9O1xuICByZWFkb25seSB0YWJJbmRleDogbnVtYmVyO1xuICByZWFkb25seSBvbkZvY3VzPzogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8YW55PjtcbiAgcmVhZG9ubHkgb25CbHVyPzogUmVhY3QuRm9jdXNFdmVudEhhbmRsZXI8YW55PjtcbiAgcmVhZG9ubHkgb25LZXlEb3duPzogUmVhY3QuS2V5Ym9hcmRFdmVudEhhbmRsZXI8YW55PjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBGb2N1c2FibGVXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgZm9jdXNhYmxlLFxuICB0YWJJbmRleCxcbiAgb25Gb2N1cyxcbiAgb25CbHVyLFxuICBvbktleURvd24sXG4gIGNvbnRyaWJ1dGVSZWYsXG4gIGNvbnRyaWJ1dGVQcm9wcyxcbiAgY2hpbGRyZW4sXG59OiBGb2N1c2FibGVXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyBjb250ZXh0OiBmb2N1c2FibGVDb250ZXh0LCBpdGVtOiBmb2N1c2FibGVJdGVtLCBvcmRlck51bWJlciB9ID0gZm9jdXNhYmxlO1xuXG4gIGNvbnN0IFtlbGVtZW50LCBzZXRFbGVtZW50XSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnRyaWJ1dGVSZWYoc2V0RWxlbWVudCk7XG5cbiAgY29uc3QgaHRtbEVsZW1lbnRSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQ+KHVuZGVmaW5lZCk7XG4gIGh0bWxFbGVtZW50UmVmLmN1cnJlbnQgPSAoZWxlbWVudCA/PyB1bmRlZmluZWQpIGFzIEhUTUxFbGVtZW50IHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0IGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmID0gdXNlUmVmKGZhbHNlKTtcbiAgY29uc3Qgb2xkU3RhdGVSZWYgPSB1c2VSZWY8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPj4odW5kZWZpbmVkKTtcblxuICBjb25zdCBzdGF0ZSA9IHVzZVN5bmNJbmplY3QoZm9jdXNhYmxlSXRlbVN0YXRlSW5qZWN0YWJsZSwgZm9jdXNhYmxlQ29udGV4dCk7XG5cbiAgdXNlVXBkYXRlV2hlblByb3BzQ2hhbmdlKGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmLCBvbGRTdGF0ZVJlZiwgc3RhdGUsIGZvY3VzYWJsZUl0ZW0pO1xuICB1c2VDbGVhbnVwT25Vbm1vdW50KGh0bWxFbGVtZW50SXNGb2N1c2VkUmVmLCBvbGRTdGF0ZVJlZik7XG4gIHVzZVByb2dyYW1tYXRpY0ZvY3VzaW5nKGZvY3VzYWJsZUNvbnRleHQsIGZvY3VzYWJsZUl0ZW0sIGh0bWxFbGVtZW50UmVmKTtcblxuICBjb25zdCBoYW5kbGVGb2N1cyA9IGhhbmRsZUZvY3VzRm9yKHN0YXRlLCBmb2N1c2FibGVJdGVtLCBmb2N1c2FibGVDb250ZXh0LCBodG1sRWxlbWVudElzRm9jdXNlZFJlZik7XG4gIGNvbnN0IGhhbmRsZUJsdXIgPSBoYW5kbGVCbHVyRm9yKGZvY3VzYWJsZUNvbnRleHQsIHN0YXRlLCBodG1sRWxlbWVudElzRm9jdXNlZFJlZik7XG5cbiAgY29uc3Qga2V5Ym9hcmROYXZpZ2F0aW9uID0gdXNlS2V5Ym9hcmROYXZpZ2F0aW9uKFxuICAgIGZvY3VzYWJsZUNvbnRleHQuaXNLZXlib2FyZE5hdmlnYWJsZSA/IGZvY3VzYWJsZUNvbnRleHQgOiB1bmRlZmluZWQsXG4gICAgZm9jdXNhYmxlSXRlbSxcbiAgICBvcmRlck51bWJlcixcbiAgICBlbGVtZW50LFxuICApO1xuXG4gIGNvbnRyaWJ1dGVQcm9wcyh7XG4gICAgdGFiSW5kZXgsXG5cbiAgICBvbkZvY3VzOiAoZTogUmVhY3QuRm9jdXNFdmVudDxhbnk+KSA9PiB7XG4gICAgICBoYW5kbGVGb2N1cyhlKTtcbiAgICAgIGtleWJvYXJkTmF2aWdhdGlvbi5vbkZvY3VzKCk7XG4gICAgICBvbkZvY3VzPy4oZSk7XG4gICAgfSxcblxuICAgIG9uQmx1cjogKGU6IFJlYWN0LkZvY3VzRXZlbnQ8YW55PikgPT4ge1xuICAgICAgaWYgKCFodG1sRWxlbWVudFJlZi5jdXJyZW50Py5jb250YWlucyhlLnJlbGF0ZWRUYXJnZXQpKSB7XG4gICAgICAgIGhhbmRsZUJsdXIoZSk7XG4gICAgICB9XG4gICAgICBvbkJsdXI/LihlKTtcbiAgICB9LFxuXG4gICAgb25LZXlEb3duOiAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudDxhbnk+KSA9PiB7XG4gICAgICBvbktleURvd24/LihlKTtcbiAgICAgIGtleWJvYXJkTmF2aWdhdGlvbi5vbktleURvd24oZSk7XG4gICAgfSxcblxuICAgIG9uTW91c2VFbnRlcjoga2V5Ym9hcmROYXZpZ2F0aW9uLmZvY3VzV2hhdFRoZVBvaW50ZXJJc09uLFxuICAgIG9uTW91c2VNb3ZlOiBrZXlib2FyZE5hdmlnYXRpb24uZm9jdXNXaGF0VGhlUG9pbnRlcklzT24sXG4gIH0pO1xuXG4gIHJldHVybiA8PntjaGlsZHJlbn08Lz47XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZm9jdXNhYmxlUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEZvY3VzYWJsZVBsdWdpblByb3BzPFQ+LCBbUmV0dXJuVHlwZTx0eXBlb2YgcmVmUGx1Z2luPFQ+Pl0+KChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGZvY3VzYWJsZSwgdGFiSW5kZXgsIG9uQmx1ciwgb25Gb2N1cywgb25LZXlEb3duIH0gPSBwcm9wcztcblxuICAgIGlmICghJGZvY3VzYWJsZSkge1xuICAgICAgcmV0dXJuIHsgJGZvY3VzYWJsZTogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRmb2N1c2FibGU6IHVuZGVmaW5lZCxcbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRm9jdXNhYmxlV3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHtcbiAgICAgICAgICBmb2N1c2FibGU6ICRmb2N1c2FibGUsXG4gICAgICAgICAgdGFiSW5kZXg6IHRhYkluZGV4ID8/IC0xLFxuICAgICAgICAgIG9uRm9jdXMsXG4gICAgICAgICAgb25CbHVyLFxuICAgICAgICAgIG9uS2V5RG93bixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0IHsgYXNzZXJ0RGVmaW5lZCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgcnVuSW5BY3Rpb24gfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB0eXBlIE11dGFibGVSZWZPYmplY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVVwZGF0ZVdoZW5Qcm9wc0NoYW5nZSA9IChcbiAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgb2xkU3RhdGVSZWY6IE11dGFibGVSZWZPYmplY3Q8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPiB8IHVuZGVmaW5lZD4sXG4gIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPHVua25vd24+LFxuICBmb2N1c2FibGVJdGVtOiB1bmtub3duLFxuKSA9PiB7XG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHJlbW92ZSB3aGVuIHBvc3NpYmxlXG4gIHVzZUVmZmVjdChcbiAgICAoKSA9PiB7XG4gICAgICBpZiAoZm9jdXNlZFJlZi5jdXJyZW50KSB7XG4gICAgICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgICAgICBzdGF0ZS5zZXQoZm9jdXNhYmxlSXRlbSk7XG5cbiAgICAgICAgICBjb25zdCBjb250ZXh0SGFzQ2hhbmdlZCA9IG9sZFN0YXRlUmVmLmN1cnJlbnQgIT09IHN0YXRlO1xuXG4gICAgICAgICAgaWYgKGNvbnRleHRIYXNDaGFuZ2VkICYmIG9sZFN0YXRlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGFzc2VydERlZmluZWQob2xkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBvbGRTdGF0ZVJlZi5jdXJyZW50LnNldCh1bmRlZmluZWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG9sZFN0YXRlUmVmLmN1cnJlbnQgPSBzdGF0ZTtcbiAgICB9LFxuICAgIC8vIE5vdGU6IGZvY3VzZWRSZWYgYW5kIG9sZFN0YXRlUmVmIG5ldmVyIGNoYW5nZS5cbiAgICBbZm9jdXNhYmxlSXRlbSwgc3RhdGVdLFxuICApO1xufTtcbiIsICJpbXBvcnQgeyBhc3NlcnREZWZpbmVkIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcbmltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHR5cGUgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgdXNlQ2xlYW51cE9uVW5tb3VudCA9IChcbiAgZm9jdXNlZFJlZjogTXV0YWJsZVJlZk9iamVjdDxib29sZWFuPixcbiAgb2xkU3RhdGVSZWY6IE11dGFibGVSZWZPYmplY3Q8SU9ic2VydmFibGVWYWx1ZTx1bmtub3duPiB8IHVuZGVmaW5lZD4sXG4pID0+IHtcbiAgLy8gYmlvbWUtaWdub3JlIGxpbnQvY29ycmVjdG5lc3MvdXNlRXhoYXVzdGl2ZURlcGVuZGVuY2llczogcmVtb3ZlIHdoZW4gcG9zc2libGVcbiAgdXNlRWZmZWN0KFxuICAgICgpID0+ICgpID0+IHtcbiAgICAgIGlmIChmb2N1c2VkUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgICAgIGFzc2VydERlZmluZWQob2xkU3RhdGVSZWYuY3VycmVudCk7XG4gICAgICAgICAgb2xkU3RhdGVSZWYuY3VycmVudC5zZXQodW5kZWZpbmVkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIC8vIE5vdGU6IGZvY3VzZWRSZWYgYW5kIG9sZFN0YXRlUmVmIG5ldmVyIGNoYW5nZS5cbiAgICBbXSxcbiAgKTtcbn07XG4iLCAiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7XG4gIGtleWJvYXJkTmF2aWdhdGlvblN0YXRlSW5qZWN0YWJsZSxcbiAgdHlwZSBOYXZpZ2FibGVFbnRyeSxcbn0gZnJvbSBcIi4uL19zaGFyZWQva2V5Ym9hcmQtbmF2aWdhdGlvbi1zdGF0ZS5pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dCwgS2V5Ym9hcmROYXZpZ2F0aW9uT3JpZW50YXRpb24gfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbnR5cGUgS2V5Ym9hcmROYXZpZ2F0aW9uID0ge1xuICByZWFkb25seSBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgb25Gb2N1czogKCkgPT4gdm9pZDtcbiAgcmVhZG9ubHkgZm9jdXNXaGF0VGhlUG9pbnRlcklzT246IChldmVudDogUmVhY3QuTW91c2VFdmVudCkgPT4gdm9pZDtcbn07XG5cbmNvbnN0IG5vS2V5Ym9hcmROYXZpZ2F0aW9uOiBLZXlib2FyZE5hdmlnYXRpb24gPSB7XG4gIG9uS2V5RG93bjogKCkgPT4ge30sXG4gIG9uRm9jdXM6ICgpID0+IHt9LFxuICBmb2N1c1doYXRUaGVQb2ludGVySXNPbjogKCkgPT4ge30sXG59O1xuXG5leHBvcnQgY29uc3QgdXNlS2V5Ym9hcmROYXZpZ2F0aW9uID0gKFxuICBjb250ZXh0OiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8YW55PiB8IHVuZGVmaW5lZCxcbiAgaXRlbTogdW5rbm93bixcbiAgb3JkZXJOdW1iZXI6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsLFxuKTogS2V5Ym9hcmROYXZpZ2F0aW9uID0+IHtcbiAgY29uc3QgbmF2aWdhdGlvbiA9IHVzZVN5bmNJbmplY3Qoa2V5Ym9hcmROYXZpZ2F0aW9uU3RhdGVJbmplY3RhYmxlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghY29udGV4dCB8fCAhZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5OiBOYXZpZ2FibGVFbnRyeSA9IHsgaXRlbSwgb3JkZXJOdW1iZXI6IG9yZGVyTnVtYmVyID8/IDAsIGVsZW1lbnQgfTtcblxuICAgIG5hdmlnYXRpb24ucmVnaXN0ZXIoY29udGV4dCwgZW50cnkpO1xuXG4gICAgY29uc3QgZm9jdXNXaGF0U2hvdWxkSGF2ZUZvY3VzID0gKCkgPT4ge1xuICAgICAgY29uc3QgY29udGV4dEluRm9jdXMgPSBuYXZpZ2F0aW9uLmNvbnRleHRJbkZvY3VzKCk7XG5cbiAgICAgIGlmICghY29udGV4dEluRm9jdXMpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbnRyaWVzID0gbmF2aWdhdGlvbi5zb3J0ZWRFbnRyaWVzT2YoY29udGV4dEluRm9jdXMpO1xuXG4gICAgICAvLyBUaGUgbWVtYmVyIHRoYXQgY29udGV4dCB3YXMgbGVmdCBvbiwgc28gc3RlcHBpbmcgaW50byBzb21ldGhpbmcgYW5kIGJhY2sgb3V0IG9mIGl0IGxhbmRzXG4gICAgICAvLyB3aGVyZSBpdCBzdGFydGVkLiBPbmx5IHRoZSBsb3dlc3Qgb3JkZXIgbnVtYmVyIHdoZW4gaXQgd2FzIG5ldmVyIGxlZnQgYW55d2hlcmU6IHRoYXQgaXMgYVxuICAgICAgLy8gc2V0IG9mIG1lbWJlcnMgYXBwZWFyaW5nIHJhdGhlciB0aGFuIG9uZSBiZWluZyByZXR1cm5lZCB0by5cbiAgICAgIGNvbnN0IGl0ZW1JbkZvY3VzID0gbmF2aWdhdGlvbi5pdGVtSW5Gb2N1c09mKGNvbnRleHRJbkZvY3VzKTtcbiAgICAgIGNvbnN0IHRvRm9jdXMgPSBlbnRyaWVzLmZpbmQoKGNhbmRpZGF0ZSkgPT4gY2FuZGlkYXRlLml0ZW0gPT09IGl0ZW1JbkZvY3VzKSA/PyBlbnRyaWVzWzBdO1xuXG4gICAgICBpZiAodG9Gb2N1cz8uZWxlbWVudC5pc0Nvbm5lY3RlZCAmJiBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSB0b0ZvY3VzLmVsZW1lbnQpIHtcbiAgICAgICAgdG9Gb2N1cy5lbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIERlZmVycmVkIHNvIHRoYXQgZXZlcnl0aGluZyBhcHBlYXJpbmcgdG9nZXRoZXIgaGFzIHJlZ2lzdGVyZWQsIGFuZCB0aGUgbG93ZXN0IG9yZGVyIG51bWJlciBvZlxuICAgIC8vIHRoZSB3aG9sZSBzZXQgd2lucyByYXRoZXIgdGhhbiB3aGljaGV2ZXIgYXBwZWFyZWQgZmlyc3QuXG4gICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZvY3VzV2hhdFNob3VsZEhhdmVGb2N1cyk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgbmF2aWdhdGlvbi5kZXJlZ2lzdGVyKGNvbnRleHQsIGVudHJ5KTtcblxuICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKGZvY3VzV2hhdFNob3VsZEhhdmVGb2N1cyk7XG4gICAgfTtcbiAgfSwgW25hdmlnYXRpb24sIGNvbnRleHQsIGl0ZW0sIG9yZGVyTnVtYmVyLCBlbGVtZW50XSk7XG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgcmV0dXJuIG5vS2V5Ym9hcmROYXZpZ2F0aW9uO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBXaGljaCBtZW1iZXIgdGhlIGNvbnRleHQgaXMgb24sIHJlbWVtYmVyZWQgZm9yIGFzIGxvbmcgYXMgaXRzIG1lbWJlcnMgYXJlIHRoZXJlOiBpdCBpcyB3aGF0XG4gICAgLy8gZm9jdXMgcmV0dXJucyB0byB3aGVuIHNvbWV0aGluZyB0aGF0IHRvb2sgZm9jdXMgb3ZlciBnb2VzIGF3YXkgYWdhaW4uXG4gICAgb25Gb2N1czogKCkgPT4gbmF2aWdhdGlvbi5ub3RlSXRlbUluRm9jdXMoY29udGV4dCwgaXRlbSksXG5cbiAgICAvLyBXaGVyZSB0aGUgcG9pbnRlciBnb2VzLCBmb2N1cyBnb2VzOiB0aGUgbWVtYmVyIHVuZGVyIGl0IGJlY29tZXMgdGhlIGZvY3VzZWQgb25lLCBzbyBhcnJvd2luZ1xuICAgIC8vIG9uIGZyb20gdGhlcmUgY29udGludWVzIGZyb20gd2hhdCB0aGUgdXNlciBpcyBsb29raW5nIGF0IHJhdGhlciB0aGFuIGZyb20gd2hlcmV2ZXIgdGhlXG4gICAgLy8ga2V5Ym9hcmQgd2FzIGxlZnQuIFdoaWNoZXZlciBvZiB0aGUgdHdvIG1vdmVkIGxhc3QgZGVjaWRlcywgd2hpY2ggaXMgd2h5IHRoaXMgYW5zd2VycyB0byB0aGVcbiAgICAvLyBwb2ludGVyIG1vdmluZyBhcyB3ZWxsIGFzIHRvIGl0IGFycml2aW5nIFx1MjAxNCB0aGUga2V5Ym9hcmQgbWF5IGhhdmUgdGFrZW4gZm9jdXMgZWxzZXdoZXJlIHdoaWxlXG4gICAgLy8gdGhlIHBvaW50ZXIgcmVzdGVkIHdoZXJlIGl0IHdhcywgYW5kIG1vdmluZyBpdCBhdCBhbGwgaXMgdGhlIHVzZXIgcG9pbnRpbmcgYWdhaW4uXG4gICAgLy9cbiAgICAvLyBUaGUgZWxlbWVudCBjb21lcyBmcm9tIHRoZSBldmVudCByYXRoZXIgdGhhbiBmcm9tIHRoZSByZW5kZXIgdGhpcyBoYW5kbGVyIHdhcyBjcmVhdGVkIGluOlxuICAgIC8vIHRoZSBoYW5kbGVyIHRoZSBET00gZW5kcyB1cCB3aXRoIGlzIHRoZSBvbmUgZnJvbSB0aGUgZmlyc3QgcmVuZGVyLCB3aGVuIHRoZXJlIHdhcyBubyBlbGVtZW50XG4gICAgLy8geWV0IFx1MjAxNCBSZWFjdCBoYXMgbm8gcmVhc29uIHRvIHJlbmRlciB0aGUgZWxlbWVudCBhZ2FpbiBmb3IgYSB3cmFwcGVyJ3Mgb3duIHN0YXRlLlxuICAgIGZvY3VzV2hhdFRoZVBvaW50ZXJJc09uOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IGhvdmVyZWQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gaG92ZXJlZCkge1xuICAgICAgICBob3ZlcmVkLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcblxuICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBzdGVwID0gc3RlcE9mKGV2ZW50LmtleSwgY29udGV4dC5vcmllbnRhdGlvbik7XG5cbiAgICAgIGlmIChzdGVwID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBlbnRyaWVzID0gbmF2aWdhdGlvbi5zb3J0ZWRFbnRyaWVzT2YoY29udGV4dCk7XG5cbiAgICAgIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGVudHJpZXMuZmluZEluZGV4KChjYW5kaWRhdGUpID0+IGNhbmRpZGF0ZS5pdGVtID09PSBpdGVtKTtcblxuICAgICAgY29uc3QgbmV4dEluZGV4ID1cbiAgICAgICAgc3RlcCA9PT0gXCJmaXJzdFwiXG4gICAgICAgICAgPyAwXG4gICAgICAgICAgOiBzdGVwID09PSBcImxhc3RcIlxuICAgICAgICAgICAgPyBlbnRyaWVzLmxlbmd0aCAtIDFcbiAgICAgICAgICAgIDogKGN1cnJlbnRJbmRleCArIHN0ZXAgKyBlbnRyaWVzLmxlbmd0aCkgJSBlbnRyaWVzLmxlbmd0aDtcblxuICAgICAgY29uc3QgbmV4dCA9IGVudHJpZXNbbmV4dEluZGV4XTtcblxuICAgICAgaWYgKG5leHQpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgbmV4dC5lbGVtZW50LmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSxcbiAgfTtcbn07XG5cbmNvbnN0IHN0ZXBPZiA9IChrZXk6IHN0cmluZywgb3JpZW50YXRpb246IEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uKSA9PiB7XG4gIHN3aXRjaCAoa2V5KSB7XG4gICAgY2FzZSBcIkFycm93RG93blwiOlxuICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IHVuZGVmaW5lZCA6IDE7XG4gICAgY2FzZSBcIkFycm93UmlnaHRcIjpcbiAgICAgIHJldHVybiBvcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiID8gdW5kZWZpbmVkIDogMTtcbiAgICBjYXNlIFwiQXJyb3dVcFwiOlxuICAgICAgcmV0dXJuIG9yaWVudGF0aW9uID09PSBcImhvcml6b250YWxcIiA/IHVuZGVmaW5lZCA6IC0xO1xuICAgIGNhc2UgXCJBcnJvd0xlZnRcIjpcbiAgICAgIHJldHVybiBvcmllbnRhdGlvbiA9PT0gXCJ2ZXJ0aWNhbFwiID8gdW5kZWZpbmVkIDogLTE7XG4gICAgY2FzZSBcIkhvbWVcIjpcbiAgICAgIHJldHVybiBcImZpcnN0XCIgYXMgY29uc3Q7XG4gICAgY2FzZSBcIkVuZFwiOlxuICAgICAgcmV0dXJuIFwibGFzdFwiIGFzIGNvbnN0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59O1xuIiwgImltcG9ydCB7IHJ1bkluQWN0aW9uLCB0eXBlIElPYnNlcnZhYmxlVmFsdWUgfSBmcm9tIFwibW9ieFwiO1xuaW1wb3J0IHR5cGUgeyBBbnlGb2N1c2FibGVDb250ZXh0IH0gZnJvbSBcIi4uL2dldC1mb2N1c2FibGUtY29udGV4dFwiO1xuaW1wb3J0IHR5cGUgeyBNdXRhYmxlUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IEZvY3VzYWJsZUV2ZW50IH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtZXZlbnRcIjtcblxuZXhwb3J0IGNvbnN0IGhhbmRsZUZvY3VzRm9yID1cbiAgPEZvY3VzYWJsZUl0ZW0+KFxuICAgIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPEZvY3VzYWJsZUl0ZW0gfCB1bmRlZmluZWQ+LFxuICAgIGZvY3VzYWJsZUl0ZW06IEZvY3VzYWJsZUl0ZW0sXG4gICAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxGb2N1c2FibGVJdGVtPixcbiAgICBmb2N1c2VkUmVmOiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+LFxuICApID0+XG4gIDxUPihldmVudDogRm9jdXNhYmxlRXZlbnQ8VD4pID0+IHtcbiAgICBjb25zdCBuYXRpdmVFdmVudCA9IGV2ZW50Lm5hdGl2ZUV2ZW50O1xuXG4gICAgbmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzID8/PSBuZXcgU2V0KCk7XG5cbiAgICBpZiAobmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzLmhhcyhmb2N1c2FibGVDb250ZXh0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIG5hdGl2ZUV2ZW50LmFscmVhZHlQcm9jZXNzZWRGb2N1c2FibGVDb250ZXh0cy5hZGQoZm9jdXNhYmxlQ29udGV4dCk7XG5cbiAgICBmb2N1c2VkUmVmLmN1cnJlbnQgPSB0cnVlO1xuXG4gICAgcnVuSW5BY3Rpb24oKCkgPT4ge1xuICAgICAgc3RhdGUuc2V0KGZvY3VzYWJsZUl0ZW0pO1xuICAgIH0pO1xuICB9O1xuIiwgImltcG9ydCB0eXBlIHsgSU9ic2VydmFibGVWYWx1ZSB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgeyBydW5JbkFjdGlvbiB9IGZyb20gXCJtb2J4XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5pbXBvcnQgdHlwZSB7IEZvY3VzYWJsZUV2ZW50IH0gZnJvbSBcIi4vX3NoYXJlZC9mb2N1c2FibGUtZXZlbnRcIjtcbmltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgY29uc3QgaGFuZGxlQmx1ckZvciA9XG4gIDxUPihcbiAgICBmb2N1c2FibGVDb250ZXh0OiBBbnlGb2N1c2FibGVDb250ZXh0PFQ+LFxuICAgIHN0YXRlOiBJT2JzZXJ2YWJsZVZhbHVlPFQgfCB1bmRlZmluZWQ+LFxuICAgIGZvY3VzZWRSZWY6IE11dGFibGVSZWZPYmplY3Q8Ym9vbGVhbj4sXG4gICkgPT5cbiAgPFQ+KGV2ZW50OiBGb2N1c2FibGVFdmVudDxUPikgPT4ge1xuICAgIGNvbnN0IG5hdGl2ZUV2ZW50ID0gZXZlbnQubmF0aXZlRXZlbnQ7XG5cbiAgICBpZiAobmF0aXZlRXZlbnQuYWxyZWFkeVByb2Nlc3NlZEZvY3VzYWJsZUNvbnRleHRzPy5oYXMoZm9jdXNhYmxlQ29udGV4dCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb2N1c2VkUmVmLmN1cnJlbnQgPSBmYWxzZTtcblxuICAgIHJ1bkluQWN0aW9uKCgpID0+IHtcbiAgICAgIHN0YXRlLnNldCh1bmRlZmluZWQpO1xuICAgIH0pO1xuICB9O1xuIiwgImltcG9ydCB0eXBlIHsgTXV0YWJsZVJlZk9iamVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUgfSBmcm9tIFwiLi4vX3NoYXJlZC9mb2N1c2FibGUtaHRtbC1lbGVtZW50LXJlZi1zZXQuaW5qZWN0YWJsZVwiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSB7IEFueUZvY3VzYWJsZUNvbnRleHQgfSBmcm9tIFwiLi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbmV4cG9ydCBjb25zdCB1c2VQcm9ncmFtbWF0aWNGb2N1c2luZyA9IDxUPihcbiAgZm9jdXNhYmxlQ29udGV4dDogQW55Rm9jdXNhYmxlQ29udGV4dDxUPixcbiAgZm9jdXNhYmxlSXRlbTogVCxcbiAgaHRtbEVsZW1lbnRSZWY6IE11dGFibGVSZWZPYmplY3Q8SFRNTEVsZW1lbnQgfCB1bmRlZmluZWQ+LFxuKSA9PiB7XG4gIGNvbnN0IGh0bWxFbGVtZW50c0J5Rm9jdXNhYmxlTWFwID0gdXNlU3luY0luamVjdChcbiAgICBmb2N1c2FibGVIdG1sRWxlbWVudFJlZlNldEluamVjdGFibGUsXG4gICAgZm9jdXNhYmxlQ29udGV4dCxcbiAgICBmb2N1c2FibGVJdGVtLFxuICApO1xuXG4gIC8vIGJpb21lLWlnbm9yZSBsaW50L2NvcnJlY3RuZXNzL3VzZUV4aGF1c3RpdmVEZXBlbmRlbmNpZXM6IHJlbW92ZSB3aGVuIHBvc3NpYmxlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaHRtbEVsZW1lbnRzQnlGb2N1c2FibGVNYXAuYWRkKGh0bWxFbGVtZW50UmVmKTtcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcC5kZWxldGUoaHRtbEVsZW1lbnRSZWYpO1xuICAgIH07XG4gIH0sIFtodG1sRWxlbWVudHNCeUZvY3VzYWJsZU1hcCwgZm9jdXNhYmxlSXRlbSwgaHRtbEVsZW1lbnRSZWZdKTtcbn07XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGZsZXhQbHVnaW4gfSBmcm9tIFwiLi4vZmxleC9mbGV4XCI7XG5pbXBvcnQgeyBpc09iamVjdCB9IGZyb20gXCJAazhzbGVucy9wdWJsaWMtdXRpbGl0aWVzXCI7XG5pbXBvcnQgdHlwZSB7IG92ZXJmbG93UGx1Z2luIH0gZnJvbSBcIi4uL292ZXJmbG93L292ZXJmbG93XCI7XG5cbmV4cG9ydCB0eXBlIEFyZWFQbHVnaW5Qcm9wcyA9IHsgJGFyZWE/OiBib29sZWFuIH07XG5cbmV4cG9ydCBjb25zdCBhcmVhUGx1Z2luID0gZ2V0UGx1Z2luPEFyZWFQbHVnaW5Qcm9wcywgW3R5cGVvZiBmbGV4UGx1Z2luLCB0eXBlb2Ygb3ZlcmZsb3dQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgZXhwbGljaXRGbGV4UHJvcHMgPSBpc09iamVjdChwcm9wcy4kZmxleCkgPyBwcm9wcy4kZmxleCA6IHt9O1xuXG4gIHJldHVybiB7XG4gICAgJGFyZWE6IHVuZGVmaW5lZCxcblxuICAgICRmbGV4OiBwcm9wcy4kYXJlYVxuICAgICAgPyB7XG4gICAgICAgICAgdmVydGljYWxBbGlnbjogXCJzdHJldGNoXCIsXG4gICAgICAgICAgaG9yaXpvbnRhbEFsaWduOiBcInN0cmV0Y2hcIixcbiAgICAgICAgICAuLi5leHBsaWNpdEZsZXhQcm9wcyxcbiAgICAgICAgfVxuICAgICAgOiBwcm9wcy4kZmxleCxcblxuICAgICRvdmVyZmxvdzogcHJvcHMuJG92ZXJmbG93ID8/IChwcm9wcy4kYXJlYSA/IFwiaGlkZGVuXCIgOiB1bmRlZmluZWQpLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGZsZXhDaGlsZFBsdWdpbiB9IGZyb20gXCIuLi9mbGV4LWNoaWxkL2ZsZXgtY2hpbGRcIjtcblxuZXhwb3J0IHR5cGUgQXJlYUNvbnRlbnRQbHVnaW5Qcm9wcyA9IHsgJGFyZWFDb250ZW50PzogYm9vbGVhbiB9O1xuXG5leHBvcnQgY29uc3QgYXJlYUNvbnRlbnRQbHVnaW4gPSBnZXRQbHVnaW48QXJlYUNvbnRlbnRQbHVnaW5Qcm9wcywgW3R5cGVvZiBmbGV4Q2hpbGRQbHVnaW5dPigocHJvcHMpID0+ICh7XG4gICRhcmVhQ29udGVudDogdW5kZWZpbmVkLFxuICAkZmxleENoaWxkOiBwcm9wcy4kYXJlYUNvbnRlbnQgPyB0cnVlIDogcHJvcHMuJGZsZXhDaGlsZCxcbn0pKTtcbiIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgVFNoaXJ0U2l6ZSB9IGZyb20gXCIuLi9fc2hhcmVkL3NpemVzXCI7XG5pbXBvcnQgdHlwZSB7IHdpZHRoUGx1Z2luIH0gZnJvbSBcIi4uL3dpZHRoL3dpZHRoXCI7XG5pbXBvcnQgdHlwZSB7IGhlaWdodFBsdWdpbiB9IGZyb20gXCIuLi9oZWlnaHQvaGVpZ2h0XCI7XG5cbmV4cG9ydCB0eXBlICRTaXplUHJvcHMgPSB7XG4gIHNpemU/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCIgfCBcImF1dG9cIjtcbiAgbWluPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiO1xuICBtYXg/OiBUU2hpcnRTaXplIHwgXCJmdWxsXCI7XG59O1xuXG5leHBvcnQgdHlwZSBTaXplUGx1Z2luUHJvcHMgPSB7ICRzaXplPzogVFNoaXJ0U2l6ZSB8IFwiZnVsbFwiIHwgJFNpemVQcm9wcyB9O1xuXG5leHBvcnQgY29uc3Qgc2l6ZVBsdWdpbiA9IGdldFBsdWdpbjxTaXplUGx1Z2luUHJvcHMsIFt0eXBlb2Ygd2lkdGhQbHVnaW4sIHR5cGVvZiBoZWlnaHRQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkc2l6ZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkc2l6ZSkge1xuICAgIHJldHVybiB7ICRzaXplOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIGNvbnN0IHsgc2l6ZSwgbWluLCBtYXggfSA9IHR5cGVvZiAkc2l6ZSA9PT0gXCJzdHJpbmdcIiA/IHsgc2l6ZTogJHNpemUgfSA6ICRzaXplO1xuXG4gIHJldHVybiB7XG4gICAgJGhlaWdodDogeyBoZWlnaHQ6IHNpemUsIG1pbiwgbWF4IH0sXG4gICAgJHdpZHRoOiB7IHdpZHRoOiBzaXplLCBtaW4sIG1heCB9LFxuICAgICRzaXplOiB1bmRlZmluZWQsXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9jdXJzb3IvY3Vyc29yLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiYWxpYXNcIjogXCJjdXJzb3ItbW9kdWxlX19hbGlhc19fXzBpeUgyXCIsXG4gIFwiYWxsLXNjcm9sbFwiOiBcImN1cnNvci1tb2R1bGVfX2FsbC1zY3JvbGxfX19VOWhvOFwiLFxuICBcImNlbGxcIjogXCJjdXJzb3ItbW9kdWxlX19jZWxsX19fNVdPMkZcIixcbiAgXCJjb2x1bW4tcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fY29sdW1uLXJlc2l6ZV9fX3BMcTNzXCIsXG4gIFwiY29udGV4dC1tZW51XCI6IFwiY3Vyc29yLW1vZHVsZV9fY29udGV4dC1tZW51X19fSXFwNTZcIixcbiAgXCJjb3B5XCI6IFwiY3Vyc29yLW1vZHVsZV9fY29weV9fX1hVN3lMXCIsXG4gIFwiY3Jvc3NoYWlyXCI6IFwiY3Vyc29yLW1vZHVsZV9fY3Jvc3NoYWlyX19fMThheWtcIixcbiAgXCJkZWZhdWx0XCI6IFwiY3Vyc29yLW1vZHVsZV9fZGVmYXVsdF9fX3ZELThUXCIsXG4gIFwiZWFzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19lYXN0LXJlc2l6ZV9fX1M0SEY1XCIsXG4gIFwiZWFzdC1hbmQtd2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19lYXN0LWFuZC13ZXN0LXJlc2l6ZV9fX3UtSmYtXCIsXG4gIFwiZ3JhYlwiOiBcImN1cnNvci1tb2R1bGVfX2dyYWJfX19VdkFGN1wiLFxuICBcImdyYWJiaW5nXCI6IFwiY3Vyc29yLW1vZHVsZV9fZ3JhYmJpbmdfX19NTWl2WFwiLFxuICBcImhlbHBcIjogXCJjdXJzb3ItbW9kdWxlX19oZWxwX19faUI4RzRcIixcbiAgXCJtb3ZlXCI6IFwiY3Vyc29yLW1vZHVsZV9fbW92ZV9fX3lwZC1QXCIsXG4gIFwibm9ydGgtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGgtcmVzaXplX19fN05raFZcIixcbiAgXCJub3J0aGVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGhlYXN0LXJlc2l6ZV9fX000TUl6XCIsXG4gIFwibm9ydGhlYXN0LWFuZC1zb3V0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGhlYXN0LWFuZC1zb3V0aHdlc3QtcmVzaXplX19fei0xZHFcIixcbiAgXCJuby1kcm9wXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm8tZHJvcF9fX1dUMXQ5XCIsXG4gIFwibm9uZVwiOiBcImN1cnNvci1tb2R1bGVfX25vbmVfX19FaTlzelwiLFxuICBcIm5vdC1hbGxvd2VkXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm90LWFsbG93ZWRfX185dUZMdVwiLFxuICBcIm5vcnRoLWFuZC1zb3V0aC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19ub3J0aC1hbmQtc291dGgtcmVzaXplX19fUUc1QU5cIixcbiAgXCJub3J0aHdlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGh3ZXN0LXJlc2l6ZV9fX2NrQ29oXCIsXG4gIFwibm9ydGh3ZXN0LWFuZC1zb3V0aGVhc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fbm9ydGh3ZXN0LWFuZC1zb3V0aGVhc3QtcmVzaXplX19fbmo0VlNcIixcbiAgXCJwb2ludGVyXCI6IFwiY3Vyc29yLW1vZHVsZV9fcG9pbnRlcl9fX0ZpZGZLXCIsXG4gIFwicHJvZ3Jlc3NcIjogXCJjdXJzb3ItbW9kdWxlX19wcm9ncmVzc19fX0lnRXh5XCIsXG4gIFwicm93LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3Jvdy1yZXNpemVfX18wU3NlNlwiLFxuICBcInNvdXRoLXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3NvdXRoLXJlc2l6ZV9fXzRGZW5TXCIsXG4gIFwic291dGhlYXN0LXJlc2l6ZVwiOiBcImN1cnNvci1tb2R1bGVfX3NvdXRoZWFzdC1yZXNpemVfX193OGhHcVwiLFxuICBcInNvdXRod2VzdC1yZXNpemVcIjogXCJjdXJzb3ItbW9kdWxlX19zb3V0aHdlc3QtcmVzaXplX19fNlV2NEdcIixcbiAgXCJ0ZXh0XCI6IFwiY3Vyc29yLW1vZHVsZV9fdGV4dF9fX3RxLUF3XCIsXG4gIFwidmVydGljYWwtdGV4dFwiOiBcImN1cnNvci1tb2R1bGVfX3ZlcnRpY2FsLXRleHRfX18zT2F6RVwiLFxuICBcIndlc3QtcmVzaXplXCI6IFwiY3Vyc29yLW1vZHVsZV9fd2VzdC1yZXNpemVfX19iclc1NlwiLFxuICBcIndhaXRcIjogXCJjdXJzb3ItbW9kdWxlX193YWl0X19fUXRYbEdcIixcbiAgXCJ6b29tLWluXCI6IFwiY3Vyc29yLW1vZHVsZV9fem9vbS1pbl9fX3pFREhRXCIsXG4gIFwiem9vbS1vdXRcIjogXCJjdXJzb3ItbW9kdWxlX196b29tLW91dF9fX3FicW82XCJcbn07IiwgImltcG9ydCByYXdTdHlsZXMgZnJvbSBcIi4vY3Vyc29yLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHsgc2FuaXRpemVTY3NzTW9kdWxlcyB9IGZyb20gXCJAazhzbGVucy90ZXN0LXV0aWxzXCI7XG5cbmNvbnN0IHN0eWxlcyA9IHNhbml0aXplU2Nzc01vZHVsZXMocmF3U3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgJEN1cnNvclByb3BzID1cbiAgfCBcImFsaWFzXCJcbiAgfCBcImFsbC1zY3JvbGxcIlxuICB8IFwiY2VsbFwiXG4gIHwgXCJjb2x1bW4tcmVzaXplXCJcbiAgfCBcImNvbnRleHQtbWVudVwiXG4gIHwgXCJjb3B5XCJcbiAgfCBcImNyb3NzaGFpclwiXG4gIHwgXCJkZWZhdWx0XCJcbiAgfCBcImVhc3QtcmVzaXplXCJcbiAgfCBcImVhc3QtYW5kLXdlc3QtcmVzaXplXCJcbiAgfCBcImdyYWJcIlxuICB8IFwiZ3JhYmJpbmdcIlxuICB8IFwiaGVscFwiXG4gIHwgXCJtb3ZlXCJcbiAgfCBcIm5vcnRoLXJlc2l6ZVwiXG4gIHwgXCJub3J0aGVhc3QtcmVzaXplXCJcbiAgfCBcIm5vcnRoZWFzdC1hbmQtc291dGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJuby1kcm9wXCJcbiAgfCBcIm5vbmVcIlxuICB8IFwibm90LWFsbG93ZWRcIlxuICB8IFwibm9ydGgtYW5kLXNvdXRoLXJlc2l6ZVwiXG4gIHwgXCJub3J0aHdlc3QtcmVzaXplXCJcbiAgfCBcIm5vcnRod2VzdC1hbmQtc291dGhlYXN0LXJlc2l6ZVwiXG4gIHwgXCJwb2ludGVyXCJcbiAgfCBcInByb2dyZXNzXCJcbiAgfCBcInJvdy1yZXNpemVcIlxuICB8IFwic291dGgtcmVzaXplXCJcbiAgfCBcInNvdXRoZWFzdC1yZXNpemVcIlxuICB8IFwic291dGh3ZXN0LXJlc2l6ZVwiXG4gIHwgXCJ0ZXh0XCJcbiAgfCBcInZlcnRpY2FsLXRleHRcIlxuICB8IFwid2VzdC1yZXNpemVcIlxuICB8IFwid2FpdFwiXG4gIHwgXCJ6b29tLWluXCJcbiAgfCBcInpvb20tb3V0XCI7XG5cbmV4cG9ydCB0eXBlIEN1cnNvclBsdWdpblByb3BzID0ge1xuICAkY3Vyc29yPzogJEN1cnNvclByb3BzO1xufTtcblxuZXhwb3J0IGNvbnN0IGN1cnNvclBsdWdpbiA9IGdldFBsdWdpbjxDdXJzb3JQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgY29uc3QgeyAkY3Vyc29yLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRjdXJzb3IpIHtcbiAgICByZXR1cm4geyAkY3Vyc29yOiB1bmRlZmluZWQgfTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgJGN1cnNvcjogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCBzdHlsZXNbJGN1cnNvcl1dLFxuICAgIFwiZGF0YS1jdXJzb3ItdGVzdFwiOiAkY3Vyc29yLFxuICB9O1xufSk7XG4iLCAiaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgeyBvbk1pZGRsZUNsaWNrLCBvblRyaWdnZXIgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IGVuYWJsZWRQbHVnaW4gfSBmcm9tIFwiLi4vZW5hYmxlZC9lbmFibGVkXCI7XG5pbXBvcnQgdHlwZSB7ICRDdXJzb3JQcm9wcywgY3Vyc29yUGx1Z2luIH0gZnJvbSBcIi4uL2N1cnNvci9jdXJzb3JcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTeW5jSW5qZWN0IH0gZnJvbSBcIkBrOHNsZW5zL3VzZS1pbmplY3RcIjtcbmltcG9ydCB7IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSB9IGZyb20gXCIuL29uLXJpZ2h0LXRyaWdnZXIuaW5qZWN0YWJsZVwiO1xuXG5leHBvcnQgdHlwZSBQb3NpdGlvbjJkID0ge1xuICByZWFkb25seSB4OiBudW1iZXI7XG4gIHJlYWRvbmx5IHk6IG51bWJlcjtcbn07XG5cbmV4cG9ydCB0eXBlIENsaWNrSGFuZGxlckRldGFpbHMgPSB7XG4gIHJlYWRvbmx5IGN1cnNvcjogUG9zaXRpb24yZDtcbiAgcmVhZG9ubHkgY2F1c2U6IFwiY2xpY2tcIiB8IFwia2V5Ym9hcmRcIjtcbn07XG5cbmV4cG9ydCB0eXBlIENsaWNrSGFuZGxlciA9ICgoZGV0YWlsczogQ2xpY2tIYW5kbGVyRGV0YWlscykgPT4gdm9pZCkgfCAoKGRldGFpbHM6IENsaWNrSGFuZGxlckRldGFpbHMpID0+IFByb21pc2U8dm9pZD4pO1xuXG5leHBvcnQgdHlwZSBDbGlja1BsdWdpblByb3BzID0ge1xuICAkb25DbGljaz86IENsaWNrSGFuZGxlcjtcbiAgJG9uT25seU1vdXNlQ2xpY2s/OiBDbGlja0hhbmRsZXI7XG4gICRvbkRvdWJsZUNsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25SaWdodENsaWNrPzogQ2xpY2tIYW5kbGVyO1xuICAkb25NaWRkbGVDbGljaz86IENsaWNrSGFuZGxlcjtcbiAgdGFiSW5kZXg/OiBudW1iZXI7XG59O1xuXG5jb25zdCBjbGlja1VzZWQgPSBTeW1ib2woKTtcblxuZXhwb3J0IGNvbnN0IGNsaWNrYWJsZVBsdWdpbiA9IGdldFBsdWdpbjxDbGlja1BsdWdpblByb3BzLCBbdHlwZW9mIGVuYWJsZWRQbHVnaW4sIHR5cGVvZiBjdXJzb3JQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgLy8gdHlwaW5nIHJlcXVpcmVkIGR1ZSB0byBsYWNrIG9mIGdvb2QgdHlwaW5nIG9mIHByZS1wcm9jZXNzZWQgZGVwZW5kZW50IHBsdWdpbnNcbiAgY29uc3Qge1xuICAgICRjdXJzb3IsXG4gICAgJG9uQ2xpY2ssXG4gICAgJG9uT25seU1vdXNlQ2xpY2ssXG4gICAgJG9uTWlkZGxlQ2xpY2ssXG4gICAgJG9uUmlnaHRDbGljayxcbiAgICAkb25Eb3VibGVDbGljayxcbiAgICBvbkRvdWJsZUNsaWNrLFxuICAgIG9uQXV4Q2xpY2ssXG4gICAgb25DbGljayxcbiAgICBvbkNvbnRleHRNZW51LFxuICAgIG9uS2V5RG93bixcbiAgICB0YWJJbmRleCxcbiAgICBkaXNhYmxlZCxcbiAgICByb2xlLFxuICB9ID0gcHJvcHMgYXMgdHlwZW9mIHByb3BzICYgUmVhY3QuSFRNTFByb3BzPEhUTUxFbGVtZW50PjtcbiAgY29uc3QgW3BlbmRpbmcsIHNldFBlbmRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBvblJpZ2h0VHJpZ2dlciA9IHVzZVN5bmNJbmplY3Qob25SaWdodFRyaWdnZXJJbmplY3RhYmxlKTtcbiAgY29uc3Qgb25Nb3VzZUNsaWNrID0gJG9uQ2xpY2sgPz8gJG9uT25seU1vdXNlQ2xpY2s7XG5cbiAgaWYgKCRvbkNsaWNrICYmICRvbk9ubHlNb3VzZUNsaWNrKSB7XG4gICAgY29uc29sZS53YXJuKFwiQ2Fubm90IGhhdmUgYm90aCAkb25DbGljayBhbmQgJG9uTW91c2VDbGlja09ubHkgb24gdGhlIHNhbWUgY29tcG9uZW50XCIpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkb25DbGljazogdW5kZWZpbmVkLFxuICAgICRvbk1pZGRsZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJG9uUmlnaHRDbGljazogdW5kZWZpbmVkLFxuICAgICRvbkRvdWJsZUNsaWNrOiB1bmRlZmluZWQsXG4gICAgJG9uT25seU1vdXNlQ2xpY2s6IHVuZGVmaW5lZCxcbiAgICB0YWJJbmRleDogdGFiSW5kZXggPz8gKG9uTW91c2VDbGljayB8fCAkb25SaWdodENsaWNrIHx8ICRvbkRvdWJsZUNsaWNrID8gMCA6IHVuZGVmaW5lZCksXG4gICAgJGN1cnNvcjogZ2V0Q3Vyc29yUHJvcHMoJGN1cnNvciwgZGlzYWJsZWQsIHBlbmRpbmcsIG9uTW91c2VDbGljaywgJG9uUmlnaHRDbGljayksXG4gICAgcm9sZTogcm9sZSA/PyAob25Nb3VzZUNsaWNrID8gXCJidXR0b25cIiA6IHJvbGUpLFxuICAgIG9uQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQ2xpY2s/LihldmVudCk7XG5cbiAgICAgIGlmICghZGlzYWJsZWQgJiYgb25Nb3VzZUNsaWNrICYmICEoY2xpY2tVc2VkIGluIGV2ZW50KSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGV2ZW50LCB7IFtjbGlja1VzZWRdOiB0cnVlIH0pO1xuXG4gICAgICAgIGNvbnN0IG1heWJlUHJvbWlzZSA9IG9uTW91c2VDbGljayh0b0RldGFpbHMoZXZlbnQpKTtcblxuICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShtYXliZVByb21pc2UpKSB7XG4gICAgICAgICAgc2V0UGVuZGluZyh0cnVlKTtcbiAgICAgICAgICBtYXliZVByb21pc2UudGhlbigoKSA9PiBzZXRQZW5kaW5nKGZhbHNlKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIG9uRG91YmxlQ2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uRG91YmxlQ2xpY2s/LihldmVudCk7XG4gICAgICAkb25Eb3VibGVDbGljaz8uKHRvRGV0YWlscyhldmVudCkpO1xuICAgIH0sXG4gICAgb25Db250ZXh0TWVudTogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25Db250ZXh0TWVudT8uKGV2ZW50KTtcbiAgICAgICRvblJpZ2h0Q2xpY2s/Lih0b0RldGFpbHMoZXZlbnQpKTtcbiAgICB9LFxuICAgIG9uQXV4Q2xpY2s6IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4pID0+IHtcbiAgICAgIG9uQXV4Q2xpY2s/LihldmVudCk7XG4gICAgICBvbk1pZGRsZUNsaWNrKGV2ZW50LCAoKSA9PiAkb25NaWRkbGVDbGljaz8uKHRvRGV0YWlscyhldmVudCkpKTtcbiAgICB9LFxuICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxFbGVtZW50PikgPT4ge1xuICAgICAgb25LZXlEb3duPy4oZXZlbnQpO1xuXG4gICAgICBpZiAoJG9uQ2xpY2spIHtcbiAgICAgICAgb25UcmlnZ2VyKGV2ZW50LCAoKSA9PiB7XG4gICAgICAgICAgaWYgKCFkaXNhYmxlZCAmJiAhKGNsaWNrVXNlZCBpbiBldmVudCkpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oZXZlbnQsIHsgW2NsaWNrVXNlZF06IHRydWUgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IG1heWJlUHJvbWlzZSA9ICRvbkNsaWNrKHRvRGV0YWlscyhldmVudCkpO1xuXG4gICAgICAgICAgICBpZiAoaXNQcm9taXNlTGlrZShtYXliZVByb21pc2UpKSB7XG4gICAgICAgICAgICAgIHNldFBlbmRpbmcodHJ1ZSk7XG4gICAgICAgICAgICAgIG1heWJlUHJvbWlzZS50aGVuKCgpID0+IHNldFBlbmRpbmcoZmFsc2UpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoJG9uUmlnaHRDbGljaykge1xuICAgICAgICBvblJpZ2h0VHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgICRvblJpZ2h0Q2xpY2sodG9EZXRhaWxzKGV2ZW50KSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59KTtcblxuY29uc3QgdG9NaWRkbGUgPSAocmVjdDogRE9NUmVjdCkgPT4gKHtcbiAgeDogcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsXG4gIHk6IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyLFxufSk7XG5cbmNvbnN0IHRvRGV0YWlscyA9IChldmVudDogUmVhY3QuTW91c2VFdmVudDxIVE1MRWxlbWVudD4gfCBSZWFjdC5LZXlib2FyZEV2ZW50PEhUTUxFbGVtZW50Pik6IENsaWNrSGFuZGxlckRldGFpbHMgPT4ge1xuICBjb25zdCBjdXJzb3IgPVxuICAgIFwiY2xpZW50WFwiIGluIGV2ZW50XG4gICAgICA/IHtcbiAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgIHk6IGV2ZW50LmNsaWVudFksXG4gICAgICAgIH1cbiAgICAgIDogdG9NaWRkbGUoZXZlbnQuY3VycmVudFRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG5cbiAgcmV0dXJuIHtcbiAgICBjdXJzb3IsXG4gICAgY2F1c2U6IGV2ZW50LmRldGFpbCA/IFwiY2xpY2tcIiA6IFwia2V5Ym9hcmRcIixcbiAgfTtcbn07XG5cbmNvbnN0IGlzUHJvbWlzZUxpa2UgPSAodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlPHVua25vd24+ID0+XG4gIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiAhIXZhbHVlICYmIFwidGhlblwiIGluIHZhbHVlO1xuXG5jb25zdCBnZXRDdXJzb3JQcm9wcyA9IChcbiAgJGN1cnNvcjogJEN1cnNvclByb3BzIHwgdW5kZWZpbmVkLFxuICBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZCxcbiAgcGVuZGluZzogYm9vbGVhbixcbiAgJG9uQ2xpY2s6IEZ1bmN0aW9uIHwgdW5kZWZpbmVkLFxuICAkb25SaWdodENsaWNrOiBGdW5jdGlvbiB8IHVuZGVmaW5lZCxcbik6ICRDdXJzb3JQcm9wcyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICgkY3Vyc29yKSB7XG4gICAgcmV0dXJuICRjdXJzb3I7XG4gIH1cblxuICBpZiAocGVuZGluZykge1xuICAgIHJldHVybiBcInByb2dyZXNzXCI7XG4gIH1cblxuICBpZiAoISRvbkNsaWNrICYmICEkb25SaWdodENsaWNrKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmIChkaXNhYmxlZCkge1xuICAgIHJldHVybiBcIm5vdC1hbGxvd2VkXCI7XG4gIH1cblxuICBpZiAoJG9uQ2xpY2spIHtcbiAgICByZXR1cm4gXCJwb2ludGVyXCI7XG4gIH1cblxuICByZXR1cm4gXCJjb250ZXh0LW1lbnVcIjtcbn07XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvZGlzcGxheS1jb250ZW50cy9kaXNwbGF5LWNvbnRlbnRzLm1vZHVsZS5zY3NzJztleHBvcnQgZGVmYXVsdCB7XG4gIFwiY29udGVudHNcIjogXCJkaXNwbGF5LWNvbnRlbnRzLW1vZHVsZV9fY29udGVudHNfX19tUmVYS1wiXG59OyIsICJpbXBvcnQgcmF3U3R5bGVzIGZyb20gXCIuL2Rpc3BsYXktY29udGVudHMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgeyBzYW5pdGl6ZVNjc3NNb2R1bGVzIH0gZnJvbSBcIkBrOHNsZW5zL3Rlc3QtdXRpbHNcIjtcblxuY29uc3Qgc3R5bGVzID0gc2FuaXRpemVTY3NzTW9kdWxlcyhyYXdTdHlsZXMpO1xuXG5leHBvcnQgdHlwZSBEaXNwbGF5Q29udGVudHNQbHVnaW5Qcm9wcyA9IHtcbiAgJGRpc3BsYXlDb250ZW50cz86IGJvb2xlYW47XG59O1xuXG5leHBvcnQgY29uc3QgZGlzcGxheUNvbnRlbnRzUGx1Z2luID0gZ2V0UGx1Z2luPERpc3BsYXlDb250ZW50c1BsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRkaXNwbGF5Q29udGVudHMsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGRpc3BsYXlDb250ZW50cykge1xuICAgIHJldHVybiB7ICRkaXNwbGF5Q29udGVudHM6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkZGlzcGxheUNvbnRlbnRzOiB1bmRlZmluZWQsXG4gICAgJGNsYXNzTmFtZTogWyRjbGFzc05hbWUsIHN0eWxlcy5jb250ZW50c10sXG4gIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy90ZXh0LWFsaWduL3RleHQtYWxpZ24ubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJ0ZXh0LWFsaWduLS1jZW50ZXJcIjogXCJ0ZXh0LWFsaWduLW1vZHVsZV9fdGV4dC1hbGlnbi0tY2VudGVyX19fYkRyUjJcIixcbiAgXCJ0ZXh0LWFsaWduLS1yaWdodFwiOiBcInRleHQtYWxpZ24tbW9kdWxlX190ZXh0LWFsaWduLS1yaWdodF9fX0pWUk1QXCIsXG4gIFwidGV4dC1hbGlnbi0tbGVmdFwiOiBcInRleHQtYWxpZ24tbW9kdWxlX190ZXh0LWFsaWduLS1sZWZ0X19fTExMazZcIlxufTsiLCAiaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi90ZXh0LWFsaWduLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuXG5leHBvcnQgdHlwZSBUZXh0QWxpZ25QbHVnaW5Qcm9wcyA9IHsgJHRleHRBbGlnbj86IFwibGVmdFwiIHwgXCJjZW50ZXJcIiB8IFwicmlnaHRcIiB9O1xuXG5leHBvcnQgY29uc3QgdGV4dEFsaWduUGx1Z2luID0gZ2V0UGx1Z2luPFRleHRBbGlnblBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICR0ZXh0QWxpZ24gfSA9IHByb3BzO1xuXG4gIGlmICghJHRleHRBbGlnbikge1xuICAgIHJldHVybiB7ICR0ZXh0QWxpZ246IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHsgJGNsYXNzTmFtZTogW3N0eWxlc1tgdGV4dC1hbGlnbi0tJHskdGV4dEFsaWdufWBdLCBwcm9wcy4kY2xhc3NOYW1lXSwgJHRleHRBbGlnbjogdW5kZWZpbmVkIH07XG59KTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9ibG9jay9ibG9jay5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImJsb2NrXCI6IFwiYmxvY2stbW9kdWxlX19ibG9ja19fX1k0dHpqXCIsXG4gIFwiYmxvY2stLWlubGluZVwiOiBcImJsb2NrLW1vZHVsZV9fYmxvY2stLWlubGluZV9fXy0xWUNnXCJcbn07IiwgImltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYmxvY2subW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5cbmV4cG9ydCB0eXBlIEJsb2NrUGx1Z2luUHJvcHMgPSB7XG4gICRibG9jaz86IGJvb2xlYW4gfCBcImlubGluZVwiO1xufTtcblxuZXhwb3J0IGNvbnN0IGJsb2NrUGx1Z2luID0gZ2V0UGx1Z2luPEJsb2NrUGx1Z2luUHJvcHMsIFt0eXBlb2YgY2xhc3NOYW1lUGx1Z2luXT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGJsb2NrLCAkY2xhc3NOYW1lIH0gPSBwcm9wcztcblxuICBpZiAoISRibG9jaykge1xuICAgIHJldHVybiB7ICRibG9jazogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRibG9jazogdW5kZWZpbmVkLFxuICAgICRjbGFzc05hbWU6IFskY2xhc3NOYW1lLCAkYmxvY2sgPT09IFwiaW5saW5lXCIgPyBzdHlsZXNbXCJibG9jay0taW5saW5lXCJdIDogc3R5bGVzLmJsb2NrXSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHR5cGUgeyBjbGFzc05hbWVQbHVnaW4gfSBmcm9tIFwiLi4vY2xhc3MtbmFtZS9jbGFzcy1uYW1lXCI7XG5pbXBvcnQgdHlwZSB7IENvbG9yIH0gZnJvbSBcIi4uL19zaGFyZWQvY29sb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFJhbmdlIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcbmltcG9ydCBvdXRsaW5lU3R5bGVzIGZyb20gXCIuL291dGxpbmUubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHNhbml0aXplU2Nzc01vZHVsZXMgfSBmcm9tIFwiQGs4c2xlbnMvdGVzdC11dGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBJQ2xhc3NOYW1lIH0gZnJvbSBcIkBrOHNsZW5zL3B1YmxpYy11dGlsaXRpZXNcIjtcblxuY29uc3Qgc3R5bGVzID0gc2FuaXRpemVTY3NzTW9kdWxlcyhvdXRsaW5lU3R5bGVzKTtcblxuZXhwb3J0IHR5cGUgT3V0bGluZVdpZHRoID0gXCJ6ZXJvXCIgfCBcInh4c1wiIHwgXCJ4c1wiIHwgXCJzXCIgfCBcIm1cIiB8IFwibFwiIHwgXCJ4bFwiIHwgXCJ4eGxcIiB8IGAke1JhbmdlPDMsIDU+fXhsYDtcblxuZXhwb3J0IHR5cGUgJE91dGxpbmVQcm9wcyA9IHsgY29sb3I/OiBDb2xvcjsgd2lkdGg/OiBPdXRsaW5lV2lkdGggfTtcblxuZXhwb3J0IHR5cGUgT3V0bGluZVBsdWdpblByb3BzID0geyAkb3V0bGluZT86IHsgZm9jdXNWaXNpYmxlPzogJE91dGxpbmVQcm9wcyB9IH07XG5cbmV4cG9ydCBjb25zdCBvdXRsaW5lUGx1Z2luID0gZ2V0UGx1Z2luPE91dGxpbmVQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGFzc05hbWVQbHVnaW5dPigocHJvcHMpID0+IHtcbiAgcmV0dXJuIHtcbiAgICAkY2xhc3NOYW1lOiBbcHJvcHMuJGNsYXNzTmFtZSwgZ2V0Rm9jdXNWaXNpYmxlT3V0bGluZVN0eWxlcyhwcm9wcy4kb3V0bGluZT8uZm9jdXNWaXNpYmxlKV0sXG4gICAgJG91dGxpbmU6IHVuZGVmaW5lZCxcbiAgfTtcbn0pO1xuXG5jb25zdCBnZXRGb2N1c1Zpc2libGVPdXRsaW5lU3R5bGVzID0gKHByb3BzOiAkT3V0bGluZVByb3BzIHwgdW5kZWZpbmVkKTogSUNsYXNzTmFtZSA9PiB7XG4gIGlmICghcHJvcHMpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgY29uc3QgeyBjb2xvciwgd2lkdGggfSA9IHByb3BzO1xuXG4gIHJldHVybiBbXG4gICAgY29sb3IgIT09IHVuZGVmaW5lZCB8fCB3aWR0aCAhPT0gdW5kZWZpbmVkID8gW3N0eWxlcy5vdXRsaW5lLCBzdHlsZXMuZm9jdXNWaXNpYmxlXSA6IHVuZGVmaW5lZCxcbiAgICBjb2xvciA/IHN0eWxlc1tgY29sb3ItLSR7Y29sb3J9YF0gOiB1bmRlZmluZWQsXG4gICAgd2lkdGggPyBzdHlsZXNbYHdpZHRoLS0ke3dpZHRofWBdIDogdW5kZWZpbmVkLFxuICBdO1xufTtcbiIsICJpbXBvcnQgJ2Nzcy1jaHVuazpzcmMvcGx1Z2lucy9vdXRsaW5lL291dGxpbmUubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJvdXRsaW5lXCI6IFwib3V0bGluZS1tb2R1bGVfX291dGxpbmVfX19Bb0J0RlwiLFxuICBcImZvY3VzVmlzaWJsZVwiOiBcIm91dGxpbmUtbW9kdWxlX19mb2N1c1Zpc2libGVfX19KQXJQSlwiLFxuICBcImNvbG9yLS1pbmhlcml0XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1pbmhlcml0X19fMFdQMHJcIixcbiAgXCJjb2xvci0td2hpdGVcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXdoaXRlX19fVXEtZ2RcIixcbiAgXCJjb2xvci0tdHJhbnNwYXJlbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXRyYW5zcGFyZW50X19fVE5vTXZcIixcbiAgXCJjb2xvci0tZ3JleTEwMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTEwMF9fX1ZNRjdZXCIsXG4gIFwiY29sb3ItLWdyZXk4MFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTgwX19fS2Q4Zk1cIixcbiAgXCJjb2xvci0tZ3JleTYwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NjBfX19aR2pPdFwiLFxuICBcImNvbG9yLS1ncmV5NDBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXk0MF9fX3VhRm5HXCIsXG4gIFwiY29sb3ItLWdyZXkzMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTMwX19fN1FCVlZcIixcbiAgXCJjb2xvci0tZ3JleTI1XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5MjVfX19yLWJiSlwiLFxuICBcImNvbG9yLS1ncmV5MjBcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWdyZXkyMF9fX2l3emVMXCIsXG4gIFwiY29sb3ItLWdyZXkxMFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tZ3JleTEwX19faEp0dFNcIixcbiAgXCJjb2xvci0tZ3JleTcwXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5NzBfX18wT0dsVVwiLFxuICBcImNvbG9yLS1ncmV5ODBBbHBoYTg1XCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1ncmV5ODBBbHBoYTg1X19falJ3SG5cIixcbiAgXCJjb2xvci0tcHJpbWFyeVwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tcHJpbWFyeV9fX1B4Y214XCIsXG4gIFwiY29sb3ItLXN1Y2Nlc3NcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXN1Y2Nlc3NfX194akpMblwiLFxuICBcImNvbG9yLS1ub3RpY2VcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLW5vdGljZV9fX0NSaVliXCIsXG4gIFwiY29sb3ItLXdhcm5pbmdcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLXdhcm5pbmdfX18xT2U3V1wiLFxuICBcImNvbG9yLS1jcml0aWNhbFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tY3JpdGljYWxfX195UXgtTFwiLFxuICBcImNvbG9yLS1zdWNjZXNzVGludFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0tc3VjY2Vzc1RpbnRfX19HSGFxLVwiLFxuICBcImNvbG9yLS13YXJuaW5nVGludFwiOiBcIm91dGxpbmUtbW9kdWxlX19jb2xvci0td2FybmluZ1RpbnRfX19ZQW50dVwiLFxuICBcImNvbG9yLS1jcml0aWNhbFRpbnRcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWNyaXRpY2FsVGludF9fX1ExbWRoXCIsXG4gIFwiY29sb3ItLWxpbmtcIjogXCJvdXRsaW5lLW1vZHVsZV9fY29sb3ItLWxpbmtfX191SWszb1wiLFxuICBcImNvbG9yLS1jb2RlXCI6IFwib3V0bGluZS1tb2R1bGVfX2NvbG9yLS1jb2RlX19feWJud2lcIixcbiAgXCJ3aWR0aC0temVyb1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0temVyb19fX0VrZnpOXCIsXG4gIFwid2lkdGgtLXh4c1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0teHhzX19fYkd5VHJcIixcbiAgXCJ3aWR0aC0teHNcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXhzX19fWlpSMkJcIixcbiAgXCJ3aWR0aC0tc1wiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tc19fXzhkREV6XCIsXG4gIFwid2lkdGgtLW1cIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLW1fX19nMnVHNVwiLFxuICBcIndpZHRoLS1sXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS1sX19fV2gwYkNcIixcbiAgXCJ3aWR0aC0teGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLXhsX19fOGRPTWpcIixcbiAgXCJ3aWR0aC0teHhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS14eGxfX19CRXNVbVwiLFxuICBcIndpZHRoLS0zeGxcIjogXCJvdXRsaW5lLW1vZHVsZV9fd2lkdGgtLTN4bF9fX0VzMFNZXCIsXG4gIFwid2lkdGgtLTR4bFwiOiBcIm91dGxpbmUtbW9kdWxlX193aWR0aC0tNHhsX19fWWVvdjhcIixcbiAgXCJ3aWR0aC0tNXhsXCI6IFwib3V0bGluZS1tb2R1bGVfX3dpZHRoLS01eGxfX19Oc1Y4UFwiXG59OyIsICJpbXBvcnQgeyBnZXRQbHVnaW4gfSBmcm9tIFwiQGs4c2xlbnMvZWxlbWVudC1jb21wb25lbnRcIjtcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gXCJyZWFjdC1kb21cIjtcbmltcG9ydCB0eXBlIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IGNsaWNrYWJsZVBsdWdpbiwgQ2xpY2tIYW5kbGVyRGV0YWlscyB9IGZyb20gXCIuLi9jbGlja2FibGUvY2xpY2thYmxlXCI7XG5pbXBvcnQgeyBhdXRvVXBkYXRlLCBmbGlwLCBvZmZzZXQsIHNoaWZ0LCB1c2VGbG9hdGluZyB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgdHlwZSB7IFJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgeyBleHBlY3REZWZpbmVkLCBzdG9wUHJvcGFnYXRpb24gfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9wb3BvdmVyLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBNaW5pbWFsRGl2IH0gZnJvbSBcIi4uLy4uL2VsZW1lbnRzL21pbmltYWwtZGl2XCI7XG5cbmV4cG9ydCB0eXBlIFBvcG92ZXJQbHVnaW5Qcm9wcyA9IHtcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gICRwb3BvdmVyPzogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuZXhwb3J0IGNvbnN0IHBvcG92ZXJJc09wZW5Db250ZXh0ID0gY3JlYXRlQ29udGV4dChmYWxzZSk7XG5cbmV4cG9ydCBjb25zdCB1c2VQb3BvdmVySXNPcGVuID0gKCkgPT4gdXNlQ29udGV4dChwb3BvdmVySXNPcGVuQ29udGV4dCk7XG5cbmV4cG9ydCBjb25zdCBwb3BvdmVyUGx1Z2luID0gZ2V0UGx1Z2luPFBvcG92ZXJQbHVnaW5Qcm9wcywgW3R5cGVvZiBjbGlja2FibGVQbHVnaW4sIFJlZlBsdWdpbjxhbnk+XT4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHBvcG92ZXIsICRvbkNsaWNrLCAkcmVmIH0gPSBwcm9wcztcbiAgY29uc3QgW3BvcG92ZXJDb250ZW50SXNTaG93biwgc2V0UG9wb3ZlckNvbnRlbnRJc1Nob3duXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZmVyZW5jZSwgc2V0RWxlbWVudF0gPSB1c2VTdGF0ZTxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBjbG9zZVBvcG92ZXIgPSB1c2VDYWxsYmFjaygoKSA9PiBzZXRQb3BvdmVyQ29udGVudElzU2hvd24oZmFsc2UpLCBbXSk7XG5cbiAgaWYgKCEkcG9wb3Zlcikge1xuICAgIHJldHVybiB7XG4gICAgICAkcG9wb3ZlcjogdW5kZWZpbmVkLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRwb3BvdmVyOiB1bmRlZmluZWQsXG4gICAgJHJlZjogWyRyZWYsIHNldEVsZW1lbnRdLFxuICAgICRvbkNsaWNrOiAoZGV0YWlsczogQ2xpY2tIYW5kbGVyRGV0YWlscykgPT4ge1xuICAgICAgc2V0UG9wb3ZlckNvbnRlbnRJc1Nob3duKCFwb3BvdmVyQ29udGVudElzU2hvd24pO1xuICAgICAgJG9uQ2xpY2s/LihkZXRhaWxzKTtcbiAgICB9LFxuICAgIG9uQ2xpY2s6IHN0b3BQcm9wYWdhdGlvbixcbiAgICAkd3JhcHBlcjoge1xuICAgICAgQ29tcG9uZW50OiBQb3BvdmVyV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7XG4gICAgICAgIHBvcG92ZXI6IHtcbiAgICAgICAgICAkcG9wb3ZlcixcbiAgICAgICAgICBpc1Nob3duOiBwb3BvdmVyQ29udGVudElzU2hvd24sXG4gICAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICAgIGNsb3NlUG9wb3ZlcixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfTtcbn0pO1xuXG50eXBlIFBvcG92ZXJXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IHBvcG92ZXI6IHtcbiAgICByZWFkb25seSAkcG9wb3ZlcjogKCkgPT4gUmVhY3QuUmVhY3ROb2RlO1xuICAgIHJlYWRvbmx5IGlzU2hvd246IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgcmVmZXJlbmNlOiBIVE1MRGl2RWxlbWVudCB8IG51bGw7XG4gICAgcmVhZG9ubHkgY2xvc2VQb3BvdmVyOiBWb2lkRnVuY3Rpb247XG4gIH07XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBQb3BvdmVyV3JhcHBlckNvbXBvbmVudCA9ICh7IHBvcG92ZXIsIGNoaWxkcmVuIH06IFBvcG92ZXJXcmFwcGVyUHJvcHMpID0+IHtcbiAgY29uc3QgeyAkcG9wb3ZlciwgaXNTaG93biwgcmVmZXJlbmNlLCBjbG9zZVBvcG92ZXIgfSA9IHBvcG92ZXI7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzU2hvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxQb3BvdmVyT3ZlcmxheUNvbnRlbnRcbiAgICAgICAgICAgIHsuLi57XG4gICAgICAgICAgICAgIHJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgJHBvcG92ZXIsXG4gICAgICAgICAgICAgIGNsb3NlUG9wb3ZlcixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgKX1cbiAgICAgIDxwb3BvdmVySXNPcGVuQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17aXNTaG93bn0+e2NoaWxkcmVufTwvcG9wb3ZlcklzT3BlbkNvbnRleHQuUHJvdmlkZXI+XG4gICAgPC8+XG4gICk7XG59O1xuXG50eXBlIFBvcG92ZXJPdmVybGF5Q29udGVudFByb3BzID0ge1xuICByZWZlcmVuY2U6IEhUTUxEaXZFbGVtZW50IHwgbnVsbDtcbiAgJHBvcG92ZXI6ICgpID0+IFJlYWN0LlJlYWN0Tm9kZTtcbiAgY2xvc2VQb3BvdmVyOiBWb2lkRnVuY3Rpb247XG59O1xuXG5jb25zdCBQb3BvdmVyT3ZlcmxheUNvbnRlbnQgPSAocHJvcHM6IFBvcG92ZXJPdmVybGF5Q29udGVudFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJHBvcG92ZXIsIGNsb3NlUG9wb3ZlciwgcmVmZXJlbmNlIH0gPSBwcm9wcztcbiAgY29uc3QgW2Zsb2F0aW5nLCBzZXRGbG9hdGluZ10gPSB1c2VTdGF0ZTxIVE1MRGl2RWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCB7IGZsb2F0aW5nU3R5bGVzIH0gPSB1c2VGbG9hdGluZyh7XG4gICAgcGxhY2VtZW50OiBcImJvdHRvbVwiLFxuICAgIG1pZGRsZXdhcmU6IFtmbGlwKCksIG9mZnNldCg4KSwgc2hpZnQoKV0sXG4gICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6IGF1dG9VcGRhdGUsXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgcmVmZXJlbmNlLFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IGNsb3NlUG9wb3ZlckZyb21PdmVybGF5ID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgc3RvcFByb3BhZ2F0aW9uKGV2ZW50KTtcbiAgICBjbG9zZVBvcG92ZXIoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxNaW5pbWFsRGl2XG4gICAgICBkYXRhLXBvcG92ZXItb3ZlcmxheS10ZXN0XG4gICAgICAkYWJzb2x1dGVcbiAgICAgICRjbGFzc05hbWU9e3N0eWxlcy5wb3BvdmVyX19vdmVybGF5fVxuICAgICAgb25DbGljaz17Y2xvc2VQb3BvdmVyRnJvbU92ZXJsYXl9XG4gICAgPlxuICAgICAgPE1pbmltYWxEaXZcbiAgICAgICAgJHJlZj17c2V0RmxvYXRpbmd9XG4gICAgICAgIHN0eWxlPXtmbG9hdGluZ1N0eWxlc31cbiAgICAgICAgb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufVxuICAgICAgICAkY2xhc3NOYW1lPXtzdHlsZXMucG9wb3Zlcl9fY29udGVudH1cbiAgICAgID5cbiAgICAgICAgPGNvbnRleHRGb3JDbG9zaW5nUG9wb3Zlci5Qcm92aWRlciB2YWx1ZT17Y2xvc2VQb3BvdmVyfT57JHBvcG92ZXIoKX08L2NvbnRleHRGb3JDbG9zaW5nUG9wb3Zlci5Qcm92aWRlcj5cbiAgICAgIDwvTWluaW1hbERpdj5cbiAgICA8L01pbmltYWxEaXY+XG4gICk7XG59O1xuXG5leHBvcnQgY29uc3QgY29udGV4dEZvckNsb3NpbmdQb3BvdmVyID0gY3JlYXRlQ29udGV4dDxWb2lkRnVuY3Rpb24gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmV4cG9ydCBjb25zdCB1c2VDbG9zZVBvcG92ZXIgPSAoKSA9PlxuICBleHBlY3REZWZpbmVkKFxuICAgIHVzZUNvbnRleHQoY29udGV4dEZvckNsb3NpbmdQb3BvdmVyKSxcbiAgICBcIlRyaWVkIHRvIHVzZSBjbG9zZSBwb3BvdmVyIHdoaWxlIGNvbnRlbnQgaXMgbm90IHNob3duIGluc2lkZSB0aGUgcG9wb3ZlciBjb250ZW50LlwiLFxuICApO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL3BvcG92ZXIvcG9wb3Zlci5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcInBvcG92ZXJfX292ZXJsYXlcIjogXCJwb3BvdmVyLW1vZHVsZV9fcG9wb3Zlcl9fb3ZlcmxheV9fX1RjS3YtXCIsXG4gIFwicG9wb3Zlcl9fY29udGVudFwiOiBcInBvcG92ZXItbW9kdWxlX19wb3BvdmVyX19jb250ZW50X19fVUNVWjZcIlxufTsiLCAiaW1wb3J0IHsgZ2V0UGx1Z2luLCB0eXBlIENvbnRyaWJ1dGVSZWYsIHR5cGUgUGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IFJlZlBsdWdpbiB9IGZyb20gXCIuLi9yZWYvcmVmXCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGF1dG9VcGRhdGUsIGZsaXAsIG9mZnNldCwgc2hpZnQsIHVzZUZsb2F0aW5nLCB0eXBlIFBsYWNlbWVudCB9IGZyb20gXCJAZmxvYXRpbmctdWkvcmVhY3QtZG9tXCI7XG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuXG5leHBvcnQgdHlwZSBGbG9hdGluZ0NvbnRlbnRBcmdzID0ge1xuICByZWFkb25seSBmbG9hdGluZ1N0eWxlczogUmVhY3QuQ1NTUHJvcGVydGllcztcbiAgcmVhZG9ubHkgY29udGVudFJlZjogTm9uTnVsbGFibGU8UmVhY3QuUmVmPEhUTUxEaXZFbGVtZW50Pj47XG59O1xuXG5leHBvcnQgdHlwZSBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5ID0gKGFyZ3M6IEZsb2F0aW5nQ29udGVudEFyZ3MpID0+IFJlYWN0LlJlYWN0Tm9kZTtcblxuZXhwb3J0IHR5cGUgJEZsb2F0aW5nUHJvcHMgPSB7XG4gIHJlYWRvbmx5IHBvc2l0aW9uPzogUGxhY2VtZW50O1xuICByZWFkb25seSBjb250ZW50OiBGbG9hdGluZ0NvbnRlbnRGYWN0b3J5O1xufTtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG4gIHJlYWRvbmx5ICRmbG9hdGluZz86ICRGbG9hdGluZ1Byb3BzO1xufTtcblxuZXhwb3J0IHR5cGUgRmxvYXRpbmdQbHVnaW4gPSBQbHVnaW48RmxvYXRpbmdQbHVnaW5Qcm9wcywgdW5rbm93bj47XG5cbnR5cGUgRmxvYXRpbmdXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGZsb2F0aW5nOiAkRmxvYXRpbmdQcm9wcztcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IEZsb2F0aW5nV3JhcHBlckNvbXBvbmVudCA9ICh7IGZsb2F0aW5nLCBjb250cmlidXRlUmVmLCBjaGlsZHJlbiB9OiBGbG9hdGluZ1dyYXBwZXJQcm9wcykgPT4ge1xuICBjb25zdCBbcmVmZXJlbmNlLCBzZXRSZWZlcmVuY2VdID0gdXNlU3RhdGU8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2Zsb2F0aW5nRWwsIHNldEZsb2F0aW5nXSA9IHVzZVN0YXRlPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG5cbiAgY29udHJpYnV0ZVJlZihzZXRSZWZlcmVuY2UpO1xuXG4gIGNvbnN0IHsgZmxvYXRpbmdTdHlsZXMgfSA9IHVzZUZsb2F0aW5nKHtcbiAgICBwbGFjZW1lbnQ6IGZsb2F0aW5nLnBvc2l0aW9uID8/IFwiYm90dG9tXCIsXG4gICAgbWlkZGxld2FyZTogW2ZsaXAoKSwgb2Zmc2V0KDgpLCBzaGlmdCgpXSxcbiAgICB3aGlsZUVsZW1lbnRzTW91bnRlZDogYXV0b1VwZGF0ZSxcbiAgICBlbGVtZW50czoge1xuICAgICAgZmxvYXRpbmc6IGZsb2F0aW5nRWwsXG4gICAgICByZWZlcmVuY2UsXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3QgZmxvYXRpbmdDb250ZW50ID0gZmxvYXRpbmcuY29udGVudCh7IGZsb2F0aW5nU3R5bGVzLCBjb250ZW50UmVmOiBzZXRGbG9hdGluZyB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7ZmxvYXRpbmdDb250ZW50ID8gY3JlYXRlUG9ydGFsKGZsb2F0aW5nQ29udGVudCwgZG9jdW1lbnQuYm9keSkgOiBudWxsfVxuICAgICAge2NoaWxkcmVufVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGZsb2F0aW5nUGx1Z2luPFQ+KCkge1xuICByZXR1cm4gZ2V0UGx1Z2luPEZsb2F0aW5nUGx1Z2luUHJvcHMsIFtSZWZQbHVnaW48VD5dPigocHJvcHMpID0+IHtcbiAgICBjb25zdCB7ICRmbG9hdGluZyB9ID0gcHJvcHM7XG5cbiAgICBpZiAoJGZsb2F0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7ICRmbG9hdGluZzogdW5kZWZpbmVkIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICRmbG9hdGluZzogdW5kZWZpbmVkLFxuICAgICAgJHdyYXBwZXI6IHtcbiAgICAgICAgQ29tcG9uZW50OiBGbG9hdGluZ1dyYXBwZXJDb21wb25lbnQsXG4gICAgICAgIHByb3BzOiB7IGZsb2F0aW5nOiAkZmxvYXRpbmcgfSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG59XG4iLCAiaW1wb3J0ICdjc3MtY2h1bms6c3JjL3BsdWdpbnMvaW52aXNpYmxlLWJhY2tkcm9wL2ludmlzaWJsZS1iYWNrZHJvcC5tb2R1bGUuc2Nzcyc7ZXhwb3J0IGRlZmF1bHQge1xuICBcImludmlzaWJsZUJhY2tkcm9wXCI6IFwiaW52aXNpYmxlLWJhY2tkcm9wLW1vZHVsZV9faW52aXNpYmxlQmFja2Ryb3BfX19oT2g1YlwiXG59OyIsICJpbXBvcnQgc3R5bGVzIGZyb20gXCIuL2ludmlzaWJsZS1iYWNrZHJvcC5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgZ2V0UGx1Z2luIH0gZnJvbSBcIkBrOHNsZW5zL2VsZW1lbnQtY29tcG9uZW50XCI7XG5pbXBvcnQgdHlwZSB7IGNsYXNzTmFtZVBsdWdpbiB9IGZyb20gXCIuLi9jbGFzcy1uYW1lL2NsYXNzLW5hbWVcIjtcblxuZXhwb3J0IHR5cGUgSW52aXNpYmxlQmFja2Ryb3BQbHVnaW5Qcm9wcyA9IHtcbiAgJGludmlzaWJsZUJhY2tkcm9wPzogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBjb25zdCBpbnZpc2libGVCYWNrZHJvcFBsdWdpbiA9IGdldFBsdWdpbjxJbnZpc2libGVCYWNrZHJvcFBsdWdpblByb3BzLCBbdHlwZW9mIGNsYXNzTmFtZVBsdWdpbl0+KChwcm9wcykgPT4ge1xuICBjb25zdCB7ICRpbnZpc2libGVCYWNrZHJvcCwgJGNsYXNzTmFtZSB9ID0gcHJvcHM7XG5cbiAgaWYgKCEkaW52aXNpYmxlQmFja2Ryb3ApIHtcbiAgICByZXR1cm4geyAkaW52aXNpYmxlQmFja2Ryb3A6IHVuZGVmaW5lZCB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAkaW52aXNpYmxlQmFja2Ryb3A6IHVuZGVmaW5lZCxcbiAgICAkY2xhc3NOYW1lOiBbJGNsYXNzTmFtZSwgc3R5bGVzLmludmlzaWJsZUJhY2tkcm9wXSxcbiAgfTtcbn0pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRHJvcERvd25NZW51LCB0eXBlIERyb3BEb3duTWVudVNwZWMgfSBmcm9tIFwiQGs4c2xlbnMvZHJvcC1kb3duLW1lbnUtY29udHJhY3RzXCI7XG5pbXBvcnQgeyBvblRyaWdnZXIgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgdXNlU3luY0luamVjdCB9IGZyb20gXCJAazhzbGVucy91c2UtaW5qZWN0XCI7XG5pbXBvcnQgdHlwZSBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IG9uUmlnaHRUcmlnZ2VySW5qZWN0YWJsZSB9IGZyb20gXCIuLi9jbGlja2FibGUvb24tcmlnaHQtdHJpZ2dlci5pbmplY3RhYmxlXCI7XG5pbXBvcnQgdHlwZSB7IFBvc2l0aW9uMmQgfSBmcm9tIFwiLi4vY2xpY2thYmxlL2NsaWNrYWJsZVwiO1xuaW1wb3J0IHR5cGUgeyBjdXJzb3JQbHVnaW4gfSBmcm9tIFwiLi4vY3Vyc29yL2N1cnNvclwiO1xuaW1wb3J0IHsgdHlwZSBlbmFibGVkUGx1Z2luLCBpc0Rpc2FibGVkIH0gZnJvbSBcIi4uL2VuYWJsZWQvZW5hYmxlZFwiO1xuaW1wb3J0IHsgdXNlT25PdXRzaWRlQ2xpY2sgfSBmcm9tIFwiLi4vb24tb3V0c2lkZS1jbGljay9vbi1vdXRzaWRlLWNsaWNrXCI7XG5cbmV4cG9ydCB0eXBlIERyb3BEb3duTWVudVBsdWdpblByb3BzID0ge1xuICByZWFkb25seSBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgcmVhZG9ubHkgdGFiSW5kZXg/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEF0dGFjaGVzIGEgZHJvcC1kb3duIG1lbnUgdG8gdGhlIGVsZW1lbnQuIENyZWF0ZSB0aGUgdmFsdWUgd2l0aCBgZHJvcERvd25NZW51KGtpbmQsIG9wdGlvbnM/KWBcbiAgICogZnJvbSBgQGs4c2xlbnMvZHJvcC1kb3duLW1lbnUtY29udHJhY3RzYDsgdGhlIGl0ZW1zIGNvbWUgZnJvbSB0aGUgY29udHJpYnV0aW9ucyByZWdpc3RlcmVkIGZvclxuICAgKiB0aGUga2luZC5cbiAgICpcbiAgICogVGhlIG1lbnUgcG9zaXRpb25zIGl0c2VsZiBhZ2FpbnN0IHRoZSBuZWFyZXN0IGFuY2hvciBhcm91bmQgaXQsIHNvIHRoZSBlbGVtZW50IFx1MjAxNCBvciBzb21ldGhpbmdcbiAgICogZW5jbG9zaW5nIGl0IFx1MjAxNCBkZWNsYXJlcyBgJGFuY2hvcmAuXG4gICAqXG4gICAqIEZvY3VzIHJldHVybnMgdG8gdGhlIGVsZW1lbnQgb25jZSB0aGUgbWVudSBpcyBnb25lLiBBIG1lbnUgdGhhdCBvcGVucyBvbiBob3ZlcmluZyBvcGVucyB3aXRoXG4gICAqIEFycm93UmlnaHQgYXMgd2VsbCwgYW5kIGNsb3NlcyB3aXRoIEFycm93TGVmdCBmcm9tIGFueXdoZXJlIHdpdGhpbiBpdCwgc28gYSBtZW51IGhlbGQgYnkgYSBtZW51XG4gICAqIHJvdyBpcyByZWFjaGFibGUgd2l0aG91dCBhIHBvaW50ZXIuXG4gICAqXG4gICAqIFJlcXVpcmVzIGBkcm9wRG93bk1lbnVGZWF0dXJlYCBvZiBgQGxlbnNhcHAvZHJvcC1kb3duLW1lbnVgIHRvIGJlIHJlZ2lzdGVyZWQ6IHRoZSBtZW51XG4gICAqIGNvbXBvbmVudCBpcyByZXNvbHZlZCB0aHJvdWdoIGFuIGluamVjdGlvbiB0b2tlbiB0aGlzIHBhY2thZ2UgZG9lcyBub3QgaW1wbGVtZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgJGRyb3BEb3duTWVudT86IERyb3BEb3duTWVudVNwZWM7XG59O1xuXG5jb25zdCBob3ZlckNsb3NlRGVsYXlJbk1pbGxpc2Vjb25kcyA9IDIwMDtcblxudHlwZSBEcm9wRG93bk1lbnVXcmFwcGVyUHJvcHMgPSB7XG4gIHJlYWRvbmx5IGRyb3BEb3duTWVudTogRHJvcERvd25NZW51U3BlYztcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVJlZjogQ29udHJpYnV0ZVJlZjtcbiAgcmVhZG9ubHkgY29udHJpYnV0ZVByb3BzOiBDb250cmlidXRlUHJvcHM7XG4gIHJlYWRvbmx5IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG59O1xuXG5jb25zdCBEcm9wRG93bk1lbnVXcmFwcGVyQ29tcG9uZW50ID0gKHtcbiAgZHJvcERvd25NZW51LFxuICBjb250cmlidXRlUmVmLFxuICBjb250cmlidXRlUHJvcHMsXG4gIGNoaWxkcmVuLFxufTogRHJvcERvd25NZW51V3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IFtpc09wZW4sIHNldElzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtjdXJzb3IsIHNldEN1cnNvcl0gPSB1c2VTdGF0ZTxQb3NpdGlvbjJkIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBjbG9zZVRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICBjb25zdCBvblJpZ2h0VHJpZ2dlciA9IHVzZVN5bmNJbmplY3Qob25SaWdodFRyaWdnZXJJbmplY3RhYmxlKTtcblxuICBjb25zdCBlbGVtZW50UmVmID0gdXNlUmVmPEhUTUxFbGVtZW50IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IG1lbnVSZWYgPSB1c2VSZWY8SFRNTEVsZW1lbnQgfCBudWxsPihudWxsKTtcbiAgY29uc3QgZWxlbWVudFRha2VzRm9jdXNCYWNrUmVmID0gdXNlUmVmKGZhbHNlKTtcblxuICBjb250cmlidXRlUmVmKFxuICAgIHVzZUNhbGxiYWNrKChlbGVtZW50OiBIVE1MRWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGVsZW1lbnRSZWYuY3VycmVudCA9IGVsZW1lbnQ7XG4gICAgfSwgW10pLFxuICApO1xuXG4gIGNvbnN0IHRvZ2dsZSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldElzT3Blbigod2FzT3BlbikgPT4gIXdhc09wZW4pLCBbXSk7XG5cbiAgY29uc3QgY2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gVGhlIGVsZW1lbnQgdGhlIG1lbnUgYmVsb25ncyB0byB0YWtlcyBmb2N1cyBiYWNrIHdoZW4gZm9jdXMgaXMgaW4gdGhlIG1lbnUgdGhhdCBpcyBjbG9zaW5nLFxuICAgIC8vIG9yIG5vd2hlcmUgYXQgYWxsOiB3aGF0ZXZlciB0aGUgdXNlciBkb2VzIG5leHQsIHRoZXkgZG8gZnJvbSB3aGVyZSB0aGV5IHdlcmUuIERlY2lkZWQgaGVyZSxcbiAgICAvLyB3aGlsZSBpdCBpcyBzdGlsbCBjbGVhciB3aGVyZSBmb2N1cyB3YXMsIHJhdGhlciB0aGFuIG9uY2UgdGhlIG1lbnUgaGFzIGdvbmUuXG4gICAgY29uc3QgZm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICBlbGVtZW50VGFrZXNGb2N1c0JhY2tSZWYuY3VycmVudCA9XG4gICAgICBmb2N1c2VkID09PSBudWxsIHx8IGZvY3VzZWQgPT09IGRvY3VtZW50LmJvZHkgfHwgbWVudVJlZi5jdXJyZW50Py5jb250YWlucyhmb2N1c2VkKSA9PT0gdHJ1ZTtcblxuICAgIHNldElzT3BlbihmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBjYW5jZWxTY2hlZHVsZWRDbG9zZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoY2xvc2VUaW1lclJlZi5jdXJyZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dChjbG9zZVRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgY2xvc2VUaW1lclJlZi5jdXJyZW50ID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9wZW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBzZXRJc09wZW4odHJ1ZSk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIGNvbnN0IHNjaGVkdWxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2FuY2VsU2NoZWR1bGVkQ2xvc2UoKTtcbiAgICBjbG9zZVRpbWVyUmVmLmN1cnJlbnQgPSBzZXRUaW1lb3V0KGNsb3NlLCBob3ZlckNsb3NlRGVsYXlJbk1pbGxpc2Vjb25kcyk7XG4gIH0sIFtjYW5jZWxTY2hlZHVsZWRDbG9zZSwgY2xvc2VdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4gY2FuY2VsU2NoZWR1bGVkQ2xvc2UsIFtjYW5jZWxTY2hlZHVsZWRDbG9zZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc09wZW4pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gQSBtZW51IHRoYXQgaXMgZGlzbWlzc2VkIHJhdGhlciB0aGFuIGNsb3NlZCBcdTIwMTQgY2xpY2tlZCBhd2F5IGZyb20gXHUyMDE0IGxlYXZlcyBmb2N1cyB3aGVyZXZlciB0aGVcbiAgICAvLyB1c2VyIHB1dCBpdC5cbiAgICBlbGVtZW50VGFrZXNGb2N1c0JhY2tSZWYuY3VycmVudCA9IGZhbHNlO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICghZWxlbWVudFRha2VzRm9jdXNCYWNrUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBEZWZlcnJlZCBwYXN0IHdoYXQgaXMgYmVpbmcgdGFrZW4gYXdheTogdGhlIGVsZW1lbnQgbWF5IGJlIGdvaW5nIHdpdGggdGhlIG1lbnUsIGEgbWVudVxuICAgICAgLy8gaW5zaWRlIGEgbWVudSB0aGF0IGlzIGNsb3NpbmcgdG9vLCBhbmQgb25seSB0aGVuIGlzIGl0IGNsZWFyIHdoZXRoZXIgaXQgaXMgc3RpbGwgdGhlcmUgdG9cbiAgICAgIC8vIHRha2UgZm9jdXMgYmFjay4gQW55dGhpbmcgdGhhdCB0b29rIGZvY3VzIGluIHRoZSBtZWFudGltZSB3YXMgZ2l2ZW4gaXQgb24gcHVycG9zZSwgYW5kIGFcbiAgICAgIC8vIG1lbnUgY2xvc2luZyBpcyBubyByZWFzb24gdG8gdGFrZSBpdCBhd2F5IGFnYWluLlxuICAgICAgdm9pZCBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgZm9jdXNlZCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGVsZW1lbnQ/LmlzQ29ubmVjdGVkICYmIChmb2N1c2VkID09PSBudWxsIHx8IGZvY3VzZWQgPT09IGRvY3VtZW50LmJvZHkpKSB7XG4gICAgICAgICAgZWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9LCBbaXNPcGVuXSk7XG5cbiAgY29uc3Qgb3Blbk9uID0gZHJvcERvd25NZW51Lm9wZW5PbiA/PyBcImNsaWNrXCI7XG5cbiAgY29uc3QgY2xvc2VPbkFycm93TGVmdCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gXCJBcnJvd0xlZnRcIikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgY2xvc2UoKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjbG9zZV0sXG4gICk7XG5cbiAgLy8gTWFya3MgdGhlIGVsZW1lbnQgYW5kLCBiZWxvdywgdGhlIG1lbnUgaXQgb3BlbnMgYXMgb25lIHRoaW5nIGZvciBvdXRzaWRlLWNsaWNrIHB1cnBvc2VzLlxuICBjb25zdCBvdXRzaWRlQ2xpY2tNYXJraW5nUHJvcHMgPSB1c2VPbk91dHNpZGVDbGljayhcbiAgICB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICBpZiAoaXNPcGVuKSB7XG4gICAgICAgIHNldElzT3BlbihmYWxzZSk7XG4gICAgICB9XG4gICAgfSwgW2lzT3Blbl0pLFxuICApO1xuXG4gIGNvbnRyaWJ1dGVQcm9wcyh7XG4gICAgLi4ub3V0c2lkZUNsaWNrTWFya2luZ1Byb3BzLFxuICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcIm1lbnVcIixcblxuICAgIC4uLihvcGVuT24gPT09IFwiY2xpY2tcIiAmJiB7XG4gICAgICBvbkNsaWNrOiAoZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgfSxcblxuICAgICAgLy8gQSBrZXkgcHJlc3MgdGhlIGVsZW1lbnQgYW5zd2VycyB3aXRoIGEgbWVudSBpcyBhbnN3ZXJlZCBoZXJlIGFuZCBub3doZXJlIGVsc2UsXG4gICAgICAvLyBleGFjdGx5IGFzIGl0cyBjbGljayBpczogd2hhdGV2ZXIgZW5jbG9zZXMgdGhlIGVsZW1lbnQgKGEgbWVudSByb3cgd2l0aCBhblxuICAgICAgLy8gYWN0aW9uIG9mIGl0cyBvd24sIHNheSkgbXVzdCBub3QgdGFrZSB0aGUgc2FtZSBwcmVzcyBmb3IgYmVpbmcgYWN0aXZhdGVkIHRvby5cbiAgICAgIG9uS2V5RG93bjogKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICAgIG9uVHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICAuLi4ob3Blbk9uID09PSBcInJpZ2h0LWNsaWNrXCIgJiYge1xuICAgICAgb25Db250ZXh0TWVudTogKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAvLyBBIG1lbnUgb3BlbmVkIGJ5IHJpZ2h0LWNsaWNraW5nIGJlbG9uZ3MgYXQgdGhlIGN1cnNvciByYXRoZXIgdGhhbiBhdCB0aGUgZWxlbWVudC5cbiAgICAgICAgc2V0Q3Vyc29yKHsgeDogZXZlbnQuY2xpZW50WCwgeTogZXZlbnQuY2xpZW50WSB9KTtcbiAgICAgICAgdG9nZ2xlKCk7XG4gICAgICB9LFxuXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBvblJpZ2h0VHJpZ2dlcihldmVudCwgKCkgPT4ge1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgfSksXG5cbiAgICAuLi4ob3Blbk9uID09PSBcImhvdmVyXCIgJiYge1xuICAgICAgb25Nb3VzZUVudGVyOiBvcGVuLFxuICAgICAgb25Nb3VzZUxlYXZlOiBzY2hlZHVsZUNsb3NlLFxuXG4gICAgICAvLyBBIG1lbnUgdGhhdCBvcGVucyBvbiBob3ZlcmluZyB3b3VsZCBiZSBvdXQgb2YgdGhlIGtleWJvYXJkJ3MgcmVhY2ggb3RoZXJ3aXNlLiBTaWRld2F5c1xuICAgICAgLy8gaW50byBpdCwgc2luY2UgdGhhdCBpcyB3aGVyZSBzdWNoIGEgbWVudSBzaXRzOiBiZXNpZGUgdGhlIGVsZW1lbnQgaXQgYmVsb25ncyB0by4gRm9jdXNcbiAgICAgIC8vIGZvbGxvd3Mgb24gaXRzIG93biwgdGhlIG1lbnUgdGFraW5nIGl0IGFzIGl0IGFwcGVhcnMuXG4gICAgICBvbktleURvd246IChldmVudDogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSBcIkFycm93UmlnaHRcIikge1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgb3BlbigpO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgIH0pLFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7Y2hpbGRyZW59XG5cbiAgICAgIHtpc09wZW4gJiYgKFxuICAgICAgICAvLyBNYXJrZWQgYXMgaW5zaWRlIGZvciB0aGUgb3V0c2lkZS1jbGljayBkZXRlY3Rpb24gYWJvdmU6IHRoZSBtZW51IGlzIGEgc2libGluZyBvZiB0aGVcbiAgICAgICAgLy8gZWxlbWVudCBpbiB0aGUgRE9NLCBidXQgcGFydCBvZiB0aGUgc2FtZSB0aGluZyBhcyBmYXIgYXMgYSB1c2VyIGlzIGNvbmNlcm5lZC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gQSBjbGljayBsYW5kaW5nIG9uIHRoZSBtZW51IGlzIGEgY2xpY2sgb24gdGhlIG1lbnUgYW5kIG5vdGhpbmcgZWxzZSwgc28gaXQgc3RvcHMgaGVyZVxuICAgICAgICAvLyByYXRoZXIgdGhhbiBnb2luZyBvbiB0byB3aGF0ZXZlciBlbmNsb3NlcyB0aGUgZWxlbWVudCB0aGUgbWVudSB3YXMgb3BlbmVkIGZyb20gXHUyMDE0IGEgcm93XG4gICAgICAgIC8vIG9mIGEgbWVudSBvZiBpdHMgb3duLCBzYXksIHdoaWNoIHdvdWxkIHRha2UgaXQgZm9yIHRoZSByb3cgYmVpbmcgYWN0aXZhdGVkLiBPbmx5XG4gICAgICAgIC8vIGBjbGlja2Agc3RvcHM6IHRoZSBvdXRzaWRlLWNsaWNrIGRldGVjdGlvbiBhYm92ZSB3b3JrcyBvbiBgcG9pbnRlcmRvd25gLlxuICAgICAgICA8c3BhblxuICAgICAgICAgIHsuLi5vdXRzaWRlQ2xpY2tNYXJraW5nUHJvcHN9XG4gICAgICAgICAgcmVmPXttZW51UmVmfVxuICAgICAgICAgIHN0eWxlPXtkaXNwbGF5Q29udGVudHN9XG4gICAgICAgICAgb25DbGljaz17c3RvcFByb3BhZ2F0aW9ufVxuICAgICAgICAgIC8vIFNpZGV3YXlzIGJhY2sgb3V0IG9mIGEgbWVudSB0aGF0IG9wZW5lZCBzaWRld2F5cywgZnJvbSB3aGVyZXZlciBpbiBpdCBmb2N1cyBoYXBwZW5zIHRvXG4gICAgICAgICAgLy8gYmUuIEl0IHN0b3BzIGhlcmUsIHNvIHRoZSBtZW51IHRoaXMgb25lIHdhcyBvcGVuZWQgZnJvbSBpcyBsZWZ0IGFzIGl0IGlzIHJhdGhlciB0aGFuXG4gICAgICAgICAgLy8gY2xvc2luZyBhbG9uZyB3aXRoIGl0IFx1MjAxNCBvbmUgc3RlcCBvdXQgcGVyIHByZXNzLiBPbmx5IHN1Y2ggYSBtZW51OiBlbHNld2hlcmUgdGhlIGtleVxuICAgICAgICAgIC8vIGJlbG9uZ3MgdG8gd2hhdGV2ZXIgdGhlIG1lbnUgaG9sZHMsIGFuZCBFc2NhcGUgaXMgaG93IGEgbWVudSBpcyBkaXNtaXNzZWQuXG4gICAgICAgICAgb25LZXlEb3duPXtvcGVuT24gPT09IFwiaG92ZXJcIiA/IGNsb3NlT25BcnJvd0xlZnQgOiB1bmRlZmluZWR9XG4gICAgICAgID5cbiAgICAgICAgICA8RHJvcERvd25NZW51XG4gICAgICAgICAgICBzcGVjPXtkcm9wRG93bk1lbnV9XG4gICAgICAgICAgICBhbmNob3JQb2ludD17b3Blbk9uID09PSBcInJpZ2h0LWNsaWNrXCIgPyBjdXJzb3IgOiB1bmRlZmluZWR9XG4gICAgICAgICAgICBvbkNsb3NlPXtjbG9zZX1cbiAgICAgICAgICAgIG9uTWVudUhvdmVyQ2hhbmdlPXtcbiAgICAgICAgICAgICAgb3Blbk9uID09PSBcImhvdmVyXCJcbiAgICAgICAgICAgICAgICA/IChtZW51SXNIb3ZlcmVkKSA9PiAobWVudUlzSG92ZXJlZCA/IGNhbmNlbFNjaGVkdWxlZENsb3NlKCkgOiBzY2hlZHVsZUNsb3NlKCkpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuY29uc3QgZGlzcGxheUNvbnRlbnRzID0geyBkaXNwbGF5OiBcImNvbnRlbnRzXCIgfSBhcyBjb25zdDtcblxuY29uc3Qgc3RvcFByb3BhZ2F0aW9uID0gKGV2ZW50OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuZXhwb3J0IGNvbnN0IGRyb3BEb3duTWVudVBsdWdpbiA9IGdldFBsdWdpbjxEcm9wRG93bk1lbnVQbHVnaW5Qcm9wcywgW3R5cGVvZiBlbmFibGVkUGx1Z2luLCB0eXBlb2YgY3Vyc29yUGx1Z2luXT4oXG4gIChwcm9wcykgPT4ge1xuICAgIGNvbnN0IHsgJGRyb3BEb3duTWVudSwgJGN1cnNvciwgcm9sZSB9ID0gcHJvcHMgYXMgdHlwZW9mIHByb3BzICYgUmVhY3QuSFRNTFByb3BzPEhUTUxFbGVtZW50PjtcblxuICAgIGlmICgkZHJvcERvd25NZW51ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7ICRkcm9wRG93bk1lbnU6IHVuZGVmaW5lZCB9O1xuICAgIH1cblxuICAgIGNvbnN0IG9wZW5zT25DbGljayA9ICgkZHJvcERvd25NZW51Lm9wZW5PbiA/PyBcImNsaWNrXCIpID09PSBcImNsaWNrXCI7XG4gICAgLy8gUmVhZCBmcm9tIHdoYXQgdGhlIGVsZW1lbnQgd2FzIGdpdmVuOiB0aGlzIHBsdWdpbiBydW5zIGJlZm9yZSB0aGUgb25lIHRoYXQgdHVybnMgaXQgaW50b1xuICAgIC8vIHRoZSBgZGlzYWJsZWRgIHByb3AuXG4gICAgY29uc3QgY2Fubm90QmVVc2VkID0gaXNEaXNhYmxlZChwcm9wcyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgJGRyb3BEb3duTWVudTogdW5kZWZpbmVkLFxuXG4gICAgICAuLi4oJGRyb3BEb3duTWVudS5vcGVuT24gPT09IFwiaG92ZXJcIiA/IHt9IDogeyB0YWJJbmRleDogcHJvcHMudGFiSW5kZXggPz8gMCB9KSxcblxuICAgICAgLy8gQW4gZWxlbWVudCB0aGF0IGFuc3dlcnMgYSBjbGljayB3aXRoIGEgbWVudSBpcyBhIGJ1dHRvbiwgYW5kIHRoZSBjdXJzb3IgaXMgaG93IGl0IHNheXMgc29cbiAgICAgIC8vIC0tIG9yIHNheXMgdGhhdCBpdCBjYW5ub3QgcmlnaHQgbm93LiBCb3RoIHdvdWxkIG90aGVyd2lzZSBjb21lIGZyb20gYSBjbGljayBoYW5kbGVyIHN1Y2ggYW5cbiAgICAgIC8vIGVsZW1lbnQgaGFzIG5vIHJlYXNvbiB0byBoYXZlLiBPbmx5IGEgY2xpY2s6IHNvbWV0aGluZyByaWdodC1jbGlja2VkIGlzIG5vdCBhIGJ1dHRvbiwgYW5kIGFcbiAgICAgIC8vIHJvdyB0aGF0IHJldmVhbHMgYSBtZW51IG9uIGhvdmVyIGlzIGEgcm93LlxuICAgICAgLi4uKG9wZW5zT25DbGljayAmJiB7XG4gICAgICAgIHJvbGU6IHJvbGUgPz8gXCJidXR0b25cIixcbiAgICAgICAgJGN1cnNvcjogJGN1cnNvciA/PyAoY2Fubm90QmVVc2VkID8gXCJub3QtYWxsb3dlZFwiIDogXCJwb2ludGVyXCIpLFxuICAgICAgfSksXG5cbiAgICAgICR3cmFwcGVyOiB7XG4gICAgICAgIENvbXBvbmVudDogRHJvcERvd25NZW51V3JhcHBlckNvbXBvbmVudCxcbiAgICAgICAgcHJvcHM6IHsgZHJvcERvd25NZW51OiAkZHJvcERvd25NZW51IH0sXG4gICAgICB9LFxuICAgIH07XG4gIH0sXG4pO1xuIiwgImltcG9ydCB7IGdldFBsdWdpbiwgdHlwZSBDb250cmlidXRlUHJvcHMsIHR5cGUgQ29udHJpYnV0ZVJlZiB9IGZyb20gXCJAazhzbGVucy9lbGVtZW50LWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgY3NzTmFtZXMgfSBmcm9tIFwiQGs4c2xlbnMvcHVibGljLXV0aWxpdGllc1wiO1xuaW1wb3J0IHR5cGUgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VJZCwgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2FuY2hvci5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHR5cGUgeyBQb3NpdGlvbjJkIH0gZnJvbSBcIi4uL2NsaWNrYWJsZS9jbGlja2FibGVcIjtcbmltcG9ydCB7IHR5cGUgVFNoaXJ0U2l6ZSwgdFNoaXJ0U2l6ZUluUGl4ZWxzIH0gZnJvbSBcIi4uL19zaGFyZWQvc2l6ZXNcIjtcbmltcG9ydCB0eXBlIHsgY2xhc3NOYW1lUGx1Z2luIH0gZnJvbSBcIi4uL2NsYXNzLW5hbWUvY2xhc3MtbmFtZVwiO1xuaW1wb3J0IHR5cGUgeyBjb2xvclBsdWdpbiB9IGZyb20gXCIuLi9jb2xvci9jb2xvclwiO1xuaW1wb3J0IHR5cGUgeyBiYWNrZ3JvdW5kQ29sb3JQbHVnaW4gfSBmcm9tIFwiLi4vYmFja2dyb3VuZC1jb2xvci9iYWNrZ3JvdW5kLWNvbG9yXCI7XG5pbXBvcnQgdHlwZSB7IGJvcmRlclBsdWdpbiB9IGZyb20gXCIuLi9ib3JkZXIvYm9yZGVyXCI7XG5pbXBvcnQgdHlwZSB7IHBhZGRpbmdQbHVnaW4gfSBmcm9tIFwiLi4vcGFkZGluZy9wYWRkaW5nXCI7XG5pbXBvcnQgdHlwZSB7IG1hcmdpblBsdWdpbiB9IGZyb20gXCIuLi9tYXJnaW4vbWFyZ2luXCI7XG5pbXBvcnQgdHlwZSB7IG92ZXJmbG93UGx1Z2luIH0gZnJvbSBcIi4uL292ZXJmbG93L292ZXJmbG93XCI7XG5cbi8qKlxuICogV2hlcmUgYW4gZWxlbWVudCBzaXRzIHJlbGF0aXZlIHRvIGl0cyBhbmNob3I6IGEgc2lkZSBvZiB0aGUgYW5jaG9yLCBvcHRpb25hbGx5IHJlZmluZWQgd2l0aCBob3dcbiAqIHRoZSBlbGVtZW50IGV4dGVuZHMgYWxvbmcgdGhhdCBzaWRlLiBBIGJhcmUgc2lkZSBjZW50ZXJzIHRoZSBlbGVtZW50IG9uIGl0OyBgc3Bhbi08ZGlyZWN0aW9uPmBcbiAqIGFsaWducyB0aGVpciBlZGdlcyBhbmQgbGV0cyB0aGUgZWxlbWVudCBleHRlbmQgdG93YXJkIHRoYXQgZGlyZWN0aW9uLlxuICpcbiAqIFdoZW4gdGhlIGVsZW1lbnQgd291bGQgbm90IGZpdCB0aGUgdmlld3BvcnQsIGl0IGZhbGxzIGJhY2sgdG8gdGhlIG1pcnJvcmVkIHBvc2l0aW9ucy5cbiAqL1xuZXhwb3J0IHR5cGUgQW5jaG9yUG9zaXRpb24gPVxuICB8IFwidG9wXCJcbiAgfCBcImJvdHRvbVwiXG4gIHwgXCJsZWZ0XCJcbiAgfCBcInJpZ2h0XCJcbiAgfCBcInRvcCBzcGFuLWxlZnRcIlxuICB8IFwidG9wIHNwYW4tcmlnaHRcIlxuICB8IFwiYm90dG9tIHNwYW4tbGVmdFwiXG4gIHwgXCJib3R0b20gc3Bhbi1yaWdodFwiXG4gIHwgXCJsZWZ0IHNwYW4tdG9wXCJcbiAgfCBcImxlZnQgc3Bhbi1ib3R0b21cIlxuICB8IFwicmlnaHQgc3Bhbi10b3BcIlxuICB8IFwicmlnaHQgc3Bhbi1ib3R0b21cIjtcblxuLyoqXG4gKiBFaXRoZXIgYSBwb3NpdGlvbiByZWxhdGl2ZSB0byB0aGUgbmVhcmVzdCBhbmNlc3RvciBgJGFuY2hvcmAsIG9yIHRoZSBzYW1lIHBvc2l0aW9uIHJlbGF0aXZlIHRvIGFcbiAqIHBvaW50IGluIHRoZSB2aWV3cG9ydC5cbiAqL1xuZXhwb3J0IHR5cGUgQW5jaG9yZWRBdCA9XG4gIHwgQW5jaG9yUG9zaXRpb25cbiAgfCB7XG4gICAgICByZWFkb25seSBwb3NpdGlvbjogQW5jaG9yUG9zaXRpb247XG5cbiAgICAgIC8qKiBIb3cgZmFyIGZyb20gdGhlIGFuY2hvciB0aGUgZWxlbWVudCBzaXRzLiBEZWZhdWx0cyB0byBgXCJ4c1wiYC4gKi9cbiAgICAgIHJlYWRvbmx5IGdhcD86IFRTaGlydFNpemU7XG5cbiAgICAgIC8qKiBTaXQgYXQgdGhpcyB2aWV3cG9ydCBwb2ludCBpbnN0ZWFkIG9mIGF0IGFuIGFuY2hvci4gKi9cbiAgICAgIHJlYWRvbmx5IHBvaW50PzogUG9zaXRpb24yZDtcbiAgICB9O1xuXG5jb25zdCBkZWZhdWx0R2FwOiBUU2hpcnRTaXplID0gXCJ4c1wiO1xuXG5leHBvcnQgdHlwZSBBbmNob3JQbHVnaW5Qcm9wcyA9IHtcbiAgcmVhZG9ubHkgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XG5cbiAgLyoqXG4gICAqIE1ha2VzIHRoZSBlbGVtZW50IGFuIGFuY2hvciBmb3IgdGhlIGVsZW1lbnRzIG9mIGl0cyBzdWJ0cmVlIHRoYXQgZGVjbGFyZSB7QGxpbmsgJGFuY2hvcmVkQXR9LlxuICAgKiBUaGUgbmVhcmVzdCBzdWNoIGFuY2VzdG9yIHdpbnMsIHNvIG5lc3Rpbmcgd29ya3Mgd2l0aG91dCBuYW1pbmcgYW55dGhpbmcuXG4gICAqL1xuICByZWFkb25seSAkYW5jaG9yPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogUG9zaXRpb25zIHRoZSBlbGVtZW50IHJlbGF0aXZlIHRvIGFuIGFuY2hvciwgYWJvdmUgZXZlcnl0aGluZyBlbHNlIG9uIHRoZSBwYWdlIFx1MjAxNCBpdCBlc2NhcGVzXG4gICAqIGNsaXBwaW5nIGFuY2VzdG9ycyBhbmQgc3RhY2tpbmcgY29udGV4dHMsIHNvIGl0IG5lZWRzIG5vIHBvcnRhbC5cbiAgICpcbiAgICogVGhlIGFuY2hvciBpcyB0aGUgbmVhcmVzdCBhbmNlc3RvciBkZWNsYXJpbmcge0BsaW5rICRhbmNob3J9LCBvciB0aGUgZ2l2ZW4gcG9pbnQgd2hlbiBhIHBvaW50XG4gICAqIGlzIHByb3ZpZGVkIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSAkYW5jaG9yZWRBdD86IEFuY2hvcmVkQXQ7XG59O1xuXG5jb25zdCBhbmNob3JOYW1lQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG50eXBlIEFuY2hvcldyYXBwZXJQcm9wcyA9IHtcbiAgcmVhZG9ubHkgaXNBbmNob3I6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGFuY2hvcmVkQXQ6IEFuY2hvcmVkQXQgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVSZWY6IENvbnRyaWJ1dGVSZWY7XG4gIHJlYWRvbmx5IGNvbnRyaWJ1dGVQcm9wczogQ29udHJpYnV0ZVByb3BzO1xuICByZWFkb25seSBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufTtcblxuY29uc3QgQW5jaG9yV3JhcHBlckNvbXBvbmVudCA9ICh7XG4gIGlzQW5jaG9yLFxuICBhbmNob3JlZEF0LFxuICBjb250cmlidXRlUmVmLFxuICBjb250cmlidXRlUHJvcHMsXG4gIGNoaWxkcmVuLFxufTogQW5jaG9yV3JhcHBlclByb3BzKSA9PiB7XG4gIGNvbnN0IG93bkFuY2hvck5hbWUgPSB0b0FuY2hvck5hbWUodXNlSWQoKSk7XG4gIGNvbnN0IGluaGVyaXRlZEFuY2hvck5hbWUgPSB1c2VDb250ZXh0KGFuY2hvck5hbWVDb250ZXh0KTtcbiAgY29uc3QgZWxlbWVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuICBjb25zdCBwb2ludFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KG51bGwpO1xuXG4gIGNvbnRyaWJ1dGVSZWYoXG4gICAgdXNlQ2FsbGJhY2soKGVsZW1lbnQ6IEhUTUxFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgZWxlbWVudFJlZi5jdXJyZW50ID0gZWxlbWVudDtcbiAgICB9LCBbXSksXG4gICk7XG5cbiAgY29uc3QgcG9zaXRpb24gPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJzdHJpbmdcIiA/IGFuY2hvcmVkQXQgOiBhbmNob3JlZEF0Py5wb3NpdGlvbjtcbiAgY29uc3QgcG9pbnQgPSB0eXBlb2YgYW5jaG9yZWRBdCA9PT0gXCJvYmplY3RcIiA/IGFuY2hvcmVkQXQucG9pbnQgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IGdhcCA9IHR5cGVvZiBhbmNob3JlZEF0ID09PSBcIm9iamVjdFwiID8gKGFuY2hvcmVkQXQuZ2FwID8/IGRlZmF1bHRHYXApIDogZGVmYXVsdEdhcDtcblxuICBpZiAocG9zaXRpb24gJiYgIXBvaW50ICYmICFpbmhlcml0ZWRBbmNob3JOYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYFRyaWVkIHRvIHBvc2l0aW9uIGFuIGVsZW1lbnQgYXQgXCIke3Bvc2l0aW9ufVwiIHdpdGhvdXQgYW4gYW5jaG9yLiBFaXRoZXIgZ2l2ZSBhbiBhbmNlc3RvciB0aGUgJGFuY2hvciBwcm9wLCBvciBhbmNob3IgdG8gYSBwb2ludCBpbnN0ZWFkLmAsXG4gICAgKTtcbiAgfVxuXG4gIC8vIEEgcG9pbnQgYW5jaG9yIGlzIHRoZSBlbGVtZW50J3Mgb3duOyBvdGhlcndpc2UgaXQgcG9zaXRpb25zIGFnYWluc3Qgd2hhdGV2ZXIgYW5jaG9yIGVuY2xvc2VzIGl0LlxuICBjb25zdCBhbmNob3JOYW1lVG9Qb3NpdGlvbkFnYWluc3QgPSBwb2ludCA/IG93bkFuY2hvck5hbWUgOiBpbmhlcml0ZWRBbmNob3JOYW1lO1xuXG4gIGlmIChhbmNob3JlZEF0ICE9PSB1bmRlZmluZWQpIHtcbiAgICBjb250cmlidXRlUHJvcHMoeyBwb3BvdmVyOiBcIm1hbnVhbFwiIH0pO1xuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbGVtZW50ID0gZWxlbWVudFJlZi5jdXJyZW50O1xuXG4gICAgaWYgKCFlbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGlzQW5jaG9yKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGFuY2hvck5hbWVQcm9wZXJ0eSwgb3duQW5jaG9yTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHBvc2l0aW9uKSB7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHBvc2l0aW9uUHJvcGVydHksIHBvc2l0aW9uKTtcbiAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoZ2FwUHJvcGVydHksIGAke3RTaGlydFNpemVJblBpeGVscyhnYXApfXB4YCk7XG5cbiAgICAgIC8vIE9ubHkgdG93YXJkIHRoZSBhbmNob3IsIHNvIHRoZSBlbGVtZW50IHN0aWxsIGxpbmVzIHVwIHdpdGggaXQgb24gdGhlIG90aGVyIGF4aXMuIEFcbiAgICAgIC8vIGZhbGxiYWNrIHRoYXQgbWlycm9ycyB0aGUgcG9zaXRpb24gbWlycm9ycyB0aGlzIG1hcmdpbiB3aXRoIGl0LlxuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShtYXJnaW5Qcm9wZXJ0eVRvd2FyZHNBbmNob3IocG9zaXRpb24pLCBgJHt0U2hpcnRTaXplSW5QaXhlbHMoZ2FwKX1weGApO1xuXG4gICAgICBpZiAoYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9zaXRpb25BbmNob3JQcm9wZXJ0eSwgYW5jaG9yTmFtZVRvUG9zaXRpb25BZ2FpbnN0KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBvaW50KSB7XG4gICAgICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkocG9pbnRYUHJvcGVydHksIGAke3BvaW50Lnh9cHhgKTtcbiAgICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShwb2ludFlQcm9wZXJ0eSwgYCR7cG9pbnQueX1weGApO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgLy8gVGhlIHBvaW50IHJpc2VzIHRvIHRoZSB0b3AgbGF5ZXIgYWxvbmcgd2l0aCB3aGF0IGlzIGFuY2hvcmVkIHRvIGl0LiBBIGBmaXhlZGAgZWxlbWVudCByZXNvbHZlc1xuICAvLyBhZ2FpbnN0IHRoZSBuZWFyZXN0IGFuY2VzdG9yIHRoYXQgdHJhbnNmb3JtcywgZmlsdGVycyBvciBjb250YWlucyBpdHMgc3VidHJlZSwgc28gYSBwb2ludCBsZWZ0XG4gIC8vIGluIHRoZSB0cmVlIGxhbmRzIGF0IHRoZSBjdXJzb3IgcGx1cyB0aGF0IGFuY2VzdG9yJ3Mgb3duIG9mZnNldCBcdTIwMTQgd2hpY2ggaXMgaG93IGEgbWVudSBvcGVuZWRcbiAgLy8gb3ZlciBhIG5hdmlnYXRvciBpdGVtIHVzZWQgdG8gYXBwZWFyIGh1bmRyZWRzIG9mIHBpeGVscyBiZWxvdyB0aGUgY3Vyc29yLlxuICAvL1xuICAvLyBTaG93biBiZWZvcmUgdGhlIGVsZW1lbnQgYW5jaG9yZWQgdG8gaXQ6IGFuIGFuY2hvciBoYXMgdG8gcmVhY2ggdGhlIHRvcCBsYXllciBmaXJzdCwgb3IgdGhlXG4gIC8vIGVsZW1lbnQgcG9zaXRpb25pbmcgYWdhaW5zdCBpdCBmaW5kcyBubyBhbmNob3IgYXQgYWxsIGFuZCBsYW5kcyBpbiB0aGUgdmlld3BvcnQncyBjb3JuZXIuXG4gIC8vXG4gIC8vIE9uY2UsIG9uIG1vdW50OiBhbiBlbGVtZW50IGlzIGFuY2hvcmVkIHRvIGEgcG9pbnQgZm9yIGFzIGxvbmcgYXMgaXQgaXMgbW91bnRlZCwgc2luY2UgdGhlIHBvaW50XG4gIC8vIGlzIHdoZXJlIHRoZSBjdXJzb3Igd2FzIHdoZW4gd2hhdGV2ZXIgb3BlbmVkIGl0IHdhcyBvcGVuZWQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZWxlbWVudCA9IHBvaW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIWVsZW1lbnQgfHwgIWlzUG9wb3ZlckNhcGFibGUoZWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbGVtZW50LnNob3dQb3BvdmVyKCk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGVsZW1lbnQuaXNDb25uZWN0ZWQpIHtcbiAgICAgICAgZWxlbWVudC5oaWRlUG9wb3ZlcigpO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBlbGVtZW50UmVmLmN1cnJlbnQ7XG5cbiAgICBpZiAoIXBvc2l0aW9uIHx8ICFlbGVtZW50IHx8ICFpc1BvcG92ZXJDYXBhYmxlKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZWxlbWVudC5zaG93UG9wb3ZlcigpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmlzQ29ubmVjdGVkKSB7XG4gICAgICAgIGVsZW1lbnQuaGlkZVBvcG92ZXIoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbcG9zaXRpb25dKTtcblxuICBjb25zdCBjb250ZW50ID0gcG9pbnQgPyAoXG4gICAgPD5cbiAgICAgIHsvKiBBIHplcm8tc2l6ZSBhbmNob3IgYXQgdGhlIHBvaW50LCBzbyBhIGN1cnNvci1hbmNob3JlZCBlbGVtZW50IHBvc2l0aW9ucyBsaWtlIGFueSBvdGhlci4gKi99XG4gICAgICA8ZGl2XG4gICAgICAgIHJlZj17cG9pbnRSZWYgYXMgUmVhY3QuUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50Pn1cbiAgICAgICAgcG9wb3Zlcj1cIm1hbnVhbFwiXG4gICAgICAgIGRhdGEtYW5jaG9yLXBvaW50LXRlc3RcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYW5jaG9yUG9pbnR9XG4gICAgICAgIHN0eWxlPXtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBbYW5jaG9yTmFtZVByb3BlcnR5XTogb3duQW5jaG9yTmFtZSxcbiAgICAgICAgICAgIFtwb2ludFhQcm9wZXJ0eV06IGAke3BvaW50Lnh9cHhgLFxuICAgICAgICAgICAgW3BvaW50WVByb3BlcnR5XTogYCR7cG9pbnQueX1weGAsXG4gICAgICAgICAgfSBhcyBSZWFjdC5DU1NQcm9wZXJ0aWVzXG4gICAgICAgIH1cbiAgICAgIC8+XG5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8Lz5cbiAgKSA6IChcbiAgICBjaGlsZHJlblxuICApO1xuXG4gIGlmIChpc0FuY2hvcikge1xuICAgIHJldHVybiA8YW5jaG9yTmFtZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e293bkFuY2hvck5hbWV9Pntjb250ZW50fTwvYW5jaG9yTmFtZUNvbnRleHQuUHJvdmlkZXI+O1xuICB9XG5cbiAgcmV0dXJuIDw+e2NvbnRlbnR9PC8+O1xufTtcblxuZXhwb3J0IGNvbnN0IGFuY2hvclBsdWdpbiA9IGdldFBsdWdpbjxcbiAgQW5jaG9yUGx1Z2luUHJvcHMsXG4gIFtcbiAgICB0eXBlb2YgY2xhc3NOYW1lUGx1Z2luLFxuICAgIHR5cGVvZiBjb2xvclBsdWdpbixcbiAgICB0eXBlb2YgYmFja2dyb3VuZENvbG9yUGx1Z2luLFxuICAgIHR5cGVvZiBib3JkZXJQbHVnaW4sXG4gICAgdHlwZW9mIHBhZGRpbmdQbHVnaW4sXG4gICAgdHlwZW9mIG1hcmdpblBsdWdpbixcbiAgICB0eXBlb2Ygb3ZlcmZsb3dQbHVnaW4sXG4gIF1cbj4oKHByb3BzKSA9PiB7XG4gIGNvbnN0IHsgJGFuY2hvciwgJGFuY2hvcmVkQXQsICRjbGFzc05hbWUgfSA9IHByb3BzO1xuXG4gIGlmICghJGFuY2hvciAmJiAkYW5jaG9yZWRBdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHsgJGFuY2hvcjogdW5kZWZpbmVkLCAkYW5jaG9yZWRBdDogdW5kZWZpbmVkIH07XG4gIH1cblxuICByZXR1cm4ge1xuICAgICRhbmNob3I6IHVuZGVmaW5lZCxcbiAgICAkYW5jaG9yZWRBdDogdW5kZWZpbmVkLFxuXG4gICAgLy8gUmlzaW5nIHRvIHRoZSB0b3AgbGF5ZXIgaXMgYSB0ZWNobmljYWxpdHkgb2YgcG9zaXRpb25pbmcsIGJ1dCB0aGUgYnJvd3NlciBtYWtlcyBpdCBhIGxvb2s6XG4gICAgLy8gY29sb3VycyBvZiBpdHMgb3duLCBhIGJvcmRlciwgcGFkZGluZywgYW5kIGEgbWFyZ2luIHRoYXQgd291bGQgY2VudGVyIHRoZSBlbGVtZW50LiBVbmRvIHRoYXQsXG4gICAgLy8gc28gYW4gZWxlbWVudCBwb3NpdGlvbmVkIHRoaXMgd2F5IGxvb2tzIGxpa2UgaXQgZG9lcyBhbnl3aGVyZSBlbHNlLCBhbmQgbGV0IHdoYXRldmVyIGl0IHNheXNcbiAgICAvLyBhYm91dCBpdHNlbGYgd2luLlxuICAgIC4uLigkYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICRjb2xvcjogcHJvcHMuJGNvbG9yID8/IFwiaW5oZXJpdFwiLFxuICAgICAgJGJhY2tncm91bmRDb2xvcjogcHJvcHMuJGJhY2tncm91bmRDb2xvciA/PyBcInRyYW5zcGFyZW50XCIsXG4gICAgICAkYm9yZGVyOiB7IHdpZHRoOiBcInplcm9cIiwgLi4ucHJvcHMuJGJvcmRlciB9LFxuICAgICAgJHBhZGRpbmc6IHByb3BzLiRwYWRkaW5nID8/IFwiemVyb1wiLFxuICAgICAgJG1hcmdpbjogcHJvcHMuJG1hcmdpbiA/PyBcInplcm9cIixcbiAgICAgICRvdmVyZmxvdzogcHJvcHMuJG92ZXJmbG93ID8/IFwidmlzaWJsZVwiLFxuICAgIH0pLFxuXG4gICAgJGNsYXNzTmFtZTogY3NzTmFtZXMoJGNsYXNzTmFtZSwge1xuICAgICAgW3N0eWxlcy5hbmNob3JdOiAhISRhbmNob3IsXG4gICAgICBbc3R5bGVzLmFuY2hvcmVkQXRdOiAkYW5jaG9yZWRBdCAhPT0gdW5kZWZpbmVkLFxuICAgIH0pLFxuXG4gICAgJHdyYXBwZXI6IHtcbiAgICAgIENvbXBvbmVudDogQW5jaG9yV3JhcHBlckNvbXBvbmVudCxcbiAgICAgIHByb3BzOiB7IGlzQW5jaG9yOiAhISRhbmNob3IsIGFuY2hvcmVkQXQ6ICRhbmNob3JlZEF0IH0sXG4gICAgfSxcbiAgfTtcbn0pO1xuXG5jb25zdCBtYXJnaW5Qcm9wZXJ0eVRvd2FyZHNBbmNob3IgPSAocG9zaXRpb246IEFuY2hvclBvc2l0aW9uKSA9PiB7XG4gIGlmIChwb3NpdGlvbi5zdGFydHNXaXRoKFwiYm90dG9tXCIpKSB7XG4gICAgcmV0dXJuIFwibWFyZ2luLXRvcFwiO1xuICB9XG5cbiAgaWYgKHBvc2l0aW9uLnN0YXJ0c1dpdGgoXCJ0b3BcIikpIHtcbiAgICByZXR1cm4gXCJtYXJnaW4tYm90dG9tXCI7XG4gIH1cblxuICByZXR1cm4gcG9zaXRpb24uc3RhcnRzV2l0aChcInJpZ2h0XCIpID8gXCJtYXJnaW4tbGVmdFwiIDogXCJtYXJnaW4tcmlnaHRcIjtcbn07XG5cbmNvbnN0IGFuY2hvck5hbWVQcm9wZXJ0eSA9IFwiLS1hbmNob3ItbmFtZVwiO1xuY29uc3QgZ2FwUHJvcGVydHkgPSBcIi0tYW5jaG9yLWdhcFwiO1xuY29uc3QgcG9zaXRpb25BbmNob3JQcm9wZXJ0eSA9IFwiLS1hbmNob3ItdGFyZ2V0XCI7XG5jb25zdCBwb3NpdGlvblByb3BlcnR5ID0gXCItLWFuY2hvci1wb3NpdGlvblwiO1xuY29uc3QgcG9pbnRYUHJvcGVydHkgPSBcIi0tYW5jaG9yLXBvaW50LXhcIjtcbmNvbnN0IHBvaW50WVByb3BlcnR5ID0gXCItLWFuY2hvci1wb2ludC15XCI7XG5cbi8qKiBBbmNob3IgbmFtZXMgYXJlIGRhc2hlZCBpZGVudHMsIHNvIHRoZSBnZW5lcmF0ZWQgaWQgaGFzIHRvIGxvc2UgZXZlcnl0aGluZyBlbHNlLiAqL1xuY29uc3QgdG9BbmNob3JOYW1lID0gKGlkOiBzdHJpbmcpID0+IGAtLWFuY2hvci0ke2lkLnJlcGxhY2UoL1teYS16QS1aMC05XS9nLCBcIlwiKX1gO1xuXG50eXBlIFBvcG92ZXJDYXBhYmxlID0gSFRNTEVsZW1lbnQgJiB7IHNob3dQb3BvdmVyOiBWb2lkRnVuY3Rpb247IGhpZGVQb3BvdmVyOiBWb2lkRnVuY3Rpb24gfTtcblxuY29uc3QgaXNQb3BvdmVyQ2FwYWJsZSA9IChlbGVtZW50OiBIVE1MRWxlbWVudCk6IGVsZW1lbnQgaXMgUG9wb3ZlckNhcGFibGUgPT5cbiAgdHlwZW9mIChlbGVtZW50IGFzIFBhcnRpYWw8UG9wb3ZlckNhcGFibGU+KS5zaG93UG9wb3ZlciA9PT0gXCJmdW5jdGlvblwiO1xuIiwgImltcG9ydCAnY3NzLWNodW5rOnNyYy9wbHVnaW5zL2FuY2hvci9hbmNob3IubW9kdWxlLnNjc3MnO2V4cG9ydCBkZWZhdWx0IHtcbiAgXCJhbmNob3JcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JfX19tLTV1YlwiLFxuICBcImFuY2hvcmVkQXRcIjogXCJhbmNob3ItbW9kdWxlX19hbmNob3JlZEF0X19fVUFyVUtcIixcbiAgXCJhbmNob3JQb2ludFwiOiBcImFuY2hvci1tb2R1bGVfX2FuY2hvclBvaW50X19fc0ExQWNcIlxufTsiLCAiaW1wb3J0IHR5cGUgeyBGb2N1c2FibGVQbHVnaW5Qcm9wcyB9IGZyb20gXCIuL2ZvY3VzYWJsZVwiO1xuXG5leHBvcnQgdHlwZSAkRm9jdXNhYmxlUHJvcHM8Rm9jdXNlZEl0ZW0+ID0gUmVxdWlyZWQ8Rm9jdXNhYmxlUGx1Z2luUHJvcHM8Rm9jdXNlZEl0ZW0+PltcIiRmb2N1c2FibGVcIl07XG5cbi8qKlxuICogSWRlbnRpZmllcyBhIHNldCBvZiBmb2N1c2FibGVzIGNvbXBldGluZyBmb3Igb25lIGZvY3VzZWQgaXRlbS4gRWxlbWVudHMgam9pbiBpdCBieSBkZWNsYXJpbmdcbiAqIGAkZm9jdXNhYmxlYDsgbm90aGluZyBlbnVtZXJhdGVzIHRoZW0gYXQgdGhlIGNhbGwgc2l0ZS5cbiAqL1xuZXhwb3J0IHR5cGUgRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT4gPSB7XG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGlzS2V5Ym9hcmROYXZpZ2FibGU6IGZhbHNlO1xuICBmb2N1c2FibGU6IChpdGVtOiBGb2N1c2VkSXRlbSkgPT4gJEZvY3VzYWJsZVByb3BzPEZvY3VzZWRJdGVtPjtcbn07XG5cbi8qKiBXaGljaCBhcnJvdyBrZXlzIG1vdmUgZm9jdXMgd2l0aGluIGEga2V5Ym9hcmQtbmF2aWdhYmxlIGNvbnRleHQuICovXG5leHBvcnQgdHlwZSBLZXlib2FyZE5hdmlnYXRpb25PcmllbnRhdGlvbiA9IFwidmVydGljYWxcIiB8IFwiaG9yaXpvbnRhbFwiIHwgXCJib3RoXCI7XG5cbi8qKlxuICogQSBmb2N1c2FibGUgY29udGV4dCB3aG9zZSBtZW1iZXJzIGFyZSBhbHNvIG5hdmlnYXRlZCB3aXRoIGFycm93IGtleXMsIGluIHRoZSBvcmRlciB0aGV5IHN0YXRlLlxuICogVGhlIGxvd2VzdCBvcmRlciBudW1iZXIgaXMgZm9jdXNlZCB3aGVuIHRoZSBtZW1iZXJzIGFwcGVhciwgYW5kIGZvY3VzIHJldHVybnMgdG8gdGhlIGVuY2xvc2luZ1xuICogY29udGV4dCB3aGVuIHRoZXkgZ28gYXdheS5cbiAqL1xuZXhwb3J0IHR5cGUgS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbiAgcmVhZG9ubHkgaXNLZXlib2FyZE5hdmlnYWJsZTogdHJ1ZTtcbiAgcmVhZG9ubHkgb3JpZW50YXRpb246IEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uO1xuICBmb2N1c2FibGU6IChpdGVtOiBGb2N1c2VkSXRlbSwgb3JkZXJOdW1iZXI6IG51bWJlcikgPT4gJEZvY3VzYWJsZVByb3BzPEZvY3VzZWRJdGVtPjtcbn07XG5cbmV4cG9ydCB0eXBlIEFueUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0gPSBhbnk+ID1cbiAgfCBGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPlxuICB8IEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dDxGb2N1c2VkSXRlbT47XG5cbmNvbnN0IGNvbnRleHRzQnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBBbnlGb2N1c2FibGVDb250ZXh0PigpO1xuXG4vKipcbiAqIERlY2xhcmVzIGEgZm9jdXNhYmxlIGNvbnRleHQuIFRoZSBzYW1lIGlkIGFsd2F5cyB5aWVsZHMgdGhlIHNhbWUgY29udGV4dCwgc28gY2FsbGluZyB0aGlzIGR1cmluZ1xuICogcmVuZGVyIGlzIHN0YWJsZSBcdTIwMTQgd2hpY2ggaXMgd2hhdCBsZXRzIGEgc3VyZmFjZSB3aXRoIHNldmVyYWwgbGl2ZSBpbnN0YW5jZXMgbmFtZSBvbmUgY29udGV4dCBwZXJcbiAqIGluc3RhbmNlLlxuICovXG5leHBvcnQgY29uc3QgZ2V0Rm9jdXNhYmxlQ29udGV4dCA9IDxGb2N1c2VkSXRlbSw+KGlkOiBzdHJpbmcpOiBGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9PlxuICBnZXRPckNyZWF0ZUNvbnRleHQoaWQsICgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0OiBGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9IHtcbiAgICAgIGlkLFxuICAgICAgaXNLZXlib2FyZE5hdmlnYWJsZTogZmFsc2UsXG4gICAgICBmb2N1c2FibGU6IChpdGVtKSA9PiAoeyBjb250ZXh0LCBpdGVtIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbmV4cG9ydCB0eXBlIEtleWJvYXJkTmF2aWdhYmxlRm9jdXNhYmxlQ29udGV4dE9wdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBXaGljaCBhcnJvdyBrZXlzIG1vdmUgZm9jdXMuIERvd253YXJkcyBieSBkZWZhdWx0LCBhcyBtb3N0IHNldHMgb2YgdGhpbmdzIGFyZSBsYWlkIG91dDogdGhlXG4gICAqIGtleXMgb2YgdGhlIG90aGVyIGF4aXMgYXJlIHRoZW4gbGVmdCB0byB3aGF0ZXZlciB0aGUgbWVtYmVycyB3YW50IHRoZW0gZm9yLCBzdWNoIGFzIGEgbWVudSByb3dcbiAgICogb3BlbmluZyB0aGUgbWVudSBpdCBob2xkcyB3aXRoIEFycm93UmlnaHQuXG4gICAqL1xuICByZWFkb25seSBvcmllbnRhdGlvbj86IEtleWJvYXJkTmF2aWdhdGlvbk9yaWVudGF0aW9uO1xufTtcblxuLyoqXG4gKiBEZWNsYXJlcyBhIGZvY3VzYWJsZSBjb250ZXh0IHdob3NlIG1lbWJlcnMgYXJlIG5hdmlnYXRlZCB3aXRoIGFycm93IGtleXMuIEFzIHdpdGhcbiAqIHtAbGluayBnZXRGb2N1c2FibGVDb250ZXh0fSwgdGhlIHNhbWUgaWQgYWx3YXlzIHlpZWxkcyB0aGUgc2FtZSBjb250ZXh0IFx1MjAxNCBzbyB0aGUgb3B0aW9ucyBhcmUgdGhlXG4gKiBvbmVzIHRoZSBmaXJzdCBjYWxsIGZvciBhbiBpZCBzdGF0ZWQuXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQgPSA8Rm9jdXNlZEl0ZW0sPihcbiAgaWQ6IHN0cmluZyxcbiAgb3B0aW9uczogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0T3B0aW9ucyA9IHt9LFxuKTogS2V5Ym9hcmROYXZpZ2FibGVGb2N1c2FibGVDb250ZXh0PEZvY3VzZWRJdGVtPiA9PlxuICBnZXRPckNyZWF0ZUNvbnRleHQoaWQsICgpID0+IHtcbiAgICBjb25zdCBjb250ZXh0OiBLZXlib2FyZE5hdmlnYWJsZUZvY3VzYWJsZUNvbnRleHQ8Rm9jdXNlZEl0ZW0+ID0ge1xuICAgICAgaWQsXG4gICAgICBpc0tleWJvYXJkTmF2aWdhYmxlOiB0cnVlLFxuICAgICAgb3JpZW50YXRpb246IG9wdGlvbnMub3JpZW50YXRpb24gPz8gXCJ2ZXJ0aWNhbFwiLFxuICAgICAgZm9jdXNhYmxlOiAoaXRlbSwgb3JkZXJOdW1iZXIpID0+ICh7IGNvbnRleHQsIGl0ZW0sIG9yZGVyTnVtYmVyIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gY29udGV4dDtcbiAgfSk7XG5cbmNvbnN0IGdldE9yQ3JlYXRlQ29udGV4dCA9IDxUIGV4dGVuZHMgQW55Rm9jdXNhYmxlQ29udGV4dD4oaWQ6IHN0cmluZywgY3JlYXRlOiAoKSA9PiBUKTogVCA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nID0gY29udGV4dHNCeUlkLmdldChpZCk7XG5cbiAgaWYgKGV4aXN0aW5nKSB7XG4gICAgcmV0dXJuIGV4aXN0aW5nIGFzIFQ7XG4gIH1cblxuICBjb25zdCBjcmVhdGVkID0gY3JlYXRlKCk7XG5cbiAgY29udGV4dHNCeUlkLnNldChpZCwgY3JlYXRlZCk7XG5cbiAgcmV0dXJuIGNyZWF0ZWQ7XG59O1xuIiwgImltcG9ydCB7IGNyZWF0ZUNvbnRleHQsIHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgJEZvY3VzYWJsZVByb3BzIH0gZnJvbSBcIi4vZ2V0LWZvY3VzYWJsZS1jb250ZXh0XCI7XG5cbi8qKlxuICogQ2FycmllcyB0aGUgZm9jdXNhYmxlIGFuIGVsZW1lbnQgaXMsIGFzIGRlY2lkZWQgYnkgdGhlIHN1cmZhY2UgaXQgcmVuZGVycyBpbiByYXRoZXIgdGhhbiBieSB0aGVcbiAqIGVsZW1lbnQgaXRzZWxmOiB3aGljaCBjb250ZXh0IGl0IGNvbXBldGVzIGluLCB3aGljaCBpdGVtIGl0IHN0YW5kcyBmb3IsIGFuZCB3aGVyZSBpdCBzaXRzIGFtb25nXG4gKiB0aGUgb3RoZXJzLlxuICpcbiAqIEEgc3VyZmFjZSB0aGF0IGtub3dzIGl0cyBpdGVtcyBcdTIwMTQgYSBtZW51LCBhIHRvb2xiYXIgXHUyMDE0IHByb3ZpZGVzIG9uZSBvZiB0aGVzZSBwZXIgaXRlbTsgd2hhdGV2ZXJcbiAqIGRyYXdzIHRoZSBpdGVtIGFkb3B0cyBpdCB0aHJvdWdoIHtAbGluayB1c2VGb2N1c2FibGVJdGVtfSB3aGlsZSBrbm93aW5nIG5vdGhpbmcgYWJvdXQgdGhlXG4gKiBzdXJmYWNlLCB3aGljaCBpcyB3aGF0IGxldHMgYSBkdW1iIGNvbXBvbmVudCBiZSBrZXlib2FyZC1uYXZpZ2FibGUgaW4gb25lIHN1cmZhY2UgYW5kIG9yZGluYXJ5XG4gKiBpbiBhbm90aGVyLlxuICovXG5leHBvcnQgY29uc3QgY29udGV4dEZvckZvY3VzYWJsZUl0ZW0gPSBjcmVhdGVDb250ZXh0PCRGb2N1c2FibGVQcm9wczxhbnk+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4vKipcbiAqIFRoZSBgJGZvY3VzYWJsZWAgb2YgdGhlIGl0ZW0gYSBjb21wb25lbnQgZHJhd3MsIHdoZW4gdGhlIHN1cmZhY2UgYXJvdW5kIGl0IGRlY2lkZWQgb25lLlxuICogYHVuZGVmaW5lZGAgb3V0c2lkZSBzdWNoIGEgc3VyZmFjZSwgd2hpY2ggaXMgd2hhdCBtYWtlcyBhZG9wdGluZyBpdCBhIG1hdHRlciBvZiBwYXNzaW5nIGl0IG9uLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IFJvdyA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSA9PiAoXG4gKiAgIDxDbGlja2FibGVMaSAkZm9jdXNhYmxlPXt1c2VGb2N1c2FibGVJdGVtKCl9PntjaGlsZHJlbn08L0NsaWNrYWJsZUxpPlxuICogKTtcbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgdXNlRm9jdXNhYmxlSXRlbSA9ICgpID0+IHVzZUNvbnRleHQoY29udGV4dEZvckZvY3VzYWJsZUl0ZW0pO1xuIiwgImltcG9ydCB7IHVzZVN5bmNJbmplY3QgfSBmcm9tIFwiQGs4c2xlbnMvdXNlLWluamVjdFwiO1xuaW1wb3J0IHsgZ2V0SG92ZXJhYmxlQ29udGV4dCB9IGZyb20gXCIuLi9ob3ZlcmFibGVcIjtcbmltcG9ydCB7IHR5cGUgTXV0YWJsZVJlZk9iamVjdCwgdXNlTWVtbywgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlIH0gZnJvbSBcIi4vX3ByaXZhdGUvY29udGV4dC1pcy1iZWluZy1ob3ZlcmVkLmluamVjdGFibGVcIjtcblxuZXhwb3J0IGNvbnN0IHVzZUxvY2FsSG92ZXJhYmxlID0gPEVsZW0gZXh0ZW5kcyBIVE1MRWxlbWVudD4oKSA9PiB7XG4gIGNvbnN0IGhvdmVyYWJsZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+IGdldEhvdmVyYWJsZUNvbnRleHQ8TXV0YWJsZVJlZk9iamVjdDxFbGVtIHwgbnVsbD4+KCksIFtdKTtcbiAgY29uc3QgcmVmID0gdXNlUmVmPEVsZW0+KG51bGwpO1xuICBjb25zdCBpdGVtQmVpbmdIb3ZlcmVkID0gdXNlU3luY0luamVjdChjb250ZXh0SXNCZWluZ0hvdmVyZWRJbmplY3RhYmxlLCBob3ZlcmFibGVDb250ZXh0KTtcblxuICByZXR1cm4ge1xuICAgIHJlZixcbiAgICBjb250ZXh0OiBob3ZlcmFibGVDb250ZXh0LmhvdmVyYWJsZShyZWYpLFxuICAgIGNvbXBvbmVudElzSG92ZXJlZDogaXRlbUJlaW5nSG92ZXJlZCxcbiAgfTtcbn07XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7O0FDQUEsK0JBQWdEO0FBRWhELG1CQUErQztBQXdEdEM7QUFwQ0YsSUFBTSxvQkFBb0IsQ0FBQyxtQkFBa0Q7QUFDbEYsUUFBTSwrQkFBMkIscUJBQTBCLE1BQVM7QUFDcEUsUUFBTSxpQkFBYSxxQkFBTyxjQUFjO0FBRXhDLDhCQUFVLE1BQU07QUFDZCxlQUFXLFVB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QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4Qix5QkFBeUI7QUFBQSxFQUN6Qix5QkFBeUI7QUFBQSxFQUN6Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNw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O0FBQUEsRUFDdEIsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsd0JBQXdCO0FBQUEsRUFDeEIsK0JBQStCO0FBQUEsRUFDL0Isa0NBQWtDO0FBQUEsRUFDbEMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsZ0NBQWdDO0FBQUEsRUFDaEMsdUNBQXVDO0FBQUEsRUFDdkMsMENBQTBDO0FBQUEsRUFDMUMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMseUJBQXlCO0FBQUEsRUFDekIsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsMEJBQTBCO0FBQUEsRUFDMUIsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsMkJBQTJCO0FBQUEsRUFDM0Isa0NBQWtDO0FBQUEsRUFDbEMscUNBQXFDO0FBQUEsRUFDckMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsd0NBQXdDO0FBQUEsRUFDeEMsK0JBQStCO0FBQUEsRUFDL0Isc0NBQXNDO0FBQUEsRUFDdEMseUNBQXlDO0FBQUEsRUFDekMsdUJBQXVCO0FBQUEsRUFDdkIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsdUJBQXVCO0FBQUEsRUFDdkIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsd0JBQXdCO0FBQUEsRUFDeEIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsaUNBQWlDO0FBQUEsRUFDakMsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsbUNBQW1DO0FBQUEsRUFDbkMsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsaUNBQWlDO0FBQUEsRUFDakMsa0NBQWtDO0FBQUEsRUFDbEMsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsNEJBQTRCO0FBQUEsRUFDNUIsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsMkJBQTJCO0FBQUEsRUFDM0IsK0JBQStCO0FBQUEsRUFDL0IsNkJBQTZCO0FBQUEsRUFDN0IsbUNBQW1DO0FBQUEsRUFDbkMsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIscUNBQXFDO0FBQUEsRUFDckMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsbUNBQW1DO0FBQUEsRUFDbkMsbUNBQW1DO0FBQUEsRUFDbkMsb0NBQW9DO0FBQUEsRUFDcEMsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNkJBQTZCO0FBQUEsRUFDN0IsNEJBQTRCO0FBQUEsRUFDNUIsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMkJBQTJCO0FBQUEsRUFDM0IsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsZ0NBQWdDO0FBQUEsRUFDaEMsOEJBQThCO0FBQUEsRUFDOUIsb0NBQW9DO0FBQUEsRUFDcEMsZ0NBQWdDO0FBQUEsRUFDaEMsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0IsK0JBQStCO0FBQUEsRUFDL0Isc0NBQXNDO0FBQUEsRUFDdEMsZ0NBQWdDO0FBQUEsRUFDaEMsZ0NBQWdDO0FBQUEsRUFDaEMsK0JBQStCO0FBQUEsRUFDL0IsZ0NBQWdDO0FBQUEsRUFDaEMsaUNBQWlDO0FBQUEsRUFDakMsb0NBQW9DO0FBQUEsRUFDcEMsb0NBQW9DO0FBQUEsRUFDcEMscUNBQXFDO0FBQUEsRUFDckMsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsMkJBQTJCO0FBQUEsRUFDM0IsMEJBQTBCO0FBQUEsRUFDMUIseUJBQXlCO0FBQUEsRUFDekIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIseUJBQXlCO0FBQUEsRUFDekIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsMEJBQTBCO0FBQUEsRUFDMUIsOEJBQThCO0FBQUEsRUFDOUIsNEJBQTRCO0FBQUEsRUFDNUIsa0NBQWtDO0FBQUEsRUFDbEMsOEJBQThCO0FBQUEsRUFDOUIsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0IsNkJBQTZCO0FBQUEsRUFDN0Isb0NBQW9DO0FBQUEsRUFDcEMsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsNkJBQTZCO0FBQUEsRUFDN0IsOEJBQThCO0FBQUEsRUFDOUIsK0JBQStC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bUJBQW1CO0FBQUEsRUFDbkIsMkJBQTJCO0FBQUEsRUFDM0Isd0JBQXdCO0FBQUEsRUFDeEIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsaUJBQWlCO0FBQUEsRUFDakIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsZ0JBQWdCO0FBQUEsRUFDaEIsd0JBQXdCO0FBQUEsRUFDeEIscUJBQXFCO0FBQUEsRUFDckIsaUJBQWlCO0FBQUEsRUFDakIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIsdUJBQXVCO0FBQUEsRUFDdkIsa0JBQWtCO0FBQUEsRUFDbEIsMEJBQTBCO0FBQUEsRUFDMUIs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QUM7OztBQ2R3RCxJQUFPLHdCQUFRO0FBQUEsRUFDdEUsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsa0JBQWtCO0FBQUEsRUFDbEIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsaUJBQWlCO0FBQUEsRUFDakIsa0JBQWtCO0FBQUEsRUFDbEIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsbUJBQW1CO0FBQUEsRUFDbkIsb0JBQW9CO0FBQUEsRUFDcEIsb0JBQW9CO0FBQUEsRUFDcEIsbUJBQW1CO0FBQUEsRUFDbkIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQUEsRUFDaEIsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsY0FBYztBQUFBLEVBQ2QsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsYUFBYTtBQUFBLEVBQ2IsY0FBYztBQUFBLEVBQ2QsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZUFBZTtBQUFBLEVBQ2YsZ0JBQWdCO0FBQUEsRUFDaEIsZ0JBQWdCO0FBQ2xCOzs7QUM1REEsSUFBQUMsNkJBQTBCO0FBV25CLElBQU0sbUJBQWUsc0NBQXVELENBQUMsVUFBVTtBQUM1RixRQUFNLEVBQUUsUUFBUSxJQUFJO0FBQ3BCLFFBQU0sRUFBRSxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sWUFBWSxXQUFXLEVBQUUsUUFBUSxRQUFRLElBQUssV0FBVyxDQUFDO0FBRTlGLFNBQU87QUFBQSxJQUNMLFlBQVk7QUFBQSxNQUNWLFNBQVMsc0JBQWEsV0FBVyxNQUFNLEVBQUUsSUFBSTtBQUFBLE1BQzdDLE1BQU0sc0JBQWEsZUFBZSxHQUFHLEVBQUUsSUFBSTtBQUFBLE1BQzNDLE1BQU0sc0JBQWEsZUFBZSxHQUFHLEVBQUUsSUFBSTtBQUFBLE1BQzNDLE1BQU07QUFBQSxJQUNSO0FBQUEsSUFDQSxTQUFTO0FBQUEsRUFDWDtBQUNGLENBQUM7OztBQ3pCRCxJQUFBQyw2QkFBMEI7OztBQ0Q2QixJQUFPLHVCQUFRO0FBQUEsRUFDcEUsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsZ0JBQWdCO0FBQUEsRUFDaEIsc0JBQXNCO0FBQUEsRUFDdEIsc0JBQXNCO0FBQUEsRUFDdEIseUJBQXlCO0FBQUEsRUFDekIsc0JBQXNCO0FBQUEsRUFDdEIsNEJBQTRCO0FBQUEsRUFDNUIsNEJBQTRCO0FBQUEsRUFDNUIsK0JBQStCO0FBQUEsRUFDL0Isa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsd0JBQXdCO0FBQUEsRUFDeEIsOEJBQThCO0FBQUEsRUFDOUIsOEJBQThCO0FBQUEsRUFDOUIsaUNBQWlDO0FBQUEsRUFDakMsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0Isa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FBQUEsRUFDeEIsMkJBQTJCO0FBQUEsRUFDM0IsaUJBQWlCO0FBQUEsRUFDakIsdUJBQXVCO0FBQUEsRUFDdkIsdUJBQXVCO0FBQUEsRUFDdkIsMEJBQTBCO0FBQUEsRUFDMUIsa0JBQWtCO0FBQUEsRUFDbEIsd0JBQXdCO0FBQUEsRUFDeEIsd0JBQXdCO0FB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QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix1QkFBdUI7QUFBQSxFQUN2Qix3QkFBd0I7QUFBQSxFQUN4Qix3QkFBd0I7QUFBQSxFQUN4QixzQkFBc0I7QUFBQSxFQUN0QixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixvQkFBb0I7QUFBQSxFQUNwQixtQkFBbUI7QUFBQSxFQUNuQixtQkFBbUI7QUFBQSxFQUNuQixtQkFBbUI7QUFBQSxFQUNuQixvQkFBb0I7QUFBQSxFQUNwQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixxQkFBcUI7QUFBQSxFQUNyQixzQkFBc0I7QUFBQSxFQUN0QixzQkFBc0I7QUFBQSxFQUN0QixnQkFBZ0I7QUFBQSxFQUNoQixlQUFlO0FBQUEsRUFDZixlQUFlO0FBQUEsRUFDZixlQUFlO0FBQUEsRUFDZixjQUFjO0FBQUEsRUFDZCxhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixhQUFhO0FBQUEsRUFDYixjQUFjO0FBQUEsRUFDZCxlQUFlO0FBQUEsRUFD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MUJ4RSxJQUFBQyxzQkFBOEI7QUFFOUIsSUFBQUMsaUJBQXVEO0FBR2hELElBQU0sb0JBQW9CLE1BQWdDO0FBQy9ELFFBQU0sdUJBQW1CLHdCQUFRLE1BQU0sb0JBQW1ELEdBQUcsQ0FBQyxDQUFDO0FBQy9GLFFBQU0sVUFBTSx1QkFBYSxJQUFJO0FBQzdCLFFBQU0sdUJBQW1CLG1DQUFjLGlDQUFpQyxnQkFBZ0I7QUFFeEYsU0FBTztBQUFBLElBQ0w7QUFBQSxJQUNBLFNBQVMsaUJBQWlCLFVBQVUsR0FBRztBQUFBLElBQ3ZDLG9CQUFvQjtBQUFBLEVBQ3RCO0FBQ0Y7IiwKICAibmFtZXMiOiBbImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgInRvQ29udGV4dE1hcCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfaW5qZWN0YWJsZSIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9yZWFjdF9kb20iLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2ZwIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAic3R5bGVzIiwgImltcG9ydF9mcCIsICJsb2Rhc2hDYXBpdGFsaXplIiwgImltcG9ydF9mcCIsICJhbGlhc1RvTm9taW5hbCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9mZWF0dXJlX2NvcmUiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2luamVjdGFibGUiLCAiaW1wb3J0X2ZwIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9pbmplY3RhYmxlIiwgImltcG9ydF9tb2J4IiwgIm1vZHVsZXMiLCAibW9kdWxlcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiYWxpYXNUb05vbWluYWwiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfbW9ieCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9tb2J4X3JlYWN0IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2ZwIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9tb2J4IiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3VzZV9pbmplY3QiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X21vYngiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF91c2VfaW5qZWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3Rlc3RfdXRpbHMiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9wdWJsaWNfdXRpbGl0aWVzIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3Rlc3RfdXRpbHMiLCAic3R5bGVzIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF90ZXN0X3V0aWxzIiwgInN0eWxlcyIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3JlYWN0X2RvbSIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcmVhY3RfZG9tIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfanN4X3J1bnRpbWUiLCAiaW1wb3J0X2VsZW1lbnRfY29tcG9uZW50IiwgImltcG9ydF9lbGVtZW50X2NvbXBvbmVudCIsICJpbXBvcnRfcHVibGljX3V0aWxpdGllcyIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiLCAiaW1wb3J0X2pzeF9ydW50aW1lIiwgInN0b3BQcm9wYWdhdGlvbiIsICJpbXBvcnRfZWxlbWVudF9jb21wb25lbnQiLCAiaW1wb3J0X3B1YmxpY191dGlsaXRpZXMiLCAiaW1wb3J0X3JlYWN0IiwgImltcG9ydF9qc3hfcnVudGltZSIsICJpc1BvcG92ZXJDYXBhYmxlIiwgImltcG9ydF9yZWFjdCIsICJpbXBvcnRfdXNlX2luamVjdCIsICJpbXBvcnRfcmVhY3QiXQp9Cg==
|