my-orders-tickets-widget 1.0.0-beta.16 → 1.0.0-beta.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +34 -36
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -169,8 +169,7 @@ const getUserOrders = _ref => {
|
|
|
169
169
|
page = _utils_constants__WEBPACK_IMPORTED_MODULE_6__.FIRST_PAGE,
|
|
170
170
|
perPage = _utils_constants__WEBPACK_IMPORTED_MODULE_6__.DEFAULT_ITEMS_PER_PAGE,
|
|
171
171
|
filter = {},
|
|
172
|
-
sort = {}
|
|
173
|
-
next = false
|
|
172
|
+
sort = {}
|
|
174
173
|
} = _ref;
|
|
175
174
|
return async (dispatch, getState, _ref2) => {
|
|
176
175
|
let {
|
|
@@ -188,7 +187,7 @@ const getUserOrders = _ref => {
|
|
|
188
187
|
order: "-id",
|
|
189
188
|
"filter[]": ["status==Paid"],
|
|
190
189
|
relations: "none",
|
|
191
|
-
page
|
|
190
|
+
page,
|
|
192
191
|
per_page: perPage
|
|
193
192
|
};
|
|
194
193
|
if (Object.keys(filter).length > 0) {
|
|
@@ -1140,9 +1139,11 @@ __webpack_require__.r(__webpack_exports__);
|
|
|
1140
1139
|
/* harmony import */ var _OrdersList__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./OrdersList */ "./src/components/OrdersList/index.js");
|
|
1141
1140
|
/* harmony import */ var _utils_summitUtils__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/summitUtils */ "./src/utils/summitUtils.js");
|
|
1142
1141
|
/* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../actions */ "./src/actions.js");
|
|
1143
|
-
/* harmony import */ var
|
|
1144
|
-
/* harmony import */ var
|
|
1145
|
-
/* harmony import */ var
|
|
1142
|
+
/* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../utils/constants */ "./src/utils/constants.js");
|
|
1143
|
+
/* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/styles.module.scss");
|
|
1144
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
|
|
1145
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__);
|
|
1146
|
+
|
|
1146
1147
|
|
|
1147
1148
|
|
|
1148
1149
|
|
|
@@ -1163,34 +1164,28 @@ const MyOrdersTickets = () => {
|
|
|
1163
1164
|
summit,
|
|
1164
1165
|
memberOrders,
|
|
1165
1166
|
orders_current_page,
|
|
1167
|
+
orders_last_page,
|
|
1166
1168
|
orders_per_page,
|
|
1167
1169
|
orders_total
|
|
1168
1170
|
} = (0,react_redux__WEBPACK_IMPORTED_MODULE_1__.useSelector)(state => state.widgetState || {}, react_redux__WEBPACK_IMPORTED_MODULE_1__.shallowEqual);
|
|
1169
|
-
const [hasMore, setHasMore] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(true);
|
|
1170
|
-
const [searchNext, setSearchNext] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
|
|
1171
1171
|
const [filter, setFilter] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});
|
|
1172
1172
|
const [sort, setSort] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)({});
|
|
1173
1173
|
const onReset = () => {
|
|
1174
1174
|
setSort({});
|
|
1175
1175
|
setFilter({});
|
|
1176
|
-
setSearchNext(false);
|
|
1177
1176
|
dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.resetFilter)());
|
|
1178
1177
|
};
|
|
1179
|
-
const fetchData = async
|
|
1178
|
+
const fetchData = async page => {
|
|
1180
1179
|
dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_8__.getUserOrders)({
|
|
1181
|
-
page
|
|
1180
|
+
page,
|
|
1182
1181
|
perPage: orders_per_page,
|
|
1183
|
-
next: searchNext,
|
|
1184
1182
|
filter,
|
|
1185
1183
|
sort
|
|
1186
|
-
}))
|
|
1187
|
-
var _res$response;
|
|
1188
|
-
if (((_res$response = res.response) === null || _res$response === void 0 || (_res$response = _res$response.data) === null || _res$response === void 0 ? void 0 : _res$response.length) > orders_per_page && memberOrders.length === orders_total) setHasMore(false);
|
|
1189
|
-
});
|
|
1184
|
+
}));
|
|
1190
1185
|
};
|
|
1191
1186
|
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
1192
|
-
fetchData();
|
|
1193
|
-
}, [filter
|
|
1187
|
+
fetchData(orders_current_page);
|
|
1188
|
+
}, [filter]);
|
|
1194
1189
|
const onFilter = filter => {
|
|
1195
1190
|
setSort({});
|
|
1196
1191
|
setFilter(filter);
|
|
@@ -1202,14 +1197,14 @@ const MyOrdersTickets = () => {
|
|
|
1202
1197
|
name: "created"
|
|
1203
1198
|
});
|
|
1204
1199
|
};
|
|
1205
|
-
return /*#__PURE__*/(0,
|
|
1206
|
-
children: [/*#__PURE__*/(0,
|
|
1200
|
+
return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.Fragment, {
|
|
1201
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_FilterSortSearch__WEBPACK_IMPORTED_MODULE_5__["default"], {
|
|
1207
1202
|
onFilter: onFilter,
|
|
1208
1203
|
onSort: onSort,
|
|
1209
1204
|
onSearch: onFilter,
|
|
1210
1205
|
onReset: onReset
|
|
1211
|
-
}), /*#__PURE__*/(0,
|
|
1212
|
-
className:
|
|
1206
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
|
|
1207
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.widgetHeader,
|
|
1213
1208
|
sx: {
|
|
1214
1209
|
padding: {
|
|
1215
1210
|
xs: 2,
|
|
@@ -1218,24 +1213,24 @@ const MyOrdersTickets = () => {
|
|
|
1218
1213
|
}
|
|
1219
1214
|
},
|
|
1220
1215
|
"data-testid": "my-orders-ticket-header",
|
|
1221
|
-
children: [/*#__PURE__*/(0,
|
|
1222
|
-
className:
|
|
1216
|
+
children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)("h2", {
|
|
1217
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.summitTitleDate,
|
|
1223
1218
|
children: summit === null || summit === void 0 ? void 0 : summit.name
|
|
1224
|
-
}), /*#__PURE__*/(0,
|
|
1225
|
-
className:
|
|
1219
|
+
}), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)("h2", {
|
|
1220
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.summitTitleDate,
|
|
1226
1221
|
children: (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_7__.getSummitFormattedDate)(summit)
|
|
1227
1222
|
})]
|
|
1228
|
-
}), memberOrders !== null && memberOrders !== void 0 && memberOrders.length ? /*#__PURE__*/(0,
|
|
1229
|
-
dataLength:
|
|
1230
|
-
next: () =>
|
|
1231
|
-
hasMore:
|
|
1223
|
+
}), memberOrders !== null && memberOrders !== void 0 && memberOrders.length ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_4___default()), {
|
|
1224
|
+
dataLength: orders_total,
|
|
1225
|
+
next: () => fetchData(orders_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_9__.ONE_PAGE_NEXT),
|
|
1226
|
+
hasMore: orders_current_page < orders_last_page,
|
|
1232
1227
|
scrollThreshold: 1,
|
|
1233
|
-
children: memberOrders === null || memberOrders === void 0 ? void 0 : memberOrders.map(order => /*#__PURE__*/(0,
|
|
1228
|
+
children: memberOrders === null || memberOrders === void 0 ? void 0 : memberOrders.map(order => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_OrdersList__WEBPACK_IMPORTED_MODULE_6__["default"], {
|
|
1234
1229
|
order: order,
|
|
1235
1230
|
summit: summit
|
|
1236
1231
|
}, order.number + order.id))
|
|
1237
|
-
}) : /*#__PURE__*/(0,
|
|
1238
|
-
className:
|
|
1232
|
+
}) : /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_11__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
|
|
1233
|
+
className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_10__.noOrdersFound,
|
|
1239
1234
|
children: t("orders.no_orders")
|
|
1240
1235
|
})]
|
|
1241
1236
|
});
|
|
@@ -4629,6 +4624,7 @@ const WidgetReducer = function () {
|
|
|
4629
4624
|
} = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
4630
4625
|
switch (type) {
|
|
4631
4626
|
case openstack_uicore_foundation_lib_security_actions__WEBPACK_IMPORTED_MODULE_1__.LOGOUT_USER:
|
|
4627
|
+
return DEFAULT_STATE;
|
|
4632
4628
|
case _actions__WEBPACK_IMPORTED_MODULE_2__.RESET_STATE:
|
|
4633
4629
|
return DEFAULT_STATE;
|
|
4634
4630
|
case _actions__WEBPACK_IMPORTED_MODULE_2__.RESET_FILTER:
|
|
@@ -4650,12 +4646,14 @@ const WidgetReducer = function () {
|
|
|
4650
4646
|
const {
|
|
4651
4647
|
data,
|
|
4652
4648
|
total,
|
|
4653
|
-
current_page
|
|
4649
|
+
current_page,
|
|
4650
|
+
last_page
|
|
4654
4651
|
} = payload.response;
|
|
4655
4652
|
return _objectSpread(_objectSpread({}, state), {}, {
|
|
4656
4653
|
memberOrders: current_page === _utils_constants__WEBPACK_IMPORTED_MODULE_3__.FIRST_PAGE ? data : [...memberOrders, ...data],
|
|
4657
4654
|
orders_total: total,
|
|
4658
|
-
orders_current_page: current_page
|
|
4655
|
+
orders_current_page: current_page,
|
|
4656
|
+
orders_last_page: last_page
|
|
4659
4657
|
});
|
|
4660
4658
|
}
|
|
4661
4659
|
case _actions__WEBPACK_IMPORTED_MODULE_2__.GET_TICKETS_BY_ORDER:
|
|
@@ -6274,4 +6272,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
6274
6272
|
/******/ })()
|
|
6275
6273
|
;
|
|
6276
6274
|
});
|
|
6277
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUMrRTs7Ozs7Ozs7Ozs7QUNKL0U7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VB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Q2xDeW9CLFFBQVEsRUFBRXByQiwwREFBZ0I7RUFDMUJ3eUIsWUFBWSxFQUFFeHlCLDBEQUFnQjtFQUM5QjFILE1BQU0sRUFBRTBILDBEQUFnQjtFQUN4QmxHLFVBQVUsRUFBRWtHLDBEQUFnQjtFQUM1QnpILElBQUksRUFBRXlILDBEQUFnQjtFQUN0Qm1yQixRQUFRLEVBQUVuckIsMERBQWdCO0VBQzFCeEIsYUFBYSxFQUFFd0Isd0RBQWM0QztBQUMvQixDQUFDO0FBRUQsaUVBQWUydkIsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRGF0ZXBpY2tlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NdWx0aVN0ZXBTbGlkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlck51bWJlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldERlbGVnYXRpb25GaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NdWx0aVN0ZXBTbGlkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RyYXdlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFiXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvRGF0ZVBpY2tlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAcmVkdXhqcy90b29sa2l0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHNlbnRyeS9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGdldFJlcXVlc3QsXG4gIGRlbGV0ZVJlcXVlc3QsXG4gIGNyZWF0ZUFjdGlvbixcbiAgc3RvcExvYWRpbmcsXG4gIHN0YXJ0TG9hZGluZyxcbiAgcHV0UmVxdWVzdFxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IHsgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBGSVJTVF9QQUdFLFxuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBPTkVfUEFHRV9ORVhULFxuICBQUk9NSVNFX0JBVENIX0xJTUlULFxuICBGSUZUWV9QRVJfUEFHRVxufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgU0VUX1NUQVRFID0gXCJTRVRfU1RBVEVcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFMgPSBcIkdFVF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0U3RhdGUgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1NUQVRFKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmlsdGVyID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9GSUxURVIpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSL1NPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX1bXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfT1AJHtmaWx0ZXJPYmoudmFsdWV9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT5cbiAgZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIjtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKHtcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIgPSB7fSxcbiAgICBzb3J0ID0ge30sXG4gICAgbmV4dCA9IGZhbHNlXG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZTogbmV4dCA/IHBhZ2UgKyBPTkVfUEFHRV9ORVhUIDogcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoeyBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB1c2VyU3RhdGU6IHsgdXNlclByb2ZpbGUgfSxcbiAgICAgIHN1bW1pdFxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgaWYgKCF1c2VyUHJvZmlsZS5pZCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBmaWx0ZXI6IFwic3RhdHVzPT1QYWlkXCIsXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCB0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3JkZXIuaWQsb3JkZXIub3duZXJfZmlyc3RfbmFtZSxvcmRlci5vd25lcl9sYXN0X25hbWUsb3JkZXIub3duZXJfZW1haWwsb3duZXIuZmlyc3RfbmFtZSxvd25lci5sYXN0X25hbWUsb3duZXIuc3RhdHVzXCIsXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7IG9yZGVySWQsIHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlc2VuZE5vdGlmaWNhdGlvbiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IEFkYXB0ZXJEYXlqcyB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uUHJvdmlkZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiO1xuaW1wb3J0IHsgRGF0ZVBpY2tlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfREFURSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWNEYXRlUGlja2VyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gIGNvbnN0IFtkYXRlVmFsdWUsIHNldERhdGVWYWx1ZV0gPSB1c2VTdGF0ZShub3cpO1xuICBjb25zdCBvbkRhdGVDaGFuZ2UgPSAodmFsKSA9PiB7XG4gICAgc2V0RGF0ZVZhbHVlKHZhbCk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbC4kZCk7XG4gICAgY29uc3QgeyBsb3dlciwgdXBwZXIgfSA9IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyhkYXRlKTtcbiAgICBvbkZpbHRlcih7XG4gICAgICB0eXBlOiBGSUxURVJfVkFSX0RBVEUsXG4gICAgICBuYW1lOiBcImNyZWF0ZWRcIixcbiAgICAgIGRhdGUsXG4gICAgICBsb3dlcixcbiAgICAgIHVwcGVyXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uUmVzZXRBY3Rpb24gPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHNldERhdGVWYWx1ZShub3cpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckRhdGVMYWJlbH0+e3QoXCJmaWx0ZXIucHVyY2hhc2VkX29uXCIpfTwvZGl2PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZVBpY2tlckNvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVwaWNrZXJDbG9zZX1cbiAgICAgICAgICBvbkNsaWNrPXtvblJlc2V0QWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8TG9jYWxpemF0aW9uUHJvdmlkZXIgZGF0ZUFkYXB0ZXI9e0FkYXB0ZXJEYXlqc30+XG4gICAgICAgICAgPERhdGVQaWNrZXJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbGVuZGFyRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkRhdGVDaGFuZ2V9XG4gICAgICAgICAgICB2YWx1ZT17ZGF0ZVZhbHVlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTG9jYWxpemF0aW9uUHJvdmlkZXI+XG4gICAgICA8L1N0YWNrPlxuICAgIDwvPlxuICApO1xufVxuXG5CYXNpY0RhdGVQaWNrZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBCYXNpY0RhdGVQaWNrZXIgZnJvbSBcIi4vRGF0ZXBpY2tlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyTnVtQWN0aXZlLCBzZXRGaWx0ZXJOdW1BY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgey8qKiBjdXJyZW50bHkganVzdCBzaG93aW5nIFwiMVwiIGJlY2F1c2Ugd2UncmUgY3VycmVudGx5IG9ubHkgZmlsdGVyaW5nIG9uZSBjcml0ZXJpYSAtIGNyZWF0ZWQgZGF0ZSAqL31cbiAgICAgICAge2ZpbHRlck51bUFjdGl2ZSAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlck51bUFjdGl2ZX0+MTwvZGl2Pn1cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0RhdGVQaWNrZXIgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8QmFzaWNEYXRlUGlja2VyXG4gICAgICAgICAgb25SZXNldD17KCkgPT4ge1xuICAgICAgICAgICAgb25SZXNldCgpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKGZhbHNlKTtcbiAgICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25GaWx0ZXI9eyhmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIG9uRmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUodHJ1ZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufVxuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmZ1bmN0aW9uIFNlYXJjaCh7IG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0Nsb3NlLCBzZXRTaG93Q2xvc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG5hbWU6IFwibnVtYmVyXCIsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXG4gICAgICB9KTtcbiAgICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gICAgb25SZXNldCgpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFNvcnQoeyBvblNvcnQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9PlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImRlc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJhc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyU29ydFNlYXJjaCh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICB4cz17Nn1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGdhcD17Mn1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5GaWx0ZXJTb3J0U2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJTb3J0U2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBEcmF3ZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRHJhd2VyXCI7XG5pbXBvcnQgeyBDb250YWluZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNdWx0aVN0ZXBTbGlkZXIgPSAoeyBjaGlsZHJlbiwgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiAoXG4gICAgPERyYXdlclxuICAgICAgYW5jaG9yPVwicmlnaHRcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTbGlkZXJ9XG4gICAgICBzdHlsZT17eyB6SW5kZXg6IDEwMDAgfX1cbiAgICAgIFBhcGVyUHJvcHM9e3tcbiAgICAgICAgc3g6IHtcbiAgICAgICAgICB3aWR0aDogXCI2MCVcIlxuICAgICAgICB9XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMubXVsdGlzdGVwQ29udGFpbmVyfT5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm11bHRpc3RlcENsb3NlSWNvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlU2xpZGVyfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2Utc2xpZGVyXCJcbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250YWluZXI+XG4gICAgPC9EcmF3ZXI+XG4gIClcblxuTXVsdGlTdGVwU2xpZGVyLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpU3RlcFNsaWRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IEZpbHRlclNvcnRTZWFyY2ggZnJvbSBcIi4vRmlsdGVyU29ydFNlYXJjaFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0VXNlck9yZGVycywgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBvcmRlcnNfY3VycmVudF9wYWdlLFxuICAgIG9yZGVyc19wZXJfcGFnZSxcbiAgICBvcmRlcnNfdG90YWxcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbc2VhcmNoTmV4dCwgc2V0U2VhcmNoTmV4dF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXIsIHNldEZpbHRlcl0gPSB1c2VTdGF0ZSh7fSk7XG4gIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVN0YXRlKHt9KTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcih7fSk7XG4gICAgc2V0U2VhcmNoTmV4dChmYWxzZSk7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKCkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2U6IG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgbmV4dDogc2VhcmNoTmV4dCxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICkudGhlbigocmVzKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgIHJlcy5yZXNwb25zZT8uZGF0YT8ubGVuZ3RoID4gb3JkZXJzX3Blcl9wYWdlICYmXG4gICAgICAgIG1lbWJlck9yZGVycy5sZW5ndGggPT09IG9yZGVyc190b3RhbFxuICAgICAgKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YSgpO1xuICB9LCBbZmlsdGVyLCBzb3J0LCBzZWFyY2hOZXh0XSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKGZpbHRlcik7XG4gIH07XG4gIGNvbnN0IG9uU29ydCA9IChkaXJlY3Rpb24pID0+IHtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNvcnQoeyBkaXJlY3Rpb24sIG5hbWU6IFwiY3JlYXRlZFwiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvQm94PlxuICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnMubGVuZ3RofVxuICAgICAgICAgIG5leHQ9eygpID0+IHNldFNlYXJjaE5leHQodHJ1ZSl9XG4gICAgICAgICAgaGFzTW9yZT17aGFzTW9yZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+e3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfTwvQm94PlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeVRhYmxlKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRFbWFpbFN1cHBvcnQoe1xuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0cyxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShpc0luUmVmdW5kYWJsZVBlcmlvZCAmJiBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufSAke1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICAgICAgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWRcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgfWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufVxuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlclN1bW1hcnkoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvblJlZnVuZENsaWNrLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc3VibWl0UmVxdWVzdFxufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGVcbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEF0dGVuZGVlU3RhdHVzKHsgdGlja2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gdGlja2V0Lm93bmVyPy5lbWFpbCA/IChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHtcIiBcIn1cbiAgICAgICAge3RpY2tldC5vd25lcj8uZW1haWx9XG4gICAgICA8L3NwYW4+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgdGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgKTtcbn1cblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlckxpc3RJdGVtKHtcbiAgdGlja2V0cyxcbiAgdG90YWwsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgc3VtbWl0LFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gdGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmICh0b3RhbCA+IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHt0aWNrZXRzPy5sZW5ndGggPj0gaXRlbXNUb0Rpc3BsYXkgJiYgdGlja2V0cz8ubGVuZ3RoICE9PSB0b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn0+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrXG4gICAgICBzeD17e1xuICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgfX1cbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICA+XG4gICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259IG9uQ2xpY2s9e29uT3BlbkNsaWNrfT5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVhc3NpZ24gdGlja2V0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbb3BlblRpY2tldCwgc2V0T3BlblRpY2tldF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJXcmFwcGVyfVxuICAgICAgY29udGFpbmVyXG4gICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17OH1cbiAgICAgICAgcGFkZGluZz17Mn1cbiAgICAgICAgaXRlbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICB7cmVmdW5kUmVxdWVzdGVkICYmIGlzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezR9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiAyLCBwYjogMiB9fSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17dGlja2V0Lm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPVwicm93XCIgeHM9ezEyfSBsZz17Nn0gYWxpZ25JdGVtcz1cImNlbnRlclwiIGl0ZW0+XG4gICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBwYWRkaW5nPXsyfSB4cz17MTJ9IGxnPXs2fSBjb250YWluZXIgaXRlbT5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGV9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9eygpID0+IHNldE9wZW5UaWNrZXQodGlja2V0KX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICB0aWNrZXRJZD17b3BlblRpY2tldD8uaWR9XG4gICAgICAgIG9yZGVySWQ9e29wZW5UaWNrZXQ/Lm9yZGVyX2lkfVxuICAgICAgICBvd25lcklkPXtvcGVuVGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE9wZW5UaWNrZXQobnVsbCl9XG4gICAgICAvPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSlcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5mdW5jdGlvbiBPcmRlck51bWJlcih7XG4gIG51bWJlcixcbiAgY29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSBmYWxzZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pIHtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMub3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXROb0NvbnRhaW5lcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7bnVtYmVyfVxuICAgICAgPC9zcGFuPlxuICAgICAge2NvcHkgJiYgKFxuICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQobnVtYmVyKX1cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5PcmRlck51bWJlci5wcm9wVHlwZXMgPSB7XG4gIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTnVtYmVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gVGFiUGFuZWwocHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvcmRlcixcbiAgdG90YWwsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbcmVmdW5kUmVxdWVzdGVkLCBzZXRSZWZ1bmRSZXF1ZXN0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBpZiAodGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc2V0UmVmdW5kUmVxdWVzdGVkKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IHRpY2tldHMuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNhbmNlbFRpY2tldHNUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0QWxsVGlja2V0cyA9ICgpID0+IHtcbiAgICBjb25zdCByZWZ1bmRhYmxlVGlja2V0cyA9IHRpY2tldHMuZmlsdGVyKFxuICAgICAgKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkgPT09IHRydWVcbiAgICApO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChyZWZ1bmRhYmxlVGlja2V0cyk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjMDAwXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICAgIFRhYkluZGljYXRvclByb3BzPXt7XG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcIiMwMDBcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRvdGFsPXt0b3RhbH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZFJlcXVlc3RlZCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAgICA8c3Bhbj57dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X3RpY2tldF9yZWZ1bmRcIil9PC9zcGFuPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEJ1dHRvbnN9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbFRpY2tldHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfYWxsXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRCdXR0b25zfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtjYW5jZWxUaWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfY2FuY2VsXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVza3RvcC1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRvdGFsPXt0b3RhbH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezF9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICBvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0T3JkZXJUaWNrZXRzLCBnZXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcblxuZnVuY3Rpb24gT3JkZXJzTGlzdChwcm9wcykge1xuICBjb25zdCB7IHN1bW1pdCwgb3JkZXIgfSA9IHByb3BzO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyBwZXJfcGFnZSwgbGFzdF9wYWdlLCBtZW1iZXJPcmRlcnMgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG4gIGNvbnN0IGZldGNoVGlja2V0c0J5T3JkZXIgPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBjdXJyZW50X3BhZ2U6IGxhc3RfcGFnZSxcbiAgICAgICAgcGVyUGFnZTogcGVyX3BhZ2VcbiAgICAgIH0pXG4gICAgKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFRpY2tldHNCeU9yZGVyKCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiBwZXJfcGFnZSxcbiAgICAgICAgbmV4dDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAxLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17b3JkZXIubnVtYmVyfSBjb3B5IHRydW5jYXRlZCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAwLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17Z2V0T3JkZXJUaWNrZXRzKG1lbWJlck9yZGVycywgb3JkZXIuaWQpfVxuICAgICAgICAgIHRvdGFsPXtvcmRlci50aWNrZXRzX3RvdGFsfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRGVsZXRlT3V0bGluZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJOdW1iZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gUmVmdW5kUmVxdWVzdGVkVGlja2V0KHsgdGlja2V0LCBvblJlbW92ZSB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUaWNrZXRCb3hDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxEZWxldGVPdXRsaW5lSWNvblxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVtb3ZlLWJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxldGVJY29ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25SZW1vdmUodGlja2V0KX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17dGlja2V0Lm51bWJlcn0gdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25SZW1vdmU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiAsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBNdWx0aVN0ZXBTbGlkZXIgZnJvbSBcIi4uL011bHRpU3RlcFNsaWRlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRSZXF1ZXN0c01vZGFsKHtcbiAgdGlja2V0cyxcbiAgb3BlbixcbiAgb25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHMsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHMgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9UV08pOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGV4dH0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NhbmNlbFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3g+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIG9uUmVtb3ZlPXtvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0c31cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8TXVsdGlTdGVwU2xpZGVyIG9wZW49e29wZW59IG9uQ2xvc2VTbGlkZXI9e2Nsb3NlU2xpZGVyfT5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEhlYWRlcnN9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfTwvaDM+XG4gICAgICAgIDwvQm94PlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvTXVsdGlTdGVwU2xpZGVyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBzZXRGaWVsZFRvdWNoZWQsIHNldEZpZWxkVmFsdWUgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24udGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPSBjdXJyZW50QW5zLmxlbmd0aCA9PT0gcXVlc3Rpb25NYXhWYWx1ZXM7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gbWF4U2VsZWN0aW9uUmVhY2hlZCA/IGN1cnJlbnRBbnMgOiBbLi4uY3VycmVudEFucywgdmFsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjdXJyZW50QW5zLmZpbHRlcigodikgPT4gdiAhPT0gdmFsKTtcbiAgICB9XG5cbiAgICBzZXRGaWVsZFZhbHVlKHF1ZXN0aW9uU2x1ZywgbmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsPntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBNZW51SXRlbSwgU2VsZWN0IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93blF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8SW5wdXRMYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvSW5wdXRMYWJlbD5cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGxhYmVsSWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBpZD17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtvcC5sYWJlbH0gdmFsdWU9e29wLnZhbHVlfT5cbiAgICAgICAgICAgICAge29wLmxhYmVsfVxuICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgVGV4dFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQsIGNoaWxkcmVuKSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIGlmICghcnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZS50b1N0cmluZygpXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT5cbiAgICBjaGVja1Zpc2liaWxpdHkoXG4gICAgICBydWxlLFxuICAgICAgY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKVxuICAgICk7XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblJlZ2lzdHJhdGlvbkRpc2NsYWltZXIucHJvcFR5cGVzID0ge1xuICBkaXNjbGFpbWVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5jb25zdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzID0gKHsgZm9ybWlrIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGlkPVwiZGVsZWdhdGVkX2ZpcnN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9sYXN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwubGFzdF9uYW1lXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9sYXN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXREZWxlZ2F0aW9uRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERlbGVnYXRpb25GaWVsZHM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmcm9tIFwiLi4vVGlja2V0RGVsZWdhdGlvbkZpZWxkc1wiO1xuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgXCJGaWVsZCBtdXN0IGJlIGNoZWNrZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5jb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbGxvd3NEZWxlZ2F0aW9uLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge1xuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGVtYWlsXCIpXG4gICAgICAuZW1haWwoXCJFbWFpbCBpbnZhbGlkXCIpXG4gICAgICAucmVxdWlyZWQoXCJFbWFpbCBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXTogeXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdOiB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBsYXN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkxhc3QgbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV06IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoXCJDb21wYW55IGlzIHJlcXVpcmVkXCIpXG4gICAgICAgICAgICAudHlwZUVycm9yKFwiUmVxdWlyZWQgZmllbGRcIilcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoXCJDb21wYW55IGlzIHJlcXVpcmVkXCIpXG4gICAgKVxuICB9O1xuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIFwiRmllbGQgbXVzdCBiZSBjaGVja2VkXCIpO1xuICB9XG5cbiAgaWYgKGFsbG93c0RlbGVnYXRpb24pIHtcbiAgICBzY2hlbWEuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBmaXJzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJGaXJzdCBuYW1lIGlzIHJlcXVpcmVkXCIpO1xuXG4gICAgc2NoZW1hLmRlbGVnYXRlZF9sYXN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBsYXN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkxhc3QgbmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHEudHlwZSwgcS5uYW1lLCBxLm1hbmRhdG9yeSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcbiAgICAgICAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICAgICAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuICAgICAgICAgIC5udWxsYWJsZSgpXG4gICAgICAgICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICAgICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2gocXVlc3Rpb25BbnMsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG4gICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGVuOiAoc2NoKSA9PiBzY2gucmVxdWlyZWQoXCJUaGlzIHF1ZXN0aW9uIGlzIHJlcXVpcmVkXCIpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuXG4vLyBvbiBmb3JtaWsgd2UgbmVlZCB0byBpbml0aWFsaXplIGFsbCBzdWJxdWVzdGlvbnMgd2l0aCBhIHZhbHVlXG4vLyBvbiBzdWJtaXQsIHdlIG9ubHkgbmVlZCByZWxldmFudCBhbnN3ZXJzXG5jb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgbWFuYWdlcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge1xuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF06XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXTpcbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lLFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV06XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUsXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55LFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkXG4gIH07XG5cbiAgaWYgKGFsbG93c0RlbGVnYXRpb24pIHtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lID1cbiAgICAgIGFuc3dlcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgfHwgbWFuYWdlcj8uZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9sYXN0X25hbWUgfHwgbWFuYWdlcj8ubGFzdF9uYW1lIHx8IFwiXCI7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLmlkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWspID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIHN1Ym1pdENvdW50IH0gPSBmb3JtaWs7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yQXJyYXlbMF19J11gKTtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybjtcbiAgICAvLyBTY3JvbGwgdG8gZmlyc3Qga25vd24gZXJyb3IgaW50byB2aWV3XG4gICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiBcInNtb290aFwiLCBibG9jazogXCJjZW50ZXJcIiB9KTtcbiAgfSwgW3N1Ym1pdENvdW50XSk7XG59O1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRpY2tldE1hbmFnZXIgPSB0aWNrZXQ/Lm1hbmFnZXI7XG4gIC8qIERJU0FCTEUgREVMRUdBVElPTiBGVE0gKi9cbiAgY29uc3QgYWxsb3dzRGVsZWdhdGlvbiA9IHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSAmJiBmYWxzZTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWspO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIG93bmVyPXt0aWNrZXQub3duZXJ9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHthbGxvd3NEZWxlZ2F0aW9uICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgdmFyaWFudD1cInN1YnRpdGxlMlwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRlbGVnYXRlZFRvfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kZWxlZ2F0ZWRfdG9cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUaWNrZXREZWxlZ2F0aW9uRmllbGRzIGZvcm1paz17Zm9ybWlrfSAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPGg2IGNsYXNzTmFtZT17c3R5bGVzLmFkZGl0aW9uYWxEZXRhaWxzfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hZGl0aW9uYWxfZGV0YWlsc1wiKX1cbiAgICAgICAgICA8L2g2PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgIC8+XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgICA8Q29tcGFueUZpZWxkIGZvcm1paz17Zm9ybWlrfSBzdW1taXRJZD17c3VtbWl0SWR9IGlzUmVxdWlyZWQgLz5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaW5mb05vdGV9Pnt0KFwidGlja2V0X2RldGFpbC5pbmZvX25vdGVcIil9PC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRPd25lckZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBCdXR0b24sXG4gIERyYXdlcixcbiAgSWNvbkJ1dHRvbixcbiAgVHlwb2dyYXBoeSxcbiAgRGlhbG9nLFxuICBEaWFsb2dUaXRsZSxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIENsb3NlIGFzIENsb3NlSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uLFxuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvblxufSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCwgc2F2ZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHsgc3VtbWl0LCB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9LFxuICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgIGN1cnJlbnRUaWNrZXQ6IHRpY2tldFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IGlzT3BlbiA9IHRpY2tldElkICYmIG9yZGVySWQgJiYgb3duZXJJZDtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCAmJiBvd25lcklkKSB7XG4gICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxEcmF3ZXJcbiAgICAgICAgb3Blbj17ISFpc09wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IFwiYXV0b1wiLCBtYXhXaWR0aDogXCIxMDAlXCIsIHdpZHRoOiBcIjEwMCVcIiB9fVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpY2tldC5xcl9jb2RlfVxuICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5zZW5kQnRufT5cbiAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5zZW5kXCIpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgIDxPcmRlck51bWJlclxuICAgICAgICAgICAgICBudW1iZXI9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgY29weVxuICAgICAgICAgICAgICB0cnVuY2F0ZWRcbiAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQm94PlxuXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPERpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImFsZXJ0LWRpYWxvZy10aXRsZVwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICA8RGlhbG9nVGl0bGUgaWQ9XCJhbGVydC1kaWFsb2ctdGl0bGVcIj57c2F2ZU1lc3NhZ2U/LnRpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgICAgIDxEaWFsb2dDb250ZW50VGV4dCBpZD1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAge3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgICAgICA8L0RpYWxvZ0NvbnRlbnRUZXh0PlxuICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICA8L0RpYWxvZz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICAodGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZSkgJiZcbiAgICBzdGF0dXMgIT09IFNUQVRVU19VTkFTU0lHTkVEICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcj8uaWQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZVxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVFxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBpc09yZGVyTG9hZGluZzogZmFsc2UsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDEsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAxLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAxLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLmZvcm1lck9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkID0gcGF5bG9hZDtcbiAgICAgIGNvbnN0IG9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoXG4gICAgICAgIChvKSA9PiBvLmlkID09PSB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkWzBdPy5vcmRlcl9pZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHMubWFwKFxuICAgICAgICAodGlja2V0KSA9PlxuICAgICAgICAgIHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQuZmluZCgodHJyKSA9PiB0cnIuaWQgPT09IHRpY2tldC5pZCkgfHwgdGlja2V0XG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5vcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czogdXBkYXRlZFRpY2tldHNcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2U6OiBnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUNcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0IHx8ICF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfVU5BU1NJR05FRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiB0aWNrZXQ/LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCIpO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fUm9pbVJcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fb29JMFZcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19faW1famhcIjtcbnZhciBfNCA9IFwiY29udGFpbmVyX19fTjNZNFhcIjtcbnZhciBfNSA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX0pXMmxPXCI7XG52YXIgXzYgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1Y5Z0hDXCI7XG52YXIgXzcgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JHcFlWXCI7XG52YXIgXzggPSBcImZpbHRlckRhdGVMYWJlbF9fX2lmRDRwXCI7XG52YXIgXzkgPSBcImZpbHRlckljb25fX19sMjFLSVwiO1xudmFyIF9hID0gXCJmaWx0ZXJMYWJlbF9fX19QMHduXCI7XG52YXIgX2IgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19WbWRHcVwiO1xudmFyIF9jID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19WdUhDSlwiO1xudmFyIF9kID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fYXJCdlFcIjtcbnZhciBfZSA9IFwibGFiZWxfX195TkZ5alwiO1xudmFyIF9mID0gXCJzaG93RGF0ZVBpY2tlcl9fX1VwUWJwXCI7XG52YXIgXzEwID0gXCJzb3J0Q29udGFpbmVyX19fbFJzalVcIjtcbnZhciBfMTEgPSBcInNvcnRJY29uX19fZlZWNUtcIjtcbnZhciBfMTIgPSBcInNvcnRMYWJlbF9fX1VxTFRDXCI7XG52YXIgXzEzID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX2NtbkJEXCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjb250YWluZXJcIiwgXzUgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF83IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF84IGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF85IGFzIFwiZmlsdGVySWNvblwiLCBfYSBhcyBcImZpbHRlckxhYmVsXCIsIF9iIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfYyBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZCBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgX2UgYXMgXCJsYWJlbFwiLCBfZiBhcyBcInNob3dEYXRlUGlja2VyXCIsIF8xMCBhcyBcInNvcnRDb250YWluZXJcIiwgXzExIGFzIFwic29ydEljb25cIiwgXzEyIGFzIFwic29ydExhYmVsXCIsIF8xMyBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm11bHRpc3RlcENsb3NlSWNvbl9fX3FjNk5EXCI7XG52YXIgXzIgPSBcIm11bHRpc3RlcENvbnRhaW5lcl9fX2RQYVM1XCI7XG5leHBvcnQgeyBfMSBhcyBcIm11bHRpc3RlcENsb3NlSWNvblwiLCBfMiBhcyBcIm11bHRpc3RlcENvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJibGFja0J1dHRvbl9fX2w5aGo5XCI7XG52YXIgXzMgPSBcImNvcHlJY29uX19fTmtIR09cIjtcbnZhciBfNCA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfNSA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF82ID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgXzcgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgXzggPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgXzkgPSBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJfX192cW9oTlwiO1xudmFyIF9hID0gXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZF9fX0hYbWR3XCI7XG52YXIgX2IgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgX2MgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfZCA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgX2UgPSBcInJldmVyc2VkX19fREZlYV9cIjtcbnZhciBfZiA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzEwID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTEgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xMiA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xMyA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMTUgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xNiA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJibGFja0J1dHRvblwiLCBfMyBhcyBcImNvcHlJY29uXCIsIF80IGFzIFwiZGlzcGxheV9ub25lXCIsIF81IGFzIFwibGFiZWxcIiwgXzYgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfNyBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfOCBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfOSBhcyBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJcIiwgX2EgYXMgXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZFwiLCBfYiBhcyBcIm9yZGVyV3JhcHBlclwiLCBfYyBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF9kIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfZSBhcyBcInJldmVyc2VkXCIsIF9mIGFzIFwidGFiQnV0dG9uc1wiLCBfMTAgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xMSBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzEyIGFzIFwidGlja2V0Tm9cIiwgXzEzIGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMTQgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xNSBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzE2IGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzIgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzMgPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfNCA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgXzUgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfNiA9IFwicmVmdW5kSGVhZGVyc19fX0hWSW1rXCI7XG52YXIgXzcgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF84ID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfOSA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfYSA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgX2IgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfYyA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8yIGFzIFwiY2FuY2VsQnV0dG9uXCIsIF8zIGFzIFwiY29udGludWVCdXR0b25cIiwgXzQgYXMgXCJkZWxldGVJY29uXCIsIF81IGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgXzYgYXMgXCJyZWZ1bmRIZWFkZXJzXCIsIF83IGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfOCBhcyBcInJlZnVuZFRleHRcIiwgXzkgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgX2EgYXMgXCJzdWNjZXNzTXNnXCIsIF9iIGFzIFwic3VjY2Vzc01zZzJcIiwgX2MgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNhbmNlbEJ0bl9fX2dnQ2RqXCI7XG52YXIgXzYgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNyA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzggPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOSA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF9hID0gXCJmb290ZXJfX19OSU03ZFwiO1xudmFyIF9iID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9jID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2QgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2UgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2YgPSBcInNhdmVCdG5fX19OcE9FVlwiO1xudmFyIF8xMCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgXzExID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMiA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMyA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTQgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNhbmNlbEJ0blwiLCBfNiBhcyBcImNsb3NlQnRuXCIsIF83IGFzIFwiY29weUJ0blwiLCBfOCBhcyBcImRlbGVnYXRlZFRvXCIsIF85IGFzIFwiZG93bmxvYWRCdG5cIiwgX2EgYXMgXCJmb290ZXJcIiwgX2IgYXMgXCJoZWFkZXJcIiwgX2MgYXMgXCJvcmRlck51bWJlclwiLCBfZCBhcyBcInFyQ29kZVwiLCBfZSBhcyBcInFyTm90ZVwiLCBfZiBhcyBcInNhdmVCdG5cIiwgXzEwIGFzIFwic2VuZEJ0blwiLCBfMTEgYXMgXCJzdGF0dXNcIiwgXzEyIGFzIFwic3VidGl0bGVcIiwgXzEzIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xNCBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibm9PcmRlcnNGb3VuZF9fX0FvZzJwXCI7XG52YXIgXzIgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1oxOVBtXCI7XG52YXIgXzMgPSBcIndpZGdldEhlYWRlcl9fX3lZNWdlXCI7XG5leHBvcnQgeyBfMSBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzIgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzMgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RyYXdlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRheWpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICAgICAgPGgzPnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0c1xuICAgICAgICAgICAgbG9naW5Vcmw9e2xvZ2luVXJsfVxuICAgICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGFwaUJhc2VVcmw9e2FwaUJhc2VVcmx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJnZXRSZXF1ZXN0IiwiZGVsZXRlUmVxdWVzdCIsImNyZWF0ZUFjdGlvbiIsInN0b3BMb2FkaW5nIiwic3RhcnRMb2FkaW5nIiwicHV0UmVxdWVzdCIsInBMaW1pdCIsImdldElkVG9rZW4iLCJJZFRva2VuVmVyaWZpZXIiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiT05FX1BBR0VfTkVYVCIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJGSUZUWV9QRVJfUEFHRSIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiU0VUX1NUQVRFIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TIiwiVElDS0VUX0FUVEVOREVFX0tFWVMiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueSIsImRpc2NsYWltZXJBY2NlcHRlZCIsImV4dHJhUXVlc3Rpb25zIiwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0U3RhdGUiLCJkaXNwYXRjaCIsInJlc2V0RmlsdGVyIiwic2V0UmVkdWNlclN0YXRlIiwic3VtbWl0IiwidXNlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXIiLCJ0eXBlIiwicHVzaCIsImNvbmNhdCIsIm5hbWUiLCJsb3dlciIsInVwcGVyIiwidmFsdWUiLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYiLCJwYWdlIiwicGVyUGFnZSIsInNvcnQiLCJuZXh0IiwiZ2V0U3RhdGUiLCJfcmVmMiIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwiY2F0Y2giLCJQcm9taXNlIiwicmVqZWN0IiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJwZXJfcGFnZSIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJmaWx0ZXJzIiwiaWQiLCJ0aGVuIiwicGF5bG9hZCIsImUiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWYzIiwiX3JlZjQiLCJ1c2VyU3RhdGUiLCJ1c2VyUHJvZmlsZSIsImV4cGFuZCIsImZpZWxkcyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjUiLCJfcmVmNiIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY3IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjgiLCJfcmVmOSIsInJlZnVuZEJ1bGtUaWNrZXRzIiwiX3JlZjEwIiwidGlja2V0cyIsImxpbWl0IiwiYWxsUmVmdW5kVGlja2V0Q2FsbHMiLCJtYXAiLCJhbGwiLCJyZXMiLCJzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQiLCJyIiwiX3IkcmVzcG9uc2UiLCJyZXNwb25zZSIsInJlZnVuZF9yZXF1ZXN0cyIsInVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJ0aWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwiZ2V0RXh0cmFRdWVzdGlvbnMiLCJhdHRlbmRlZUlkIiwiX3JlZjExIiwiZW5kcG9pbnQiLCJnZXRUaWNrZXQiLCJ0aWNrZXRJZCIsIl9yZWYxMiIsImZpbmFsbHkiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTMiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTQiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJSZWFjdCIsInVzZVN0YXRlIiwiUHJvcFR5cGVzIiwiU3RhY2siLCJ1c2VUcmFuc2xhdGlvbiIsImRheWpzIiwiQWRhcHRlckRheWpzIiwiTG9jYWxpemF0aW9uUHJvdmlkZXIiLCJEYXRlUGlja2VyIiwiQ2xvc2VJY29uIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwic3R5bGVzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiQmFzaWNEYXRlUGlja2VyIiwib25GaWx0ZXIiLCJvblJlc2V0IiwidCIsIm5vdyIsImRhdGVWYWx1ZSIsInNldERhdGVWYWx1ZSIsIm9uRGF0ZUNoYW5nZSIsInZhbCIsImRhdGUiLCJEYXRlIiwiJGQiLCJvblJlc2V0QWN0aW9uIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJmaWx0ZXJEYXRlTGFiZWwiLCJhbGlnbkl0ZW1zIiwic3giLCJwdCIsInBiIiwiZGF0ZVBpY2tlckNvbnRhaW5lciIsImZvbnRTaXplIiwiZGF0ZXBpY2tlckNsb3NlIiwib25DbGljayIsImRhdGVBZGFwdGVyIiwiY2FsZW5kYXJEaXNwbGF5Iiwib25DaGFuZ2UiLCJwcm9wVHlwZXMiLCJmdW5jIiwidXNlUmVmIiwidXNlRWZmZWN0IiwiRmlsdGVyTGlzdEljb24iLCJCb3giLCJGaWx0ZXIiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwidGFyZ2V0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJzaG93RGF0ZVBpY2tlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsIndpZHRoIiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJjb2xvciIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsImtleSIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJwbGFjZWhvbGRlciIsImlucHV0UHJvcHMiLCJCdXR0b24iLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwibGFiZWwiLCJHcmlkIiwiRmlsdGVyU29ydFNlYXJjaCIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiRXJyb3JJY29uIiwiRXJyb3JMYWJlbCIsImNsYXNzTmFtZXMiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsInN0eWxlIiwiRHJhd2VyIiwiQ29udGFpbmVyIiwiTXVsdGlTdGVwU2xpZGVyIiwib3BlbiIsIm9uQ2xvc2VTbGlkZXIiLCJhbmNob3IiLCJvbkNsb3NlIiwiUGFwZXJQcm9wcyIsIm11bHRpc3RlcENvbnRhaW5lciIsIm11bHRpc3RlcENsb3NlSWNvbiIsIm5vZGUiLCJib29sIiwidXNlRGlzcGF0Y2giLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJNeU9yZGVyc1RpY2tldHMiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzX3RvdGFsIiwic3RhdGUiLCJoYXNNb3JlIiwic2V0SGFzTW9yZSIsInNlYXJjaE5leHQiLCJzZXRTZWFyY2hOZXh0Iiwic2V0RmlsdGVyIiwic2V0U29ydCIsImZldGNoRGF0YSIsIl9yZXMkcmVzcG9uc2UiLCJ3aWRnZXRIZWFkZXIiLCJtZCIsImxnIiwic3VtbWl0VGl0bGVEYXRlIiwiZGF0YUxlbmd0aCIsInNjcm9sbFRocmVzaG9sZCIsIm51bWJlciIsIm5vT3JkZXJzRm91bmQiLCJEaXZpZGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzdGF0dXMiLCJzaGFwZSIsInN0cmluZyIsIm9iamVjdCIsImFycmF5T2YiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInJlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNUb1JlZnVuZCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwidmFyaWFudCIsInNpemUiLCJkaXNhYmxlZCIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJBdHRlbmRlZVN0YXR1cyIsIl90aWNrZXQkb3duZXIiLCJfdGlja2V0JG93bmVyMiIsInRpY2tldE93bmVyRW1haWwiLCJpc19hY3RpdmUiLCJPcmRlckxpc3RUaWNrZXRzIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsInRvdGFsIiwib25QYWdpbmF0ZUNsaWNrIiwic2VsZWN0VG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5Iiwic2xpY2VkVGlja2V0cyIsInNsaWNlIiwib25WaWV3TW9yZSIsIm9uVmlld0xlc3MiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJDaGVja2JveCIsIlRpY2tldFN0YXR1cyIsIk9yZGVyTnVtYmVyIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1VuYXNzaWduZWQiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl9vcGVuVGlja2V0JG93bmVyIiwib3BlblRpY2tldCIsInNldE9wZW5UaWNrZXQiLCJyZWFzc2lnbkRhdGUiLCJvcmRlcldyYXBwZXIiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiY2hlY2tlZCIsInRpY2tldE5vIiwiY29weSIsInRydW5jYXRlZCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiQ29udGVudENvcHlJY29uIiwiZGVmYXVsdFdpZHRoIiwicmV2ZXJzZWQiLCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZCIsIm9yZGVyVGlja2V0Tm9Db250YWluZXIiLCJjb3B5SWNvbiIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsIlRhYnMiLCJUYWIiLCJSZWZ1bmRSZXF1ZXN0c01vZGFsIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiaGFuZGxlQ2hhbmdlIiwiXyIsIm5ld1ZhbHVlIiwic2V0UmVmdW5kUmVxdWVzdGVkIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjYW5jZWxUaWNrZXRzVG9SZWZ1bmQiLCJzZWxlY3RBbGxUaWNrZXRzIiwicmVmdW5kYWJsZVRpY2tldHMiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJUYWJJbmRpY2F0b3JQcm9wcyIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwicmVmdW5kQnV0dG9ucyIsIm9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRPcmRlclRpY2tldHMiLCJnZXRGb3JtYXR0ZWREYXRlIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJsYXN0X3BhZ2UiLCJ0aGVtZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsIm1lbWJlclRpY2tldHMiLCJmZXRjaFRpY2tldHNCeU9yZGVyIiwiY3VycmVudF9wYWdlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJibGFja0J1dHRvbiIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJvcmRlclRpY2tldENvbnRhaW5lciIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ0aWNrZXRzX3RvdGFsIiwiRGVsZXRlT3V0bGluZUljb24iLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJvblJlbW92ZSIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsImRlbGV0ZUljb24iLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIkNoZWNrQ2lyY2xlSWNvbiIsIlNURVBfT05FIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNsb3NlU2xpZGVyIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJyZWZ1bmRUZXh0IiwicmVmdW5kRXJyb3JNc2ciLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJyZWZ1bmRIZWFkZXJzIiwiYXJyYXkiLCJUZXh0RmllbGQiLCJBdXRvY29tcGxldGUiLCJUeXBvZ3JhcGh5IiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJmb3JtaWsiLCJzdW1taXRJZCIsImlzUmVxdWlyZWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwiZXJyb3JzIiwidmFsdWVzIiwidG91Y2hlZCIsInNldEZpZWxkVG91Y2hlZCIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsIkJvb2xlYW4iLCJoZWxwZXJUZXh0IiwidW5kZWZpbmVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsIm9uQmx1ciIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJzb21lIiwidGl0bGUiLCJyZW5kZXJJbnB1dCIsImZ1bGxXaWR0aCIsInJlcXVpcmVkIiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsInJlc3QiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsInYiLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJtYXJnaW5Cb3R0b20iLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJmb3JFYWNoIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInRleHQiLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5IiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwiZW50cmllcyIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwicmVuZGVyUnVsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQmx1ciIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJkaXNjbGFpbWVyIiwid3JhcHBlciIsIlRpY2tldERlbGVnYXRpb25GaWVsZHMiLCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZSIsImRlbGVnYXRlZF9sYXN0X25hbWUiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJUaWNrZXRPd25lckZpZWxkcyIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsImFsbG93c0RlbGVnYXRpb24iLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsInN1YlF1ZXN0aW9uIiwic3ViUXVlc3Rpb25TbHVnIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsIm1hdGNoIiwic2NoIiwicGFyc2VBbnN3ZXJzIiwib25seVJlbGV2YW50IiwiYXJndW1lbnRzIiwiaW5pdGlhbFZhbHVlcyIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlczIiLCJzdWJBbnN3ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiaXNWYWxpZCIsInN1Ym1pdENvdW50IiwiZXJyb3JBcnJheSIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJvblN1Ym1pdCIsInRpY2tldE1hbmFnZXIiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJyZWR1Y2UiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImd1dHRlckJvdHRvbSIsImRlbGVnYXRlZFRvIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZm9vdGVyIiwic2F2ZUJ0biIsImlzU3VibWl0dGluZyIsImNhbmNlbEJ0biIsImluZm9Ob3RlIiwiUVJDb2RlIiwiSWNvbkJ1dHRvbiIsIkRpYWxvZyIsIkRpYWxvZ1RpdGxlIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiQ2xvc2UiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJNSUxMSVNFQ19UT19TRUMiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJjdXJyZW50VGlja2V0Iiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsImlzT3BlbiIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsImRlc2NyaXB0aW9uIiwicmVzb2x2ZSIsImVyciIsIm9uQ2xvc2VTYXZlTWVzc2FnZSIsInNldFRpbWVvdXQiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0Iiwic3VidGl0bGUiLCJxckNvZGUiLCJtYXhXaWR0aCIsInFyX2NvZGUiLCJ2aWV3Qm94IiwicXJOb3RlIiwiaXNfdmlydHVhbCIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJvcmRlck51bWJlciIsImF0dGVuZGVlQ29udGFpbmVyIiwiYXR0ZW5kZWVJbmZvVGl0bGUiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUGlsbCIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkb3duZXIzIiwiX3RpY2tldCRvd25lcjQiLCJnZXRTdGF0dXMiLCJhbGxvd3NEZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJpMThuIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJsb2FkaW5nIiwiaXNPcmRlckxvYWRpbmciLCJvcmRlcnNfbGFzdF9wYWdlIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJXaWRnZXRSZWR1Y2VyIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidGlja2V0RGF0YSIsIm5ld09yZGVycyIsIm5ld1RpY2tldHMiLCJ1c2VNZW1vIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiVFdPX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsIm1vbWVudCIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJyZWZ1bmRlZF9hbW91bnQiLCJhbW91bnQiLCJ0aWNrZXRfdHlwZXMiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJfb3JkZXJzJCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJNYXRoIiwicm91bmQiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJiYWRnZSIsImZlYXR1cmVzIiwiZmVhdHVyZSIsImpvaW4iLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwicnIiLCJQcm92aWRlciIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwid2luZG93Iiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
|
|
6275
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN3akI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkJ4akI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDNFI7Ozs7Ozs7Ozs7Ozs7OztBQ2I1UjtBQUNBO0FBQzBCOzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFCO0FBQ0E7QUFDQTtBQUM0Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0g1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDc2E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JCdGE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNnTTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDK0U7Ozs7Ozs7Ozs7O0FDSi9FOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7QUFDTjtBQUNJO0FBQ3VCO0FBQ2Y7QUFDVztBQUNuQjtBQUNvQjtBQUNGO0FBQUE7QUFFekQsTUFBTTAzQix1QkFBdUIsR0FBSTFnQixLQUFLLElBQUs7RUFDekMsTUFBTTtJQUNKdVosUUFBUTtJQUNSb0gsWUFBWTtJQUNaLzVCLE1BQU07SUFDTnVCLFVBQVU7SUFDVnRCLElBQUk7SUFDSnl5QixRQUFRO0lBQ1J6c0I7RUFDRixDQUFDLEdBQUdtVCxLQUFLO0VBQ1QsTUFBTTtJQUFFeFE7RUFBRSxDQUFDLEdBQUdqQiw2REFBYyxDQUFDLENBQUM7RUFFOUIsTUFBTTtJQUFFa3JCLEtBQUs7SUFBRVc7RUFBVSxDQUFDLEdBQUdGLG9EQUFZLENBQUM7SUFDeENYLFFBQVE7SUFDUm9ILFlBQVk7SUFDWi81QixNQUFNO0lBQ05DLElBQUk7SUFDSnNCLFVBQVU7SUFDVm14QixRQUFRO0lBQ1J6c0I7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNK3pCLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTW40QixNQUFNLEdBQUcsSUFBSW80QixlQUFlLENBQUNDLE1BQU0sQ0FBQ2xDLFFBQVEsQ0FBQ21DLE1BQU0sQ0FBQztJQUMxRCxNQUFNQyxLQUFLLEdBQUd2NEIsTUFBTSxDQUFDdzRCLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsSUFBSUQsS0FBSyxFQUFFdkgsS0FBSyxDQUFDaHpCLFFBQVEsQ0FBQztNQUFFVSxJQUFJLEVBQUU3QyxpREFBVztNQUFFOEUsT0FBTyxFQUFFO0lBQUssQ0FBQyxDQUFDO0VBQ2pFLENBQUM7RUFFRCtILGdEQUFTLENBQUMsTUFBTTtJQUNkc29CLEtBQUssQ0FBQ2h6QixRQUFRLENBQUNFLHlEQUFlLENBQUNDLE1BQU0sRUFBRUMsSUFBSSxDQUFDLENBQUM7RUFDL0MsQ0FBQyxFQUFFLENBQUNELE1BQU0sRUFBRUMsSUFBSSxDQUFDLENBQUM7RUFFbEIsb0JBQ0VtSSxzREFBQSxDQUFDd3hCLGlEQUFRO0lBQUMvRyxLQUFLLEVBQUVBLEtBQU07SUFBQXZwQixRQUFBLGVBQ3JCbEIsc0RBQUEsQ0FBQ3l4Qix3RUFBVztNQUNWUyxZQUFZLEVBQUVOLGdCQUFpQjtNQUMvQnRKLE9BQU8sRUFBRSxJQUFLO01BQ2Q4QyxTQUFTLEVBQUVBLFNBQVU7TUFBQWxxQixRQUFBLGVBRXJCaEIsdURBQUEsQ0FBQzBVLCtEQUFvQjtRQUFDdUIsV0FBVztRQUFBalYsUUFBQSxnQkFDL0JsQixzREFBQSxDQUFDcUMsOENBQUc7VUFBQ2YsRUFBRSxFQUFFO1lBQUUwRCxPQUFPLEVBQUU7Y0FBRWtDLEVBQUUsRUFBRSxDQUFDO2NBQUV1QyxFQUFFLEVBQUUsQ0FBQztjQUFFQyxFQUFFLEVBQUU7WUFBRTtVQUFFLENBQUU7VUFBQXhJLFFBQUEsZUFDNUNsQixzREFBQTtZQUFBa0IsUUFBQSxFQUFLVixDQUFDLENBQUMsY0FBYztVQUFDLENBQUs7UUFBQyxDQUN6QixDQUFDLGVBQ05SLHNEQUFBLENBQUM4SSxtRUFBZTtVQUNkeWhCLFFBQVEsRUFBRUEsUUFBUztVQUNuQm9ILFlBQVksRUFBRUEsWUFBYTtVQUMzQi81QixNQUFNLEVBQUVBLE1BQU87VUFDZnVCLFVBQVUsRUFBRUE7UUFBVyxDQUN4QixDQUFDO01BQUEsQ0FDa0I7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEdTRCLHVCQUF1QixDQUFDMXZCLFNBQVMsR0FBRztFQUNsQ3VvQixRQUFRLEVBQUVsckIsMERBQWdCO0VBQzFCc3lCLFlBQVksRUFBRXR5QiwwREFBZ0I7RUFDOUJ6SCxNQUFNLEVBQUV5SCwwREFBZ0I7RUFDeEJsRyxVQUFVLEVBQUVrRywwREFBZ0I7RUFDNUJ4SCxJQUFJLEVBQUV3SCwwREFBZ0I7RUFDdEJpckIsUUFBUSxFQUFFanJCLDBEQUFnQjtFQUMxQnhCLGFBQWEsRUFBRXdCLHdEQUFjNEM7QUFDL0IsQ0FBQztBQUVELGlFQUFleXZCLHVCQUF1QixFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svdW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvYWN0aW9ucy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0RhdGVwaWNrZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXVsdGlTdGVwU2xpZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJOdW1iZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9Db21wYW55RmllbGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXREZWxlZ2F0aW9uRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXVsdGlTdGVwU2xpZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EcmF3ZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJkYXlqc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBnZXRSZXF1ZXN0LFxuICBkZWxldGVSZXF1ZXN0LFxuICBjcmVhdGVBY3Rpb24sXG4gIHN0b3BMb2FkaW5nLFxuICBzdGFydExvYWRpbmcsXG4gIHB1dFJlcXVlc3Rcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgRklSU1RfUEFHRSxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgRklGVFlfUEVSX1BBR0Vcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTID0gXCJHRVRfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMgPSBcIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCA9XG4gIFwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRFwiO1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFJlZHVjZXJTdGF0ZSA9IChzdW1taXQsIHVzZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1NUQVRFKSh7IHN1bW1pdCwgdXNlciB9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUi9TT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmopID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyT2JqLm5hbWV9W10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmoudHlwZSA9PT0gRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX09QCR7ZmlsdGVyT2JqLnZhbHVlfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+XG4gIGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCI7XG5cbi8vIE9SREVSUyBBQ1RJT05TXG5leHBvcnQgY29uc3QgZ2V0VXNlck9yZGVycyA9XG4gICh7XG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyID0ge30sXG4gICAgc29ydCA9IHt9XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoeyBwYWdlID0gRklSU1RfUEFHRSwgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB1c2VyU3RhdGU6IHsgdXNlclByb2ZpbGUgfSxcbiAgICAgIHN1bW1pdFxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgaWYgKCF1c2VyUHJvZmlsZS5pZCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBmaWx0ZXI6IFwic3RhdHVzPT1QYWlkXCIsXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCB0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3JkZXIuaWQsb3JkZXIub3duZXJfZmlyc3RfbmFtZSxvcmRlci5vd25lcl9sYXN0X25hbWUsb3JkZXIub3duZXJfZW1haWwsb3duZXIuZmlyc3RfbmFtZSxvd25lci5sYXN0X25hbWUsb3duZXIuc3RhdHVzXCIsXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7IG9yZGVySWQsIHBhZ2UgPSBGSVJTVF9QQUdFLCBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzYCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlc2VuZE5vdGlmaWNhdGlvbiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgYXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBhdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCB7IEFkYXB0ZXJEYXlqcyB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiO1xuaW1wb3J0IHsgTG9jYWxpemF0aW9uUHJvdmlkZXIgfSBmcm9tIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiO1xuaW1wb3J0IHsgRGF0ZVBpY2tlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfREFURSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gQmFzaWNEYXRlUGlja2VyKHsgb25GaWx0ZXIsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IGRheWpzKCk7XG4gIGNvbnN0IFtkYXRlVmFsdWUsIHNldERhdGVWYWx1ZV0gPSB1c2VTdGF0ZShub3cpO1xuICBjb25zdCBvbkRhdGVDaGFuZ2UgPSAodmFsKSA9PiB7XG4gICAgc2V0RGF0ZVZhbHVlKHZhbCk7XG4gICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHZhbC4kZCk7XG4gICAgY29uc3QgeyBsb3dlciwgdXBwZXIgfSA9IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyhkYXRlKTtcbiAgICBvbkZpbHRlcih7XG4gICAgICB0eXBlOiBGSUxURVJfVkFSX0RBVEUsXG4gICAgICBuYW1lOiBcImNyZWF0ZWRcIixcbiAgICAgIGRhdGUsXG4gICAgICBsb3dlcixcbiAgICAgIHVwcGVyXG4gICAgfSk7XG4gIH07XG4gIGNvbnN0IG9uUmVzZXRBY3Rpb24gPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHNldERhdGVWYWx1ZShub3cpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckRhdGVMYWJlbH0+e3QoXCJmaWx0ZXIucHVyY2hhc2VkX29uXCIpfTwvZGl2PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZVBpY2tlckNvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRhdGVwaWNrZXJDbG9zZX1cbiAgICAgICAgICBvbkNsaWNrPXtvblJlc2V0QWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8TG9jYWxpemF0aW9uUHJvdmlkZXIgZGF0ZUFkYXB0ZXI9e0FkYXB0ZXJEYXlqc30+XG4gICAgICAgICAgPERhdGVQaWNrZXJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbGVuZGFyRGlzcGxheX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkRhdGVDaGFuZ2V9XG4gICAgICAgICAgICB2YWx1ZT17ZGF0ZVZhbHVlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvTG9jYWxpemF0aW9uUHJvdmlkZXI+XG4gICAgICA8L1N0YWNrPlxuICAgIDwvPlxuICApO1xufVxuXG5CYXNpY0RhdGVQaWNrZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBCYXNpY0RhdGVQaWNrZXIgZnJvbSBcIi4vRGF0ZXBpY2tlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbZmlsdGVyTnVtQWN0aXZlLCBzZXRGaWx0ZXJOdW1BY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgey8qKiBjdXJyZW50bHkganVzdCBzaG93aW5nIFwiMVwiIGJlY2F1c2Ugd2UncmUgY3VycmVudGx5IG9ubHkgZmlsdGVyaW5nIG9uZSBjcml0ZXJpYSAtIGNyZWF0ZWQgZGF0ZSAqL31cbiAgICAgICAge2ZpbHRlck51bUFjdGl2ZSAmJiA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlck51bUFjdGl2ZX0+MTwvZGl2Pn1cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0RhdGVQaWNrZXIgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8QmFzaWNEYXRlUGlja2VyXG4gICAgICAgICAgb25SZXNldD17KCkgPT4ge1xuICAgICAgICAgICAgb25SZXNldCgpO1xuICAgICAgICAgICAgc2V0RmlsdGVyTnVtQWN0aXZlKGZhbHNlKTtcbiAgICAgICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICAgIH19XG4gICAgICAgICAgb25GaWx0ZXI9eyhmaWx0ZXIpID0+IHtcbiAgICAgICAgICAgIG9uRmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUodHJ1ZSk7XG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufVxuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmZ1bmN0aW9uIFNlYXJjaCh7IG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0Nsb3NlLCBzZXRTaG93Q2xvc2VdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIG5hbWU6IFwibnVtYmVyXCIsXG4gICAgICAgIHR5cGU6IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXG4gICAgICB9KTtcbiAgICAgIHNldFNob3dDbG9zZSh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIHNldFNob3dDbG9zZShmYWxzZSk7XG4gICAgb25SZXNldCgpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIFNvcnQoeyBvblNvcnQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9PlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImRlc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfSBvbkNsaWNrPXsoKSA9PiBvblNvcnQoXCJhc2NcIil9PlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRmlsdGVyU29ydFNlYXJjaCh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pIHtcbiAgcmV0dXJuIChcbiAgICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICB4cz17Nn1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGdhcD17Mn1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufVxuXG5GaWx0ZXJTb3J0U2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJTb3J0U2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBEcmF3ZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRHJhd2VyXCI7XG5pbXBvcnQgeyBDb250YWluZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNdWx0aVN0ZXBTbGlkZXIgPSAoeyBjaGlsZHJlbiwgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiAoXG4gICAgPERyYXdlclxuICAgICAgYW5jaG9yPVwicmlnaHRcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTbGlkZXJ9XG4gICAgICBzdHlsZT17eyB6SW5kZXg6IDEwMDAgfX1cbiAgICAgIFBhcGVyUHJvcHM9e3tcbiAgICAgICAgc3g6IHtcbiAgICAgICAgICB3aWR0aDogXCI2MCVcIlxuICAgICAgICB9XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMubXVsdGlzdGVwQ29udGFpbmVyfT5cbiAgICAgICAgPENsb3NlSWNvblxuICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm11bHRpc3RlcENsb3NlSWNvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlU2xpZGVyfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2Utc2xpZGVyXCJcbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Db250YWluZXI+XG4gICAgPC9EcmF3ZXI+XG4gIClcblxuTXVsdGlTdGVwU2xpZGVyLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE11bHRpU3RlcFNsaWRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IEZpbHRlclNvcnRTZWFyY2ggZnJvbSBcIi4vRmlsdGVyU29ydFNlYXJjaFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgZ2V0VXNlck9yZGVycywgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTXlPcmRlcnNUaWNrZXRzID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICBtZW1iZXJPcmRlcnMsXG4gICAgb3JkZXJzX2N1cnJlbnRfcGFnZSxcbiAgICBvcmRlcnNfbGFzdF9wYWdlLFxuICAgIG9yZGVyc19wZXJfcGFnZSxcbiAgICBvcmRlcnNfdG90YWxcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG4gIGNvbnN0IFtmaWx0ZXIsIHNldEZpbHRlcl0gPSB1c2VTdGF0ZSh7fSk7XG4gIGNvbnN0IFtzb3J0LCBzZXRTb3J0XSA9IHVzZVN0YXRlKHt9KTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcih7fSk7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hEYXRhID0gYXN5bmMgKHBhZ2UpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJPcmRlcnMoe1xuICAgICAgICBwYWdlLFxuICAgICAgICBwZXJQYWdlOiBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UpO1xuICB9LCBbZmlsdGVyXSk7XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyKSA9PiB7XG4gICAgc2V0U29ydCh7fSk7XG4gICAgc2V0RmlsdGVyKGZpbHRlcik7XG4gIH07XG4gIGNvbnN0IG9uU29ydCA9IChkaXJlY3Rpb24pID0+IHtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIHNldFNvcnQoeyBkaXJlY3Rpb24sIG5hbWU6IFwiY3JlYXRlZFwiIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PntzdW1taXQ/Lm5hbWV9PC9oMj5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgICAgPC9oMj5cbiAgICAgIDwvQm94PlxuICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXtvcmRlcnNfdG90YWx9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDwgb3JkZXJzX2xhc3RfcGFnZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubm9PcmRlcnNGb3VuZH0+e3QoXCJvcmRlcnMubm9fb3JkZXJzXCIpfTwvQm94PlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIE9yZGVyU3VtbWFyeVRhYmxlKHsgb3JkZXIsIHN1bW1pdCwgdGlja2V0cyB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRFbWFpbFN1cHBvcnQoe1xuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0cyxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShpc0luUmVmdW5kYWJsZVBlcmlvZCAmJiBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufSAke1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICAgICAgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWRcbiAgICAgICAgICAgICAgOiBcIlwiXG4gICAgICAgICAgfWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e1xuICAgICAgICAgICAgcmVmdW5kUmVxdWVzdGVkICYmIHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDAgJiYgIXN1Ym1pdFJlcXVlc3RcbiAgICAgICAgICB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkVtYWlsU3VwcG9ydENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufVxuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uRW1haWxTdXBwb3J0Q2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlclN1bW1hcnkoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvblJlZnVuZENsaWNrLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc3VibWl0UmVxdWVzdFxufSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGVcbiAgICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHt9fVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEF0dGVuZGVlU3RhdHVzKHsgdGlja2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gdGlja2V0Lm93bmVyPy5lbWFpbCA/IChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06XG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHtcIiBcIn1cbiAgICAgICAge3RpY2tldC5vd25lcj8uZW1haWx9XG4gICAgICA8L3NwYW4+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgdGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgKTtcbn1cblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBPcmRlckxpc3RJdGVtKHtcbiAgdGlja2V0cyxcbiAgdG90YWwsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgc3VtbWl0LFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmRcbn0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaXRlbXNUb0Rpc3BsYXksIHNldEl0ZW1zVG9EaXNwbGF5XSA9IHVzZVN0YXRlKFxuICAgIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVFxuICApO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gdGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmICh0b3RhbCA+IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHt0aWNrZXRzPy5sZW5ndGggPj0gaXRlbXNUb0Rpc3BsYXkgJiYgdGlja2V0cz8ubGVuZ3RoICE9PSB0b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbk9yZGVyTGlzdEl0ZW0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlckxpc3RJdGVtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn0+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrXG4gICAgICBzeD17e1xuICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgfX1cbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICA+XG4gICAgICA8QnV0dG9uIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259IG9uQ2xpY2s9e29uT3BlbkNsaWNrfT5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVhc3NpZ24gdGlja2V0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbb3BlblRpY2tldCwgc2V0T3BlblRpY2tldF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJXcmFwcGVyfVxuICAgICAgY29udGFpbmVyXG4gICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17OH1cbiAgICAgICAgcGFkZGluZz17Mn1cbiAgICAgICAgaXRlbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICB7cmVmdW5kUmVxdWVzdGVkICYmIGlzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezR9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiAyLCBwYjogMiB9fSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17dGlja2V0Lm51bWJlcn0gY29weSB0cnVuY2F0ZWQgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPVwicm93XCIgeHM9ezEyfSBsZz17Nn0gYWxpZ25JdGVtcz1cImNlbnRlclwiIGl0ZW0+XG4gICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBwYWRkaW5nPXsyfSB4cz17MTJ9IGxnPXs2fSBjb250YWluZXIgaXRlbT5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGV9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9eygpID0+IHNldE9wZW5UaWNrZXQodGlja2V0KX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICB0aWNrZXRJZD17b3BlblRpY2tldD8uaWR9XG4gICAgICAgIG9yZGVySWQ9e29wZW5UaWNrZXQ/Lm9yZGVyX2lkfVxuICAgICAgICBvd25lcklkPXtvcGVuVGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE9wZW5UaWNrZXQobnVsbCl9XG4gICAgICAvPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSlcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5mdW5jdGlvbiBPcmRlck51bWJlcih7XG4gIG51bWJlcixcbiAgY29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSBmYWxzZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pIHtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMub3JkZXJUaWNrZXROdW1iZXJUcnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXROb0NvbnRhaW5lcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7bnVtYmVyfVxuICAgICAgPC9zcGFuPlxuICAgICAge2NvcHkgJiYgKFxuICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQobnVtYmVyKX1cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5PcmRlck51bWJlci5wcm9wVHlwZXMgPSB7XG4gIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgY29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTnVtYmVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gVGFiUGFuZWwocHJvcHMpIHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBvcmRlcixcbiAgdG90YWwsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbcmVmdW5kUmVxdWVzdGVkLCBzZXRSZWZ1bmRSZXF1ZXN0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBpZiAodGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc2V0UmVmdW5kUmVxdWVzdGVkKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IHRpY2tldHMuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNhbmNlbFRpY2tldHNUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0QWxsVGlja2V0cyA9ICgpID0+IHtcbiAgICBjb25zdCByZWZ1bmRhYmxlVGlja2V0cyA9IHRpY2tldHMuZmlsdGVyKFxuICAgICAgKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkgPT09IHRydWVcbiAgICApO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChyZWZ1bmRhYmxlVGlja2V0cyk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICB0ZXh0Q29sb3I9XCIjMDAwXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICAgIFRhYkluZGljYXRvclByb3BzPXt7XG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiBcIiMwMDBcIlxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRvdGFsPXt0b3RhbH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17dGlja2V0c31cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZFJlcXVlc3RlZCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAgICA8c3Bhbj57dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X3RpY2tldF9yZWZ1bmRcIil9PC9zcGFuPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEJ1dHRvbnN9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbFRpY2tldHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfYWxsXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRCdXR0b25zfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtjYW5jZWxUaWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfY2FuY2VsXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVza3RvcC1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICB0aWNrZXRzPXt0aWNrZXRzfVxuICAgICAgICAgIHRvdGFsPXt0b3RhbH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezF9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e3RpY2tldHN9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICBvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0T3JkZXJUaWNrZXRzLCBnZXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuL09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcblxuZnVuY3Rpb24gT3JkZXJzTGlzdChwcm9wcykge1xuICBjb25zdCB7IHN1bW1pdCwgb3JkZXIgfSA9IHByb3BzO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyBwZXJfcGFnZSwgbGFzdF9wYWdlLCBtZW1iZXJPcmRlcnMgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG4gIGNvbnN0IFtpc01vYmlsZVZpZXdhYmxlLCBzZXRNb2JpbGVWaWV3YWJsZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRldGFpbHNSZXF1aXJlZCA9IG9yZGVyLm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgKHRpY2tldCkgPT4gdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiXG4gICk7XG4gIGNvbnN0IGZldGNoVGlja2V0c0J5T3JkZXIgPSBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBjdXJyZW50X3BhZ2U6IGxhc3RfcGFnZSxcbiAgICAgICAgcGVyUGFnZTogcGVyX3BhZ2VcbiAgICAgIH0pXG4gICAgKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBmZXRjaFRpY2tldHNCeU9yZGVyKCk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiBwZXJfcGFnZSxcbiAgICAgICAgbmV4dDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAxLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17b3JkZXIubnVtYmVyfSBjb3B5IHRydW5jYXRlZCAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogMCB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmxhY2tCdXR0b259XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAwLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgdGlja2V0cz17Z2V0T3JkZXJUaWNrZXRzKG1lbWJlck9yZGVycywgb3JkZXIuaWQpfVxuICAgICAgICAgIHRvdGFsPXtvcmRlci50aWNrZXRzX3RvdGFsfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufVxuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRGVsZXRlT3V0bGluZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgT3JkZXJOdW1iZXIgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJOdW1iZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gUmVmdW5kUmVxdWVzdGVkVGlja2V0KHsgdGlja2V0LCBvblJlbW92ZSB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUaWNrZXRCb3hDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxEZWxldGVPdXRsaW5lSWNvblxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVtb3ZlLWJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kZWxldGVJY29ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25SZW1vdmUodGlja2V0KX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPE9yZGVyTnVtYmVyIG51bWJlcj17dGlja2V0Lm51bWJlcn0gdHJ1bmNhdGVkIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25SZW1vdmU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiAsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBNdWx0aVN0ZXBTbGlkZXIgZnJvbSBcIi4uL011bHRpU3RlcFNsaWRlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBSZWZ1bmRSZXF1ZXN0c01vZGFsKHtcbiAgdGlja2V0cyxcbiAgb3BlbixcbiAgb25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHMsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyXG59KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHMgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9UV08pOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGV4dH0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NhbmNlbFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3g+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIG9uUmVtb3ZlPXtvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0c31cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8TXVsdGlTdGVwU2xpZGVyIG9wZW49e29wZW59IG9uQ2xvc2VTbGlkZXI9e2Nsb3NlU2xpZGVyfT5cbiAgICAgICAgPEJveFxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEhlYWRlcnN9XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICAgID5cbiAgICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfTwvaDM+XG4gICAgICAgIDwvQm94PlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvTXVsdGlTdGVwU2xpZGVyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBzZXRGaWVsZFRvdWNoZWQsIHNldEZpZWxkVmFsdWUgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZShcbiAgICAgICAgICAob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24udGl0bGVcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPSBjdXJyZW50QW5zLmxlbmd0aCA9PT0gcXVlc3Rpb25NYXhWYWx1ZXM7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gbWF4U2VsZWN0aW9uUmVhY2hlZCA/IGN1cnJlbnRBbnMgOiBbLi4uY3VycmVudEFucywgdmFsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjdXJyZW50QW5zLmZpbHRlcigodikgPT4gdiAhPT0gdmFsKTtcbiAgICB9XG5cbiAgICBzZXRGaWVsZFZhbHVlKHF1ZXN0aW9uU2x1ZywgbmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsPntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBNZW51SXRlbSwgU2VsZWN0IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93blF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8SW5wdXRMYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvSW5wdXRMYWJlbD5cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGxhYmVsSWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBpZD17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtvcC5sYWJlbH0gdmFsdWU9e29wLnZhbHVlfT5cbiAgICAgICAgICAgICAge29wLmxhYmVsfVxuICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgVGV4dFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQsIGNoaWxkcmVuKSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgaWYgKHJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHtcbiAgICAgIHJldHVybiBjaGlsZHJlbjtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIGlmICghcnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXModik7XG4gICAgfVxuICAgIHJldHVybiB2ID09PSBjb21wYXJlVmFsO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZS50b1N0cmluZygpXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT5cbiAgICBjaGVja1Zpc2liaWxpdHkoXG4gICAgICBydWxlLFxuICAgICAgY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSksXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKVxuICAgICk7XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblJlZ2lzdHJhdGlvbkRpc2NsYWltZXIucHJvcFR5cGVzID0ge1xuICBkaXNjbGFpbWVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5jb25zdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzID0gKHsgZm9ybWlrIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGlkPVwiZGVsZWdhdGVkX2ZpcnN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9sYXN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwubGFzdF9uYW1lXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9sYXN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXREZWxlZ2F0aW9uRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERlbGVnYXRpb25GaWVsZHM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmcm9tIFwiLi4vVGlja2V0RGVsZWdhdGlvbkZpZWxkc1wiO1xuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgXCJGaWVsZCBtdXN0IGJlIGNoZWNrZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5jb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbGxvd3NEZWxlZ2F0aW9uLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge1xuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF06IHl1cFxuICAgICAgLnN0cmluZyhcIkVudGVyIGVtYWlsXCIpXG4gICAgICAuZW1haWwoXCJFbWFpbCBpbnZhbGlkXCIpXG4gICAgICAucmVxdWlyZWQoXCJFbWFpbCBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXTogeXVwXG4gICAgICAuc3RyaW5nKFwiRW50ZXIgZmlyc3QgbmFtZVwiKVxuICAgICAgLnJlcXVpcmVkKFwiRmlyc3QgbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdOiB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBsYXN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkxhc3QgbmFtZSBpcyByZXF1aXJlZFwiKSxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV06IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoXCJDb21wYW55IGlzIHJlcXVpcmVkXCIpXG4gICAgICAgICAgICAudHlwZUVycm9yKFwiUmVxdWlyZWQgZmllbGRcIilcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoXCJDb21wYW55IGlzIHJlcXVpcmVkXCIpXG4gICAgKVxuICB9O1xuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIFwiRmllbGQgbXVzdCBiZSBjaGVja2VkXCIpO1xuICB9XG5cbiAgaWYgKGFsbG93c0RlbGVnYXRpb24pIHtcbiAgICBzY2hlbWEuZGVsZWdhdGVkX2ZpcnN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBmaXJzdCBuYW1lXCIpXG4gICAgICAucmVxdWlyZWQoXCJGaXJzdCBuYW1lIGlzIHJlcXVpcmVkXCIpO1xuXG4gICAgc2NoZW1hLmRlbGVnYXRlZF9sYXN0X25hbWUgPSB5dXBcbiAgICAgIC5zdHJpbmcoXCJFbnRlciBsYXN0IG5hbWVcIilcbiAgICAgIC5yZXF1aXJlZChcIkxhc3QgbmFtZSBpcyByZXF1aXJlZFwiKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHEudHlwZSwgcS5uYW1lLCBxLm1hbmRhdG9yeSk7XG5cbiAgICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcbiAgICAgICAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICAgICAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgICAgICAgZmFsc2VcbiAgICAgICAgKVxuICAgICAgICAgIC5udWxsYWJsZSgpXG4gICAgICAgICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICAgICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2gocXVlc3Rpb25BbnMsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG4gICAgICAgICAgICAgIHJldHVybiBtYXRjaDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB0aGVuOiAoc2NoKSA9PiBzY2gucmVxdWlyZWQoXCJUaGlzIHF1ZXN0aW9uIGlzIHJlcXVpcmVkXCIpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuXG4vLyBvbiBmb3JtaWsgd2UgbmVlZCB0byBpbml0aWFsaXplIGFsbCBzdWJxdWVzdGlvbnMgd2l0aCBhIHZhbHVlXG4vLyBvbiBzdWJtaXQsIHdlIG9ubHkgbmVlZCByZWxldmFudCBhbnN3ZXJzXG5jb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgYWxsb3dzRGVsZWdhdGlvbixcbiAgbWFuYWdlcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge1xuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF06XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCxcbiAgICBbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXTpcbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lLFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV06XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUsXG4gICAgW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55LFxuICAgIFtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdOlxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkXG4gIH07XG5cbiAgaWYgKGFsbG93c0RlbGVnYXRpb24pIHtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lID1cbiAgICAgIGFuc3dlcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgfHwgbWFuYWdlcj8uZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9sYXN0X25hbWUgfHwgbWFuYWdlcj8ubGFzdF9uYW1lIHx8IFwiXCI7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLmlkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWspID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIHN1Ym1pdENvdW50IH0gPSBmb3JtaWs7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckFycmF5Lmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yQXJyYXlbMF19J11gKTtcbiAgICBpZiAoIWVsZW1lbnQpIHJldHVybjtcbiAgICAvLyBTY3JvbGwgdG8gZmlyc3Qga25vd24gZXJyb3IgaW50byB2aWV3XG4gICAgZWxlbWVudC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiBcInNtb290aFwiLCBibG9jazogXCJjZW50ZXJcIiB9KTtcbiAgfSwgW3N1Ym1pdENvdW50XSk7XG59O1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRpY2tldE1hbmFnZXIgPSB0aWNrZXQ/Lm1hbmFnZXI7XG4gIC8qIERJU0FCTEUgREVMRUdBVElPTiBGVE0gKi9cbiAgY29uc3QgYWxsb3dzRGVsZWdhdGlvbiA9IHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSAmJiBmYWxzZTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRpY2tldE1hbmFnZXIsXG4gICAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWspO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIG93bmVyPXt0aWNrZXQub3duZXJ9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHthbGxvd3NEZWxlZ2F0aW9uICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgdmFyaWFudD1cInN1YnRpdGxlMlwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRlbGVnYXRlZFRvfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kZWxlZ2F0ZWRfdG9cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUaWNrZXREZWxlZ2F0aW9uRmllbGRzIGZvcm1paz17Zm9ybWlrfSAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPGg2IGNsYXNzTmFtZT17c3R5bGVzLmFkZGl0aW9uYWxEZXRhaWxzfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hZGl0aW9uYWxfZGV0YWlsc1wiKX1cbiAgICAgICAgICA8L2g2PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuXG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgIC8+XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgICA8Q29tcGFueUZpZWxkIGZvcm1paz17Zm9ybWlrfSBzdW1taXRJZD17c3VtbWl0SWR9IGlzUmVxdWlyZWQgLz5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaW5mb05vdGV9Pnt0KFwidGlja2V0X2RldGFpbC5pbmZvX25vdGVcIil9PC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRPd25lckZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBCdXR0b24sXG4gIERyYXdlcixcbiAgSWNvbkJ1dHRvbixcbiAgVHlwb2dyYXBoeSxcbiAgRGlhbG9nLFxuICBEaWFsb2dUaXRsZSxcbiAgRGlhbG9nQ29udGVudCxcbiAgRGlhbG9nQ29udGVudFRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIENsb3NlIGFzIENsb3NlSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uLFxuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvblxufSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTnVtYmVyIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTnVtYmVyXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCwgc2F2ZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHsgc3VtbWl0LCB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9LFxuICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgIGN1cnJlbnRUaWNrZXQ6IHRpY2tldFxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IFtzYXZlTWVzc2FnZSwgc2V0U2F2ZU1lc3NhZ2VdID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IGlzT3BlbiA9IHRpY2tldElkICYmIG9yZGVySWQgJiYgb3duZXJJZDtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzX2Rlc2NyaXB0aW9uXCIpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCAmJiBvd25lcklkKSB7XG4gICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxEcmF3ZXJcbiAgICAgICAgb3Blbj17ISFpc09wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IFwiYXV0b1wiLCBtYXhXaWR0aDogXCIxMDAlXCIsIHdpZHRoOiBcIjEwMCVcIiB9fVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpY2tldC5xcl9jb2RlfVxuICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuXG4gICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5zZW5kQnRufT5cbiAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5zZW5kXCIpfVxuICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgICAgIDxPcmRlck51bWJlclxuICAgICAgICAgICAgICBudW1iZXI9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgICAgY29weVxuICAgICAgICAgICAgICB0cnVuY2F0ZWRcbiAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvQm94PlxuXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPERpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIGFyaWEtbGFiZWxsZWRieT1cImFsZXJ0LWRpYWxvZy10aXRsZVwiXG4gICAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgICAgPlxuICAgICAgICA8RGlhbG9nVGl0bGUgaWQ9XCJhbGVydC1kaWFsb2ctdGl0bGVcIj57c2F2ZU1lc3NhZ2U/LnRpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgICAgIDxEaWFsb2dDb250ZW50VGV4dCBpZD1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgICAge3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgICAgICA8L0RpYWxvZ0NvbnRlbnRUZXh0PlxuICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICA8L0RpYWxvZz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICAodGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZSkgJiZcbiAgICBzdGF0dXMgIT09IFNUQVRVU19VTkFTU0lHTkVEICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcj8uaWQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZVxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVFxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBpc09yZGVyTG9hZGluZzogZmFsc2UsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDEsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAxLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAxLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4ubWVtYmVyT3JkZXJzLCAuLi5kYXRhXSxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLmZvcm1lck9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkID0gcGF5bG9hZDtcbiAgICAgIGNvbnN0IG9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoXG4gICAgICAgIChvKSA9PiBvLmlkID09PSB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkWzBdPy5vcmRlcl9pZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHMubWFwKFxuICAgICAgICAodGlja2V0KSA9PlxuICAgICAgICAgIHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQuZmluZCgodHJyKSA9PiB0cnIuaWQgPT09IHRpY2tldC5pZCkgfHwgdGlja2V0XG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5vcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czogdXBkYXRlZFRpY2tldHNcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2U6OiBnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUNcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0LCB0aWNrZXRzIH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0IHx8ICF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfVU5BU1NJR05FRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiB0aWNrZXQ/LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCIpO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lX19fUm9pbVJcIjtcbnZhciBfMiA9IFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyX19fb29JMFZcIjtcbnZhciBfMyA9IFwiY2FsZW5kYXJEaXNwbGF5X19faW1famhcIjtcbnZhciBfNCA9IFwiY29udGFpbmVyX19fTjNZNFhcIjtcbnZhciBfNSA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX0pXMmxPXCI7XG52YXIgXzYgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1Y5Z0hDXCI7XG52YXIgXzcgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JHcFlWXCI7XG52YXIgXzggPSBcImZpbHRlckRhdGVMYWJlbF9fX2lmRDRwXCI7XG52YXIgXzkgPSBcImZpbHRlckljb25fX19sMjFLSVwiO1xudmFyIF9hID0gXCJmaWx0ZXJMYWJlbF9fX19QMHduXCI7XG52YXIgX2IgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19WbWRHcVwiO1xudmFyIF9jID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19WdUhDSlwiO1xudmFyIF9kID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fYXJCdlFcIjtcbnZhciBfZSA9IFwibGFiZWxfX195TkZ5alwiO1xudmFyIF9mID0gXCJzaG93RGF0ZVBpY2tlcl9fX1VwUWJwXCI7XG52YXIgXzEwID0gXCJzb3J0Q29udGFpbmVyX19fbFJzalVcIjtcbnZhciBfMTEgPSBcInNvcnRJY29uX19fZlZWNUtcIjtcbnZhciBfMTIgPSBcInNvcnRMYWJlbF9fX1VxTFRDXCI7XG52YXIgXzEzID0gXCJzb3J0TGlzdENvbnRhaW5lcl9fX2NtbkJEXCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjb250YWluZXJcIiwgXzUgYXMgXCJkYXRlUGlja2VyQ29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZXBpY2tlckNsb3NlXCIsIF83IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF84IGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF85IGFzIFwiZmlsdGVySWNvblwiLCBfYSBhcyBcImZpbHRlckxhYmVsXCIsIF9iIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfYyBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZCBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgX2UgYXMgXCJsYWJlbFwiLCBfZiBhcyBcInNob3dEYXRlUGlja2VyXCIsIF8xMCBhcyBcInNvcnRDb250YWluZXJcIiwgXzExIGFzIFwic29ydEljb25cIiwgXzEyIGFzIFwic29ydExhYmVsXCIsIF8xMyBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm11bHRpc3RlcENsb3NlSWNvbl9fX3FjNk5EXCI7XG52YXIgXzIgPSBcIm11bHRpc3RlcENvbnRhaW5lcl9fX2RQYVM1XCI7XG5leHBvcnQgeyBfMSBhcyBcIm11bHRpc3RlcENsb3NlSWNvblwiLCBfMiBhcyBcIm11bHRpc3RlcENvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJibGFja0J1dHRvbl9fX2w5aGo5XCI7XG52YXIgXzMgPSBcImNvcHlJY29uX19fTmtIR09cIjtcbnZhciBfNCA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfNSA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF82ID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgXzcgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgXzggPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgXzkgPSBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJfX192cW9oTlwiO1xudmFyIF9hID0gXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZF9fX0hYbWR3XCI7XG52YXIgX2IgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgX2MgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfZCA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgX2UgPSBcInJldmVyc2VkX19fREZlYV9cIjtcbnZhciBfZiA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzEwID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTEgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xMiA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xMyA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMTUgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xNiA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJibGFja0J1dHRvblwiLCBfMyBhcyBcImNvcHlJY29uXCIsIF80IGFzIFwiZGlzcGxheV9ub25lXCIsIF81IGFzIFwibGFiZWxcIiwgXzYgYXMgXCJvcmRlclRpY2tldENvbnRhaW5lclwiLCBfNyBhcyBcIm9yZGVyVGlja2V0SW5mb1wiLCBfOCBhcyBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lclwiLCBfOSBhcyBcIm9yZGVyVGlja2V0Tm9Db250YWluZXJcIiwgX2EgYXMgXCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZFwiLCBfYiBhcyBcIm9yZGVyV3JhcHBlclwiLCBfYyBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF9kIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfZSBhcyBcInJldmVyc2VkXCIsIF9mIGFzIFwidGFiQnV0dG9uc1wiLCBfMTAgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xMSBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzEyIGFzIFwidGlja2V0Tm9cIiwgXzEzIGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMTQgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xNSBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzE2IGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzIgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzMgPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfNCA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgXzUgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfNiA9IFwicmVmdW5kSGVhZGVyc19fX0hWSW1rXCI7XG52YXIgXzcgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF84ID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfOSA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfYSA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgX2IgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfYyA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8yIGFzIFwiY2FuY2VsQnV0dG9uXCIsIF8zIGFzIFwiY29udGludWVCdXR0b25cIiwgXzQgYXMgXCJkZWxldGVJY29uXCIsIF81IGFzIFwicmVmdW5kRXJyb3JNc2dcIiwgXzYgYXMgXCJyZWZ1bmRIZWFkZXJzXCIsIF83IGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfOCBhcyBcInJlZnVuZFRleHRcIiwgXzkgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgX2EgYXMgXCJzdWNjZXNzTXNnXCIsIF9iIGFzIFwic3VjY2Vzc01zZzJcIiwgX2MgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNhbmNlbEJ0bl9fX2dnQ2RqXCI7XG52YXIgXzYgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNyA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzggPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOSA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF9hID0gXCJmb290ZXJfX19OSU03ZFwiO1xudmFyIF9iID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9jID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2QgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2UgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2YgPSBcInNhdmVCdG5fX19OcE9FVlwiO1xudmFyIF8xMCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgXzExID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMiA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMyA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTQgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNhbmNlbEJ0blwiLCBfNiBhcyBcImNsb3NlQnRuXCIsIF83IGFzIFwiY29weUJ0blwiLCBfOCBhcyBcImRlbGVnYXRlZFRvXCIsIF85IGFzIFwiZG93bmxvYWRCdG5cIiwgX2EgYXMgXCJmb290ZXJcIiwgX2IgYXMgXCJoZWFkZXJcIiwgX2MgYXMgXCJvcmRlck51bWJlclwiLCBfZCBhcyBcInFyQ29kZVwiLCBfZSBhcyBcInFyTm90ZVwiLCBfZiBhcyBcInNhdmVCdG5cIiwgXzEwIGFzIFwic2VuZEJ0blwiLCBfMTEgYXMgXCJzdGF0dXNcIiwgXzEyIGFzIFwic3VidGl0bGVcIiwgXzEzIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xNCBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibm9PcmRlcnNGb3VuZF9fX0FvZzJwXCI7XG52YXIgXzIgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1oxOVBtXCI7XG52YXIgXzMgPSBcIndpZGdldEhlYWRlcl9fX3lZNWdlXCI7XG5leHBvcnQgeyBfMSBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzIgYXMgXCJzdW1taXRUaXRsZURhdGVcIiwgXzMgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RyYXdlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRheWpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUluaXRTdG9yZSB9IGZyb20gXCIuL3N0b3JlXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgeyBSRVNFVF9TVEFURSwgc2V0UmVkdWNlclN0YXRlIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICAgICAgPGgzPnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0c1xuICAgICAgICAgICAgbG9naW5Vcmw9e2xvZ2luVXJsfVxuICAgICAgICAgICAgc3VwcG9ydEVtYWlsPXtzdXBwb3J0RW1haWx9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGFwaUJhc2VVcmw9e2FwaUJhc2VVcmx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJnZXRSZXF1ZXN0IiwiZGVsZXRlUmVxdWVzdCIsImNyZWF0ZUFjdGlvbiIsInN0b3BMb2FkaW5nIiwic3RhcnRMb2FkaW5nIiwicHV0UmVxdWVzdCIsInBMaW1pdCIsImdldElkVG9rZW4iLCJJZFRva2VuVmVyaWZpZXIiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiUFJPTUlTRV9CQVRDSF9MSU1JVCIsIkZJRlRZX1BFUl9QQUdFIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJTRVRfU1RBVEUiLCJHRVRfVVNFUl9PUkRFUlMiLCJSRUZVTkRfT1JERVIiLCJTRVRfQUNUSVZFX09SREVSX0lEIiwiRklMVEVSX1VTRVJfT1JERVJTIiwiR0VUX1RJQ0tFVFMiLCJVUERBVEVfVElDS0VUIiwiUkVDRUlWRV9USUNLRVQiLCJSRU1PVkVfVElDS0VUX0FUVEVOREVFIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRTdGF0ZSIsImRpc3BhdGNoIiwicmVzZXRGaWx0ZXIiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJwYXJzZUZpbHRlciIsImZpbHRlck9iaiIsImZpbHRlciIsInR5cGUiLCJwdXNoIiwiY29uY2F0IiwibmFtZSIsImxvd2VyIiwidXBwZXIiLCJ2YWx1ZSIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJnZXRVc2VyT3JkZXJzIiwiX3JlZiIsInBhZ2UiLCJwZXJQYWdlIiwic29ydCIsImdldFN0YXRlIiwiX3JlZjIiLCJhcGlCYXNlVXJsIiwid2lkZ2V0U3RhdGUiLCJhY2Nlc3NUb2tlbiIsImNhdGNoIiwiUHJvbWlzZSIsInJlamVjdCIsInBhcmFtcyIsImFjY2Vzc190b2tlbiIsIm9yZGVyIiwicmVsYXRpb25zIiwicGVyX3BhZ2UiLCJPYmplY3QiLCJrZXlzIiwibGVuZ3RoIiwiZmlsdGVycyIsImlkIiwidGhlbiIsInBheWxvYWQiLCJlIiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmMyIsIl9yZWY0IiwidXNlclN0YXRlIiwidXNlclByb2ZpbGUiLCJleHBhbmQiLCJmaWVsZHMiLCJnZXRUaWNrZXRzQnlPcmRlciIsIl9yZWY1IiwiX3JlZjYiLCJyZXNlbmROb3RpZmljYXRpb24iLCJ0aWNrZXQiLCJfcmVmNyIsIm1lc3NhZ2UiLCJvcmRlcl9pZCIsInJlZnVuZFRpY2tldCIsIl9yZWY4IiwiX3JlZjkiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMCIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwicmVzIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVzcG9uc2UiLCJyZWZ1bmRfcmVxdWVzdHMiLCJ1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsImdldEV4dHJhUXVlc3Rpb25zIiwiYXR0ZW5kZWVJZCIsIl9yZWYxMSIsImVuZHBvaW50IiwiZ2V0VGlja2V0IiwidGlja2V0SWQiLCJfcmVmMTIiLCJmaW5hbGx5Iiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjEzIiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE0IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsIlByb3BUeXBlcyIsIlN0YWNrIiwidXNlVHJhbnNsYXRpb24iLCJkYXlqcyIsIkFkYXB0ZXJEYXlqcyIsIkxvY2FsaXphdGlvblByb3ZpZGVyIiwiRGF0ZVBpY2tlciIsIkNsb3NlSWNvbiIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsInN0eWxlcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkJhc2ljRGF0ZVBpY2tlciIsIm9uRmlsdGVyIiwib25SZXNldCIsInQiLCJub3ciLCJkYXRlVmFsdWUiLCJzZXREYXRlVmFsdWUiLCJvbkRhdGVDaGFuZ2UiLCJ2YWwiLCJkYXRlIiwiRGF0ZSIsIiRkIiwib25SZXNldEFjdGlvbiIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwiZmlsdGVyRGF0ZUxhYmVsIiwiYWxpZ25JdGVtcyIsInN4IiwicHQiLCJwYiIsImRhdGVQaWNrZXJDb250YWluZXIiLCJmb250U2l6ZSIsImRhdGVwaWNrZXJDbG9zZSIsIm9uQ2xpY2siLCJkYXRlQWRhcHRlciIsImNhbGVuZGFyRGlzcGxheSIsIm9uQ2hhbmdlIiwicHJvcFR5cGVzIiwiZnVuYyIsInVzZVJlZiIsInVzZUVmZmVjdCIsIkZpbHRlckxpc3RJY29uIiwiQm94IiwiRmlsdGVyIiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJOdW1BY3RpdmUiLCJzZXRGaWx0ZXJOdW1BY3RpdmUiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsInRhcmdldCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwic2hvd0RhdGVQaWNrZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJ3aWR0aCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiY29sb3IiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNob3dDbG9zZSIsInNldFNob3dDbG9zZSIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJvbktleURvd24iLCJrZXkiLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwicGxhY2Vob2xkZXIiLCJpbnB1dFByb3BzIiwiQnV0dG9uIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsImxhYmVsIiwiR3JpZCIsIkZpbHRlclNvcnRTZWFyY2giLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsIkVycm9ySWNvbiIsIkVycm9yTGFiZWwiLCJjbGFzc05hbWVzIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJzdHlsZSIsIkRyYXdlciIsIkNvbnRhaW5lciIsIk11bHRpU3RlcFNsaWRlciIsIm9wZW4iLCJvbkNsb3NlU2xpZGVyIiwiYW5jaG9yIiwib25DbG9zZSIsIlBhcGVyUHJvcHMiLCJtdWx0aXN0ZXBDb250YWluZXIiLCJtdWx0aXN0ZXBDbG9zZUljb24iLCJub2RlIiwiYm9vbCIsInVzZURpc3BhdGNoIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiT05FX1BBR0VfTkVYVCIsIk15T3JkZXJzVGlja2V0cyIsIm1lbWJlck9yZGVycyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzX3RvdGFsIiwic3RhdGUiLCJzZXRGaWx0ZXIiLCJzZXRTb3J0IiwiZmV0Y2hEYXRhIiwid2lkZ2V0SGVhZGVyIiwibWQiLCJsZyIsInN1bW1pdFRpdGxlRGF0ZSIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsIm51bWJlciIsIm5vT3JkZXJzRm91bmQiLCJEaXZpZGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzdGF0dXMiLCJzaGFwZSIsInN0cmluZyIsIm9iamVjdCIsImFycmF5T2YiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInJlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNUb1JlZnVuZCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwidmFyaWFudCIsInNpemUiLCJkaXNhYmxlZCIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJBdHRlbmRlZVN0YXR1cyIsIl90aWNrZXQkb3duZXIiLCJfdGlja2V0JG93bmVyMiIsInRpY2tldE93bmVyRW1haWwiLCJpc19hY3RpdmUiLCJPcmRlckxpc3RUaWNrZXRzIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsInRvdGFsIiwib25QYWdpbmF0ZUNsaWNrIiwic2VsZWN0VG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5Iiwic2xpY2VkVGlja2V0cyIsInNsaWNlIiwib25WaWV3TW9yZSIsIm9uVmlld0xlc3MiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJDaGVja2JveCIsIlRpY2tldFN0YXR1cyIsIk9yZGVyTnVtYmVyIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1VuYXNzaWduZWQiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl9vcGVuVGlja2V0JG93bmVyIiwib3BlblRpY2tldCIsInNldE9wZW5UaWNrZXQiLCJyZWFzc2lnbkRhdGUiLCJvcmRlcldyYXBwZXIiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiY2hlY2tlZCIsInRpY2tldE5vIiwiY29weSIsInRydW5jYXRlZCIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiQ29udGVudENvcHlJY29uIiwiZGVmYXVsdFdpZHRoIiwicmV2ZXJzZWQiLCJvcmRlclRpY2tldE51bWJlclRydW5jYXRlZCIsIm9yZGVyVGlja2V0Tm9Db250YWluZXIiLCJjb3B5SWNvbiIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsIlRhYnMiLCJUYWIiLCJSZWZ1bmRSZXF1ZXN0c01vZGFsIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiaGFuZGxlQ2hhbmdlIiwiXyIsIm5ld1ZhbHVlIiwic2V0UmVmdW5kUmVxdWVzdGVkIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjYW5jZWxUaWNrZXRzVG9SZWZ1bmQiLCJzZWxlY3RBbGxUaWNrZXRzIiwicmVmdW5kYWJsZVRpY2tldHMiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJUYWJJbmRpY2F0b3JQcm9wcyIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwicmVmdW5kQnV0dG9ucyIsIm9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRPcmRlclRpY2tldHMiLCJnZXRGb3JtYXR0ZWREYXRlIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJsYXN0X3BhZ2UiLCJ0aGVtZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsIm1lbWJlclRpY2tldHMiLCJmZXRjaFRpY2tldHNCeU9yZGVyIiwiY3VycmVudF9wYWdlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJibGFja0J1dHRvbiIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJvcmRlclRpY2tldENvbnRhaW5lciIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ0aWNrZXRzX3RvdGFsIiwiRGVsZXRlT3V0bGluZUljb24iLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJvblJlbW92ZSIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsImRlbGV0ZUljb24iLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIkNoZWNrQ2lyY2xlSWNvbiIsIlNURVBfT05FIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNsb3NlU2xpZGVyIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJyZWZ1bmRUZXh0IiwicmVmdW5kRXJyb3JNc2ciLCJhY3Rpb25CdXR0b25zIiwiY2FuY2VsQnV0dG9uIiwiY29udGludWVCdXR0b24iLCJyZWZ1bmRTdGVwVHdvIiwicmVmdW5kU3VjY2Vzc2Z1bCIsInN1Y2Nlc3NNc2ciLCJzdWNjZXNzTXNnMiIsInJlbmRlclN0ZXBzIiwiaW5qZWN0Rmlyc3QiLCJyZWZ1bmRIZWFkZXJzIiwiYXJyYXkiLCJUZXh0RmllbGQiLCJBdXRvY29tcGxldGUiLCJUeXBvZ3JhcGh5IiwicXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMiLCJDb21wYW55RmllbGQiLCJmb3JtaWsiLCJzdW1taXRJZCIsImlzUmVxdWlyZWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwiZXJyb3JzIiwidmFsdWVzIiwidG91Y2hlZCIsInNldEZpZWxkVG91Y2hlZCIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsIkJvb2xlYW4iLCJoZWxwZXJUZXh0IiwidW5kZWZpbmVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsIm9uQmx1ciIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJzb21lIiwidGl0bGUiLCJyZW5kZXJJbnB1dCIsImZ1bGxXaWR0aCIsInJlcXVpcmVkIiwicmVuZGVyT3B0aW9uIiwib3B0aW9uUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsInJlc3QiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsInYiLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJtYXJnaW5Cb3R0b20iLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJmb3JFYWNoIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInRleHQiLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5IiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwiZW50cmllcyIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwicmVuZGVyUnVsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQmx1ciIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJkaXNjbGFpbWVyIiwid3JhcHBlciIsIlRpY2tldERlbGVnYXRpb25GaWVsZHMiLCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZSIsImRlbGVnYXRlZF9sYXN0X25hbWUiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJUaWNrZXRPd25lckZpZWxkcyIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsImFsbG93c0RlbGVnYXRpb24iLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsInN1YlF1ZXN0aW9uIiwic3ViUXVlc3Rpb25TbHVnIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsIm1hdGNoIiwic2NoIiwicGFyc2VBbnN3ZXJzIiwib25seVJlbGV2YW50IiwiYXJndW1lbnRzIiwiaW5pdGlhbFZhbHVlcyIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlczIiLCJzdWJBbnN3ZXIiLCJ1c2VTY3JvbGxUb0Vycm9yIiwiaXNWYWxpZCIsInN1Ym1pdENvdW50IiwiZXJyb3JBcnJheSIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwic2Nyb2xsSW50b1ZpZXciLCJiZWhhdmlvciIsImJsb2NrIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJvblN1Ym1pdCIsInRpY2tldE1hbmFnZXIiLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJyZWR1Y2UiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImd1dHRlckJvdHRvbSIsImRlbGVnYXRlZFRvIiwiYWRkaXRpb25hbERldGFpbHMiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZm9vdGVyIiwic2F2ZUJ0biIsImlzU3VibWl0dGluZyIsImNhbmNlbEJ0biIsImluZm9Ob3RlIiwiUVJDb2RlIiwiSWNvbkJ1dHRvbiIsIkRpYWxvZyIsIkRpYWxvZ1RpdGxlIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiQ2xvc2UiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJNSUxMSVNFQ19UT19TRUMiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJjdXJyZW50VGlja2V0Iiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsImlzT3BlbiIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsImRlc2NyaXB0aW9uIiwicmVzb2x2ZSIsImVyciIsIm9uQ2xvc2VTYXZlTWVzc2FnZSIsInNldFRpbWVvdXQiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJ0aWNrZXREZXRhaWxDb250YWluZXIiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0Iiwic3VidGl0bGUiLCJxckNvZGUiLCJtYXhXaWR0aCIsInFyX2NvZGUiLCJ2aWV3Qm94IiwicXJOb3RlIiwiaXNfdmlydHVhbCIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJvcmRlck51bWJlciIsImF0dGVuZGVlQ29udGFpbmVyIiwiYXR0ZW5kZWVJbmZvVGl0bGUiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUGlsbCIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkb3duZXIzIiwiX3RpY2tldCRvd25lcjQiLCJnZXRTdGF0dXMiLCJhbGxvd3NEZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJpMThuIiwiaW5pdFJlYWN0STE4bmV4dCIsIkxhbmd1YWdlRGV0ZWN0b3IiLCJlbiIsImVzIiwidXNlIiwiaW5pdCIsImZhbGxiYWNrTG5nIiwiZGVidWciLCJyZXNvdXJjZXMiLCJ0cmFuc2xhdGlvbiIsImludGVycG9sYXRpb24iLCJlc2NhcGVWYWx1ZSIsIkxPR09VVF9VU0VSIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJsb2FkaW5nIiwiaXNPcmRlckxvYWRpbmciLCJ0aWNrZXRfY3VycmVudF9wYWdlIiwidGlja2V0X2xhc3RfcGFnZSIsInRpY2tldF9wZXJfcGFnZSIsInRpY2tldF90b3RhbCIsIldpZGdldFJlZHVjZXIiLCJmb3JtZXJPcmRlciIsIm8iLCJfZGF0YSQiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIm1vIiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ0aWNrZXREYXRhIiwibmV3T3JkZXJzIiwibmV3VGlja2V0cyIsInVzZU1lbW8iLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiSkVTVF9USU1FT1VUX0lOX01JTExJU0VDIiwiT05FX0lURU0iLCJUV09fSVRFTSIsIkZJVkVfSVRFTSIsIlNJWF9JVEVNIiwibW9tZW50IiwibG9jYWxlIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsInJlZnVuZGVkX2Ftb3VudCIsImFtb3VudCIsInRpY2tldF90eXBlcyIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJjdXJyZW5jeU9iamVjdCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInRpY2tldFR5cGUiLCJ0dCIsInRpY2tldF90eXBlX2lkIiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9vcmRlcnMkIiwib3JkZXJzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsIk1hdGgiLCJyb3VuZCIsImdldE5vdyIsInRpbWVyU3RhdGUiLCJub3dVdGMiLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJ1c2VTdW1taXREZXRhaWxzIiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsImlzU3RhcnRlZCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImJhZGdlIiwiZmVhdHVyZXMiLCJmZWF0dXJlIiwiam9pbiIsImdldFRpY2tldFR5cGUiLCJmaW5hbF9hbW91bnQiLCJyciIsIlByb3ZpZGVyIiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJ3aW5kb3ciLCJzZWFyY2giLCJmbHVzaCIsImhhcyIsIm9uQmVmb3JlTGlmdCJdLCJzb3VyY2VSb290IjoiIn0=
|