@imperium/layout 7.0.4 → 7.1.2
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/client.js +617 -361
- package/dist/client.min.js +1 -1
- package/dist/client.min.js.map +1 -1
- package/dist/components/ExecuteSelectorHook.d.ts +8 -0
- package/dist/components/ItemBarItem.d.ts +1 -1
- package/dist/components/Layout.d.ts +1 -1
- package/dist/components/RenderIfVisible.d.ts +6 -0
- package/dist/index.d.ts +1 -0
- package/dist/types.d.ts +22 -12
- package/dist/utils.d.ts +2 -1
- package/package.json +19 -19
package/dist/client.js
CHANGED
|
@@ -12,32 +12,32 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
12
12
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
13
13
|
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
|
|
14
14
|
/* harmony export */ });
|
|
15
|
-
/* harmony import */ var
|
|
16
|
-
/* harmony import */ var
|
|
15
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../../node_modules/css-loader/dist/runtime/sourceMaps.js");
|
|
16
|
+
/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
17
17
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../../node_modules/css-loader/dist/runtime/api.js");
|
|
18
18
|
/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
19
19
|
// Imports
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((
|
|
22
|
+
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
|
|
23
23
|
// Module
|
|
24
|
-
___CSS_LOADER_EXPORT___.push([module.id, "/* Need to pass 100% height all the way down */\n#root {\n\theight: 100%;\n}\n#root > div {\n\theight: 100%;\n}\n\n.components-styles__parent--
|
|
24
|
+
___CSS_LOADER_EXPORT___.push([module.id, "/* Need to pass 100% height all the way down */\n#root {\n\theight: 100%;\n}\n#root > div {\n\theight: 100%;\n}\n\n.components-styles__parent--aEtdD {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.components-styles__menubar--O5e1n {\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n}\n\n.components-styles__statusbar--BRbjW {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n\tbackground-color: rgb(45, 45, 45) !important;\n}\n\n.components-styles__sidebar--N7KVd {\n\tmin-width: 220px !important;\n\twidth: 100% !important;\n\theight: 100% !important;\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n\toverflow-x: auto; /* added to make the content scroll and not the whole layout */\n\ttransition: margin-left 0.3s ease-in-out;\n}\n\n.components-styles__sidebarHidden--JX7Xy {\n\tmargin-left: -220px !important;\n}\n\n.components-styles__contentWrapper--iSdcv {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tpadding: 0 !important;\n\tborder: 0 solid transparent !important; /* this is a segment, and they seem to have a 1px white border by default */\n\t/*border-top: 2px solid rgb(217, 128, 48) !important;*/\n\toverflow-y: auto; /* added to make the content scroll and not the whole layout */\n}\n\n.components-styles__content--WOoyL {\n\tflex: 1; /* changed this to have a flex of one instead of auto so the side menu doesn't get squished */\n\talign-content: flex-start;\n\tpadding: 1em 1em;\n\theight: 100%;\n\tmax-height: 100%; /* added to make the content scroll and not the whole layout */\n\toverflow-x: hidden; /* added to make the content scroll and not the whole layout */\n\tbackground-color: #eaeaea;\n\tcolor: #bfbfbf;\n}\n\n.components-styles__footer--fDXAW {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n\tbackground-color: rgb(45, 45, 45) !important;\n}\n\n.components-styles__verticalDropdownIcon--ZZlLy {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.components-styles__verticalDropdownIconRotated--UcLNp {\n\ttransform: rotate(90deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.components-styles__verticalDropdownTitle--RG7UX {\n\tpadding: 0;\n\tcolor: #fff !important;\n}\n\n.components-styles__verticalDropdownContent--_zlPe {\n\tborder: 1px solid rgb(45, 45, 45);\n\tpadding-top: 0 !important;\n\tmargin: 0 -1.14285714em 0 0;\n\tborder-radius: 0;\n\tbackground-color: rgb(45, 45, 45);\n}\n\n.components-styles__icon--BTOT4 {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.4s linear;\n\tcursor: pointer;\n}\n\n.components-styles__iconRotated--NnTIi {\n\ttransform: rotate(-180deg);\n\ttransition: transform 0.5s;\n\tcursor: pointer;\n}\n", "",{"version":3,"sources":["webpack://./components/styles.css"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C;CACC,YAAY;AACb;AACA;CACC,YAAY;AACb;;AAEA;CACC,gBAAgB;CAChB,aAAa;CACb,sBAAsB;AACvB;;AAEA;CACC,2BAA2B;CAC3B,oBAAoB;AACrB;;AAEA;CACC,oBAAoB;CACpB,2BAA2B;CAC3B,4CAA4C;AAC7C;;AAEA;CACC,2BAA2B;CAC3B,sBAAsB;CACtB,uBAAuB;CACvB,2BAA2B;CAC3B,oBAAoB;CACpB,gBAAgB,EAAE,8DAA8D;CAChF,wCAAwC;AACzC;;AAEA;CACC,8BAA8B;AAC/B;;AAEA;CACC,OAAO;CACP,aAAa;CACb,mBAAmB;CACnB,iBAAiB;CACjB,qBAAqB;CACrB,sCAAsC,EAAE,2EAA2E;CACnH,sDAAsD;CACtD,gBAAgB,EAAE,8DAA8D;AACjF;;AAEA;CACC,OAAO,EAAE,6FAA6F;CACtG,yBAAyB;CACzB,gBAAgB;CAChB,YAAY;CACZ,gBAAgB,EAAE,8DAA8D;CAChF,kBAAkB,EAAE,8DAA8D;CAClF,yBAAyB;CACzB,cAAc;AACf;;AAEA;CACC,oBAAoB;CACpB,2BAA2B;CAC3B,4CAA4C;AAC7C;;AAEA;CACC,uBAAuB;CACvB,2BAA2B;CAC3B,eAAe;AAChB;;AAEA;CACC,wBAAwB;CACxB,2BAA2B;CAC3B,eAAe;AAChB;;AAEA;CACC,UAAU;CACV,sBAAsB;AACvB;;AAEA;CACC,iCAAiC;CACjC,yBAAyB;CACzB,2BAA2B;CAC3B,gBAAgB;CAChB,iCAAiC;AAClC;;AAEA;CACC,uBAAuB;CACvB,iCAAiC;CACjC,eAAe;AAChB;;AAEA;CACC,0BAA0B;CAC1B,0BAA0B;CAC1B,eAAe;AAChB","sourcesContent":["/* Need to pass 100% height all the way down */\n:global(#root) {\n\theight: 100%;\n}\n:global(#root) > div {\n\theight: 100%;\n}\n\n.parent {\n\tmin-height: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n}\n\n.menubar {\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n}\n\n.statusbar {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n\tbackground-color: rgb(45, 45, 45) !important;\n}\n\n.sidebar {\n\tmin-width: 220px !important;\n\twidth: 100% !important;\n\theight: 100% !important;\n\tborder-radius: 0 !important;\n\tmargin: 0 !important;\n\toverflow-x: auto; /* added to make the content scroll and not the whole layout */\n\ttransition: margin-left 0.3s ease-in-out;\n}\n\n.sidebarHidden {\n\tmargin-left: -220px !important;\n}\n\n.contentWrapper {\n\tflex: 1;\n\tdisplay: flex;\n\tflex-direction: row;\n\tflex-wrap: nowrap;\n\tpadding: 0 !important;\n\tborder: 0 solid transparent !important; /* this is a segment, and they seem to have a 1px white border by default */\n\t/*border-top: 2px solid rgb(217, 128, 48) !important;*/\n\toverflow-y: auto; /* added to make the content scroll and not the whole layout */\n}\n\n.content {\n\tflex: 1; /* changed this to have a flex of one instead of auto so the side menu doesn't get squished */\n\talign-content: flex-start;\n\tpadding: 1em 1em;\n\theight: 100%;\n\tmax-height: 100%; /* added to make the content scroll and not the whole layout */\n\toverflow-x: hidden; /* added to make the content scroll and not the whole layout */\n\tbackground-color: #eaeaea;\n\tcolor: #bfbfbf;\n}\n\n.footer {\n\tmargin: 0 !important;\n\tborder-radius: 0 !important;\n\tbackground-color: rgb(45, 45, 45) !important;\n}\n\n.verticalDropdownIcon {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.verticalDropdownIconRotated {\n\ttransform: rotate(90deg);\n\ttransition: transform 0.3s ;\n\tcursor: pointer;\n}\n\n.verticalDropdownTitle {\n\tpadding: 0;\n\tcolor: #fff !important;\n}\n\n.verticalDropdownContent {\n\tborder: 1px solid rgb(45, 45, 45);\n\tpadding-top: 0 !important;\n\tmargin: 0 -1.14285714em 0 0;\n\tborder-radius: 0;\n\tbackground-color: rgb(45, 45, 45);\n}\n\n.icon {\n\ttransform: rotate(0deg);\n\ttransition: transform 0.4s linear;\n\tcursor: pointer;\n}\n\n.iconRotated {\n\ttransform: rotate(-180deg);\n\ttransition: transform 0.5s;\n\tcursor: pointer;\n}\n"],"sourceRoot":""}]);
|
|
25
25
|
// Exports
|
|
26
26
|
___CSS_LOADER_EXPORT___.locals = {
|
|
27
|
-
"parent": "components-styles__parent--
|
|
28
|
-
"menubar": "components-styles__menubar--
|
|
29
|
-
"statusbar": "components-styles__statusbar--
|
|
30
|
-
"sidebar": "components-styles__sidebar--
|
|
31
|
-
"sidebarHidden": "components-styles__sidebarHidden--
|
|
32
|
-
"contentWrapper": "components-styles__contentWrapper--
|
|
33
|
-
"content": "components-styles__content--
|
|
34
|
-
"footer": "components-styles__footer--
|
|
35
|
-
"verticalDropdownIcon": "components-styles__verticalDropdownIcon--
|
|
36
|
-
"verticalDropdownIconRotated": "components-styles__verticalDropdownIconRotated--
|
|
37
|
-
"verticalDropdownTitle": "components-styles__verticalDropdownTitle--
|
|
38
|
-
"verticalDropdownContent": "components-styles__verticalDropdownContent--
|
|
39
|
-
"icon": "components-styles__icon--
|
|
40
|
-
"iconRotated": "components-styles__iconRotated--
|
|
27
|
+
"parent": "components-styles__parent--aEtdD",
|
|
28
|
+
"menubar": "components-styles__menubar--O5e1n",
|
|
29
|
+
"statusbar": "components-styles__statusbar--BRbjW",
|
|
30
|
+
"sidebar": "components-styles__sidebar--N7KVd",
|
|
31
|
+
"sidebarHidden": "components-styles__sidebarHidden--JX7Xy",
|
|
32
|
+
"contentWrapper": "components-styles__contentWrapper--iSdcv",
|
|
33
|
+
"content": "components-styles__content--WOoyL",
|
|
34
|
+
"footer": "components-styles__footer--fDXAW",
|
|
35
|
+
"verticalDropdownIcon": "components-styles__verticalDropdownIcon--ZZlLy",
|
|
36
|
+
"verticalDropdownIconRotated": "components-styles__verticalDropdownIconRotated--UcLNp",
|
|
37
|
+
"verticalDropdownTitle": "components-styles__verticalDropdownTitle--RG7UX",
|
|
38
|
+
"verticalDropdownContent": "components-styles__verticalDropdownContent--_zlPe",
|
|
39
|
+
"icon": "components-styles__icon--BTOT4",
|
|
40
|
+
"iconRotated": "components-styles__iconRotated--NnTIi"
|
|
41
41
|
};
|
|
42
42
|
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
|
|
43
43
|
|
|
@@ -56,37 +56,55 @@ ___CSS_LOADER_EXPORT___.locals = {
|
|
|
56
56
|
MIT License http://www.opensource.org/licenses/mit-license.php
|
|
57
57
|
Author Tobias Koppers @sokra
|
|
58
58
|
*/
|
|
59
|
-
// css base code, injected by the css-loader
|
|
60
|
-
// eslint-disable-next-line func-names
|
|
61
59
|
module.exports = function (cssWithMappingToString) {
|
|
62
60
|
var list = []; // return the list of modules as css string
|
|
63
61
|
|
|
64
62
|
list.toString = function toString() {
|
|
65
63
|
return this.map(function (item) {
|
|
66
|
-
var content =
|
|
64
|
+
var content = "";
|
|
65
|
+
var needLayer = typeof item[5] !== "undefined";
|
|
66
|
+
|
|
67
|
+
if (item[4]) {
|
|
68
|
+
content += "@supports (".concat(item[4], ") {");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (item[2]) {
|
|
72
|
+
content += "@media ".concat(item[2], " {");
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (needLayer) {
|
|
76
|
+
content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
content += cssWithMappingToString(item);
|
|
80
|
+
|
|
81
|
+
if (needLayer) {
|
|
82
|
+
content += "}";
|
|
83
|
+
}
|
|
67
84
|
|
|
68
85
|
if (item[2]) {
|
|
69
|
-
|
|
86
|
+
content += "}";
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (item[4]) {
|
|
90
|
+
content += "}";
|
|
70
91
|
}
|
|
71
92
|
|
|
72
93
|
return content;
|
|
73
94
|
}).join("");
|
|
74
95
|
}; // import a list of modules into the list
|
|
75
|
-
// eslint-disable-next-line func-names
|
|
76
96
|
|
|
77
97
|
|
|
78
|
-
list.i = function (modules,
|
|
98
|
+
list.i = function i(modules, media, dedupe, supports, layer) {
|
|
79
99
|
if (typeof modules === "string") {
|
|
80
|
-
|
|
81
|
-
modules = [[null, modules, ""]];
|
|
100
|
+
modules = [[null, modules, undefined]];
|
|
82
101
|
}
|
|
83
102
|
|
|
84
103
|
var alreadyImportedModules = {};
|
|
85
104
|
|
|
86
105
|
if (dedupe) {
|
|
87
|
-
for (var
|
|
88
|
-
|
|
89
|
-
var id = this[i][0];
|
|
106
|
+
for (var _i = 0; _i < this.length; _i++) {
|
|
107
|
+
var id = this[_i][0];
|
|
90
108
|
|
|
91
109
|
if (id != null) {
|
|
92
110
|
alreadyImportedModules[id] = true;
|
|
@@ -94,19 +112,37 @@ module.exports = function (cssWithMappingToString) {
|
|
|
94
112
|
}
|
|
95
113
|
}
|
|
96
114
|
|
|
97
|
-
for (var
|
|
98
|
-
var item = [].concat(modules[
|
|
115
|
+
for (var _i2 = 0; _i2 < modules.length; _i2++) {
|
|
116
|
+
var item = [].concat(modules[_i2]);
|
|
99
117
|
|
|
100
118
|
if (dedupe && alreadyImportedModules[item[0]]) {
|
|
101
|
-
// eslint-disable-next-line no-continue
|
|
102
119
|
continue;
|
|
103
120
|
}
|
|
104
121
|
|
|
105
|
-
if (
|
|
122
|
+
if (typeof layer !== "undefined") {
|
|
123
|
+
if (typeof item[5] === "undefined") {
|
|
124
|
+
item[5] = layer;
|
|
125
|
+
} else {
|
|
126
|
+
item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
|
|
127
|
+
item[5] = layer;
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (media) {
|
|
106
132
|
if (!item[2]) {
|
|
107
|
-
item[2] =
|
|
133
|
+
item[2] = media;
|
|
134
|
+
} else {
|
|
135
|
+
item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
|
|
136
|
+
item[2] = media;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (supports) {
|
|
141
|
+
if (!item[4]) {
|
|
142
|
+
item[4] = "".concat(supports);
|
|
108
143
|
} else {
|
|
109
|
-
item[
|
|
144
|
+
item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
|
|
145
|
+
item[4] = supports;
|
|
110
146
|
}
|
|
111
147
|
}
|
|
112
148
|
|
|
@@ -119,33 +155,23 @@ module.exports = function (cssWithMappingToString) {
|
|
|
119
155
|
|
|
120
156
|
/***/ }),
|
|
121
157
|
|
|
122
|
-
/***/ "../../../node_modules/css-loader/dist/runtime/
|
|
123
|
-
|
|
124
|
-
!*** ../../../node_modules/css-loader/dist/runtime/
|
|
125
|
-
|
|
158
|
+
/***/ "../../../node_modules/css-loader/dist/runtime/sourceMaps.js":
|
|
159
|
+
/*!*******************************************************************!*\
|
|
160
|
+
!*** ../../../node_modules/css-loader/dist/runtime/sourceMaps.js ***!
|
|
161
|
+
\*******************************************************************/
|
|
126
162
|
/***/ ((module) => {
|
|
127
163
|
|
|
128
164
|
|
|
129
165
|
|
|
130
|
-
function
|
|
166
|
+
module.exports = function (item) {
|
|
167
|
+
var content = item[1];
|
|
168
|
+
var cssMapping = item[3];
|
|
131
169
|
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
137
|
-
|
|
138
|
-
function _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
|
139
|
-
|
|
140
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
141
|
-
|
|
142
|
-
module.exports = function cssWithMappingToString(item) {
|
|
143
|
-
var _item = _slicedToArray(item, 4),
|
|
144
|
-
content = _item[1],
|
|
145
|
-
cssMapping = _item[3];
|
|
170
|
+
if (!cssMapping) {
|
|
171
|
+
return content;
|
|
172
|
+
}
|
|
146
173
|
|
|
147
174
|
if (typeof btoa === "function") {
|
|
148
|
-
// eslint-disable-next-line no-undef
|
|
149
175
|
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping))));
|
|
150
176
|
var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
|
|
151
177
|
var sourceMapping = "/*# ".concat(data, " */");
|
|
@@ -260,13 +286,13 @@ function DropdownItemMenu(_ref) {
|
|
|
260
286
|
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Accordion, {
|
|
261
287
|
fluid: true,
|
|
262
288
|
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Accordion.Title, {
|
|
263
|
-
className: _styles_css__WEBPACK_IMPORTED_MODULE_3__
|
|
289
|
+
className: _styles_css__WEBPACK_IMPORTED_MODULE_3__["default"].verticalDropdownTitle,
|
|
264
290
|
onClick: function onClick(ev) {
|
|
265
291
|
ev.stopPropagation();
|
|
266
292
|
setOpen(!open);
|
|
267
293
|
},
|
|
268
294
|
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Icon, {
|
|
269
|
-
className: open ? _styles_css__WEBPACK_IMPORTED_MODULE_3__
|
|
295
|
+
className: open ? _styles_css__WEBPACK_IMPORTED_MODULE_3__["default"].verticalDropdownIconRotated : _styles_css__WEBPACK_IMPORTED_MODULE_3__["default"].verticalDropdownIcon,
|
|
270
296
|
name: "arrow right"
|
|
271
297
|
}, void 0, false, {
|
|
272
298
|
fileName: _jsxFileName,
|
|
@@ -279,7 +305,7 @@ function DropdownItemMenu(_ref) {
|
|
|
279
305
|
columnNumber: 6
|
|
280
306
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_4__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_2__.Accordion.Content, {
|
|
281
307
|
active: open,
|
|
282
|
-
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_3__
|
|
308
|
+
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_3__["default"].verticalDropdownContent, " imperiumVerticalDropdownContent"),
|
|
283
309
|
children: children
|
|
284
310
|
}, void 0, false, {
|
|
285
311
|
fileName: _jsxFileName,
|
|
@@ -350,6 +376,34 @@ $RefreshReg$(_c, "ExecuteDataHook");
|
|
|
350
376
|
|
|
351
377
|
/***/ }),
|
|
352
378
|
|
|
379
|
+
/***/ "./components/ExecuteSelectorHook.tsx":
|
|
380
|
+
/*!********************************************!*\
|
|
381
|
+
!*** ./components/ExecuteSelectorHook.tsx ***!
|
|
382
|
+
\********************************************/
|
|
383
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
384
|
+
|
|
385
|
+
__webpack_require__.r(__webpack_exports__);
|
|
386
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
387
|
+
/* harmony export */ "ExecuteSelectorHook": () => (/* binding */ ExecuteSelectorHook)
|
|
388
|
+
/* harmony export */ });
|
|
389
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ "debug");
|
|
390
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);
|
|
391
|
+
|
|
392
|
+
var d = debug__WEBPACK_IMPORTED_MODULE_0___default()('imperium.layout.components.ExecuteSelectorHook');
|
|
393
|
+
function ExecuteSelectorHook(_ref) {
|
|
394
|
+
var render = _ref.render,
|
|
395
|
+
hook = _ref.hook;
|
|
396
|
+
var data = hook();
|
|
397
|
+
return render(data);
|
|
398
|
+
}
|
|
399
|
+
_c = ExecuteSelectorHook;
|
|
400
|
+
|
|
401
|
+
var _c;
|
|
402
|
+
|
|
403
|
+
$RefreshReg$(_c, "ExecuteSelectorHook");
|
|
404
|
+
|
|
405
|
+
/***/ }),
|
|
406
|
+
|
|
353
407
|
/***/ "./components/ItemBar.tsx":
|
|
354
408
|
/*!********************************!*\
|
|
355
409
|
!*** ./components/ItemBar.tsx ***!
|
|
@@ -378,6 +432,7 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
378
432
|
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_9__);
|
|
379
433
|
|
|
380
434
|
|
|
435
|
+
var _excluded = ["name", "items"];
|
|
381
436
|
var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/components/ItemBar.tsx";
|
|
382
437
|
|
|
383
438
|
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
@@ -424,7 +479,7 @@ function mapItems(name, items, props) {
|
|
|
424
479
|
function ItemBar(_ref) {
|
|
425
480
|
var name = _ref.name,
|
|
426
481
|
items = _ref.items,
|
|
427
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_ref,
|
|
482
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_ref, _excluded);
|
|
428
483
|
|
|
429
484
|
var ims = (0,_utils__WEBPACK_IMPORTED_MODULE_6__.splitHorizontalItems)(items);
|
|
430
485
|
var left = mapItems(name, (0,_utils__WEBPACK_IMPORTED_MODULE_6__.sortWeightedItems)(ims.leftItems), rest);
|
|
@@ -467,22 +522,19 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
467
522
|
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
468
523
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debug */ "debug");
|
|
469
524
|
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_1__);
|
|
470
|
-
/* harmony import */ var
|
|
471
|
-
/* harmony import */ var
|
|
472
|
-
/* harmony import */ var
|
|
473
|
-
/* harmony import */ var
|
|
474
|
-
/* harmony import */ var
|
|
475
|
-
/* harmony import */ var
|
|
476
|
-
/* harmony import */ var
|
|
477
|
-
/* harmony import */ var
|
|
478
|
-
/* harmony import */ var
|
|
479
|
-
/* harmony import */ var
|
|
480
|
-
/* harmony import */ var
|
|
481
|
-
/* harmony import */ var
|
|
482
|
-
/* harmony import */ var
|
|
483
|
-
/* harmony import */ var _MenuItemMenu__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./MenuItemMenu */ "./components/MenuItemMenu.tsx");
|
|
484
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
485
|
-
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__);
|
|
525
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
|
|
526
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
|
|
527
|
+
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router-dom */ "react-router-dom");
|
|
528
|
+
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_router_dom__WEBPACK_IMPORTED_MODULE_3__);
|
|
529
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! semantic-ui-react */ "semantic-ui-react");
|
|
530
|
+
/* harmony import */ var semantic_ui_react__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__);
|
|
531
|
+
/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../types */ "./types.ts");
|
|
532
|
+
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils */ "./utils.ts");
|
|
533
|
+
/* harmony import */ var _DropdownItemMenu__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./DropdownItemMenu */ "./components/DropdownItemMenu.tsx");
|
|
534
|
+
/* harmony import */ var _MenuItemMenu__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./MenuItemMenu */ "./components/MenuItemMenu.tsx");
|
|
535
|
+
/* harmony import */ var _RenderIfVisible__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./RenderIfVisible */ "./components/RenderIfVisible.tsx");
|
|
536
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
537
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__);
|
|
486
538
|
|
|
487
539
|
|
|
488
540
|
var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/components/ItemBarItem.tsx",
|
|
@@ -502,108 +554,129 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
|
|
|
502
554
|
|
|
503
555
|
|
|
504
556
|
|
|
505
|
-
|
|
506
557
|
var d = debug__WEBPACK_IMPORTED_MODULE_1___default()('imperium.layout.components.ItemBarItem');
|
|
507
558
|
function ItemBarItem(_ref) {
|
|
508
559
|
_s();
|
|
509
560
|
|
|
510
|
-
var
|
|
511
|
-
_this = this;
|
|
561
|
+
var _this = this;
|
|
512
562
|
|
|
513
563
|
var item = _ref.item,
|
|
514
564
|
as = _ref.as,
|
|
515
565
|
vertical = _ref.vertical;
|
|
516
|
-
var
|
|
517
|
-
var icon = item.icon ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_6__.Icon, {
|
|
518
|
-
name: item.icon
|
|
519
|
-
}, void 0, false, {
|
|
520
|
-
fileName: _jsxFileName,
|
|
521
|
-
lineNumber: 23,
|
|
522
|
-
columnNumber: 27
|
|
523
|
-
}, this) : null;
|
|
524
|
-
var selectedState = (_item$visible = item.visible) === null || _item$visible === void 0 ? void 0 : _item$visible.selectorHook();
|
|
525
|
-
var loc = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_5__.useLocation)();
|
|
526
|
-
var isVisible = (0,react__WEBPACK_IMPORTED_MODULE_4__.useMemo)(function () {
|
|
527
|
-
var compareObj = _objectSpread(_objectSpread({}, selectedState), {}, {
|
|
528
|
-
location: {
|
|
529
|
-
path: lodash_compact__WEBPACK_IMPORTED_MODULE_2___default()(loc.pathname.split('/')),
|
|
530
|
-
hash: loc.hash,
|
|
531
|
-
search: query_string__WEBPACK_IMPORTED_MODULE_3___default().parse(loc.search)
|
|
532
|
-
}
|
|
533
|
-
});
|
|
566
|
+
var loc = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useLocation)(); // Determine if the current route matches the to route to see if the link is active
|
|
534
567
|
|
|
535
|
-
|
|
536
|
-
|
|
568
|
+
var routeMatchObject = {};
|
|
569
|
+
|
|
570
|
+
if (!(0,_types__WEBPACK_IMPORTED_MODULE_5__.isDropdownMenuItem)(item) && !(0,_types__WEBPACK_IMPORTED_MODULE_5__.isMenuMenuItem)(item) && item.to) {
|
|
571
|
+
if (typeof item.to === 'string') {
|
|
572
|
+
routeMatchObject.path = item.to;
|
|
537
573
|
}
|
|
538
574
|
|
|
539
|
-
|
|
540
|
-
|
|
575
|
+
if (typeof item.to === 'function') {
|
|
576
|
+
routeMatchObject.path = item.to(loc);
|
|
577
|
+
}
|
|
541
578
|
|
|
542
|
-
|
|
543
|
-
|
|
579
|
+
routeMatchObject.exact = item.exact !== false;
|
|
580
|
+
routeMatchObject.sensitive = item.sensitive;
|
|
581
|
+
routeMatchObject.strict = item.strict;
|
|
544
582
|
}
|
|
545
583
|
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
584
|
+
var routeMatch = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useRouteMatch)(routeMatchObject);
|
|
585
|
+
var active = routeMatch !== null; // Generate the icon component, if it exists
|
|
586
|
+
|
|
587
|
+
var icon = item.icon ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Icon, {
|
|
588
|
+
name: item.icon
|
|
589
|
+
}, void 0, false, {
|
|
590
|
+
fileName: _jsxFileName,
|
|
591
|
+
lineNumber: 41,
|
|
592
|
+
columnNumber: 27
|
|
593
|
+
}, this) : null;
|
|
594
|
+
|
|
595
|
+
if ((0,_types__WEBPACK_IMPORTED_MODULE_5__.isDropdownMenuItem)(item)) {
|
|
596
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_RenderIfVisible__WEBPACK_IMPORTED_MODULE_9__.RenderIfVisible, {
|
|
597
|
+
component: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_DropdownItemMenu__WEBPACK_IMPORTED_MODULE_7__.DropdownItemMenu, {
|
|
598
|
+
vertical: vertical || false,
|
|
599
|
+
item: item,
|
|
600
|
+
children: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.sortWeightedItems)(item.dropdown).map(function (v) {
|
|
601
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(ItemBarItem, {
|
|
602
|
+
item: v,
|
|
603
|
+
as: semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Dropdown.Item
|
|
604
|
+
}, v.text, false, {
|
|
605
|
+
fileName: _jsxFileName,
|
|
606
|
+
lineNumber: 51,
|
|
607
|
+
columnNumber: 8
|
|
608
|
+
}, _this);
|
|
609
|
+
})
|
|
610
|
+
}, void 0, false, {
|
|
611
|
+
fileName: _jsxFileName,
|
|
612
|
+
lineNumber: 47,
|
|
613
|
+
columnNumber: 6
|
|
614
|
+
}, this),
|
|
615
|
+
item: item
|
|
560
616
|
}, void 0, false, {
|
|
561
617
|
fileName: _jsxFileName,
|
|
562
|
-
lineNumber:
|
|
618
|
+
lineNumber: 45,
|
|
563
619
|
columnNumber: 4
|
|
564
620
|
}, this);
|
|
565
621
|
}
|
|
566
622
|
|
|
567
|
-
if ((0,
|
|
568
|
-
return /*#__PURE__*/(0,
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
623
|
+
if ((0,_types__WEBPACK_IMPORTED_MODULE_5__.isMenuMenuItem)(item)) {
|
|
624
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_RenderIfVisible__WEBPACK_IMPORTED_MODULE_9__.RenderIfVisible, {
|
|
625
|
+
component: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_MenuItemMenu__WEBPACK_IMPORTED_MODULE_8__.MenuItemMenu, {
|
|
626
|
+
item: item,
|
|
627
|
+
children: (0,_utils__WEBPACK_IMPORTED_MODULE_6__.sortWeightedItems)(item.menu).map(function (v) {
|
|
628
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(ItemBarItem, {
|
|
629
|
+
item: v,
|
|
630
|
+
as: semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Dropdown.Item
|
|
631
|
+
}, v.text, false, {
|
|
632
|
+
fileName: _jsxFileName,
|
|
633
|
+
lineNumber: 67,
|
|
634
|
+
columnNumber: 8
|
|
635
|
+
}, _this);
|
|
636
|
+
})
|
|
637
|
+
}, void 0, false, {
|
|
638
|
+
fileName: _jsxFileName,
|
|
639
|
+
lineNumber: 64,
|
|
640
|
+
columnNumber: 6
|
|
641
|
+
}, this),
|
|
642
|
+
item: item
|
|
580
643
|
}, void 0, false, {
|
|
581
644
|
fileName: _jsxFileName,
|
|
582
|
-
lineNumber:
|
|
645
|
+
lineNumber: 62,
|
|
583
646
|
columnNumber: 4
|
|
584
647
|
}, this);
|
|
585
648
|
}
|
|
586
649
|
|
|
587
650
|
var linkParams = item.to ? {
|
|
588
|
-
as:
|
|
589
|
-
active:
|
|
590
|
-
to: item.to
|
|
651
|
+
as: react_router_dom__WEBPACK_IMPORTED_MODULE_3__.Link,
|
|
652
|
+
active: active,
|
|
653
|
+
to: typeof item.to === 'function' ? item.to(loc) : item.to
|
|
591
654
|
} : {};
|
|
592
655
|
var menuParams = as ? {} : {
|
|
593
656
|
link: !!item.to
|
|
594
657
|
};
|
|
595
|
-
var ItemX = as ||
|
|
596
|
-
|
|
658
|
+
var ItemX = as || semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Menu.Item;
|
|
659
|
+
|
|
660
|
+
var renderedItem = /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(ItemX, _objectSpread(_objectSpread(_objectSpread({}, linkParams), menuParams), {}, {
|
|
597
661
|
children: [icon, item.text]
|
|
598
662
|
}), void 0, true, {
|
|
599
663
|
fileName: _jsxFileName,
|
|
600
|
-
lineNumber:
|
|
664
|
+
lineNumber: 93,
|
|
601
665
|
columnNumber: 3
|
|
602
666
|
}, this);
|
|
667
|
+
|
|
668
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_10__.jsxDEV)(_RenderIfVisible__WEBPACK_IMPORTED_MODULE_9__.RenderIfVisible, {
|
|
669
|
+
component: renderedItem,
|
|
670
|
+
item: item
|
|
671
|
+
}, void 0, false, {
|
|
672
|
+
fileName: _jsxFileName,
|
|
673
|
+
lineNumber: 99,
|
|
674
|
+
columnNumber: 9
|
|
675
|
+
}, this);
|
|
603
676
|
}
|
|
604
677
|
|
|
605
|
-
_s(ItemBarItem, "
|
|
606
|
-
return [
|
|
678
|
+
_s(ItemBarItem, "khzC3gtDXMuT7cirdkjUtk3DsH8=", false, function () {
|
|
679
|
+
return [react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useLocation, react_router_dom__WEBPACK_IMPORTED_MODULE_3__.useRouteMatch];
|
|
607
680
|
});
|
|
608
681
|
|
|
609
682
|
_c = ItemBarItem;
|
|
@@ -679,7 +752,7 @@ function Layout(_ref) {
|
|
|
679
752
|
if (!isMobile) return null;
|
|
680
753
|
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Menu.Item, {
|
|
681
754
|
children: /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Icon, {
|
|
682
|
-
className: menuOpen ? _styles_css__WEBPACK_IMPORTED_MODULE_7__
|
|
755
|
+
className: menuOpen ? _styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].iconRotated : _styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].icon,
|
|
683
756
|
name: menuOpen ? 'close' : 'sidebar',
|
|
684
757
|
onClick: function onClick() {
|
|
685
758
|
setMenuOpen(!menuOpen);
|
|
@@ -711,7 +784,7 @@ function Layout(_ref) {
|
|
|
711
784
|
items: sidebarItems,
|
|
712
785
|
inverted: true,
|
|
713
786
|
vertical: true,
|
|
714
|
-
className: isMobile && !menuOpen ? "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__
|
|
787
|
+
className: isMobile && !menuOpen ? "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].sidebar, " ").concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].sidebarHidden, " imperiumSidebar") : "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].sidebar, " imperiumSidebar")
|
|
715
788
|
}, void 0, false, {
|
|
716
789
|
fileName: _jsxFileName,
|
|
717
790
|
lineNumber: 52,
|
|
@@ -726,7 +799,7 @@ function Layout(_ref) {
|
|
|
726
799
|
var footerComp = footerItems.length > 0 ? /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(_ItemBar__WEBPACK_IMPORTED_MODULE_6__.ItemBar, {
|
|
727
800
|
name: "footer",
|
|
728
801
|
items: footerItems,
|
|
729
|
-
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__
|
|
802
|
+
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].footer, " imperiumFooter"),
|
|
730
803
|
inverted: true,
|
|
731
804
|
borderless: true
|
|
732
805
|
}, void 0, false, {
|
|
@@ -739,21 +812,21 @@ function Layout(_ref) {
|
|
|
739
812
|
name: "statusbar",
|
|
740
813
|
items: statusbarItems,
|
|
741
814
|
inverted: true,
|
|
742
|
-
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__
|
|
815
|
+
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].statusbar, " imperiumStatusbar")
|
|
743
816
|
}, void 0, false, {
|
|
744
817
|
fileName: _jsxFileName,
|
|
745
818
|
lineNumber: 69,
|
|
746
819
|
columnNumber: 4
|
|
747
820
|
}, this) : null;
|
|
748
821
|
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
|
|
749
|
-
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__
|
|
822
|
+
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].parent, " imperiumLayout"),
|
|
750
823
|
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
|
|
751
824
|
children: [/*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(_ItemBar__WEBPACK_IMPORTED_MODULE_6__.ItemBar, {
|
|
752
825
|
name: "menubar",
|
|
753
826
|
items: menubarItems,
|
|
754
827
|
inverted: true,
|
|
755
828
|
borderless: true,
|
|
756
|
-
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__
|
|
829
|
+
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].menubar, " imperiumMenubar")
|
|
757
830
|
}, void 0, false, {
|
|
758
831
|
fileName: _jsxFileName,
|
|
759
832
|
lineNumber: 75,
|
|
@@ -765,9 +838,9 @@ function Layout(_ref) {
|
|
|
765
838
|
columnNumber: 4
|
|
766
839
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_4__.Segment, {
|
|
767
840
|
attached: true,
|
|
768
|
-
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__
|
|
841
|
+
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].contentWrapper, " imperiumContentWrapper"),
|
|
769
842
|
children: [sidebarComp, /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)("div", {
|
|
770
|
-
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__
|
|
843
|
+
className: "".concat(_styles_css__WEBPACK_IMPORTED_MODULE_7__["default"].content, " imperiumContent"),
|
|
771
844
|
children: children
|
|
772
845
|
}, void 0, false, {
|
|
773
846
|
fileName: _jsxFileName,
|
|
@@ -829,7 +902,7 @@ function MenuItemMenu(_ref) {
|
|
|
829
902
|
lineNumber: 13,
|
|
830
903
|
columnNumber: 4
|
|
831
904
|
}, this), /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_2__.jsxDEV)(semantic_ui_react__WEBPACK_IMPORTED_MODULE_1__.Menu.Menu, {
|
|
832
|
-
compact:
|
|
905
|
+
compact: "",
|
|
833
906
|
children: children
|
|
834
907
|
}, void 0, false, {
|
|
835
908
|
fileName: _jsxFileName,
|
|
@@ -863,9 +936,10 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
863
936
|
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
|
|
864
937
|
/* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__);
|
|
865
938
|
|
|
939
|
+
var _excluded = ["render"];
|
|
866
940
|
function RenderComponent(_ref) {
|
|
867
941
|
var render = _ref.render,
|
|
868
|
-
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(_ref,
|
|
942
|
+
rest = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0___default()(_ref, _excluded);
|
|
869
943
|
|
|
870
944
|
return render(rest);
|
|
871
945
|
}
|
|
@@ -877,6 +951,115 @@ $RefreshReg$(_c, "RenderComponent");
|
|
|
877
951
|
|
|
878
952
|
/***/ }),
|
|
879
953
|
|
|
954
|
+
/***/ "./components/RenderIfVisible.tsx":
|
|
955
|
+
/*!****************************************!*\
|
|
956
|
+
!*** ./components/RenderIfVisible.tsx ***!
|
|
957
|
+
\****************************************/
|
|
958
|
+
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
959
|
+
|
|
960
|
+
__webpack_require__.r(__webpack_exports__);
|
|
961
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
962
|
+
/* harmony export */ "RenderIfVisible": () => (/* binding */ RenderIfVisible)
|
|
963
|
+
/* harmony export */ });
|
|
964
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
|
|
965
|
+
/* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
|
|
966
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! debug */ "debug");
|
|
967
|
+
/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_1__);
|
|
968
|
+
/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash/compact */ "lodash/compact");
|
|
969
|
+
/* harmony import */ var lodash_compact__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(lodash_compact__WEBPACK_IMPORTED_MODULE_2__);
|
|
970
|
+
/* harmony import */ var mingo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! mingo */ "mingo");
|
|
971
|
+
/* harmony import */ var mingo__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(mingo__WEBPACK_IMPORTED_MODULE_3__);
|
|
972
|
+
/* harmony import */ var querystring__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! querystring */ "querystring");
|
|
973
|
+
/* harmony import */ var querystring__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(querystring__WEBPACK_IMPORTED_MODULE_4__);
|
|
974
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ "react");
|
|
975
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);
|
|
976
|
+
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-router-dom */ "react-router-dom");
|
|
977
|
+
/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react_router_dom__WEBPACK_IMPORTED_MODULE_6__);
|
|
978
|
+
/* harmony import */ var _ExecuteSelectorHook__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ExecuteSelectorHook */ "./components/ExecuteSelectorHook.tsx");
|
|
979
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! react/jsx-dev-runtime */ "react/jsx-dev-runtime");
|
|
980
|
+
/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__);
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
var _jsxFileName = "/home/mike/dev/imperium/packages/layout/src/components/RenderIfVisible.tsx",
|
|
984
|
+
_s = $RefreshSig$();
|
|
985
|
+
|
|
986
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
|
|
987
|
+
|
|
988
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
|
|
989
|
+
|
|
990
|
+
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
|
|
994
|
+
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
|
|
998
|
+
var d = debug__WEBPACK_IMPORTED_MODULE_1___default()('imperium.layout.components.RenderIfVisible');
|
|
999
|
+
|
|
1000
|
+
function mergeLocationData(loc, data) {
|
|
1001
|
+
var locationData = {
|
|
1002
|
+
path: lodash_compact__WEBPACK_IMPORTED_MODULE_2___default()(loc.pathname.split('/')),
|
|
1003
|
+
hash: loc.hash,
|
|
1004
|
+
search: querystring__WEBPACK_IMPORTED_MODULE_4___default().parse(loc.search)
|
|
1005
|
+
};
|
|
1006
|
+
return _objectSpread({
|
|
1007
|
+
router: _objectSpread({}, locationData)
|
|
1008
|
+
}, data);
|
|
1009
|
+
}
|
|
1010
|
+
|
|
1011
|
+
function renderWithQuery(data, query, component) {
|
|
1012
|
+
if (typeof query === 'function') {
|
|
1013
|
+
if (query(data)) return component;
|
|
1014
|
+
return null;
|
|
1015
|
+
}
|
|
1016
|
+
|
|
1017
|
+
var q = new mingo__WEBPACK_IMPORTED_MODULE_3__.Query(query || {});
|
|
1018
|
+
if (q.test(data)) return component;
|
|
1019
|
+
return null;
|
|
1020
|
+
}
|
|
1021
|
+
|
|
1022
|
+
function RenderIfVisible(_ref) {
|
|
1023
|
+
_s();
|
|
1024
|
+
|
|
1025
|
+
var item = _ref.item,
|
|
1026
|
+
component = _ref.component;
|
|
1027
|
+
var loc = (0,react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useLocation)();
|
|
1028
|
+
|
|
1029
|
+
if (item.visible) {
|
|
1030
|
+
if (item.visible.selectorHook) {
|
|
1031
|
+
return /*#__PURE__*/(0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_8__.jsxDEV)(_ExecuteSelectorHook__WEBPACK_IMPORTED_MODULE_7__.ExecuteSelectorHook, {
|
|
1032
|
+
hook: item.visible.selectorHook,
|
|
1033
|
+
render: function render(data) {
|
|
1034
|
+
var _item$visible;
|
|
1035
|
+
|
|
1036
|
+
return renderWithQuery(mergeLocationData(loc, data), (_item$visible = item.visible) === null || _item$visible === void 0 ? void 0 : _item$visible.query, component);
|
|
1037
|
+
}
|
|
1038
|
+
}, void 0, false, {
|
|
1039
|
+
fileName: _jsxFileName,
|
|
1040
|
+
lineNumber: 47,
|
|
1041
|
+
columnNumber: 5
|
|
1042
|
+
}, this);
|
|
1043
|
+
}
|
|
1044
|
+
|
|
1045
|
+
return renderWithQuery(mergeLocationData(loc), item.visible.query, component);
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
return component;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
1051
|
+
_s(RenderIfVisible, "EuD9q2dZ34PfN/QO2OBhBzeMxmY=", false, function () {
|
|
1052
|
+
return [react_router_dom__WEBPACK_IMPORTED_MODULE_6__.useLocation];
|
|
1053
|
+
});
|
|
1054
|
+
|
|
1055
|
+
_c = RenderIfVisible;
|
|
1056
|
+
|
|
1057
|
+
var _c;
|
|
1058
|
+
|
|
1059
|
+
$RefreshReg$(_c, "RenderIfVisible");
|
|
1060
|
+
|
|
1061
|
+
/***/ }),
|
|
1062
|
+
|
|
880
1063
|
/***/ "./hooks/useMobileLayout.ts":
|
|
881
1064
|
/*!**********************************!*\
|
|
882
1065
|
!*** ./hooks/useMobileLayout.ts ***!
|
|
@@ -957,7 +1140,7 @@ var state = (0,_reduxjs_toolkit__WEBPACK_IMPORTED_MODULE_2__.createSlice)({
|
|
|
957
1140
|
}
|
|
958
1141
|
}
|
|
959
1142
|
});
|
|
960
|
-
var useLayoutState = (0,_imperium_state__WEBPACK_IMPORTED_MODULE_1__.
|
|
1143
|
+
var useLayoutState = (0,_imperium_state__WEBPACK_IMPORTED_MODULE_1__.createSliceHook)(state);
|
|
961
1144
|
var actions = state.actions;
|
|
962
1145
|
|
|
963
1146
|
|
|
@@ -1032,7 +1215,8 @@ function isCustomMenuItem(value) {
|
|
|
1032
1215
|
__webpack_require__.r(__webpack_exports__);
|
|
1033
1216
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1034
1217
|
/* harmony export */ "sortWeightedItems": () => (/* binding */ sortWeightedItems),
|
|
1035
|
-
/* harmony export */ "splitHorizontalItems": () => (/* binding */ splitHorizontalItems)
|
|
1218
|
+
/* harmony export */ "splitHorizontalItems": () => (/* binding */ splitHorizontalItems),
|
|
1219
|
+
/* harmony export */ "generateVisible": () => (/* binding */ generateVisible)
|
|
1036
1220
|
/* harmony export */ });
|
|
1037
1221
|
/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ "@babel/runtime/helpers/toConsumableArray");
|
|
1038
1222
|
/* harmony import */ var _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_0__);
|
|
@@ -1075,6 +1259,12 @@ function splitHorizontalItems(items) {
|
|
|
1075
1259
|
rightItems: []
|
|
1076
1260
|
});
|
|
1077
1261
|
}
|
|
1262
|
+
function generateVisible(visDefinition) {
|
|
1263
|
+
return {
|
|
1264
|
+
query: visDefinition.query,
|
|
1265
|
+
selectorHook: visDefinition.selectorHook
|
|
1266
|
+
};
|
|
1267
|
+
}
|
|
1078
1268
|
|
|
1079
1269
|
/***/ }),
|
|
1080
1270
|
|
|
@@ -1128,11 +1318,11 @@ function withLayout(client) {
|
|
|
1128
1318
|
var layoutModuleData = client.modules.reduce(function (memo, module) {
|
|
1129
1319
|
if ((0,_types__WEBPACK_IMPORTED_MODULE_6__.isImperiumLayoutClientModule)(module)) {
|
|
1130
1320
|
return {
|
|
1131
|
-
dataHooks: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.dataHooks), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.dataHooks || [])),
|
|
1132
|
-
menubar: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.menubar), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.menubar || [])),
|
|
1133
|
-
statusbar: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.statusbar), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.statusbar || [])),
|
|
1134
|
-
sidebar: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.sidebar), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.sidebar || [])),
|
|
1135
|
-
footer: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.footer), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.footer || []))
|
|
1321
|
+
dataHooks: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.dataHooks || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.dataHooks || [])),
|
|
1322
|
+
menubar: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.menubar || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.menubar || [])),
|
|
1323
|
+
statusbar: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.statusbar || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.statusbar || [])),
|
|
1324
|
+
sidebar: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.sidebar || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.sidebar || [])),
|
|
1325
|
+
footer: [].concat(_babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(memo.footer || []), _babel_runtime_helpers_toConsumableArray__WEBPACK_IMPORTED_MODULE_1___default()(module.layout.footer || []))
|
|
1136
1326
|
};
|
|
1137
1327
|
}
|
|
1138
1328
|
|
|
@@ -1186,20 +1376,45 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1186
1376
|
/* harmony export */ });
|
|
1187
1377
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
|
|
1188
1378
|
/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
|
|
1189
|
-
/* harmony import */ var
|
|
1190
|
-
|
|
1191
|
-
|
|
1379
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js */ "../../../node_modules/style-loader/dist/runtime/styleDomAPI.js");
|
|
1380
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1__);
|
|
1381
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertBySelector.js */ "../../../node_modules/style-loader/dist/runtime/insertBySelector.js");
|
|
1382
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2__);
|
|
1383
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js */ "../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js");
|
|
1384
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3__);
|
|
1385
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js */ "../../../node_modules/style-loader/dist/runtime/insertStyleElement.js");
|
|
1386
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4__);
|
|
1387
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js */ "../../../node_modules/style-loader/dist/runtime/styleTagTransform.js");
|
|
1388
|
+
/* harmony import */ var _node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5__);
|
|
1389
|
+
/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./styles.css */ "../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[2].use[2]!./components/styles.css");
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
|
|
1393
|
+
|
|
1394
|
+
|
|
1395
|
+
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
|
|
1192
1400
|
|
|
1193
1401
|
var options = {};
|
|
1194
1402
|
|
|
1195
|
-
options.
|
|
1196
|
-
options.
|
|
1403
|
+
options.styleTagTransform = (_node_modules_style_loader_dist_runtime_styleTagTransform_js__WEBPACK_IMPORTED_MODULE_5___default());
|
|
1404
|
+
options.setAttributes = (_node_modules_style_loader_dist_runtime_setAttributesWithoutAttributes_js__WEBPACK_IMPORTED_MODULE_3___default());
|
|
1405
|
+
|
|
1406
|
+
options.insert = _node_modules_style_loader_dist_runtime_insertBySelector_js__WEBPACK_IMPORTED_MODULE_2___default().bind(null, "head");
|
|
1407
|
+
|
|
1408
|
+
options.domAPI = (_node_modules_style_loader_dist_runtime_styleDomAPI_js__WEBPACK_IMPORTED_MODULE_1___default());
|
|
1409
|
+
options.insertStyleElement = (_node_modules_style_loader_dist_runtime_insertStyleElement_js__WEBPACK_IMPORTED_MODULE_4___default());
|
|
1410
|
+
|
|
1411
|
+
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"], options);
|
|
1412
|
+
|
|
1197
1413
|
|
|
1198
|
-
var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_1__.default, options);
|
|
1199
1414
|
|
|
1200
1415
|
|
|
1416
|
+
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"] && _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals ? _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_6__["default"].locals : undefined);
|
|
1201
1417
|
|
|
1202
|
-
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_2_use_2_styles_css__WEBPACK_IMPORTED_MODULE_1__.default.locals || {});
|
|
1203
1418
|
|
|
1204
1419
|
/***/ }),
|
|
1205
1420
|
|
|
@@ -1207,57 +1422,17 @@ var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js
|
|
|
1207
1422
|
/*!***********************************************************************************!*\
|
|
1208
1423
|
!*** ../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
|
|
1209
1424
|
\***********************************************************************************/
|
|
1210
|
-
/***/ ((module
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
var isOldIE = function isOldIE() {
|
|
1215
|
-
var memo;
|
|
1216
|
-
return function memorize() {
|
|
1217
|
-
if (typeof memo === 'undefined') {
|
|
1218
|
-
// Test for IE <= 9 as proposed by Browserhacks
|
|
1219
|
-
// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
|
|
1220
|
-
// Tests for existence of standard globals is to allow style-loader
|
|
1221
|
-
// to operate correctly into non-standard environments
|
|
1222
|
-
// @see https://github.com/webpack-contrib/style-loader/issues/177
|
|
1223
|
-
memo = Boolean(window && document && document.all && !window.atob);
|
|
1224
|
-
}
|
|
1225
|
-
|
|
1226
|
-
return memo;
|
|
1227
|
-
};
|
|
1228
|
-
}();
|
|
1229
|
-
|
|
1230
|
-
var getTarget = function getTarget() {
|
|
1231
|
-
var memo = {};
|
|
1232
|
-
return function memorize(target) {
|
|
1233
|
-
if (typeof memo[target] === 'undefined') {
|
|
1234
|
-
var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
|
|
1235
|
-
|
|
1236
|
-
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
|
|
1237
|
-
try {
|
|
1238
|
-
// This will throw an exception if access to iframe is blocked
|
|
1239
|
-
// due to cross-origin restrictions
|
|
1240
|
-
styleTarget = styleTarget.contentDocument.head;
|
|
1241
|
-
} catch (e) {
|
|
1242
|
-
// istanbul ignore next
|
|
1243
|
-
styleTarget = null;
|
|
1244
|
-
}
|
|
1245
|
-
}
|
|
1425
|
+
/***/ ((module) => {
|
|
1246
1426
|
|
|
1247
|
-
memo[target] = styleTarget;
|
|
1248
|
-
}
|
|
1249
1427
|
|
|
1250
|
-
return memo[target];
|
|
1251
|
-
};
|
|
1252
|
-
}();
|
|
1253
1428
|
|
|
1254
|
-
var
|
|
1429
|
+
var stylesInDOM = [];
|
|
1255
1430
|
|
|
1256
1431
|
function getIndexByIdentifier(identifier) {
|
|
1257
1432
|
var result = -1;
|
|
1258
1433
|
|
|
1259
|
-
for (var i = 0; i <
|
|
1260
|
-
if (
|
|
1434
|
+
for (var i = 0; i < stylesInDOM.length; i++) {
|
|
1435
|
+
if (stylesInDOM[i].identifier === identifier) {
|
|
1261
1436
|
result = i;
|
|
1262
1437
|
break;
|
|
1263
1438
|
}
|
|
@@ -1276,20 +1451,24 @@ function modulesToDom(list, options) {
|
|
|
1276
1451
|
var count = idCountMap[id] || 0;
|
|
1277
1452
|
var identifier = "".concat(id, " ").concat(count);
|
|
1278
1453
|
idCountMap[id] = count + 1;
|
|
1279
|
-
var
|
|
1454
|
+
var indexByIdentifier = getIndexByIdentifier(identifier);
|
|
1280
1455
|
var obj = {
|
|
1281
1456
|
css: item[1],
|
|
1282
1457
|
media: item[2],
|
|
1283
|
-
sourceMap: item[3]
|
|
1458
|
+
sourceMap: item[3],
|
|
1459
|
+
supports: item[4],
|
|
1460
|
+
layer: item[5]
|
|
1284
1461
|
};
|
|
1285
1462
|
|
|
1286
|
-
if (
|
|
1287
|
-
|
|
1288
|
-
|
|
1463
|
+
if (indexByIdentifier !== -1) {
|
|
1464
|
+
stylesInDOM[indexByIdentifier].references++;
|
|
1465
|
+
stylesInDOM[indexByIdentifier].updater(obj);
|
|
1289
1466
|
} else {
|
|
1290
|
-
|
|
1467
|
+
var updater = addElementStyle(obj, options);
|
|
1468
|
+
options.byIndex = i;
|
|
1469
|
+
stylesInDOM.splice(i, 0, {
|
|
1291
1470
|
identifier: identifier,
|
|
1292
|
-
updater:
|
|
1471
|
+
updater: updater,
|
|
1293
1472
|
references: 1
|
|
1294
1473
|
});
|
|
1295
1474
|
}
|
|
@@ -1300,184 +1479,248 @@ function modulesToDom(list, options) {
|
|
|
1300
1479
|
return identifiers;
|
|
1301
1480
|
}
|
|
1302
1481
|
|
|
1303
|
-
function
|
|
1304
|
-
var
|
|
1305
|
-
|
|
1482
|
+
function addElementStyle(obj, options) {
|
|
1483
|
+
var api = options.domAPI(options);
|
|
1484
|
+
api.update(obj);
|
|
1306
1485
|
|
|
1307
|
-
|
|
1308
|
-
|
|
1486
|
+
var updater = function updater(newObj) {
|
|
1487
|
+
if (newObj) {
|
|
1488
|
+
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
|
|
1489
|
+
return;
|
|
1490
|
+
}
|
|
1309
1491
|
|
|
1310
|
-
|
|
1311
|
-
|
|
1492
|
+
api.update(obj = newObj);
|
|
1493
|
+
} else {
|
|
1494
|
+
api.remove();
|
|
1312
1495
|
}
|
|
1313
|
-
}
|
|
1496
|
+
};
|
|
1314
1497
|
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1498
|
+
return updater;
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
module.exports = function (list, options) {
|
|
1502
|
+
options = options || {};
|
|
1503
|
+
list = list || [];
|
|
1504
|
+
var lastIdentifiers = modulesToDom(list, options);
|
|
1505
|
+
return function update(newList) {
|
|
1506
|
+
newList = newList || [];
|
|
1507
|
+
|
|
1508
|
+
for (var i = 0; i < lastIdentifiers.length; i++) {
|
|
1509
|
+
var identifier = lastIdentifiers[i];
|
|
1510
|
+
var index = getIndexByIdentifier(identifier);
|
|
1511
|
+
stylesInDOM[index].references--;
|
|
1512
|
+
}
|
|
1513
|
+
|
|
1514
|
+
var newLastIdentifiers = modulesToDom(newList, options);
|
|
1515
|
+
|
|
1516
|
+
for (var _i = 0; _i < lastIdentifiers.length; _i++) {
|
|
1517
|
+
var _identifier = lastIdentifiers[_i];
|
|
1518
|
+
|
|
1519
|
+
var _index = getIndexByIdentifier(_identifier);
|
|
1520
|
+
|
|
1521
|
+
if (stylesInDOM[_index].references === 0) {
|
|
1522
|
+
stylesInDOM[_index].updater();
|
|
1523
|
+
|
|
1524
|
+
stylesInDOM.splice(_index, 1);
|
|
1525
|
+
}
|
|
1526
|
+
}
|
|
1527
|
+
|
|
1528
|
+
lastIdentifiers = newLastIdentifiers;
|
|
1529
|
+
};
|
|
1530
|
+
};
|
|
1531
|
+
|
|
1532
|
+
/***/ }),
|
|
1533
|
+
|
|
1534
|
+
/***/ "../../../node_modules/style-loader/dist/runtime/insertBySelector.js":
|
|
1535
|
+
/*!***************************************************************************!*\
|
|
1536
|
+
!*** ../../../node_modules/style-loader/dist/runtime/insertBySelector.js ***!
|
|
1537
|
+
\***************************************************************************/
|
|
1538
|
+
/***/ ((module) => {
|
|
1318
1539
|
|
|
1319
|
-
if (typeof options.insert === 'function') {
|
|
1320
|
-
options.insert(style);
|
|
1321
|
-
} else {
|
|
1322
|
-
var target = getTarget(options.insert || 'head');
|
|
1323
1540
|
|
|
1324
|
-
|
|
1325
|
-
|
|
1541
|
+
|
|
1542
|
+
var memo = {};
|
|
1543
|
+
/* istanbul ignore next */
|
|
1544
|
+
|
|
1545
|
+
function getTarget(target) {
|
|
1546
|
+
if (typeof memo[target] === "undefined") {
|
|
1547
|
+
var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
|
|
1548
|
+
|
|
1549
|
+
if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
|
|
1550
|
+
try {
|
|
1551
|
+
// This will throw an exception if access to iframe is blocked
|
|
1552
|
+
// due to cross-origin restrictions
|
|
1553
|
+
styleTarget = styleTarget.contentDocument.head;
|
|
1554
|
+
} catch (e) {
|
|
1555
|
+
// istanbul ignore next
|
|
1556
|
+
styleTarget = null;
|
|
1557
|
+
}
|
|
1326
1558
|
}
|
|
1327
1559
|
|
|
1328
|
-
target
|
|
1560
|
+
memo[target] = styleTarget;
|
|
1329
1561
|
}
|
|
1330
1562
|
|
|
1331
|
-
return
|
|
1563
|
+
return memo[target];
|
|
1332
1564
|
}
|
|
1565
|
+
/* istanbul ignore next */
|
|
1333
1566
|
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1567
|
+
|
|
1568
|
+
function insertBySelector(insert, style) {
|
|
1569
|
+
var target = getTarget(insert);
|
|
1570
|
+
|
|
1571
|
+
if (!target) {
|
|
1572
|
+
throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
|
|
1338
1573
|
}
|
|
1339
1574
|
|
|
1340
|
-
|
|
1575
|
+
target.appendChild(style);
|
|
1341
1576
|
}
|
|
1577
|
+
|
|
1578
|
+
module.exports = insertBySelector;
|
|
1579
|
+
|
|
1580
|
+
/***/ }),
|
|
1581
|
+
|
|
1582
|
+
/***/ "../../../node_modules/style-loader/dist/runtime/insertStyleElement.js":
|
|
1583
|
+
/*!*****************************************************************************!*\
|
|
1584
|
+
!*** ../../../node_modules/style-loader/dist/runtime/insertStyleElement.js ***!
|
|
1585
|
+
\*****************************************************************************/
|
|
1586
|
+
/***/ ((module) => {
|
|
1587
|
+
|
|
1588
|
+
|
|
1589
|
+
|
|
1342
1590
|
/* istanbul ignore next */
|
|
1591
|
+
function insertStyleElement(options) {
|
|
1592
|
+
var element = document.createElement("style");
|
|
1593
|
+
options.setAttributes(element, options.attributes);
|
|
1594
|
+
options.insert(element, options.options);
|
|
1595
|
+
return element;
|
|
1596
|
+
}
|
|
1343
1597
|
|
|
1598
|
+
module.exports = insertStyleElement;
|
|
1344
1599
|
|
|
1345
|
-
|
|
1346
|
-
var textStore = [];
|
|
1347
|
-
return function replace(index, replacement) {
|
|
1348
|
-
textStore[index] = replacement;
|
|
1349
|
-
return textStore.filter(Boolean).join('\n');
|
|
1350
|
-
};
|
|
1351
|
-
}();
|
|
1600
|
+
/***/ }),
|
|
1352
1601
|
|
|
1353
|
-
|
|
1354
|
-
|
|
1602
|
+
/***/ "../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":
|
|
1603
|
+
/*!*****************************************************************************************!*\
|
|
1604
|
+
!*** ../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js ***!
|
|
1605
|
+
\*****************************************************************************************/
|
|
1606
|
+
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
|
|
1355
1607
|
|
|
1356
|
-
/* istanbul ignore if */
|
|
1357
1608
|
|
|
1358
|
-
if (style.styleSheet) {
|
|
1359
|
-
style.styleSheet.cssText = replaceText(index, css);
|
|
1360
|
-
} else {
|
|
1361
|
-
var cssNode = document.createTextNode(css);
|
|
1362
|
-
var childNodes = style.childNodes;
|
|
1363
1609
|
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
|
|
1610
|
+
/* istanbul ignore next */
|
|
1611
|
+
function setAttributesWithoutAttributes(styleElement) {
|
|
1612
|
+
var nonce = true ? __webpack_require__.nc : 0;
|
|
1367
1613
|
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
} else {
|
|
1371
|
-
style.appendChild(cssNode);
|
|
1372
|
-
}
|
|
1614
|
+
if (nonce) {
|
|
1615
|
+
styleElement.setAttribute("nonce", nonce);
|
|
1373
1616
|
}
|
|
1374
1617
|
}
|
|
1375
1618
|
|
|
1376
|
-
|
|
1377
|
-
var css = obj.css;
|
|
1378
|
-
var media = obj.media;
|
|
1379
|
-
var sourceMap = obj.sourceMap;
|
|
1619
|
+
module.exports = setAttributesWithoutAttributes;
|
|
1380
1620
|
|
|
1381
|
-
|
|
1382
|
-
style.setAttribute('media', media);
|
|
1383
|
-
} else {
|
|
1384
|
-
style.removeAttribute('media');
|
|
1385
|
-
}
|
|
1621
|
+
/***/ }),
|
|
1386
1622
|
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1623
|
+
/***/ "../../../node_modules/style-loader/dist/runtime/styleDomAPI.js":
|
|
1624
|
+
/*!**********************************************************************!*\
|
|
1625
|
+
!*** ../../../node_modules/style-loader/dist/runtime/styleDomAPI.js ***!
|
|
1626
|
+
\**********************************************************************/
|
|
1627
|
+
/***/ ((module) => {
|
|
1390
1628
|
|
|
1391
|
-
/* istanbul ignore if */
|
|
1392
1629
|
|
|
1393
1630
|
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
while (style.firstChild) {
|
|
1398
|
-
style.removeChild(style.firstChild);
|
|
1399
|
-
}
|
|
1631
|
+
/* istanbul ignore next */
|
|
1632
|
+
function apply(styleElement, options, obj) {
|
|
1633
|
+
var css = "";
|
|
1400
1634
|
|
|
1401
|
-
|
|
1635
|
+
if (obj.supports) {
|
|
1636
|
+
css += "@supports (".concat(obj.supports, ") {");
|
|
1402
1637
|
}
|
|
1403
|
-
}
|
|
1404
1638
|
|
|
1405
|
-
|
|
1406
|
-
|
|
1639
|
+
if (obj.media) {
|
|
1640
|
+
css += "@media ".concat(obj.media, " {");
|
|
1641
|
+
}
|
|
1407
1642
|
|
|
1408
|
-
|
|
1409
|
-
var style;
|
|
1410
|
-
var update;
|
|
1411
|
-
var remove;
|
|
1643
|
+
var needLayer = typeof obj.layer !== "undefined";
|
|
1412
1644
|
|
|
1413
|
-
if (
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
update = applyToSingletonTag.bind(null, style, styleIndex, false);
|
|
1417
|
-
remove = applyToSingletonTag.bind(null, style, styleIndex, true);
|
|
1418
|
-
} else {
|
|
1419
|
-
style = insertStyleElement(options);
|
|
1420
|
-
update = applyToTag.bind(null, style, options);
|
|
1645
|
+
if (needLayer) {
|
|
1646
|
+
css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
|
|
1647
|
+
}
|
|
1421
1648
|
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1649
|
+
css += obj.css;
|
|
1650
|
+
|
|
1651
|
+
if (needLayer) {
|
|
1652
|
+
css += "}";
|
|
1425
1653
|
}
|
|
1426
1654
|
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
|
|
1431
|
-
return;
|
|
1432
|
-
}
|
|
1655
|
+
if (obj.media) {
|
|
1656
|
+
css += "}";
|
|
1657
|
+
}
|
|
1433
1658
|
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
}
|
|
1438
|
-
};
|
|
1439
|
-
}
|
|
1659
|
+
if (obj.supports) {
|
|
1660
|
+
css += "}";
|
|
1661
|
+
}
|
|
1440
1662
|
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1663
|
+
var sourceMap = obj.sourceMap;
|
|
1664
|
+
|
|
1665
|
+
if (sourceMap && typeof btoa !== "undefined") {
|
|
1666
|
+
css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
|
|
1667
|
+
} // For old IE
|
|
1444
1668
|
|
|
1445
|
-
|
|
1446
|
-
|
|
1669
|
+
/* istanbul ignore if */
|
|
1670
|
+
|
|
1671
|
+
|
|
1672
|
+
options.styleTagTransform(css, styleElement, options.options);
|
|
1673
|
+
}
|
|
1674
|
+
|
|
1675
|
+
function removeStyleElement(styleElement) {
|
|
1676
|
+
// istanbul ignore if
|
|
1677
|
+
if (styleElement.parentNode === null) {
|
|
1678
|
+
return false;
|
|
1447
1679
|
}
|
|
1448
1680
|
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
newList = newList || [];
|
|
1681
|
+
styleElement.parentNode.removeChild(styleElement);
|
|
1682
|
+
}
|
|
1683
|
+
/* istanbul ignore next */
|
|
1453
1684
|
|
|
1454
|
-
if (Object.prototype.toString.call(newList) !== '[object Array]') {
|
|
1455
|
-
return;
|
|
1456
|
-
}
|
|
1457
1685
|
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1686
|
+
function domAPI(options) {
|
|
1687
|
+
var styleElement = options.insertStyleElement(options);
|
|
1688
|
+
return {
|
|
1689
|
+
update: function update(obj) {
|
|
1690
|
+
apply(styleElement, options, obj);
|
|
1691
|
+
},
|
|
1692
|
+
remove: function remove() {
|
|
1693
|
+
removeStyleElement(styleElement);
|
|
1462
1694
|
}
|
|
1695
|
+
};
|
|
1696
|
+
}
|
|
1463
1697
|
|
|
1464
|
-
|
|
1698
|
+
module.exports = domAPI;
|
|
1465
1699
|
|
|
1466
|
-
|
|
1467
|
-
var _identifier = lastIdentifiers[_i];
|
|
1700
|
+
/***/ }),
|
|
1468
1701
|
|
|
1469
|
-
|
|
1702
|
+
/***/ "../../../node_modules/style-loader/dist/runtime/styleTagTransform.js":
|
|
1703
|
+
/*!****************************************************************************!*\
|
|
1704
|
+
!*** ../../../node_modules/style-loader/dist/runtime/styleTagTransform.js ***!
|
|
1705
|
+
\****************************************************************************/
|
|
1706
|
+
/***/ ((module) => {
|
|
1470
1707
|
|
|
1471
|
-
if (stylesInDom[_index].references === 0) {
|
|
1472
|
-
stylesInDom[_index].updater();
|
|
1473
1708
|
|
|
1474
|
-
|
|
1475
|
-
|
|
1709
|
+
|
|
1710
|
+
/* istanbul ignore next */
|
|
1711
|
+
function styleTagTransform(css, styleElement) {
|
|
1712
|
+
if (styleElement.styleSheet) {
|
|
1713
|
+
styleElement.styleSheet.cssText = css;
|
|
1714
|
+
} else {
|
|
1715
|
+
while (styleElement.firstChild) {
|
|
1716
|
+
styleElement.removeChild(styleElement.firstChild);
|
|
1476
1717
|
}
|
|
1477
1718
|
|
|
1478
|
-
|
|
1479
|
-
}
|
|
1480
|
-
}
|
|
1719
|
+
styleElement.appendChild(document.createTextNode(css));
|
|
1720
|
+
}
|
|
1721
|
+
}
|
|
1722
|
+
|
|
1723
|
+
module.exports = styleTagTransform;
|
|
1481
1724
|
|
|
1482
1725
|
/***/ }),
|
|
1483
1726
|
|
|
@@ -1487,7 +1730,7 @@ module.exports = function (list, options) {
|
|
|
1487
1730
|
\********************************************************/
|
|
1488
1731
|
/***/ ((module) => {
|
|
1489
1732
|
|
|
1490
|
-
module.exports = require("@babel/runtime/helpers/defineProperty")
|
|
1733
|
+
module.exports = require("@babel/runtime/helpers/defineProperty");
|
|
1491
1734
|
|
|
1492
1735
|
/***/ }),
|
|
1493
1736
|
|
|
@@ -1497,7 +1740,7 @@ module.exports = require("@babel/runtime/helpers/defineProperty");;
|
|
|
1497
1740
|
\*****************************************************************/
|
|
1498
1741
|
/***/ ((module) => {
|
|
1499
1742
|
|
|
1500
|
-
module.exports = require("@babel/runtime/helpers/objectWithoutProperties")
|
|
1743
|
+
module.exports = require("@babel/runtime/helpers/objectWithoutProperties");
|
|
1501
1744
|
|
|
1502
1745
|
/***/ }),
|
|
1503
1746
|
|
|
@@ -1507,7 +1750,7 @@ module.exports = require("@babel/runtime/helpers/objectWithoutProperties");;
|
|
|
1507
1750
|
\*******************************************************/
|
|
1508
1751
|
/***/ ((module) => {
|
|
1509
1752
|
|
|
1510
|
-
module.exports = require("@babel/runtime/helpers/slicedToArray")
|
|
1753
|
+
module.exports = require("@babel/runtime/helpers/slicedToArray");
|
|
1511
1754
|
|
|
1512
1755
|
/***/ }),
|
|
1513
1756
|
|
|
@@ -1517,7 +1760,7 @@ module.exports = require("@babel/runtime/helpers/slicedToArray");;
|
|
|
1517
1760
|
\***********************************************************/
|
|
1518
1761
|
/***/ ((module) => {
|
|
1519
1762
|
|
|
1520
|
-
module.exports = require("@babel/runtime/helpers/toConsumableArray")
|
|
1763
|
+
module.exports = require("@babel/runtime/helpers/toConsumableArray");
|
|
1521
1764
|
|
|
1522
1765
|
/***/ }),
|
|
1523
1766
|
|
|
@@ -1527,7 +1770,7 @@ module.exports = require("@babel/runtime/helpers/toConsumableArray");;
|
|
|
1527
1770
|
\**********************************/
|
|
1528
1771
|
/***/ ((module) => {
|
|
1529
1772
|
|
|
1530
|
-
module.exports = require("@imperium/state")
|
|
1773
|
+
module.exports = require("@imperium/state");
|
|
1531
1774
|
|
|
1532
1775
|
/***/ }),
|
|
1533
1776
|
|
|
@@ -1537,7 +1780,7 @@ module.exports = require("@imperium/state");;
|
|
|
1537
1780
|
\***********************************/
|
|
1538
1781
|
/***/ ((module) => {
|
|
1539
1782
|
|
|
1540
|
-
module.exports = require("@reduxjs/toolkit")
|
|
1783
|
+
module.exports = require("@reduxjs/toolkit");
|
|
1541
1784
|
|
|
1542
1785
|
/***/ }),
|
|
1543
1786
|
|
|
@@ -1547,7 +1790,7 @@ module.exports = require("@reduxjs/toolkit");;
|
|
|
1547
1790
|
\************************/
|
|
1548
1791
|
/***/ ((module) => {
|
|
1549
1792
|
|
|
1550
|
-
module.exports = require("debug")
|
|
1793
|
+
module.exports = require("debug");
|
|
1551
1794
|
|
|
1552
1795
|
/***/ }),
|
|
1553
1796
|
|
|
@@ -1557,7 +1800,7 @@ module.exports = require("debug");;
|
|
|
1557
1800
|
\*********************************/
|
|
1558
1801
|
/***/ ((module) => {
|
|
1559
1802
|
|
|
1560
|
-
module.exports = require("lodash/compact")
|
|
1803
|
+
module.exports = require("lodash/compact");
|
|
1561
1804
|
|
|
1562
1805
|
/***/ }),
|
|
1563
1806
|
|
|
@@ -1567,7 +1810,7 @@ module.exports = require("lodash/compact");;
|
|
|
1567
1810
|
\*********************************/
|
|
1568
1811
|
/***/ ((module) => {
|
|
1569
1812
|
|
|
1570
|
-
module.exports = require("lodash/memoize")
|
|
1813
|
+
module.exports = require("lodash/memoize");
|
|
1571
1814
|
|
|
1572
1815
|
/***/ }),
|
|
1573
1816
|
|
|
@@ -1577,17 +1820,27 @@ module.exports = require("lodash/memoize");;
|
|
|
1577
1820
|
\********************************/
|
|
1578
1821
|
/***/ ((module) => {
|
|
1579
1822
|
|
|
1580
|
-
module.exports = require("lodash/sortBy")
|
|
1823
|
+
module.exports = require("lodash/sortBy");
|
|
1581
1824
|
|
|
1582
1825
|
/***/ }),
|
|
1583
1826
|
|
|
1584
|
-
/***/ "
|
|
1585
|
-
|
|
1586
|
-
!*** external "
|
|
1587
|
-
|
|
1827
|
+
/***/ "mingo":
|
|
1828
|
+
/*!************************!*\
|
|
1829
|
+
!*** external "mingo" ***!
|
|
1830
|
+
\************************/
|
|
1588
1831
|
/***/ ((module) => {
|
|
1589
1832
|
|
|
1590
|
-
module.exports = require("
|
|
1833
|
+
module.exports = require("mingo");
|
|
1834
|
+
|
|
1835
|
+
/***/ }),
|
|
1836
|
+
|
|
1837
|
+
/***/ "querystring":
|
|
1838
|
+
/*!******************************!*\
|
|
1839
|
+
!*** external "querystring" ***!
|
|
1840
|
+
\******************************/
|
|
1841
|
+
/***/ ((module) => {
|
|
1842
|
+
|
|
1843
|
+
module.exports = require("querystring");
|
|
1591
1844
|
|
|
1592
1845
|
/***/ }),
|
|
1593
1846
|
|
|
@@ -1597,7 +1850,7 @@ module.exports = require("query-string");;
|
|
|
1597
1850
|
\************************/
|
|
1598
1851
|
/***/ ((module) => {
|
|
1599
1852
|
|
|
1600
|
-
module.exports = require("react")
|
|
1853
|
+
module.exports = require("react");
|
|
1601
1854
|
|
|
1602
1855
|
/***/ }),
|
|
1603
1856
|
|
|
@@ -1607,7 +1860,7 @@ module.exports = require("react");;
|
|
|
1607
1860
|
\******************************/
|
|
1608
1861
|
/***/ ((module) => {
|
|
1609
1862
|
|
|
1610
|
-
module.exports = require("react-redux")
|
|
1863
|
+
module.exports = require("react-redux");
|
|
1611
1864
|
|
|
1612
1865
|
/***/ }),
|
|
1613
1866
|
|
|
@@ -1617,7 +1870,7 @@ module.exports = require("react-redux");;
|
|
|
1617
1870
|
\***********************************/
|
|
1618
1871
|
/***/ ((module) => {
|
|
1619
1872
|
|
|
1620
|
-
module.exports = require("react-responsive")
|
|
1873
|
+
module.exports = require("react-responsive");
|
|
1621
1874
|
|
|
1622
1875
|
/***/ }),
|
|
1623
1876
|
|
|
@@ -1627,7 +1880,7 @@ module.exports = require("react-responsive");;
|
|
|
1627
1880
|
\***********************************/
|
|
1628
1881
|
/***/ ((module) => {
|
|
1629
1882
|
|
|
1630
|
-
module.exports = require("react-router-dom")
|
|
1883
|
+
module.exports = require("react-router-dom");
|
|
1631
1884
|
|
|
1632
1885
|
/***/ }),
|
|
1633
1886
|
|
|
@@ -1637,7 +1890,7 @@ module.exports = require("react-router-dom");;
|
|
|
1637
1890
|
\****************************************/
|
|
1638
1891
|
/***/ ((module) => {
|
|
1639
1892
|
|
|
1640
|
-
module.exports = require("react/jsx-dev-runtime")
|
|
1893
|
+
module.exports = require("react/jsx-dev-runtime");
|
|
1641
1894
|
|
|
1642
1895
|
/***/ }),
|
|
1643
1896
|
|
|
@@ -1647,7 +1900,7 @@ module.exports = require("react/jsx-dev-runtime");;
|
|
|
1647
1900
|
\************************************/
|
|
1648
1901
|
/***/ ((module) => {
|
|
1649
1902
|
|
|
1650
|
-
module.exports = require("semantic-ui-react")
|
|
1903
|
+
module.exports = require("semantic-ui-react");
|
|
1651
1904
|
|
|
1652
1905
|
/***/ })
|
|
1653
1906
|
|
|
@@ -1729,11 +1982,13 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1729
1982
|
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
1730
1983
|
/* harmony export */ "layoutClientModule": () => (/* binding */ layoutClientModule),
|
|
1731
1984
|
/* harmony export */ "useLayoutState": () => (/* reexport safe */ _state__WEBPACK_IMPORTED_MODULE_1__.useLayoutState),
|
|
1732
|
-
/* harmony export */ "layoutActions": () => (/* reexport safe */ _state__WEBPACK_IMPORTED_MODULE_1__.actions)
|
|
1985
|
+
/* harmony export */ "layoutActions": () => (/* reexport safe */ _state__WEBPACK_IMPORTED_MODULE_1__.actions),
|
|
1986
|
+
/* harmony export */ "generateVisible": () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.generateVisible)
|
|
1733
1987
|
/* harmony export */ });
|
|
1734
1988
|
/* harmony import */ var _hooks_useMobileLayout__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hooks/useMobileLayout */ "./hooks/useMobileLayout.ts");
|
|
1735
1989
|
/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./state */ "./state.ts");
|
|
1736
1990
|
/* harmony import */ var _withLayout__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./withLayout */ "./withLayout.tsx");
|
|
1991
|
+
/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./utils.ts");
|
|
1737
1992
|
|
|
1738
1993
|
|
|
1739
1994
|
|
|
@@ -1749,9 +2004,10 @@ function layoutClientModule() {
|
|
|
1749
2004
|
};
|
|
1750
2005
|
}
|
|
1751
2006
|
|
|
2007
|
+
|
|
1752
2008
|
})();
|
|
1753
2009
|
|
|
1754
2010
|
module.exports = __webpack_exports__;
|
|
1755
2011
|
/******/ })()
|
|
1756
2012
|
;
|
|
1757
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9jb21wb25lbnRzL3N0eWxlcy5jc3MiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9jc3NXaXRoTWFwcGluZ1RvU3RyaW5nLmpzIiwid2VicGFjazovLy8uL2NvbXBvbmVudHMvRGF0YUhvb2tzLnRzeCIsIndlYnBhY2s6Ly8vLi9jb21wb25lbnRzL0Ryb3Bkb3duSXRlbU1lbnUudHN4Iiwid2VicGFjazovLy8uL2NvbXBvbmVudHMvRXhlY3V0ZURhdGFIb29rLnRzeCIsIndlYnBhY2s6Ly8vLi9jb21wb25lbnRzL0l0ZW1CYXIudHN4Iiwid2VicGFjazovLy8uL2NvbXBvbmVudHMvSXRlbUJhckl0ZW0udHN4Iiwid2VicGFjazovLy8uL2NvbXBvbmVudHMvTGF5b3V0LnRzeCIsIndlYnBhY2s6Ly8vLi9jb21wb25lbnRzL01lbnVJdGVtTWVudS50c3giLCJ3ZWJwYWNrOi8vLy4vY29tcG9uZW50cy9SZW5kZXJDb21wb25lbnQudHN4Iiwid2VicGFjazovLy8uL2hvb2tzL3VzZU1vYmlsZUxheW91dC50cyIsIndlYnBhY2s6Ly8vLi9zdGF0ZS50cyIsIndlYnBhY2s6Ly8vLi90eXBlcy50cyIsIndlYnBhY2s6Ly8vLi91dGlscy50cyIsIndlYnBhY2s6Ly8vLi93aXRoTGF5b3V0LnRzeCIsIndlYnBhY2s6Ly8vLi9jb21wb25lbnRzL3N0eWxlcy5jc3M/MDVlOCIsIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkBpbXBlcml1bS9zdGF0ZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJkZWJ1Z1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcImxvZGFzaC9jb21wYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwibG9kYXNoL21lbW9pemVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJsb2Rhc2gvc29ydEJ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicXVlcnktc3RyaW5nXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInJlYWN0LXJlc3BvbnNpdmVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZWFjdC1yb3V0ZXItZG9tXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3QvanN4LWRldi1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwic2VtYW50aWMtdWktcmVhY3RcIiIsIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vLy4vaW5kZXgudHMiXSwibmFtZXMiOlsiRGF0YUhvb2tzIiwiZGF0YUhvb2tzIiwibWFwIiwiaG9vayIsImluZGV4IiwiRHJvcGRvd25JdGVtTWVudSIsIml0ZW0iLCJjaGlsZHJlbiIsInZlcnRpY2FsIiwidXNlU3RhdGUiLCJvcGVuIiwic2V0T3BlbiIsInN0eWxlcyIsImV2Iiwic3RvcFByb3BhZ2F0aW9uIiwidGV4dCIsIkV4ZWN1dGVEYXRhSG9vayIsImRhdGFIb29rIiwiZCIsImRlYnVnIiwibWFwSXRlbXMiLCJuYW1lIiwiaXRlbXMiLCJwcm9wcyIsImlzQ3VzdG9tTWVudUl0ZW0iLCJyZW5kZXIiLCJJdGVtQmFyIiwicmVzdCIsImltcyIsInNwbGl0SG9yaXpvbnRhbEl0ZW1zIiwibGVmdCIsInNvcnRXZWlnaHRlZEl0ZW1zIiwibGVmdEl0ZW1zIiwicmlnaHRNYXBwZWRJdGVtcyIsInJpZ2h0SXRlbXMiLCJyaWdodCIsImxlbmd0aCIsIkl0ZW1CYXJJdGVtIiwiYXMiLCJhY3RpdmUiLCJ1c2VSb3V0ZU1hdGNoIiwiaXNEcm9wZG93bk1lbnVJdGVtIiwiaXNNZW51TWVudUl0ZW0iLCJ0byIsImljb24iLCJzZWxlY3RlZFN0YXRlIiwidmlzaWJsZSIsInNlbGVjdG9ySG9vayIsImxvYyIsInVzZUxvY2F0aW9uIiwiaXNWaXNpYmxlIiwidXNlTWVtbyIsImNvbXBhcmVPYmoiLCJsb2NhdGlvbiIsInBhdGgiLCJjb21wYWN0IiwicGF0aG5hbWUiLCJzcGxpdCIsImhhc2giLCJzZWFyY2giLCJxdWVyeVN0cmluZyIsInF1ZXJ5IiwidGVzdCIsImRyb3Bkb3duIiwidiIsIkRyb3Bkb3duIiwiSXRlbSIsIm1lbnUiLCJsaW5rUGFyYW1zIiwiTGluayIsIm1lbnVQYXJhbXMiLCJsaW5rIiwiSXRlbVgiLCJNZW51IiwiTGF5b3V0IiwiZm9vdGVyIiwibWVudWJhciIsInN0YXR1c2JhciIsInNpZGViYXIiLCJ1c2VMYXlvdXRTdGF0ZSIsImlzTW9iaWxlIiwibWVudU9wZW4iLCJzZXRNZW51T3BlbiIsIm1vYmlsZVNpZGViYXJUb2dnbGUiLCJzdGlja09uTW9iaWxlIiwid2VpZ2h0IiwibWVudWJhckl0ZW1zIiwiZmlsdGVyIiwic2lkZWJhckl0ZW1zIiwic2lkZWJhckNvbXAiLCJmb290ZXJJdGVtcyIsImZvb3RlckNvbXAiLCJzdGF0dXNiYXJJdGVtcyIsInN0YXR1c2JhckNvbXAiLCJNZW51SXRlbU1lbnUiLCJSZW5kZXJDb21wb25lbnQiLCJ1c2VNb2JpbGVMYXlvdXQiLCJkaXNwYXRjaCIsInVzZURpc3BhdGNoIiwidXNlTWVkaWFRdWVyeSIsInVzZUVmZmVjdCIsImFjdGlvbnMiLCJzdGF0ZSIsImNyZWF0ZVNsaWNlIiwiaW5pdGlhbFN0YXRlIiwicmVkdWNlcnMiLCJzZXRNb2JpbGUiLCJzdCIsImFjdGlvbiIsInBheWxvYWQiLCJjcmVhdGVTZWxlY3Rvckhvb2siLCJpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIiwibW9kdWxlIiwibGF5b3V0TW9kdWxlIiwibGF5b3V0IiwidW5kZWZpbmVkIiwidmFsdWUiLCJtZW1vaXplIiwic29ydFdlaWdodGVkSXRlbXNJbXBsIiwic29ydEJ5IiwicmVkdWNlIiwibWVtbyIsInBvc2l0aW9uIiwiaW5pdGlhbExheW91dE1vZHVsZURhdGEiLCJ3aXRoTGF5b3V0IiwiY2xpZW50IiwibGF5b3V0TW9kdWxlRGF0YSIsIm1vZHVsZXMiLCJsYXlvdXRIb2MiLCJXcmFwcGVkIiwiZGlzcGxheU5hbWUiLCJXaXRoTGF5b3V0IiwibGF5b3V0Q2xpZW50TW9kdWxlIiwib3JkZXIiLCJob2NzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUMrSDtBQUM3QjtBQUNsRyw4QkFBOEIsbUZBQTJCLENBQUMsd0dBQXFDO0FBQy9GO0FBQ0Esa0dBQWtHLGlCQUFpQixHQUFHLGVBQWUsaUJBQWlCLEdBQUcsdUNBQXVDLHFCQUFxQixrQkFBa0IsMkJB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QUNBO0FBRUE7QUFFTyxTQUFTQyxrQkFBVCxHQUFzRjtBQUM1RixTQUFPO0FBQ04vRyxRQUFJLEVBQUUsa0JBREE7QUFFTmdILFNBQUssRUFBRSxFQUZEO0FBR05DLFFBQUksRUFBRSxDQUFDVixtREFBRCxDQUhBO0FBSU50QixTQUFLLEVBQUxBLHlDQUpNO0FBS05ZLFVBQU0sRUFBRTtBQUNQakgsZUFBUyxFQUFFLENBQUMrRixtRUFBRDtBQURKO0FBTEYsR0FBUDtBQVNBIiwiZmlsZSI6ImNsaWVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvY3NzV2l0aE1hcHBpbmdUb1N0cmluZy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyogTmVlZCB0byBwYXNzIDEwMCUgaGVpZ2h0IGFsbCB0aGUgd2F5IGRvd24gKi9cXG4jcm9vdCB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG4jcm9vdCA+IGRpdiB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX3BhcmVudC0tMmc4VFoge1xcblxcdG1pbi1oZWlnaHQ6IDEwMCU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX21lbnViYXItLTE3dVFCIHtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jb21wb25lbnRzLXN0eWxlc19fc3RhdHVzYmFyLS1GRmlHaCB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdGJhY2tncm91bmQtY29sb3I6IHJnYig0NSwgNDUsIDQ1KSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX3NpZGViYXItLTJUYVlVIHtcXG5cXHRtaW4td2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7XFxuXFx0d2lkdGg6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0b3ZlcmZsb3cteDogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0dHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4zcyBlYXNlLWluLW91dDtcXG59XFxuXFxuLmNvbXBvbmVudHMtc3R5bGVzX19zaWRlYmFySGlkZGVuLS0zNWtfNCB7XFxuXFx0bWFyZ2luLWxlZnQ6IC0yMjBweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnRXcmFwcGVyLS1XbldTNyB7XFxuXFx0ZmxleDogMTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuXFx0ZmxleC13cmFwOiBub3dyYXA7XFxuXFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcblxcdGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvKiB0aGlzIGlzIGEgc2VnbWVudCwgYW5kIHRoZXkgc2VlbSB0byBoYXZlIGEgMXB4IHdoaXRlIGJvcmRlciBieSBkZWZhdWx0ICovXFxuXFx0Lypib3JkZXItdG9wOiAycHggc29saWQgcmdiKDIxNywgMTI4LCA0OCkgIWltcG9ydGFudDsqL1xcblxcdG92ZXJmbG93LXk6IGF1dG87IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLTFsaC1nIHtcXG5cXHRmbGV4OiAxOyAvKiBjaGFuZ2VkIHRoaXMgdG8gaGF2ZSBhIGZsZXggb2Ygb25lIGluc3RlYWQgb2YgYXV0byBzbyB0aGUgc2lkZSBtZW51IGRvZXNuJ3QgZ2V0IHNxdWlzaGVkICovXFxuXFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcXG5cXHRwYWRkaW5nOiAxZW0gMWVtO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtaGVpZ2h0OiAxMDAlOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdGJhY2tncm91bmQtY29sb3I6ICNlYWVhZWE7XFxuXFx0Y29sb3I6ICNiZmJmYmY7XFxufVxcblxcbi5jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS0xb3k1MCB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdGJhY2tncm91bmQtY29sb3I6IHJnYig0NSwgNDUsIDQ1KSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uLS0zdjBwVyB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWQtLTIzRVVFIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duVGl0bGUtLTFwYm5qIHtcXG5cXHRwYWRkaW5nOiAwO1xcblxcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93bkNvbnRlbnQtLTJEQVpnIHtcXG5cXHRib3JkZXI6IDFweCBzb2xpZCByZ2IoNDUsIDQ1LCA0NSk7XFxuXFx0cGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgLTEuMTQyODU3MTRlbSAwIDA7XFxuXFx0Ym9yZGVyLXJhZGl1czogMDtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDUsIDQ1LCA0NSk7XFxufVxcblxcbi5jb21wb25lbnRzLXN0eWxlc19faWNvbi0tMmlNeTkge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGxpbmVhcjtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5jb21wb25lbnRzLXN0eWxlc19faWNvblJvdGF0ZWQtLTJFUTlsIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cztcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2NvbXBvbmVudHMvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSw4Q0FBOEM7QUFDOUM7Q0FDQyxZQUFZO0FBQ2I7QUFDQTtDQUNDLFlBQVk7QUFDYjs7QUFFQTtDQUNDLGdCQUFnQjtDQUNoQixhQUFhO0NBQ2Isc0JBQXNCO0FBQ3ZCOztBQUVBO0NBQ0MsMkJBQTJCO0NBQzNCLG9CQUFvQjtBQUNyQjs7QUFFQTtDQUNDLG9CQUFvQjtDQUNwQiwyQkFBMkI7Q0FDM0IsNENBQTRDO0FBQzdDOztBQUVBO0NBQ0MsMkJBQTJCO0NBQzNCLHNCQUFzQjtDQUN0Qix1QkFBdUI7Q0FDdkIsMkJBQTJCO0NBQzNCLG9CQUFvQjtDQUNwQixnQkFBZ0IsRUFBRSw4REFBOEQ7Q0FDaEYsd0NBQXdDO0FBQ3pDOztBQUVBO0NBQ0MsOEJBQThCO0FBQy9COztBQUVBO0NBQ0MsT0FBTztDQUNQLGFBQWE7Q0FDYixtQkFBbUI7Q0FDbkIsaUJBQWlCO0NBQ2pCLHFCQUFxQjtDQUNyQixzQ0FBc0MsRUFBRSwyRUFBMkU7Q0FDbkgsc0RBQXNEO0NBQ3RELGdCQUFnQixFQUFFLDhEQUE4RDtBQUNqRjs7QUFFQTtDQUNDLE9BQU8sRUFBRSw2RkFBNkY7Q0FDdEcseUJBQXlCO0NBQ3pCLGdCQUFnQjtDQUNoQixZQUFZO0NBQ1osZ0JBQWdCLEVBQUUsOERBQThEO0NBQ2hGLGtCQUFrQixFQUFFLDhEQUE4RDtDQUNsRix5QkFBeUI7Q0FDekIsY0FBYztBQUNmOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtDQUMzQiw0Q0FBNEM7QUFDN0M7O0FBRUE7Q0FDQyx1QkFBdUI7Q0FDdkIsMkJBQTJCO0NBQzNCLGVBQWU7QUFDaEI7O0FBRUE7Q0FDQyx3QkFBd0I7Q0FDeEIsMkJBQTJCO0NBQzNCLGVBQWU7QUFDaEI7O0FBRUE7Q0FDQyxVQUFVO0NBQ1Ysc0JBQXNCO0FBQ3ZCOztBQUVBO0NBQ0MsaUNBQWlDO0NBQ2pDLHlCQUF5QjtDQUN6QiwyQkFBMkI7Q0FDM0IsZ0JBQWdCO0NBQ2hCLGlDQUFpQztBQUNsQzs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QixpQ0FBaUM7Q0FDakMsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLDBCQUEwQjtDQUMxQiwwQkFBMEI7Q0FDMUIsZUFBZTtBQUNoQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIvKiBOZWVkIHRvIHBhc3MgMTAwJSBoZWlnaHQgYWxsIHRoZSB3YXkgZG93biAqL1xcbjpnbG9iYWwoI3Jvb3QpIHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcbjpnbG9iYWwoI3Jvb3QpID4gZGl2IHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5wYXJlbnQge1xcblxcdG1pbi1oZWlnaHQ6IDEwMCU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4ubWVudWJhciB7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc3RhdHVzYmFyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0YmFja2dyb3VuZC1jb2xvcjogcmdiKDQ1LCA0NSwgNDUpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5zaWRlYmFyIHtcXG5cXHRtaW4td2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7XFxuXFx0d2lkdGg6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0b3ZlcmZsb3cteDogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0dHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4zcyBlYXNlLWluLW91dDtcXG59XFxuXFxuLnNpZGViYXJIaWRkZW4ge1xcblxcdG1hcmdpbi1sZWZ0OiAtMjIwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmNvbnRlbnRXcmFwcGVyIHtcXG5cXHRmbGV4OiAxO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IHJvdztcXG5cXHRmbGV4LXdyYXA6IG5vd3JhcDtcXG5cXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IC8qIHRoaXMgaXMgYSBzZWdtZW50LCBhbmQgdGhleSBzZWVtIHRvIGhhdmUgYSAxcHggd2hpdGUgYm9yZGVyIGJ5IGRlZmF1bHQgKi9cXG5cXHQvKmJvcmRlci10b3A6IDJweCBzb2xpZCByZ2IoMjE3LCAxMjgsIDQ4KSAhaW1wb3J0YW50OyovXFxuXFx0b3ZlcmZsb3cteTogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxufVxcblxcbi5jb250ZW50IHtcXG5cXHRmbGV4OiAxOyAvKiBjaGFuZ2VkIHRoaXMgdG8gaGF2ZSBhIGZsZXggb2Ygb25lIGluc3RlYWQgb2YgYXV0byBzbyB0aGUgc2lkZSBtZW51IGRvZXNuJ3QgZ2V0IHNxdWlzaGVkICovXFxuXFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcXG5cXHRwYWRkaW5nOiAxZW0gMWVtO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtaGVpZ2h0OiAxMDAlOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdGJhY2tncm91bmQtY29sb3I6ICNlYWVhZWE7XFxuXFx0Y29sb3I6ICNiZmJmYmY7XFxufVxcblxcbi5mb290ZXIge1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcblxcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDUsIDQ1LCA0NSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25JY29uIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyA7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4udmVydGljYWxEcm9wZG93bkljb25Sb3RhdGVkIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25UaXRsZSB7XFxuXFx0cGFkZGluZzogMDtcXG5cXHRjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udmVydGljYWxEcm9wZG93bkNvbnRlbnQge1xcblxcdGJvcmRlcjogMXB4IHNvbGlkIHJnYig0NSwgNDUsIDQ1KTtcXG5cXHRwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAtMS4xNDI4NTcxNGVtIDAgMDtcXG5cXHRib3JkZXItcmFkaXVzOiAwO1xcblxcdGJhY2tncm91bmQtY29sb3I6IHJnYig0NSwgNDUsIDQ1KTtcXG59XFxuXFxuLmljb24ge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGxpbmVhcjtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5pY29uUm90YXRlZCB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXM7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHtcblx0XCJwYXJlbnRcIjogXCJjb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS0yZzhUWlwiLFxuXHRcIm1lbnViYXJcIjogXCJjb21wb25lbnRzLXN0eWxlc19fbWVudWJhci0tMTd1UUJcIixcblx0XCJzdGF0dXNiYXJcIjogXCJjb21wb25lbnRzLXN0eWxlc19fc3RhdHVzYmFyLS1GRmlHaFwiLFxuXHRcInNpZGViYXJcIjogXCJjb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tMlRhWVVcIixcblx0XCJzaWRlYmFySGlkZGVuXCI6IFwiY29tcG9uZW50cy1zdHlsZXNfX3NpZGViYXJIaWRkZW4tLTM1a180XCIsXG5cdFwiY29udGVudFdyYXBwZXJcIjogXCJjb21wb25lbnRzLXN0eWxlc19fY29udGVudFdyYXBwZXItLVduV1M3XCIsXG5cdFwiY29udGVudFwiOiBcImNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS0xbGgtZ1wiLFxuXHRcImZvb3RlclwiOiBcImNvbXBvbmVudHMtc3R5bGVzX19mb290ZXItLTFveTUwXCIsXG5cdFwidmVydGljYWxEcm9wZG93bkljb25cIjogXCJjb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93bkljb24tLTN2MHBXXCIsXG5cdFwidmVydGljYWxEcm9wZG93bkljb25Sb3RhdGVkXCI6IFwiY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tMjNFVUVcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duVGl0bGVcIjogXCJjb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93blRpdGxlLS0xcGJualwiLFxuXHRcInZlcnRpY2FsRHJvcGRvd25Db250ZW50XCI6IFwiY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25Db250ZW50LS0yREFaZ1wiLFxuXHRcImljb25cIjogXCJjb21wb25lbnRzLXN0eWxlc19faWNvbi0tMmlNeTlcIixcblx0XCJpY29uUm90YXRlZFwiOiBcImNvbXBvbmVudHMtc3R5bGVzX19pY29uUm90YXRlZC0tMkVROWxcIlxufTtcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG4vLyBjc3MgYmFzZSBjb2RlLCBpbmplY3RlZCBieSB0aGUgY3NzLWxvYWRlclxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGZ1bmMtbmFtZXNcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcpIHtcbiAgdmFyIGxpc3QgPSBbXTsgLy8gcmV0dXJuIHRoZSBsaXN0IG9mIG1vZHVsZXMgYXMgY3NzIHN0cmluZ1xuXG4gIGxpc3QudG9TdHJpbmcgPSBmdW5jdGlvbiB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgIHZhciBjb250ZW50ID0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgcmV0dXJuIFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChjb250ZW50LCBcIn1cIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBjb250ZW50O1xuICAgIH0pLmpvaW4oXCJcIik7XG4gIH07IC8vIGltcG9ydCBhIGxpc3Qgb2YgbW9kdWxlcyBpbnRvIHRoZSBsaXN0XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBmdW5jLW5hbWVzXG5cblxuICBsaXN0LmkgPSBmdW5jdGlvbiAobW9kdWxlcywgbWVkaWFRdWVyeSwgZGVkdXBlKSB7XG4gICAgaWYgKHR5cGVvZiBtb2R1bGVzID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIFwiXCJdXTtcbiAgICB9XG5cbiAgICB2YXIgYWxyZWFkeUltcG9ydGVkTW9kdWxlcyA9IHt9O1xuXG4gICAgaWYgKGRlZHVwZSkge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmVmZXItZGVzdHJ1Y3R1cmluZ1xuICAgICAgICB2YXIgaWQgPSB0aGlzW2ldWzBdO1xuXG4gICAgICAgIGlmIChpZCAhPSBudWxsKSB7XG4gICAgICAgICAgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpZF0gPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IG1vZHVsZXMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgaXRlbSA9IFtdLmNvbmNhdChtb2R1bGVzW19pXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udGludWVcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYVF1ZXJ5KSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYVF1ZXJ5O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMl0gPSBcIlwiLmNvbmNhdChtZWRpYVF1ZXJ5LCBcIiBhbmQgXCIpLmNvbmNhdChpdGVtWzJdKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsaXN0LnB1c2goaXRlbSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiBsaXN0O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZnVuY3Rpb24gX3NsaWNlZFRvQXJyYXkoYXJyLCBpKSB7IHJldHVybiBfYXJyYXlXaXRoSG9sZXMoYXJyKSB8fCBfaXRlcmFibGVUb0FycmF5TGltaXQoYXJyLCBpKSB8fCBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkoYXJyLCBpKSB8fCBfbm9uSXRlcmFibGVSZXN0KCk7IH1cblxuZnVuY3Rpb24gX25vbkl0ZXJhYmxlUmVzdCgpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkludmFsaWQgYXR0ZW1wdCB0byBkZXN0cnVjdHVyZSBub24taXRlcmFibGUgaW5zdGFuY2UuXFxuSW4gb3JkZXIgdG8gYmUgaXRlcmFibGUsIG5vbi1hcnJheSBvYmplY3RzIG11c3QgaGF2ZSBhIFtTeW1ib2wuaXRlcmF0b3JdKCkgbWV0aG9kLlwiKTsgfVxuXG5mdW5jdGlvbiBfdW5zdXBwb3J0ZWRJdGVyYWJsZVRvQXJyYXkobywgbWluTGVuKSB7IGlmICghbykgcmV0dXJuOyBpZiAodHlwZW9mIG8gPT09IFwic3RyaW5nXCIpIHJldHVybiBfYXJyYXlMaWtlVG9BcnJheShvLCBtaW5MZW4pOyB2YXIgbiA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvKS5zbGljZSg4LCAtMSk7IGlmIChuID09PSBcIk9iamVjdFwiICYmIG8uY29uc3RydWN0b3IpIG4gPSBvLmNvbnN0cnVjdG9yLm5hbWU7IGlmIChuID09PSBcIk1hcFwiIHx8IG4gPT09IFwiU2V0XCIpIHJldHVybiBBcnJheS5mcm9tKG8pOyBpZiAobiA9PT0gXCJBcmd1bWVudHNcIiB8fCAvXig/OlVpfEkpbnQoPzo4fDE2fDMyKSg/OkNsYW1wZWQpP0FycmF5JC8udGVzdChuKSkgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IH1cblxuZnVuY3Rpb24gX2FycmF5TGlrZVRvQXJyYXkoYXJyLCBsZW4pIHsgaWYgKGxlbiA9PSBudWxsIHx8IGxlbiA+IGFyci5sZW5ndGgpIGxlbiA9IGFyci5sZW5ndGg7IGZvciAodmFyIGkgPSAwLCBhcnIyID0gbmV3IEFycmF5KGxlbik7IGkgPCBsZW47IGkrKykgeyBhcnIyW2ldID0gYXJyW2ldOyB9IHJldHVybiBhcnIyOyB9XG5cbmZ1bmN0aW9uIF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHsgdmFyIF9pID0gYXJyICYmICh0eXBlb2YgU3ltYm9sICE9PSBcInVuZGVmaW5lZFwiICYmIGFycltTeW1ib2wuaXRlcmF0b3JdIHx8IGFycltcIkBAaXRlcmF0b3JcIl0pOyBpZiAoX2kgPT0gbnVsbCkgcmV0dXJuOyB2YXIgX2FyciA9IFtdOyB2YXIgX24gPSB0cnVlOyB2YXIgX2QgPSBmYWxzZTsgdmFyIF9zLCBfZTsgdHJ5IHsgZm9yIChfaSA9IF9pLmNhbGwoYXJyKTsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGNzc1dpdGhNYXBwaW5nVG9TdHJpbmcoaXRlbSkge1xuICB2YXIgX2l0ZW0gPSBfc2xpY2VkVG9BcnJheShpdGVtLCA0KSxcbiAgICAgIGNvbnRlbnQgPSBfaXRlbVsxXSxcbiAgICAgIGNzc01hcHBpbmcgPSBfaXRlbVszXTtcblxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgdmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge0RhdGFIb29rfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0V4ZWN1dGVEYXRhSG9va30gZnJvbSAnLi9FeGVjdXRlRGF0YUhvb2snO1xuXG5pbnRlcmZhY2UgRGF0YUhvb2tzUHJvcHMge1xuXHRkYXRhSG9va3M6IERhdGFIb29rW107XG59XG5cbi8qKlxuICogUmVuZGVycyBsYXlvdXQgZGF0YSBob29rcy4gVGhlc2UgaG9va3Mgc2hvdWxkIHJldHVybiBub3RoaW5nLiBBbGwgaW50ZXJhY3Rpb24gc2hvdWxkIGJlIGluIHNpZGUtZWZmZWN0cywgdXN1YWxseSByZXRyaWV2aW5nIGRhdGEgYW5kIHNldHRpbmcgUmVkdXggc3RhdGUuXG4gKiBAcGFyYW0gZGF0YUhvb2tzXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERhdGFIb29rcyh7ZGF0YUhvb2tzfTogRGF0YUhvb2tzUHJvcHMpIHtcblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0e2RhdGFIb29rcy5tYXAoKGhvb2ssIGluZGV4KSA9PiAoXG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdFx0PEV4ZWN1dGVEYXRhSG9vayBrZXk9e2luZGV4fSBkYXRhSG9vaz17aG9va30gLz5cblx0XHRcdCkpfVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IFJlYWN0LCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7QWNjb3JkaW9uLCBEcm9wZG93biwgSWNvbiwgTWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0Ryb3Bkb3duTWVudUl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuaW50ZXJmYWNlIERyb3Bkb3duQWNjb3JkaW9uUHJvcHMge1xuXHR2ZXJ0aWNhbDogYm9vbGVhbjtcblx0aXRlbTogRHJvcGRvd25NZW51SXRlbTtcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEcm9wZG93bkl0ZW1NZW51KHtpdGVtLCBjaGlsZHJlbiwgdmVydGljYWx9OiBEcm9wZG93bkFjY29yZGlvblByb3BzKSB7XG5cdGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuXHRpZiAodmVydGljYWwpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1lbnUuSXRlbSBjbGFzc05hbWU9XCJpbXBlcml1bVZlcnRpY2FsRHJvcGRvd25cIj5cblx0XHRcdFx0PEFjY29yZGlvbiBmbHVpZD5cblx0XHRcdFx0XHQ8QWNjb3JkaW9uLlRpdGxlXG5cdFx0XHRcdFx0XHRjbGFzc05hbWU9e3N0eWxlcy52ZXJ0aWNhbERyb3Bkb3duVGl0bGV9XG5cdFx0XHRcdFx0XHRvbkNsaWNrPXtldiA9PiB7XG5cdFx0XHRcdFx0XHRcdGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0XHRzZXRPcGVuKCFvcGVuKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PEljb24gY2xhc3NOYW1lPXtvcGVuID8gc3R5bGVzLnZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZCA6IHN0eWxlcy52ZXJ0aWNhbERyb3Bkb3duSWNvbn0gbmFtZT1cImFycm93IHJpZ2h0XCIgLz5cblx0XHRcdFx0XHRcdHtpdGVtLnRleHR9XG5cdFx0XHRcdFx0PC9BY2NvcmRpb24uVGl0bGU+XG5cdFx0XHRcdFx0PEFjY29yZGlvbi5Db250ZW50IGFjdGl2ZT17b3Blbn0gY2xhc3NOYW1lPXtgJHtzdHlsZXMudmVydGljYWxEcm9wZG93bkNvbnRlbnR9IGltcGVyaXVtVmVydGljYWxEcm9wZG93bkNvbnRlbnRgfSBjaGlsZHJlbj17Y2hpbGRyZW59IC8+XG5cdFx0XHRcdDwvQWNjb3JkaW9uPlxuXHRcdFx0PC9NZW51Lkl0ZW0+XG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiAoXG5cdFx0PERyb3Bkb3duIGl0ZW0gdGV4dD17aXRlbS50ZXh0fSBjbGFzc05hbWU9XCJpbXBlcml1bURyb3Bkb3duXCI+XG5cdFx0XHQ8RHJvcGRvd24uTWVudSBjbGFzc05hbWU9XCJpbXBlcml1bURyb3Bkb3duQ29udGVudFwiPntjaGlsZHJlbn08L0Ryb3Bkb3duLk1lbnU+XG5cdFx0PC9Ecm9wZG93bj5cblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtEYXRhSG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgRXhlY3V0ZURhdGFIb29rUHJvcHMge1xuXHRkYXRhSG9vazogRGF0YUhvb2s7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFeGVjdXRlRGF0YUhvb2soe2RhdGFIb29rfTogRXhlY3V0ZURhdGFIb29rUHJvcHMpIHtcblx0ZGF0YUhvb2soKTtcblx0cmV0dXJuIG51bGw7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge01lbnVQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0l0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7aXNDdXN0b21NZW51SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtzb3J0V2VpZ2h0ZWRJdGVtcywgc3BsaXRIb3Jpem9udGFsSXRlbXN9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7SXRlbUJhckl0ZW19IGZyb20gJy4vSXRlbUJhckl0ZW0nO1xuaW1wb3J0IHtSZW5kZXJDb21wb25lbnR9IGZyb20gJy4vUmVuZGVyQ29tcG9uZW50JztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29tcG9uZW50cy5JdGVtQmFyJyk7XG5cbmludGVyZmFjZSBJdGVtQmFyUHJvcHMgZXh0ZW5kcyBNZW51UHJvcHMge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGl0ZW1zOiBJdGVtW107XG5cdHNpZGViYXI/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBtYXBJdGVtcyhuYW1lOiBzdHJpbmcsIGl0ZW1zOiBJdGVtW10sIHByb3BzOiBNZW51UHJvcHMpIHtcblx0cmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcblx0XHRpZiAoaXNDdXN0b21NZW51SXRlbShpdGVtKSkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdFx0cmV0dXJuIDxSZW5kZXJDb21wb25lbnQga2V5PXtgJHtuYW1lfSR7aW5kZXh9YH0gcmVuZGVyPXtpdGVtLnJlbmRlcn0gLz47XG5cdFx0fVxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRyZXR1cm4gPEl0ZW1CYXJJdGVtIGtleT17YCR7bmFtZX0ke2l0ZW0udGV4dH0ke2luZGV4fWB9IGl0ZW09e2l0ZW19IHZlcnRpY2FsPXtwcm9wcy52ZXJ0aWNhbH0gLz47XG5cdH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSXRlbUJhcih7bmFtZSwgaXRlbXMsIC4uLnJlc3R9OiBJdGVtQmFyUHJvcHMpIHtcblx0Y29uc3QgaW1zID0gc3BsaXRIb3Jpem9udGFsSXRlbXMoaXRlbXMpO1xuXG5cdGNvbnN0IGxlZnQgPSBtYXBJdGVtcyhuYW1lLCBzb3J0V2VpZ2h0ZWRJdGVtcyhpbXMubGVmdEl0ZW1zKSwgcmVzdCk7XG5cdGNvbnN0IHJpZ2h0TWFwcGVkSXRlbXMgPSBtYXBJdGVtcyhuYW1lLCBzb3J0V2VpZ2h0ZWRJdGVtcyhpbXMucmlnaHRJdGVtcyksIHJlc3QpO1xuXHRjb25zdCByaWdodCA9IHJlc3QudmVydGljYWwgPyByaWdodE1hcHBlZEl0ZW1zIDogPE1lbnUuTWVudSBwb3NpdGlvbj1cInJpZ2h0XCI+e3JpZ2h0TWFwcGVkSXRlbXN9PC9NZW51Lk1lbnU+O1xuXG5cdHJldHVybiAoXG5cdFx0PE1lbnUgey4uLnJlc3R9PlxuXHRcdFx0e2xlZnQubGVuZ3RoID4gMCA/IGxlZnQgOiBudWxsfVxuXHRcdFx0e2ltcy5yaWdodEl0ZW1zLmxlbmd0aCA+IDAgPyByaWdodCA6IG51bGx9XG5cdFx0PC9NZW51PlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBjb21wYWN0IGZyb20gJ2xvZGFzaC9jb21wYWN0JztcbmltcG9ydCBxdWVyeVN0cmluZyBmcm9tICdxdWVyeS1zdHJpbmcnO1xuaW1wb3J0IFJlYWN0LCB7dXNlTWVtb30gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtMaW5rLCB1c2VMb2NhdGlvbiwgdXNlUm91dGVNYXRjaH0gZnJvbSAncmVhY3Qtcm91dGVyLWRvbSc7XG5pbXBvcnQge0Ryb3Bkb3duLCBJY29uLCBNZW51LCBEaXZpZGVyfSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7QmFzZUl0ZW0sIERyb3Bkb3duTWVudUl0ZW0sIE1lbnVNZW51SXRlbSwgUm91dGVJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2lzRHJvcGRvd25NZW51SXRlbSwgaXNNZW51TWVudUl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7c29ydFdlaWdodGVkSXRlbXN9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7RHJvcGRvd25JdGVtTWVudX0gZnJvbSAnLi9Ecm9wZG93bkl0ZW1NZW51JztcbmltcG9ydCB7TWVudUl0ZW1NZW51fSBmcm9tICcuL01lbnVJdGVtTWVudSc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuSXRlbUJhckl0ZW0nKTtcblxuaW50ZXJmYWNlIEl0ZW1CYXJJdGVtUHJvcHMge1xuXHRpdGVtOiAoQmFzZUl0ZW0gJiBSb3V0ZUl0ZW0pIHwgRHJvcGRvd25NZW51SXRlbSB8IE1lbnVNZW51SXRlbTtcblx0YXM/OiBSZWFjdC5Db21wb25lbnRDbGFzcztcblx0dmVydGljYWw/OiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSXRlbUJhckl0ZW0oe2l0ZW0sIGFzLCB2ZXJ0aWNhbH06IEl0ZW1CYXJJdGVtUHJvcHMpIHtcblx0Y29uc3QgYWN0aXZlID0gdXNlUm91dGVNYXRjaCghaXNEcm9wZG93bk1lbnVJdGVtKGl0ZW0pICYmICFpc01lbnVNZW51SXRlbShpdGVtKSA/IGl0ZW0udG8gfHwgJycgOiAnJyk7XG5cdGNvbnN0IGljb24gPSBpdGVtLmljb24gPyA8SWNvbiBuYW1lPXtpdGVtLmljb259IC8+IDogbnVsbDtcblx0Y29uc3Qgc2VsZWN0ZWRTdGF0ZSA9IGl0ZW0udmlzaWJsZT8uc2VsZWN0b3JIb29rKCk7XG5cdGNvbnN0IGxvYyA9IHVzZUxvY2F0aW9uKCk7XG5cblx0Y29uc3QgaXNWaXNpYmxlID0gdXNlTWVtbygoKSA9PiB7XG5cdFx0Y29uc3QgY29tcGFyZU9iaiA9IHtcblx0XHRcdC4uLihzZWxlY3RlZFN0YXRlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KSxcblx0XHRcdGxvY2F0aW9uOiB7XG5cdFx0XHRcdHBhdGg6IGNvbXBhY3QobG9jLnBhdGhuYW1lLnNwbGl0KCcvJykpLFxuXHRcdFx0XHRoYXNoOiBsb2MuaGFzaCxcblx0XHRcdFx0c2VhcmNoOiBxdWVyeVN0cmluZy5wYXJzZShsb2Muc2VhcmNoKSxcblx0XHRcdH0sXG5cdFx0fTtcblx0XHRpZiAoaXRlbS52aXNpYmxlKSB7XG5cdFx0XHRyZXR1cm4gaXRlbS52aXNpYmxlLnF1ZXJ5LnRlc3QoY29tcGFyZU9iaik7XG5cdFx0fVxuXHRcdHJldHVybiB0cnVlO1xuXHR9LCBbaXRlbS52aXNpYmxlLCBzZWxlY3RlZFN0YXRlLCBsb2Muc2VhcmNoLCBsb2MucGF0aG5hbWUsIGxvYy5oYXNoXSk7XG5cblx0aWYgKCFpc1Zpc2libGUpIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGlmIChpc0Ryb3Bkb3duTWVudUl0ZW0oaXRlbSkpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PERyb3Bkb3duSXRlbU1lbnVcblx0XHRcdFx0dmVydGljYWw9e3ZlcnRpY2FsIHx8IGZhbHNlfVxuXHRcdFx0XHRpdGVtPXtpdGVtfVxuXHRcdFx0XHRjaGlsZHJlbj17c29ydFdlaWdodGVkSXRlbXMoaXRlbS5kcm9wZG93bikubWFwKHYgPT4gKFxuXHRcdFx0XHRcdDxJdGVtQmFySXRlbSBrZXk9e3YudGV4dH0gaXRlbT17dn0gYXM9e0Ryb3Bkb3duLkl0ZW19IC8+XG5cdFx0XHRcdCkpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9XG5cblx0aWYgKGlzTWVudU1lbnVJdGVtKGl0ZW0pKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxNZW51SXRlbU1lbnVcblx0XHRcdFx0aXRlbT17aXRlbX1cblx0XHRcdFx0Y2hpbGRyZW49e3NvcnRXZWlnaHRlZEl0ZW1zKGl0ZW0ubWVudSkubWFwKHYgPT4gKFxuXHRcdFx0XHRcdDxJdGVtQmFySXRlbSBrZXk9e3YudGV4dH0gaXRlbT17dn0gYXM9e0Ryb3Bkb3duLkl0ZW19IC8+XG5cdFx0XHRcdCkpfVxuXHRcdFx0Lz5cblx0XHQpO1xuXHR9XG5cblx0Y29uc3QgbGlua1BhcmFtcyA9IGl0ZW0udG9cblx0XHQ/IHtcblx0XHRcdFx0YXM6IExpbmssXG5cdFx0XHRcdGFjdGl2ZTogISFhY3RpdmUsXG5cdFx0XHRcdHRvOiBpdGVtLnRvLFxuXHRcdCAgfVxuXHRcdDoge307XG5cblx0Y29uc3QgbWVudVBhcmFtcyA9IGFzXG5cdFx0PyB7fVxuXHRcdDoge1xuXHRcdFx0XHRsaW5rOiAhIWl0ZW0udG8sXG5cdFx0ICB9O1xuXG5cdGNvbnN0IEl0ZW1YID0gYXMgfHwgTWVudS5JdGVtO1xuXG5cdHJldHVybiAoXG5cdFx0PEl0ZW1YIHsuLi5saW5rUGFyYW1zfSB7Li4ubWVudVBhcmFtc30+XG5cdFx0XHR7aWNvbn1cblx0XHRcdHtpdGVtLnRleHR9XG5cdFx0PC9JdGVtWD5cblx0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHtSZWFjdE5vZGUsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0ljb24sIE1lbnUsIFNlZ21lbnR9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlTGF5b3V0U3RhdGV9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB0eXBlIHtMYXlvdXREYXRhfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0l0ZW1CYXJ9IGZyb20gJy4vSXRlbUJhcic7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLmNzcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuTGF5b3V0Jyk7XG5cbmludGVyZmFjZSBMYXlvdXRQcm9wcyBleHRlbmRzIExheW91dERhdGEge1xuXHRjaGlsZHJlbj86IFJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIExheW91dCh7Zm9vdGVyLCBtZW51YmFyLCBzdGF0dXNiYXIsIHNpZGViYXIsIGNoaWxkcmVufTogTGF5b3V0UHJvcHMpIHtcblx0Y29uc3Qge2lzTW9iaWxlfSA9IHVzZUxheW91dFN0YXRlKCk7XG5cdGNvbnN0IFttZW51T3Blbiwgc2V0TWVudU9wZW5dID0gdXNlU3RhdGUodHJ1ZSk7XG5cblx0Y29uc3QgbW9iaWxlU2lkZWJhclRvZ2dsZSA9IHtcblx0XHRzdGlja09uTW9iaWxlOiB0cnVlLFxuXHRcdHdlaWdodDogLTE5OTk5LFxuXHRcdHJlbmRlcjogKCkgPT4ge1xuXHRcdFx0aWYgKCFpc01vYmlsZSkgcmV0dXJuIG51bGw7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8TWVudS5JdGVtPlxuXHRcdFx0XHRcdDxJY29uXG5cdFx0XHRcdFx0XHRjbGFzc05hbWU9e21lbnVPcGVuID8gc3R5bGVzLmljb25Sb3RhdGVkIDogc3R5bGVzLmljb259XG5cdFx0XHRcdFx0XHRuYW1lPXttZW51T3BlbiA/ICdjbG9zZScgOiAnc2lkZWJhcid9XG5cdFx0XHRcdFx0XHRvbkNsaWNrPXsoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHNldE1lbnVPcGVuKCFtZW51T3Blbik7XG5cdFx0XHRcdFx0XHR9fVxuXHRcdFx0XHRcdC8+XG5cdFx0XHRcdDwvTWVudS5JdGVtPlxuXHRcdFx0KTtcblx0XHR9LFxuXHR9O1xuXG5cdGNvbnN0IG1lbnViYXJJdGVtcyA9IGlzTW9iaWxlID8gW21vYmlsZVNpZGViYXJUb2dnbGUsIC4uLm1lbnViYXJdLmZpbHRlcih2ID0+IHYuc3RpY2tPbk1vYmlsZSA9PT0gdHJ1ZSkgOiBbbW9iaWxlU2lkZWJhclRvZ2dsZSwgLi4ubWVudWJhcl07XG5cblx0Y29uc3Qgc2lkZWJhckl0ZW1zID0gaXNNb2JpbGVcblx0XHQ/IFtcblx0XHRcdFx0Li4uc2lkZWJhcixcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHRleHQ6ICcnLFxuXHRcdFx0XHRcdG1lbnU6IFttb2JpbGVTaWRlYmFyVG9nZ2xlLCAuLi5tZW51YmFyXS5maWx0ZXIodiA9PiB2LnN0aWNrT25Nb2JpbGUgIT09IHRydWUpLFxuXHRcdFx0XHR9LFxuXHRcdCAgXVxuXHRcdDogc2lkZWJhcjtcblx0Y29uc3Qgc2lkZWJhckNvbXAgPVxuXHRcdHNpZGViYXJJdGVtcy5sZW5ndGggPiAwID8gKFxuXHRcdFx0PGRpdj5cblx0XHRcdFx0PEl0ZW1CYXJcblx0XHRcdFx0XHRuYW1lPVwic2lkZWJhclwiXG5cdFx0XHRcdFx0aXRlbXM9e3NpZGViYXJJdGVtc31cblx0XHRcdFx0XHRpbnZlcnRlZFxuXHRcdFx0XHRcdHZlcnRpY2FsXG5cdFx0XHRcdFx0Y2xhc3NOYW1lPXtpc01vYmlsZSAmJiAhbWVudU9wZW4gPyBgJHtzdHlsZXMuc2lkZWJhcn0gJHtzdHlsZXMuc2lkZWJhckhpZGRlbn0gaW1wZXJpdW1TaWRlYmFyYCA6IGAke3N0eWxlcy5zaWRlYmFyfSBpbXBlcml1bVNpZGViYXJgfVxuXHRcdFx0XHQvPlxuXHRcdFx0PC9kaXY+XG5cdFx0KSA6IG51bGw7XG5cblx0Y29uc3QgZm9vdGVySXRlbXMgPSBmb290ZXI7XG5cdGNvbnN0IGZvb3RlckNvbXAgPVxuXHRcdGZvb3Rlckl0ZW1zLmxlbmd0aCA+IDAgPyA8SXRlbUJhciBuYW1lPVwiZm9vdGVyXCIgaXRlbXM9e2Zvb3Rlckl0ZW1zfSBjbGFzc05hbWU9e2Ake3N0eWxlcy5mb290ZXJ9IGltcGVyaXVtRm9vdGVyYH0gaW52ZXJ0ZWQgYm9yZGVybGVzcyAvPiA6IG51bGw7XG5cblx0Y29uc3Qgc3RhdHVzYmFySXRlbXMgPSBzdGF0dXNiYXI7XG5cdGNvbnN0IHN0YXR1c2JhckNvbXAgPVxuXHRcdHN0YXR1c2Jhckl0ZW1zLmxlbmd0aCA+IDAgPyAoXG5cdFx0XHQ8SXRlbUJhciBuYW1lPVwic3RhdHVzYmFyXCIgaXRlbXM9e3N0YXR1c2Jhckl0ZW1zfSBpbnZlcnRlZCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zdGF0dXNiYXJ9IGltcGVyaXVtU3RhdHVzYmFyYH0gLz5cblx0XHQpIDogbnVsbDtcblxuXHRyZXR1cm4gKFxuXHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMucGFyZW50fSBpbXBlcml1bUxheW91dGB9PlxuXHRcdFx0PGRpdj5cblx0XHRcdFx0PEl0ZW1CYXIgbmFtZT1cIm1lbnViYXJcIiBpdGVtcz17bWVudWJhckl0ZW1zfSBpbnZlcnRlZCBib3JkZXJsZXNzIGNsYXNzTmFtZT17YCR7c3R5bGVzLm1lbnViYXJ9IGltcGVyaXVtTWVudWJhcmB9IC8+XG5cdFx0XHRcdHtzdGF0dXNiYXJDb21wfVxuXHRcdFx0PC9kaXY+XG5cdFx0XHQ8U2VnbWVudCBhdHRhY2hlZCBjbGFzc05hbWU9e2Ake3N0eWxlcy5jb250ZW50V3JhcHBlcn0gaW1wZXJpdW1Db250ZW50V3JhcHBlcmB9PlxuXHRcdFx0XHR7c2lkZWJhckNvbXB9XG5cdFx0XHRcdDxkaXYgY2xhc3NOYW1lPXtgJHtzdHlsZXMuY29udGVudH0gaW1wZXJpdW1Db250ZW50YH0+e2NoaWxkcmVufTwvZGl2PlxuXHRcdFx0PC9TZWdtZW50PlxuXHRcdFx0e2Zvb3RlckNvbXB9XG5cdFx0PC9kaXY+XG5cdCk7XG59XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtNZW51fSBmcm9tICdzZW1hbnRpYy11aS1yZWFjdCc7XG5pbXBvcnQgdHlwZSB7TWVudU1lbnVJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5cbmludGVyZmFjZSBNZW51SXRlbU1lbnVQcm9wcyB7XG5cdGl0ZW06IE1lbnVNZW51SXRlbTtcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBNZW51SXRlbU1lbnUoe2l0ZW0sIGNoaWxkcmVufTogTWVudUl0ZW1NZW51UHJvcHMpIHtcblx0cmV0dXJuIChcblx0XHQ8TWVudS5JdGVtPlxuXHRcdFx0PE1lbnUuSGVhZGVyPntpdGVtLnRleHR9PC9NZW51LkhlYWRlcj5cblx0XHRcdDxNZW51Lk1lbnUgY29tcGFjdD57Y2hpbGRyZW59PC9NZW51Lk1lbnU+XG5cdFx0PC9NZW51Lkl0ZW0+XG5cdCk7XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gUmVuZGVyQ29tcG9uZW50KHtyZW5kZXIsIC4uLnJlc3R9OiB7cmVuZGVyOiAocHJvcHM6IHVua25vd24pID0+IEpTWC5FbGVtZW50IHwgbnVsbH0pIHtcblx0cmV0dXJuIHJlbmRlcihyZXN0KTtcbn1cbiIsImltcG9ydCB7dXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZURpc3BhdGNofSBmcm9tICdyZWFjdC1yZWR1eCc7XG5pbXBvcnQge3VzZU1lZGlhUXVlcnl9IGZyb20gJ3JlYWN0LXJlc3BvbnNpdmUnO1xuaW1wb3J0IHthY3Rpb25zfSBmcm9tICcuLi9zdGF0ZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VNb2JpbGVMYXlvdXQoKSB7XG5cdGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblx0Y29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHtxdWVyeTogJyhtYXgtd2lkdGg6IDkwMHB4KSd9KTtcblx0dXNlRWZmZWN0KCgpID0+IHtcblx0XHRkaXNwYXRjaChhY3Rpb25zLnNldE1vYmlsZShpc01vYmlsZSkpO1xuXHR9LCBbZGlzcGF0Y2gsIGlzTW9iaWxlXSk7XG59XG4iLCJpbXBvcnQge2NyZWF0ZVNlbGVjdG9ySG9va30gZnJvbSAnQGltcGVyaXVtL3N0YXRlJztcbmltcG9ydCB7Y3JlYXRlU2xpY2UsIFBheWxvYWRBY3Rpb259IGZyb20gJ0ByZWR1eGpzL3Rvb2xraXQnO1xuXG5leHBvcnQgY29uc3Qgc3RhdGUgPSBjcmVhdGVTbGljZSh7XG5cdG5hbWU6ICdpbXBlcml1bUxheW91dCcsXG5cdGluaXRpYWxTdGF0ZToge1xuXHRcdGlzTW9iaWxlOiBmYWxzZSxcblx0fSxcblx0cmVkdWNlcnM6IHtcblx0XHRzZXRNb2JpbGU6IChzdCwgYWN0aW9uOiBQYXlsb2FkQWN0aW9uPGJvb2xlYW4+KSA9PiAoey4uLnN0LCBpc01vYmlsZTogYWN0aW9uLnBheWxvYWR9KSxcblx0fSxcbn0pO1xuXG5leHBvcnQgY29uc3QgdXNlTGF5b3V0U3RhdGUgPSBjcmVhdGVTZWxlY3Rvckhvb2soc3RhdGUpO1xuXG5leHBvcnQgY29uc3Qge2FjdGlvbnN9ID0gc3RhdGU7XG4iLCJpbXBvcnQgdHlwZSB7SW1wZXJpdW1DbGllbnRNb2R1bGV9IGZyb20gJ0BpbXBlcml1bS9jbGllbnQnO1xuaW1wb3J0IHR5cGUge1F1ZXJ5fSBmcm9tICdtaW5nbyc7XG5pbXBvcnQgdHlwZSB7U2VtYW50aWNJQ09OU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRhSG9vayA9ICgpID0+IHZvaWQ7XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gd2l0aCBvcHRpb25hbCB3ZWlnaHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWlnaHRlZEl0ZW0ge1xuXHR3ZWlnaHQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gdGhhdCBjYW4gYmUgcG9zaXRpb25lZCBob3Jpem9udGFsbHkgbGVmdCBvciByaWdodFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSB7XG5cdHBvc2l0aW9uPzogJ2xlZnQnIHwgJ3JpZ2h0Jztcblx0c3RpY2tPbk1vYmlsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlzaWJpbGl0eVF1ZXJ5IHtcblx0cXVlcnk6IFF1ZXJ5O1xuXHRzZWxlY3Rvckhvb2s6ICgpID0+IHVua25vd247XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gdGhhdCBjYW4gYmUgaGlkZSBpdHNlbGYgYmFzZWQgb24gcmVkdXggc3RhdGVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWaXNpYmlsaXR5SXRlbSB7XG5cdHZpc2libGU/OiBWaXNpYmlsaXR5UXVlcnk7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gdGhhdCBsaW5rcyB0byBhIHJvdXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVJdGVtIHtcblx0dG8/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgYmFzaWMgd2VpZ2h0ZWQsIHBvc3NpYmx5IHZpc2libGUgaXRlbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VJdGVtIGV4dGVuZHMgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5SXRlbSB7XG5cdHRleHQ6IHN0cmluZztcblx0aWNvbj86IFNlbWFudGljSUNPTlM7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgbWVudSB0aGF0IGRpc3BsYXlzIGEgZHJvcGRvd24gbGlzdCBvZiBpdGVtc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duTWVudUl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cdGRyb3Bkb3duOiAoQmFzZUl0ZW0gJiBSb3V0ZUl0ZW0pW107XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgbWVudSB0aGF0IGRpc3BsYXlzIGEgc3ViIG1lbnUgKG5vdCBhIGRyb3Bkb3duIGxpc3QpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVudU1lbnVJdGVtIGV4dGVuZHMgQmFzZUl0ZW0ge1xuXHRtZW51OiAoQmFzZUl0ZW0gJiBSb3V0ZUl0ZW0pW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tTWVudUl0ZW0gZXh0ZW5kcyBXZWlnaHRlZEl0ZW0sIFZpc2liaWxpdHlJdGVtIHtcblx0cmVuZGVyOiAoKSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgaG9yaXpvbnRhbCBtZW51IGl0ZW0gd2hpY2ggaXMgZWl0aGVyIGEgcm91dGUgaXRlbSBvciBkcm9wZG93biBtZW51XG4gKi9cbmV4cG9ydCB0eXBlIEl0ZW0gPSAoKEJhc2VJdGVtICYgUm91dGVJdGVtKSB8IERyb3Bkb3duTWVudUl0ZW0gfCBNZW51TWVudUl0ZW0gfCBDdXN0b21NZW51SXRlbSkgJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5b3V0RGF0YSB7XG5cdGRhdGFIb29rczogRGF0YUhvb2tbXTtcblx0bWVudWJhcjogKEl0ZW0gJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pW107XG5cdHN0YXR1c2JhcjogKEl0ZW0gJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pW107XG5cdHNpZGViYXI6IEl0ZW1bXTtcblx0Zm9vdGVyOiAoSXRlbSAmIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSlbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbXBlcml1bUxheW91dENsaWVudE1vZHVsZSBleHRlbmRzIEltcGVyaXVtQ2xpZW50TW9kdWxlIHtcblx0bGF5b3V0OiBQYXJ0aWFsPExheW91dERhdGE+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbXBlcml1bUxheW91dENsaWVudE1vZHVsZShtb2R1bGU6IEltcGVyaXVtQ2xpZW50TW9kdWxlKTogbW9kdWxlIGlzIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIHtcblx0Y29uc3QgbGF5b3V0TW9kdWxlID0gbW9kdWxlIGFzIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlO1xuXHRyZXR1cm4gbGF5b3V0TW9kdWxlLmxheW91dCAhPT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEcm9wZG93bk1lbnVJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBEcm9wZG93bk1lbnVJdGVtIHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIERyb3Bkb3duTWVudUl0ZW0pLmRyb3Bkb3duO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNNZW51TWVudUl0ZW0odmFsdWU6IGFueSk6IHZhbHVlIGlzIE1lbnVNZW51SXRlbSB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBNZW51TWVudUl0ZW0pLm1lbnU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0N1c3RvbU1lbnVJdGVtKHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyBDdXN0b21NZW51SXRlbSB7XG5cdHJldHVybiAhISh2YWx1ZSBhcyBDdXN0b21NZW51SXRlbSkucmVuZGVyO1xufVxuIiwiaW1wb3J0IG1lbW9pemUgZnJvbSAnbG9kYXNoL21lbW9pemUnO1xuaW1wb3J0IHNvcnRCeSBmcm9tICdsb2Rhc2gvc29ydEJ5JztcblxuaW1wb3J0IHR5cGUge0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSwgV2VpZ2h0ZWRJdGVtfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiBTb3J0cyB3ZWlnaHRlZCBpdGVtc1xuICovXG5leHBvcnQgY29uc3Qgc29ydFdlaWdodGVkSXRlbXMgPSBtZW1vaXplKGZ1bmN0aW9uIHNvcnRXZWlnaHRlZEl0ZW1zSW1wbDxUIGV4dGVuZHMgV2VpZ2h0ZWRJdGVtPihpdGVtczogVFtdKSB7XG5cdHJldHVybiBzb3J0QnkoaXRlbXMsIHYgPT4gdi53ZWlnaHQgfHwgMCk7XG59KTtcblxuLyoqXG4gKiBTcGxpdHMgaG9yaXpvbnRhbGx5IHBvc2l0aW9uZWQgaXRlbXMgaW50byBsZWZ0IGFuZCByaWdodCBhcnJheXNcbiAqIEBwYXJhbSBpdGVtc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRIb3Jpem9udGFsSXRlbXM8VCBleHRlbmRzIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbT4oaXRlbXM6IFRbXSkge1xuXHRyZXR1cm4gaXRlbXMucmVkdWNlKFxuXHRcdChtZW1vLCB2KSA9PiB7XG5cdFx0XHRpZiAodi5wb3NpdGlvbiA9PT0gJ3JpZ2h0Jykge1xuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdGxlZnRJdGVtczogbWVtby5sZWZ0SXRlbXMsXG5cdFx0XHRcdFx0cmlnaHRJdGVtczogWy4uLm1lbW8ucmlnaHRJdGVtcywgdl0sXG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRsZWZ0SXRlbXM6IFsuLi5tZW1vLmxlZnRJdGVtcywgdl0sXG5cdFx0XHRcdHJpZ2h0SXRlbXM6IG1lbW8ucmlnaHRJdGVtcyxcblx0XHRcdH07XG5cdFx0fSxcblx0XHR7bGVmdEl0ZW1zOiBbXSwgcmlnaHRJdGVtczogW119IGFzIHtsZWZ0SXRlbXM6IFRbXTsgcmlnaHRJdGVtczogVFtdfSxcblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtIb2MsIEltcGVyaXVtQ2xpZW50fSBmcm9tICdAaW1wZXJpdW0vY2xpZW50JztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHtDb21wb25lbnRUeXBlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0RhdGFIb29rc30gZnJvbSAnLi9jb21wb25lbnRzL0RhdGFIb29rcyc7XG5pbXBvcnQge0xheW91dH0gZnJvbSAnLi9jb21wb25lbnRzL0xheW91dCc7XG5pbXBvcnQge2lzSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUsIExheW91dERhdGEsIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQud2l0aExheW91dCcpO1xuXG5jb25zdCBpbml0aWFsTGF5b3V0TW9kdWxlRGF0YTogTGF5b3V0RGF0YSA9IHtcblx0ZGF0YUhvb2tzOiBbXSxcblx0bWVudWJhcjogW10sXG5cdHN0YXR1c2JhcjogW10sXG5cdHNpZGViYXI6IFtdLFxuXHRmb290ZXI6IFtdLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHdpdGhMYXlvdXQoY2xpZW50OiBJbXBlcml1bUNsaWVudCk6IEhvYyB7XG5cdGNvbnN0IGxheW91dE1vZHVsZURhdGEgPSBjbGllbnQubW9kdWxlcy5yZWR1Y2UoKG1lbW8sIG1vZHVsZSkgPT4ge1xuXHRcdGlmIChpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlKG1vZHVsZSkpIHtcblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGRhdGFIb29rczogWy4uLm1lbW8uZGF0YUhvb2tzLCAuLi4obW9kdWxlLmxheW91dC5kYXRhSG9va3MgfHwgW10pXSxcblx0XHRcdFx0bWVudWJhcjogWy4uLm1lbW8ubWVudWJhciwgLi4uKG1vZHVsZS5sYXlvdXQubWVudWJhciB8fCBbXSldLFxuXHRcdFx0XHRzdGF0dXNiYXI6IFsuLi5tZW1vLnN0YXR1c2JhciwgLi4uKG1vZHVsZS5sYXlvdXQuc3RhdHVzYmFyIHx8IFtdKV0sXG5cdFx0XHRcdHNpZGViYXI6IFsuLi5tZW1vLnNpZGViYXIsIC4uLihtb2R1bGUubGF5b3V0LnNpZGViYXIgfHwgW10pXSxcblx0XHRcdFx0Zm9vdGVyOiBbLi4ubWVtby5mb290ZXIsIC4uLihtb2R1bGUubGF5b3V0LmZvb3RlciB8fCBbXSldLFxuXHRcdFx0fSBhcyBSZXF1aXJlZDxJbXBlcml1bUxheW91dENsaWVudE1vZHVsZVsnbGF5b3V0J10+O1xuXHRcdH1cblx0XHRyZXR1cm4gbWVtbztcblx0fSwgaW5pdGlhbExheW91dE1vZHVsZURhdGEpO1xuXHRkKCdMYXlvdXQgaXRlbXMgcHJvY2Vzc2VkJywgbGF5b3V0TW9kdWxlRGF0YSk7XG5cblx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcblx0cmV0dXJuIGZ1bmN0aW9uIGxheW91dEhvYyhXcmFwcGVkOiBDb21wb25lbnRUeXBlPGFueT4pIHtcblx0XHRjb25zdCBkaXNwbGF5TmFtZSA9IFdyYXBwZWQuZGlzcGxheU5hbWUgfHwgV3JhcHBlZC5uYW1lIHx8ICcnO1xuXG5cdFx0ZnVuY3Rpb24gV2l0aExheW91dChwcm9wczogdW5rbm93bikge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PD5cblx0XHRcdFx0XHQ8TGF5b3V0IHsuLi5sYXlvdXRNb2R1bGVEYXRhfT5cblx0XHRcdFx0XHRcdDxXcmFwcGVkIHsuLi5wcm9wc30gbGF5b3V0PXtsYXlvdXRNb2R1bGVEYXRhfSAvPlxuXHRcdFx0XHRcdDwvTGF5b3V0PlxuXHRcdFx0XHRcdDxEYXRhSG9va3MgZGF0YUhvb2tzPXtsYXlvdXRNb2R1bGVEYXRhLmRhdGFIb29rc30gLz5cblx0XHRcdFx0PC8+XG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdFdpdGhMYXlvdXQuZGlzcGxheU5hbWUgPSBgd2l0aExheW91dCgke2Rpc3BsYXlOYW1lfSlgO1xuXG5cdFx0cmV0dXJuIFdpdGhMYXlvdXQ7XG5cdH07XG59XG4iLCJpbXBvcnQgYXBpIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICAgICAgICBpbXBvcnQgY29udGVudCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG5cbnZhciBvcHRpb25zID0ge307XG5cbm9wdGlvbnMuaW5zZXJ0ID0gXCJoZWFkXCI7XG5vcHRpb25zLnNpbmdsZXRvbiA9IGZhbHNlO1xuXG52YXIgdXBkYXRlID0gYXBpKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0IGRlZmF1bHQgY29udGVudC5sb2NhbHMgfHwge307IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBpc09sZElFID0gZnVuY3Rpb24gaXNPbGRJRSgpIHtcbiAgdmFyIG1lbW87XG4gIHJldHVybiBmdW5jdGlvbiBtZW1vcml6ZSgpIHtcbiAgICBpZiAodHlwZW9mIG1lbW8gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAvLyBUZXN0IGZvciBJRSA8PSA5IGFzIHByb3Bvc2VkIGJ5IEJyb3dzZXJoYWNrc1xuICAgICAgLy8gQHNlZSBodHRwOi8vYnJvd3NlcmhhY2tzLmNvbS8jaGFjay1lNzFkODY5MmY2NTMzNDE3M2ZlZTcxNWMyMjJjYjgwNVxuICAgICAgLy8gVGVzdHMgZm9yIGV4aXN0ZW5jZSBvZiBzdGFuZGFyZCBnbG9iYWxzIGlzIHRvIGFsbG93IHN0eWxlLWxvYWRlclxuICAgICAgLy8gdG8gb3BlcmF0ZSBjb3JyZWN0bHkgaW50byBub24tc3RhbmRhcmQgZW52aXJvbm1lbnRzXG4gICAgICAvLyBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWJwYWNrLWNvbnRyaWIvc3R5bGUtbG9hZGVyL2lzc3Vlcy8xNzdcbiAgICAgIG1lbW8gPSBCb29sZWFuKHdpbmRvdyAmJiBkb2N1bWVudCAmJiBkb2N1bWVudC5hbGwgJiYgIXdpbmRvdy5hdG9iKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtbztcbiAgfTtcbn0oKTtcblxudmFyIGdldFRhcmdldCA9IGZ1bmN0aW9uIGdldFRhcmdldCgpIHtcbiAgdmFyIG1lbW8gPSB7fTtcbiAgcmV0dXJuIGZ1bmN0aW9uIG1lbW9yaXplKHRhcmdldCkge1xuICAgIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgICBpZiAod2luZG93LkhUTUxJRnJhbWVFbGVtZW50ICYmIHN0eWxlVGFyZ2V0IGluc3RhbmNlb2Ygd2luZG93LkhUTUxJRnJhbWVFbGVtZW50KSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgICAvLyBkdWUgdG8gY3Jvc3Mtb3JpZ2luIHJlc3RyaWN0aW9uc1xuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAvLyBpc3RhbmJ1bCBpZ25vcmUgbmV4dFxuICAgICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgICB9XG5cbiAgICByZXR1cm4gbWVtb1t0YXJnZXRdO1xuICB9O1xufSgpO1xuXG52YXIgc3R5bGVzSW5Eb20gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRvbS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRvbVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdXG4gICAgfTtcblxuICAgIGlmIChpbmRleCAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRG9tW2luZGV4XS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRvbVtpbmRleF0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZXNJbkRvbS5wdXNoKHtcbiAgICAgICAgaWRlbnRpZmllcjogaWRlbnRpZmllcixcbiAgICAgICAgdXBkYXRlcjogYWRkU3R5bGUob2JqLCBvcHRpb25zKSxcbiAgICAgICAgcmVmZXJlbmNlczogMVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWRlbnRpZmllcnMucHVzaChpZGVudGlmaWVyKTtcbiAgfVxuXG4gIHJldHVybiBpZGVudGlmaWVycztcbn1cblxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgdmFyIGF0dHJpYnV0ZXMgPSBvcHRpb25zLmF0dHJpYnV0ZXMgfHwge307XG5cbiAgaWYgKHR5cGVvZiBhdHRyaWJ1dGVzLm5vbmNlID09PSAndW5kZWZpbmVkJykge1xuICAgIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcgPyBfX3dlYnBhY2tfbm9uY2VfXyA6IG51bGw7XG5cbiAgICBpZiAobm9uY2UpIHtcbiAgICAgIGF0dHJpYnV0ZXMubm9uY2UgPSBub25jZTtcbiAgICB9XG4gIH1cblxuICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICBzdHlsZS5zZXRBdHRyaWJ1dGUoa2V5LCBhdHRyaWJ1dGVzW2tleV0pO1xuICB9KTtcblxuICBpZiAodHlwZW9mIG9wdGlvbnMuaW5zZXJ0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgb3B0aW9ucy5pbnNlcnQoc3R5bGUpO1xuICB9IGVsc2Uge1xuICAgIHZhciB0YXJnZXQgPSBnZXRUYXJnZXQob3B0aW9ucy5pbnNlcnQgfHwgJ2hlYWQnKTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICAgIH1cblxuICAgIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlLnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlKTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbnZhciByZXBsYWNlVGV4dCA9IGZ1bmN0aW9uIHJlcGxhY2VUZXh0KCkge1xuICB2YXIgdGV4dFN0b3JlID0gW107XG4gIHJldHVybiBmdW5jdGlvbiByZXBsYWNlKGluZGV4LCByZXBsYWNlbWVudCkge1xuICAgIHRleHRTdG9yZVtpbmRleF0gPSByZXBsYWNlbWVudDtcbiAgICByZXR1cm4gdGV4dFN0b3JlLmZpbHRlcihCb29sZWFuKS5qb2luKCdcXG4nKTtcbiAgfTtcbn0oKTtcblxuZnVuY3Rpb24gYXBwbHlUb1NpbmdsZXRvblRhZyhzdHlsZSwgaW5kZXgsIHJlbW92ZSwgb2JqKSB7XG4gIHZhciBjc3MgPSByZW1vdmUgPyAnJyA6IG9iai5tZWRpYSA/IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIikuY29uY2F0KG9iai5jc3MsIFwifVwiKSA6IG9iai5jc3M7IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSByZXBsYWNlVGV4dChpbmRleCwgY3NzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3NzTm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcyk7XG4gICAgdmFyIGNoaWxkTm9kZXMgPSBzdHlsZS5jaGlsZE5vZGVzO1xuXG4gICAgaWYgKGNoaWxkTm9kZXNbaW5kZXhdKSB7XG4gICAgICBzdHlsZS5yZW1vdmVDaGlsZChjaGlsZE5vZGVzW2luZGV4XSk7XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkTm9kZXMubGVuZ3RoKSB7XG4gICAgICBzdHlsZS5pbnNlcnRCZWZvcmUoY3NzTm9kZSwgY2hpbGROb2Rlc1tpbmRleF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBzdHlsZS5hcHBlbmRDaGlsZChjc3NOb2RlKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYXBwbHlUb1RhZyhzdHlsZSwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBvYmouY3NzO1xuICB2YXIgbWVkaWEgPSBvYmoubWVkaWE7XG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChtZWRpYSkge1xuICAgIHN0eWxlLnNldEF0dHJpYnV0ZSgnbWVkaWEnLCBtZWRpYSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdtZWRpYScpO1xuICB9XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgaWYgKHN0eWxlLnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZS5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIHN0eWxlLnJlbW92ZUNoaWxkKHN0eWxlLmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGNzcykpO1xuICB9XG59XG5cbnZhciBzaW5nbGV0b24gPSBudWxsO1xudmFyIHNpbmdsZXRvbkNvdW50ZXIgPSAwO1xuXG5mdW5jdGlvbiBhZGRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlO1xuICB2YXIgdXBkYXRlO1xuICB2YXIgcmVtb3ZlO1xuXG4gIGlmIChvcHRpb25zLnNpbmdsZXRvbikge1xuICAgIHZhciBzdHlsZUluZGV4ID0gc2luZ2xldG9uQ291bnRlcisrO1xuICAgIHN0eWxlID0gc2luZ2xldG9uIHx8IChzaW5nbGV0b24gPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykpO1xuICAgIHVwZGF0ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgZmFsc2UpO1xuICAgIHJlbW92ZSA9IGFwcGx5VG9TaW5nbGV0b25UYWcuYmluZChudWxsLCBzdHlsZSwgc3R5bGVJbmRleCwgdHJ1ZSk7XG4gIH0gZWxzZSB7XG4gICAgc3R5bGUgPSBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucyk7XG4gICAgdXBkYXRlID0gYXBwbHlUb1RhZy5iaW5kKG51bGwsIHN0eWxlLCBvcHRpb25zKTtcblxuICAgIHJlbW92ZSA9IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgIHJlbW92ZVN0eWxlRWxlbWVudChzdHlsZSk7XG4gICAgfTtcbiAgfVxuXG4gIHVwZGF0ZShvYmopO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlU3R5bGUobmV3T2JqKSB7XG4gICAgaWYgKG5ld09iaikge1xuICAgICAgaWYgKG5ld09iai5jc3MgPT09IG9iai5jc3MgJiYgbmV3T2JqLm1lZGlhID09PSBvYmoubWVkaWEgJiYgbmV3T2JqLnNvdXJjZU1hcCA9PT0gb2JqLnNvdXJjZU1hcCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmUoKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307IC8vIEZvcmNlIHNpbmdsZS10YWcgc29sdXRpb24gb24gSUU2LTksIHdoaWNoIGhhcyBhIGhhcmQgbGltaXQgb24gdGhlICMgb2YgPHN0eWxlPlxuICAvLyB0YWdzIGl0IHdpbGwgYWxsb3cgb24gYSBwYWdlXG5cbiAgaWYgKCFvcHRpb25zLnNpbmdsZXRvbiAmJiB0eXBlb2Ygb3B0aW9ucy5zaW5nbGV0b24gIT09ICdib29sZWFuJykge1xuICAgIG9wdGlvbnMuc2luZ2xldG9uID0gaXNPbGRJRSgpO1xuICB9XG5cbiAgbGlzdCA9IGxpc3QgfHwgW107XG4gIHZhciBsYXN0SWRlbnRpZmllcnMgPSBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucyk7XG4gIHJldHVybiBmdW5jdGlvbiB1cGRhdGUobmV3TGlzdCkge1xuICAgIG5ld0xpc3QgPSBuZXdMaXN0IHx8IFtdO1xuXG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXdMaXN0KSAhPT0gJ1tvYmplY3QgQXJyYXldJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5Eb21baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRvbVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5Eb21bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5Eb20uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL3NsaWNlZFRvQXJyYXlcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBpbXBlcml1bS9zdGF0ZVwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGVidWdcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImxvZGFzaC9jb21wYWN0XCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJsb2Rhc2gvbWVtb2l6ZVwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL3NvcnRCeVwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicXVlcnktc3RyaW5nXCIpOzsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcmVkdXhcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlc3BvbnNpdmVcIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJvdXRlci1kb21cIik7OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiKTs7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwic2VtYW50aWMtdWktcmVhY3RcIik7OyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgdHlwZSB7SW1wZXJpdW1TdGF0ZUNsaWVudE1vZHVsZX0gZnJvbSAnQGltcGVyaXVtL3N0YXRlJztcbmltcG9ydCB7dXNlTW9iaWxlTGF5b3V0fSBmcm9tICcuL2hvb2tzL3VzZU1vYmlsZUxheW91dCc7XG5pbXBvcnQge3N0YXRlfSBmcm9tICcuL3N0YXRlJztcbmltcG9ydCB0eXBlIHtJbXBlcml1bUxheW91dENsaWVudE1vZHVsZX0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge3dpdGhMYXlvdXR9IGZyb20gJy4vd2l0aExheW91dCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXlvdXRDbGllbnRNb2R1bGUoKTogSW1wZXJpdW1TdGF0ZUNsaWVudE1vZHVsZSAmIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIHtcblx0cmV0dXJuIHtcblx0XHRuYW1lOiAnQGltcGVyaXVtL2xheW91dCcsXG5cdFx0b3JkZXI6IDMwLFxuXHRcdGhvY3M6IFt3aXRoTGF5b3V0XSxcblx0XHRzdGF0ZSxcblx0XHRsYXlvdXQ6IHtcblx0XHRcdGRhdGFIb29rczogW3VzZU1vYmlsZUxheW91dF0sXG5cdFx0fSxcblx0fTtcbn1cblxuZXhwb3J0IHR5cGUge0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlLCBMYXlvdXREYXRhfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7dXNlTGF5b3V0U3RhdGUsIGFjdGlvbnMgYXMgbGF5b3V0QWN0aW9uc30gZnJvbSAnLi9zdGF0ZSc7XG4iXSwic291cmNlUm9vdCI6IiJ9
|
|
2013
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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IjpbIndlYnBhY2s6Ly8vLi9jb21wb25lbnRzL3N0eWxlcy5jc3MiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9hcGkuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9jc3MtbG9hZGVyL2Rpc3QvcnVudGltZS9zb3VyY2VNYXBzLmpzIiwid2VicGFjazovLy8uL2NvbXBvbmVudHMvRGF0YUhvb2tzLnRzeCIsIndlYnBhY2s6Ly8vLi9jb21wb25lbnRzL0Ryb3Bkb3duSXRlbU1lbnUudHN4Iiwid2VicGFjazovLy8uL2NvbXBvbmVudHMvRXhlY3V0ZURhdGFIb29rLnRzeCIsIndlYnBhY2s6Ly8vLi9jb21wb25lbnRzL0V4ZWN1dGVTZWxlY3Rvckhvb2sudHN4Iiwid2VicGFjazovLy8uL2NvbXBvbmVudHMvSXRlbUJhci50c3giLCJ3ZWJwYWNrOi8vLy4vY29tcG9uZW50cy9JdGVtQmFySXRlbS50c3giLCJ3ZWJwYWNrOi8vLy4vY29tcG9uZW50cy9MYXlvdXQudHN4Iiwid2VicGFjazovLy8uL2NvbXBvbmVudHMvTWVudUl0ZW1NZW51LnRzeCIsIndlYnBhY2s6Ly8vLi9jb21wb25lbnRzL1JlbmRlckNvbXBvbmVudC50c3giLCJ3ZWJwYWNrOi8vLy4vY29tcG9uZW50cy9SZW5kZXJJZlZpc2libGUudHN4Iiwid2VicGFjazovLy8uL2hvb2tzL3VzZU1vYmlsZUxheW91dC50cyIsIndlYnBhY2s6Ly8vLi9zdGF0ZS50cyIsIndlYnBhY2s6Ly8vLi90eXBlcy50cyIsIndlYnBhY2s6Ly8vLi91dGlscy50cyIsIndlYnBhY2s6Ly8vLi93aXRoTGF5b3V0LnRzeCIsIndlYnBhY2s6Ly8vLi9jb21wb25lbnRzL3N0eWxlcy5jc3M/Nzk0ZiIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovLy8uLi8uLi8uLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRTdHlsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3NldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcy5qcyIsIndlYnBhY2s6Ly8vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy90b0NvbnN1bWFibGVBcnJheVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkBpbXBlcml1bS9zdGF0ZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJkZWJ1Z1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcImxvZGFzaC9jb21wYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibG9kYXNoL21lbW9pemVcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJsb2Rhc2gvc29ydEJ5XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwibWluZ29cIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJxdWVyeXN0cmluZ1wiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZXNwb25zaXZlXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3Qtcm91dGVyLWRvbVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1kZXYtcnVudGltZVwiIiwid2VicGFjazovLy9leHRlcm5hbCBjb21tb25qcyBcInNlbWFudGljLXVpLXJlYWN0XCIiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly8vd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovLy8uL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIEltcG9ydHNcbmltcG9ydCBfX19DU1NfTE9BREVSX0FQSV9TT1VSQ0VNQVBfSU1QT1JUX19fIGZyb20gXCIuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qc1wiO1xuaW1wb3J0IF9fX0NTU19MT0FERVJfQVBJX0lNUE9SVF9fXyBmcm9tIFwiLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qc1wiO1xudmFyIF9fX0NTU19MT0FERVJfRVhQT1JUX19fID0gX19fQ1NTX0xPQURFUl9BUElfSU1QT1JUX19fKF9fX0NTU19MT0FERVJfQVBJX1NPVVJDRU1BUF9JTVBPUlRfX18pO1xuLy8gTW9kdWxlXG5fX19DU1NfTE9BREVSX0VYUE9SVF9fXy5wdXNoKFttb2R1bGUuaWQsIFwiLyogTmVlZCB0byBwYXNzIDEwMCUgaGVpZ2h0IGFsbCB0aGUgd2F5IGRvd24gKi9cXG4jcm9vdCB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG4jcm9vdCA+IGRpdiB7XFxuXFx0aGVpZ2h0OiAxMDAlO1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX3BhcmVudC0tYUV0ZEQge1xcblxcdG1pbi1oZWlnaHQ6IDEwMCU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX21lbnViYXItLU81ZTFuIHtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jb21wb25lbnRzLXN0eWxlc19fc3RhdHVzYmFyLS1CUmJqVyB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdGJhY2tncm91bmQtY29sb3I6IHJnYig0NSwgNDUsIDQ1KSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX3NpZGViYXItLU43S1ZkIHtcXG5cXHRtaW4td2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7XFxuXFx0d2lkdGg6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0b3ZlcmZsb3cteDogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0dHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4zcyBlYXNlLWluLW91dDtcXG59XFxuXFxuLmNvbXBvbmVudHMtc3R5bGVzX19zaWRlYmFySGlkZGVuLS1KWDdYeSB7XFxuXFx0bWFyZ2luLWxlZnQ6IC0yMjBweCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnRXcmFwcGVyLS1pU2RjdiB7XFxuXFx0ZmxleDogMTtcXG5cXHRkaXNwbGF5OiBmbGV4O1xcblxcdGZsZXgtZGlyZWN0aW9uOiByb3c7XFxuXFx0ZmxleC13cmFwOiBub3dyYXA7XFxuXFx0cGFkZGluZzogMCAhaW1wb3J0YW50O1xcblxcdGJvcmRlcjogMCBzb2xpZCB0cmFuc3BhcmVudCAhaW1wb3J0YW50OyAvKiB0aGlzIGlzIGEgc2VnbWVudCwgYW5kIHRoZXkgc2VlbSB0byBoYXZlIGEgMXB4IHdoaXRlIGJvcmRlciBieSBkZWZhdWx0ICovXFxuXFx0Lypib3JkZXItdG9wOiAycHggc29saWQgcmdiKDIxNywgMTI4LCA0OCkgIWltcG9ydGFudDsqL1xcblxcdG92ZXJmbG93LXk6IGF1dG87IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX2NvbnRlbnQtLVdPb3lMIHtcXG5cXHRmbGV4OiAxOyAvKiBjaGFuZ2VkIHRoaXMgdG8gaGF2ZSBhIGZsZXggb2Ygb25lIGluc3RlYWQgb2YgYXV0byBzbyB0aGUgc2lkZSBtZW51IGRvZXNuJ3QgZ2V0IHNxdWlzaGVkICovXFxuXFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcXG5cXHRwYWRkaW5nOiAxZW0gMWVtO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtaGVpZ2h0OiAxMDAlOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdGJhY2tncm91bmQtY29sb3I6ICNlYWVhZWE7XFxuXFx0Y29sb3I6ICNiZmJmYmY7XFxufVxcblxcbi5jb21wb25lbnRzLXN0eWxlc19fZm9vdGVyLS1mRFhBVyB7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdGJhY2tncm91bmQtY29sb3I6IHJnYig0NSwgNDUsIDQ1KSAhaW1wb3J0YW50O1xcbn1cXG5cXG4uY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uLS1aWmxMeSB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duSWNvblJvdGF0ZWQtLVVjTE5wIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLmNvbXBvbmVudHMtc3R5bGVzX192ZXJ0aWNhbERyb3Bkb3duVGl0bGUtLVJHN1VYIHtcXG5cXHRwYWRkaW5nOiAwO1xcblxcdGNvbG9yOiAjZmZmICFpbXBvcnRhbnQ7XFxufVxcblxcbi5jb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93bkNvbnRlbnQtLV96bFBlIHtcXG5cXHRib3JkZXI6IDFweCBzb2xpZCByZ2IoNDUsIDQ1LCA0NSk7XFxuXFx0cGFkZGluZy10b3A6IDAgIWltcG9ydGFudDtcXG5cXHRtYXJnaW46IDAgLTEuMTQyODU3MTRlbSAwIDA7XFxuXFx0Ym9yZGVyLXJhZGl1czogMDtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDUsIDQ1LCA0NSk7XFxufVxcblxcbi5jb21wb25lbnRzLXN0eWxlc19faWNvbi0tQlRPVDQge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGxpbmVhcjtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5jb21wb25lbnRzLXN0eWxlc19faWNvblJvdGF0ZWQtLU5uVElpIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSgtMTgwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC41cztcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblwiLCBcIlwiLHtcInZlcnNpb25cIjozLFwic291cmNlc1wiOltcIndlYnBhY2s6Ly8uL2NvbXBvbmVudHMvc3R5bGVzLmNzc1wiXSxcIm5hbWVzXCI6W10sXCJtYXBwaW5nc1wiOlwiQUFBQSw4Q0FBOEM7QUFDOUM7Q0FDQyxZQUFZO0FBQ2I7QUFDQTtDQUNDLFlBQVk7QUFDYjs7QUFFQTtDQUNDLGdCQUFnQjtDQUNoQixhQUFhO0NBQ2Isc0JBQXNCO0FBQ3ZCOztBQUVBO0NBQ0MsMkJBQTJCO0NBQzNCLG9CQUFvQjtBQUNyQjs7QUFFQTtDQUNDLG9CQUFvQjtDQUNwQiwyQkFBMkI7Q0FDM0IsNENBQTRDO0FBQzdDOztBQUVBO0NBQ0MsMkJBQTJCO0NBQzNCLHNCQUFzQjtDQUN0Qix1QkFBdUI7Q0FDdkIsMkJBQTJCO0NBQzNCLG9CQUFvQjtDQUNwQixnQkFBZ0IsRUFBRSw4REFBOEQ7Q0FDaEYsd0NBQXdDO0FBQ3pDOztBQUVBO0NBQ0MsOEJBQThCO0FBQy9COztBQUVBO0NBQ0MsT0FBTztDQUNQLGFBQWE7Q0FDYixtQkFBbUI7Q0FDbkIsaUJBQWlCO0NBQ2pCLHFCQUFxQjtDQUNyQixzQ0FBc0MsRUFBRSwyRUFBMkU7Q0FDbkgsc0RBQXNEO0NBQ3RELGdCQUFnQixFQUFFLDhEQUE4RDtBQUNqRjs7QUFFQTtDQUNDLE9BQU8sRUFBRSw2RkFBNkY7Q0FDdEcseUJBQXlCO0NBQ3pCLGdCQUFnQjtDQUNoQixZQUFZO0NBQ1osZ0JBQWdCLEVBQUUsOERBQThEO0NBQ2hGLGtCQUFrQixFQUFFLDhEQUE4RDtDQUNsRix5QkFBeUI7Q0FDekIsY0FBYztBQUNmOztBQUVBO0NBQ0Msb0JBQW9CO0NBQ3BCLDJCQUEyQjtDQUMzQiw0Q0FBNEM7QUFDN0M7O0FBRUE7Q0FDQyx1QkFBdUI7Q0FDdkIsMkJBQTJCO0NBQzNCLGVBQWU7QUFDaEI7O0FBRUE7Q0FDQyx3QkFBd0I7Q0FDeEIsMkJBQTJCO0NBQzNCLGVBQWU7QUFDaEI7O0FBRUE7Q0FDQyxVQUFVO0NBQ1Ysc0JBQXNCO0FBQ3ZCOztBQUVBO0NBQ0MsaUNBQWlDO0NBQ2pDLHlCQUF5QjtDQUN6QiwyQkFBMkI7Q0FDM0IsZ0JBQWdCO0NBQ2hCLGlDQUFpQztBQUNsQzs7QUFFQTtDQUNDLHVCQUF1QjtDQUN2QixpQ0FBaUM7Q0FDakMsZUFBZTtBQUNoQjs7QUFFQTtDQUNDLDBCQUEwQjtDQUMxQiwwQkFBMEI7Q0FDMUIsZUFBZTtBQUNoQlwiLFwic291cmNlc0NvbnRlbnRcIjpbXCIvKiBOZWVkIHRvIHBhc3MgMTAwJSBoZWlnaHQgYWxsIHRoZSB3YXkgZG93biAqL1xcbjpnbG9iYWwoI3Jvb3QpIHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcbjpnbG9iYWwoI3Jvb3QpID4gZGl2IHtcXG5cXHRoZWlnaHQ6IDEwMCU7XFxufVxcblxcbi5wYXJlbnQge1xcblxcdG1pbi1oZWlnaHQ6IDEwMCU7XFxuXFx0ZGlzcGxheTogZmxleDtcXG5cXHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xcbn1cXG5cXG4ubWVudWJhciB7XFxuXFx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcbn1cXG5cXG4uc3RhdHVzYmFyIHtcXG5cXHRtYXJnaW46IDAgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0YmFja2dyb3VuZC1jb2xvcjogcmdiKDQ1LCA0NSwgNDUpICFpbXBvcnRhbnQ7XFxufVxcblxcbi5zaWRlYmFyIHtcXG5cXHRtaW4td2lkdGg6IDIyMHB4ICFpbXBvcnRhbnQ7XFxuXFx0d2lkdGg6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDtcXG5cXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XFxuXFx0bWFyZ2luOiAwICFpbXBvcnRhbnQ7XFxuXFx0b3ZlcmZsb3cteDogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxuXFx0dHJhbnNpdGlvbjogbWFyZ2luLWxlZnQgMC4zcyBlYXNlLWluLW91dDtcXG59XFxuXFxuLnNpZGViYXJIaWRkZW4ge1xcblxcdG1hcmdpbi1sZWZ0OiAtMjIwcHggIWltcG9ydGFudDtcXG59XFxuXFxuLmNvbnRlbnRXcmFwcGVyIHtcXG5cXHRmbGV4OiAxO1xcblxcdGRpc3BsYXk6IGZsZXg7XFxuXFx0ZmxleC1kaXJlY3Rpb246IHJvdztcXG5cXHRmbGV4LXdyYXA6IG5vd3JhcDtcXG5cXHRwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XFxuXFx0Ym9yZGVyOiAwIHNvbGlkIHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7IC8qIHRoaXMgaXMgYSBzZWdtZW50LCBhbmQgdGhleSBzZWVtIHRvIGhhdmUgYSAxcHggd2hpdGUgYm9yZGVyIGJ5IGRlZmF1bHQgKi9cXG5cXHQvKmJvcmRlci10b3A6IDJweCBzb2xpZCByZ2IoMjE3LCAxMjgsIDQ4KSAhaW1wb3J0YW50OyovXFxuXFx0b3ZlcmZsb3cteTogYXV0bzsgLyogYWRkZWQgdG8gbWFrZSB0aGUgY29udGVudCBzY3JvbGwgYW5kIG5vdCB0aGUgd2hvbGUgbGF5b3V0ICovXFxufVxcblxcbi5jb250ZW50IHtcXG5cXHRmbGV4OiAxOyAvKiBjaGFuZ2VkIHRoaXMgdG8gaGF2ZSBhIGZsZXggb2Ygb25lIGluc3RlYWQgb2YgYXV0byBzbyB0aGUgc2lkZSBtZW51IGRvZXNuJ3QgZ2V0IHNxdWlzaGVkICovXFxuXFx0YWxpZ24tY29udGVudDogZmxleC1zdGFydDtcXG5cXHRwYWRkaW5nOiAxZW0gMWVtO1xcblxcdGhlaWdodDogMTAwJTtcXG5cXHRtYXgtaGVpZ2h0OiAxMDAlOyAvKiBhZGRlZCB0byBtYWtlIHRoZSBjb250ZW50IHNjcm9sbCBhbmQgbm90IHRoZSB3aG9sZSBsYXlvdXQgKi9cXG5cXHRvdmVyZmxvdy14OiBoaWRkZW47IC8qIGFkZGVkIHRvIG1ha2UgdGhlIGNvbnRlbnQgc2Nyb2xsIGFuZCBub3QgdGhlIHdob2xlIGxheW91dCAqL1xcblxcdGJhY2tncm91bmQtY29sb3I6ICNlYWVhZWE7XFxuXFx0Y29sb3I6ICNiZmJmYmY7XFxufVxcblxcbi5mb290ZXIge1xcblxcdG1hcmdpbjogMCAhaW1wb3J0YW50O1xcblxcdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcXG5cXHRiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoNDUsIDQ1LCA0NSkgIWltcG9ydGFudDtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25JY29uIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcXG5cXHR0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4zcyA7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cXG4udmVydGljYWxEcm9wZG93bkljb25Sb3RhdGVkIHtcXG5cXHR0cmFuc2Zvcm06IHJvdGF0ZSg5MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgO1xcblxcdGN1cnNvcjogcG9pbnRlcjtcXG59XFxuXFxuLnZlcnRpY2FsRHJvcGRvd25UaXRsZSB7XFxuXFx0cGFkZGluZzogMDtcXG5cXHRjb2xvcjogI2ZmZiAhaW1wb3J0YW50O1xcbn1cXG5cXG4udmVydGljYWxEcm9wZG93bkNvbnRlbnQge1xcblxcdGJvcmRlcjogMXB4IHNvbGlkIHJnYig0NSwgNDUsIDQ1KTtcXG5cXHRwYWRkaW5nLXRvcDogMCAhaW1wb3J0YW50O1xcblxcdG1hcmdpbjogMCAtMS4xNDI4NTcxNGVtIDAgMDtcXG5cXHRib3JkZXItcmFkaXVzOiAwO1xcblxcdGJhY2tncm91bmQtY29sb3I6IHJnYig0NSwgNDUsIDQ1KTtcXG59XFxuXFxuLmljb24ge1xcblxcdHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xcblxcdHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjRzIGxpbmVhcjtcXG5cXHRjdXJzb3I6IHBvaW50ZXI7XFxufVxcblxcbi5pY29uUm90YXRlZCB7XFxuXFx0dHJhbnNmb3JtOiByb3RhdGUoLTE4MGRlZyk7XFxuXFx0dHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuNXM7XFxuXFx0Y3Vyc29yOiBwb2ludGVyO1xcbn1cXG5cIl0sXCJzb3VyY2VSb290XCI6XCJcIn1dKTtcbi8vIEV4cG9ydHNcbl9fX0NTU19MT0FERVJfRVhQT1JUX19fLmxvY2FscyA9IHtcblx0XCJwYXJlbnRcIjogXCJjb21wb25lbnRzLXN0eWxlc19fcGFyZW50LS1hRXRkRFwiLFxuXHRcIm1lbnViYXJcIjogXCJjb21wb25lbnRzLXN0eWxlc19fbWVudWJhci0tTzVlMW5cIixcblx0XCJzdGF0dXNiYXJcIjogXCJjb21wb25lbnRzLXN0eWxlc19fc3RhdHVzYmFyLS1CUmJqV1wiLFxuXHRcInNpZGViYXJcIjogXCJjb21wb25lbnRzLXN0eWxlc19fc2lkZWJhci0tTjdLVmRcIixcblx0XCJzaWRlYmFySGlkZGVuXCI6IFwiY29tcG9uZW50cy1zdHlsZXNfX3NpZGViYXJIaWRkZW4tLUpYN1h5XCIsXG5cdFwiY29udGVudFdyYXBwZXJcIjogXCJjb21wb25lbnRzLXN0eWxlc19fY29udGVudFdyYXBwZXItLWlTZGN2XCIsXG5cdFwiY29udGVudFwiOiBcImNvbXBvbmVudHMtc3R5bGVzX19jb250ZW50LS1XT295TFwiLFxuXHRcImZvb3RlclwiOiBcImNvbXBvbmVudHMtc3R5bGVzX19mb290ZXItLWZEWEFXXCIsXG5cdFwidmVydGljYWxEcm9wZG93bkljb25cIjogXCJjb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93bkljb24tLVpabEx5XCIsXG5cdFwidmVydGljYWxEcm9wZG93bkljb25Sb3RhdGVkXCI6IFwiY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZC0tVWNMTnBcIixcblx0XCJ2ZXJ0aWNhbERyb3Bkb3duVGl0bGVcIjogXCJjb21wb25lbnRzLXN0eWxlc19fdmVydGljYWxEcm9wZG93blRpdGxlLS1SRzdVWFwiLFxuXHRcInZlcnRpY2FsRHJvcGRvd25Db250ZW50XCI6IFwiY29tcG9uZW50cy1zdHlsZXNfX3ZlcnRpY2FsRHJvcGRvd25Db250ZW50LS1femxQZVwiLFxuXHRcImljb25cIjogXCJjb21wb25lbnRzLXN0eWxlc19faWNvbi0tQlRPVDRcIixcblx0XCJpY29uUm90YXRlZFwiOiBcImNvbXBvbmVudHMtc3R5bGVzX19pY29uUm90YXRlZC0tTm5USWlcIlxufTtcbmV4cG9ydCBkZWZhdWx0IF9fX0NTU19MT0FERVJfRVhQT1JUX19fO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107IC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblxuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICB2YXIgbmVlZExheWVyID0gdHlwZW9mIGl0ZW1bNV0gIT09IFwidW5kZWZpbmVkXCI7XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcblxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9OyAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuXG5cbiAgbGlzdC5pID0gZnVuY3Rpb24gaShtb2R1bGVzLCBtZWRpYSwgZGVkdXBlLCBzdXBwb3J0cywgbGF5ZXIpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIHVuZGVmaW5lZF1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgdGhpcy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIGlkID0gdGhpc1tfaV1bMF07XG5cbiAgICAgICAgaWYgKGlkICE9IG51bGwpIHtcbiAgICAgICAgICBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzW2lkXSA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKHZhciBfaTIgPSAwOyBfaTIgPCBtb2R1bGVzLmxlbmd0aDsgX2kyKyspIHtcbiAgICAgIHZhciBpdGVtID0gW10uY29uY2F0KG1vZHVsZXNbX2kyXSk7XG5cbiAgICAgIGlmIChkZWR1cGUgJiYgYWxyZWFkeUltcG9ydGVkTW9kdWxlc1tpdGVtWzBdXSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICBpZiAodHlwZW9mIGl0ZW1bNV0gPT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzVdID0gbGF5ZXI7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG1lZGlhKSB7XG4gICAgICAgIGlmICghaXRlbVsyXSkge1xuICAgICAgICAgIGl0ZW1bMl0gPSBtZWRpYTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpdGVtWzFdID0gXCJAbWVkaWEgXCIuY29uY2F0KGl0ZW1bMl0sIFwiIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKHN1cHBvcnRzKSB7XG4gICAgICAgIGlmICghaXRlbVs0XSkge1xuICAgICAgICAgIGl0ZW1bNF0gPSBcIlwiLmNvbmNhdChzdXBwb3J0cyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQHN1cHBvcnRzIChcIi5jb25jYXQoaXRlbVs0XSwgXCIpIHtcIikuY29uY2F0KGl0ZW1bMV0sIFwifVwiKTtcbiAgICAgICAgICBpdGVtWzRdID0gc3VwcG9ydHM7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGlzdC5wdXNoKGl0ZW0pO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gbGlzdDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgdmFyIGNvbnRlbnQgPSBpdGVtWzFdO1xuICB2YXIgY3NzTWFwcGluZyA9IGl0ZW1bM107XG5cbiAgaWYgKCFjc3NNYXBwaW5nKSB7XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICBpZiAodHlwZW9mIGJ0b2EgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIHZhciBiYXNlNjQgPSBidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShjc3NNYXBwaW5nKSkpKTtcbiAgICB2YXIgZGF0YSA9IFwic291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtODtiYXNlNjQsXCIuY29uY2F0KGJhc2U2NCk7XG4gICAgdmFyIHNvdXJjZU1hcHBpbmcgPSBcIi8qIyBcIi5jb25jYXQoZGF0YSwgXCIgKi9cIik7XG4gICAgdmFyIHNvdXJjZVVSTHMgPSBjc3NNYXBwaW5nLnNvdXJjZXMubWFwKGZ1bmN0aW9uIChzb3VyY2UpIHtcbiAgICAgIHJldHVybiBcIi8qIyBzb3VyY2VVUkw9XCIuY29uY2F0KGNzc01hcHBpbmcuc291cmNlUm9vdCB8fCBcIlwiKS5jb25jYXQoc291cmNlLCBcIiAqL1wiKTtcbiAgICB9KTtcbiAgICByZXR1cm4gW2NvbnRlbnRdLmNvbmNhdChzb3VyY2VVUkxzKS5jb25jYXQoW3NvdXJjZU1hcHBpbmddKS5qb2luKFwiXFxuXCIpO1xuICB9XG5cbiAgcmV0dXJuIFtjb250ZW50XS5qb2luKFwiXFxuXCIpO1xufTsiLCJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUge0RhdGFIb29rfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0V4ZWN1dGVEYXRhSG9va30gZnJvbSAnLi9FeGVjdXRlRGF0YUhvb2snO1xuXG5pbnRlcmZhY2UgRGF0YUhvb2tzUHJvcHMge1xuXHRkYXRhSG9va3M6IERhdGFIb29rW107XG59XG5cbi8qKlxuICogUmVuZGVycyBsYXlvdXQgZGF0YSBob29rcy4gVGhlc2UgaG9va3Mgc2hvdWxkIHJldHVybiBub3RoaW5nLiBBbGwgaW50ZXJhY3Rpb24gc2hvdWxkIGJlIGluIHNpZGUtZWZmZWN0cywgdXN1YWxseSByZXRyaWV2aW5nIGRhdGEgYW5kIHNldHRpbmcgUmVkdXggc3RhdGUuXG4gKiBAcGFyYW0gZGF0YUhvb2tzXG4gKiBAY29uc3RydWN0b3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIERhdGFIb29rcyh7ZGF0YUhvb2tzfTogRGF0YUhvb2tzUHJvcHMpIHtcblx0cmV0dXJuIChcblx0XHQ8PlxuXHRcdFx0e2RhdGFIb29rcy5tYXAoKGhvb2ssIGluZGV4KSA9PiAoXG5cdFx0XHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRcdFx0PEV4ZWN1dGVEYXRhSG9vayBrZXk9e2luZGV4fSBkYXRhSG9vaz17aG9va30gLz5cblx0XHRcdCkpfVxuXHRcdDwvPlxuXHQpO1xufVxuIiwiaW1wb3J0IFJlYWN0LCB7dXNlU3RhdGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7QWNjb3JkaW9uLCBEcm9wZG93biwgSWNvbiwgTWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0Ryb3Bkb3duTWVudUl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi9zdHlsZXMuY3NzJztcblxuaW50ZXJmYWNlIERyb3Bkb3duQWNjb3JkaW9uUHJvcHMge1xuXHR2ZXJ0aWNhbDogYm9vbGVhbjtcblx0aXRlbTogRHJvcGRvd25NZW51SXRlbTtcblx0Y2hpbGRyZW46IEpTWC5FbGVtZW50W107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBEcm9wZG93bkl0ZW1NZW51KHtpdGVtLCBjaGlsZHJlbiwgdmVydGljYWx9OiBEcm9wZG93bkFjY29yZGlvblByb3BzKSB7XG5cdGNvbnN0IFtvcGVuLCBzZXRPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuXHRpZiAodmVydGljYWwpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1lbnUuSXRlbSBjbGFzc05hbWU9XCJpbXBlcml1bVZlcnRpY2FsRHJvcGRvd25cIj5cblx0XHRcdFx0PEFjY29yZGlvbiBmbHVpZD5cblx0XHRcdFx0XHQ8QWNjb3JkaW9uLlRpdGxlXG5cdFx0XHRcdFx0XHRjbGFzc05hbWU9e3N0eWxlcy52ZXJ0aWNhbERyb3Bkb3duVGl0bGV9XG5cdFx0XHRcdFx0XHRvbkNsaWNrPXtldiA9PiB7XG5cdFx0XHRcdFx0XHRcdGV2LnN0b3BQcm9wYWdhdGlvbigpO1xuXHRcdFx0XHRcdFx0XHRzZXRPcGVuKCFvcGVuKTtcblx0XHRcdFx0XHRcdH19XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdFx0PEljb24gY2xhc3NOYW1lPXtvcGVuID8gc3R5bGVzLnZlcnRpY2FsRHJvcGRvd25JY29uUm90YXRlZCA6IHN0eWxlcy52ZXJ0aWNhbERyb3Bkb3duSWNvbn0gbmFtZT1cImFycm93IHJpZ2h0XCIgLz5cblx0XHRcdFx0XHRcdHtpdGVtLnRleHR9XG5cdFx0XHRcdFx0PC9BY2NvcmRpb24uVGl0bGU+XG5cdFx0XHRcdFx0PEFjY29yZGlvbi5Db250ZW50IGFjdGl2ZT17b3Blbn0gY2xhc3NOYW1lPXtgJHtzdHlsZXMudmVydGljYWxEcm9wZG93bkNvbnRlbnR9IGltcGVyaXVtVmVydGljYWxEcm9wZG93bkNvbnRlbnRgfSBjaGlsZHJlbj17Y2hpbGRyZW59IC8+XG5cdFx0XHRcdDwvQWNjb3JkaW9uPlxuXHRcdFx0PC9NZW51Lkl0ZW0+XG5cdFx0KTtcblx0fVxuXG5cdHJldHVybiAoXG5cdFx0PERyb3Bkb3duIGl0ZW0gdGV4dD17aXRlbS50ZXh0fSBjbGFzc05hbWU9XCJpbXBlcml1bURyb3Bkb3duXCI+XG5cdFx0XHQ8RHJvcGRvd24uTWVudSBjbGFzc05hbWU9XCJpbXBlcml1bURyb3Bkb3duQ29udGVudFwiPntjaGlsZHJlbn08L0Ryb3Bkb3duLk1lbnU+XG5cdFx0PC9Ecm9wZG93bj5cblx0KTtcbn1cbiIsImltcG9ydCB0eXBlIHtEYXRhSG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgRXhlY3V0ZURhdGFIb29rUHJvcHMge1xuXHRkYXRhSG9vazogRGF0YUhvb2s7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBFeGVjdXRlRGF0YUhvb2soe2RhdGFIb29rfTogRXhlY3V0ZURhdGFIb29rUHJvcHMpIHtcblx0ZGF0YUhvb2soKTtcblx0cmV0dXJuIG51bGw7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IHR5cGUge1NlbGVjdG9ySG9va30gZnJvbSAnLi4vdHlwZXMnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb21wb25lbnRzLkV4ZWN1dGVTZWxlY3Rvckhvb2snKTtcblxuaW50ZXJmYWNlIFNlbGVjdG9ySG9va1Byb3BzIHtcblx0aG9vazogU2VsZWN0b3JIb29rPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pjtcblx0cmVuZGVyOiAoZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IEpTWC5FbGVtZW50IHwgbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEV4ZWN1dGVTZWxlY3Rvckhvb2soe3JlbmRlciwgaG9va306IFNlbGVjdG9ySG9va1Byb3BzKSB7XG5cdGNvbnN0IGRhdGEgPSBob29rKCk7XG5cdHJldHVybiByZW5kZXIoZGF0YSk7XG59XG4iLCJpbXBvcnQgZGVidWcgZnJvbSAnZGVidWcnO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge01lbnVQcm9wc30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge0l0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7aXNDdXN0b21NZW51SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtzb3J0V2VpZ2h0ZWRJdGVtcywgc3BsaXRIb3Jpem9udGFsSXRlbXN9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7SXRlbUJhckl0ZW19IGZyb20gJy4vSXRlbUJhckl0ZW0nO1xuaW1wb3J0IHtSZW5kZXJDb21wb25lbnR9IGZyb20gJy4vUmVuZGVyQ29tcG9uZW50JztcblxuY29uc3QgZCA9IGRlYnVnKCdpbXBlcml1bS5sYXlvdXQuY29tcG9uZW50cy5JdGVtQmFyJyk7XG5cbmludGVyZmFjZSBJdGVtQmFyUHJvcHMgZXh0ZW5kcyBNZW51UHJvcHMge1xuXHRuYW1lOiBzdHJpbmc7XG5cdGl0ZW1zOiBJdGVtW107XG5cdHNpZGViYXI/OiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBtYXBJdGVtcyhuYW1lOiBzdHJpbmcsIGl0ZW1zOiBJdGVtW10sIHByb3BzOiBNZW51UHJvcHMpIHtcblx0cmV0dXJuIGl0ZW1zLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcblx0XHRpZiAoaXNDdXN0b21NZW51SXRlbShpdGVtKSkge1xuXHRcdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L25vLWFycmF5LWluZGV4LWtleVxuXHRcdFx0cmV0dXJuIDxSZW5kZXJDb21wb25lbnQga2V5PXtgJHtuYW1lfSR7aW5kZXh9YH0gcmVuZGVyPXtpdGVtLnJlbmRlcn0gLz47XG5cdFx0fVxuXHRcdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXlcblx0XHRyZXR1cm4gPEl0ZW1CYXJJdGVtIGtleT17YCR7bmFtZX0ke2l0ZW0udGV4dH0ke2luZGV4fWB9IGl0ZW09e2l0ZW19IHZlcnRpY2FsPXtwcm9wcy52ZXJ0aWNhbH0gLz47XG5cdH0pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gSXRlbUJhcih7bmFtZSwgaXRlbXMsIC4uLnJlc3R9OiBJdGVtQmFyUHJvcHMpIHtcblx0Y29uc3QgaW1zID0gc3BsaXRIb3Jpem9udGFsSXRlbXMoaXRlbXMpO1xuXG5cdGNvbnN0IGxlZnQgPSBtYXBJdGVtcyhuYW1lLCBzb3J0V2VpZ2h0ZWRJdGVtcyhpbXMubGVmdEl0ZW1zKSwgcmVzdCk7XG5cdGNvbnN0IHJpZ2h0TWFwcGVkSXRlbXMgPSBtYXBJdGVtcyhuYW1lLCBzb3J0V2VpZ2h0ZWRJdGVtcyhpbXMucmlnaHRJdGVtcyksIHJlc3QpO1xuXHRjb25zdCByaWdodCA9IHJlc3QudmVydGljYWwgPyByaWdodE1hcHBlZEl0ZW1zIDogPE1lbnUuTWVudSBwb3NpdGlvbj1cInJpZ2h0XCI+e3JpZ2h0TWFwcGVkSXRlbXN9PC9NZW51Lk1lbnU+O1xuXG5cdHJldHVybiAoXG5cdFx0PE1lbnUgey4uLnJlc3R9PlxuXHRcdFx0e2xlZnQubGVuZ3RoID4gMCA/IGxlZnQgOiBudWxsfVxuXHRcdFx0e2ltcy5yaWdodEl0ZW1zLmxlbmd0aCA+IDAgPyByaWdodCA6IG51bGx9XG5cdFx0PC9NZW51PlxuXHQpO1xufVxuIiwiaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0xpbmssIFJvdXRlUHJvcHMsIHVzZUxvY2F0aW9uLCB1c2VSb3V0ZU1hdGNofSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB7RHJvcGRvd24sIEljb24sIE1lbnV9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB0eXBlIHtMb2NhdGlvbn0gZnJvbSAnaGlzdG9yeSc7XG5pbXBvcnQgdHlwZSB7QmFzZUl0ZW0sIERyb3Bkb3duTWVudUl0ZW0sIE1lbnVNZW51SXRlbSwgUm91dGVJdGVtfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge2lzRHJvcGRvd25NZW51SXRlbSwgaXNNZW51TWVudUl0ZW19IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7c29ydFdlaWdodGVkSXRlbXN9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCB7RHJvcGRvd25JdGVtTWVudX0gZnJvbSAnLi9Ecm9wZG93bkl0ZW1NZW51JztcbmltcG9ydCB7TWVudUl0ZW1NZW51fSBmcm9tICcuL01lbnVJdGVtTWVudSc7XG5pbXBvcnQge1JlbmRlcklmVmlzaWJsZX0gZnJvbSAnLi9SZW5kZXJJZlZpc2libGUnO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb21wb25lbnRzLkl0ZW1CYXJJdGVtJyk7XG5cbmludGVyZmFjZSBJdGVtQmFySXRlbVByb3BzIHtcblx0aXRlbTogKEJhc2VJdGVtICYgUm91dGVJdGVtKSB8IERyb3Bkb3duTWVudUl0ZW0gfCBNZW51TWVudUl0ZW07XG5cdGFzPzogUmVhY3QuQ29tcG9uZW50Q2xhc3M7XG5cdHZlcnRpY2FsPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEl0ZW1CYXJJdGVtKHtpdGVtLCBhcywgdmVydGljYWx9OiBJdGVtQmFySXRlbVByb3BzKSB7XG5cdGNvbnN0IGxvYyA9IHVzZUxvY2F0aW9uKCkgYXMgTG9jYXRpb247XG5cblx0Ly8gRGV0ZXJtaW5lIGlmIHRoZSBjdXJyZW50IHJvdXRlIG1hdGNoZXMgdGhlIHRvIHJvdXRlIHRvIHNlZSBpZiB0aGUgbGluayBpcyBhY3RpdmVcblx0Y29uc3Qgcm91dGVNYXRjaE9iamVjdDogUm91dGVQcm9wcyA9IHt9O1xuXHRpZiAoIWlzRHJvcGRvd25NZW51SXRlbShpdGVtKSAmJiAhaXNNZW51TWVudUl0ZW0oaXRlbSkgJiYgaXRlbS50bykge1xuXHRcdGlmICh0eXBlb2YgaXRlbS50byA9PT0gJ3N0cmluZycpIHtcblx0XHRcdHJvdXRlTWF0Y2hPYmplY3QucGF0aCA9IGl0ZW0udG87XG5cdFx0fVxuXHRcdGlmICh0eXBlb2YgaXRlbS50byA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0cm91dGVNYXRjaE9iamVjdC5wYXRoID0gaXRlbS50byhsb2MpO1xuXHRcdH1cblx0XHRyb3V0ZU1hdGNoT2JqZWN0LmV4YWN0ID0gaXRlbS5leGFjdCAhPT0gZmFsc2U7XG5cdFx0cm91dGVNYXRjaE9iamVjdC5zZW5zaXRpdmUgPSBpdGVtLnNlbnNpdGl2ZTtcblx0XHRyb3V0ZU1hdGNoT2JqZWN0LnN0cmljdCA9IGl0ZW0uc3RyaWN0O1xuXHR9XG5cdGNvbnN0IHJvdXRlTWF0Y2ggPSB1c2VSb3V0ZU1hdGNoKHJvdXRlTWF0Y2hPYmplY3QpO1xuXHRjb25zdCBhY3RpdmUgPSByb3V0ZU1hdGNoICE9PSBudWxsO1xuXG5cdC8vIEdlbmVyYXRlIHRoZSBpY29uIGNvbXBvbmVudCwgaWYgaXQgZXhpc3RzXG5cdGNvbnN0IGljb24gPSBpdGVtLmljb24gPyA8SWNvbiBuYW1lPXtpdGVtLmljb259IC8+IDogbnVsbDtcblxuXHRpZiAoaXNEcm9wZG93bk1lbnVJdGVtKGl0ZW0pKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxSZW5kZXJJZlZpc2libGVcblx0XHRcdFx0Y29tcG9uZW50PXtcblx0XHRcdFx0XHQ8RHJvcGRvd25JdGVtTWVudVxuXHRcdFx0XHRcdFx0dmVydGljYWw9e3ZlcnRpY2FsIHx8IGZhbHNlfVxuXHRcdFx0XHRcdFx0aXRlbT17aXRlbX1cblx0XHRcdFx0XHRcdGNoaWxkcmVuPXtzb3J0V2VpZ2h0ZWRJdGVtcyhpdGVtLmRyb3Bkb3duKS5tYXAodiA9PiAoXG5cdFx0XHRcdFx0XHRcdDxJdGVtQmFySXRlbSBrZXk9e3YudGV4dH0gaXRlbT17dn0gYXM9e0Ryb3Bkb3duLkl0ZW19IC8+XG5cdFx0XHRcdFx0XHQpKX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHR9XG5cdFx0XHRcdGl0ZW09e2l0ZW19XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHRpZiAoaXNNZW51TWVudUl0ZW0oaXRlbSkpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0PFJlbmRlcklmVmlzaWJsZVxuXHRcdFx0XHRjb21wb25lbnQ9e1xuXHRcdFx0XHRcdDxNZW51SXRlbU1lbnVcblx0XHRcdFx0XHRcdGl0ZW09e2l0ZW19XG5cdFx0XHRcdFx0XHRjaGlsZHJlbj17c29ydFdlaWdodGVkSXRlbXMoaXRlbS5tZW51KS5tYXAodiA9PiAoXG5cdFx0XHRcdFx0XHRcdDxJdGVtQmFySXRlbSBrZXk9e3YudGV4dH0gaXRlbT17dn0gYXM9e0Ryb3Bkb3duLkl0ZW19IC8+XG5cdFx0XHRcdFx0XHQpKX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHR9XG5cdFx0XHRcdGl0ZW09e2l0ZW19XG5cdFx0XHQvPlxuXHRcdCk7XG5cdH1cblxuXHRjb25zdCBsaW5rUGFyYW1zID0gaXRlbS50b1xuXHRcdD8ge1xuXHRcdFx0XHRhczogTGluayxcblx0XHRcdFx0YWN0aXZlLFxuXHRcdFx0XHR0bzogdHlwZW9mIGl0ZW0udG8gPT09ICdmdW5jdGlvbicgPyBpdGVtLnRvKGxvYykgOiBpdGVtLnRvLFxuXHRcdCAgfVxuXHRcdDoge307XG5cblx0Y29uc3QgbWVudVBhcmFtcyA9IGFzXG5cdFx0PyB7fVxuXHRcdDoge1xuXHRcdFx0XHRsaW5rOiAhIWl0ZW0udG8sXG5cdFx0ICB9O1xuXG5cdGNvbnN0IEl0ZW1YID0gYXMgfHwgTWVudS5JdGVtO1xuXG5cdGNvbnN0IHJlbmRlcmVkSXRlbSA9IChcblx0XHQ8SXRlbVggey4uLmxpbmtQYXJhbXN9IHsuLi5tZW51UGFyYW1zfT5cblx0XHRcdHtpY29ufVxuXHRcdFx0e2l0ZW0udGV4dH1cblx0XHQ8L0l0ZW1YPlxuXHQpO1xuXG5cdHJldHVybiA8UmVuZGVySWZWaXNpYmxlIGNvbXBvbmVudD17cmVuZGVyZWRJdGVtfSBpdGVtPXtpdGVtfSAvPjtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgUmVhY3QsIHtSZWFjdE5vZGUsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0ljb24sIE1lbnUsIFNlZ21lbnR9IGZyb20gJ3NlbWFudGljLXVpLXJlYWN0JztcbmltcG9ydCB7dXNlTGF5b3V0U3RhdGV9IGZyb20gJy4uL3N0YXRlJztcbmltcG9ydCB0eXBlIHtMYXlvdXREYXRhfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQge0l0ZW1CYXJ9IGZyb20gJy4vSXRlbUJhcic7XG5pbXBvcnQgc3R5bGVzIGZyb20gJy4vc3R5bGVzLmNzcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LmNvbXBvbmVudHMuTGF5b3V0Jyk7XG5cbmludGVyZmFjZSBMYXlvdXRQcm9wcyBleHRlbmRzIFJlcXVpcmVkPExheW91dERhdGE+IHtcblx0Y2hpbGRyZW4/OiBSZWFjdE5vZGU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBMYXlvdXQoe2Zvb3RlciwgbWVudWJhciwgc3RhdHVzYmFyLCBzaWRlYmFyLCBjaGlsZHJlbn06IExheW91dFByb3BzKSB7XG5cdGNvbnN0IHtpc01vYmlsZX0gPSB1c2VMYXlvdXRTdGF0ZSgpO1xuXHRjb25zdCBbbWVudU9wZW4sIHNldE1lbnVPcGVuXSA9IHVzZVN0YXRlKHRydWUpO1xuXG5cdGNvbnN0IG1vYmlsZVNpZGViYXJUb2dnbGUgPSB7XG5cdFx0c3RpY2tPbk1vYmlsZTogdHJ1ZSxcblx0XHR3ZWlnaHQ6IC0xOTk5OSxcblx0XHRyZW5kZXI6ICgpID0+IHtcblx0XHRcdGlmICghaXNNb2JpbGUpIHJldHVybiBudWxsO1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PE1lbnUuSXRlbT5cblx0XHRcdFx0XHQ8SWNvblxuXHRcdFx0XHRcdFx0Y2xhc3NOYW1lPXttZW51T3BlbiA/IHN0eWxlcy5pY29uUm90YXRlZCA6IHN0eWxlcy5pY29ufVxuXHRcdFx0XHRcdFx0bmFtZT17bWVudU9wZW4gPyAnY2xvc2UnIDogJ3NpZGViYXInfVxuXHRcdFx0XHRcdFx0b25DbGljaz17KCkgPT4ge1xuXHRcdFx0XHRcdFx0XHRzZXRNZW51T3BlbighbWVudU9wZW4pO1xuXHRcdFx0XHRcdFx0fX1cblx0XHRcdFx0XHQvPlxuXHRcdFx0XHQ8L01lbnUuSXRlbT5cblx0XHRcdCk7XG5cdFx0fSxcblx0fTtcblxuXHRjb25zdCBtZW51YmFySXRlbXMgPSBpc01vYmlsZSA/IFttb2JpbGVTaWRlYmFyVG9nZ2xlLCAuLi5tZW51YmFyXS5maWx0ZXIodiA9PiB2LnN0aWNrT25Nb2JpbGUgPT09IHRydWUpIDogW21vYmlsZVNpZGViYXJUb2dnbGUsIC4uLm1lbnViYXJdO1xuXG5cdGNvbnN0IHNpZGViYXJJdGVtcyA9IGlzTW9iaWxlXG5cdFx0PyBbXG5cdFx0XHRcdC4uLnNpZGViYXIsXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0ZXh0OiAnJyxcblx0XHRcdFx0XHRtZW51OiBbbW9iaWxlU2lkZWJhclRvZ2dsZSwgLi4ubWVudWJhcl0uZmlsdGVyKHYgPT4gdi5zdGlja09uTW9iaWxlICE9PSB0cnVlKSxcblx0XHRcdFx0fSxcblx0XHQgIF1cblx0XHQ6IHNpZGViYXI7XG5cdGNvbnN0IHNpZGViYXJDb21wID1cblx0XHRzaWRlYmFySXRlbXMubGVuZ3RoID4gMCA/IChcblx0XHRcdDxkaXY+XG5cdFx0XHRcdDxJdGVtQmFyXG5cdFx0XHRcdFx0bmFtZT1cInNpZGViYXJcIlxuXHRcdFx0XHRcdGl0ZW1zPXtzaWRlYmFySXRlbXN9XG5cdFx0XHRcdFx0aW52ZXJ0ZWRcblx0XHRcdFx0XHR2ZXJ0aWNhbFxuXHRcdFx0XHRcdGNsYXNzTmFtZT17aXNNb2JpbGUgJiYgIW1lbnVPcGVuID8gYCR7c3R5bGVzLnNpZGViYXJ9ICR7c3R5bGVzLnNpZGViYXJIaWRkZW59IGltcGVyaXVtU2lkZWJhcmAgOiBgJHtzdHlsZXMuc2lkZWJhcn0gaW1wZXJpdW1TaWRlYmFyYH1cblx0XHRcdFx0Lz5cblx0XHRcdDwvZGl2PlxuXHRcdCkgOiBudWxsO1xuXG5cdGNvbnN0IGZvb3Rlckl0ZW1zID0gZm9vdGVyO1xuXHRjb25zdCBmb290ZXJDb21wID1cblx0XHRmb290ZXJJdGVtcy5sZW5ndGggPiAwID8gPEl0ZW1CYXIgbmFtZT1cImZvb3RlclwiIGl0ZW1zPXtmb290ZXJJdGVtc30gY2xhc3NOYW1lPXtgJHtzdHlsZXMuZm9vdGVyfSBpbXBlcml1bUZvb3RlcmB9IGludmVydGVkIGJvcmRlcmxlc3MgLz4gOiBudWxsO1xuXG5cdGNvbnN0IHN0YXR1c2Jhckl0ZW1zID0gc3RhdHVzYmFyO1xuXHRjb25zdCBzdGF0dXNiYXJDb21wID1cblx0XHRzdGF0dXNiYXJJdGVtcy5sZW5ndGggPiAwID8gKFxuXHRcdFx0PEl0ZW1CYXIgbmFtZT1cInN0YXR1c2JhclwiIGl0ZW1zPXtzdGF0dXNiYXJJdGVtc30gaW52ZXJ0ZWQgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc3RhdHVzYmFyfSBpbXBlcml1bVN0YXR1c2JhcmB9IC8+XG5cdFx0KSA6IG51bGw7XG5cblx0cmV0dXJuIChcblx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLnBhcmVudH0gaW1wZXJpdW1MYXlvdXRgfT5cblx0XHRcdDxkaXY+XG5cdFx0XHRcdDxJdGVtQmFyIG5hbWU9XCJtZW51YmFyXCIgaXRlbXM9e21lbnViYXJJdGVtc30gaW52ZXJ0ZWQgYm9yZGVybGVzcyBjbGFzc05hbWU9e2Ake3N0eWxlcy5tZW51YmFyfSBpbXBlcml1bU1lbnViYXJgfSAvPlxuXHRcdFx0XHR7c3RhdHVzYmFyQ29tcH1cblx0XHRcdDwvZGl2PlxuXHRcdFx0PFNlZ21lbnQgYXR0YWNoZWQgY2xhc3NOYW1lPXtgJHtzdHlsZXMuY29udGVudFdyYXBwZXJ9IGltcGVyaXVtQ29udGVudFdyYXBwZXJgfT5cblx0XHRcdFx0e3NpZGViYXJDb21wfVxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT17YCR7c3R5bGVzLmNvbnRlbnR9IGltcGVyaXVtQ29udGVudGB9PntjaGlsZHJlbn08L2Rpdj5cblx0XHRcdDwvU2VnbWVudD5cblx0XHRcdHtmb290ZXJDb21wfVxuXHRcdDwvZGl2PlxuXHQpO1xufVxuIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7TWVudX0gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuaW1wb3J0IHR5cGUge01lbnVNZW51SXRlbX0gZnJvbSAnLi4vdHlwZXMnO1xuXG5pbnRlcmZhY2UgTWVudUl0ZW1NZW51UHJvcHMge1xuXHRpdGVtOiBNZW51TWVudUl0ZW07XG5cdGNoaWxkcmVuOiBKU1guRWxlbWVudFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gTWVudUl0ZW1NZW51KHtpdGVtLCBjaGlsZHJlbn06IE1lbnVJdGVtTWVudVByb3BzKSB7XG5cdHJldHVybiAoXG5cdFx0PE1lbnUuSXRlbT5cblx0XHRcdDxNZW51LkhlYWRlcj57aXRlbS50ZXh0fTwvTWVudS5IZWFkZXI+XG5cdFx0XHQ8TWVudS5NZW51IGNvbXBhY3Q9XCJcIj57Y2hpbGRyZW59PC9NZW51Lk1lbnU+XG5cdFx0PC9NZW51Lkl0ZW0+XG5cdCk7XG59XG4iLCJleHBvcnQgZnVuY3Rpb24gUmVuZGVyQ29tcG9uZW50KHtyZW5kZXIsIC4uLnJlc3R9OiB7cmVuZGVyOiAocHJvcHM6IHVua25vd24pID0+IEpTWC5FbGVtZW50IHwgbnVsbH0pIHtcblx0cmV0dXJuIHJlbmRlcihyZXN0KTtcbn1cbiIsImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgdHlwZSB7TG9jYXRpb259IGZyb20gJ2hpc3RvcnknO1xuaW1wb3J0IGNvbXBhY3QgZnJvbSAnbG9kYXNoL2NvbXBhY3QnO1xuaW1wb3J0IHtRdWVyeX0gZnJvbSAnbWluZ28nO1xuaW1wb3J0IHF1ZXJ5U3RyaW5nIGZyb20gJ3F1ZXJ5c3RyaW5nJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3VzZUxvY2F0aW9ufSBmcm9tICdyZWFjdC1yb3V0ZXItZG9tJztcbmltcG9ydCB0eXBlIHtEZWZhdWx0VmlzaWJpbGl0eURhdGEsIFZpc2liaWxpdHlJdGVtLCBWaXNpYmlsaXR5UXVlcnlGaWVsZH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtFeGVjdXRlU2VsZWN0b3JIb29rfSBmcm9tICcuL0V4ZWN1dGVTZWxlY3Rvckhvb2snO1xuXG5jb25zdCBkID0gZGVidWcoJ2ltcGVyaXVtLmxheW91dC5jb21wb25lbnRzLlJlbmRlcklmVmlzaWJsZScpO1xuXG5mdW5jdGlvbiBtZXJnZUxvY2F0aW9uRGF0YShsb2M6IExvY2F0aW9uLCBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcblx0Y29uc3QgbG9jYXRpb25EYXRhID0ge1xuXHRcdHBhdGg6IGNvbXBhY3QobG9jLnBhdGhuYW1lLnNwbGl0KCcvJykpLFxuXHRcdGhhc2g6IGxvYy5oYXNoLFxuXHRcdHNlYXJjaDogcXVlcnlTdHJpbmcucGFyc2UobG9jLnNlYXJjaCksXG5cdH07XG5cdHJldHVybiB7XG5cdFx0cm91dGVyOiB7XG5cdFx0XHQuLi5sb2NhdGlvbkRhdGEsXG5cdFx0fSxcblx0XHQuLi5kYXRhLFxuXHR9O1xufVxuXG5mdW5jdGlvbiByZW5kZXJXaXRoUXVlcnkoXG5cdGRhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ICYgRGVmYXVsdFZpc2liaWxpdHlEYXRhLFxuXHRxdWVyeTogVmlzaWJpbGl0eVF1ZXJ5RmllbGQ8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHwgdW5kZWZpbmVkLFxuXHRjb21wb25lbnQ6IEpTWC5FbGVtZW50LFxuKSB7XG5cdGlmICh0eXBlb2YgcXVlcnkgPT09ICdmdW5jdGlvbicpIHtcblx0XHRpZiAocXVlcnkoZGF0YSkpIHJldHVybiBjb21wb25lbnQ7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblx0Y29uc3QgcSA9IG5ldyBRdWVyeShxdWVyeSB8fCB7fSk7XG5cdGlmIChxLnRlc3QoZGF0YSkpIHJldHVybiBjb21wb25lbnQ7XG5cdHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVuZGVySWZWaXNpYmxlKHtpdGVtLCBjb21wb25lbnR9OiB7Y29tcG9uZW50OiBKU1guRWxlbWVudDsgaXRlbTogVmlzaWJpbGl0eUl0ZW19KSB7XG5cdGNvbnN0IGxvYyA9IHVzZUxvY2F0aW9uKCkgYXMgTG9jYXRpb247XG5cblx0aWYgKGl0ZW0udmlzaWJsZSkge1xuXHRcdGlmIChpdGVtLnZpc2libGUuc2VsZWN0b3JIb29rKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHQ8RXhlY3V0ZVNlbGVjdG9ySG9va1xuXHRcdFx0XHRcdGhvb2s9e2l0ZW0udmlzaWJsZS5zZWxlY3Rvckhvb2t9XG5cdFx0XHRcdFx0cmVuZGVyPXtkYXRhID0+IHJlbmRlcldpdGhRdWVyeShtZXJnZUxvY2F0aW9uRGF0YShsb2MsIGRhdGEpLCBpdGVtLnZpc2libGU/LnF1ZXJ5LCBjb21wb25lbnQpfVxuXHRcdFx0XHQvPlxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gcmVuZGVyV2l0aFF1ZXJ5KG1lcmdlTG9jYXRpb25EYXRhKGxvYyksIGl0ZW0udmlzaWJsZS5xdWVyeSwgY29tcG9uZW50KTtcblx0fVxuXG5cdHJldHVybiBjb21wb25lbnQ7XG59XG4iLCJpbXBvcnQge3VzZUVmZmVjdH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHt1c2VEaXNwYXRjaH0gZnJvbSAncmVhY3QtcmVkdXgnO1xuaW1wb3J0IHt1c2VNZWRpYVF1ZXJ5fSBmcm9tICdyZWFjdC1yZXNwb25zaXZlJztcbmltcG9ydCB7YWN0aW9uc30gZnJvbSAnLi4vc3RhdGUnO1xuXG5leHBvcnQgZnVuY3Rpb24gdXNlTW9iaWxlTGF5b3V0KCkge1xuXHRjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cdGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh7cXVlcnk6ICcobWF4LXdpZHRoOiA5MDBweCknfSk7XG5cdHVzZUVmZmVjdCgoKSA9PiB7XG5cdFx0ZGlzcGF0Y2goYWN0aW9ucy5zZXRNb2JpbGUoaXNNb2JpbGUpKTtcblx0fSwgW2Rpc3BhdGNoLCBpc01vYmlsZV0pO1xufVxuIiwiaW1wb3J0IHtjcmVhdGVTbGljZUhvb2t9IGZyb20gJ0BpbXBlcml1bS9zdGF0ZSc7XG5pbXBvcnQge2NyZWF0ZVNsaWNlLCBQYXlsb2FkQWN0aW9ufSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcblxuZXhwb3J0IGNvbnN0IHN0YXRlID0gY3JlYXRlU2xpY2Uoe1xuXHRuYW1lOiAnaW1wZXJpdW1MYXlvdXQnLFxuXHRpbml0aWFsU3RhdGU6IHtcblx0XHRpc01vYmlsZTogZmFsc2UsXG5cdH0sXG5cdHJlZHVjZXJzOiB7XG5cdFx0c2V0TW9iaWxlOiAoc3QsIGFjdGlvbjogUGF5bG9hZEFjdGlvbjxib29sZWFuPikgPT4gKHsuLi5zdCwgaXNNb2JpbGU6IGFjdGlvbi5wYXlsb2FkfSksXG5cdH0sXG59KTtcblxuZXhwb3J0IGNvbnN0IHVzZUxheW91dFN0YXRlID0gY3JlYXRlU2xpY2VIb29rKHN0YXRlKTtcblxuZXhwb3J0IGNvbnN0IHthY3Rpb25zfSA9IHN0YXRlO1xuIiwiaW1wb3J0IHR5cGUge0ltcGVyaXVtQ2xpZW50TW9kdWxlfSBmcm9tICdAaW1wZXJpdW0vY2xpZW50JztcbmltcG9ydCB0eXBlIHtMb2NhdGlvbn0gZnJvbSAnaGlzdG9yeSc7XG5pbXBvcnQgdHlwZSB7U2VtYW50aWNJQ09OU30gZnJvbSAnc2VtYW50aWMtdWktcmVhY3QnO1xuXG5leHBvcnQgdHlwZSBEYXRhSG9vayA9ICgpID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBTZWxlY3Rvckhvb2s8VCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+PiA9ICgpID0+IFQ7XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gd2l0aCBvcHRpb25hbCB3ZWlnaHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXZWlnaHRlZEl0ZW0ge1xuXHR3ZWlnaHQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGFuIGl0ZW0gdGhhdCBjYW4gYmUgcG9zaXRpb25lZCBob3Jpem9udGFsbHkgbGVmdCBvciByaWdodFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSB7XG5cdHBvc2l0aW9uPzogJ2xlZnQnIHwgJ3JpZ2h0Jztcblx0c3RpY2tPbk1vYmlsZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGVmYXVsdFZpc2liaWxpdHlEYXRhIHtcblx0cm91dGVyOiB7XG5cdFx0cGF0aDogc3RyaW5nW107XG5cdH07XG59XG5cbmV4cG9ydCB0eXBlIFZpc2liaWxpdHlRdWVyeUZpZWxkPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB8ICgoZGF0YTogVCAmIERlZmF1bHRWaXNpYmlsaXR5RGF0YSkgPT4gYm9vbGVhbik7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmlzaWJpbGl0eVF1ZXJ5PFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4ge1xuXHRxdWVyeTogVmlzaWJpbGl0eVF1ZXJ5RmllbGQ8VD47XG5cdHNlbGVjdG9ySG9vaz86IFNlbGVjdG9ySG9vazxUPjtcbn1cblxuLyoqXG4gKiBEZXNjcmliZXMgYW4gaXRlbSB0aGF0IGNhbiBiZSBoaWRlIGl0c2VsZiBiYXNlZCBvbiByZWR1eCBzdGF0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZpc2liaWxpdHlJdGVtIHtcblx0dmlzaWJsZT86IFZpc2liaWxpdHlRdWVyeTxhbnk+O1xufVxuXG4vKipcbiAqIERlc2NyaWJlcyBhbiBpdGVtIHRoYXQgbGlua3MgdG8gYSByb3V0ZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlSXRlbSB7XG5cdHRvPzogc3RyaW5nIHwgKChsb2M6IExvY2F0aW9uKSA9PiBzdHJpbmcpO1xuXHRleGFjdD86IGJvb2xlYW47XG5cdHN0cmljdD86IGJvb2xlYW47XG5cdHNlbnNpdGl2ZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgYmFzaWMgd2VpZ2h0ZWQsIHBvc3NpYmx5IHZpc2libGUgaXRlbVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VJdGVtIGV4dGVuZHMgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5SXRlbSB7XG5cdHRleHQ6IHN0cmluZztcblx0aWNvbj86IFNlbWFudGljSUNPTlM7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgbWVudSB0aGF0IGRpc3BsYXlzIGEgZHJvcGRvd24gbGlzdCBvZiBpdGVtc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIERyb3Bkb3duTWVudUl0ZW0gZXh0ZW5kcyBCYXNlSXRlbSB7XG5cdGRyb3Bkb3duOiAoQmFzZUl0ZW0gJiBSb3V0ZUl0ZW0pW107XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgbWVudSB0aGF0IGRpc3BsYXlzIGEgc3ViIG1lbnUgKG5vdCBhIGRyb3Bkb3duIGxpc3QpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWVudU1lbnVJdGVtIGV4dGVuZHMgQmFzZUl0ZW0ge1xuXHRtZW51OiAoQmFzZUl0ZW0gJiBSb3V0ZUl0ZW0pW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tTWVudUl0ZW0gZXh0ZW5kcyBXZWlnaHRlZEl0ZW0sIFZpc2liaWxpdHlJdGVtIHtcblx0cmVuZGVyOiAoKSA9PiBKU1guRWxlbWVudCB8IG51bGw7XG59XG5cbi8qKlxuICogRGVzY3JpYmVzIGEgaG9yaXpvbnRhbCBtZW51IGl0ZW0gd2hpY2ggaXMgZWl0aGVyIGEgcm91dGUgaXRlbSBvciBkcm9wZG93biBtZW51XG4gKi9cbmV4cG9ydCB0eXBlIEl0ZW0gPSAoKEJhc2VJdGVtICYgUm91dGVJdGVtKSB8IERyb3Bkb3duTWVudUl0ZW0gfCBNZW51TWVudUl0ZW0gfCBDdXN0b21NZW51SXRlbSkgJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW07XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGF5b3V0RGF0YSB7XG5cdGRhdGFIb29rcz86IERhdGFIb29rW107XG5cdG1lbnViYXI/OiAoSXRlbSAmIEhvcml6b250YWxQb3NpdGlvbmVkSXRlbSlbXTtcblx0c3RhdHVzYmFyPzogKEl0ZW0gJiBIb3Jpem9udGFsUG9zaXRpb25lZEl0ZW0pW107XG5cdHNpZGViYXI/OiBJdGVtW107XG5cdGZvb3Rlcj86IChJdGVtICYgSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtKVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIGV4dGVuZHMgSW1wZXJpdW1DbGllbnRNb2R1bGUge1xuXHRsYXlvdXQ6IExheW91dERhdGE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlKG1vZHVsZTogSW1wZXJpdW1DbGllbnRNb2R1bGUpOiBtb2R1bGUgaXMgSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUge1xuXHRjb25zdCBsYXlvdXRNb2R1bGUgPSBtb2R1bGUgYXMgSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGU7XG5cdHJldHVybiBsYXlvdXRNb2R1bGUubGF5b3V0ICE9PSB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Ryb3Bkb3duTWVudUl0ZW0odmFsdWU6IGFueSk6IHZhbHVlIGlzIERyb3Bkb3duTWVudUl0ZW0ge1xuXHRyZXR1cm4gISEodmFsdWUgYXMgRHJvcGRvd25NZW51SXRlbSkuZHJvcGRvd247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc01lbnVNZW51SXRlbSh2YWx1ZTogYW55KTogdmFsdWUgaXMgTWVudU1lbnVJdGVtIHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIE1lbnVNZW51SXRlbSkubWVudTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ3VzdG9tTWVudUl0ZW0odmFsdWU6IGFueSk6IHZhbHVlIGlzIEN1c3RvbU1lbnVJdGVtIHtcblx0cmV0dXJuICEhKHZhbHVlIGFzIEN1c3RvbU1lbnVJdGVtKS5yZW5kZXI7XG59XG4iLCJpbXBvcnQgbWVtb2l6ZSBmcm9tICdsb2Rhc2gvbWVtb2l6ZSc7XG5pbXBvcnQgc29ydEJ5IGZyb20gJ2xvZGFzaC9zb3J0QnknO1xuaW1wb3J0IHR5cGUge0hvcml6b250YWxQb3NpdGlvbmVkSXRlbSwgV2VpZ2h0ZWRJdGVtLCBWaXNpYmlsaXR5UXVlcnl9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIFNvcnRzIHdlaWdodGVkIGl0ZW1zXG4gKi9cbmV4cG9ydCBjb25zdCBzb3J0V2VpZ2h0ZWRJdGVtcyA9IG1lbW9pemUoZnVuY3Rpb24gc29ydFdlaWdodGVkSXRlbXNJbXBsPFQgZXh0ZW5kcyBXZWlnaHRlZEl0ZW0+KGl0ZW1zOiBUW10pIHtcblx0cmV0dXJuIHNvcnRCeShpdGVtcywgdiA9PiB2LndlaWdodCB8fCAwKTtcbn0pO1xuXG4vKipcbiAqIFNwbGl0cyBob3Jpem9udGFsbHkgcG9zaXRpb25lZCBpdGVtcyBpbnRvIGxlZnQgYW5kIHJpZ2h0IGFycmF5c1xuICogQHBhcmFtIGl0ZW1zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzcGxpdEhvcml6b250YWxJdGVtczxUIGV4dGVuZHMgSG9yaXpvbnRhbFBvc2l0aW9uZWRJdGVtPihpdGVtczogVFtdKSB7XG5cdHJldHVybiBpdGVtcy5yZWR1Y2UoXG5cdFx0KG1lbW8sIHYpID0+IHtcblx0XHRcdGlmICh2LnBvc2l0aW9uID09PSAncmlnaHQnKSB7XG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0bGVmdEl0ZW1zOiBtZW1vLmxlZnRJdGVtcyxcblx0XHRcdFx0XHRyaWdodEl0ZW1zOiBbLi4ubWVtby5yaWdodEl0ZW1zLCB2XSxcblx0XHRcdFx0fTtcblx0XHRcdH1cblx0XHRcdHJldHVybiB7XG5cdFx0XHRcdGxlZnRJdGVtczogWy4uLm1lbW8ubGVmdEl0ZW1zLCB2XSxcblx0XHRcdFx0cmlnaHRJdGVtczogbWVtby5yaWdodEl0ZW1zLFxuXHRcdFx0fTtcblx0XHR9LFxuXHRcdHtsZWZ0SXRlbXM6IFtdLCByaWdodEl0ZW1zOiBbXX0gYXMge2xlZnRJdGVtczogVFtdOyByaWdodEl0ZW1zOiBUW119LFxuXHQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVWaXNpYmxlPFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4odmlzRGVmaW5pdGlvbjogVmlzaWJpbGl0eVF1ZXJ5PFQ+KTogVmlzaWJpbGl0eVF1ZXJ5PFQ+IHtcblx0cmV0dXJuIHtcblx0XHRxdWVyeTogdmlzRGVmaW5pdGlvbi5xdWVyeSxcblx0XHRzZWxlY3Rvckhvb2s6IHZpc0RlZmluaXRpb24uc2VsZWN0b3JIb29rLFxuXHR9O1xufVxuIiwiaW1wb3J0IHR5cGUge0hvYywgSW1wZXJpdW1DbGllbnR9IGZyb20gJ0BpbXBlcml1bS9jbGllbnQnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcbmltcG9ydCBSZWFjdCwge0NvbXBvbmVudFR5cGV9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7RGF0YUhvb2tzfSBmcm9tICcuL2NvbXBvbmVudHMvRGF0YUhvb2tzJztcbmltcG9ydCB7TGF5b3V0fSBmcm9tICcuL2NvbXBvbmVudHMvTGF5b3V0JztcbmltcG9ydCB7aXNJbXBlcml1bUxheW91dENsaWVudE1vZHVsZSwgTGF5b3V0RGF0YX0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IGQgPSBkZWJ1ZygnaW1wZXJpdW0ubGF5b3V0LndpdGhMYXlvdXQnKTtcblxuY29uc3QgaW5pdGlhbExheW91dE1vZHVsZURhdGE6IFJlcXVpcmVkPExheW91dERhdGE+ID0ge1xuXHRkYXRhSG9va3M6IFtdLFxuXHRtZW51YmFyOiBbXSxcblx0c3RhdHVzYmFyOiBbXSxcblx0c2lkZWJhcjogW10sXG5cdGZvb3RlcjogW10sXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gd2l0aExheW91dChjbGllbnQ6IEltcGVyaXVtQ2xpZW50KTogSG9jIHtcblx0Y29uc3QgbGF5b3V0TW9kdWxlRGF0YSA9IGNsaWVudC5tb2R1bGVzLnJlZHVjZSgobWVtbywgbW9kdWxlKSA9PiB7XG5cdFx0aWYgKGlzSW1wZXJpdW1MYXlvdXRDbGllbnRNb2R1bGUobW9kdWxlKSkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0ZGF0YUhvb2tzOiBbLi4uKG1lbW8uZGF0YUhvb2tzIHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQuZGF0YUhvb2tzIHx8IFtdKV0sXG5cdFx0XHRcdG1lbnViYXI6IFsuLi4obWVtby5tZW51YmFyIHx8IFtdKSwgLi4uKG1vZHVsZS5sYXlvdXQubWVudWJhciB8fCBbXSldLFxuXHRcdFx0XHRzdGF0dXNiYXI6IFsuLi4obWVtby5zdGF0dXNiYXIgfHwgW10pLCAuLi4obW9kdWxlLmxheW91dC5zdGF0dXNiYXIgfHwgW10pXSxcblx0XHRcdFx0c2lkZWJhcjogWy4uLihtZW1vLnNpZGViYXIgfHwgW10pLCAuLi4obW9kdWxlLmxheW91dC5zaWRlYmFyIHx8IFtdKV0sXG5cdFx0XHRcdGZvb3RlcjogWy4uLihtZW1vLmZvb3RlciB8fCBbXSksIC4uLihtb2R1bGUubGF5b3V0LmZvb3RlciB8fCBbXSldLFxuXHRcdFx0fSBhcyBSZXF1aXJlZDxMYXlvdXREYXRhPjtcblx0XHR9XG5cdFx0cmV0dXJuIG1lbW87XG5cdH0sIGluaXRpYWxMYXlvdXRNb2R1bGVEYXRhKTtcblx0ZCgnTGF5b3V0IGl0ZW1zIHByb2Nlc3NlZCcsIGxheW91dE1vZHVsZURhdGEpO1xuXG5cdC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5cdHJldHVybiBmdW5jdGlvbiBsYXlvdXRIb2MoV3JhcHBlZDogQ29tcG9uZW50VHlwZTxhbnk+KSB7XG5cdFx0Y29uc3QgZGlzcGxheU5hbWUgPSBXcmFwcGVkLmRpc3BsYXlOYW1lIHx8IFdyYXBwZWQubmFtZSB8fCAnJztcblxuXHRcdGZ1bmN0aW9uIFdpdGhMYXlvdXQocHJvcHM6IHVua25vd24pIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdDw+XG5cdFx0XHRcdFx0PExheW91dCB7Li4ubGF5b3V0TW9kdWxlRGF0YX0+XG5cdFx0XHRcdFx0XHQ8V3JhcHBlZCB7Li4ucHJvcHN9IGxheW91dD17bGF5b3V0TW9kdWxlRGF0YX0gLz5cblx0XHRcdFx0XHQ8L0xheW91dD5cblx0XHRcdFx0XHQ8RGF0YUhvb2tzIGRhdGFIb29rcz17bGF5b3V0TW9kdWxlRGF0YS5kYXRhSG9va3N9IC8+XG5cdFx0XHRcdDwvPlxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRXaXRoTGF5b3V0LmRpc3BsYXlOYW1lID0gYHdpdGhMYXlvdXQoJHtkaXNwbGF5TmFtZX0pYDtcblxuXHRcdHJldHVybiBXaXRoTGF5b3V0O1xuXHR9O1xufVxuIiwiXG4gICAgICBpbXBvcnQgQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5qZWN0U3R5bGVzSW50b1N0eWxlVGFnLmpzXCI7XG4gICAgICBpbXBvcnQgZG9tQVBJIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanNcIjtcbiAgICAgIGltcG9ydCBpbnNlcnRGbiBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydEJ5U2VsZWN0b3IuanNcIjtcbiAgICAgIGltcG9ydCBzZXRBdHRyaWJ1dGVzIGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzLmpzXCI7XG4gICAgICBpbXBvcnQgaW5zZXJ0U3R5bGVFbGVtZW50IGZyb20gXCIhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvaW5zZXJ0U3R5bGVFbGVtZW50LmpzXCI7XG4gICAgICBpbXBvcnQgc3R5bGVUYWdUcmFuc2Zvcm1GbiBmcm9tIFwiIS4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL3N0eWxlVGFnVHJhbnNmb3JtLmpzXCI7XG4gICAgICBpbXBvcnQgY29udGVudCwgKiBhcyBuYW1lZEV4cG9ydCBmcm9tIFwiISEuLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L2Nqcy5qcz8/cnVsZVNldFsxXS5ydWxlc1syXS51c2VbMl0hLi9zdHlsZXMuY3NzXCI7XG4gICAgICBcbiAgICAgIFxuXG52YXIgb3B0aW9ucyA9IHt9O1xuXG5vcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtID0gc3R5bGVUYWdUcmFuc2Zvcm1Gbjtcbm9wdGlvbnMuc2V0QXR0cmlidXRlcyA9IHNldEF0dHJpYnV0ZXM7XG5cbiAgICAgIG9wdGlvbnMuaW5zZXJ0ID0gaW5zZXJ0Rm4uYmluZChudWxsLCBcImhlYWRcIik7XG4gICAgXG5vcHRpb25zLmRvbUFQSSA9IGRvbUFQSTtcbm9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50ID0gaW5zZXJ0U3R5bGVFbGVtZW50O1xuXG52YXIgdXBkYXRlID0gQVBJKGNvbnRlbnQsIG9wdGlvbnMpO1xuXG5cblxuZXhwb3J0ICogZnJvbSBcIiEhLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9janMuanM/P3J1bGVTZXRbMV0ucnVsZXNbMl0udXNlWzJdIS4vc3R5bGVzLmNzc1wiO1xuICAgICAgIGV4cG9ydCBkZWZhdWx0IGNvbnRlbnQgJiYgY29udGVudC5sb2NhbHMgPyBjb250ZW50LmxvY2FscyA6IHVuZGVmaW5lZDtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG52YXIgc3R5bGVzSW5ET00gPSBbXTtcblxuZnVuY3Rpb24gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcikge1xuICB2YXIgcmVzdWx0ID0gLTE7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHlsZXNJbkRPTS5sZW5ndGg7IGkrKykge1xuICAgIGlmIChzdHlsZXNJbkRPTVtpXS5pZGVudGlmaWVyID09PSBpZGVudGlmaWVyKSB7XG4gICAgICByZXN1bHQgPSBpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpIHtcbiAgdmFyIGlkQ291bnRNYXAgPSB7fTtcbiAgdmFyIGlkZW50aWZpZXJzID0gW107XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIGl0ZW0gPSBsaXN0W2ldO1xuICAgIHZhciBpZCA9IG9wdGlvbnMuYmFzZSA/IGl0ZW1bMF0gKyBvcHRpb25zLmJhc2UgOiBpdGVtWzBdO1xuICAgIHZhciBjb3VudCA9IGlkQ291bnRNYXBbaWRdIHx8IDA7XG4gICAgdmFyIGlkZW50aWZpZXIgPSBcIlwiLmNvbmNhdChpZCwgXCIgXCIpLmNvbmNhdChjb3VudCk7XG4gICAgaWRDb3VudE1hcFtpZF0gPSBjb3VudCArIDE7XG4gICAgdmFyIGluZGV4QnlJZGVudGlmaWVyID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoaWRlbnRpZmllcik7XG4gICAgdmFyIG9iaiA9IHtcbiAgICAgIGNzczogaXRlbVsxXSxcbiAgICAgIG1lZGlhOiBpdGVtWzJdLFxuICAgICAgc291cmNlTWFwOiBpdGVtWzNdLFxuICAgICAgc3VwcG9ydHM6IGl0ZW1bNF0sXG4gICAgICBsYXllcjogaXRlbVs1XVxuICAgIH07XG5cbiAgICBpZiAoaW5kZXhCeUlkZW50aWZpZXIgIT09IC0xKSB7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0ucmVmZXJlbmNlcysrO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhCeUlkZW50aWZpZXJdLnVwZGF0ZXIob2JqKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHVwZGF0ZXIgPSBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKTtcbiAgICAgIG9wdGlvbnMuYnlJbmRleCA9IGk7XG4gICAgICBzdHlsZXNJbkRPTS5zcGxpY2UoaSwgMCwge1xuICAgICAgICBpZGVudGlmaWVyOiBpZGVudGlmaWVyLFxuICAgICAgICB1cGRhdGVyOiB1cGRhdGVyLFxuICAgICAgICByZWZlcmVuY2VzOiAxXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZGVudGlmaWVycy5wdXNoKGlkZW50aWZpZXIpO1xuICB9XG5cbiAgcmV0dXJuIGlkZW50aWZpZXJzO1xufVxuXG5mdW5jdGlvbiBhZGRFbGVtZW50U3R5bGUob2JqLCBvcHRpb25zKSB7XG4gIHZhciBhcGkgPSBvcHRpb25zLmRvbUFQSShvcHRpb25zKTtcbiAgYXBpLnVwZGF0ZShvYmopO1xuXG4gIHZhciB1cGRhdGVyID0gZnVuY3Rpb24gdXBkYXRlcihuZXdPYmopIHtcbiAgICBpZiAobmV3T2JqKSB7XG4gICAgICBpZiAobmV3T2JqLmNzcyA9PT0gb2JqLmNzcyAmJiBuZXdPYmoubWVkaWEgPT09IG9iai5tZWRpYSAmJiBuZXdPYmouc291cmNlTWFwID09PSBvYmouc291cmNlTWFwICYmIG5ld09iai5zdXBwb3J0cyA9PT0gb2JqLnN1cHBvcnRzICYmIG5ld09iai5sYXllciA9PT0gb2JqLmxheWVyKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgYXBpLnVwZGF0ZShvYmogPSBuZXdPYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVtb3ZlKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB1cGRhdGVyO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChsaXN0LCBvcHRpb25zKSB7XG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuICBsaXN0ID0gbGlzdCB8fCBbXTtcbiAgdmFyIGxhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShsaXN0LCBvcHRpb25zKTtcbiAgcmV0dXJuIGZ1bmN0aW9uIHVwZGF0ZShuZXdMaXN0KSB7XG4gICAgbmV3TGlzdCA9IG5ld0xpc3QgfHwgW107XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGlkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbaV07XG4gICAgICB2YXIgaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4XS5yZWZlcmVuY2VzLS07XG4gICAgfVxuXG4gICAgdmFyIG5ld0xhc3RJZGVudGlmaWVycyA9IG1vZHVsZXNUb0RvbShuZXdMaXN0LCBvcHRpb25zKTtcblxuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBsYXN0SWRlbnRpZmllcnMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YXIgX2lkZW50aWZpZXIgPSBsYXN0SWRlbnRpZmllcnNbX2ldO1xuXG4gICAgICB2YXIgX2luZGV4ID0gZ2V0SW5kZXhCeUlkZW50aWZpZXIoX2lkZW50aWZpZXIpO1xuXG4gICAgICBpZiAoc3R5bGVzSW5ET01bX2luZGV4XS5yZWZlcmVuY2VzID09PSAwKSB7XG4gICAgICAgIHN0eWxlc0luRE9NW19pbmRleF0udXBkYXRlcigpO1xuXG4gICAgICAgIHN0eWxlc0luRE9NLnNwbGljZShfaW5kZXgsIDEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxhc3RJZGVudGlmaWVycyA9IG5ld0xhc3RJZGVudGlmaWVycztcbiAgfTtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBtZW1vID0ge307XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0KHRhcmdldCkge1xuICBpZiAodHlwZW9mIG1lbW9bdGFyZ2V0XSA9PT0gXCJ1bmRlZmluZWRcIikge1xuICAgIHZhciBzdHlsZVRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0KTsgLy8gU3BlY2lhbCBjYXNlIHRvIHJldHVybiBoZWFkIG9mIGlmcmFtZSBpbnN0ZWFkIG9mIGlmcmFtZSBpdHNlbGZcblxuICAgIGlmICh3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQgJiYgc3R5bGVUYXJnZXQgaW5zdGFuY2VvZiB3aW5kb3cuSFRNTElGcmFtZUVsZW1lbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gaWYgYWNjZXNzIHRvIGlmcmFtZSBpcyBibG9ja2VkXG4gICAgICAgIC8vIGR1ZSB0byBjcm9zcy1vcmlnaW4gcmVzdHJpY3Rpb25zXG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gc3R5bGVUYXJnZXQuY29udGVudERvY3VtZW50LmhlYWQ7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIGlzdGFuYnVsIGlnbm9yZSBuZXh0XG4gICAgICAgIHN0eWxlVGFyZ2V0ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtZW1vW3RhcmdldF0gPSBzdHlsZVRhcmdldDtcbiAgfVxuXG4gIHJldHVybiBtZW1vW3RhcmdldF07XG59XG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cblxuXG5mdW5jdGlvbiBpbnNlcnRCeVNlbGVjdG9yKGluc2VydCwgc3R5bGUpIHtcbiAgdmFyIHRhcmdldCA9IGdldFRhcmdldChpbnNlcnQpO1xuXG4gIGlmICghdGFyZ2V0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRuJ3QgZmluZCBhIHN0eWxlIHRhcmdldC4gVGhpcyBwcm9iYWJseSBtZWFucyB0aGF0IHRoZSB2YWx1ZSBmb3IgdGhlICdpbnNlcnQnIHBhcmFtZXRlciBpcyBpbnZhbGlkLlwiKTtcbiAgfVxuXG4gIHRhcmdldC5hcHBlbmRDaGlsZChzdHlsZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0QnlTZWxlY3RvcjsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBpbnNlcnRTdHlsZUVsZW1lbnQob3B0aW9ucykge1xuICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgb3B0aW9ucy5zZXRBdHRyaWJ1dGVzKGVsZW1lbnQsIG9wdGlvbnMuYXR0cmlidXRlcyk7XG4gIG9wdGlvbnMuaW5zZXJ0KGVsZW1lbnQsIG9wdGlvbnMub3B0aW9ucyk7XG4gIHJldHVybiBlbGVtZW50O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGluc2VydFN0eWxlRWxlbWVudDsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMoc3R5bGVFbGVtZW50KSB7XG4gIHZhciBub25jZSA9IHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gXCJ1bmRlZmluZWRcIiA/IF9fd2VicGFja19ub25jZV9fIDogbnVsbDtcblxuICBpZiAobm9uY2UpIHtcbiAgICBzdHlsZUVsZW1lbnQuc2V0QXR0cmlidXRlKFwibm9uY2VcIiwgbm9uY2UpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gc2V0QXR0cmlidXRlc1dpdGhvdXRBdHRyaWJ1dGVzOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKSB7XG4gIHZhciBjc3MgPSBcIlwiO1xuXG4gIGlmIChvYmouc3VwcG9ydHMpIHtcbiAgICBjc3MgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChvYmouc3VwcG9ydHMsIFwiKSB7XCIpO1xuICB9XG5cbiAgaWYgKG9iai5tZWRpYSkge1xuICAgIGNzcyArPSBcIkBtZWRpYSBcIi5jb25jYXQob2JqLm1lZGlhLCBcIiB7XCIpO1xuICB9XG5cbiAgdmFyIG5lZWRMYXllciA9IHR5cGVvZiBvYmoubGF5ZXIgIT09IFwidW5kZWZpbmVkXCI7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIkBsYXllclwiLmNvbmNhdChvYmoubGF5ZXIubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChvYmoubGF5ZXIpIDogXCJcIiwgXCIge1wiKTtcbiAgfVxuXG4gIGNzcyArPSBvYmouY3NzO1xuXG4gIGlmIChuZWVkTGF5ZXIpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIHZhciBzb3VyY2VNYXAgPSBvYmouc291cmNlTWFwO1xuXG4gIGlmIChzb3VyY2VNYXAgJiYgdHlwZW9mIGJ0b2EgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICBjc3MgKz0gXCJcXG4vKiMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LFwiLmNvbmNhdChidG9hKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShzb3VyY2VNYXApKSkpLCBcIiAqL1wiKTtcbiAgfSAvLyBGb3Igb2xkIElFXG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGlmICAqL1xuXG5cbiAgb3B0aW9ucy5zdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCkge1xuICAvLyBpc3RhbmJ1bCBpZ25vcmUgaWZcbiAgaWYgKHN0eWxlRWxlbWVudC5wYXJlbnROb2RlID09PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgc3R5bGVFbGVtZW50LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50KTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGRvbUFQSShvcHRpb25zKSB7XG4gIHZhciBzdHlsZUVsZW1lbnQgPSBvcHRpb25zLmluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKTtcbiAgcmV0dXJuIHtcbiAgICB1cGRhdGU6IGZ1bmN0aW9uIHVwZGF0ZShvYmopIHtcbiAgICAgIGFwcGx5KHN0eWxlRWxlbWVudCwgb3B0aW9ucywgb2JqKTtcbiAgICB9LFxuICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgcmVtb3ZlU3R5bGVFbGVtZW50KHN0eWxlRWxlbWVudCk7XG4gICAgfVxuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGRvbUFQSTsiLCJcInVzZSBzdHJpY3RcIjtcblxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5mdW5jdGlvbiBzdHlsZVRhZ1RyYW5zZm9ybShjc3MsIHN0eWxlRWxlbWVudCkge1xuICBpZiAoc3R5bGVFbGVtZW50LnN0eWxlU2hlZXQpIHtcbiAgICBzdHlsZUVsZW1lbnQuc3R5bGVTaGVldC5jc3NUZXh0ID0gY3NzO1xuICB9IGVsc2Uge1xuICAgIHdoaWxlIChzdHlsZUVsZW1lbnQuZmlyc3RDaGlsZCkge1xuICAgICAgc3R5bGVFbGVtZW50LnJlbW92ZUNoaWxkKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBzdHlsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3NzKSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzdHlsZVRhZ1RyYW5zZm9ybTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9zbGljZWRUb0FycmF5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvdG9Db25zdW1hYmxlQXJyYXlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGltcGVyaXVtL3N0YXRlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkByZWR1eGpzL3Rvb2xraXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGVidWdcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL2NvbXBhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL21lbW9pemVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibG9kYXNoL3NvcnRCeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtaW5nb1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJxdWVyeXN0cmluZ1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZXNwb25zaXZlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJvdXRlci1kb21cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QvanN4LWRldi1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInNlbWFudGljLXVpLXJlYWN0XCIpOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgdHlwZSB7SW1wZXJpdW1TdGF0ZUNsaWVudE1vZHVsZX0gZnJvbSAnQGltcGVyaXVtL3N0YXRlJztcbmltcG9ydCB7dXNlTW9iaWxlTGF5b3V0fSBmcm9tICcuL2hvb2tzL3VzZU1vYmlsZUxheW91dCc7XG5pbXBvcnQge3N0YXRlfSBmcm9tICcuL3N0YXRlJztcbmltcG9ydCB0eXBlIHtJbXBlcml1bUxheW91dENsaWVudE1vZHVsZX0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQge3dpdGhMYXlvdXR9IGZyb20gJy4vd2l0aExheW91dCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBsYXlvdXRDbGllbnRNb2R1bGUoKTogSW1wZXJpdW1TdGF0ZUNsaWVudE1vZHVsZSAmIEltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlIHtcblx0cmV0dXJuIHtcblx0XHRuYW1lOiAnQGltcGVyaXVtL2xheW91dCcsXG5cdFx0b3JkZXI6IDMwLFxuXHRcdGhvY3M6IFt3aXRoTGF5b3V0XSxcblx0XHRzdGF0ZSxcblx0XHRsYXlvdXQ6IHtcblx0XHRcdGRhdGFIb29rczogW3VzZU1vYmlsZUxheW91dF0sXG5cdFx0fSxcblx0fTtcbn1cblxuZXhwb3J0IHR5cGUge0ltcGVyaXVtTGF5b3V0Q2xpZW50TW9kdWxlLCBMYXlvdXREYXRhfSBmcm9tICcuL3R5cGVzJztcbmV4cG9ydCB7dXNlTGF5b3V0U3RhdGUsIGFjdGlvbnMgYXMgbGF5b3V0QWN0aW9uc30gZnJvbSAnLi9zdGF0ZSc7XG5leHBvcnQge2dlbmVyYXRlVmlzaWJsZX0gZnJvbSAnLi91dGlscyc7XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJFeGVjdXRlRGF0YUhvb2siLCJEYXRhSG9va3MiLCJkYXRhSG9va3MiLCJtYXAiLCJob29rIiwiaW5kZXgiLCJ1c2VTdGF0ZSIsIkFjY29yZGlvbiIsIkRyb3Bkb3duIiwiSWNvbiIsIk1lbnUiLCJzdHlsZXMiLCJEcm9wZG93bkl0ZW1NZW51IiwiaXRlbSIsImNoaWxkcmVuIiwidmVydGljYWwiLCJvcGVuIiwic2V0T3BlbiIsInZlcnRpY2FsRHJvcGRvd25UaXRsZSIsImV2Iiwic3RvcFByb3BhZ2F0aW9uIiwidmVydGljYWxEcm9wZG93bkljb25Sb3RhdGVkIiwidmVydGljYWxEcm9wZG93bkljb24iLCJ0ZXh0IiwidmVydGljYWxEcm9wZG93bkNvbnRlbnQiLCJkYXRhSG9vayIsImRlYnVnIiwiZCIsIkV4ZWN1dGVTZWxlY3Rvckhvb2siLCJyZW5kZXIiLCJkYXRhIiwiaXNDdXN0b21NZW51SXRlbSIsInNvcnRXZWlnaHRlZEl0ZW1zIiwic3BsaXRIb3Jpem9udGFsSXRlbXMiLCJJdGVtQmFySXRlbSIsIlJlbmRlckNvbXBvbmVudCIsIm1hcEl0ZW1zIiwibmFtZSIsIml0ZW1zIiwicHJvcHMiLCJJdGVtQmFyIiwicmVzdCIsImltcyIsImxlZnQiLCJsZWZ0SXRlbXMiLCJyaWdodE1hcHBlZEl0ZW1zIiwicmlnaHRJdGVtcyIsInJpZ2h0IiwibGVuZ3RoIiwiTGluayIsInVzZUxvY2F0aW9uIiwidXNlUm91dGVNYXRjaCIsImlzRHJvcGRvd25NZW51SXRlbSIsImlzTWVudU1lbnVJdGVtIiwiTWVudUl0ZW1NZW51IiwiUmVuZGVySWZWaXNpYmxlIiwiYXMiLCJsb2MiLCJyb3V0ZU1hdGNoT2JqZWN0IiwidG8iLCJwYXRoIiwiZXhhY3QiLCJzZW5zaXRpdmUiLCJzdHJpY3QiLCJyb3V0ZU1hdGNoIiwiYWN0aXZlIiwiaWNvbiIsImRyb3Bkb3duIiwidiIsIkl0ZW0iLCJtZW51IiwibGlua1BhcmFtcyIsIm1lbnVQYXJhbXMiLCJsaW5rIiwiSXRlbVgiLCJyZW5kZXJlZEl0ZW0iLCJTZWdtZW50IiwidXNlTGF5b3V0U3RhdGUiLCJMYXlvdXQiLCJmb290ZXIiLCJtZW51YmFyIiwic3RhdHVzYmFyIiwic2lkZWJhciIsImlzTW9iaWxlIiwibWVudU9wZW4iLCJzZXRNZW51T3BlbiIsIm1vYmlsZVNpZGViYXJUb2dnbGUiLCJzdGlja09uTW9iaWxlIiwid2VpZ2h0IiwiaWNvblJvdGF0ZWQiLCJtZW51YmFySXRlbXMiLCJmaWx0ZXIiLCJzaWRlYmFySXRlbXMiLCJzaWRlYmFyQ29tcCIsInNpZGViYXJIaWRkZW4iLCJmb290ZXJJdGVtcyIsImZvb3RlckNvbXAiLCJzdGF0dXNiYXJJdGVtcyIsInN0YXR1c2JhckNvbXAiLCJwYXJlbnQiLCJjb250ZW50V3JhcHBlciIsImNvbnRlbnQiLCJjb21wYWN0IiwiUXVlcnkiLCJxdWVyeVN0cmluZyIsIm1lcmdlTG9jYXRpb25EYXRhIiwibG9jYXRpb25EYXRhIiwicGF0aG5hbWUiLCJzcGxpdCIsImhhc2giLCJzZWFyY2giLCJwYXJzZSIsInJvdXRlciIsInJlbmRlcldpdGhRdWVyeSIsInF1ZXJ5IiwiY29tcG9uZW50IiwicSIsInRlc3QiLCJ2aXNpYmxlIiwic2VsZWN0b3JIb29rIiwidXNlRWZmZWN0IiwidXNlRGlzcGF0Y2giLCJ1c2VNZWRpYVF1ZXJ5IiwiYWN0aW9ucyIsInVzZU1vYmlsZUxheW91dCIsImRpc3BhdGNoIiwic2V0TW9iaWxlIiwiY3JlYXRlU2xpY2VIb29rIiwiY3JlYXRlU2xpY2UiLCJzdGF0ZSIsImluaXRpYWxTdGF0ZSIsInJlZHVjZXJzIiwic3QiLCJhY3Rpb24iLCJwYXlsb2FkIiwiaXNJbXBlcml1bUxheW91dENsaWVudE1vZHVsZSIsIm1vZHVsZSIsImxheW91dE1vZHVsZSIsImxheW91dCIsInVuZGVmaW5lZCIsInZhbHVlIiwibWVtb2l6ZSIsInNvcnRCeSIsInNvcnRXZWlnaHRlZEl0ZW1zSW1wbCIsInJlZHVjZSIsIm1lbW8iLCJwb3NpdGlvbiIsImdlbmVyYXRlVmlzaWJsZSIsInZpc0RlZmluaXRpb24iLCJpbml0aWFsTGF5b3V0TW9kdWxlRGF0YSIsIndpdGhMYXlvdXQiLCJjbGllbnQiLCJsYXlvdXRNb2R1bGVEYXRhIiwibW9kdWxlcyIsImxheW91dEhvYyIsIldyYXBwZWQiLCJkaXNwbGF5TmFtZSIsIldpdGhMYXlvdXQiLCJsYXlvdXRDbGllbnRNb2R1bGUiLCJvcmRlciIsImhvY3MiLCJsYXlvdXRBY3Rpb25zIl0sInNvdXJjZVJvb3QiOiIifQ==
|