my-orders-tickets-widget 1.0.5 → 1.0.6

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.
Files changed (3) hide show
  1. package/dist/index.css +33 -25
  2. package/dist/index.js +232 -211
  3. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -761,6 +761,79 @@ const getTicketPDF = ticket => async (dispatch, getState, _ref20) => {
761
761
 
762
762
  /***/ }),
763
763
 
764
+ /***/ "./src/components/BadgeFeatureIcon/index.js":
765
+ /*!**************************************************!*\
766
+ !*** ./src/components/BadgeFeatureIcon/index.js ***!
767
+ \**************************************************/
768
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
769
+
770
+ __webpack_require__.r(__webpack_exports__);
771
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
772
+ /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
773
+ /* harmony export */ });
774
+ /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/defineProperty */ "@babel/runtime/helpers/defineProperty");
775
+ /* harmony import */ var _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0__);
776
+ /* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ "@babel/runtime/helpers/objectWithoutProperties");
777
+ /* harmony import */ var _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__);
778
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "react");
779
+ /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);
780
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ "prop-types");
781
+ /* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);
782
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/BadgeFeatureIcon/styles.module.scss");
783
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
784
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__);
785
+
786
+
787
+ const _excluded = ["name", "image", "className"];
788
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
789
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _babel_runtime_helpers_defineProperty__WEBPACK_IMPORTED_MODULE_0___default()(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
790
+
791
+
792
+
793
+
794
+ const MAX_INITIALS = 2;
795
+ const BadgeFeatureIcon = /*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_2__.forwardRef)((_ref, ref) => {
796
+ let {
797
+ name,
798
+ image,
799
+ className
800
+ } = _ref,
801
+ props = _babel_runtime_helpers_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1___default()(_ref, _excluded);
802
+ const [imageLoaded, setImageLoaded] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);
803
+ const [imageError, setImageError] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);
804
+ const showFallback = !image || imageError;
805
+
806
+ // Extract up to 2 initials from badge feature name (e.g., "Board Member" -> "BM")
807
+ const initials = name.split(" ").filter(word => word.length > 0).map(word => word[0]).join("").substring(0, MAX_INITIALS).toUpperCase();
808
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsxs)("div", _objectSpread(_objectSpread({
809
+ ref: ref,
810
+ className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.badgeFeatureIcon).concat(className ? " ".concat(className) : '')
811
+ // eslint-disable-next-line react/jsx-props-no-spreading
812
+ }, props), {}, {
813
+ children: [image && !imageError && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("img", {
814
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.badgeFeatureImage,
815
+ src: image,
816
+ alt: name,
817
+ onLoad: () => setImageLoaded(true),
818
+ onError: () => setImageError(true),
819
+ style: {
820
+ display: imageLoaded ? "block" : "none"
821
+ }
822
+ }), showFallback && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_5__.jsx)("div", {
823
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_4__.badgeFeatureInitials,
824
+ children: initials
825
+ })]
826
+ }));
827
+ });
828
+ BadgeFeatureIcon.propTypes = {
829
+ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string).isRequired,
830
+ image: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),
831
+ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)
832
+ };
833
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BadgeFeatureIcon);
834
+
835
+ /***/ }),
836
+
764
837
  /***/ "./src/components/ConfirmDialog/index.js":
765
838
  /*!***********************************************!*\
766
839
  !*** ./src/components/ConfirmDialog/index.js ***!
@@ -4087,75 +4160,6 @@ AttendeeStatus.propTypes = {
4087
4160
 
4088
4161
  /***/ }),
4089
4162
 
4090
- /***/ "./src/components/OrdersList/BadgeFeatureImage.js":
4091
- /*!********************************************************!*\
4092
- !*** ./src/components/OrdersList/BadgeFeatureImage.js ***!
4093
- \********************************************************/
4094
- /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
4095
-
4096
- __webpack_require__.r(__webpack_exports__);
4097
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
4098
- /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
4099
- /* harmony export */ });
4100
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
4101
- /* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
4102
- /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
4103
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
4104
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__);
4105
- /**
4106
- * Copyright 2025 OpenStack Foundation
4107
- * Licensed under the Apache License, Version 2.0 (the "License");
4108
- * you may not use this file except in compliance with the License.
4109
- * You may obtain a copy of the License at
4110
- * http://www.apache.org/licenses/LICENSE-2.0
4111
- * Unless required by applicable law or agreed to in writing, software
4112
- * distributed under the License is distributed on an "AS IS" BASIS,
4113
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
4114
- * See the License for the specific language governing permissions and
4115
- * limitations under the License.
4116
- * */
4117
-
4118
-
4119
-
4120
-
4121
- const BadgeFeatureImage = _ref => {
4122
- let {
4123
- src,
4124
- alt,
4125
- className,
4126
- maxRetries = _utils_constants__WEBPACK_IMPORTED_MODULE_1__.ONE_RETRY
4127
- } = _ref;
4128
- const [currentSrc, setCurrentSrc] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(src);
4129
- const [retryCount, setRetryCount] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(0);
4130
- const [hasError, setHasError] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);
4131
- const handleError = () => {
4132
- if (retryCount < maxRetries) {
4133
- setTimeout(() => {
4134
- setCurrentSrc("".concat(src, "?&t=").concat(Date.now()));
4135
- setRetryCount(retryCount + _utils_constants__WEBPACK_IMPORTED_MODULE_1__.ONE_RETRY);
4136
- }, _utils_constants__WEBPACK_IMPORTED_MODULE_1__.MILLISEC_TO_SEC * (retryCount + _utils_constants__WEBPACK_IMPORTED_MODULE_1__.ONE_RETRY));
4137
- } else {
4138
- setHasError(true);
4139
- }
4140
- };
4141
- if (hasError) {
4142
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("div", {
4143
- className: className,
4144
- title: alt,
4145
- children: alt
4146
- });
4147
- }
4148
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)("img", {
4149
- className: className,
4150
- src: currentSrc,
4151
- alt: alt,
4152
- onError: handleError
4153
- });
4154
- };
4155
- /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (BadgeFeatureImage);
4156
-
4157
- /***/ }),
4158
-
4159
4163
  /***/ "./src/components/OrdersList/OrderListItem.js":
4160
4164
  /*!****************************************************!*\
4161
4165
  !*** ./src/components/OrdersList/OrderListItem.js ***!
@@ -4274,9 +4278,9 @@ __webpack_require__.r(__webpack_exports__);
4274
4278
  /* harmony import */ var _hooks_useTicketDetails__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../../hooks/useTicketDetails */ "./src/hooks/useTicketDetails.js");
4275
4279
  /* harmony import */ var _CopyText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../CopyText */ "./src/components/CopyText/index.js");
4276
4280
  /* harmony import */ var _TicketAssign__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../TicketAssign */ "./src/components/TicketAssign/index.js");
4277
- /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
4278
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
4279
- /* harmony import */ var _BadgeFeatureImage__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./BadgeFeatureImage */ "./src/components/OrdersList/BadgeFeatureImage.js");
4281
+ /* harmony import */ var _BadgeFeatureIcon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../BadgeFeatureIcon */ "./src/components/BadgeFeatureIcon/index.js");
4282
+ /* harmony import */ var _actions__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../actions */ "./src/actions.js");
4283
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/OrdersList/styles.module.scss");
4280
4284
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
4281
4285
  /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__);
4282
4286
  /**
@@ -4328,7 +4332,7 @@ const TicketCTAs = _ref => {
4328
4332
  } = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
4329
4333
  if (isUnassigned) {
4330
4334
  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4331
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.assignTicketButton,
4335
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.assignTicketButton,
4332
4336
  onClick: () => onOpenClick(modalViews.assign),
4333
4337
  children: t("ticket_status.assign_ticket")
4334
4338
  });
@@ -4337,13 +4341,13 @@ const TicketCTAs = _ref => {
4337
4341
  alignItems: "center",
4338
4342
  direction: "row",
4339
4343
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4340
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.viewFinishTicketButton,
4344
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.viewFinishTicketButton,
4341
4345
  onClick: () => onOpenClick(modalViews.detail),
4342
4346
  children: isIncomplete ? t("ticket_status.finish_ticket") : t("ticket_status.view_ticket")
4343
4347
  }), isReassignable && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Button, {
4344
4348
  "aria-label": "reassign ticket button",
4345
4349
  role: "button",
4346
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.reassignButton,
4350
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.reassignButton,
4347
4351
  onClick: () => onOpenClick(modalViews.reassign),
4348
4352
  children: t("ticket_status.reassign_ticket")
4349
4353
  })]
@@ -4381,21 +4385,21 @@ const OrderListTickets = _ref2 => {
4381
4385
  const onReassignablePeriod = reassignDate > now;
4382
4386
  const isReassignable = onReassignablePeriod && canReassign && !isExternalAssignedTicket;
4383
4387
  const handleCloseModal = () => {
4384
- dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_15__.resetTicket)());
4388
+ dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_16__.resetTicket)());
4385
4389
  setModalOpen(null);
4386
4390
  };
4387
4391
  const handleOpenModal = view => {
4388
- dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_15__.resetTicket)());
4392
+ dispatch((0,_actions__WEBPACK_IMPORTED_MODULE_16__.resetTicket)());
4389
4393
  setModalOpen(view);
4390
4394
  };
4391
4395
  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
4392
4396
  container: true,
4393
- className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.orderWrapper, " ").concat(isRefundModal ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.refundModal : "", " ").concat(isRefundModal && !isRefundable ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.disabledRefund : "", " ").concat(isSelectedToRefund ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.selected : ""),
4397
+ className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.orderWrapper, " ").concat(isRefundModal ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.refundModal : "", " ").concat(isRefundModal && !isRefundable ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.disabledRefund : "", " ").concat(isSelectedToRefund ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.selected : ""),
4394
4398
  children: [isRefundModal && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
4395
4399
  item: true,
4396
4400
  xs: 1,
4397
4401
  padding: 2,
4398
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.checkbox,
4402
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.checkbox,
4399
4403
  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)((_mui_material_Checkbox__WEBPACK_IMPORTED_MODULE_5___default()), {
4400
4404
  "aria-label": "refund ticket checkbox",
4401
4405
  role: "checkbox",
@@ -4420,7 +4424,7 @@ const OrderListTickets = _ref2 => {
4420
4424
  py: 2,
4421
4425
  pl: 4,
4422
4426
  item: true,
4423
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.ticketTicketType,
4427
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketTicketType,
4424
4428
  justify: "space-between",
4425
4429
  children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_4___default()), {
4426
4430
  sx: {
@@ -4432,17 +4436,16 @@ const OrderListTickets = _ref2 => {
4432
4436
  })
4433
4437
  })
4434
4438
  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
4435
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.bfFeatureWrapper,
4439
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.badgeFeatureWrapper,
4436
4440
  xs: 4,
4437
4441
  py: 2,
4438
4442
  pr: 4,
4439
4443
  item: true,
4440
- children: (_ticket$badge = ticket.badge) === null || _ticket$badge === void 0 ? void 0 : _ticket$badge.features.map(bf => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Tooltip, {
4444
+ children: (_ticket$badge = ticket.badge) === null || _ticket$badge === void 0 || (_ticket$badge = _ticket$badge.features) === null || _ticket$badge === void 0 ? void 0 : _ticket$badge.map(bf => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Tooltip, {
4441
4445
  title: bf.name,
4442
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_BadgeFeatureImage__WEBPACK_IMPORTED_MODULE_17__["default"], {
4443
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.bfFeature,
4444
- src: bf.image,
4445
- alt: bf.name
4446
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_BadgeFeatureIcon__WEBPACK_IMPORTED_MODULE_15__["default"], {
4447
+ name: bf.name,
4448
+ image: bf.image
4446
4449
  })
4447
4450
  }, bf.name))
4448
4451
  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Grid, {
@@ -4456,14 +4459,14 @@ const OrderListTickets = _ref2 => {
4456
4459
  ticket: ticket,
4457
4460
  isExternalAssignedTicket: !!isExternalAssignedTicket
4458
4461
  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)("span", {
4459
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.ticketNo,
4462
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketNo,
4460
4463
  children: [t("ticket_status.ticket_no"), ":", " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_CopyText__WEBPACK_IMPORTED_MODULE_13__["default"], {
4461
4464
  text: ticket.number,
4462
4465
  tooltipText: t("ticket_status.copy_ticket_number")
4463
4466
  })]
4464
4467
  })]
4465
4468
  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
4466
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.ticketFooter,
4469
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketFooter,
4467
4470
  px: {
4468
4471
  xs: 1
4469
4472
  },
@@ -4475,7 +4478,7 @@ const OrderListTickets = _ref2 => {
4475
4478
  ticket: ticket
4476
4479
  })
4477
4480
  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_3__.Box, {
4478
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_16__.ticketActionButtons,
4481
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_17__.ticketActionButtons,
4479
4482
  children: ticket.is_active && !isRefundModal && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(TicketCTAs, {
4480
4483
  isUnassigned: isUnassigned,
4481
4484
  isIncomplete: isIncomplete,
@@ -5004,12 +5007,13 @@ __webpack_require__.r(__webpack_exports__);
5004
5007
  /* harmony import */ var _OrdersList_AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../OrdersList/AttendeeStatus */ "./src/components/OrdersList/AttendeeStatus.js");
5005
5008
  /* harmony import */ var _RefundStatus__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./RefundStatus */ "./src/components/RefundRequests/RefundStatus.js");
5006
5009
  /* harmony import */ var _CopyText__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../CopyText */ "./src/components/CopyText/index.js");
5007
- /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/RefundRequests/styles.module.scss");
5008
- /* harmony import */ var _TicketStatus__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../TicketStatus */ "./src/components/TicketStatus/index.js");
5010
+ /* harmony import */ var _TicketStatus__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../TicketStatus */ "./src/components/TicketStatus/index.js");
5011
+ /* harmony import */ var _BadgeFeatureIcon__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../BadgeFeatureIcon */ "./src/components/BadgeFeatureIcon/index.js");
5009
5012
  /* harmony import */ var _utils_constants__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../../utils/constants */ "./src/utils/constants.js");
5010
5013
  /* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../../utils */ "./src/utils/index.js");
5011
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
5012
- /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__);
5014
+ /* harmony import */ var _styles_module_scss__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./styles.module.scss */ "./src/components/RefundRequests/styles.module.scss");
5015
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
5016
+ /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__);
5013
5017
 
5014
5018
 
5015
5019
  const _excluded = ["className"];
@@ -5032,6 +5036,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
5032
5036
 
5033
5037
 
5034
5038
 
5039
+
5035
5040
  const RefundRequestedTicket = _ref => {
5036
5041
  var _ticket$ticket_type, _ticket$badge;
5037
5042
  let {
@@ -5067,7 +5072,7 @@ const RefundRequestedTicket = _ref => {
5067
5072
  return (
5068
5073
  /*#__PURE__*/
5069
5074
  // eslint-disable-next-line
5070
- (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Tooltip, _objectSpread(_objectSpread({}, props), {}, {
5075
+ (0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Tooltip, _objectSpread(_objectSpread({}, props), {}, {
5071
5076
  classes: {
5072
5077
  popper: className
5073
5078
  }
@@ -5082,37 +5087,36 @@ const RefundRequestedTicket = _ref => {
5082
5087
  border: "1px solid #dadde9"
5083
5088
  }
5084
5089
  }));
5085
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5090
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5086
5091
  container: true,
5087
- className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.refundTicketBoxContainer, " ").concat(refundDetails ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.refundDetail : "", " "),
5092
+ className: "".concat(_styles_module_scss__WEBPACK_IMPORTED_MODULE_18__.refundTicketBoxContainer, " ").concat(refundDetails ? _styles_module_scss__WEBPACK_IMPORTED_MODULE_18__.refundDetail : "", " "),
5088
5093
  "data-testid": "refund-requested-ticket-container",
5089
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5094
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5090
5095
  xs: GRID_12,
5091
5096
  sm: refundDetails ? GRID_8 : GRID_12,
5092
5097
  item: true,
5093
5098
  justify: "space-between",
5094
5099
  pt: 2,
5095
5100
  px: 4,
5096
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_9___default()), {
5101
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)((_mui_material_Stack__WEBPACK_IMPORTED_MODULE_9___default()), {
5097
5102
  sx: {
5098
5103
  justifyContent: "space-between",
5099
5104
  alignItems: "center"
5100
5105
  },
5101
5106
  direction: "row",
5102
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("h4", {
5107
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("h4", {
5103
5108
  children: (_ticket$ticket_type = ticket.ticket_type) === null || _ticket$ticket_type === void 0 ? void 0 : _ticket$ticket_type.name
5104
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5105
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.badgeFeatureWrapper,
5109
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5110
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_18__.badgeFeatureWrapper,
5106
5111
  xs: 4,
5107
5112
  item: true,
5108
- children: (_ticket$badge = ticket.badge) === null || _ticket$badge === void 0 ? void 0 : _ticket$badge.features.map(bf => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("img", {
5109
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.badgeFeature,
5110
- src: bf.image,
5111
- alt: bf.name
5113
+ children: (_ticket$badge = ticket.badge) === null || _ticket$badge === void 0 || (_ticket$badge = _ticket$badge.features) === null || _ticket$badge === void 0 ? void 0 : _ticket$badge.map(bf => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_BadgeFeatureIcon__WEBPACK_IMPORTED_MODULE_15__["default"], {
5114
+ name: bf.name,
5115
+ image: bf.image
5112
5116
  }, bf.name))
5113
5117
  })]
5114
5118
  })
5115
- }), refundDetails && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5119
+ }), refundDetails && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5116
5120
  sm: 4,
5117
5121
  xs: 12,
5118
5122
  px: {
@@ -5124,28 +5128,28 @@ const RefundRequestedTicket = _ref => {
5124
5128
  sm: 2
5125
5129
  },
5126
5130
  item: true,
5127
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_RefundStatus__WEBPACK_IMPORTED_MODULE_12__["default"], {
5131
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_RefundStatus__WEBPACK_IMPORTED_MODULE_12__["default"], {
5128
5132
  ticket: ticket
5129
5133
  })
5130
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5134
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5131
5135
  xs: 12,
5132
5136
  item: true,
5133
5137
  px: 4,
5134
5138
  pb: refundDetails ? PADDING_2 : 0,
5135
5139
  container: true,
5136
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5140
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5137
5141
  xs: 12,
5138
5142
  sm: 8,
5139
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.refundTicketAttendee,
5140
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_OrdersList_AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__["default"], {
5143
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_18__.refundTicketAttendee,
5144
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_OrdersList_AttendeeStatus__WEBPACK_IMPORTED_MODULE_11__["default"], {
5141
5145
  ticket: ticket
5142
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)("span", {
5143
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_14__.ticketNo,
5144
- children: [t("ticket_status.ticket_no"), ": ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_CopyText__WEBPACK_IMPORTED_MODULE_13__["default"], {
5146
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)("span", {
5147
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_18__.ticketNo,
5148
+ children: [t("ticket_status.ticket_no"), ": ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_CopyText__WEBPACK_IMPORTED_MODULE_13__["default"], {
5145
5149
  text: ticket.number
5146
5150
  })]
5147
5151
  })]
5148
- }), refundDetails && ticket.total_refunded_amount > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5152
+ }), refundDetails && ticket.total_refunded_amount > 0 && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5149
5153
  xs: 12,
5150
5154
  md: 4,
5151
5155
  pl: {
@@ -5154,39 +5158,39 @@ const RefundRequestedTicket = _ref => {
5154
5158
  },
5155
5159
  children: [(0,_utils__WEBPACK_IMPORTED_MODULE_17__.formatCurrency)(ticket.total_refunded_amount, {
5156
5160
  currency
5157
- }), " ", "Refunded", approvedRefunds.some(r => r.refunded_taxes.length > 0) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(HtmlTooltip, {
5158
- title: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.Fragment, {
5159
- children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsxs)("p", {
5161
+ }), " ", "Refunded", approvedRefunds.some(r => r.refunded_taxes.length > 0) && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(HtmlTooltip, {
5162
+ title: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.Fragment, {
5163
+ children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsxs)("p", {
5160
5164
  children: [(0,_utils__WEBPACK_IMPORTED_MODULE_17__.formatCurrency)(ticket.refunded_amount, {
5161
5165
  currency
5162
5166
  }), " ", "Ticket Amount"]
5163
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("b", {
5167
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("b", {
5164
5168
  children: "Taxes"
5165
5169
  }), Object.keys(refundedTaxesSummatory).map(taxId => {
5166
5170
  const {
5167
5171
  totalRefundedTaxAmount,
5168
5172
  name
5169
5173
  } = refundedTaxesSummatory[taxId];
5170
- return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("p", {
5174
+ return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("p", {
5171
5175
  children: "".concat(name, " - ").concat((0,_utils__WEBPACK_IMPORTED_MODULE_17__.formatCurrency)(totalRefundedTaxAmount, {
5172
5176
  currency
5173
5177
  }))
5174
5178
  }, taxId);
5175
5179
  })]
5176
5180
  }),
5177
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.IconButton, {
5178
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)((_mui_icons_material_Info__WEBPACK_IMPORTED_MODULE_8___default()), {})
5181
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.IconButton, {
5182
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)((_mui_icons_material_Info__WEBPACK_IMPORTED_MODULE_8___default()), {})
5179
5183
  })
5180
- }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)("br", {}), moment_timezone__WEBPACK_IMPORTED_MODULE_10___default()(ticket.refund_requests[0].action_date * _utils_constants__WEBPACK_IMPORTED_MODULE_16__.MILLISEC_TO_SEC).format("MMM DD, YYYY")]
5184
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)("br", {}), moment_timezone__WEBPACK_IMPORTED_MODULE_10___default()(ticket.refund_requests[0].action_date * _utils_constants__WEBPACK_IMPORTED_MODULE_16__.MILLISEC_TO_SEC).format("MMM DD, YYYY")]
5181
5185
  })]
5182
- }), !refundDetails && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5186
+ }), !refundDetails && /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5183
5187
  xs: 12,
5184
5188
  pr: 4,
5185
5189
  pb: 2,
5186
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5190
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_mui_material__WEBPACK_IMPORTED_MODULE_5__.Grid, {
5187
5191
  xs: 12,
5188
5192
  item: true,
5189
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_18__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_15__["default"], {
5193
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_19__.jsx)(_TicketStatus__WEBPACK_IMPORTED_MODULE_14__["default"], {
5190
5194
  ticket: ticket
5191
5195
  })
5192
5196
  })
@@ -8890,6 +8894,27 @@ const updateTicketCollection = (tickets, ticket) => tickets.map(t => {
8890
8894
  return t.id === ticket.id ? ticket : tmpTicket;
8891
8895
  });
8892
8896
 
8897
+ /***/ }),
8898
+
8899
+ /***/ "./src/components/BadgeFeatureIcon/styles.module.scss":
8900
+ /*!************************************************************!*\
8901
+ !*** ./src/components/BadgeFeatureIcon/styles.module.scss ***!
8902
+ \************************************************************/
8903
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
8904
+
8905
+ __webpack_require__.r(__webpack_exports__);
8906
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8907
+ /* harmony export */ badgeFeatureIcon: () => (/* binding */ _1),
8908
+ /* harmony export */ badgeFeatureImage: () => (/* binding */ _2),
8909
+ /* harmony export */ badgeFeatureInitials: () => (/* binding */ _3)
8910
+ /* harmony export */ });
8911
+ // extracted by mini-css-extract-plugin
8912
+ var _1 = "badgeFeatureIcon___sKVTC";
8913
+ var _2 = "badgeFeatureImage___YO4fs";
8914
+ var _3 = "badgeFeatureInitials___kW7Zk";
8915
+
8916
+
8917
+
8893
8918
  /***/ }),
8894
8919
 
8895
8920
  /***/ "./src/components/CopyText/styles.module.scss":
@@ -9098,29 +9123,28 @@ __webpack_require__.r(__webpack_exports__);
9098
9123
  /* harmony export */ assignedByText: () => (/* binding */ _3),
9099
9124
  /* harmony export */ assignedToMeDes: () => (/* binding */ _4),
9100
9125
  /* harmony export */ assignedToMeWrapper: () => (/* binding */ _5),
9101
- /* harmony export */ bfFeature: () => (/* binding */ _6),
9102
- /* harmony export */ bfFeatureWrapper: () => (/* binding */ _7),
9103
- /* harmony export */ checkbox: () => (/* binding */ _8),
9104
- /* harmony export */ disabledRefund: () => (/* binding */ _9),
9105
- /* harmony export */ display_none: () => (/* binding */ _a),
9106
- /* harmony export */ label: () => (/* binding */ _b),
9107
- /* harmony export */ orderTicketContainer: () => (/* binding */ _c),
9108
- /* harmony export */ orderTicketInfo: () => (/* binding */ _d),
9109
- /* harmony export */ orderTicketInfoContainer: () => (/* binding */ _e),
9110
- /* harmony export */ orderWrapper: () => (/* binding */ _f),
9111
- /* harmony export */ reassignButton: () => (/* binding */ _10),
9112
- /* harmony export */ refundButtons: () => (/* binding */ _11),
9113
- /* harmony export */ refundModal: () => (/* binding */ _12),
9114
- /* harmony export */ selected: () => (/* binding */ _13),
9115
- /* harmony export */ tabButtons: () => (/* binding */ _14),
9116
- /* harmony export */ ticketActionButtons: () => (/* binding */ _15),
9117
- /* harmony export */ ticketFooter: () => (/* binding */ _16),
9118
- /* harmony export */ ticketListContainer: () => (/* binding */ _17),
9119
- /* harmony export */ ticketNo: () => (/* binding */ _18),
9120
- /* harmony export */ ticketOwnerEmail: () => (/* binding */ _19),
9121
- /* harmony export */ ticketTicketType: () => (/* binding */ _1a),
9122
- /* harmony export */ viewFinishTicketButton: () => (/* binding */ _1b),
9123
- /* harmony export */ viewMoreButton: () => (/* binding */ _1c)
9126
+ /* harmony export */ badgeFeatureWrapper: () => (/* binding */ _6),
9127
+ /* harmony export */ checkbox: () => (/* binding */ _7),
9128
+ /* harmony export */ disabledRefund: () => (/* binding */ _8),
9129
+ /* harmony export */ display_none: () => (/* binding */ _9),
9130
+ /* harmony export */ label: () => (/* binding */ _a),
9131
+ /* harmony export */ orderTicketContainer: () => (/* binding */ _b),
9132
+ /* harmony export */ orderTicketInfo: () => (/* binding */ _c),
9133
+ /* harmony export */ orderTicketInfoContainer: () => (/* binding */ _d),
9134
+ /* harmony export */ orderWrapper: () => (/* binding */ _e),
9135
+ /* harmony export */ reassignButton: () => (/* binding */ _f),
9136
+ /* harmony export */ refundButtons: () => (/* binding */ _10),
9137
+ /* harmony export */ refundModal: () => (/* binding */ _11),
9138
+ /* harmony export */ selected: () => (/* binding */ _12),
9139
+ /* harmony export */ tabButtons: () => (/* binding */ _13),
9140
+ /* harmony export */ ticketActionButtons: () => (/* binding */ _14),
9141
+ /* harmony export */ ticketFooter: () => (/* binding */ _15),
9142
+ /* harmony export */ ticketListContainer: () => (/* binding */ _16),
9143
+ /* harmony export */ ticketNo: () => (/* binding */ _17),
9144
+ /* harmony export */ ticketOwnerEmail: () => (/* binding */ _18),
9145
+ /* harmony export */ ticketTicketType: () => (/* binding */ _19),
9146
+ /* harmony export */ viewFinishTicketButton: () => (/* binding */ _1a),
9147
+ /* harmony export */ viewMoreButton: () => (/* binding */ _1b)
9124
9148
  /* harmony export */ });
9125
9149
  // extracted by mini-css-extract-plugin
9126
9150
  var _1 = "assignTicketButton___zzLsc";
@@ -9128,29 +9152,28 @@ var _2 = "assignToMeText___ZPaex";
9128
9152
  var _3 = "assignedByText___bNZ7z";
9129
9153
  var _4 = "assignedToMeDes___GjFkV";
9130
9154
  var _5 = "assignedToMeWrapper___Uxc2y";
9131
- var _6 = "bfFeature___eEinE";
9132
- var _7 = "bfFeatureWrapper___qWk9V";
9133
- var _8 = "checkbox___XZJpb";
9134
- var _9 = "disabledRefund___Sffl7";
9135
- var _a = "display_none___CqpL3";
9136
- var _b = "label___zXDWz";
9137
- var _c = "orderTicketContainer___ZJLzk";
9138
- var _d = "orderTicketInfo___gemqB";
9139
- var _e = "orderTicketInfoContainer____p66V";
9140
- var _f = "orderWrapper___yDBAo";
9141
- var _10 = "reassignButton___RojM5";
9142
- var _11 = "refundButtons___jDl4H";
9143
- var _12 = "refundModal___EqgPF";
9144
- var _13 = "selected___HWGNc";
9145
- var _14 = "tabButtons___xTyJA";
9146
- var _15 = "ticketActionButtons___rpSMQ";
9147
- var _16 = "ticketFooter___j3bdi";
9148
- var _17 = "ticketListContainer___cfmrr";
9149
- var _18 = "ticketNo___a2iM9";
9150
- var _19 = "ticketOwnerEmail___Zt4OE";
9151
- var _1a = "ticketTicketType___Zq_f0";
9152
- var _1b = "viewFinishTicketButton___HF6Im";
9153
- var _1c = "viewMoreButton___K_1zT";
9155
+ var _6 = "badgeFeatureWrapper___IQLNP";
9156
+ var _7 = "checkbox___XZJpb";
9157
+ var _8 = "disabledRefund___Sffl7";
9158
+ var _9 = "display_none___CqpL3";
9159
+ var _a = "label___zXDWz";
9160
+ var _b = "orderTicketContainer___ZJLzk";
9161
+ var _c = "orderTicketInfo___gemqB";
9162
+ var _d = "orderTicketInfoContainer____p66V";
9163
+ var _e = "orderWrapper___yDBAo";
9164
+ var _f = "reassignButton___RojM5";
9165
+ var _10 = "refundButtons___jDl4H";
9166
+ var _11 = "refundModal___EqgPF";
9167
+ var _12 = "selected___HWGNc";
9168
+ var _13 = "tabButtons___xTyJA";
9169
+ var _14 = "ticketActionButtons___rpSMQ";
9170
+ var _15 = "ticketFooter___j3bdi";
9171
+ var _16 = "ticketListContainer___cfmrr";
9172
+ var _17 = "ticketNo___a2iM9";
9173
+ var _18 = "ticketOwnerEmail___Zt4OE";
9174
+ var _19 = "ticketTicketType___Zq_f0";
9175
+ var _1a = "viewFinishTicketButton___HF6Im";
9176
+ var _1b = "viewMoreButton___K_1zT";
9154
9177
 
9155
9178
 
9156
9179
 
@@ -9167,49 +9190,47 @@ __webpack_require__.r(__webpack_exports__);
9167
9190
  /* harmony export */ CTAButtonWrapper: () => (/* binding */ _1),
9168
9191
  /* harmony export */ actionButtons: () => (/* binding */ _2),
9169
9192
  /* harmony export */ approved: () => (/* binding */ _3),
9170
- /* harmony export */ badgeFeature: () => (/* binding */ _4),
9171
- /* harmony export */ badgeFeatureWrapper: () => (/* binding */ _5),
9172
- /* harmony export */ buttonPill: () => (/* binding */ _6),
9173
- /* harmony export */ cancelButton: () => (/* binding */ _7),
9174
- /* harmony export */ continueButton: () => (/* binding */ _8),
9175
- /* harmony export */ deleteIcon: () => (/* binding */ _9),
9176
- /* harmony export */ pending: () => (/* binding */ _a),
9177
- /* harmony export */ refundDetail: () => (/* binding */ _b),
9178
- /* harmony export */ refundErrorMsg: () => (/* binding */ _c),
9179
- /* harmony export */ refundSuccessful: () => (/* binding */ _d),
9180
- /* harmony export */ refundText: () => (/* binding */ _e),
9181
- /* harmony export */ refundTicketAttendee: () => (/* binding */ _f),
9182
- /* harmony export */ refundTicketBoxContainer: () => (/* binding */ _10),
9183
- /* harmony export */ rejected: () => (/* binding */ _11),
9184
- /* harmony export */ subtitle: () => (/* binding */ _12),
9185
- /* harmony export */ successMsg: () => (/* binding */ _13),
9186
- /* harmony export */ successMsg2: () => (/* binding */ _14),
9187
- /* harmony export */ ticketList: () => (/* binding */ _15),
9188
- /* harmony export */ ticketNo: () => (/* binding */ _16)
9193
+ /* harmony export */ badgeFeatureWrapper: () => (/* binding */ _4),
9194
+ /* harmony export */ buttonPill: () => (/* binding */ _5),
9195
+ /* harmony export */ cancelButton: () => (/* binding */ _6),
9196
+ /* harmony export */ continueButton: () => (/* binding */ _7),
9197
+ /* harmony export */ deleteIcon: () => (/* binding */ _8),
9198
+ /* harmony export */ pending: () => (/* binding */ _9),
9199
+ /* harmony export */ refundDetail: () => (/* binding */ _a),
9200
+ /* harmony export */ refundErrorMsg: () => (/* binding */ _b),
9201
+ /* harmony export */ refundSuccessful: () => (/* binding */ _c),
9202
+ /* harmony export */ refundText: () => (/* binding */ _d),
9203
+ /* harmony export */ refundTicketAttendee: () => (/* binding */ _e),
9204
+ /* harmony export */ refundTicketBoxContainer: () => (/* binding */ _f),
9205
+ /* harmony export */ rejected: () => (/* binding */ _10),
9206
+ /* harmony export */ subtitle: () => (/* binding */ _11),
9207
+ /* harmony export */ successMsg: () => (/* binding */ _12),
9208
+ /* harmony export */ successMsg2: () => (/* binding */ _13),
9209
+ /* harmony export */ ticketList: () => (/* binding */ _14),
9210
+ /* harmony export */ ticketNo: () => (/* binding */ _15)
9189
9211
  /* harmony export */ });
9190
9212
  // extracted by mini-css-extract-plugin
9191
9213
  var _1 = "CTAButtonWrapper___Kgq6g";
9192
9214
  var _2 = "actionButtons___u7mPS";
9193
9215
  var _3 = "approved___sxEJW";
9194
- var _4 = "badgeFeature___tLhEp";
9195
- var _5 = "badgeFeatureWrapper____9GbD";
9196
- var _6 = "buttonPill___Lesaz";
9197
- var _7 = "cancelButton___yfhYb";
9198
- var _8 = "continueButton___NyX3s";
9199
- var _9 = "deleteIcon___FSwye";
9200
- var _a = "pending___aEbWw";
9201
- var _b = "refundDetail___cQ28V";
9202
- var _c = "refundErrorMsg___Aahzr";
9203
- var _d = "refundSuccessful___zrDQY";
9204
- var _e = "refundText___aEnL9";
9205
- var _f = "refundTicketAttendee___QXCjM";
9206
- var _10 = "refundTicketBoxContainer___ya613";
9207
- var _11 = "rejected___NJE4Z";
9208
- var _12 = "subtitle___PtDe2";
9209
- var _13 = "successMsg___HtMse";
9210
- var _14 = "successMsg2___Q6zna";
9211
- var _15 = "ticketList___eDQR3";
9212
- var _16 = "ticketNo____EAD4";
9216
+ var _4 = "badgeFeatureWrapper____9GbD";
9217
+ var _5 = "buttonPill___Lesaz";
9218
+ var _6 = "cancelButton___yfhYb";
9219
+ var _7 = "continueButton___NyX3s";
9220
+ var _8 = "deleteIcon___FSwye";
9221
+ var _9 = "pending___aEbWw";
9222
+ var _a = "refundDetail___cQ28V";
9223
+ var _b = "refundErrorMsg___Aahzr";
9224
+ var _c = "refundSuccessful___zrDQY";
9225
+ var _d = "refundText___aEnL9";
9226
+ var _e = "refundTicketAttendee___QXCjM";
9227
+ var _f = "refundTicketBoxContainer___ya613";
9228
+ var _10 = "rejected___NJE4Z";
9229
+ var _11 = "subtitle___PtDe2";
9230
+ var _12 = "successMsg___HtMse";
9231
+ var _13 = "successMsg2___Q6zna";
9232
+ var _14 = "ticketList___eDQR3";
9233
+ var _15 = "ticketNo____EAD4";
9213
9234
 
9214
9235
 
9215
9236
 
@@ -10210,4 +10231,4 @@ MyOrdersMyTicketsWidget.propTypes = {
10210
10231
  /******/ })()
10211
10232
  ;
10212
10233
  });
10213
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7QUFDTjtBQUNJO0FBQ3VCO0FBQ1Q7QUFDZDtBQUNrQjtBQUVGO0FBQUE7QUFFdkQsTUFBTUUsdUJBQXVCLEdBQUloakIsS0FBSyxJQUFLO0VBQ3pDLE1BQU07SUFDSmdaLFFBQVE7SUFDUmlLLFlBQVk7SUFDWjN4QyxNQUFNO0lBQ042RCxVQUFVO0lBQ1Y1RCxJQUFJO0lBQ0p3bkMsUUFBUTtJQUNSdi9CO0VBQ0YsQ0FBQyxHQUFHd21CLEtBQUs7RUFFVCxNQUFNO0lBQUVrWixLQUFLO0lBQUVXO0VBQVUsQ0FBQyxHQUFHRixvREFBWSxDQUFDO0lBQ3hDWCxRQUFRO0lBQ1JpSyxZQUFZO0lBQ1ozeEMsTUFBTTtJQUNOQyxJQUFJO0lBQ0o0RCxVQUFVO0lBQ1Y0akMsUUFBUTtJQUNSdi9CO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTTBwQyxnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO0lBQzdCLE1BQU01dEMsTUFBTSxHQUFHLElBQUk2dEMsZUFBZSxDQUFDMW1DLE1BQU0sQ0FBQ3dpQyxRQUFRLENBQUNtRSxNQUFNLENBQUM7SUFDMUQsTUFBTUMsS0FBSyxHQUFHL3RDLE1BQU0sQ0FBQ2d1QyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3RDLElBQUlELEtBQUssRUFBRW5LLEtBQUssQ0FBQ2pvQyxRQUFRLENBQUM7TUFBRTZYLElBQUksRUFBRXZhLGlEQUFXO01BQUU4RSxPQUFPLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDakUsQ0FBQztFQUVEd1osZ0RBQVMsQ0FBQyxNQUFNO0lBQ2Rxc0IsS0FBSyxDQUFDam9DLFFBQVEsQ0FBQ0kseURBQWUsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUMvQyxDQUFDLEVBQUUsQ0FBQ0QsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUVsQixvQkFDRWtNLHNEQUFBLENBQUM4MEIsaURBQVE7SUFBQzJHLEtBQUssRUFBRUEsS0FBTTtJQUFBajdCLFFBQUEsZUFDckJSLHNEQUFBLENBQUNzbEMsd0VBQVc7TUFDVlEsWUFBWSxFQUFFTCxnQkFBaUI7TUFDL0JydEIsT0FBTyxFQUFFLElBQUs7TUFDZGdrQixTQUFTLEVBQUVBLFNBQVU7TUFBQTU3QixRQUFBLGVBRXJCUixzREFBQSxDQUFDcW5CLCtEQUFvQjtRQUFDMkIsV0FBVztRQUFBeG9CLFFBQUEsZUFDL0JSLHNEQUFBLENBQUN1MEIsaUVBQWEsSUFBRTtNQUFDLENBQ0c7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVEZ1IsdUJBQXVCLENBQUNqakMsU0FBUyxHQUFHO0VBQ2xDaTVCLFFBQVEsRUFBRTU2QiwwREFBZ0I7RUFDMUI2a0MsWUFBWSxFQUFFN2tDLDBEQUFnQjtFQUM5QjlNLE1BQU0sRUFBRThNLDBEQUFnQjtFQUN4QmpKLFVBQVUsRUFBRWlKLDBEQUFnQjtFQUM1QjdNLElBQUksRUFBRTZNLDBEQUFnQjtFQUN0QjI2QixRQUFRLEVBQUUzNkIsMERBQWdCO0VBQzFCNUUsYUFBYSxFQUFFNEUsd0RBQWNtRDtBQUMvQixDQUFDO0FBRUQsaUVBQWV5aEMsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvbmZpcm1EaWFsb2cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tTm90aWZpY2F0aW9uL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbVRoZW1lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0Fzc2lnbmVkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQmFkZ2VGZWF0dXJlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRnJlZVBhaWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Qcm9tb0NvZGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU3RhdHVzRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvVGlja2V0VHlwZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Ob1RpY2tldHNGb3VuZC9UaWNrZXRzSWNvbi5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Ob1RpY2tldHNGb3VuZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0JhZGdlRmVhdHVyZUltYWdlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGFiV3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgY3JlYXRlQWN0aW9uLFxuICBkZWxldGVSZXF1ZXN0LFxuICBnZXRSZXF1ZXN0LFxuICBwdXRSZXF1ZXN0LFxuICBzdGFydExvYWRpbmcsXG4gIHN0b3BMb2FkaW5nXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgeyBvYmplY3RUb1F1ZXJ5U3RyaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGF1dGhQcm9taXNlUmVqZWN0LCBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTLFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRklMVEVSX0FDVElPTixcbiAgRklSU1RfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVFxufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfQVBJX0VSUk9SID0gXCJSRVNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BUElfRVJST1IgPSBcIlNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfRklMVEVSID0gXCJDSEFOR0VfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX1NPUlQgPSBcIkNIQU5HRV9TT1JUXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgREVMRUdBVEVfVElDS0VUID0gXCJERUxFR0FURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0VGlja2V0ID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVycm9yID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9BUElfRVJST1IpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgPSBcIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgPSBcIkZJTFRFUl9WQVJfVElDS0VUX1RZUEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCA9IFwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyA9IFwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1BST01PQ09ERSA9IFwiRklMVEVSX1ZBUl9QUk9NT0NPREVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0ZSRUVfUEFJRCA9IFwiRklMVEVSX1ZBUl9GUkVFX1BBSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSIC8gU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgY2hhbmdlRmlsdGVyID0gKGZpbHRlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfRklMVEVSKShmaWx0ZXIpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VTb3J0ID0gKHNvcnQpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX1NPUlQpKHNvcnQpKTtcbn07XG5cbi8vIEZJTFRFUi9TT1JUIFBBUlNFXG5jb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmosIGZpbHRlckFjdGlvbikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgY3JlYXRlZFtdJHtmaWx0ZXJPYmoubG93ZXJ9JiYke2ZpbHRlck9iai51cHBlcn1gKTtcbiAgfVxuICBpZiAoXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfYmFkZ2VfZmVhdHVyZXNfaWRcIlxuICAgICAgICA6IFwiYmFkZ2VfZmVhdHVyZXNfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX3R5cGVfaWRcIlxuICAgICAgICA6IFwidGlja2V0X3R5cGVfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX2Fzc2lnbmVkX3RvXCJcbiAgICAgICAgOiBcImFzc2lnbmVkX3RvXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfb3duZXJfc3RhdHVzXCJcbiAgICAgICAgOiBcIm93bmVyX3N0YXR1c1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVU31gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTID8gXCJhbW91bnRcIiA6IFwiZmluYWxfYW1vdW50XCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEID09PSBcIkZyZWVcIiA/IFwiPT0wXCIgOiBcIj4wXCJ9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERSkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19wcm9tb19jb2RlXCJcbiAgICAgICAgOiBcInByb21vX2NvZGVcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREV9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGxldCBpbnB1dEZpbHRlcnMgPSBcIlwiO1xuXG4gICAgc3dpdGNoIChmaWx0ZXJBY3Rpb24pIHtcbiAgICAgIGNhc2UgRklMVEVSX0FDVElPTi5PUkRFUlM6IHtcbiAgICAgICAgaW5wdXRGaWx0ZXJzID0gYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LHRpY2tldHNfb3duZXJfZW1haWw9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSx0aWNrZXRzX251bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjYXNlIEZJTFRFUl9BQ1RJT04uVElDS0VUU19CWV9PUkRFUlM6IHtcbiAgICAgICAgaW5wdXRGaWx0ZXJzID0gYG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG93bmVyX2VtYWlsPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRklMVEVSX0FDVElPTi5FWFRFUk5BTF9USUNLRVRTOiB7XG4gICAgICAgIGlucHV0RmlsdGVycyA9IGBvcmRlcl9udW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSxudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfSxvcmRlcl9vd25lcl9lbWFpbD1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9YDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgZmlsdGVyLnB1c2goaW5wdXRGaWx0ZXJzKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+IChkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiKTtcblxuLy8gcGF5bG9hZDogeyBodHRwQ29kZSwgdGl0bGUsIGh0bWw6IGNvbnRlbnQsIHR5cGUgfVxuY29uc3QgZXJyb3JIYW5kbGVyTm90aWZ5ID0gKHBheWxvYWQsIGNhbGxiYWNrKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BUElfRVJST1IpKHBheWxvYWQpKTtcbiAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xufTtcblxuY29uc3QgY3VzdG9tQXV0aEVycm9ySGFuZGxlciA9IChlcnIsIHJlcykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGF1dGhFcnJvckhhbmRsZXIoZXJyLCByZXMsIGVycm9ySGFuZGxlck5vdGlmeSkpO1xufTtcblxuY29uc3QgY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIgPSAocmVzcG9uc2UpID0+IChkaXNwYXRjaCkgPT4ge1xuICBjb25zdCBjb2RlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICBsZXQgbXNnO1xuICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgc3dpdGNoIChjb2RlKSB7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwM1wiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy51c2VyX25vdF9hdXRoelwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDFcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2Vzc2lvbl9leHBpcmVkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQxMlwiXTpcbiAgICAgIG1zZyA9IFwiXCI7XG4gICAgICBPYmplY3QuZW50cmllcyhyZXNwb25zZS5lcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGtleSkpIHtcbiAgICAgICAgICBtc2cgPSBgJHttc2d9ICR7a2V5fTogYDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1zZyA9IGAke21zZ30gJHt2YWx1ZX0gPGJyPmA7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI1MDBcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2VydmVyX2Vycm9yXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG1zZyA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7XG4gIH1cblxuICBkaXNwYXRjaChlcnJvckhhbmRsZXJOb3RpZnkoeyB0aXRsZTogaTE4bi50KFwiZXJyb3JzLmVycm9yXCIpLCBodG1sOiBtc2cgfSkpO1xufTtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKFxuICAgIHtcbiAgICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICBmaWx0ZXIgPSB7fSxcbiAgICAgIHNvcnQgPSB7fVxuICAgIH0sXG4gICAgc2tpcExvYWRpbmdcbiAgKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWNyZWF0ZWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcImFwcGxpZWRfdGF4ZXMsbm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcImlkLGNyZWF0ZWQsbnVtYmVyLGFtb3VudCxjdXJyZW5jeSx0YXhlc19hbW91bnQsZGlzY291bnRfYW1vdW50LHRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSxyZWZ1bmRlZF9hbW91bnQscmF3X2Ftb3VudCxhcHBsaWVkX3RheGVzLmlkLGFwcGxpZWRfdGF4ZXMubmFtZSxhcHBsaWVkX3RheGVzLmFtb3VudFwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIEZJTFRFUl9BQ1RJT04uT1JERVJTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXIsXG4gICAgICB7IGZpbHRlciwgc29ydCB9XG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHBheWxvYWQpXG4gICAgICAuY2F0Y2goKGUpID0+IGUpXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmICghc2tpcExvYWRpbmcpIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoXG4gICAge1xuICAgICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgIGZpbHRlciA9IHt9LFxuICAgICAgc29ydCA9IHt9XG4gICAgfSxcbiAgICBza2lwTG9hZGluZ1xuICApID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0LCB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IGZpZWxkcyA9IFtcbiAgICAgIFwib3JkZXIuaWRcIixcbiAgICAgIFwib3JkZXIub3duZXJfZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9sYXN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfZW1haWxcIixcbiAgICAgIFwib3duZXIuaWRcIixcbiAgICAgIFwib3duZXIuZW1haWxcIixcbiAgICAgIFwib3duZXIuZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5sYXN0X25hbWVcIixcbiAgICAgIFwib3duZXIuc3RhdHVzXCIsXG4gICAgICBcImJhZGdlLm5vbmVcIlxuICAgIF07XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiLCBgb3JkZXJfb3duZXJfaWQ8PiR7dXNlclByb2ZpbGUuaWR9YF0sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsb3duZXIsdGlja2V0X3R5cGUsYmFkZ2UsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOiBmaWVsZHMuam9pbihcIixcIiksXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBGSUxURVJfQUNUSU9OLkVYVEVSTkFMX1RJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9NWV9BU1NJR05FRF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgaWYgKCFza2lwTG9hZGluZykgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHtcbiAgICBvcmRlcklkLFxuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlcixcbiAgICBzb3J0XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBmaWVsZHM6IFwiYmFkZ2Uubm9uZVwiLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLnRheCxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgRklMVEVSX0FDVElPTi5USUNLRVRTX0JZX09SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlcixwcm9tb19jb2RlXCIsXG4gICAgICByZWxhdGlvbnM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lLHByb21vX2NvZGUubm9uZSx0aWNrZXRfdHlwZS5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlLHByb21vX2NvZGUuaWQscHJvbW9fY29kZS5jb2RlLHByb21vX2NvZGUuYWxsb3dzX3RvX2RlbGVnYXRlLHByb21vX2NvZGUuYWxsb3dzX3RvX3JlYXNzaWduLHRpY2tldF90eXBlLmlkLHRpY2tldF90eXBlLm5hbWUsdGlja2V0X3R5cGUuYWxsb3dzX3RvX2RlbGVnYXRlLHRpY2tldF90eXBlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5jb3N0LHRpY2tldF90eXBlLmNyZWF0ZWRcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCksXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25BdHRlbmRlZSA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgYXR0ZW5kZWVfZW1haWwsIG1lc3NhZ2UgPSBudWxsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7IGF0dGVuZGVlX2VtYWlsIH07XG4gICAgaWYgKG1lc3NhZ2UpIHBheWxvYWQubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEFTU0lHTl9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVUaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVhc3NpZ25UaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2gocmVtb3ZlVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PlxuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSlcbiAgICApO1xuXG5leHBvcnQgY29uc3QgdW5hc3NpZ25UaWNrZXQgPSAob3JkZXJJZCwgdGlja2V0SWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2gocmVtb3ZlVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PiBkaXNwYXRjaChzdG9wTG9hZGluZygpKSk7XG5cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWU6IGZpcnN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZTogbGFzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9lbWFpbDogZW1haWxcbiAgICB9O1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihERUxFR0FURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vZGVsZWdhdGVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlRXh0cmFRdWVzdGlvbnMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3Qgbm9ybWFsaXplZEFucyA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRBbnMsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRQREYgPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgQnV0dG9uIGZyb20gXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiO1xuaW1wb3J0IERpYWxvZyBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dcIjtcbmltcG9ydCBEaWFsb2dBY3Rpb25zIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIjtcbmltcG9ydCBEaWFsb2dDb250ZW50IGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRcIjtcbmltcG9ydCBEaWFsb2dDb250ZW50VGV4dCBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiO1xuaW1wb3J0IERpYWxvZ1RpdGxlIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmNvbnN0IENvbmZpcm1EaWFsb2cgPSAoeyBvcGVuLCB0aXRsZSwgYm9keSwgb25DbG9zZSwgb25Db25maXJtIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPERpYWxvZ1xuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBhcmlhLWxhYmVsbGVkYnk9XCJhbGVydC1kaWFsb2ctdGl0bGVcIlxuICAgICAgYXJpYS1kZXNjcmliZWRieT1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiXG4gICAgPlxuICAgICAgPERpYWxvZ1RpdGxlIGlkPVwiYWxlcnQtZGlhbG9nLXRpdGxlXCI+e3RpdGxlfTwvRGlhbG9nVGl0bGU+XG4gICAgICA8RGlhbG9nQ29udGVudD5cbiAgICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgICAge2JvZHl9XG4gICAgICAgIDwvRGlhbG9nQ29udGVudFRleHQ+XG4gICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICA8RGlhbG9nQWN0aW9ucz5cbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbkNsb3NlfT57dChcImdlbmVyYWwuY2FuY2VsXCIpfTwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ29uZmlybX0gYXV0b0ZvY3VzPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb25maXJtXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvRGlhbG9nQWN0aW9ucz5cbiAgICA8L0RpYWxvZz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbmZpcm1EaWFsb2c7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgQ29udGVudENvcHlJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCI7XG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBkZWZhdWx0V2lkdGggPSA5MDtcblxuY29uc3QgQ29weVRleHQgPSAoe1xuICB0ZXh0LFxuICB0b29sdGlwVGV4dCxcbiAgaGlkZUNvcHkgPSBmYWxzZSxcbiAgdHJ1bmNhdGVkID0gdHJ1ZSxcbiAgcmV2ZXJzZWQgPSBmYWxzZSxcbiAgd2lkdGggPSBkZWZhdWx0V2lkdGhcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0b29sdGlwVGV4dFRvVXNlID0gdG9vbHRpcFRleHQgfHwgdChcImdlbmVyYWwuY29weV90b19jbGlwYm9hcmRcIik7XG4gIGNvbnN0IFt0b29sdGlwLCBzZXRUb29sdGlwXSA9IFJlYWN0LnVzZVN0YXRlKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICBjb25zdCBjbGFzc05hbWVzID0gYCR7dHJ1bmNhdGVkICYmIHN0eWxlcy50cnVuY2F0ZWR9ICR7XG4gICAgcmV2ZXJzZWQgJiYgc3R5bGVzLnJldmVyc2VkXG4gIH1gO1xuXG4gIGNvbnN0IGhhbmRsZUNvcHkgPSAoKSA9PiB7XG4gICAgbmF2aWdhdG9yLmNsaXBib2FyZC53cml0ZVRleHQodGV4dCk7XG4gICAgc2V0VG9vbHRpcCh0KFwiZ2VuZXJhbC5jb3BpZWRcIikpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgc2V0VG9vbHRpcCh0b29sdGlwVGV4dFRvVXNlKTtcbiAgICB9LCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17Y2xhc3NOYW1lc30gc3R5bGU9e3sgd2lkdGggfX0+XG4gICAgICAgIHt0ZXh0fVxuICAgICAgPC9zcGFuPlxuICAgICAgeyFoaWRlQ29weSAmJiAoXG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXt0b29sdGlwfT5cbiAgICAgICAgICA8Q29udGVudENvcHlJY29uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb3B5SWNvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNvcHl9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImNvcHktbnVtYmVyLWJ1dHRvblwiXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNvcHlUZXh0LnByb3BUeXBlcyA9IHtcbiAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdG9vbHRpcFRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGhpZGVDb3B5OiBQcm9wVHlwZXMuYm9vbCxcbiAgdHJ1bmNhdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgcmV2ZXJzZWQ6IFByb3BUeXBlcy5ib29sLFxuICB3aWR0aDogUHJvcFR5cGVzLm51bWJlclxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29weVRleHQ7XG4iLCJpbXBvcnQgeyBjcmVhdGVDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0KG51bGwpO1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQWxlcnQsIFNuYWNrYmFyLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcblxuY29uc3QgQ3VzdG9tTm90aWZpY2F0aW9uID0gKHsgb3Blbiwgb25DbG9zZSwgbWVzc2FnZSwgc2V2ZXJpdHkgfSkgPT4ge1xuICBpZiAoIW1lc3NhZ2UpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPFNuYWNrYmFyXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFuY2hvck9yaWdpbj17eyB2ZXJ0aWNhbDogXCJ0b3BcIiwgaG9yaXpvbnRhbDogXCJjZW50ZXJcIiB9fVxuICAgICAgYXV0b0hpZGVEdXJhdGlvbj17MjAwMH1cbiAgICA+XG4gICAgICA8QWxlcnRcbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgc2V2ZXJpdHk9e3NldmVyaXR5fVxuICAgICAgICB2YXJpYW50PVwiZmlsbGVkXCJcbiAgICAgICAgc3g9e3sgd2lkdGg6IFwiMTAwJVwiLCBiYWNrZ3JvdW5kQ29sb3I6IGAke3NldmVyaXR5fS5saWdodGAgfX1cbiAgICAgICAgaWNvbk1hcHBpbmc9e3tcbiAgICAgICAgICBzdWNjZXNzOiA8Q2hlY2tDaXJjbGVJY29uIGZvbnRTaXplPVwiaW5oZXJpdFwiIC8+LFxuICAgICAgICAgIGVycm9yOiA8RXJyb3JJY29uIGZvbnRTaXplPVwiaW5oZXJpdFwiIC8+XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPnttZXNzYWdlfTwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQWxlcnQ+XG4gICAgPC9TbmFja2Jhcj5cbiAgKTtcbn07XG5cbkN1c3RvbU5vdGlmaWNhdGlvbi5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgbWVzc2FnZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V2ZXJpdHk6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbU5vdGlmaWNhdGlvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRoZW1lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgY3JlYXRlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxubGV0IGRhcmtDb2xvciA9IFwiXCI7XG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudFxuICBjb25zdCByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50O1xuXG4gIC8vIFJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIGEgQ1NTIHZhcmlhYmxlXG4gIGRhcmtDb2xvciA9IGdldENvbXB1dGVkU3R5bGUocm9vdCkuZ2V0UHJvcGVydHlWYWx1ZShcbiAgICBcIi0tY29sb3JfYmFja2dyb3VuZF9kYXJrXCJcbiAgKTtcbn1cblxuY29uc3QgdGhlbWUgPSBjcmVhdGVUaGVtZSh7XG4gIHBhbGV0dGU6IHtcbiAgICBwcmltYXJ5OiB7XG4gICAgICBtYWluOiBkYXJrQ29sb3JcbiAgICB9LFxuICAgIHRleHQ6IHtcbiAgICAgIHByaW1hcnk6IFwiIzAwMDAwMERFXCIsXG4gICAgICBzZWNvbmRhcnk6IFwiIzAwMDAwMDk5XCIsXG4gICAgICBsaW5rOiBcIiMyMTk2ZjNcIlxuICAgIH1cbiAgfSxcbiAgdHlwb2dyYXBoeToge1xuICAgIGJvZHkxOiB7XG4gICAgICBmb250U2l6ZTogXCIxNHB4XCIsXG4gICAgICBmb250V2VpZ2h0OiA0MDBcbiAgICB9LFxuICAgIGg1OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjZlbVwiLFxuICAgICAgZm9udFdlaWdodDogNDAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH0sXG4gICAgaDY6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNGVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfVxuICB9LFxuICBjb21wb25lbnRzOiB7XG4gICAgTXVpRm9ybUhlbHBlclRleHQ6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIuOGVtXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpQnV0dG9uOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IFwiMjJweFwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgICAgICBjb2xvcjogXCIjMDAwMDAwOTlcIixcbiAgICAgICAgICBcIiYuTXVpLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiczoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgaW5kaWNhdG9yOiB7XG4gICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMyMTk2ZjNcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59KTtcblxuY29uc3QgQ3VzdG9tVGhlbWUgPSAoeyBjaGlsZHJlbiB9KSA9PiAoXG4gIDxUaGVtZVByb3ZpZGVyIHRoZW1lPXt0aGVtZX0+e2NoaWxkcmVufTwvVGhlbWVQcm92aWRlcj5cbik7XG5cbkN1c3RvbVRoZW1lLnByb3BUeXBlcyA9IHtcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbVRoZW1lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtR3JvdXAsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWxcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuICBjb25zdCBxdWVzdGlvbk1heFZhbHVlcyA9IHF1ZXN0aW9uLm1heF9zZWxlY3RlZF92YWx1ZXM7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICBjb25zdCBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UgPSAoY2hlY2tlZCwgdmFsKSA9PiB7XG4gICAgY29uc3QgY3VycmVudEFucyA9IHZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IG1heFNlbGVjdGlvblJlYWNoZWQgPVxuICAgICAgcXVlc3Rpb25NYXhWYWx1ZXMgIT09IDAgJiYgY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD5cbiAgICAgICAgICA8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+XG4gICAgICAgIDwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIG1hcmdpbj1cIm5vcm1hbFwiIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgc3g9e3sgYWxpZ25JdGVtczogXCJmbGV4LXN0YXJ0XCIgfX1cbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBzeD17eyBtYXJnaW5Ub3A6IC0xIH19XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT5cbiAgICAgICAgICA8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+XG4gICAgICAgIDwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgVGV4dFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Hcm91cD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblRleHRRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZXh0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrUnVsZSA9ICh2YWx1ZSwgcnVsZSkgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBydWxlLmFuc3dlcl92YWx1ZXM7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmICghdmFsdWUubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHJlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIjtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIikge1xuICAgICAgICByZXMgPSByZXMgJiYgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPclxuICAgICAgICByZXMgPSByZXMgfHwgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHZhbHVlPy50b1N0cmluZygpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1Zpc2liaWxpdHkgPSAocnVsZSwgcnVsZVJlc3VsdCkgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIHJldHVybiAhIXJ1bGVSZXN1bHQ7XG4gICAgfVxuICAgIC8vIE5vbiBFcXVhbFxuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICAvLyBub3QgdmlzaWJsZVxuICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIHJldHVybiAhIXJ1bGVSZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TbHVnID0gKHRleHQsIHF1ZXN0aW9uSWQpID0+IHtcbiAgY29uc3QgdGV4dExDID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gYCR7dGV4dExDLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgXCJfXCIpfV8ke3F1ZXN0aW9uSWR9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYWJlbCA9IChxKSA9PlxuICAvLyByZXBsYWNlIGxpbmUgYnJlYWtzIGFuZCByZW1vdmUgb3V0ZXIgPHA+XG4gIHE/LmxhYmVsPy5yZXBsYWNlKC9cXG4vZywgXCIgXCIpLnJlcGxhY2UoLzxwPiguKik8XFwvcD4vZ2ksIFwiJDFcIik7XG5cbmV4cG9ydCBjb25zdCBpc0Fuc3dlcmVkID0gKGFuc3dlcikgPT4ge1xuICBpZiAoIWFuc3dlcikgcmV0dXJuIGZhbHNlO1xuICAvLyBjaGVjayB0eXBlXG4gIGlmIChBcnJheS5pc0FycmF5KGFuc3dlcikpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwic3RyaW5nXCIpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwibnVtYmVyXCIpIHJldHVybiBhbnN3ZXIgPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJib29sZWFuXCIpIHJldHVybiBhbnN3ZXI7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0lmVmFsdWVNYXRjaCA9IChhbnN3ZXIsIGNvbXBhcmVWYWwpID0+IHtcbiAgY29uc3QgYW5zd2VyQXJyYXkgPSBBcnJheS5pc0FycmF5KGFuc3dlcikgPyBhbnN3ZXIgOiBbYW5zd2VyXTtcblxuICByZXR1cm4gYW5zd2VyQXJyYXkuc29tZSgodikgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBhcmVWYWwpKSB7XG4gICAgICByZXR1cm4gY29tcGFyZVZhbC5pbmNsdWRlcyhgJHt2fWApO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dn1gID09PSBgJHtjb21wYXJlVmFsfWA7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVJbml0aWFsVmFsdWUgPSAocSkgPT4ge1xuICBzd2l0Y2ggKHEudHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsdWUgPSAoYW5zLCB0eXBlKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGFucyA9PT0gXCJ0cnVlXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIGFucz8uc3BsaXQoXCIsXCIpIHx8IFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBhbnMgfHwgXCJcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gYW5zIHx8IG51bGw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBhbnM7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgPSAoYW5zd2VycykgPT4ge1xuICBjb25zdCB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIC4uLmV4dHJhX3F1ZXN0aW9uc1xuICB9ID0gYW5zd2VycztcblxuICBjb25zdCBmb3JtYXR0ZWRFUSA9IE9iamVjdC5lbnRyaWVzKGV4dHJhX3F1ZXN0aW9ucykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgcXVlc3Rpb25faWQ6IHBhcnNlSW50KGtleS5zcGxpdChcIl9cIikucG9wKCksIDEwKSxcbiAgICBhbnN3ZXI6IHZhbHVlPy50b1N0cmluZygpIHx8IG51bGxcbiAgfSkpO1xuXG4gIHJldHVybiB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIGV4dHJhX3F1ZXN0aW9uczogZm9ybWF0dGVkRVFcbiAgfTtcbn07XG4iLCJleHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHQgPSBcIlRleHRcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dEFyZWEgPSBcIlRleHRBcmVhXCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrYm94ID0gXCJDaGVja0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QgPSBcIlJhZGlvQnV0dG9uTGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db21ib0JveCA9IFwiQ29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0ID0gXCJDaGVja0JveExpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94ID0gXCJDb3VudHJ5Q29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24gPSBcIlJhZGlvQnV0dG9uXCI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmltcG9ydCB7XG4gIHRvU2x1ZyxcbiAgaXNBbnN3ZXJlZCxcbiAgY2hlY2tWaXNpYmlsaXR5LFxuICBjaGVja1J1bGVcbn0gZnJvbSBcIi4vY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0LFxuICBRdWVzdGlvblR5cGVfVGV4dEFyZWFcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgVGV4dFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBEcm9wZG93blF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGRcIjtcblxuY29uc3QgZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IChxdWVzdGlvblR5cGUpID0+IHtcbiAgc3dpdGNoIChxdWVzdGlvblR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYTpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0OiB7XG4gICAgICByZXR1cm4gVGV4dFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6IHtcbiAgICAgIHJldHVybiBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6IHtcbiAgICAgIHJldHVybiBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6IHtcbiAgICAgIHJldHVybiBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBSZWFjdC5GcmFnbWVudDtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IEV4dHJhUXVlc3Rpb25zRmllbGRzID0gKHtcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIG9yaWdpbmFsQW5zd2VycyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+IHtcbiAgICBjb25zdCBydWxlUmVzdWx0ID0gY2hlY2tSdWxlKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSwgcnVsZSk7XG4gICAgY29uc3QgaXNWaXNpYmxlID0gY2hlY2tWaXNpYmlsaXR5KHJ1bGUsIHJ1bGVSZXN1bHQpO1xuXG4gICAgaWYgKGlzVmlzaWJsZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZXR1cm4gcmVuZGVyUXVlc3Rpb24ocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChvcmlnaW5hbEFuc3dlcnNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGlmICghYmFkZ2VfZmVhdHVyZXNfdHlwZXMgfHwgYmFkZ2VfZmVhdHVyZXNfdHlwZXMubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkJhZGdlIEZlYXR1cmVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge2JhZGdlX2ZlYXR1cmVzX3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQmFkZ2VGZWF0dXJlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWRnZUZlYXR1cmVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQge1xuICBCYWRnZSxcbiAgQm94LFxuICBCdXR0b24sXG4gIENhcmQsXG4gIENhcmRIZWFkZXIsXG4gIERpdmlkZXIsXG4gIFBhcGVyXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlRmlsdGVyIGZyb20gXCIuL0JhZGdlRmVhdHVyZUZpbHRlclwiO1xuaW1wb3J0IHtcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRVxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRpY2tldFR5cGVGaWx0ZXIgZnJvbSBcIi4vVGlja2V0VHlwZUZpbHRlclwiO1xuaW1wb3J0IEFzc2lnbmVkRmlsdGVyIGZyb20gXCIuL0Fzc2lnbmVkRmlsdGVyXCI7XG5pbXBvcnQgU3RhdHVzRmlsdGVyIGZyb20gXCIuL1N0YXR1c0ZpbHRlclwiO1xuaW1wb3J0IEZyZWVQYWlkRmlsdGVyIGZyb20gXCIuL0ZyZWVQYWlkRmlsdGVyXCI7XG5pbXBvcnQgUHJvbW9Db2RlRmlsdGVyIGZyb20gXCIuL1Byb21vQ29kZUZpbHRlclwiO1xuXG5jb25zdCBGaWx0ZXIgPSAoeyBvbkZpbHRlciwgb25SZXNldCwgZmlsdGVyLCBhY3RpdmVGaWx0ZXJzQ291bnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93RmlsdGVyTGlzdCwgc2V0U2hvd0ZpbHRlckxpc3RdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbc2hvd0RhdGVwaWNrZXIsIHNldFNob3dEYXRlcGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZmlsdGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoZmlsdGVyUmVmLmN1cnJlbnQgJiYgIWZpbHRlclJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIGlmIChzaG93RmlsdGVyTGlzdCkge1xuICAgICAgICBzZXRTaG93RmlsdGVyTGlzdChmYWxzZSk7XG4gICAgICAgIHNldFNob3dEYXRlcGlja2VyKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dGaWx0ZXJMaXN0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dGaWx0ZXJMaXN0KCFzaG93RmlsdGVyTGlzdCk7XG4gICAgc2V0U2hvd0RhdGVwaWNrZXIoIXNob3dEYXRlcGlja2VyKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJSZXNldCA9ICgpID0+IHtcbiAgICBvblJlc2V0KCk7XG4gICAgdG9nZ2xlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNvbnRhaW5lcn0gcmVmPXtmaWx0ZXJSZWZ9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgICAgb25DbGljaz17dG9nZ2xlfVxuICAgICAgPlxuICAgICAgICA8QmFkZ2UgYmFkZ2VDb250ZW50PXthY3RpdmVGaWx0ZXJzQ291bnR9IGNvbG9yPVwicHJpbWFyeVwiIHN4PXt7IG1yOiAxIH19PlxuICAgICAgICAgIDxGaWx0ZXJMaXN0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVySWNvbn0gLz5cbiAgICAgICAgPC9CYWRnZT5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTGFiZWx9Pnt0KFwiZmlsdGVyLmZpbHRlclwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5maWx0ZXJMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9ICR7XG4gICAgICAgICAgc2hvd0ZpbHRlckxpc3QgPyBzdHlsZXMuc2hvd0ZpbHRlckxpc3QgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgPlxuICAgICAgICA8UGFwZXIgZWxldmF0aW9uPXs4fSBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDaGVja2JveENvbnRhaW5lcn0+XG4gICAgICAgICAgPENhcmQgdmFyaWFudD1cIm91dGxpbmVkXCI+XG4gICAgICAgICAgICA8Q2FyZEhlYWRlclxuICAgICAgICAgICAgICB0aXRsZT1cIkZpbHRlcnNcIlxuICAgICAgICAgICAgICBhY3Rpb249e1xuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUZpbHRlclJlc2V0fVxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xlYW5CdXR0b259XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAge3QoXCJmaWx0ZXIuY2xlYXJcIil9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RGl2aWRlciAvPlxuICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8QXNzaWduZWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8U3RhdHVzRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFRpY2tldFR5cGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxQcm9tb0NvZGVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9QUk9NT0NPREVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8RnJlZVBhaWRGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9GUkVFX1BBSURdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9DYXJkPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyLFxuICBhY3RpdmVGaWx0ZXJzQ291bnQ6IHdpZGdldFN0YXRlLmFjdGl2ZUZpbHRlcnNDb3VudFxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoRmlsdGVyKTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBGcmVlUGFpZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0ZSRUVfUEFJRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiRnJlZVwiLCBsYWJlbDogXCJGcmVlXCIgfSxcbiAgICB7IHZhbHVlOiBcIlBhaWRcIiwgbGFiZWw6IFwiUGFpZFwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJGcmVlIC8gUGFpZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5GcmVlUGFpZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRnJlZVBhaWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgVGV4dEZpZWxkXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9QUk9NT0NPREUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBQcm9tb0NvZGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9QUk9NT0NPREU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcbiAgY29uc3QgW3Byb21vQ29kZSwgc2V0UHJvbW9Db2RlXSA9IHVzZVN0YXRlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcblxuICBjb25zdCBkZWJvdW5jZVRpbWVyID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBERUJPVU5DRV9WQUxVRSA9IDUwMDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFByb21vQ29kZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcyk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYpID0+IHtcbiAgICBjb25zdCBuZXdQcm9tb0NvZGUgPSBldi50YXJnZXQudmFsdWU7XG4gICAgLy8gdXBkYXRlIGxvY2FsIHN0YXRlIHNvIHRoZSBpbnB1dCByZWZsZWN0cyBjaGFuZ2VzXG4gICAgc2V0UHJvbW9Db2RlKG5ld1Byb21vQ29kZSk7XG5cbiAgICAvLyByZW1vdmUgY3VycmVudCBkZWJvdW5jZVxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIC8vIGRlYm91bmNlIHNldCB0byA1MDAgbXNcbiAgICBkZWJvdW5jZVRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIG9uRmlsdGVyKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogbmV3UHJvbW9Db2RlXG4gICAgICB9KTtcbiAgICB9LCBERUJPVU5DRV9WQUxVRSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyByZW1vdmUgZGVib3VuY2Ugb24gcmVsb2FkXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJQcm9tbyBDb2RlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBweTogMVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJFbnRlciBwcm9tbyBjb2RlXCJcbiAgICAgICAgICAgIHZhbHVlPXtwcm9tb0NvZGV9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfVxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgLz5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Qcm9tb0NvZGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFByb21vQ29kZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuY29uc3QgU2VhcmNoID0gKHsgb25TZWFyY2ggfSkgPT4ge1xuICBjb25zdCB7IGZpbHRlciB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBzaG93Q2xvc2VCdG4gPSAhIWZpbHRlcltGSUxURVJfVkFSX09SREVSX05VTUJFUl07XG5cbiAgY29uc3Qgb25LZXlEb3duID0gKGV2ZW50KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAga2V5LFxuICAgICAgbmF0aXZlRXZlbnQ6IHtcbiAgICAgICAgdGFyZ2V0OiB7IHZhbHVlIH1cbiAgICAgIH1cbiAgICB9ID0gZXZlbnQ7XG4gICAgaWYgKGtleSA9PT0gXCJFbnRlclwiKSB7XG4gICAgICBvblNlYXJjaCh7XG4gICAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IHZhbHVlXG4gICAgICB9KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHJlc2V0U2VhcmNoID0gKCkgPT4ge1xuICAgIHNldFNlYXJjaFZhbHVlKFwiXCIpO1xuICAgIG9uU2VhcmNoKHtcbiAgICAgIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCJcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHdlIG5lZWQgdGhpcyB3aGVuIHNlYXJjaCBpcyByZXNldCBmcm9tIG91dHNpZGUgdGhpcyBjb21wb25lbnRcbiAgICBzZXRTZWFyY2hWYWx1ZShmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdKTtcbiAgfSwgW2ZpbHRlcltGSUxURVJfVkFSX09SREVSX05VTUJFUl1dKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8U2VhcmNoQ29udGFpbmVyPlxuICAgICAgICB7c2hvd0Nsb3NlQnRuICYmIChcbiAgICAgICAgICA8Q2xvc2VJY29uV3JhcHBlciBvbkNsaWNrPXtyZXNldFNlYXJjaH0+XG4gICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgPC9DbG9zZUljb25XcmFwcGVyPlxuICAgICAgICApfVxuICAgICAgICA8U2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgICAgPFNlYXJjaEljb24gLz5cbiAgICAgICAgPC9TZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgPFN0eWxlZElucHV0QmFzZVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KFwib3JkZXJfc2VhcmNoLm9yZGVyX251bWJlclwiKX1cbiAgICAgICAgICBpbnB1dFByb3BzPXt7IFwiYXJpYS1sYWJlbFwiOiBcInNlYXJjaFwiIH19XG4gICAgICAgICAgdmFsdWU9e3NlYXJjaFZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgIG9uS2V5RG93bj17b25LZXlEb3dufVxuICAgICAgICAvPlxuICAgICAgPC9TZWFyY2hDb250YWluZXI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TZWFyY2gucHJvcFR5cGVzID0ge1xuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNlYXJjaDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFBhcGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBJbXBvcnRFeHBvcnRJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTb3J0ID0gKHsgb25Tb3J0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd1NvcnQsIHNldFNob3dTb3J0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc29ydFJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlU29ydENsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChzb3J0UmVmLmN1cnJlbnQgJiYgIXNvcnRSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBzZXRTaG93U29ydChmYWxzZSk7XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgfTtcbiAgfSwgW3Nob3dTb3J0XSk7XG5cbiAgY29uc3QgdG9nZ2xlID0gKCkgPT4ge1xuICAgIHNldFNob3dTb3J0KCFzaG93U29ydCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5zb3J0Q29udGFpbmVyfSBvbkNsaWNrPXt0b2dnbGV9PlxuICAgICAgPFN0YWNrXG4gICAgICAgIHJlZj17c29ydFJlZn1cbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgPlxuICAgICAgICA8SW1wb3J0RXhwb3J0SWNvbiBmb250U2l6ZT1cImxhcmdlXCIgY2xhc3NOYW1lPXtzdHlsZXMuc29ydEljb259IC8+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRMYWJlbH0+e3QoXCJzb3J0LnNvcnRcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIHtzaG93U29ydCAmJiAoXG4gICAgICAgIDxQYXBlclxuICAgICAgICAgIGVsZXZhdGlvbj17OH1cbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zb3J0TGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfWB9XG4gICAgICAgID5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJkZXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5uZXdfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiYXNjXCIsIG5hbWU6IFwiY3JlYXRlZFwiIH0pfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwic29ydC5vbGRfZmlyc3RcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU29ydDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTdGF0dXNGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVM6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkluY29tcGxldGVcIiwgbGFiZWw6IFwiSW5jb21wbGV0ZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJDb21wbGV0ZVwiLCBsYWJlbDogXCJDb21wbGV0ZVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJTdGF0dXNcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU3RhdHVzRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdGF0dXNGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFRpY2tldFR5cGVGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQ6IHsgdGlja2V0X3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBuZXdGaWx0ZXJzXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG4gIH0sIFtmaWx0ZXJWYWx1ZXNdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlRpY2tldCBUeXBlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0aWNrZXRfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRUeXBlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRUeXBlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRmlsdGVyIGZyb20gXCIuL0ZpbHRlclwiO1xuaW1wb3J0IFNvcnQgZnJvbSBcIi4vU29ydFwiO1xuaW1wb3J0IFNlYXJjaCBmcm9tIFwiLi9TZWFyY2hcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRmlsdGVycyA9ICh7IG9uRmlsdGVyLCBvblNvcnQsIG9uU2VhcmNoLCBvblJlc2V0IH0pID0+IChcbiAgPEdyaWQgY29udGFpbmVyIGp1c3RpZnk9XCJmbGV4LWVuZFwiIGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICA8R3JpZFxuICAgICAgaXRlbVxuICAgICAgeHM9ezZ9XG4gICAgICBjb250YWluZXJcbiAgICAgIHBhZGRpbmc9ezF9XG4gICAgICBnYXA9ezJ9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPEZpbHRlciBvbkZpbHRlcj17b25GaWx0ZXJ9IG9uUmVzZXQ9e29uUmVzZXR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8U29ydCBvblNvcnQ9e29uU29ydH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICAgPEdyaWQgaXRlbSB4cz17Nn0gY29udGFpbmVyIGp1c3RpZnlDb250ZW50PVwiZmxleC1lbmRcIj5cbiAgICAgIDxTZWFyY2ggb25TZWFyY2g9e29uU2VhcmNofSAvPlxuICAgIDwvR3JpZD5cbiAgPC9HcmlkPlxuKTtcblxuRmlsdGVycy5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25Tb3J0OiBQcm9wVHlwZXMuZnVuYyxcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVycztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGb3JtRm9vdGVyID0gKHsgc2F2ZUxhYmVsLCBjYW5jZWxMYWJlbCwgb25DbG9zZSwgZGlzYWJsZWQgfSkgPT4gKFxuICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmZvb3Rlcn0+XG4gICAgPEJ1dHRvblxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnRufVxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7Y2FuY2VsTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gICAgPEJ1dHRvblxuICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5zYXZlQnRufVxuICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICA+XG4gICAgICB7c2F2ZUxhYmVsfVxuICAgIDwvQnV0dG9uPlxuICA8L0JveD5cbik7XG5cbkZvcm1Gb290ZXIucHJvcFR5cGVzID0ge1xuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNhbmNlbExhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb3JtRm9vdGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBFcnJvckxhYmVsKHsgbWVzc2FnZSwgY29sb3IsIGNsYXNzTmFtZXMsIGRhdGFUZXN0SWQgfSkge1xuICByZXR1cm4gKFxuICAgIDxzcGFuXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5lcnJvckxhYmVsfSAke2NsYXNzTmFtZXMgJiYgY2xhc3NOYW1lc31gfVxuICAgICAgc3R5bGU9e3sgY29sb3IgfX1cbiAgICAgIGRhdGEtdGVzdGlkPXtkYXRhVGVzdElkfVxuICAgID5cbiAgICAgIDxFcnJvckljb24gc3g9e3sgY29sb3IgfX0gLz5cbiAgICAgIHttZXNzYWdlfVxuICAgIDwvc3Bhbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JMYWJlbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJhY2tkcm9wLCBDaXJjdWxhclByb2dyZXNzIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuY29uc3QgTG9hZGVyID0gKHsgb3BlbiB9KSA9PiAoXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gIDxCYWNrZHJvcCBvcGVuPXtvcGVufSBzeD17KHRoZW1lKSA9PiAoeyB6SW5kZXg6IHRoZW1lLnpJbmRleC5kcmF3ZXIgKyAxIH0pfT5cbiAgICA8Q2lyY3VsYXJQcm9ncmVzcyBjb2xvcj1cImluaGVyaXRcIiAvPlxuICA8L0JhY2tkcm9wPlxuKTtcblxuTG9hZGVyLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IExvYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IE9yZGVyc0xpc3QgZnJvbSBcIi4uL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE15T3JkZXJzVGlja2V0cyA9ICh7IGZldGNoRGF0YSB9KSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0LCBtZW1iZXJPcmRlcnMsIG9yZGVyc19jdXJyZW50X3BhZ2UsIG9yZGVyc19sYXN0X3BhZ2UgfSA9XG4gICAgdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgaWQ9XCJpbmZpbml0ZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5teU9yZGVyc1dyYXBwZXJ9PlxuICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgIGRhdGFMZW5ndGg9e21lbWJlck9yZGVycz8ubGVuZ3RofVxuICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDwgb3JkZXJzX2xhc3RfcGFnZX1cbiAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgPlxuICAgICAgICB7bWVtYmVyT3JkZXJzPy5tYXAoKG9yZGVyKSA9PiAoXG4gICAgICAgICAgPE9yZGVyc0xpc3RcbiAgICAgICAgICAgIGtleT17b3JkZXIubnVtYmVyICsgb3JkZXIuaWR9XG4gICAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmNvbnN0IFRpY2tldHNJY29uID0gKCkgPT4gKFxuICA8c3ZnXG4gICAgd2lkdGg9XCIxMjlcIlxuICAgIGhlaWdodD1cIjgwXCJcbiAgICB2aWV3Qm94PVwiMCAwIDEyOSA4MFwiXG4gICAgZmlsbD1cIm5vbmVcIlxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICA+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTI1LjEyMiAzNi40NzgxQzEyNC44MTQgMzcuNTExMiAxMjMuNzM4IDM4LjA4OTEgMTIyLjY2MSAzOC4wMzc2QzExOC41MDYgMzcuODM4NiAxMTQuNTkzIDQwLjQ3NTQgMTEzLjM0OSA0NC42NDEyQzExMi4xMDUgNDguODA3MyAxMTMuOTMyIDUzLjE1NzYgMTE3LjUxNyA1NS4yNjk3QzExOC40NDYgNTUuODE2OSAxMTkuMDI4IDU2Ljg4OTkgMTE4LjcyIDU3LjkyMzFMMTE2LjM2OSA2NS43OTY3QzExNi4wNTMgNjYuODU1MSAxMTQuOTM5IDY3LjQ1NyAxMTMuODgxIDY3LjE0MUwzMC43Njc1IDQyLjMyNzFDMjkuNzA5MSA0Mi4wMTEyIDI5LjEwNzIgNDAuODk3IDI5LjQyMzIgMzkuODM4Nkw0MC4zNDM5IDMuMjYwMTZDNDAuNjU5OSAyLjIwMTc2IDQxLjc3NCAxLjU5OTkxIDQyLjgzMjQgMS45MTU5TDEyNS45NDYgMjYuNzI5N0MxMjcuMDA0IDI3LjA0NTcgMTI3LjYwNiAyOC4xNTk5IDEyNy4yOSAyOS4yMTgzTDEyNS4xMjIgMzYuNDc4MVpcIlxuICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTExMy4zNDkgNDQuNjQxMkwxMTIuMzkxIDQ0LjM1NTFMMTEyLjM5MSA0NC4zNTUyTDExMy4zNDkgNDQuNjQxMlpNMTE3LjUxNyA1NS4yNjk3TDExNy4wMDkgNTYuMTMxMkwxMTcuNTE3IDU1LjI2OTdaTTEyMi42NjEgMzguMDM3NkwxMjIuNzA5IDM3LjAzODdDMTE4LjEwNSAzNi44MTgzIDExMy43NjkgMzkuNzM4MSAxMTIuMzkxIDQ0LjM1NTFMMTEzLjM0OSA0NC42NDEyTDExNC4zMDcgNDQuOTI3NEMxMTUuNDE2IDQxLjIxMjcgMTE4LjkwNiAzOC44NTg5IDEyMi42MTQgMzkuMDM2NEwxMjIuNjYxIDM4LjAzNzZaTTExMy4zNDkgNDQuNjQxMkwxMTIuMzkxIDQ0LjM1NTJDMTExLjAxMiA0OC45NzI1IDExMy4wMzggNTMuNzkxNSAxMTcuMDA5IDU2LjEzMTJMMTE3LjUxNyA1NS4yNjk3TDExOC4wMjQgNTQuNDA4MUMxMTQuODI2IDUyLjUyMzggMTEzLjE5OCA0OC42NDIxIDExNC4zMDcgNDQuOTI3M0wxMTMuMzQ5IDQ0LjY0MTJaTTExOC43MiA1Ny45MjMxTDExNy43NjIgNTcuNjM3TDExNS40MTEgNjUuNTEwNkwxMTYuMzY5IDY1Ljc5NjdMMTE3LjMyNyA2Ni4wODI4TDExOS42NzggNTguMjA5MUwxMTguNzIgNTcuOTIzMVpNMTEzLjg4MSA2Ny4xNDFMMTE0LjE2NyA2Ni4xODI4TDMxLjA1MzUgNDEuMzY4OUwzMC43Njc1IDQyLjMyNzFMMzAuNDgxNCA0My4yODU0TDExMy41OTUgNjguMDk5MkwxMTMuODgxIDY3LjE0MVpNMjkuNDIzMiAzOS44Mzg2TDMwLjM4MTQgNDAuMTI0N0w0MS4zMDIxIDMuNTQ2MjRMNDAuMzQzOSAzLjI2MDE2TDM5LjM4NTcgMi45NzQwOUwyOC40NjUgMzkuNTUyNUwyOS40MjMyIDM5LjgzODZaTTQyLjgzMjQgMS45MTU5TDQyLjU0NjQgMi44NzQxMUwxMjUuNjYgMjcuNjg3OUwxMjUuOTQ2IDI2LjcyOTdMMTI2LjIzMiAyNS43NzE1TDQzLjExODUgMC45NTc2OTdMNDIuODMyNCAxLjkxNTlaTTEyNy4yOSAyOS4yMTgzTDEyNi4zMzIgMjguOTMyMkwxMjQuMTY0IDM2LjE5MkwxMjUuMTIyIDM2LjQ3ODFMMTI2LjA4MSAzNi43NjQyTDEyOC4yNDggMjkuNTA0NEwxMjcuMjkgMjkuMjE4M1pNMTI1Ljk0NiAyNi43Mjk3TDEyNS42NiAyNy42ODc5QzEyNi4xODkgMjcuODQ1OSAxMjYuNDkgMjguNDAzIDEyNi4zMzIgMjguOTMyMkwxMjcuMjkgMjkuMjE4M0wxMjguMjQ4IDI5LjUwNDRDMTI4LjcyMiAyNy45MTY4IDEyNy44MTkgMjYuMjQ1NSAxMjYuMjMyIDI1Ljc3MTVMMTI1Ljk0NiAyNi43Mjk3Wk0zMC43Njc1IDQyLjMyNzFMMzEuMDUzNSA0MS4zNjg5QzMwLjUyNDMgNDEuMjEwOSAzMC4yMjM0IDQwLjY1MzkgMzAuMzgxNCA0MC4xMjQ3TDI5LjQyMzIgMzkuODM4NkwyOC40NjUgMzkuNTUyNUMyNy45OTEgNDEuMTQwMSAyOC44OTM4IDQyLjgxMTQgMzAuNDgxNCA0My4yODU0TDMwLjc2NzUgNDIuMzI3MVpNMTE2LjM2OSA2NS43OTY3TDExNS40MTEgNjUuNTEwNkMxMTUuMjUzIDY2LjAzOTggMTE0LjY5NiA2Ni4zNDA4IDExNC4xNjcgNjYuMTgyOEwxMTMuODgxIDY3LjE0MUwxMTMuNTk1IDY4LjA5OTJDMTE1LjE4MiA2OC41NzMyIDExNi44NTMgNjcuNjcwNCAxMTcuMzI3IDY2LjA4MjhMMTE2LjM2OSA2NS43OTY3Wk0xMTcuNTE3IDU1LjI2OTdMMTE3LjAwOSA1Ni4xMzEyQzExNy42NTMgNTYuNTEwNSAxMTcuOTA1IDU3LjE1NyAxMTcuNzYyIDU3LjYzN0wxMTguNzIgNTcuOTIzMUwxMTkuNjc4IDU4LjIwOTFDMTIwLjE1MiA1Ni42MjI4IDExOS4yMzkgNTUuMTIzNCAxMTguMDI0IDU0LjQwODFMMTE3LjUxNyA1NS4yNjk3Wk00MC4zNDM5IDMuMjYwMTZMNDEuMzAyMSAzLjU0NjI0QzQxLjQ2MDEgMy4wMTcwNCA0Mi4wMTcxIDIuNzE2MTEgNDIuNTQ2NCAyLjg3NDExTDQyLjgzMjQgMS45MTU5TDQzLjExODUgMC45NTc2OTdDNDEuNTMwOSAwLjQ4MzcxIDM5Ljg1OTYgMS4zODY0OCAzOS4zODU3IDIuOTc0MDlMNDAuMzQzOSAzLjI2MDE2Wk0xMjIuNjYxIDM4LjAzNzZMMTIyLjYxNCAzOS4wMzY0QzEyNC4wMjEgMzkuMTAzOCAxMjUuNjA3IDM4LjM1MDUgMTI2LjA4MSAzNi43NjQyTDEyNS4xMjIgMzYuNDc4MUwxMjQuMTY0IDM2LjE5MkMxMjQuMDIxIDM2LjY3MiAxMjMuNDU2IDM3LjA3NDQgMTIyLjcwOSAzNy4wMzg3TDEyMi42NjEgMzguMDM3NlpcIlxuICAgICAgZmlsbD1cIiNCREJEQkRcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTA3LjkwMyAyMi42NzU4TDk2LjU2OTYgNjAuNjM3OVwiXG4gICAgICBzdHJva2U9XCIjQkRCREJEXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlRGFzaGFycmF5PVwiMiA1XCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTkxLjc0MiA0NS44OTUyQzkxLjc0MTkgNDYuOTczNCA5MC44NzY1IDQ3LjgzNDcgODkuODI5NyA0OC4wOTMzQzg1Ljc5MDYgNDkuMDkxMyA4Mi43OTU5IDUyLjczNzYgODIuNzk1MyA1Ny4wODUyQzgyLjc5NDggNjEuNDMyOSA4NS43ODg3IDY1LjA3OTIgODkuODI3NiA2Ni4wNzc5QzkwLjg3NDIgNjYuMzM2NyA5MS43Mzk0IDY3LjE5ODMgOTEuNzM5MiA2OC4yNzY0TDkxLjczODIgNzYuNDkzNUM5MS43MzgxIDc3LjU5ODEgOTAuODQyNiA3OC40OTM0IDg5LjczOCA3OC40OTMzTDIuOTk5NzIgNzguNDgyN0MxLjg5NTE1IDc4LjQ4MjUgMC45OTk4MjUgNzcuNTg3IDAuOTk5OTYgNzYuNDgyNEwxLjAwNDY0IDM4LjMwODZDMS4wMDQ3NyAzNy4yMDQgMS45MDAzMSAzNi4zMDg3IDMuMDA0ODggMzYuMzA4OEw4OS43NDMyIDM2LjMxOTVDOTAuODQ3NyAzNi4zMTk2IDkxLjc0MzEgMzcuMjE1MSA5MS43NDI5IDM4LjMxOTdMOTEuNzQyIDQ1Ljg5NTJaXCJcbiAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk04Mi43OTUzIDU3LjA4NTJMODEuNzk1MyA1Ny4wODUxTDgxLjc5NTMgNTcuMDg1MUw4Mi43OTUzIDU3LjA4NTJaTTg5LjgyOTcgNDguMDkzM0w5MC4wNjk2IDQ5LjA2NDFMODkuODI5NyA0OC4wOTMzWk04OS44Mjk3IDQ4LjA5MzNMODkuNTg5OSA0Ny4xMjI1Qzg1LjExNSA0OC4yMjgxIDgxLjc5NiA1Mi4yNjY3IDgxLjc5NTMgNTcuMDg1MUw4Mi43OTUzIDU3LjA4NTJMODMuNzk1MyA1Ny4wODU0QzgzLjc5NTggNTMuMjA4NCA4Ni40NjYzIDQ5Ljk1NDQgOTAuMDY5NiA0OS4wNjQxTDg5LjgyOTcgNDguMDkzM1pNODIuNzk1MyA1Ny4wODUyTDgxLjc5NTMgNTcuMDg1MUM4MS43OTQ3IDYxLjkwMzYgODUuMTEyOSA2NS45NDIyIDg5LjU4NzUgNjcuMDQ4N0w4OS44Mjc2IDY2LjA3NzlMOTAuMDY3NiA2NS4xMDcxQzg2LjQ2NDQgNjQuMjE2MiA4My43OTQ4IDYwLjk2MjIgODMuNzk1MyA1Ny4wODUzTDgyLjc5NTMgNTcuMDg1MlpNOTEuNzM5MiA2OC4yNzY0TDkwLjczOTIgNjguMjc2M0w5MC43MzgyIDc2LjQ5MzRMOTEuNzM4MiA3Ni40OTM1TDkyLjczODIgNzYuNDkzN0w5Mi43MzkyIDY4LjI3NjZMOTEuNzM5MiA2OC4yNzY0Wk04OS43MzggNzguNDkzM0w4OS43MzgxIDc3LjQ5MzNMMi45OTk4NCA3Ny40ODI3TDIuOTk5NzIgNzguNDgyN0wyLjk5OTYgNzkuNDgyN0w4OS43Mzc5IDc5LjQ5MzNMODkuNzM4IDc4LjQ5MzNaTTAuOTk5OTYgNzYuNDgyNEwxLjk5OTk2IDc2LjQ4MjVMMi4wMDQ2NCAzOC4zMDg3TDEuMDA0NjQgMzguMzA4NkwwLjAwNDYzNzc2IDM4LjMwODVMLTMuOTYwNzVlLTA1IDc2LjQ4MjNMMC45OTk5NiA3Ni40ODI0Wk0zLjAwNDg4IDM2LjMwODhMMy4wMDQ3NiAzNy4zMDg4TDg5Ljc0MyAzNy4zMTk1TDg5Ljc0MzIgMzYuMzE5NUw4OS43NDMzIDM1LjMxOTVMMy4wMDUwMSAzNS4zMDg4TDMuMDA0ODggMzYuMzA4OFpNOTEuNzQyOSAzOC4zMTk3TDkwLjc0MjkgMzguMzE5Nkw5MC43NDIgNDUuODk1MUw5MS43NDIgNDUuODk1Mkw5Mi43NDIgNDUuODk1M0w5Mi43NDI5IDM4LjMxOThMOTEuNzQyOSAzOC4zMTk3Wk04OS43NDMyIDM2LjMxOTVMODkuNzQzIDM3LjMxOTVDOTAuMjk1MyAzNy4zMTk1IDkwLjc0MyAzNy43NjczIDkwLjc0MjkgMzguMzE5Nkw5MS43NDI5IDM4LjMxOTdMOTIuNzQyOSAzOC4zMTk4QzkyLjc0MzEgMzYuNjYzIDkxLjQwMDEgMzUuMzE5NyA4OS43NDMzIDM1LjMxOTVMODkuNzQzMiAzNi4zMTk1Wk0yLjk5OTcyIDc4LjQ4MjdMMi45OTk4NCA3Ny40ODI3QzIuNDQ3NTUgNzcuNDgyNiAxLjk5OTg5IDc3LjAzNDggMS45OTk5NiA3Ni40ODI1TDAuOTk5OTYgNzYuNDgyNEwtMy45NjA3NWUtMDUgNzYuNDgyM0MtMC4wMDAyNDI2MTkgNzguMTM5MiAxLjM0Mjc0IDc5LjQ4MjUgMi45OTk2IDc5LjQ4MjdMMi45OTk3MiA3OC40ODI3Wk05MS43MzgyIDc2LjQ5MzVMOTAuNzM4MiA3Ni40OTM0QzkwLjczODIgNzcuMDQ1NyA5MC4yOTA0IDc3LjQ5MzQgODkuNzM4MSA3Ny40OTMzTDg5LjczOCA3OC40OTMzTDg5LjczNzkgNzkuNDkzM0M5MS4zOTQ3IDc5LjQ5MzUgOTIuNzM4IDc4LjE1MDUgOTIuNzM4MiA3Ni40OTM3TDkxLjczODIgNzYuNDkzNVpNODkuODI3NiA2Ni4wNzc5TDg5LjU4NzUgNjcuMDQ4N0M5MC4zMTI4IDY3LjIyOCA5MC43MzkzIDY3Ljc3NTQgOTAuNzM5MiA2OC4yNzYzTDkxLjczOTIgNjguMjc2NEw5Mi43MzkyIDY4LjI3NjZDOTIuNzM5NSA2Ni42MjExIDkxLjQzNTYgNjUuNDQ1NCA5MC4wNjc2IDY1LjEwNzFMODkuODI3NiA2Ni4wNzc5Wk0xLjAwNDY0IDM4LjMwODZMMi4wMDQ2NCAzOC4zMDg3QzIuMDA0NzEgMzcuNzU2NCAyLjQ1MjQ4IDM3LjMwODggMy4wMDQ3NiAzNy4zMDg4TDMuMDA0ODggMzYuMzA4OEwzLjAwNTAxIDM1LjMwODhDMS4zNDgxNSAzNS4zMDg2IDAuMDA0ODQwNzcgMzYuNjUxNiAwLjAwNDYzNzc2IDM4LjMwODVMMS4wMDQ2NCAzOC4zMDg2Wk04OS44Mjk3IDQ4LjA5MzNMOTAuMDY5NiA0OS4wNjQxQzkxLjQzNzYgNDguNzI2MSA5Mi43NDE4IDQ3LjU1MDggOTIuNzQyIDQ1Ljg5NTNMOTEuNzQyIDQ1Ljg5NTJMOTAuNzQyIDQ1Ljg5NTFDOTAuNzQxOSA0Ni4zOTYgOTAuMzE1MyA0Ni45NDMzIDg5LjU4OTkgNDcuMTIyNUw4OS44Mjk3IDQ4LjA5MzNaXCJcbiAgICAgIGZpbGw9XCIjQkRCREJEXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTcxLjI5NDkgMzcuNTk1N0w3MS4yOTAxIDc3LjIxMzZcIlxuICAgICAgc3Ryb2tlPVwiI0JEQkRCRFwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZURhc2hhcnJheT1cIjIgNVwiXG4gICAgLz5cbiAgPC9zdmc+XG4pO1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRzSWNvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgVGlja2V0c0ljb24gZnJvbSBcIi4vVGlja2V0c0ljb25cIjtcbmltcG9ydCB7IFRBQlMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE5vVGlja2V0c0ZvdW5kID0gKHsgcGFnZVZpZXcsIG9uQ2xpY2sgfSkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCwgbG9hZGluZyB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSk7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBnZXRDb250ZW50ID0gKCkgPT4ge1xuICAgIGNvbnN0IG1haWx0b1RhZyA9IChcbiAgICAgIDxhIGhyZWY9e2BtYWlsdG86JHtzdW1taXQuc3VwcG9ydF9lbWFpbH1gfT5cbiAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRhY3Rfc3VwcG9ydFwiKX1cbiAgICAgIDwvYT5cbiAgICApO1xuXG4gICAgc3dpdGNoIChwYWdlVmlldykge1xuICAgICAgY2FzZSBUQUJTLk9SREVSUzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5vcmRlcnMudGl0bGVcIiksXG4gICAgICAgICAgYm9keTogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3QoXCJub19yZXN1bHRzLm9yZGVycy5ib2R5XCIpfSB7bWFpbHRvVGFnfS5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICksXG4gICAgICAgICAgYnV0dG9uTGFiZWw6IHQoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIilcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNhc2UgVEFCUy5USUNLRVRTOiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLmFzc2lnbmVkLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHt0KFwibm9fcmVzdWx0cy5hc3NpZ25lZC5ib2R5XCIpfSB7bWFpbHRvVGFnfS5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICksXG4gICAgICAgICAgYnV0dG9uTGFiZWw6IHQoXCJvcmRlcnMudGl0bGVcIilcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMuZmlsdGVyLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IHQoXCJub19yZXN1bHRzLmZpbHRlci5ib2R5XCIpLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwiZmlsdGVyLmNsZWFyX2ZpbHRlcnNcIilcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgY29uc3QgeyB0aXRsZSwgYm9keSwgYnV0dG9uTGFiZWwgfSA9IGdldENvbnRlbnQoKTtcblxuICBpZiAobG9hZGluZykgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pY29uV3JhcHBlcn0+XG4gICAgICAgIDxUaWNrZXRzSWNvbiAvPlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJvZHl9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2JvZHl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvbkNsaWNrfVxuICAgICAgPlxuICAgICAgICB7YnV0dG9uTGFiZWx9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE5vVGlja2V0c0ZvdW5kO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBEaXZpZGVyIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZU9yZGVyVG90YWxzLCBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnlUYWJsZSA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHN1YlRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnksXG4gICAgdGF4ZXNTdW1tYXJ5XG4gIH0gPSBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG5cbiAgY29uc3QgaHVuZHJlZCA9IDEwMDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5VGFibGV9PlxuICAgICAge3RpY2tldFN1bW1hcnk/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0aWNrZXRTdW1tYXJ5Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB0aWNrZXRUb3RhbCA9XG4gICAgICAgICAgICAgICh0aWNrZXQucXR5ICogKHRpY2tldC50aWNrZXRfdHlwZS5jb3N0ICogaHVuZHJlZCkpIC8gaHVuZHJlZDtcblxuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgICAgICBjb250YWluZXJcbiAgICAgICAgICAgICAgICBrZXk9e2B0aXhvcmRlcl8ke3RpY2tldC50aWNrZXRfdHlwZS5jcmVhdGVkfWB9XG4gICAgICAgICAgICAgICAgc3g9e3sgcGI6IDEgfX1cbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktaXRlbWl6ZWRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgeHt0aWNrZXQucXR5fSB7dGlja2V0LnRpY2tldF90eXBlLm5hbWV9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXRUb3RhbCwgeyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfSl9XG4gICAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0pfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnN1Yl90b3RhbFwiKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAge3N1YlRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7b3JkZXIudGF4ZXNfYW1vdW50ID4gMCAmJlxuICAgICAgICB0YXhlc1N1bW1hcnk/Lmxlbmd0aCA+IDAgJiZcbiAgICAgICAgdGF4ZXNTdW1tYXJ5Lm1hcCgodGF4KSA9PiAoXG4gICAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19IGtleT17dGF4LmlkfT5cbiAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICB7dGF4Lm5hbWV9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgIHt0YXguYW1vdW50fVxuICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKSl9XG4gICAgICB7b3JkZXIuZGlzY291bnRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5kaXNjb3VudHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIC17ZGlzY291bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7YW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgdXNlU3VtbWl0RGV0YWlscyB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGlzU3RhcnRlZCB9ID0gdXNlU3VtbWl0RGV0YWlscyh7IHN1bW1pdCB9KTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShcbiAgICBpc0luUmVmdW5kYWJsZVBlcmlvZCAmJlxuICAgICFpc1N0YXJ0ZWQgJiZcbiAgICBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldFxuICApO1xuICBjb25zdCBoYXNSZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldHM/LnNvbWUoKHQpID0+IHQucmVmdW5kX3JlcXVlc3RzLmxlbmd0aCA+IDApO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNSZWZ1bmRhYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgcmVxdWVzdCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICAke3N1Ym1pdFJlcXVlc3QgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWQgOiBcIlwifWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIHtoYXNSZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIGRldGFpbHMgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cImVtYWlsIHN1cHBvcnQgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgdGFyZ2V0PVwiX3RvcFwiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH1cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25Ub01lID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyVGlja2V0cyxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXYgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRUb01lV3JhcHBlcn0+XG4gICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJUaWNrZXRzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXt1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIDwgdXNlcl90aWNrZXRzX2xhc3RfcGFnZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgICAgICAge3VzZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtbXX1cbiAgICAgICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduVG9NZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgR3JpZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbmVkVG8gPSAoeyBlbWFpbCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtYXNzaWduZWRcIj5cbiAgICAgICAge2VtYWlsfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgRXh0ZXJuYWxBc3NpZ25lZFRvID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfYnlcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IE1hbmFnZUZvciA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLm1hbmFnZV9mb3JcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEF0dGVuZGVlU3RhdHVzID0gKHsgdGlja2V0LCBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9ICF0aWNrZXQub3duZXI/LmVtYWlsICYmIHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICBpZiAodGlja2V0Lm93bmVyPy5lbWFpbCkge1xuICAgIHJldHVybiAoXG4gICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEFzc2lnbmVkVG8gZW1haWw9e3RpY2tldC5vd25lci5lbWFpbH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7aXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxFeHRlcm5hbEFzc2lnbmVkVG9cbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2ZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2xhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPE1hbmFnZUZvclxuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vd25lcj8uZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vd25lcj8ubGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNSBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9SRVRSWSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgQmFkZ2VGZWF0dXJlSW1hZ2UgPSAoeyBzcmMsIGFsdCwgY2xhc3NOYW1lLCBtYXhSZXRyaWVzID0gT05FX1JFVFJZIH0pID0+IHtcbiAgY29uc3QgW2N1cnJlbnRTcmMsIHNldEN1cnJlbnRTcmNdID0gdXNlU3RhdGUoc3JjKTtcbiAgY29uc3QgW3JldHJ5Q291bnQsIHNldFJldHJ5Q291bnRdID0gdXNlU3RhdGUoMCk7XG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGhhbmRsZUVycm9yID0gKCkgPT4ge1xuICAgIGlmIChyZXRyeUNvdW50IDwgbWF4UmV0cmllcykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldEN1cnJlbnRTcmMoYCR7c3JjfT8mdD0ke0RhdGUubm93KCl9YCk7XG4gICAgICAgIHNldFJldHJ5Q291bnQocmV0cnlDb3VudCArIE9ORV9SRVRSWSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiAocmV0cnlDb3VudCArIE9ORV9SRVRSWSkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRIYXNFcnJvcih0cnVlKTtcbiAgICB9XG4gIH07XG5cbiAgaWYgKGhhc0Vycm9yKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9IHRpdGxlPXthbHR9PlxuICAgICAgICB7YWx0fVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGltZ1xuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICBzcmM9e2N1cnJlbnRTcmN9XG4gICAgICBhbHQ9e2FsdH1cbiAgICAgIG9uRXJyb3I9e2hhbmRsZUVycm9yfVxuICAgIC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBCYWRnZUZlYXR1cmVJbWFnZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlckxpc3RJdGVtID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH0sIFtvcmRlcj8udGlja2V0c190b3RhbF0pO1xuXG4gIGlmICghb3JkZXI/Lm1lbWJlclRpY2tldHM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHNsaWNlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuXG4gIGNvbnN0IG9uVmlld01vcmUgPSAoKSA9PiB7XG4gICAgaWYgKG9yZGVyPy50aWNrZXRzX3RvdGFsID4gb3JkZXI/Lm1lbWJlclRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIGlzUmVmdW5kTW9kYWw9e2ZhbHNlfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtvcmRlcj8udGlja2V0c190b3RhbCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbW9yZSBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld01vcmV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IG9yZGVyPy50aWNrZXRzX3RvdGFsID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbGVzcyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld0xlc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlckxpc3RJdGVtLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0SXRlbTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQnV0dG9uLCBCb3gsIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IGdldFN1bW1pdFJlYXNzaWduRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4vQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0QXNzaWduIGZyb20gXCIuLi9UaWNrZXRBc3NpZ25cIjtcbmltcG9ydCB7IHJlc2V0VGlja2V0IH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVJbWFnZSBmcm9tIFwiLi9CYWRnZUZlYXR1cmVJbWFnZVwiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2sgYWxpZ25JdGVtcz1cImNlbnRlclwiIGRpcmVjdGlvbj1cInJvd1wiPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBpc1JlZnVuZE1vZGFsLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW21vZGFsT3Blbiwgc2V0TW9kYWxPcGVuXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3Qgb25SZWFzc2lnbmFibGVQZXJpb2QgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID1cbiAgICBvblJlYXNzaWduYWJsZVBlcmlvZCAmJiBjYW5SZWFzc2lnbiAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlcldyYXBwZXJ9ICR7XG4gICAgICAgIGlzUmVmdW5kTW9kYWwgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRNb2RhbCAmJiAhaXNSZWZ1bmRhYmxlID8gc3R5bGVzLmRpc2FibGVkUmVmdW5kIDogXCJcIn0gJHtcbiAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kID8gc3R5bGVzLnNlbGVjdGVkIDogXCJcIlxuICAgICAgfWB9XG4gICAgPlxuICAgICAge2lzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIHhzPXsxfSBwYWRkaW5nPXsyfSBjbGFzc05hbWU9e3N0eWxlcy5jaGVja2JveH0+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHRpY2tldCBjaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZWxlY3RUb1JlZnVuZChlLCB0aWNrZXQpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjoge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1JlZnVuZGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgeHM9e2lzUmVmdW5kTW9kYWwgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmZGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtiZi5uYW1lfSBrZXk9e2JmLm5hbWV9PlxuICAgICAgICAgICAgICA8QmFkZ2VGZWF0dXJlSW1hZ2VcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iZkZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogNCwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXshIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRGb290ZXJ9IHB4PXt7IHhzOiAxIH19IHBiPXt7IHhzOiAyIH19PlxuICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc30+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAhaXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuZGV0YWlsfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICAgIDxUaWNrZXRBc3NpZ25cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e1ttb2RhbFZpZXdzLnJlYXNzaWduLCBtb2RhbFZpZXdzLmFzc2lnbl0uaW5jbHVkZXMobW9kYWxPcGVuKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3JkZXJfaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvdGFsX3JlZnVuZGVkX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0aWNrZXRfdHlwZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGlzUmVmdW5kTW9kYWw6IFByb3BUeXBlcy5ib29sLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWxlY3RUb1JlZnVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlZnVuZERldGFpbHMgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHNcIjtcblxuY29uc3QgVGFiUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlID0gKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZ1bmREZXRhaWxzT3Blbiwgc2V0UmVmdW5kRGV0YWlsc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICAgICAodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkXG4gICAgICApO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9zZVN1Ym1pdFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3Blbih0cnVlKX1cbiAgICAgICAgLz5cbiAgICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIGN1cnJlbmN5PXtvcmRlci5jdXJyZW5jeX1cbiAgICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXNrdG9wLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17MX0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHMgfHwgW119XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IGNsb3NlU3VibWl0UmVxdWVzdCgpfVxuICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgIC8+XG4gICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRldGFpbHNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUGFnaW5hdGVDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJzTGlzdCA9ICh7IHN1bW1pdCwgb3JkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0aWNrZXRfcGVyX3BhZ2UsIGZpbHRlciwgc29ydCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDEsIGxnOiAwIH0gfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogXCI1cHggMTBweFwiIH19XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiA0LFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgY3VycmVuY3ksIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHJlcXVlc3RlZFRpY2tldHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHModGlja2V0cyksXG4gICAgW3RpY2tldHNdXG4gICk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgcGFkZGluZzogXCIwIDVyZW1cIlxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVxdWVzdGVkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBjdXJyZW5jeT17Y3VycmVuY3l9XG4gICAgICAgICAgICByZWZ1bmREZXRhaWxzXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuUmVmdW5kRGV0YWlscy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRGV0YWlscztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEljb25CdXR0b24sIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdG9vbHRpcENsYXNzZXMgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBJbmZvSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgUmVmdW5kU3RhdHVzIGZyb20gXCIuL1JlZnVuZFN0YXR1c1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCA9ICh7IHRpY2tldCwgY3VycmVuY3ksIHJlZnVuZERldGFpbHMgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgR1JJRF84ID0gODtcbiAgY29uc3QgR1JJRF8xMiA9IDEyO1xuXG4gIGNvbnN0IFBBRERJTkdfMiA9IDI7XG5cbiAgY29uc3QgYXBwcm92ZWRSZWZ1bmRzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cy5maWx0ZXIoXG4gICAgKHJlZnVuZCkgPT4gcmVmdW5kLnN0YXR1cyA9PT0gXCJBcHByb3ZlZFwiXG4gICk7XG5cbiAgY29uc3QgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeSA9IHt9O1xuXG4gIGFwcHJvdmVkUmVmdW5kcy5mb3JFYWNoKChyZWZ1bmQpID0+IHtcbiAgICByZWZ1bmQucmVmdW5kZWRfdGF4ZXMuZm9yRWFjaCgocnQpID0+IHtcbiAgICAgIGNvbnN0IHRheElkID0gcnQudGF4LmlkO1xuICAgICAgaWYgKCFyZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSkge1xuICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSA9IHtcbiAgICAgICAgICBuYW1lOiBydC50YXgubmFtZSxcbiAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50OiAwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXS50b3RhbFJlZnVuZGVkVGF4QW1vdW50ICs9XG4gICAgICAgIHJ0LnJlZnVuZGVkX2Ftb3VudDtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgSHRtbFRvb2x0aXAgPSBzdHlsZWQoKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9KSA9PiAoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgPFRvb2x0aXAgey4uLnByb3BzfSBjbGFzc2VzPXt7IHBvcHBlcjogY2xhc3NOYW1lIH19IC8+XG4gICkpKCgpID0+ICh7XG4gICAgW2AmIC4ke3Rvb2x0aXBDbGFzc2VzLnRvb2x0aXB9YF06IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZjVmNWY5XCIsXG4gICAgICBjb2xvcjogXCJyZ2JhKDAsIDAsIDAsIDAuODcpXCIsXG4gICAgICBtYXhXaWR0aDogMjIwLFxuICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICNkYWRkZTlcIlxuICAgIH1cbiAgfSkpO1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfSAke1xuICAgICAgICByZWZ1bmREZXRhaWxzID8gc3R5bGVzLnJlZnVuZERldGFpbCA6IFwiXCJcbiAgICAgIH0gYH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3RlZC10aWNrZXQtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17R1JJRF8xMn1cbiAgICAgICAgc209e3JlZnVuZERldGFpbHMgPyBHUklEXzggOiBHUklEXzEyfVxuICAgICAgICBpdGVtXG4gICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgcHQ9ezJ9XG4gICAgICAgIHB4PXs0fVxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IGl0ZW0+XG4gICAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCBzbT17NH0geHM9ezEyfSBweD17eyBzbTogMiwgeHM6IDQgfX0gcHk9e3sgeHM6IDEsIHNtOiAyIH19IGl0ZW0+XG4gICAgICAgICAgPFJlZnVuZFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbSBweD17NH0gcGI9e3JlZnVuZERldGFpbHMgPyBQQURESU5HXzIgOiAwfSBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIHhzPXsxMn0gc209ezh9IGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEF0dGVuZGVlfT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06IDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7cmVmdW5kRGV0YWlscyAmJiB0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBtZD17NH0gcGw9e3sgeHM6IDAsIHNtOiA0IH19PlxuICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgUmVmdW5kZWRcbiAgICAgICAgICAgIHthcHByb3ZlZFJlZnVuZHMuc29tZSgocikgPT4gci5yZWZ1bmRlZF90YXhlcy5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgIDxIdG1sVG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQucmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICBUaWNrZXQgQW1vdW50XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGI+VGF4ZXM8L2I+XG4gICAgICAgICAgICAgICAgICAgIHtPYmplY3Qua2V5cyhyZWZ1bmRlZFRheGVzU3VtbWF0b3J5KS5tYXAoKHRheElkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LCBuYW1lIH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF07XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGtleT17dGF4SWR9PntgJHtuYW1lfSAtICR7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgY3VycmVuY3kgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKX1gfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEluZm9JY29uIC8+XG4gICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8L0h0bWxUb29sdGlwPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAge21vbWVudChcbiAgICAgICAgICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0c1swXS5hY3Rpb25fZGF0ZSAqIE1JTExJU0VDX1RPX1NFQ1xuICAgICAgICAgICAgKS5mb3JtYXQoXCJNTU0gREQsIFlZWVlcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICAgeyFyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezEyfSBwcj17NH0gcGI9ezJ9PlxuICAgICAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbT5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmdW5kRGV0YWlsczogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RlZFRpY2tldDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDaGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kU3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBzdGF0dXNDb2xvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IodGlja2V0KSxcbiAgICBbdGlja2V0XVxuICApO1xuICByZXR1cm4gKFxuICAgIDxDaGlwXG4gICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHJlZnVuZCBzdGF0dXMgbGFiZWxcIlxuICAgICAgbGFiZWw9e3QoYHRpY2tldF9zdGF0dXMucmVmdW5kX3JlcXVlc3RfJHtzdGF0dXNDb2xvcn1gKX1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzW3N0YXR1c0NvbG9yXX1gfVxuICAgIC8+XG4gICk7XG59O1xuXG5SZWZ1bmRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RIUkVFLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RzTW9kYWwgPSAoe1xuICB0aWNrZXRzLFxuICBzdW1taXQsXG4gIG9wZW4sXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICB1bnNlbGVjdFJlZnVuZFRpY2tldHNcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlKFNURVBfT05FKTtcbiAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3JlZnVuZFN1Y2Nlc3MsIHNldFJlZnVuZFN1Y2Nlc3NdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgICBpZiAocmVmdW5kU3VjY2Vzcykge1xuICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UoKTsgLy8gaWYgdGhlIHJlZnVuZCBpcyBhIHN1Y2Nlc3MsIHRyaWdnZXIgYW5kIHJlLXJldHJpZXZlIHRpY2tldHMgYnkgb3JkZXJcbiAgICAgIHNldFJlZnVuZFN1Y2Nlc3MoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjb25maXJtUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9UV08pO1xuICB9O1xuXG4gIGNvbnN0IGdvQmFja1RvUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzOiB0aWNrZXRzVG9SZWZ1bmQgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHNUb1JlZnVuZC5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RlcChTVEVQX1RIUkVFKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfc2VsZWN0X3JlZnVuZFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICBrZXk9e2B0aWNrZXQtJHt0aWNrZXQuaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1xuICAgICAgICAgICAgICAhIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgICAgIGlzUmVmdW5kTW9kYWxcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y29uZmlybVJlZnVuZH1cbiAgICAgICAgICBkaXNhYmxlZD17dGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3ggZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCI+XG4gICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jb25maXJtX3JlZnVuZFwiKX1cbiAgICAgIDwvaDM+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzVG9SZWZ1bmQubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuQ1RBQnV0dG9uV3JhcHBlcn0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLXJldHVybi1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtnb0JhY2tUb1JlZnVuZH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5iYWNrXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtyZWZ1bmRUaWNrZXRzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUaHJlZSA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgY2FzZSBTVEVQX1RIUkVFOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFRocmVlKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWZ1bmQtcmVxdWVzdHNcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LW1vZGFsXCJcbiAgICAgID5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBDbG9zZSBhcyBDbG9zZUljb24gfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSaWdodERyYXdlciA9ICh7XG4gIGlkLFxuICB0aXRsZSxcbiAgaGVhZGVyQ2hpbGRyZW4gPSBudWxsLFxuICBjaGlsZHJlbixcbiAgb3BlbixcbiAgb25DbG9zZSxcbiAgY2xhc3NOYW1lXG59KSA9PiAoXG4gIDxEcmF3ZXJcbiAgICBpZD17aWR9XG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLndyYXBwZXJ9ICR7Y2xhc3NOYW1lfWB9XG4gID5cbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8SWNvbkJ1dHRvblxuICAgICAgICBkYXRhLXRlc3RpZD1cImNsb3NlLWRyYXdlclwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICB7dGl0bGUgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtoZWFkZXJDaGlsZHJlbn1cbiAgICA8L0JveD5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJhd2VyPlxuKTtcblxuUmlnaHREcmF3ZXIucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aXRsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBoZWFkZXJDaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU3VtbWl0SGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8uZGF0ZXNfbGFiZWx9PC9oMj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN1bW1pdEhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHJlc2V0RmlsdGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBTdW1taXRIZWFkZXIgZnJvbSBcIi4uL1N1bW1pdEhlYWRlclwiO1xuaW1wb3J0IE5vVGlja2V0c0ZvdW5kIGZyb20gXCIuLi9Ob1RpY2tldHNGb3VuZFwiO1xuaW1wb3J0IHsgVEFCUyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgVGFiV3JhcHBlciA9ICh7IHRhYiwgY2hpbGRyZW4sIHNldFRhYiB9KSA9PiB7XG4gIGNvbnN0IHsgbWVtYmVyT3JkZXJzLCB1c2VyVGlja2V0cywgYWN0aXZlRmlsdGVyc0NvdW50IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9XG4gICk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgdGlja2V0cyA9IHRhYiA9PT0gVEFCUy5USUNLRVRTID8gdXNlclRpY2tldHMgOiBtZW1iZXJPcmRlcnM7XG4gIGNvbnN0IGhhc1RpY2tldHMgPSB0aWNrZXRzLmxlbmd0aCA+IDA7XG4gIGNvbnN0IGlzRmlsdGVyZWQgPSBhY3RpdmVGaWx0ZXJzQ291bnQgPiAwO1xuXG4gIGNvbnN0IGNsZWFyRmlsdGVycyA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBnZXRQYWdlVmlldyA9ICgpID0+IHtcbiAgICBpZiAoaXNGaWx0ZXJlZCkgcmV0dXJuIFwiZmlsdGVyXCI7XG4gICAgcmV0dXJuIHRhYiA9PT0gVEFCUy5USUNLRVRTID8gVEFCUy5USUNLRVRTIDogVEFCUy5PUkRFUlM7XG4gIH07XG5cbiAgY29uc3QgZ2V0T25DbGljayA9ICgpID0+IHtcbiAgICBpZiAoaXNGaWx0ZXJlZCkgcmV0dXJuIGNsZWFyRmlsdGVycztcbiAgICBjb25zdCB0YWJUb0xpbmsgPSB0YWIgPT09IFRBQlMuVElDS0VUUyA/IFRBQlMuT1JERVJTIDogVEFCUy5USUNLRVRTO1xuICAgIHJldHVybiAoKSA9PiBzZXRUYWIodGFiVG9MaW5rKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7IWhhc1RpY2tldHMgJiYgKFxuICAgICAgICA8Tm9UaWNrZXRzRm91bmQgcGFnZVZpZXc9e2dldFBhZ2VWaWV3KCl9IG9uQ2xpY2s9e2dldE9uQ2xpY2soKX0gLz5cbiAgICAgICl9XG4gICAgICB7aGFzVGlja2V0cyAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEJveCBzeD17eyBwdDogNiwgcGI6IDMgfX0+XG4gICAgICAgICAgICA8U3VtbWl0SGVhZGVyIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUYWJXcmFwcGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIENvbGxhcHNlLCBEaXZpZGVyLCBMaW5rIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4uL1JlYXNzaWduRm9ybVwiO1xuaW1wb3J0IERlbGVnYXRlRm9ybSBmcm9tIFwiLi4vRGVsZWdhdGVGb3JtXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBDb25maXJtRGlhbG9nIGZyb20gXCIuLi8uLi8uLi9Db25maXJtRGlhbG9nXCI7XG5cbmNvbnN0IEFzc2lnbk9wdGlvbnMgPSAoe1xuICB0aWNrZXQsXG4gIHVzZXJQcm9maWxlLFxuICBhc3NpZ25PcHRpb24sXG4gIHNldEFzc2lnbk9wdGlvbixcbiAgb25Bc3NpZ24sXG4gIG9uRGVsZWdhdGUsXG4gIG9uVW5Bc3NpZ25cbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbb3BlbkNvbmZpcm1VbmFzc2lnbiwgc2V0T3BlbkNvbmZpcm1VbmFzc2lnbl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGlzQXNzaWduZWRUb01lID0gdXNlclByb2ZpbGU/LmVtYWlsID09PSB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgY29uc3QgeyBhbGxvd3NEZWxlZ2F0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IGhhbmRsZVVuQXNzaWduID0gKCkgPT4ge1xuICAgIHNldE9wZW5Db25maXJtVW5hc3NpZ24oZmFsc2UpO1xuICAgIG9uVW5Bc3NpZ24oKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBkaXNhYmxlZD17aXNBc3NpZ25lZFRvTWV9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQXNzaWduKHVzZXJQcm9maWxlLmVtYWlsLCBcIlwiKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19tZVwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgb3JcbiAgICAgIDwvRGl2aWRlcj5cbiAgICAgIDxCb3g+XG4gICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm90aGVyXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgPFJlYXNzaWduRm9ybVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgb25Bc3NpZ24odmFsLm5ld19hdHRlbmRlZV9lbWFpbCwgdmFsLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJvdGhlclwiICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwib3RoZXJcIil9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19vdGhlclwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAge2FsbG93c0RlbGVnYXRlICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICAgICAgb3JcbiAgICAgICAgICA8L0RpdmlkZXI+XG4gICAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwibWFuYWdlXCJ9IHRpbWVvdXQ9ezUwMH0+XG4gICAgICAgICAgICA8RGVsZWdhdGVGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBvblN1Ym1pdD17KHZhbCkgPT5cbiAgICAgICAgICAgICAgICBvbkRlbGVnYXRlKFxuICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2ZpcnN0X25hbWUsXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfbGFzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Db2xsYXBzZT5cbiAgICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm1hbmFnZVwiICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm1hbmFnZVwiKX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLm1hbmFnZV90aWNrZXRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7dGlja2V0Py5vd25lcj8uZW1haWwgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnVuYXNzaWduV3JhcHBlcn0+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0T3BlbkNvbmZpcm1VbmFzc2lnbih0cnVlKX1cbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGNvbG9yOiBcInRleHQubGlua1wiLFxuICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbjogXCJ1bmRlcmxpbmVcIixcbiAgICAgICAgICAgICAgdGV4dERlY29yYXRpb25Db2xvcjogXCJ0ZXh0LmxpbmtcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmV2ZXJ0X3RvX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgICB7LyogVE9ETzogaWYgd2UgbmVlZCB0byByZXVzZSB0aGlzIHRoZW4gd2Ugc2hvdWxkIG1vdmUgaXQgdG8gY29udGV4dCAqL31cbiAgICAgIDxDb25maXJtRGlhbG9nXG4gICAgICAgIG9wZW49e29wZW5Db25maXJtVW5hc3NpZ259XG4gICAgICAgIHRpdGxlPXt0KFwidGlja2V0X2Fzc2lnbi5jb25maXJtX3VuYXNzaWduLnRpdGxlXCIpfVxuICAgICAgICBib2R5PXt0KFwidGlja2V0X2Fzc2lnbi5jb25maXJtX3VuYXNzaWduLmJvZHlcIil9XG4gICAgICAgIG9uQ29uZmlybT17aGFuZGxlVW5Bc3NpZ259XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE9wZW5Db25maXJtVW5hc3NpZ24oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkFzc2lnbk9wdGlvbnMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlclByb2ZpbGU6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgYXNzaWduT3B0aW9uOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRBc3NpZ25PcHRpb246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQXNzaWduOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkRlbGVnYXRlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25PcHRpb25zO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IERlbGVnYXRlRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogXCJcIixcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZmlyc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5maXJzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2ZpcnN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9maXJzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9sYXN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0ubGFzdF9uYW1lXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2xhc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5EZWxlZ2F0ZUZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRGVsZWdhdGVGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduSGVhZGVyID0gKHsgaW5Qcm9ncmVzcywgdGlja2V0LCB1c2VyRW1haWwsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3UgPyBcInlvdVwiIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRpY2tldC50aWNrZXRfdHlwZS5uYW1lO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgICAgPC9MaW5rPlxuICAgICAgICA8Lz5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFwiXCI7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeVdyYXBwZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMucHVyY2hhc2VkQnl9PlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnB1cmNoYXNlZF9ieVwiKX17XCIgXCJ9XG4gICAgICAgICAge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck5vfT5cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MjUwfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuQXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkhlYWRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVhc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ueW91cnNlbGZcIilcbiAgICAgIDogdGlja2V0Py5vd25lcj8uZW1haWw7XG5cbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5kZWxlZ2F0ZWRcIil9ICR7XG4gICAgICAgIHRpY2tldC5vd25lci5maXJzdF9uYW1lXG4gICAgICB9ICR7dGlja2V0Lm93bmVyLmxhc3RfbmFtZX0uYDtcbiAgICB9XG5cbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24ucmVhc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoIWluUHJvZ3Jlc3MpIHtcbiAgICAgIHJldHVybiBhbGxvd3NEZWxlZ2F0ZVxuICAgICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uXCIpXG4gICAgICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25fbm9fZGVsZWdhdGVcIik7XG4gICAgfVxuXG4gICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgOiBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgIHJldHVybiAoXG4gICAgICA8PlxuICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgIDxiciAvPlxuICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICBzeD17eyBmb250V2VpZ2h0OiA3MDAsIG1hcmdpbjogXCIyMHB4IDAgMTBweFwiIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNvbXBsZXRlX2xhdGVyXCIpfVxuICAgICAgICA8L0xpbms+XG4gICAgICA8Lz5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcblJlYXNzaWduSGVhZGVyLnByb3BUeXBlcyA9IHtcbiAgaW5Qcm9ncmVzczogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdXNlckVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IFJlYXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlYXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkZvcm07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGFzc2lnbkF0dGVuZGVlLFxuICBkZWxlZ2F0ZVRpY2tldCxcbiAgcmVhc3NpZ25UaWNrZXQsXG4gIHNhdmVFeHRyYVF1ZXN0aW9ucyxcbiAgdW5hc3NpZ25UaWNrZXRcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuLi9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCBBc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgUmVhc3NpZ25IZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXJcIjtcbmltcG9ydCBBc3NpZ25PcHRpb25zIGZyb20gXCIuL2NvbXBvbmVudHMvQXNzaWduT3B0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0QXNzaWduID0gKHsgdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIG9wZW4sIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0gPSB1c2VDb250ZXh0KFxuICAgIEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHRcbiAgKTtcbiAgY29uc3QgW2Fzc2lnbk9wdGlvbiwgc2V0QXNzaWduT3B0aW9uXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbYXNzaWduYXRpb25JblByb2dyZXNzLCBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3NdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuXG4gIGNvbnN0IG9uQ2xvc2VFUUZvcm0gPSAoKSA9PiB7XG4gICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKFwiXCIpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBvbkFzc2lnbiA9IChlbWFpbCwgbWVzc2FnZSA9IFwiXCIpID0+IHtcbiAgICBpZiAob3duZXJJZCkge1xuICAgICAgZGlzcGF0Y2gocmVhc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IG9uVW5Bc3NpZ24gPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2godW5hc3NpZ25UaWNrZXQob3JkZXJJZCwgdGlja2V0SWQpKS50aGVuKCgpID0+IHtcbiAgICAgIG9uQ2xvc2VFUUZvcm0oKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkRlbGVnYXRlID0gKGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKSA9PiB7XG4gICAgZGlzcGF0Y2goXG4gICAgICBkZWxlZ2F0ZVRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBvbkNsb3NlRVFGb3JtKCk7XG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlKHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19zdWNjZXNzXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGVycm9yTWVzc2FnZSh0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfZXJyb3JcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IHRpdGxlID0gb3duZXJJZFxuICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnRpdGxlXCIpXG4gICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLnRpdGxlXCIpO1xuICBjb25zdCBIZWFkZXIgPSBvd25lcklkID8gUmVhc3NpZ25IZWFkZXIgOiBBc3NpZ25IZWFkZXI7XG5cbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPXtUSUNLRVRfRFJBV0VSX0lEfVxuICAgICAgdGl0bGU9e3RpdGxlfVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgPlxuICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0UmVhc3NpZ25Db250YWluZXJ9PlxuICAgICAgICAgIDxIZWFkZXJcbiAgICAgICAgICAgIGluUHJvZ3Jlc3M9e2Fzc2lnbmF0aW9uSW5Qcm9ncmVzc31cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgdXNlckVtYWlsPXt1c2VyUHJvZmlsZS5lbWFpbH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgLz5cblxuICAgICAgICAgIHthc3NpZ25hdGlvbkluUHJvZ3Jlc3MgPyAoXG4gICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmVFUX1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDxBc3NpZ25PcHRpb25zXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICB1c2VyUHJvZmlsZT17dXNlclByb2ZpbGV9XG4gICAgICAgICAgICAgIGFzc2lnbk9wdGlvbj17YXNzaWduT3B0aW9ufVxuICAgICAgICAgICAgICBzZXRBc3NpZ25PcHRpb249e3NldEFzc2lnbk9wdGlvbn1cbiAgICAgICAgICAgICAgb25Bc3NpZ249e29uQXNzaWdufVxuICAgICAgICAgICAgICBvblVuQXNzaWduPXtvblVuQXNzaWdufVxuICAgICAgICAgICAgICBvbkRlbGVnYXRlPXtvbkRlbGVnYXRlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldEFzc2lnbi5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEFzc2lnbjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHtcbiAgICBlcnJvcnMsXG4gICAgdmFsdWVzLFxuICAgIHRvdWNoZWQsXG4gICAgc2V0RmllbGRUb3VjaGVkLFxuICAgIHNldEZpZWxkVmFsdWUsXG4gICAgaW5pdGlhbFZhbHVlc1xuICB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGRpc2FibGVkID0gISFpbml0aWFsVmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5wdXRWYWx1ZSA9PT0gXCJcIikge1xuICAgICAgc2V0T3B0aW9ucyh2YWx1ZSA/IFt2YWx1ZV0gOiBbXSk7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzKHN1bW1pdElkLCBpbnB1dFZhbHVlLCAocmVzdWx0cykgPT4ge1xuICAgICAgbGV0IG5ld09wdGlvbnMgPSBbXTtcblxuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbdmFsdWVdO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzdWx0cykge1xuICAgICAgICBuZXdPcHRpb25zID0gWy4uLm5ld09wdGlvbnMsIC4uLnJlc3VsdHNdO1xuICAgICAgfVxuXG4gICAgICBzZXRPcHRpb25zKG5ld09wdGlvbnMpO1xuICAgIH0pO1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH0sIFt2YWx1ZSwgaW5wdXRWYWx1ZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEF1dG9jb21wbGV0ZVxuICAgICAgbmFtZT17bmFtZX1cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBhdXRvQ29tcGxldGVcbiAgICAgIGZyZWVTb2xvXG4gICAgICBpbmNsdWRlSW5wdXRJbkxpc3RcbiAgICAgIGZpbHRlclNlbGVjdGVkT3B0aW9uc1xuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgb25CbHVyPXsoKSA9PiBzZXRGaWVsZFRvdWNoZWQobmFtZSwgdHJ1ZSwgdHJ1ZSl9XG4gICAgICBnZXRPcHRpb25MYWJlbD17KG9wdGlvbikgPT4ge1xuICAgICAgICAvLyBWYWx1ZSBzZWxlY3RlZCB3aXRoIGVudGVyLCByaWdodCBmcm9tIHRoZSBpbnB1dFxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgIHJldHVybiBvcHRpb247XG4gICAgICAgIH1cbiAgICAgICAgLy8gQWRkIFwieHh4XCIgb3B0aW9uIGNyZWF0ZWQgZHluYW1pY2FsbHlcbiAgICAgICAgaWYgKG9wdGlvbi5pbnB1dFZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbi5pbnB1dFZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlZ3VsYXIgb3B0aW9uXG4gICAgICAgIHJldHVybiBvcHRpb24ubmFtZTtcbiAgICAgIH19XG4gICAgICBvbkNoYW5nZT17KGV2ZW50LCBuZXdWYWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCB0bXBWYWx1ZSA9IG5ld1ZhbHVlPy5pbnB1dFZhbHVlIHx8IG5ld1ZhbHVlO1xuXG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi5uYW1lKTtcbiAgICAgICAgaWYgKGlucHV0VmFsdWUgIT09IFwiXCIgJiYgIWlzRXhpc3RpbmcpIHtcbiAgICAgICAgICBmaWx0ZXJlZC5wdXNoKHtcbiAgICAgICAgICAgIGlucHV0VmFsdWUsXG4gICAgICAgICAgICBuYW1lOiBgU2VsZWN0IFwiJHtpbnB1dFZhbHVlfVwiYFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpbHRlcmVkO1xuICAgICAgfX1cbiAgICAgIHJlbmRlcklucHV0PXsocGFyYW1zKSA9PiAoXG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5wYXJhbXN9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2NvbXBhbnlcIil9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgaGVscGVyVGV4dD17aGVscGVyVGV4dH1cbiAgICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICBzeD17eyBmb250U2l6ZTogXCIxZW1cIiwgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5kaXNjbGFpbWVyX2xhYmVsXCIpfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblJlZ2lzdHJhdGlvbkRpc2NsYWltZXIucHJvcFR5cGVzID0ge1xuICBkaXNjbGFpbWVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUVJDb2RlIGZyb20gXCJyZWFjdC1xci1jb2RlXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBFbWFpbE91dGxpbmVkIGFzIEVtYWlsSWNvbixcbiAgRmlsZURvd25sb2FkT3V0bGluZWQgYXMgRG93bmxvYWRJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uLy4uLy4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCB7IGdldFRpY2tldFBERiwgcmVzZW5kTm90aWZpY2F0aW9uIH0gZnJvbSBcIi4uLy4uLy4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgVFdPX0lURU0gfSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWxIZWFkZXIgPSAoeyB0aWNrZXQsIGlzVmlydHVhbFN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGRvd25sb2FkVGlja2V0UGRmID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKGdldFRpY2tldFBERih0aWNrZXQpKTtcbiAgfTtcblxuICBjb25zdCBvblNlbmRFbWFpbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNlbmROb3RpZmljYXRpb24odGlja2V0KSkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTZW50Q29uZmlybWF0aW9uKHRydWUpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFNlbnRDb25maXJtYXRpb24oZmFsc2UpO1xuICAgICAgfSwgTUlMTElTRUNfVE9fU0VDICogVFdPX0lURU0pO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICA8UVJDb2RlXG4gICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IFwiYXV0b1wiLFxuICAgICAgICAgICAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgdmFsdWU9e3RpY2tldC5xcl9jb2RlfVxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5xck5vdGV9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG5cbiAgICAgIHshaXNWaXJ0dWFsU3VtbWl0ICYmIGlzQ29tcGxldGUgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRvd25sb2FkQnRufVxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRUaWNrZXRQZGZ9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kb3dubG9hZFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5zZW5kQnRufSAke3NlbnRDb25maXJtYXRpb24gJiYgc3R5bGVzLnNlbnR9YH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e29uU2VuZEVtYWlsfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbnRDb25maXJtYXRpb259XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEVtYWlsSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgIHtzZW50Q29uZmlybWF0aW9uXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbmRcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck51bWJlcn0+XG4gICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWxIZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuXG5pbXBvcnQge1xuICBnZXRUeXBlVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuXG5pbXBvcnQgVGlja2V0T3duZXJGaWVsZHMgZnJvbSBcIi4uL1RpY2tldE93bmVyRmllbGRzXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuaW1wb3J0IHVzZVNjcm9sbFRvRXJyb3IgZnJvbSBcIi4uLy4uLy4uLy4uL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3JcIjtcbmltcG9ydCB7XG4gIHBhcnNlQW5zd2VycyxcbiAgYnVpbGRWYWxpZGF0aW9uU2NoZW1hXG59IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4uLy4uL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRGb3JtID0gKHtcbiAgdGlja2V0LFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgc3VtbWl0LFxuICBjYW5FZGl0LFxuICBvblN1Ym1pdCxcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFuc3dlcnMgPSB0aWNrZXQ/Lm93bmVyPy5leHRyYV9xdWVzdGlvbnMucmVkdWNlKChyZXMsIGFucykgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhhbnMucXVlc3Rpb24ubmFtZSwgYW5zLnF1ZXN0aW9uLmlkKTtcbiAgICByZXNbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWx1ZShhbnMudmFsdWUsIGFucy5xdWVzdGlvbi50eXBlKTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnMoXG4gICAgICB0aWNrZXQub3duZXIsXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFuc3dlcnMsXG4gICAgICB0cnVlLFxuICAgICAgdHJ1ZVxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICB0cnVlLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrKTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRpY2tldE93bmVyRmllbGRzXG4gICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICBpc0RlbGVnYXRlZD17ISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWR9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYWRkaXRpb25hbERldGFpbHN9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmFkaXRpb25hbF9kZXRhaWxzXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8RXh0cmFRdWVzdGlvbnNGaWVsZHNcbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIG9yaWdpbmFsQW5zd2Vycz17YW5zd2Vyc31cbiAgICAgICAgICAgIGFsbG93RWRpdD17Y2FuRWRpdH1cbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50ICYmIChcbiAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICBkaXNjbGFpbWVyPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudH1cbiAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIGlzRGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9kZXRhaWwuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblRpY2tldEZvcm0ucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0Rm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgVGV4dEZpZWxkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgQ29tcGFueUZpZWxkIGZyb20gXCIuLi9Db21wYW55RmllbGRcIjtcblxuY29uc3QgVGlja2V0T3duZXJGaWVsZHMgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBkaXNhYmxlZCwgaXNEZWxlZ2F0ZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciwgaW5pdGlhbFZhbHVlcyB9ID1cbiAgICBmb3JtaWs7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT17VElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWx9XG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5lbWFpbFwiKX1cbiAgICAgICAgZGlzYWJsZWRcbiAgICAgICAgdmFsdWU9e3ZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF19XG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAvPlxuICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgc3g9e3sgZm9udFdlaWdodDogNTAwLCBtYXJnaW46IFwiMTBweCAwXCIgfX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLm1hbmFnZV9mb3JcIil9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICl9XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkIHx8IGlzRGVsZWdhdGVkIHx8ICEhaW5pdGlhbFZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICBlcnJvcj17dG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSl9XG4gICAgICAgICAgICBoZWxwZXJUZXh0PXtmb3JtaWsudG91Y2hlZFtuYW1lXSAmJiBmb3JtaWsuZXJyb3JzW25hbWVdfVxuICAgICAgICAgICAgcmVxdWlyZWRcbiAgICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIDxDb21wYW55RmllbGQgZm9ybWlrPXtmb3JtaWt9IHN1bW1pdElkPXtzdW1taXRJZH0gaXNSZXF1aXJlZCAvPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pbmZvTm90ZX0+e3QoXCJ0aWNrZXRfZGV0YWlsLmluZm9fbm90ZVwiKX08L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldE93bmVyRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNEZWxlZ2F0ZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9EUkFXRVJfSUQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IHsgc2F2ZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFRpY2tldERldGFpbEhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL1RpY2tldERldGFpbEhlYWRlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0gPSB1c2VDb250ZXh0KFxuICAgIEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHRcbiAgKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgaXNVc2VyT3JkZXJPd25lciA9IHRpY2tldD8ub3JkZXI/Lm93bmVyX2lkID09PSB1c2VyUHJvZmlsZT8uaWQ7XG4gIGNvbnN0IGlzVXNlclRpY2tldE93bmVyID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJQcm9maWxlPy5lbWFpbDtcbiAgY29uc3QgY2FuRWRpdFRpY2tldERhdGEgPVxuICAgIChpc1VzZXJUaWNrZXRPd25lciB8fCBpc1VzZXJPcmRlck93bmVyKSAmJlxuICAgIHN1bW1pdC5hbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICBzdWNjZXNzTWVzc2FnZSh0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBlcnJvck1lc3NhZ2UodChcInRpY2tldF9kZXRhaWwuc2F2aW5nX2Vycm9yXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9e1RJQ0tFVF9EUkFXRVJfSUR9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldERldGFpbENvbnRhaW5lcn1cbiAgICAgIGhlYWRlckNoaWxkcmVuPXtcbiAgICAgICAgPFRpY2tldERldGFpbEhlYWRlclxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIGlzVmlydHVhbFN1bW1pdD17c3VtbWl0Py5pc192aXJ0dWFsfVxuICAgICAgICAvPlxuICAgICAgfVxuICAgID5cbiAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmF0dGVuZGVlX2luZm9ybWF0aW9uXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5UaWNrZXREZXRhaWwucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENvbnRhaW5lciwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCByZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LmZpbmQoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiXG4gICk7XG4gIGNvbnN0IHsgaXNJbmNvbXBsZXRlLCBpc1VuYXNzaWduZWQsIGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7ISFyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIERpdmlkZXIsXG4gIFRhYixcbiAgVGFicyxcbiAgdXNlTWVkaWFRdWVyeSxcbiAgdXNlVGhlbWVcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHN0b3BMb2FkaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgVEFCU1xufSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgTXlPcmRlcnNUaWNrZXRzIGZyb20gXCIuLi9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCBBc3NpZ25lZFRvTWUgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXNzaWduZWRUb01lXCI7XG5pbXBvcnQge1xuICBnZXRUaWNrZXRzQnlPcmRlcixcbiAgZ2V0VXNlck9yZGVycyxcbiAgZ2V0VXNlclRpY2tldHNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUYWJXcmFwcGVyIGZyb20gXCIuLi9UYWJXcmFwcGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFdpZGdldFRhYnMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3RhYiwgc2V0VGFiXSA9IHVzZVN0YXRlKFRBQlMuT1JERVJTKTtcbiAgY29uc3QgW3RpY2tldHNGdWxseUxvYWRlZCwgc2V0VGlja2V0c0Z1bGx5TG9hZGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgZmlsdGVyLFxuICAgIHNvcnQsXG4gICAgb3JkZXJzX3Blcl9wYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgIHRpY2tldF9wZXJfcGFnZTogdGlja2V0UGVyUGFnZSxcbiAgICB1c2VyVGlja2V0cyxcbiAgICBtZW1iZXJPcmRlcnNcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuXG4gIGNvbnN0IGhhbmRsZVRhYkNoYW5nZSA9IChldiwgbmV3VGFiKSA9PiB7XG4gICAgc2V0VGFiKG5ld1RhYik7XG4gIH07XG5cbiAgY29uc3QgZmV0Y2hBc3NpZ25lZFRpY2tldHMgPSAocGFnZSwgc2tpcExvYWRpbmcgPSBmYWxzZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJUaWNrZXRzKFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICBzb3J0XG4gICAgICAgIH0sXG4gICAgICAgIHNraXBMb2FkaW5nXG4gICAgICApXG4gICAgKTtcblxuICBjb25zdCBmZXRjaE9yZGVyVGlja2V0cyA9IChwYWdlLCBza2lwTG9hZGluZyA9IGZhbHNlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyhcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgcGVyUGFnZTogb3JkZXJzUGVyUGFnZSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgc29ydFxuICAgICAgICB9LFxuICAgICAgICBza2lwTG9hZGluZ1xuICAgICAgKVxuICAgICkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3Qgb3JkZXJUaWNrZXRzUHJvbWlzZXMgPSBkYXRhLm1hcCgob3JkZXIpID0+XG4gICAgICAgIGRpc3BhdGNoKFxuICAgICAgICAgIGdldFRpY2tldHNCeU9yZGVyKHtcbiAgICAgICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICAgICAgY3VycmVudF9wYWdlOiBGSVJTVF9QQUdFLFxuICAgICAgICAgICAgcGVyUGFnZTogdGlja2V0UGVyUGFnZSxcbiAgICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICAgIHNvcnRcbiAgICAgICAgICB9KVxuICAgICAgICApXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGwob3JkZXJUaWNrZXRzUHJvbWlzZXMpO1xuICAgIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZmV0Y2hQcm9taXNlcyA9IFtcbiAgICAgIGZldGNoQXNzaWduZWRUaWNrZXRzKEZJUlNUX1BBR0UsIHRydWUpLFxuICAgICAgZmV0Y2hPcmRlclRpY2tldHMoRklSU1RfUEFHRSwgdHJ1ZSlcbiAgICBdO1xuICAgIFByb21pc2UuYWxsKGZldGNoUHJvbWlzZXMpXG4gICAgICAudGhlbigoKSA9PiBzZXRUaWNrZXRzRnVsbHlMb2FkZWQodHJ1ZSkpXG4gICAgICAuZmluYWxseSgoKSA9PiBkaXNwYXRjaChzdG9wTG9hZGluZygpKSk7XG4gIH0sIFtmaWx0ZXIsIHNvcnRdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRzRnVsbHlMb2FkZWQpIHtcbiAgICAgIGlmIChtZW1iZXJPcmRlcnM/Lmxlbmd0aCA9PT0gMCAmJiB1c2VyVGlja2V0cz8ubGVuZ3RoID4gMCkge1xuICAgICAgICBzZXRUYWIoVEFCUy5USUNLRVRTKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRzRnVsbHlMb2FkZWRdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGFiV3JhcHBlcn0+XG4gICAgICA8VGFic1xuICAgICAgICB2YWx1ZT17dGFifVxuICAgICAgICBvbkNoYW5nZT17aGFuZGxlVGFiQ2hhbmdlfVxuICAgICAgICB2YXJpYW50PXtpc01vYmlsZSA/IFwiZnVsbFdpZHRoXCIgOiBcInN0YW5kYXJkXCJ9XG4gICAgICA+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJvcmRlcnMudGl0bGVcIil9IHZhbHVlPXtUQUJTLk9SREVSU30gLz5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5hc3NpZ25lZF90b19tZVwiKX0gdmFsdWU9e1RBQlMuVElDS0VUU30gLz5cbiAgICAgIDwvVGFicz5cbiAgICAgIDxEaXZpZGVyIC8+XG5cbiAgICAgIHt0YWIgPT09IFRBQlMuT1JERVJTICYmIChcbiAgICAgICAgPFRhYldyYXBwZXIgdGFiPXtUQUJTLk9SREVSU30gc2V0VGFiPXtzZXRUYWJ9PlxuICAgICAgICAgIDxNeU9yZGVyc1RpY2tldHMgZmV0Y2hEYXRhPXtmZXRjaE9yZGVyVGlja2V0c30gLz5cbiAgICAgICAgPC9UYWJXcmFwcGVyPlxuICAgICAgKX1cbiAgICAgIHt0YWIgPT09IFRBQlMuVElDS0VUUyAmJiAoXG4gICAgICAgIDxUYWJXcmFwcGVyIHRhYj17VEFCUy5USUNLRVRTfSBzZXRUYWI9e3NldFRhYn0+XG4gICAgICAgICAgPEFzc2lnbmVkVG9NZSBmZXRjaERhdGE9e2ZldGNoQXNzaWduZWRUaWNrZXRzfSAvPlxuICAgICAgICA8L1RhYldyYXBwZXI+XG4gICAgICApfVxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0VGFicztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsLCBjb25uZWN0IH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVzZXRGaWx0ZXIsIGNoYW5nZVNvcnQsIGNoYW5nZUZpbHRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgQ3VzdG9tVGhlbWUgZnJvbSBcIi4uL0N1c3RvbVRoZW1lXCI7XG5pbXBvcnQgTG9hZGVyIGZyb20gXCIuLi9Mb2FkZXJcIjtcbmltcG9ydCBGaWx0ZXJzIGZyb20gXCIuLi9GaWx0ZXJzXCI7XG5pbXBvcnQgV2lkZ2V0VGFicyBmcm9tIFwiLi4vV2lkZ2V0VGFic1wiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uIGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb25cIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgV2lkZ2V0V3JhcHBlciA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFttc2dEYXRhLCBzZXRNc2dEYXRhXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCB7XG4gICAgbG9hZGluZyxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVI6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IHN1Y2Nlc3NNZXNzYWdlID0gKG1zZykgPT5cbiAgICBzZXRNc2dEYXRhKHsgbWVzc2FnZTogbXNnLCBzZXZlcml0eTogXCJzdWNjZXNzXCIgfSk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IChtc2cpID0+IHNldE1zZ0RhdGEoeyBtZXNzYWdlOiBtc2csIHNldmVyaXR5OiBcImVycm9yXCIgfSk7XG4gIGNvbnN0IG1lc3NhZ2VDb250ZXh0ID0gdXNlTWVtbygoKSA9PiAoeyBzdWNjZXNzTWVzc2FnZSwgZXJyb3JNZXNzYWdlIH0pLCBbXSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldEZpbHRlcigpKTtcbiAgfTtcblxuICBjb25zdCBvbkZpbHRlciA9IChmaWx0ZXJWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZUZpbHRlcihmaWx0ZXJWYWx1ZSkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU29ydCA9IChzb3J0VmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VTb3J0KHNvcnRWYWx1ZSkpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEN1c3RvbVRoZW1lPlxuICAgICAgPExvYWRlciBvcGVuPXtsb2FkaW5nfSAvPlxuICAgICAgPEN1c3RvbU5vdGlmaWNhdGlvblxuICAgICAgICBvcGVuPXshIW1zZ0RhdGF9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1zZ0RhdGEobnVsbCl9XG4gICAgICAgIG1lc3NhZ2U9e21zZ0RhdGE/Lm1lc3NhZ2V9XG4gICAgICAgIHNldmVyaXR5PXttc2dEYXRhPy5zZXZlcml0eX1cbiAgICAgIC8+XG4gICAgICA8RmlsdGVyc1xuICAgICAgICBvbkZpbHRlcj17b25GaWx0ZXJ9XG4gICAgICAgIG9uU29ydD17b25Tb3J0fVxuICAgICAgICBvblNlYXJjaD17b25GaWx0ZXJ9XG4gICAgICAgIG9uUmVzZXQ9e29uUmVzZXR9XG4gICAgICAvPlxuICAgICAgPEJveCBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fT5cbiAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldHNUaXRsZVRleHR9PlxuICAgICAgICAgIHtmaWx0ZXJWYWx1ZXNcbiAgICAgICAgICAgID8gdChcImxhYmVscy5zZWFyY2hfcmVzdWx0c1wiLCB7IGZpbHRlcjogZmlsdGVyVmFsdWVzIH0pXG4gICAgICAgICAgICA6IHQoXCJsYWJlbHMudGlja2V0c1wiKX1cbiAgICAgICAgPC9oMz5cbiAgICAgIDwvQm94PlxuICAgICAgPEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e21lc3NhZ2VDb250ZXh0fT5cbiAgICAgICAgPFdpZGdldFRhYnMgLz5cbiAgICAgIDwvQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dC5Qcm92aWRlcj5cbiAgICA8L0N1c3RvbVRoZW1lPlxuICApO1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXJcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKFdpZGdldFdyYXBwZXIpO1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuXG5jb25zdCB1c2VHZXRUaWNrZXQgPSAodGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bikgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocnVuKSB7XG4gICAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG93bmVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0RXh0cmFRdWVzdGlvbnMob3duZXJJZCkpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW5dKTtcblxuICBjb25zdCB7IGV4dHJhUXVlc3Rpb25zLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGVcbiAgKTtcblxuICByZXR1cm4geyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VHZXRUaWNrZXQ7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IFRJQ0tFVF9EUkFXRVJfSUQgfSBmcm9tIFwiLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrKSA9PiB7XG4gIGNvbnN0IHsgZXJyb3JzLCBpc1ZhbGlkLCBpc1N1Ym1pdHRpbmcgfSA9IGZvcm1paztcbiAgY29uc3QgZXJyb3JBcnJheSA9IE9iamVjdC5rZXlzKGVycm9ycyk7XG4gIGNvbnN0IGVycm9yQ291bnQgPSBlcnJvckFycmF5Lmxlbmd0aDtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1ZhbGlkIHx8IGVycm9yQ291bnQgPT09IDApIHJldHVybjtcblxuICAgIC8vIHNvcnQgZWxlbWVudHMgYnkgcG9zaXRpb25cbiAgICBjb25zdCBlbGVtZW50c1NvcnRlZCA9IGVycm9yQXJyYXlcbiAgICAgIC5yZWR1Y2UoKHJlc3VsdCwgZXJyb3IpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoYFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChUSUNLRVRfRFJBV0VSX0lEKVxuICAgICAgLnF1ZXJ5U2VsZWN0b3IoXCIuTXVpRHJhd2VyLXBhcGVyXCIpO1xuICAgIGNvbnN0IHRhcmdldCA9IGVsZW1lbnRzU29ydGVkWzBdO1xuXG4gICAgaWYgKGNvbnRhaW5lcj8uY29udGFpbnModGFyZ2V0LmVsZW1lbnQpKSB7XG4gICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuXG4gICAgICAvLyBDYWxjdWxhdGUgdGhlIG9mZnNldCBvZiB0aGUgdGFyZ2V0IGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIGNvbnRhaW5lclxuICAgICAgY29uc3QgZWxlbU9mZmVzdCA9IDEwMDtcbiAgICAgIGNvbnN0IGFuaW1hdGlvbkR1cmF0aW9uID0gNTAwO1xuICAgICAgY29uc3Qgc2Nyb2xsVG9wID1cbiAgICAgICAgdGFyZ2V0LnRvcCAtIGNvbnRhaW5lclJlY3QudG9wICsgY29udGFpbmVyLnNjcm9sbFRvcCAtIGVsZW1PZmZlc3Q7XG5cbiAgICAgIC8vIFNjcm9sbCB0aGUgY29udGFpbmVyIHRvIHRoZSB0YXJnZXQgZWxlbWVudCdzIHBvc2l0aW9uXG4gICAgICBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHNjcm9sbFRvcCwgYW5pbWF0aW9uRHVyYXRpb24pOyAvLyA1MDBtcyBkdXJhdGlvblxuICAgIH1cbiAgfSwgW2lzU3VibWl0dGluZ10pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlU2Nyb2xsVG9FcnJvcjtcbiIsImltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJDb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJJbmNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiQ2FuY2VsbGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlVuYXNzaWduZWRcIjtcblxuZXhwb3J0IGNvbnN0IHVzZVRpY2tldERldGFpbHMgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IGdldFN0YXR1cyA9ICgpID0+IHtcbiAgICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuICAgIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcbiAgICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG4gICAgcmV0dXJuIHRpY2tldC5vd25lci5zdGF0dXM7XG4gIH07XG5cbiAgaWYgKCF0aWNrZXQpIHJldHVybiB7fTtcblxuICBjb25zdCBzdGF0dXMgPSBnZXRTdGF0dXMoKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlICYmIHN0YXR1cyAhPT0gU1RBVFVTX0NBTkNFTExFRDtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCk7XG4gIGNvbnN0IGFsbG93c0RlbGVnYXRlID1cbiAgICB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICB0aWNrZXQ/LnByb21vX2NvZGU/LmFsbG93c190b19kZWxlZ2F0ZTtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9XG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgIHRpY2tldC50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX3JlYXNzaWduICYmXG4gICAgKCF0aWNrZXQucHJvbW9fY29kZSB8fCB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX3JlYXNzaWduKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGNhblJlYXNzaWduXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgU1RBUlRfTE9BRElORyxcbiAgU1RPUF9MT0FESU5HLFxuICBSRVNFVF9MT0FESU5HXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVQsXG4gIFJFU0VUX0FQSV9FUlJPUixcbiAgU0VUX0FQSV9FUlJPUixcbiAgUkVTRVRfVElDS0VULFxuICBDSEFOR0VfRklMVEVSLFxuICBDSEFOR0VfU09SVCxcbiAgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLFxuICBGSUxURVJfVkFSX09SREVSX05VTUJFUixcbiAgRklMVEVSX1ZBUl9EQVRFLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFLFxuICBGSUxURVJfVkFSX0ZSRUVfUEFJRCxcbiAgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgREVMRUdBVEVfVElDS0VULFxuICBSRU1PVkVfVElDS0VUX0FUVEVOREVFXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UsIFRBQlMgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMsIGhhc0xvYWRlZEFsbERhdGEgfSBmcm9tIFwiLi91dGlsc1wiO1xuaW1wb3J0IHsgdXBkYXRlVGlja2V0Q29sbGVjdGlvbiB9IGZyb20gXCIuL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IERFRkFVTFRfRklMVEVSX1NUQVRFID0ge1xuICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogW10sXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogW10sXG4gIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IFwiXCIsXG4gIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IFwiXCIsXG4gIFtGSUxURVJfVkFSX1BST01PQ09ERV06IFwiXCIsXG4gIFtGSUxURVJfVkFSX09SREVSX05VTUJFUl06IFwiXCIsXG4gIFtGSUxURVJfVkFSX0RBVEVdOiBudWxsXG59O1xuXG5jb25zdCBERUZBVUxUX1NUQVRFID0ge1xuICBzdW1taXQ6IG51bGwsXG4gIHVzZXI6IHt9LFxuICB3aWRnZXRMb2FkaW5nOiBmYWxzZSxcbiAgbWVtYmVyT3JkZXJzOiBbXSxcbiAgdXNlclRpY2tldHM6IFtdLFxuICBleHRyYVF1ZXN0aW9uczogW10sXG4gIGN1cnJlbnRUaWNrZXQ6IG51bGwsXG4gIGVycm9yczoge30sXG4gIGxvYWRpbmc6IGZhbHNlLFxuICBjdXJyZW50X3RhYjogVEFCUy5PUkRFUlMsXG4gIHNvcnQ6IHt9LFxuICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICBhY3RpdmVGaWx0ZXJzQ291bnQ6IDAsXG4gIG9yZGVyc19jdXJyZW50X3BhZ2U6IDAsXG4gIG9yZGVyc19sYXN0X3BhZ2U6IDAsXG4gIG9yZGVyc19wZXJfcGFnZTogNSxcbiAgb3JkZXJzX3RvdGFsOiAwLFxuICB0aWNrZXRfY3VycmVudF9wYWdlOiAwLFxuICB0aWNrZXRfbGFzdF9wYWdlOiAwLFxuICB0aWNrZXRfcGVyX3BhZ2U6IDUsXG4gIHRpY2tldF90b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiAwLFxuICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiAwLFxuICBhcGlFcnJvcjogbnVsbFxufTtcblxuY29uc3QgV2lkZ2V0UmVkdWNlciA9IChzdGF0ZSA9IERFRkFVTFRfU1RBVEUsIHsgdHlwZSwgcGF5bG9hZCB9ID0ge30pID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBMT0dPVVRfVVNFUjpcbiAgICBjYXNlIFJFU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIERFRkFVTFRfU1RBVEU7XG4gICAgY2FzZSBTVEFSVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IHRydWUgfTtcbiAgICBjYXNlIFNUT1BfTE9BRElORzpcbiAgICBjYXNlIFJFU0VUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogZmFsc2UgfTtcbiAgICBjYXNlIFJFU0VUX0FQSV9FUlJPUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogbnVsbCB9O1xuICAgIGNhc2UgUkVTRVRfRklMVEVSOlxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gICAgICAgIGFjdGl2ZUZpbHRlcnNDb3VudDogMCxcbiAgICAgICAgc29ydDoge30sXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IDEsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IDEsXG4gICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgIH07XG4gICAgY2FzZSBTRVRfU1RBVEU6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4ucGF5bG9hZCB9O1xuICAgIGNhc2UgU0VUX0FQSV9FUlJPUjoge1xuICAgICAgY29uc3QgeyB0aXRsZSwgaHRtbDogYm9keSB9ID0gcGF5bG9hZDtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBhcGlFcnJvcjogeyB0aXRsZSwgYm9keSB9IH07XG4gICAgfVxuICAgIGNhc2UgU0VUX1VTRVI6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgdXNlcjogcGF5bG9hZCB9O1xuICAgIGNhc2UgQ0hBTkdFX0ZJTFRFUjoge1xuICAgICAgY29uc3QgbmV3RmlsdGVycyA9IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH07XG4gICAgICBjb25zdCBuZXdBY3RpdmVDb3VudCA9IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMobmV3RmlsdGVycyk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiB7IC4uLnN0YXRlLmZpbHRlciwgLi4ucGF5bG9hZCB9LFxuICAgICAgICBhY3RpdmVGaWx0ZXJzQ291bnQ6IG5ld0FjdGl2ZUNvdW50XG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIENIQU5HRV9TT1JUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgc29ydDogeyAuLi5wYXlsb2FkIH0gfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIHN0YXRlLm1lbWJlck9yZGVycywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IG1lbWJlck9yZGVycyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUubWVtYmVyT3JkZXJzLCAuLi5kYXRhXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVycyxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBpZiAoaGFzTG9hZGVkQWxsRGF0YShjdXJyZW50X3BhZ2UsIHN0YXRlLnVzZXJUaWNrZXRzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgdXNlclRpY2tldHMgPVxuICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnN0YXRlLnVzZXJUaWNrZXRzLCAuLi5kYXRhXTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHVzZXJUaWNrZXRzLFxuICAgICAgICB1c2VyX3RpY2tldHNfdG90YWw6IHRvdGFsLFxuICAgICAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfVElDS0VUU19CWV9PUkRFUjoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBmb3JtZXJPcmRlciA9IG1lbWJlck9yZGVycy5maW5kKChvKSA9PiBvLmlkID09PSBkYXRhWzBdPy5vcmRlcl9pZCk7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PiB7XG4gICAgICAgIGlmIChtby5pZCAhPT0gZGF0YVswXT8ub3JkZXJfaWQpIHJldHVybiBtbztcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFXG4gICAgICAgICAgICA/IGRhdGFcbiAgICAgICAgICAgIDogWy4uLmZvcm1lck9yZGVyLm1lbWJlclRpY2tldHMsIC4uLmRhdGFdO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLm1vLFxuICAgICAgICAgIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMsXG4gICAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgICB0aWNrZXRzX3BhZ2VfbGFzdDogbGFzdF9wYWdlLFxuICAgICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICAgIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbmV3T3JkZXJzXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQ6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPSBwYXlsb2FkO1xuICAgICAgY29uc3Qgb3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZChcbiAgICAgICAgKG8pID0+IG8uaWQgPT09IHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWRbMF0/Lm9yZGVyX2lkXG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cy5tYXAoXG4gICAgICAgICh0aWNrZXQpID0+XG4gICAgICAgICAgdGlja2V0c1JlZnVuZFJlcXVlc3RlZC5maW5kKCh0cnIpID0+IHRyci5pZCA9PT0gdGlja2V0LmlkKSB8fCB0aWNrZXRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLm9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOiB1cGRhdGVkVGlja2V0c1xuICAgICAgfTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG1lbWJlck9yZGVycy5tYXAoKG1vKSA9PlxuICAgICAgICAgIG1vLmlkID09PSB1cGRhdGVkT3JkZXIuaWQgPyB1cGRhdGVkT3JkZXIgOiBtb1xuICAgICAgICApXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIFJFU0VUX1RJQ0tFVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IG51bGwgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXQgfTtcbiAgICB9XG4gICAgY2FzZSBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUzoge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGV4dHJhUXVlc3Rpb25zOiBkYXRhIH07XG4gICAgfVxuICAgIGNhc2UgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRTpcbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgICBvcmRlci5tZW1iZXJUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldERhdGFcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBuZXdVc2VyVGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgIHN0YXRlLnVzZXJUaWNrZXRzLFxuICAgICAgICB0aWNrZXREYXRhXG4gICAgICApO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMsIHVzZXJUaWNrZXRzOiBuZXdVc2VyVGlja2V0cyB9O1xuICAgIH1cbiAgICBjYXNlIERFTEVHQVRFX1RJQ0tFVDpcbiAgICBjYXNlIEFTU0lHTl9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgICAgb3JkZXIubWVtYmVyVGlja2V0cyxcbiAgICAgICAgICB0aWNrZXREYXRhXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV3VXNlclRpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICBzdGF0ZS51c2VyVGlja2V0cyxcbiAgICAgICAgdGlja2V0RGF0YVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGN1cnJlbnRUaWNrZXQ6IHRpY2tldERhdGEsXG4gICAgICAgIG1lbWJlck9yZGVyczogbmV3T3JkZXJzLFxuICAgICAgICB1c2VyVGlja2V0czogbmV3VXNlclRpY2tldHNcbiAgICAgIH07XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFJlZHVjZXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb25maWd1cmVTdG9yZSB9IGZyb20gXCJAcmVkdXhqcy90b29sa2l0XCI7XG5pbXBvcnQge1xuICBwZXJzaXN0U3RvcmUsXG4gIHBlcnNpc3RSZWR1Y2VyLFxuICBGTFVTSCxcbiAgUkVIWURSQVRFLFxuICBQQVVTRSxcbiAgUEVSU0lTVCxcbiAgUFVSR0UsXG4gIFJFR0lTVEVSXG59IGZyb20gXCJyZWR1eC1wZXJzaXN0XCI7XG5pbXBvcnQgc3RvcmFnZSBmcm9tIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiO1xuaW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSBcInJlZHV4XCI7XG5pbXBvcnQgV2lkZ2V0UmVkdWNlciBmcm9tIFwiLi9yZWR1Y2VyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9ICh7XG4gIGNsaWVudElkLFxuICBsb2dpblVybCxcbiAgc3VtbWl0LFxuICBhcGlCYXNlVXJsLFxuICB1cGRhdGVQcm9maWxlXG59KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGltbXV0YWJsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgc2VyaWFsaXphYmxlQ2hlY2s6IHtcbiAgICAgICAgICBpZ25vcmVkQWN0aW9uczogW0ZMVVNILCBSRUhZRFJBVEUsIFBBVVNFLCBQRVJTSVNULCBQVVJHRSwgUkVHSVNURVJdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0U3RvcmUgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRTdG9yZShjb25maWcpLCBbXSk7XG4gIGNvbnN0IHBlcnNpc3RvciA9IHVzZU1lbW8oKCkgPT4gcGVyc2lzdFN0b3JlKHN0b3JlKSwgW3N0b3JlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBwZXJzaXN0b3JcbiAgfTtcbn07XG4iLCJpbXBvcnQge1xuICBpbml0TG9nT3V0LFxuICBnZXRBY2Nlc3NUb2tlblxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvcmVhY3RcIjtcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG5jb25zdCBnZXRBY2Nlc3NUb2tlbk1vY2sgPSAoKSA9PiB7XG4gIHRocm93IG5ldyBFcnJvcihcIkFjY2VzcyB0b2tlbiBlcnJvclwiKTtcbiAgLy8gcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgPSBhc3luYyAoKSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IGdldEFjY2Vzc1Rva2VuKCkuY2F0Y2goKGUpID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgICBpbml0TG9nT3V0KCk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGF1dGhQcm9taXNlUmVqZWN0ID0gYXN5bmMgKCkgPT5cbiAgUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKFwiQXV0aCBUb2tlbiBlcnJvclwiKSk7XG4iLCJleHBvcnQgY29uc3QgTEFTVF9IT1VSX09GXzI0X0hPVVIgPSAyMztcbmV4cG9ydCBjb25zdCBMQVNUX01JTlVURV9PRl9IT1VSID0gNTk7XG5leHBvcnQgY29uc3QgT05FX1BBR0VfTkVYVCA9IDE7XG5leHBvcnQgY29uc3QgTUlMTElTRUNfVE9fU0VDID0gMTAwMDtcbmV4cG9ydCBjb25zdCBPTkVfREFZID0gMTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0lURU1TX1BFUl9QQUdFID0gNTtcbmV4cG9ydCBjb25zdCBGSVJTVF9QQUdFID0gMTtcbmV4cG9ydCBjb25zdCBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgPSA1O1xuZXhwb3J0IGNvbnN0IFNURVBfT05FID0gMTtcbmV4cG9ydCBjb25zdCBTVEVQX1RXTyA9IDI7XG5leHBvcnQgY29uc3QgU1RFUF9USFJFRSA9IDM7XG5leHBvcnQgY29uc3QgTUlOX1JFUVVJUkVEID0gMTtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcblxuZXhwb3J0IGNvbnN0IFRBQlMgPSB7XG4gIE9SREVSUzogXCJPUkRFUlNcIixcbiAgVElDS0VUUzogXCJUSUNLRVRTXCJcbn07XG5cbmV4cG9ydCBjb25zdCBPTkVfUkVUUlkgPSAxO1xuXG5leHBvcnQgY29uc3QgRklMVEVSX0FDVElPTiA9IHtcbiAgT1JERVJTOiBcIk9SREVSU1wiLFxuICBFWFRFUk5BTF9USUNLRVRTOiBcIkVYVEVSTkFMX1RJQ0tFVFNcIixcbiAgVElDS0VUU19CWV9PUkRFUlM6IFwiVElDS0VUU19CWV9PUkRFUlNcIlxufTtcblxuZXhwb3J0IGNvbnN0IFRJQ0tFVF9EUkFXRVJfSUQgPSBcInRpY2tldERyYXdlclwiO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQyxcbiAgRklSU1RfUEFHRVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQpIHJldHVybiB7fTtcbiAgY29uc3QgdGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzO1xuICBpZiAoIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCBhbW91bnQsIHJhd19hbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBjb25zdCB0YXhlc1N1bW1hcnkgPSBbXTtcbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgb3JkZXI/LmFwcGxpZWRfdGF4ZXM/LmZvckVhY2goKHRheCkgPT4ge1xuICAgIGNvbnN0IGZvcm1hdHRlZFRheCA9IHtcbiAgICAgIC4uLnRheCxcbiAgICAgIGFtb3VudDogZm9ybWF0Q3VycmVuY3kodGF4LmFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgfTtcbiAgICB0YXhlc1N1bW1hcnkucHVzaChmb3JtYXR0ZWRUYXgpO1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3Qgc3ViVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyYXdfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IGFtb3VudFRvdGFsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZGVyLCBcImFtb3VudFwiKVxuICAgID8gZm9ybWF0Q3VycmVuY3koYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICA6IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICByZXR1cm4ge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgc3ViVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeSxcbiAgICB0YXhlc1N1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIHJldHVybiByZXM7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQWN0aXZlRmlsdGVycyA9IChmaWx0ZXJzKSA9PiB7XG4gIGxldCBjb3VudCA9IDA7XG4gIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY291bnQgKz0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgY291bnQrKztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiAmJiB2YWx1ZSA+IDApIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvdW50O1xufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfREFZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRQYXN0ID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCByZWFzc2lnbl9kYXRlID1cbiAgICBzdW1taXQ/LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgICAgOiBzdW1taXQuZW5kX2RhdGU7XG5cbiAgcmV0dXJuIG5vdyA+IHJlYXNzaWduX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRTdGFydGVkID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnN0YXJ0X2RhdGUgPCBub3c7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0RGF5c0RpZmYgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5Py5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIHJldHVybiB7XG4gICAgc3RhcnREYXksXG4gICAgZW5kRGF5LFxuICAgIGRheXNcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgc3RhcnREYXksIGVuZERheSwgZGF5cyB9ID0gZ2V0U3VtbWl0RGF5c0RpZmYoc3VtbWl0KTtcbiAgaWYgKCFzdGFydERheSB8fCAhZW5kRGF5KSByZXR1cm4gbnVsbDtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRMb2NhdGlvbiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gc3VtbWl0LmxvY2F0aW9ucz8uZmluZChcbiAgICAobCkgPT4gbC5jbGFzc19uYW1lID09PSBcIlN1bW1pdFZlbnVlXCIgJiYgbC5pc19tYWluID09PSB0cnVlXG4gICk7XG5cbiAgaWYgKCFsb2NhdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIGAke2xvY2F0aW9uLmNpdHl9LCAke2xvY2F0aW9uLmNvdW50cnl9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRSZWFzc2lnbkRhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTdW1taXREZXRhaWxzID0gKHsgc3VtbWl0IH0pID0+IHtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG5cbiAgaWYgKCFzdW1taXQpIHJldHVybiB7fTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldFN1bW1pdExvY2F0aW9uKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUgPSBtb21lbnQudHooXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lID0gZ2V0U3VtbWl0RGF5c0RpZmYoXG4gICAgbm93LFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy5uYW1lXG4gICk7XG5cbiAgY29uc3QgaXNQYXN0ID0gY2hlY2tTdW1taXRQYXN0KHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNTdGFydGVkID0gY2hlY2tTdW1taXRTdGFydGVkKHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBzdW1taXQ/Lm5hbWUsXG4gICAgbm93LFxuICAgIGxvY2F0aW9uLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lLFxuICAgIGlzUGFzdCxcbiAgICBpc1N0YXJ0ZWQsXG4gICAgaXNSZWFzc2lnbmFibGVcbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7XG4gIE1JTl9SRVFVSVJFRCxcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICBpZiAoaXNSZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbihNSU5fUkVRVUlSRUQsIGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoaXNSZXF1aXJlZCkge1xuICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbmNvbnN0IHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIgPSAoXG4gIHEsXG4gIGFuc3dlcnMsXG4gIGFuc3dlcixcbiAgaW5pdGlhbFZhbHVlcyxcbiAgb25seVJlbGV2YW50XG4pID0+IHtcbiAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgY29uc3QgeyBzdWJfcXVlc3Rpb24sIGFuc3dlcl92YWx1ZXMgfSA9IHJ1bGU7XG4gICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViX3F1ZXN0aW9uLm5hbWUsIHN1Yl9xdWVzdGlvbi5pZCk7XG4gICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUoc3ViX3F1ZXN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcGFyc2VTdWJRdWVzdGlvbkFuc3dlcihcbiAgICAgICAgc3ViX3F1ZXN0aW9uLFxuICAgICAgICBhbnN3ZXJzLFxuICAgICAgICBzdWJBbnN3ZXIsXG4gICAgICAgIGluaXRpYWxWYWx1ZXMsXG4gICAgICAgIG9ubHlSZWxldmFudFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQW5zd2VycyA9IChcbiAgb3duZXIsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbnN3ZXJzLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBpbmNsdWRlRGlzY2xhaW1lcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdIHx8IG93bmVyLmxhc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55O1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEaXNjbGFpbWVyKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZDtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzW3F1ZXN0aW9uU2x1Z107XG4gICAgaW5pdGlhbFZhbHVlc1txdWVzdGlvblNsdWddID0gYW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocSk7XG5cbiAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKHEsIGFuc3dlcnMsIGFuc3dlciwgaW5pdGlhbFZhbHVlcywgb25seVJlbGV2YW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5jb25zdCBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSA9IChxdWVzdGlvblNsdWcsIHJ1bGUsIHNjaGVtYSkgPT4ge1xuICBjb25zdCBzdWJRdWVzdGlvbiA9IHJ1bGUuc3ViX3F1ZXN0aW9uO1xuICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViUXVlc3Rpb24ubmFtZSwgc3ViUXVlc3Rpb24uaWQpO1xuXG4gIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgIGZhbHNlXG4gIClcbiAgICAubnVsbGFibGUoKVxuICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICBjb25zdCBhbnNWYWx1ZU1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goXG4gICAgICAgICAgcXVlc3Rpb25BbnMsXG4gICAgICAgICAgcnVsZS5hbnN3ZXJfdmFsdWVzXG4gICAgICAgICk7XG4gICAgICAgIC8vIGNoZWNrIGlmIHF1ZXN0aW9uIGlzIHZpc2libGUgdG8gYWRkIHZhbGlkYXRpb25cbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICBgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFuc1ZhbHVlTWF0Y2ggJiYgaXNWaXNpYmxlO1xuICAgICAgfSxcbiAgICAgIHRoZW46IChzY2gpID0+IHtcbiAgICAgICAgaWYgKHN1YlF1ZXN0aW9uLnR5cGUgPT09IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QpIHtcbiAgICAgICAgICByZXR1cm4gc2NoXG4gICAgICAgICAgICAubWluKE1JTl9SRVFVSVJFRCwgaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSlcbiAgICAgICAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NoLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIGlmIChzdWJRdWVzdGlvbi5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBzdWJRdWVzdGlvbi5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgoc3ViUnVsZSkgPT4ge1xuICAgICAgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEoc3ViUXVlc3Rpb25TbHVnLCBzdWJSdWxlLCBzY2hlbWEpO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgIC5lbWFpbChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX2ZpZWxkXCIpKVxuICAgICAgICA6IHl1cC5zdHJpbmcoKS5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHsgaWQsIG5hbWUsIHR5cGUsIG1hbmRhdG9yeSwgc3ViX3F1ZXN0aW9uX3J1bGVzIH0gPSBxO1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhuYW1lLCBpZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbih0eXBlLCBuYW1lLCBtYW5kYXRvcnkpO1xuXG4gICAgaWYgKHN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEocXVlc3Rpb25TbHVnLCBydWxlLCBzY2hlbWEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24gPSAodGlja2V0cywgdGlja2V0KSA9PlxuICB0aWNrZXRzLm1hcCgodCkgPT4ge1xuICAgIGNvbnN0IHRtcFRpY2tldCA9IHsgLi4udCB9O1xuICAgIC8vIHVwZGF0ZSBhdHRlbmRlZVxuICAgIGlmIChcbiAgICAgIHQub3duZXI/LmlkID09PSB0aWNrZXQub3duZXI/LmlkICYmXG4gICAgICB0Lm93bmVyPy5zdGF0dXMgIT09IHRpY2tldC5vd25lcj8uc3RhdHVzXG4gICAgKSB7XG4gICAgICB0bXBUaWNrZXQub3duZXIgPSB0aWNrZXQub3duZXI7XG4gICAgfVxuICAgIHJldHVybiB0LmlkID09PSB0aWNrZXQuaWQgPyB0aWNrZXQgOiB0bXBUaWNrZXQ7XG4gIH0pO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNvcHlJY29uX19fbEkzZVFcIjtcbnZhciBfMiA9IFwicmV2ZXJzZWRfX196SnptRFwiO1xudmFyIF8zID0gXCJ0cnVuY2F0ZWRfX19qV1NuVVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fbVZQaVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY29weUljb25cIiwgXzIgYXMgXCJyZXZlcnNlZFwiLCBfMyBhcyBcInRydW5jYXRlZFwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX214RUtXXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX080c1NzXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX0YzbnVLXCI7XG52YXIgXzQgPSBcImNsZWFuQnV0dG9uX19fcXFEdlVcIjtcbnZhciBfNSA9IFwiY29udGFpbmVyX19fUWVRWV9cIjtcbnZhciBfNiA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX1o0Mm13XCI7XG52YXIgXzcgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1RaN2tKXCI7XG52YXIgXzggPSBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyX19fa1VuVzlcIjtcbnZhciBfOSA9IFwiZmlsdGVyQ29udGFpbmVyX19fcnJxcDlcIjtcbnZhciBfYSA9IFwiZmlsdGVyRGF0ZUxhYmVsX19fSmdiY3NcIjtcbnZhciBfYiA9IFwiZmlsdGVySWNvbl9fX2lpT3pvXCI7XG52YXIgX2MgPSBcImZpbHRlckxhYmVsX19fc2taUDdcIjtcbnZhciBfZCA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX0lEcmxTXCI7XG52YXIgX2UgPSBcImZpbHRlck51bUFjdGl2ZV9fX2ttRUVLXCI7XG52YXIgX2YgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19uaE5Kc1wiO1xudmFyIF8xMCA9IFwibGFiZWxfX19MQW1lX1wiO1xudmFyIF8xMSA9IFwic2hvd0ZpbHRlckxpc3RfX19JVzR4R1wiO1xudmFyIF8xMiA9IFwic29ydENvbnRhaW5lcl9fX3NiNUJkXCI7XG52YXIgXzEzID0gXCJzb3J0SWNvbl9fX2NfWFppXCI7XG52YXIgXzE0ID0gXCJzb3J0TGFiZWxfX19kWGlNeVwiO1xudmFyIF8xNSA9IFwic29ydExpc3RDb250YWluZXJfX19QcDJYZ1wiO1xudmFyIF8xNiA9IFwidGl0bGVXcmFwcGVyX19fUDZtUHVcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNsZWFuQnV0dG9uXCIsIF81IGFzIFwiY29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNyBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfOCBhcyBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyXCIsIF85IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF9hIGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF9iIGFzIFwiZmlsdGVySWNvblwiLCBfYyBhcyBcImZpbHRlckxhYmVsXCIsIF9kIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfZSBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZiBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgXzEwIGFzIFwibGFiZWxcIiwgXzExIGFzIFwic2hvd0ZpbHRlckxpc3RcIiwgXzEyIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTMgYXMgXCJzb3J0SWNvblwiLCBfMTQgYXMgXCJzb3J0TGFiZWxcIiwgXzE1IGFzIFwic29ydExpc3RDb250YWluZXJcIiwgXzE2IGFzIFwidGl0bGVXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNhbmNlbEJ0bl9fX3FEZXhoXCI7XG52YXIgXzIgPSBcImZvb3Rlcl9fX1NONzB5XCI7XG52YXIgXzMgPSBcInNhdmVCdG5fX19uYlU2Y1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjYW5jZWxCdG5cIiwgXzIgYXMgXCJmb290ZXJcIiwgXzMgYXMgXCJzYXZlQnRuXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm15T3JkZXJzV3JhcHBlcl9fX0hKbXlzXCI7XG52YXIgXzIgPSBcIm5vT3JkZXJzRm91bmRfX19EUndnb1wiO1xudmFyIF8zID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fdFBUbVlcIjtcbmV4cG9ydCB7IF8xIGFzIFwibXlPcmRlcnNXcmFwcGVyXCIsIF8yIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMyBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYm9keV9fX0FXZGlMXCI7XG52YXIgXzIgPSBcImljb25XcmFwcGVyX19fbXpldktcIjtcbnZhciBfMyA9IFwidGl0bGVfX19NMjQybVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUXN3Q1BcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYm9keVwiLCBfMiBhcyBcImljb25XcmFwcGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImFzc2lnblRvTWVUZXh0X19fWlBhZXhcIjtcbnZhciBfMyA9IFwiYXNzaWduZWRCeVRleHRfX19iTlo3elwiO1xudmFyIF80ID0gXCJhc3NpZ25lZFRvTWVEZXNfX19HakZrVlwiO1xudmFyIF81ID0gXCJhc3NpZ25lZFRvTWVXcmFwcGVyX19fVXhjMnlcIjtcbnZhciBfNiA9IFwiYmZGZWF0dXJlX19fZUVpbkVcIjtcbnZhciBfNyA9IFwiYmZGZWF0dXJlV3JhcHBlcl9fX3FXazlWXCI7XG52YXIgXzggPSBcImNoZWNrYm94X19fWFpKcGJcIjtcbnZhciBfOSA9IFwiZGlzYWJsZWRSZWZ1bmRfX19TZmZsN1wiO1xudmFyIF9hID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF9iID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgX2MgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfZCA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfZSA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfZiA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfMTAgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfMTEgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF8xMiA9IFwicmVmdW5kTW9kYWxfX19FcWdQRlwiO1xudmFyIF8xMyA9IFwic2VsZWN0ZWRfX19IV0dOY1wiO1xudmFyIF8xNCA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTYgPSBcInRpY2tldEZvb3Rlcl9fX2ozYmRpXCI7XG52YXIgXzE3ID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTggPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMTkgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xYSA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzFiID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMWMgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYXNzaWduVG9NZVRleHRcIiwgXzMgYXMgXCJhc3NpZ25lZEJ5VGV4dFwiLCBfNCBhcyBcImFzc2lnbmVkVG9NZURlc1wiLCBfNSBhcyBcImFzc2lnbmVkVG9NZVdyYXBwZXJcIiwgXzYgYXMgXCJiZkZlYXR1cmVcIiwgXzcgYXMgXCJiZkZlYXR1cmVXcmFwcGVyXCIsIF84IGFzIFwiY2hlY2tib3hcIiwgXzkgYXMgXCJkaXNhYmxlZFJlZnVuZFwiLCBfYSBhcyBcImRpc3BsYXlfbm9uZVwiLCBfYiBhcyBcImxhYmVsXCIsIF9jIGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgX2QgYXMgXCJvcmRlclRpY2tldEluZm9cIiwgX2UgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgX2YgYXMgXCJvcmRlcldyYXBwZXJcIiwgXzEwIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgXzExIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfMTIgYXMgXCJyZWZ1bmRNb2RhbFwiLCBfMTMgYXMgXCJzZWxlY3RlZFwiLCBfMTQgYXMgXCJ0YWJCdXR0b25zXCIsIF8xNSBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzE2IGFzIFwidGlja2V0Rm9vdGVyXCIsIF8xNyBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzE4IGFzIFwidGlja2V0Tm9cIiwgXzE5IGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMWEgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xYiBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzFjIGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiQ1RBQnV0dG9uV3JhcHBlcl9fX0tncTZnXCI7XG52YXIgXzIgPSBcImFjdGlvbkJ1dHRvbnNfX191N21QU1wiO1xudmFyIF8zID0gXCJhcHByb3ZlZF9fX3N4RUpXXCI7XG52YXIgXzQgPSBcImJhZGdlRmVhdHVyZV9fX3RMaEVwXCI7XG52YXIgXzUgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19fOUdiRFwiO1xudmFyIF82ID0gXCJidXR0b25QaWxsX19fTGVzYXpcIjtcbnZhciBfNyA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfOCA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF85ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfYSA9IFwicGVuZGluZ19fX2FFYld3XCI7XG52YXIgX2IgPSBcInJlZnVuZERldGFpbF9fX2NRMjhWXCI7XG52YXIgX2MgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfZCA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgX2UgPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF9mID0gXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZV9fX1FYQ2pNXCI7XG52YXIgXzEwID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF8xMSA9IFwicmVqZWN0ZWRfX19OSkU0WlwiO1xudmFyIF8xMiA9IFwic3VidGl0bGVfX19QdERlMlwiO1xudmFyIF8xMyA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgXzE0ID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXRMaXN0X19fZURRUjNcIjtcbnZhciBfMTYgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiQ1RBQnV0dG9uV3JhcHBlclwiLCBfMiBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzMgYXMgXCJhcHByb3ZlZFwiLCBfNCBhcyBcImJhZGdlRmVhdHVyZVwiLCBfNSBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzYgYXMgXCJidXR0b25QaWxsXCIsIF83IGFzIFwiY2FuY2VsQnV0dG9uXCIsIF84IGFzIFwiY29udGludWVCdXR0b25cIiwgXzkgYXMgXCJkZWxldGVJY29uXCIsIF9hIGFzIFwicGVuZGluZ1wiLCBfYiBhcyBcInJlZnVuZERldGFpbFwiLCBfYyBhcyBcInJlZnVuZEVycm9yTXNnXCIsIF9kIGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfZSBhcyBcInJlZnVuZFRleHRcIiwgX2YgYXMgXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZVwiLCBfMTAgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgXzExIGFzIFwicmVqZWN0ZWRcIiwgXzEyIGFzIFwic3VidGl0bGVcIiwgXzEzIGFzIFwic3VjY2Vzc01zZ1wiLCBfMTQgYXMgXCJzdWNjZXNzTXNnMlwiLCBfMTUgYXMgXCJ0aWNrZXRMaXN0XCIsIF8xNiBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNsb3NlQnRuX19feVNRQ09cIjtcbnZhciBfMiA9IFwiaGVhZGVyX19fZkJYRzlcIjtcbnZhciBfMyA9IFwidGl0bGVfX190eVplUVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUk9KR3NcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2xvc2VCdG5cIiwgXzIgYXMgXCJoZWFkZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwic3VtbWl0VGl0bGVEYXRlX19fWG5ycEZcIjtcbnZhciBfMiA9IFwid2lkZ2V0SGVhZGVyX19fZ2dMdE1cIjtcbmV4cG9ydCB7IF8xIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8yIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInVuYXNzaWduQnRuX19faTdtZ3lcIjtcbnZhciBfMiA9IFwidW5hc3NpZ25XcmFwcGVyX19fZzNlMnVcIjtcbnZhciBfMyA9IFwid3JhcHBlcl9fX1c5NFNMXCI7XG5leHBvcnQgeyBfMSBhcyBcInVuYXNzaWduQnRuXCIsIF8yIGFzIFwidW5hc3NpZ25XcmFwcGVyXCIsIF8zIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJoZWFkZXJOb3RlX19fQWU1RUFcIjtcbnZhciBfMiA9IFwib3JkZXJOb19fX1ZPUFJ3XCI7XG52YXIgXzMgPSBcInB1cmNoYXNlZEJ5X19fTU5pSFRcIjtcbnZhciBfNCA9IFwicHVyY2hhc2VkQnlXcmFwcGVyX19fRGg2SFVcIjtcbnZhciBfNSA9IFwid3JhcHBlcl9fX21WdWlaXCI7XG5leHBvcnQgeyBfMSBhcyBcImhlYWRlck5vdGVcIiwgXzIgYXMgXCJvcmRlck5vXCIsIF8zIGFzIFwicHVyY2hhc2VkQnlcIiwgXzQgYXMgXCJwdXJjaGFzZWRCeVdyYXBwZXJcIiwgXzUgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fZ090YUpcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic2VudF9fX2s2V0t4XCI7XG52YXIgX2YgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEwID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzExID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMiA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInNlbnRcIiwgX2YgYXMgXCJzdGF0dXNcIiwgXzEwIGFzIFwic3VidGl0bGVcIiwgXzExIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xMiBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aXZlX19fdEx5V1pcIjtcbnZhciBfMiA9IFwidGFiT3B0aW9uX19fSDRIMXVcIjtcbnZhciBfMyA9IFwidGFiV3JhcHBlcl9fX3UyMXNHXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGl2ZVwiLCBfMiBhcyBcInRhYk9wdGlvblwiLCBfMyBhcyBcInRhYldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0c1RpdGxlVGV4dF9fX1REUG1wXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldHNUaXRsZVRleHRcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9CdXR0b25cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9TdGFja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuaW1wb3J0IFdpZGdldFdyYXBwZXIgZnJvbSBcIi4vY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImNyZWF0ZUFjdGlvbiIsImRlbGV0ZVJlcXVlc3QiLCJnZXRSZXF1ZXN0IiwicHV0UmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsInN0b3BMb2FkaW5nIiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiYXV0aFByb21pc2VSZWplY3QiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJFUlJPUl9DT0RFUyIsIkZJRlRZX1BFUl9QQUdFIiwiRklMVEVSX0FDVElPTiIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiQ0hBTkdFX0ZJTFRFUiIsIkNIQU5HRV9TT1JUIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJERUxFR0FURV9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFRpY2tldCIsImRpc3BhdGNoIiwicmVzZXRTdGF0ZSIsInJlc2V0RmlsdGVyIiwicmVzZXRFcnJvciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUiLCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIiwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQiLCJGSUxURVJfVkFSX09XTkVSX1NUQVRVUyIsIkZJTFRFUl9WQVJfUFJPTU9DT0RFIiwiRklMVEVSX1ZBUl9GUkVFX1BBSUQiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsImNoYW5nZUZpbHRlciIsImZpbHRlciIsImNoYW5nZVNvcnQiLCJzb3J0IiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXJBY3Rpb24iLCJwdXNoIiwiY29uY2F0IiwibG93ZXIiLCJ1cHBlciIsImxlbmd0aCIsImZpbHRlck5hbWUiLCJPUkRFUlMiLCJqb2luIiwiaW5wdXRGaWx0ZXJzIiwiVElDS0VUU19CWV9PUkRFUlMiLCJFWFRFUk5BTF9USUNLRVRTIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInNraXBMb2FkaW5nIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsImZpZWxkcyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiY2F0Y2giLCJlIiwiZmluYWxseSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiUHJvbWlzZSIsInJlamVjdCIsImV4cGFuZCIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjE0IiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE1IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMTYiLCJyZW1vdmVUaWNrZXQiLCJfcmVmMTciLCJyZWFzc2lnblRpY2tldCIsInVuYXNzaWduVGlja2V0IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJub3JtYWxpemVkQW5zIiwiZ2V0VGlja2V0UERGIiwiX3JlZjIwIiwicXVlcnlTdHJpbmciLCJhcGlVcmwiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsImhlYWRlcnMiLCJvayIsImJsb2IiLCJwZGYiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidXJsIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiaHJlZiIsImRvd25sb2FkIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJSZWFjdCIsIkJ1dHRvbiIsIkRpYWxvZyIsIkRpYWxvZ0FjdGlvbnMiLCJEaWFsb2dDb250ZW50IiwiRGlhbG9nQ29udGVudFRleHQiLCJEaWFsb2dUaXRsZSIsInVzZVRyYW5zbGF0aW9uIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkNvbmZpcm1EaWFsb2ciLCJvcGVuIiwiYm9keSIsIm9uQ2xvc2UiLCJvbkNvbmZpcm0iLCJjaGlsZHJlbiIsIm9uQ2xpY2siLCJhdXRvRm9jdXMiLCJQcm9wVHlwZXMiLCJDb250ZW50Q29weUljb24iLCJUb29sdGlwIiwiTUlMTElTRUNfVE9fU0VDIiwic3R5bGVzIiwiZGVmYXVsdFdpZHRoIiwiQ29weVRleHQiLCJ0ZXh0IiwidG9vbHRpcFRleHQiLCJoaWRlQ29weSIsInRydW5jYXRlZCIsInJldmVyc2VkIiwid2lkdGgiLCJ0b29sdGlwVGV4dFRvVXNlIiwidG9vbHRpcCIsInNldFRvb2x0aXAiLCJ1c2VTdGF0ZSIsImNsYXNzTmFtZXMiLCJoYW5kbGVDb3B5IiwibmF2aWdhdG9yIiwiY2xpcGJvYXJkIiwid3JpdGVUZXh0Iiwic2V0VGltZW91dCIsImNsYXNzTmFtZSIsIndyYXBwZXIiLCJzdHlsZSIsImNvcHlJY29uIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiYm9vbCIsIm51bWJlciIsImNyZWF0ZUNvbnRleHQiLCJDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IiwiQWxlcnQiLCJTbmFja2JhciIsIlR5cG9ncmFwaHkiLCJDaGVja0NpcmNsZUljb24iLCJFcnJvckljb24iLCJDdXN0b21Ob3RpZmljYXRpb24iLCJzZXZlcml0eSIsImFuY2hvck9yaWdpbiIsInZlcnRpY2FsIiwiaG9yaXpvbnRhbCIsImF1dG9IaWRlRHVyYXRpb24iLCJ2YXJpYW50Iiwic3giLCJiYWNrZ3JvdW5kQ29sb3IiLCJpY29uTWFwcGluZyIsInN1Y2Nlc3MiLCJmb250U2l6ZSIsImVycm9yIiwiZnVuYyIsIlRoZW1lUHJvdmlkZXIiLCJjcmVhdGVUaGVtZSIsImRhcmtDb2xvciIsInJvb3QiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5IiwidHlwb2dyYXBoeSIsImJvZHkxIiwiZm9udFdlaWdodCIsImg1IiwibWFyZ2luQm90dG9tIiwiaDYiLCJjb21wb25lbnRzIiwiTXVpRm9ybUhlbHBlclRleHQiLCJzdHlsZU92ZXJyaWRlcyIsIk11aUJ1dHRvbiIsImxpbmVIZWlnaHQiLCJNdWlUYWIiLCJjb2xvciIsIk11aVRhYnMiLCJpbmRpY2F0b3IiLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJpc1JlcXVpcmVkIiwiQ2hlY2tib3giLCJGb3JtQ29udHJvbCIsIkZvcm1Db250cm9sTGFiZWwiLCJGb3JtR3JvdXAiLCJGb3JtSGVscGVyVGV4dCIsIkZvcm1MYWJlbCIsIlJhd0hUTUwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJoZWxwZXJUZXh0IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWx1ZXMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwiZGlzYWJsZWQiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm1hcmdpbiIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJvYmplY3QiLCJhcnJheSIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsImFsaWduSXRlbXMiLCJtYXJnaW5Ub3AiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJEcm9wZG93blF1ZXN0aW9uRmllbGQiLCJsYWJlbElkIiwiUmFkaW8iLCJSYWRpb0dyb3VwIiwiUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCIsIlRleHRGaWVsZCIsIlRleHRRdWVzdGlvbkZpZWxkIiwiUXVlc3Rpb25UeXBlX0NoZWNrYm94IiwiUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCIsIlF1ZXN0aW9uVHlwZV9Db21ib0JveCIsIlF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3giLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0IiwiY2hlY2tSdWxlIiwicnVsZSIsImFuc3dlcl92YWx1ZXMiLCJBcnJheSIsImlzQXJyYXkiLCJhbnN3ZXJfdmFsdWVzX29wZXJhdG9yIiwiY2hlY2tWaXNpYmlsaXR5IiwicnVsZVJlc3VsdCIsInZpc2liaWxpdHkiLCJ2aXNpYmlsaXR5X2NvbmRpdGlvbiIsInF1ZXN0aW9uSWQiLCJ0ZXh0TEMiLCJ0b0xvd2VyQ2FzZSIsInJlcGxhY2UiLCJxIiwiX3EkbGFiZWwiLCJpc0Fuc3dlcmVkIiwiYW5zd2VyIiwiY2hlY2tJZlZhbHVlTWF0Y2giLCJjb21wYXJlVmFsIiwiYW5zd2VyQXJyYXkiLCJzb21lIiwiZ2V0VHlwZUluaXRpYWxWYWx1ZSIsInR5cGUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJGcmFnbWVudCIsIkV4dHJhUXVlc3Rpb25zRmllbGRzIiwib3JpZ2luYWxBbnN3ZXJzIiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJmb3JtaWsiLCJyZW5kZXJSdWxlIiwiaXNWaXNpYmxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkJveCIsIkNhcmRIZWFkZXIiLCJJY29uQnV0dG9uIiwiQ29sbGFwc2UiLCJDYXJkQ29udGVudCIsIkV4cGFuZE1vcmVJY29uIiwiQXNzaWduZWRGaWx0ZXIiLCJvbkZpbHRlciIsImZpbHRlclZhbHVlcyIsInN0YXRlIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJhc3NpZ25lZFZhbHVlcyIsImhhbmRsZUZpbHRlckNoYW5nZSIsIm5ld0ZpbHRlciIsInRpdGxlV3JhcHBlciIsImFjdGlvbiIsImRpc2FibGVSaXBwbGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaW4iLCJ0aW1lb3V0IiwidW5tb3VudE9uRXhpdCIsInB5IiwicGIiLCJhc3NpZ25lZCIsInVzZUVmZmVjdCIsIkJhZGdlRmVhdHVyZUZpbHRlciIsImJhZGdlX2ZlYXR1cmVzX3R5cGVzIiwibmV3RmlsdGVycyIsImYiLCJiZiIsInVzZVJlZiIsIlN0YWNrIiwiRmlsdGVyTGlzdEljb24iLCJCYWRnZSIsIkNhcmQiLCJEaXZpZGVyIiwiUGFwZXIiLCJjb25uZWN0IiwiVGlja2V0VHlwZUZpbHRlciIsIlN0YXR1c0ZpbHRlciIsIkZyZWVQYWlkRmlsdGVyIiwiUHJvbW9Db2RlRmlsdGVyIiwiRmlsdGVyIiwib25SZXNldCIsImFjdGl2ZUZpbHRlcnNDb3VudCIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwicHQiLCJiYWRnZUNvbnRlbnQiLCJtciIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJlbGV2YXRpb24iLCJmaWx0ZXJDaGVja2JveENvbnRhaW5lciIsImNsZWFuQnV0dG9uIiwibWFwU3RhdGVUb1Byb3BzIiwicHJvbW9Db2RlIiwic2V0UHJvbW9Db2RlIiwiZGVib3VuY2VUaW1lciIsIkRFQk9VTkNFX1ZBTFVFIiwibmV3UHJvbW9Db2RlIiwiY2xlYXJUaW1lb3V0IiwicGxhY2Vob2xkZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiQ2xvc2VJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJkaXNwbGF5IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsInNob3dDbG9zZUJ0biIsIm9uS2V5RG93biIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJpbnB1dFByb3BzIiwiSW1wb3J0RXhwb3J0SWNvbiIsIlNvcnQiLCJvblNvcnQiLCJzaG93U29ydCIsInNldFNob3dTb3J0Iiwic29ydFJlZiIsImhhbmRsZVNvcnRDbGlja091dHNpZGUiLCJzb3J0Q29udGFpbmVyIiwic29ydEljb24iLCJzb3J0TGFiZWwiLCJzb3J0TGlzdENvbnRhaW5lciIsInRpY2tldF90eXBlcyIsIkdyaWQiLCJGaWx0ZXJzIiwianVzdGlmeSIsIml0ZW0iLCJ4cyIsImdhcCIsImZpbHRlclNvcnRDb250YWluZXIiLCJGb3JtRm9vdGVyIiwic2F2ZUxhYmVsIiwiY2FuY2VsTGFiZWwiLCJmb290ZXIiLCJjYW5jZWxCdG4iLCJzaXplIiwic2F2ZUJ0biIsIkVycm9yTGFiZWwiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsIkJhY2tkcm9wIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkxvYWRlciIsImRyYXdlciIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsIk9ORV9QQUdFX05FWFQiLCJNeU9yZGVyc1RpY2tldHMiLCJmZXRjaERhdGEiLCJtZW1iZXJPcmRlcnMiLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX2xhc3RfcGFnZSIsIm15T3JkZXJzV3JhcHBlciIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsIlRpY2tldHNJY29uIiwidmlld0JveCIsImZpbGwiLCJ4bWxucyIsImQiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VEYXNoYXJyYXkiLCJUQUJTIiwiX0ZyYWdtZW50IiwiTm9UaWNrZXRzRm91bmQiLCJwYWdlVmlldyIsImxvYWRpbmciLCJnZXRDb250ZW50IiwibWFpbHRvVGFnIiwic3VwcG9ydF9lbWFpbCIsImJ1dHRvbkxhYmVsIiwiVElDS0VUUyIsImljb25XcmFwcGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwiYW1vdW50VG90YWwiLCJzdWJUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJ0YXhlc1N1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwidGF4ZXNfYW1vdW50IiwidGF4IiwiYW1vdW50IiwiZGlzY291bnRfYW1vdW50Iiwic2hhcGUiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsInVzZVN1bW1pdERldGFpbHMiLCJSZWZ1bmRFbWFpbFN1cHBvcnQiLCJzdWJtaXRSZXF1ZXN0Iiwib25SZWZ1bmRDbGljayIsIm9uUmVmdW5kRGV0YWlsQ2xpY2siLCJpc1N0YXJ0ZWQiLCJub3ciLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwiaGFzUmVmdW5kUmVxdWVzdHMiLCJyb2xlIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwicmVmdW5kRGlzYWJsZWQiLCJyZWwiLCJhcnJheU9mIiwiT3JkZXJTdW1tYXJ5Iiwib3JkZXJTdW1tYXJ5V3JhcHBlciIsInB4Iiwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mbyIsIm1lbWJlclRpY2tldHMiLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnbmVkVG9NZVdyYXBwZXIiLCJ0aWNrZXRMaXN0Q29udGFpbmVyIiwiaXNSZWZ1bmRNb2RhbCIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IiwiQXNzaWduZWRUbyIsIkV4dGVybmFsQXNzaWduZWRUbyIsIk1hbmFnZUZvciIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvd25lcjMiLCJpc1VuYXNzaWduZWQiLCJpc19hY3RpdmUiLCJpc0RlbGVnYXRlZCIsInRpY2tldE93bmVyRW1haWwiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkb3duZXI1IiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiT05FX1JFVFJZIiwiQmFkZ2VGZWF0dXJlSW1hZ2UiLCJzcmMiLCJhbHQiLCJtYXhSZXRyaWVzIiwiY3VycmVudFNyYyIsInNldEN1cnJlbnRTcmMiLCJyZXRyeUNvdW50Iiwic2V0UmV0cnlDb3VudCIsImhhc0Vycm9yIiwic2V0SGFzRXJyb3IiLCJoYW5kbGVFcnJvciIsIkRhdGUiLCJvbkVycm9yIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwidGlja2V0c1RvUmVmdW5kIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInRpY2tldHNfdG90YWwiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsInVzZURpc3BhdGNoIiwiVGlja2V0U3RhdHVzIiwiZ2V0U3VtbWl0UmVhc3NpZ25EYXRlIiwiVGlja2V0RGV0YWlsIiwidXNlVGlja2V0RGV0YWlscyIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl90aWNrZXQkYmFkZ2UiLCJjYW5SZWFzc2lnbiIsIm1vZGFsT3BlbiIsInNldE1vZGFsT3BlbiIsInJlYXNzaWduRGF0ZSIsIm9uUmVhc3NpZ25hYmxlUGVyaW9kIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZU9wZW5Nb2RhbCIsInZpZXciLCJvcmRlcldyYXBwZXIiLCJyZWZ1bmRNb2RhbCIsImRpc2FibGVkUmVmdW5kIiwic2VsZWN0ZWQiLCJjaGVja2JveCIsInBsIiwidGlja2V0VGlja2V0VHlwZSIsImJmRmVhdHVyZVdyYXBwZXIiLCJwciIsImJhZGdlIiwiZmVhdHVyZXMiLCJiZkZlYXR1cmUiLCJpbWFnZSIsInRpY2tldE5vIiwidGlja2V0Rm9vdGVyIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJfIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInJlZnVuZERldGFpbHNPcGVuIiwic2V0UmVmdW5kRGV0YWlsc09wZW4iLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2xvc2VTdWJtaXRSZXF1ZXN0IiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwiYm9yZGVyQ29sb3IiLCJ0YWJCdXR0b25zIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwibWQiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwidGlja2V0X3Blcl9wYWdlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJsZyIsIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lciIsIm9yZGVyVGlja2V0SW5mbyIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidXNlTWVtbyIsIlJpZ2h0RHJhd2VyIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0IiwiZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyIsInJlcXVlc3RlZFRpY2tldHMiLCJjbG9zZVNsaWRlciIsInJlZnVuZERldGFpbHMiLCJ0b29sdGlwQ2xhc3NlcyIsIkluZm9JY29uIiwibW9tZW50IiwiUmVmdW5kU3RhdHVzIiwiR1JJRF84IiwiR1JJRF8xMiIsIlBBRERJTkdfMiIsImFwcHJvdmVkUmVmdW5kcyIsInJlZnVuZCIsInJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkiLCJyZWZ1bmRlZF90YXhlcyIsInJ0IiwidGF4SWQiLCJ0b3RhbFJlZnVuZGVkVGF4QW1vdW50IiwicmVmdW5kZWRfYW1vdW50IiwiSHRtbFRvb2x0aXAiLCJjbGFzc2VzIiwicG9wcGVyIiwibWF4V2lkdGgiLCJib3JkZXIiLCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXIiLCJyZWZ1bmREZXRhaWwiLCJiYWRnZUZlYXR1cmVXcmFwcGVyIiwiYmFkZ2VGZWF0dXJlIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiRHJhd2VyIiwiQ2xvc2UiLCJoZWFkZXJDaGlsZHJlbiIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJTdW1taXRIZWFkZXIiLCJ3aWRnZXRIZWFkZXIiLCJzdW1taXRUaXRsZURhdGUiLCJkYXRlc19sYWJlbCIsIlRhYldyYXBwZXIiLCJ0YWIiLCJzZXRUYWIiLCJoYXNUaWNrZXRzIiwiaXNGaWx0ZXJlZCIsImNsZWFyRmlsdGVycyIsImdldFBhZ2VWaWV3IiwiZ2V0T25DbGljayIsInRhYlRvTGluayIsIkxpbmsiLCJSZWFzc2lnbkZvcm0iLCJEZWxlZ2F0ZUZvcm0iLCJBc3NpZ25PcHRpb25zIiwiYXNzaWduT3B0aW9uIiwic2V0QXNzaWduT3B0aW9uIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25VbkFzc2lnbiIsIm9wZW5Db25maXJtVW5hc3NpZ24iLCJzZXRPcGVuQ29uZmlybVVuYXNzaWduIiwiaXNBc3NpZ25lZFRvTWUiLCJhbGxvd3NEZWxlZ2F0ZSIsImhhbmRsZVVuQXNzaWduIiwibXkiLCJvblN1Ym1pdCIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJkZWxlZ2F0ZV9maXJzdF9uYW1lIiwiZGVsZWdhdGVfbGFzdF9uYW1lIiwiZGVsZWdhdGVfZW1haWwiLCJ1bmFzc2lnbldyYXBwZXIiLCJjb21wb25lbnQiLCJ0ZXh0RGVjb3JhdGlvbiIsInRleHREZWNvcmF0aW9uQ29sb3IiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJpc1N1Ym1pdHRpbmciLCJBc3NpZ25IZWFkZXIiLCJpblByb2dyZXNzIiwidXNlckVtYWlsIiwiYXNzaWduZWRUb1lvdSIsImdldFNlY29uZGFyeVRpdGxlIiwiZ2V0SGVhZGVyTm90ZSIsInRyYW5zS2V5IiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJoZWFkZXJOb3RlIiwiUmVhc3NpZ25IZWFkZXIiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwidXNlQ29udGV4dCIsIlRpY2tldEZvcm0iLCJ1c2VHZXRUaWNrZXQiLCJUSUNLRVRfRFJBV0VSX0lEIiwic3VjY2Vzc01lc3NhZ2UiLCJlcnJvck1lc3NhZ2UiLCJhc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsIm9uQ2xvc2VFUUZvcm0iLCJvblNhdmVFUSIsInJlc29sdmUiLCJIZWFkZXIiLCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lciIsImNhbkVkaXQiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJkaXNjbGFpbWVyIiwiUVJDb2RlIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiVFdPX0lURU0iLCJUaWNrZXREZXRhaWxIZWFkZXIiLCJpc1ZpcnR1YWxTdW1taXQiLCJpc0NvbXBsZXRlIiwic2VudENvbmZpcm1hdGlvbiIsInNldFNlbnRDb25maXJtYXRpb24iLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwicXJDb2RlIiwicXJfY29kZSIsInFyTm90ZSIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJzZW50Iiwib3JkZXJOdW1iZXIiLCJUaWNrZXRPd25lckZpZWxkcyIsInVzZVNjcm9sbFRvRXJyb3IiLCJwYXJzZUFuc3dlcnMiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJyZWR1Y2UiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnkiLCJyZWxldmFudEFuc3dlcnMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJhZGRpdGlvbmFsRGV0YWlscyIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJpbmZvTm90ZSIsIm9uU2F2ZSIsInRpY2tldERldGFpbENvbnRhaW5lciIsImlzX3ZpcnR1YWwiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJBc3NpZ25lZFRvTWUiLCJXaWRnZXRUYWJzIiwidGlja2V0c0Z1bGx5TG9hZGVkIiwic2V0VGlja2V0c0Z1bGx5TG9hZGVkIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzUGVyUGFnZSIsInRpY2tldFBlclBhZ2UiLCJoYW5kbGVUYWJDaGFuZ2UiLCJuZXdUYWIiLCJmZXRjaEFzc2lnbmVkVGlja2V0cyIsImZldGNoT3JkZXJUaWNrZXRzIiwib3JkZXJUaWNrZXRzUHJvbWlzZXMiLCJjdXJyZW50X3BhZ2UiLCJmZXRjaFByb21pc2VzIiwidGFiV3JhcHBlciIsIldpZGdldFdyYXBwZXIiLCJtc2dEYXRhIiwic2V0TXNnRGF0YSIsIm1lc3NhZ2VDb250ZXh0IiwiZmlsdGVyVmFsdWUiLCJzb3J0VmFsdWUiLCJ0aWNrZXRzVGl0bGVUZXh0IiwiUHJvdmlkZXIiLCJydW4iLCJjdXJyZW50VGlja2V0Iiwic21vb3RoU2Nyb2xsVG8iLCJ0YXJnZXRTY3JvbGxUb3AiLCJkdXJhdGlvbiIsInN0YXJ0U2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiZGlzdGFuY2UiLCJzdGFydFRpbWUiLCJhbmltYXRpb25TdGVwIiwidGltZXN0YW1wIiwiZWxhcHNlZCIsInByb2dyZXNzIiwiTWF0aCIsIm1pbiIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpbml0UmVhY3RJMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImVuIiwiZXMiLCJ1c2UiLCJpbml0IiwiZmFsbGJhY2tMbmciLCJkZWJ1ZyIsInJlc291cmNlcyIsInRyYW5zbGF0aW9uIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiTE9HT1VUX1VTRVIiLCJTVEFSVF9MT0FESU5HIiwiU1RPUF9MT0FESU5HIiwiUkVTRVRfTE9BRElORyIsImNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMiLCJoYXNMb2FkZWRBbGxEYXRhIiwidXBkYXRlVGlja2V0Q29sbGVjdGlvbiIsIkRFRkFVTFRfRklMVEVSX1NUQVRFIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJjdXJyZW50X3RhYiIsIm9yZGVyc190b3RhbCIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwidXNlcl90aWNrZXRzX3RvdGFsIiwiYXBpRXJyb3IiLCJXaWRnZXRSZWR1Y2VyIiwibmV3QWN0aXZlQ291bnQiLCJ0b3RhbCIsImxhc3RfcGFnZSIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsIm5ld09yZGVycyIsIm1vIiwiX2RhdGEkMiIsIm5ld1RpY2tldHMiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidXBkYXRlZE9yZGVyIiwidGlja2V0RGF0YSIsIm5ld1VzZXJUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImdldEFjY2Vzc1Rva2VuTW9jayIsIkVycm9yIiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJNSU5fUkVRVUlSRUQiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiX29yZGVyJGFwcGxpZWRfdGF4ZXMiLCJyYXdfYW1vdW50IiwiY3VycmVuY3lPYmplY3QiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJhcHBsaWVkX3RheGVzIiwiZm9ybWF0dGVkVGF4IiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldE9yZGVyVGlja2V0cyIsIl9vcmRlcnMkIiwib3JkZXJzIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsInJvdW5kIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY291bnQiLCJ0cmltIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiZm9ybWF0U3RhcnREYXRlIiwiZm9ybWF0RW5kRGF0ZSIsInllYXIiLCJtb250aCIsInN0YXJ0RGF0ZSIsImVuZERhdGUiLCJnZXRTdW1taXRMb2NhdGlvbiIsIl9zdW1taXQkbG9jYXRpb25zIiwibG9jYXRpb24iLCJsb2NhdGlvbnMiLCJsIiwiY2xhc3NfbmFtZSIsImlzX21haW4iLCJjaXR5IiwiY291bnRyeSIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJmZWF0dXJlIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsIm5ldF9zZWxsaW5nX2Nvc3QiLCJyciIsImdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczIiLCJhbGxUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczQiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM1IiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM2IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczgiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJpbmNsdWRlQXR0ZW5kZWVJbmZvIiwiaW5jbHVkZURpc2NsYWltZXIiLCJidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSIsIl9zdWJRdWVzdGlvbiRzdWJfcXVlcyIsInN1YlF1ZXN0aW9uIiwibnVsbGFibGUiLCJ3aGVuIiwiaXMiLCJxdWVzdGlvbkFucyIsImFuc1ZhbHVlTWF0Y2giLCJzY2giLCJzdWJSdWxlIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsImxhenkiLCJ0eXBlRXJyb3IiLCJfdCRvd25lciIsIl90JG93bmVyMiIsIl90aWNrZXQkb3duZXI2IiwidG1wVGlja2V0IiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJmbHVzaCIsImhhcyIsIm9uQmVmb3JlTGlmdCJdLCJzb3VyY2VSb290IjoiIn0=
10234
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1VDQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7Ozs7V0N0QkE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLGlDQUFpQyxXQUFXO1dBQzVDO1dBQ0E7Ozs7O1dDUEE7V0FDQTtXQUNBO1dBQ0E7V0FDQSx5Q0FBeUMsd0NBQXdDO1dBQ2pGO1dBQ0E7V0FDQTs7Ozs7V0NQQTs7Ozs7V0NBQTtXQUNBO1dBQ0E7V0FDQSx1REFBdUQsaUJBQWlCO1dBQ3hFO1dBQ0EsZ0RBQWdELGFBQWE7V0FDN0Q7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3lDO0FBQ047QUFDSTtBQUN1QjtBQUNUO0FBQ2Q7QUFDa0I7QUFFRjtBQUFBO0FBRXZELE1BQU1FLHVCQUF1QixHQUFJdGxDLEtBQUssSUFBSztFQUN6QyxNQUFNO0lBQ0pvN0IsUUFBUTtJQUNSbUssWUFBWTtJQUNaL3hDLE1BQU07SUFDTjZELFVBQVU7SUFDVjVELElBQUk7SUFDSjBuQyxRQUFRO0lBQ1J6L0I7RUFDRixDQUFDLEdBQUdzRSxLQUFLO0VBRVQsTUFBTTtJQUFFczdCLEtBQUs7SUFBRVc7RUFBVSxDQUFDLEdBQUdGLG9EQUFZLENBQUM7SUFDeENYLFFBQVE7SUFDUm1LLFlBQVk7SUFDWi94QyxNQUFNO0lBQ05DLElBQUk7SUFDSjRELFVBQVU7SUFDVjhqQyxRQUFRO0lBQ1J6L0I7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNOHBDLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTWh1QyxNQUFNLEdBQUcsSUFBSWl1QyxlQUFlLENBQUM5bUMsTUFBTSxDQUFDNGlDLFFBQVEsQ0FBQ21FLE1BQU0sQ0FBQztJQUMxRCxNQUFNQyxLQUFLLEdBQUdudUMsTUFBTSxDQUFDb3VDLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsSUFBSUQsS0FBSyxFQUFFckssS0FBSyxDQUFDbm9DLFFBQVEsQ0FBQztNQUFFcVosSUFBSSxFQUFFL2IsaURBQVc7TUFBRThFLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNqRSxDQUFDO0VBRUQrYSxnREFBUyxDQUFDLE1BQU07SUFDZGdyQixLQUFLLENBQUNub0MsUUFBUSxDQUFDSSx5REFBZSxDQUFDQyxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBQy9DLENBQUMsRUFBRSxDQUFDRCxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFK0wsc0RBQUEsQ0FBQ20xQixpREFBUTtJQUFDMkcsS0FBSyxFQUFFQSxLQUFNO0lBQUF4NkIsUUFBQSxlQUNyQnRCLHNEQUFBLENBQUM2bEMsd0VBQVc7TUFDVlEsWUFBWSxFQUFFTCxnQkFBaUI7TUFDL0Jwc0IsT0FBTyxFQUFFLElBQUs7TUFDZDZpQixTQUFTLEVBQUVBLFNBQVU7TUFBQW43QixRQUFBLGVBRXJCdEIsc0RBQUEsQ0FBQzBuQiwrREFBb0I7UUFBQzJCLFdBQVc7UUFBQS9uQixRQUFBLGVBQy9CdEIsc0RBQUEsQ0FBQzQwQixpRUFBYSxJQUFFO01BQUMsQ0FDRztJQUFDLENBQ1o7RUFBQyxDQUNOLENBQUM7QUFFZixDQUFDO0FBRURrUix1QkFBdUIsQ0FBQy9qQyxTQUFTLEdBQUc7RUFDbEM2NUIsUUFBUSxFQUFFLzdCLDBEQUFnQjtFQUMxQmttQyxZQUFZLEVBQUVsbUMsMERBQWdCO0VBQzlCN0wsTUFBTSxFQUFFNkwsMERBQWdCO0VBQ3hCaEksVUFBVSxFQUFFZ0ksMERBQWdCO0VBQzVCNUwsSUFBSSxFQUFFNEwsMERBQWdCO0VBQ3RCODdCLFFBQVEsRUFBRTk3QiwwREFBZ0I7RUFDMUIzRCxhQUFhLEVBQUUyRCx3REFBYytGO0FBQy9CLENBQUM7QUFFRCxpRUFBZWtnQyx1QkFBdUIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQmFkZ2VGZWF0dXJlSWNvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db25maXJtRGlhbG9nL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbU5vdGlmaWNhdGlvbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21UaGVtZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Bc3NpZ25lZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0JhZGdlRmVhdHVyZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0ZyZWVQYWlkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvUHJvbW9Db2RlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU2VhcmNoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU29ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1N0YXR1c0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1RpY2tldFR5cGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9FcnJvckxhYmVsLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xvYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvVGlja2V0c0ljb24uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXNzaWduZWRUb01lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RJdGVtLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1N1bW1pdEhlYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UYWJXcmFwcGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvRGVsZWdhdGVGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL1JlYXNzaWduRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvQ29tcGFueUZpZWxkL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXREZXRhaWxIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VHZXRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVNjcm9sbFRvRXJyb3IuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZVRpY2tldERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2kxOG4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3JlZHVjZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3N0b3JlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9hdXRoLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9zdW1taXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvdGlja2V0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQmFkZ2VGZWF0dXJlSWNvbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Ob1RpY2tldHNGb3VuZC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1N1bW1pdEhlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvQXNzaWduT3B0aW9ucy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0VGFicy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9CdXR0b25cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRUZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFiXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAcmVkdXhqcy90b29sa2l0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHNlbnRyeS9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImZvcm1pa1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImlkdG9rZW4tdmVyaWZpZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJtb21lbnQtdGltZXpvbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwLWxpbWl0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1xci1jb2RlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC9qc3gtcnVudGltZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwieXVwXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uIHdlYnBhY2tVbml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uKHJvb3QsIGZhY3RvcnkpIHtcblx0aWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnICYmIHR5cGVvZiBtb2R1bGUgPT09ICdvYmplY3QnKVxuXHRcdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeSgpO1xuXHRlbHNlIGlmKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZClcblx0XHRkZWZpbmUoXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIiwgW10sIGZhY3RvcnkpO1xuXHRlbHNlIGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0Jylcblx0XHRleHBvcnRzW1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xuXHRlbHNlXG5cdFx0cm9vdFtcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcbn0pKHRoaXMsICgpID0+IHtcbnJldHVybiAiLCJpbXBvcnQge1xuICBhdXRoRXJyb3JIYW5kbGVyLFxuICBjcmVhdGVBY3Rpb24sXG4gIGRlbGV0ZVJlcXVlc3QsXG4gIGdldFJlcXVlc3QsXG4gIHB1dFJlcXVlc3QsXG4gIHN0YXJ0TG9hZGluZyxcbiAgc3RvcExvYWRpbmdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHBMaW1pdCBmcm9tIFwicC1saW1pdFwiO1xuaW1wb3J0IHsgZ2V0SWRUb2tlbiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCB7IG9iamVjdFRvUXVlcnlTdHJpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCI7XG5pbXBvcnQgSWRUb2tlblZlcmlmaWVyIGZyb20gXCJpZHRva2VuLXZlcmlmaWVyXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgYXV0aFByb21pc2VSZWplY3QsIGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgRVJST1JfQ09ERVMsXG4gIEZJRlRZX1BFUl9QQUdFLFxuICBGSUxURVJfQUNUSU9OLFxuICBGSVJTVF9QQUdFLFxuICBQUk9NSVNFX0JBVENIX0xJTUlUXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9GSUxURVIgPSBcIkNIQU5HRV9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfU09SVCA9IFwiQ0hBTkdFX1NPUlRcIjtcblxuLy8gT1JERVJTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9VU0VSX09SREVSUyA9IFwiR0VUX09SREVSU1wiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9PUkRFUiA9IFwiUkVGVU5EX09SREVSXCI7XG5leHBvcnQgY29uc3QgU0VUX0FDVElWRV9PUkRFUl9JRCA9IFwiU0VUX0FDVElWRV9PUkRFUl9JRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9VU0VSX09SREVSUyA9IFwiRklMVEVSX1VTRVJfT1JERVJTXCI7XG5cbi8vIFRJQ0tFVFMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMgPSBcIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVCA9IFwiVVBEQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX1RJQ0tFVCA9IFwiUkVTRVRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9USUNLRVQgPSBcIlJFQ0VJVkVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSA9IFwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVwiO1xuZXhwb3J0IGNvbnN0IEFTU0lHTl9USUNLRVQgPSBcIkFTU0lHTl9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBERUxFR0FURV9USUNLRVQgPSBcIkRFTEVHQVRFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRUaWNrZXQgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldFN0YXRlID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9TVEFURSkoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEZpbHRlciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfRklMVEVSKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RXJyb3IgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0FQSV9FUlJPUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCBzZXRSZWR1Y2VyU3RhdGUgPSAoc3VtbWl0LCB1c2VyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9TVEFURSkoeyBzdW1taXQsIHVzZXIgfSkpO1xufTtcblxuLy8gRklMVEVSIC8gU09SVCBDT05TVEFOVFNcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0RBVEUgPSBcIkZJTFRFUl9WQVJfREFURVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSA9IFwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSA9IFwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTID0gXCJGSUxURVJfVkFSX09XTkVSX1NUQVRVU1wiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfUFJPTU9DT0RFID0gXCJGSUxURVJfVkFSX1BST01PQ09ERVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfRlJFRV9QQUlEID0gXCJGSUxURVJfVkFSX0ZSRUVfUEFJRFwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSID0gXCJGSUxURVJfVkFSX09SREVSX05VTUJFUlwiO1xuXG4vLyBGSUxURVIgLyBTT1JUIEFDVElPTlNcbmV4cG9ydCBjb25zdCBjaGFuZ2VGaWx0ZXIgPSAoZmlsdGVyKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9GSUxURVIpKGZpbHRlcikpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoYW5nZVNvcnQgPSAoc29ydCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfU09SVCkoc29ydCkpO1xufTtcblxuLy8gRklMVEVSL1NPUlQgUEFSU0VcbmNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaiwgZmlsdGVyQWN0aW9uKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGBjcmVhdGVkW10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19iYWRnZV9mZWF0dXJlc19pZFwiXG4gICAgICAgIDogXCJiYWRnZV9mZWF0dXJlc19pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfdHlwZV9pZFwiXG4gICAgICAgIDogXCJ0aWNrZXRfdHlwZV9pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfYXNzaWduZWRfdG9cIlxuICAgICAgICA6IFwiYXNzaWduZWRfdG9cIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUR9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVUykge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgZmlsdGVyQWN0aW9uID09PSBGSUxURVJfQUNUSU9OLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19vd25lcl9zdGF0dXNcIlxuICAgICAgICA6IFwib3duZXJfc3RhdHVzXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGZpbHRlckFjdGlvbiA9PT0gRklMVEVSX0FDVElPTi5PUkRFUlMgPyBcImFtb3VudFwiIDogXCJmaW5hbF9hbW91bnRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQgPT09IFwiRnJlZVwiID8gXCI9PTBcIiA6IFwiPjBcIn1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBmaWx0ZXJBY3Rpb24gPT09IEZJTFRFUl9BQ1RJT04uT1JERVJTXG4gICAgICAgID8gXCJ0aWNrZXRzX3Byb21vX2NvZGVcIlxuICAgICAgICA6IFwicHJvbW9fY29kZVwiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PUAke2ZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERX1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSKSB7XG4gICAgbGV0IGlucHV0RmlsdGVycyA9IFwiXCI7XG5cbiAgICBzd2l0Y2ggKGZpbHRlckFjdGlvbikge1xuICAgICAgY2FzZSBGSUxURVJfQUNUSU9OLk9SREVSUzoge1xuICAgICAgICBpbnB1dEZpbHRlcnMgPSBgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sdGlja2V0c19vd25lcl9lbWFpbD1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LHRpY2tldHNfbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgRklMVEVSX0FDVElPTi5USUNLRVRTX0JZX09SREVSUzoge1xuICAgICAgICBpbnB1dEZpbHRlcnMgPSBgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn0sb3duZXJfZW1haWw9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgY2FzZSBGSUxURVJfQUNUSU9OLkVYVEVSTkFMX1RJQ0tFVFM6IHtcbiAgICAgICAgaW5wdXRGaWx0ZXJzID0gYG9yZGVyX251bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG51bWJlcj1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJ9LG9yZGVyX293bmVyX2VtYWlsPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBmaWx0ZXIucHVzaChpbnB1dEZpbHRlcnMpO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5jb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT4gKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCIpO1xuXG4vLyBwYXlsb2FkOiB7IGh0dHBDb2RlLCB0aXRsZSwgaHRtbDogY29udGVudCwgdHlwZSB9XG5jb25zdCBlcnJvckhhbmRsZXJOb3RpZnkgPSAocGF5bG9hZCwgY2FsbGJhY2spID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FQSV9FUlJPUikocGF5bG9hZCkpO1xuICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG59O1xuXG5jb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoXG4gICAge1xuICAgICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgIGZpbHRlciA9IHt9LFxuICAgICAgc29ydCA9IHt9XG4gICAgfSxcbiAgICBza2lwTG9hZGluZ1xuICApID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItY3JlYXRlZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwiYXBwbGllZF90YXhlcyxub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwiaWQsY3JlYXRlZCxudW1iZXIsYW1vdW50LGN1cnJlbmN5LHRheGVzX2Ftb3VudCxkaXNjb3VudF9hbW91bnQsdGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlLHJlZnVuZGVkX2Ftb3VudCxyYXdfYW1vdW50LGFwcGxpZWRfdGF4ZXMuaWQsYXBwbGllZF90YXhlcy5uYW1lLGFwcGxpZWRfdGF4ZXMuYW1vdW50XCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuXG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgRklMVEVSX0FDVElPTi5PUkRFUlMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1VTRVJfT1JERVJTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlcixcbiAgICAgIHsgZmlsdGVyLCBzb3J0IH1cbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4gcGF5bG9hZClcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgaWYgKCFza2lwTG9hZGluZykgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNldEFjdGl2ZU9yZGVySWQgPSAob3JkZXJJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FDVElWRV9PUkRFUl9JRCkob3JkZXJJZCkpO1xuXG4vLyBVU0VSIEFDVElPTlNcbmV4cG9ydCBjb25zdCBzZXRVc2VyID0gKHVzZXIpID0+IChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9VU0VSKSh1c2VyKSk7XG5cbi8vIFRJQ0tFVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRVc2VyVGlja2V0cyA9XG4gIChcbiAgICB7XG4gICAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgICAgZmlsdGVyID0ge30sXG4gICAgICBzb3J0ID0ge31cbiAgICB9LFxuICAgIHNraXBMb2FkaW5nXG4gICkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQsIHVzZXIgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuICAgIGNvbnN0IHsgdXNlclByb2ZpbGUgfSA9IHVzZXI7XG4gICAgaWYgKCFzdW1taXQpIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgZmllbGRzID0gW1xuICAgICAgXCJvcmRlci5pZFwiLFxuICAgICAgXCJvcmRlci5vd25lcl9maXJzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2xhc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9lbWFpbFwiLFxuICAgICAgXCJvd25lci5pZFwiLFxuICAgICAgXCJvd25lci5lbWFpbFwiLFxuICAgICAgXCJvd25lci5maXJzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLmxhc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5zdGF0dXNcIixcbiAgICAgIFwiYmFkZ2Uubm9uZVwiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCIsIGBvcmRlcl9vd25lcl9pZDw+JHt1c2VyUHJvZmlsZS5pZH1gXSxcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZSxiYWRnZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIEZJTFRFUl9BQ1RJT04uRVhURVJOQUxfVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9hbGwvdGlja2V0cy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLmNhdGNoKChlKSA9PiBlKVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBpZiAoIXNraXBMb2FkaW5nKSBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0c0J5T3JkZXIgPVxuICAoe1xuICAgIG9yZGVySWQsXG4gICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgZmlsdGVyLFxuICAgIHNvcnRcbiAgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXSxcbiAgICAgIGZpZWxkczogXCJiYWRnZS5ub25lXCIsXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMudGF4LG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiK2lkXCIsXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBGSUxURVJfQUNUSU9OLlRJQ0tFVFNfQllfT1JERVJTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJyZWZ1bmRfcmVxdWVzdHMsdGlja2V0X3R5cGVcIixcbiAgICAgIGZpZWxkczogXCJyZWZ1bmRfcmVxdWVzdHMuc3RhdHVzXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFRlVORF9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3JlZnVuZGAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kQnVsa1RpY2tldHMgPVxuICAoeyB0aWNrZXRzIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCkgPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gcExpbWl0KFBST01JU0VfQkFUQ0hfTElNSVQpO1xuICAgIGNvbnN0IGFsbFJlZnVuZFRpY2tldENhbGxzID0gdGlja2V0cy5tYXAoKHRpY2tldCkgPT5cbiAgICAgIGxpbWl0KCgpID0+IGRpc3BhdGNoKHJlZnVuZFRpY2tldCh7IHRpY2tldCB9KSkpXG4gICAgKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoWy4uLmFsbFJlZnVuZFRpY2tldENhbGxzXSlcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkID0gcmVzXG4gICAgICAgICAgLmZpbHRlcigocikgPT4gci5yZXNwb25zZT8ucmVmdW5kX3JlcXVlc3RzPy5sZW5ndGgpXG4gICAgICAgICAgLm1hcCgocikgPT4gci5yZXNwb25zZSk7XG4gICAgICAgIHJldHVybiBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiBlKTtcbiAgfTtcblxuLy8gdXBkYXRlIHRoZSB0aWNrZXRzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Vzc2Z1bGx5IHJlZnVuZGVkXG5leHBvcnQgY29uc3QgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9XG4gICh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKSA9PiAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCkodGlja2V0c1JlZnVuZFJlcXVlc3RlZClcbiAgICApO1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0RXh0cmFRdWVzdGlvbnMgPVxuICAoYXR0ZW5kZWVJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyX3BhZ2U6IEZJRlRZX1BFUl9QQUdFLFxuICAgICAgZXhwYW5kOiBcIipzdWJfcXVlc3Rpb25fcnVsZXMsKnN1Yl9xdWVzdGlvbiwqdmFsdWVzXCIsXG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBcInRpY2tldHNfZXhjbHVkZV9pbmFjdGl2ZXM9PXRydWVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9hdHRlbmRlZXMvJHthdHRlbmRlZUlkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0ID1cbiAgKHRpY2tldElkLCBvcmRlcklkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyLHByb21vX2NvZGVcIixcbiAgICAgIHJlbGF0aW9uczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmUscHJvbW9fY29kZS5ub25lLHRpY2tldF90eXBlLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGUscHJvbW9fY29kZS5pZCxwcm9tb19jb2RlLmNvZGUscHJvbW9fY29kZS5hbGxvd3NfdG9fZGVsZWdhdGUscHJvbW9fY29kZS5hbGxvd3NfdG9fcmVhc3NpZ24sdGlja2V0X3R5cGUuaWQsdGlja2V0X3R5cGUubmFtZSx0aWNrZXRfdHlwZS5hbGxvd3NfdG9fZGVsZWdhdGUsdGlja2V0X3R5cGUuYWxsb3dzX3RvX3JlYXNzaWduLHRpY2tldF90eXBlLmNvc3QsdGlja2V0X3R5cGUuY3JlYXRlZFwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH1gO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgaWRUb2tlbiA9IGdldElkVG9rZW4oKTtcbiAgICBsZXQgY29tcGFueSA9IFwiXCI7XG4gICAgaWYgKGlkVG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWVyID0gbmV3IElkVG9rZW5WZXJpZmllcigpO1xuICAgICAgICBjb25zdCBqd3QgPSB2ZXJpZmllci5kZWNvZGUoaWRUb2tlbik7XG4gICAgICAgIGNvbXBhbnkgPSBqd3QucGF5bG9hZC5jb21wYW55O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGUpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0gbm9ybWFsaXplVGlja2V0KGFuc3dlcnMpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgbm9ybWFsaXplZEVudGl0eSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHJlZnJlc2hQcm9maWxlKGFuc3dlcnMsIGNvbXBhbnksIHRpY2tldC5vd25lcikpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGFzc2lnbkF0dGVuZGVlID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBhdHRlbmRlZV9lbWFpbCwgbWVzc2FnZSA9IG51bGwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCBvd25lci5leHRyYV9xdWVzdGlvbnMsIG9yZGVyLnN1bW1pdFwiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRU1PVkVfVElDS0VUX0FUVEVOREVFKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWFzc2lnblRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChyZW1vdmVUaWNrZXQob3JkZXJJZCwgdGlja2V0SWQpKS50aGVuKCgpID0+XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKVxuICAgICk7XG5cbmV4cG9ydCBjb25zdCB1bmFzc2lnblRpY2tldCA9IChvcmRlcklkLCB0aWNrZXRJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChyZW1vdmVUaWNrZXQob3JkZXJJZCwgdGlja2V0SWQpKS50aGVuKCgpID0+IGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpKTtcblxuZXhwb3J0IGNvbnN0IGRlbGVnYXRlVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZTogZmlyc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lOiBsYXN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2VtYWlsOiBlbWFpbFxuICAgIH07XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKERFTEVHQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9kZWxlZ2F0ZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVFeHRyYVF1ZXN0aW9ucyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBub3JtYWxpemVkQW5zID0gbm9ybWFsaXplVGlja2V0KGFuc3dlcnMpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgbm9ybWFsaXplZEFucyxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFBERiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG9iamVjdFRvUXVlcnlTdHJpbmcocGFyYW1zKTtcbiAgICBjb25zdCBhcGlVcmwgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcGRmPyR7cXVlcnlTdHJpbmd9YDtcblxuICAgIHJldHVybiBmZXRjaChhcGlVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJCbG9iXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vcGRmXCIgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigocGRmKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHBkZik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwidGlja2V0LnBkZlwiO1xuICAgICAgICBsaW5rLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyKTtcbiAgfTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgZm9yd2FyZFJlZiB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNQVhfSU5JVElBTFMgPSAyO1xuXG5jb25zdCBCYWRnZUZlYXR1cmVJY29uID0gZm9yd2FyZFJlZihcbiAgKHsgbmFtZSwgaW1hZ2UsIGNsYXNzTmFtZSwgLi4ucHJvcHMgfSwgcmVmKSA9PiB7XG4gICAgY29uc3QgW2ltYWdlTG9hZGVkLCBzZXRJbWFnZUxvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2ltYWdlRXJyb3IsIHNldEltYWdlRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gICAgY29uc3Qgc2hvd0ZhbGxiYWNrID0gIWltYWdlIHx8IGltYWdlRXJyb3I7XG5cbiAgICAvLyBFeHRyYWN0IHVwIHRvIDIgaW5pdGlhbHMgZnJvbSBiYWRnZSBmZWF0dXJlIG5hbWUgKGUuZy4sIFwiQm9hcmQgTWVtYmVyXCIgLT4gXCJCTVwiKVxuICAgIGNvbnN0IGluaXRpYWxzID0gbmFtZVxuICAgICAgLnNwbGl0KFwiIFwiKVxuICAgICAgLmZpbHRlcigod29yZCkgPT4gd29yZC5sZW5ndGggPiAwKVxuICAgICAgLm1hcCgod29yZCkgPT4gd29yZFswXSlcbiAgICAgIC5qb2luKFwiXCIpXG4gICAgICAuc3Vic3RyaW5nKDAsIE1BWF9JTklUSUFMUylcbiAgICAgIC50b1VwcGVyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXZcbiAgICAgICAgcmVmPXtyZWZ9XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJhZGdlRmVhdHVyZUljb259JHtjbGFzc05hbWUgPyBgICR7Y2xhc3NOYW1lfWAgOiAnJ31gfVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtpbWFnZSAmJiAhaW1hZ2VFcnJvciAmJiAoXG4gICAgICAgICAgPGltZ1xuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlSW1hZ2V9XG4gICAgICAgICAgICBzcmM9e2ltYWdlfVxuICAgICAgICAgICAgYWx0PXtuYW1lfVxuICAgICAgICAgICAgb25Mb2FkPXsoKSA9PiBzZXRJbWFnZUxvYWRlZCh0cnVlKX1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldEltYWdlRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBpbWFnZUxvYWRlZCA/IFwiYmxvY2tcIiA6IFwibm9uZVwiIH19XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3Nob3dGYWxsYmFjayAmJiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVJbml0aWFsc30+e2luaXRpYWxzfTwvZGl2PlxuICAgICAgICApfVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuKTtcblxuQmFkZ2VGZWF0dXJlSWNvbi5wcm9wVHlwZXMgPSB7XG4gIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgaW1hZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlSWNvbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiO1xuaW1wb3J0IERpYWxvZ0FjdGlvbnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQWN0aW9uc1wiO1xuaW1wb3J0IERpYWxvZ0NvbnRlbnQgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFwiO1xuaW1wb3J0IERpYWxvZ0NvbnRlbnRUZXh0IGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRUZXh0XCI7XG5pbXBvcnQgRGlhbG9nVGl0bGUgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgQ29uZmlybURpYWxvZyA9ICh7IG9wZW4sIHRpdGxlLCBib2R5LCBvbkNsb3NlLCBvbkNvbmZpcm0gfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8RGlhbG9nXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cImFsZXJ0LWRpYWxvZy10aXRsZVwiXG4gICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgICA+XG4gICAgICA8RGlhbG9nVGl0bGUgaWQ9XCJhbGVydC1kaWFsb2ctdGl0bGVcIj57dGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgICA8RGlhbG9nQ29udGVudFRleHQgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICB7Ym9keX1cbiAgICAgICAgPC9EaWFsb2dDb250ZW50VGV4dD5cbiAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgIDxEaWFsb2dBY3Rpb25zPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ2xvc2V9Pnt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9PC9CdXR0b24+XG4gICAgICAgIDxCdXR0b24gb25DbGljaz17b25Db25maXJtfSBhdXRvRm9jdXM+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbmZpcm1cIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9EaWFsb2dBY3Rpb25zPlxuICAgIDwvRGlhbG9nPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29uZmlybURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBDb250ZW50Q29weUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIjtcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5jb25zdCBDb3B5VGV4dCA9ICh7XG4gIHRleHQsXG4gIHRvb2x0aXBUZXh0LFxuICBoaWRlQ29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSB0cnVlLFxuICByZXZlcnNlZCA9IGZhbHNlLFxuICB3aWR0aCA9IGRlZmF1bHRXaWR0aFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRvb2x0aXBUZXh0VG9Vc2UgPSB0b29sdGlwVGV4dCB8fCB0KFwiZ2VuZXJhbC5jb3B5X3RvX2NsaXBib2FyZFwiKTtcbiAgY29uc3QgW3Rvb2x0aXAsIHNldFRvb2x0aXBdID0gUmVhY3QudXNlU3RhdGUodG9vbHRpcFRleHRUb1VzZSk7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBgJHt0cnVuY2F0ZWQgJiYgc3R5bGVzLnRydW5jYXRlZH0gJHtcbiAgICByZXZlcnNlZCAmJiBzdHlsZXMucmV2ZXJzZWRcbiAgfWA7XG5cbiAgY29uc3QgaGFuZGxlQ29weSA9ICgpID0+IHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgICBzZXRUb29sdGlwKHQoXCJnZW5lcmFsLmNvcGllZFwiKSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRUb29sdGlwKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICAgIH0sIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc05hbWVzfSBzdHlsZT17eyB3aWR0aCB9fT5cbiAgICAgICAge3RleHR9XG4gICAgICA8L3NwYW4+XG4gICAgICB7IWhpZGVDb3B5ICYmIChcbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Rvb2x0aXB9PlxuICAgICAgICAgIDxDb250ZW50Q29weUljb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29weX1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29weS1udW1iZXItYnV0dG9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ29weVRleHQucHJvcFR5cGVzID0ge1xuICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0b29sdGlwVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaGlkZUNvcHk6IFByb3BUeXBlcy5ib29sLFxuICB0cnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICByZXZlcnNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb3B5VGV4dDtcbiIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBBbGVydCwgU25hY2tiYXIsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuXG5jb25zdCBDdXN0b21Ob3RpZmljYXRpb24gPSAoeyBvcGVuLCBvbkNsb3NlLCBtZXNzYWdlLCBzZXZlcml0eSB9KSA9PiB7XG4gIGlmICghbWVzc2FnZSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8U25hY2tiYXJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgYW5jaG9yT3JpZ2luPXt7IHZlcnRpY2FsOiBcInRvcFwiLCBob3Jpem9udGFsOiBcImNlbnRlclwiIH19XG4gICAgICBhdXRvSGlkZUR1cmF0aW9uPXsyMDAwfVxuICAgID5cbiAgICAgIDxBbGVydFxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBzZXZlcml0eT17c2V2ZXJpdHl9XG4gICAgICAgIHZhcmlhbnQ9XCJmaWxsZWRcIlxuICAgICAgICBzeD17eyB3aWR0aDogXCIxMDAlXCIsIGJhY2tncm91bmRDb2xvcjogYCR7c2V2ZXJpdHl9LmxpZ2h0YCB9fVxuICAgICAgICBpY29uTWFwcGluZz17e1xuICAgICAgICAgIHN1Y2Nlc3M6IDxDaGVja0NpcmNsZUljb24gZm9udFNpemU9XCJpbmhlcml0XCIgLz4sXG4gICAgICAgICAgZXJyb3I6IDxFcnJvckljb24gZm9udFNpemU9XCJpbmhlcml0XCIgLz5cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+e21lc3NhZ2V9PC9UeXBvZ3JhcGh5PlxuICAgICAgPC9BbGVydD5cbiAgICA8L1NuYWNrYmFyPlxuICApO1xufTtcblxuQ3VzdG9tTm90aWZpY2F0aW9uLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBtZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXZlcml0eTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tTm90aWZpY2F0aW9uO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5sZXQgZGFya0NvbG9yID0gXCJcIjtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIC8vIEdldCB0aGUgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLy8gUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBDU1MgdmFyaWFibGVcbiAgZGFya0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgIFwiLS1jb2xvcl9iYWNrZ3JvdW5kX2RhcmtcIlxuICApO1xufVxuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcGFsZXR0ZToge1xuICAgIHByaW1hcnk6IHtcbiAgICAgIG1haW46IGRhcmtDb2xvclxuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgcHJpbWFyeTogXCIjMDAwMDAwREVcIixcbiAgICAgIHNlY29uZGFyeTogXCIjMDAwMDAwOTlcIixcbiAgICAgIGxpbms6IFwiIzIxOTZmM1wiXG4gICAgfVxuICB9LFxuICB0eXBvZ3JhcGh5OiB7XG4gICAgYm9keTE6IHtcbiAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgIGZvbnRXZWlnaHQ6IDQwMFxuICAgIH0sXG4gICAgaDU6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNmVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBoNjoge1xuICAgICAgZm9udFNpemU6IFwiMS40ZW1cIixcbiAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgIFwiJi5NdWlUeXBvZ3JhcGh5LWd1dHRlckJvdHRvbVwiOiB7XG4gICAgICAgIG1hcmdpbkJvdHRvbTogXCIyMHB4XCJcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBNdWlGb3JtSGVscGVyVGV4dDoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIi44ZW1cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlCdXR0b246IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIixcbiAgICAgICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICAgICAgbGluZUhlaWdodDogXCIyMnB4XCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxuICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA5OVwiLFxuICAgICAgICAgIFwiJi5NdWktc2VsZWN0ZWRcIjoge1xuICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlUYWJzOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICBpbmRpY2F0b3I6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBDdXN0b21UaGVtZSA9ICh7IGNoaWxkcmVuIH0pID0+IChcbiAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT57Y2hpbGRyZW59PC9UaGVtZVByb3ZpZGVyPlxuKTtcblxuQ3VzdG9tVGhlbWUucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tVGhlbWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG4gIGNvbnN0IHF1ZXN0aW9uTWF4VmFsdWVzID0gcXVlc3Rpb24ubWF4X3NlbGVjdGVkX3ZhbHVlcztcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIGNvbnN0IGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSA9IChjaGVja2VkLCB2YWwpID0+IHtcbiAgICBjb25zdCBjdXJyZW50QW5zID0gdmFsdWUgfHwgW107XG4gICAgY29uc3QgbWF4U2VsZWN0aW9uUmVhY2hlZCA9XG4gICAgICBxdWVzdGlvbk1heFZhbHVlcyAhPT0gMCAmJiBjdXJyZW50QW5zLmxlbmd0aCA9PT0gcXVlc3Rpb25NYXhWYWx1ZXM7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gbWF4U2VsZWN0aW9uUmVhY2hlZCA/IGN1cnJlbnRBbnMgOiBbLi4uY3VycmVudEFucywgdmFsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjdXJyZW50QW5zLmZpbHRlcigodikgPT4gdiAhPT0gdmFsKTtcbiAgICB9XG5cbiAgICBzZXRGaWVsZFZhbHVlKHF1ZXN0aW9uU2x1ZywgbmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsPlxuICAgICAgICAgIDxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD5cbiAgICAgICAgPC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17dmFsdWU/LmluY2x1ZGVzKG9wLnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXYpID0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZShldi50YXJnZXQuY2hlY2tlZCwgb3AudmFsdWUpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0Zvcm1Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmFycmF5LFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggbWFyZ2luPVwibm9ybWFsXCIgZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBzeD17eyBhbGlnbkl0ZW1zOiBcImZsZXgtc3RhcnRcIiB9fVxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIHN4PXt7IG1hcmdpblRvcDogLTEgfX1cbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBNZW51SXRlbSwgU2VsZWN0IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93blF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8SW5wdXRMYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvSW5wdXRMYWJlbD5cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGxhYmVsSWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBpZD17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtvcC5sYWJlbH0gdmFsdWU9e29wLnZhbHVlfT5cbiAgICAgICAgICAgICAge29wLmxhYmVsfVxuICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PlxuICAgICAgICAgIDxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD5cbiAgICAgICAgPC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxSYWRpb0dyb3VwXG4gICAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgdmFsdWU9e29wLnZhbHVlfVxuICAgICAgICAgICAgICBjb250cm9sPXs8UmFkaW8gLz59XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblJhZGlvTGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Hcm91cCwgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBUZXh0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0KSA9PiB7XG4gIGlmIChydWxlLnZpc2liaWxpdHkgPT09IFwiVmlzaWJsZVwiKSB7XG4gICAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgICAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgcmV0dXJuICEhcnVsZVJlc3VsdDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKGAke3Z9YCk7XG4gICAgfVxuICAgIHJldHVybiBgJHt2fWAgPT09IGAke2NvbXBhcmVWYWx9YDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWU/LnRvU3RyaW5nKCkgfHwgbnVsbFxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgb3JpZ2luYWxBbnN3ZXJzLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT4ge1xuICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBjaGVja1J1bGUoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLCBydWxlKTtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBjaGVja1Zpc2liaWxpdHkocnVsZSwgcnVsZVJlc3VsdCk7XG5cbiAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJldHVybiByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKG9yaWdpbmFsQW5zd2Vyc1txdWVzdGlvblNsdWddKSkgfHwgcmVhZE9ubHk7XG4gICAgY29uc3QgUXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQocS50eXBlKTtcblxuICAgIGNvbnN0IGZvcm1pa1Byb3BzID0ge1xuICAgICAgdmFsdWU6IGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIG9uQ2hhbmdlOiBmb3JtaWsuaGFuZGxlQ2hhbmdlLFxuICAgICAgb25CbHVyOiBmb3JtaWsuaGFuZGxlQmx1cixcbiAgICAgIGVycm9yOlxuICAgICAgICBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIEJvb2xlYW4oZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddKSxcbiAgICAgIGhlbHBlclRleHQ6IGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddLFxuICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybWlrLnNldEZpZWxkVmFsdWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxRdWVzdGlvbkZpZWxkQ29tcG9uZW50XG4gICAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgICBxdWVzdGlvbj17cX1cbiAgICAgICAgcXVlc3Rpb25DbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgICAgICBpc0Rpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICB7Li4uZm9ybWlrUHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubWFwKChydWxlKSA9PiByZW5kZXJSdWxlKHJ1bGUsIHF1ZXN0aW9uU2x1ZykpfVxuICAgICAgPC9RdWVzdGlvbkZpZWxkQ29tcG9uZW50PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9PntleHRyYVF1ZXN0aW9ucy5tYXAocmVuZGVyUXVlc3Rpb24pfTwvZGl2Pjtcbn07XG5cbkV4dHJhUXVlc3Rpb25zRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhbGxvd0VkaXQ6IFByb3BUeXBlcy5ib29sLFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV4dHJhUXVlc3Rpb25zRmllbGRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEFzc2lnbmVkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJNZVwiLCBsYWJlbDogXCJNZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJTb21lb25lRWxzZVwiLCBsYWJlbDogXCJTb21lb25lIEVsc2VcIiB9LFxuICAgIHsgdmFsdWU6IFwiTm9ib2R5XCIsIGxhYmVsOiBcIk5vYm9keVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJBc3NpZ25lZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Bc3NpZ25lZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduZWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQmFkZ2VGZWF0dXJlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IGJhZGdlX2ZlYXR1cmVzX3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgaWYgKCFiYWRnZV9mZWF0dXJlc190eXBlcyB8fCBiYWRnZV9mZWF0dXJlc190eXBlcy5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQmFkZ2UgRmVhdHVyZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YmFkZ2VfZmVhdHVyZXNfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5CYWRnZUZlYXR1cmVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIEJ1dHRvbixcbiAgQ2FyZCxcbiAgQ2FyZEhlYWRlcixcbiAgRGl2aWRlcixcbiAgUGFwZXJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVGaWx0ZXIgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlRmlsdGVyXCI7XG5pbXBvcnQge1xuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0VHlwZUZpbHRlciBmcm9tIFwiLi9UaWNrZXRUeXBlRmlsdGVyXCI7XG5pbXBvcnQgQXNzaWduZWRGaWx0ZXIgZnJvbSBcIi4vQXNzaWduZWRGaWx0ZXJcIjtcbmltcG9ydCBTdGF0dXNGaWx0ZXIgZnJvbSBcIi4vU3RhdHVzRmlsdGVyXCI7XG5pbXBvcnQgRnJlZVBhaWRGaWx0ZXIgZnJvbSBcIi4vRnJlZVBhaWRGaWx0ZXJcIjtcbmltcG9ydCBQcm9tb0NvZGVGaWx0ZXIgZnJvbSBcIi4vUHJvbW9Db2RlRmlsdGVyXCI7XG5cbmNvbnN0IEZpbHRlciA9ICh7IG9uRmlsdGVyLCBvblJlc2V0LCBmaWx0ZXIsIGFjdGl2ZUZpbHRlcnNDb3VudCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlclJlc2V0ID0gKCkgPT4ge1xuICAgIG9uUmVzZXQoKTtcbiAgICB0b2dnbGUoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxCYWRnZSBiYWRnZUNvbnRlbnQ9e2FjdGl2ZUZpbHRlcnNDb3VudH0gY29sb3I9XCJwcmltYXJ5XCIgc3g9e3sgbXI6IDEgfX0+XG4gICAgICAgICAgPEZpbHRlckxpc3RJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJJY29ufSAvPlxuICAgICAgICA8L0JhZGdlPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJMYWJlbH0+e3QoXCJmaWx0ZXIuZmlsdGVyXCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmZpbHRlckxpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn0gJHtcbiAgICAgICAgICBzaG93RmlsdGVyTGlzdCA/IHN0eWxlcy5zaG93RmlsdGVyTGlzdCA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxQYXBlciBlbGV2YXRpb249ezh9IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNoZWNrYm94Q29udGFpbmVyfT5cbiAgICAgICAgICA8Q2FyZCB2YXJpYW50PVwib3V0bGluZWRcIj5cbiAgICAgICAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgICAgICAgIHRpdGxlPVwiRmlsdGVyc1wiXG4gICAgICAgICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlRmlsdGVyUmVzZXR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbGVhbkJ1dHRvbn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7dChcImZpbHRlci5jbGVhclwiKX1cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICA8QmFkZ2VGZWF0dXJlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxBc3NpZ25lZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxTdGF0dXNGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VGlja2V0VHlwZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFByb21vQ29kZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1BST01PQ09ERV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxGcmVlUGFpZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0ZSRUVfUEFJRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXIsXG4gIGFjdGl2ZUZpbHRlcnNDb3VudDogd2lkZ2V0U3RhdGUuYWN0aXZlRmlsdGVyc0NvdW50XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShGaWx0ZXIpO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0ZSRUVfUEFJRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEZyZWVQYWlkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJGcmVlXCIsIGxhYmVsOiBcIkZyZWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiUGFpZFwiLCBsYWJlbDogXCJQYWlkXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkZyZWUgLyBQYWlkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZyZWVQYWlkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGcmVlUGFpZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBUZXh0RmllbGRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1BST01PQ09ERSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFByb21vQ29kZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1BST01PQ09ERTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuICBjb25zdCBbcHJvbW9Db2RlLCBzZXRQcm9tb0NvZGVdID0gdXNlU3RhdGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuXG4gIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IERFQk9VTkNFX1ZBTFVFID0gNTAwO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UHJvbW9Db2RlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldikgPT4ge1xuICAgIGNvbnN0IG5ld1Byb21vQ29kZSA9IGV2LnRhcmdldC52YWx1ZTtcbiAgICAvLyB1cGRhdGUgbG9jYWwgc3RhdGUgc28gdGhlIGlucHV0IHJlZmxlY3RzIGNoYW5nZXNcbiAgICBzZXRQcm9tb0NvZGUobmV3UHJvbW9Db2RlKTtcblxuICAgIC8vIHJlbW92ZSBjdXJyZW50IGRlYm91bmNlXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuXG4gICAgLy8gZGVib3VuY2Ugc2V0IHRvIDUwMCBtc1xuICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb25GaWx0ZXIoe1xuICAgICAgICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBuZXdQcm9tb0NvZGVcbiAgICAgIH0pO1xuICAgIH0sIERFQk9VTkNFX1ZBTFVFKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHJlbW92ZSBkZWJvdW5jZSBvbiByZWxvYWRcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlByb21vIENvZGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHB5OiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByb21vIGNvZGVcIlxuICAgICAgICAgICAgdmFsdWU9e3Byb21vQ29kZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAvPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblByb21vQ29kZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbW9Db2RlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5jb25zdCBTZWFyY2ggPSAoeyBvblNlYXJjaCB9KSA9PiB7XG4gIGNvbnN0IHsgZmlsdGVyIH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHNob3dDbG9zZUJ0biA9ICEhZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTtcblxuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogdmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgb25TZWFyY2goe1xuICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIlxuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gd2UgbmVlZCB0aGlzIHdoZW4gc2VhcmNoIGlzIHJlc2V0IGZyb20gb3V0c2lkZSB0aGlzIGNvbXBvbmVudFxuICAgIHNldFNlYXJjaFZhbHVlKGZpbHRlcltGSUxURVJfVkFSX09SREVSX05VTUJFUl0pO1xuICB9LCBbZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2VCdG4gJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgUGFwZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFNvcnQgPSAoeyBvblNvcnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPFBhcGVyXG4gICAgICAgICAgZWxldmF0aW9uPXs4fVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImRlc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJhc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFN0YXR1c0ZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUzogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiSW5jb21wbGV0ZVwiLCBsYWJlbDogXCJJbmNvbXBsZXRlXCIgfSxcbiAgICB7IHZhbHVlOiBcIkNvbXBsZXRlXCIsIGxhYmVsOiBcIkNvbXBsZXRlXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlN0YXR1c1wiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TdGF0dXNGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXR1c0ZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgVGlja2V0VHlwZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyB0aWNrZXRfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiVGlja2V0IFR5cGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3RpY2tldF90eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldFR5cGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFR5cGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGaWx0ZXJzID0gKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkgPT4gKFxuICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgIDxHcmlkXG4gICAgICBpdGVtXG4gICAgICB4cz17Nn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgcGFkZGluZz17MX1cbiAgICAgIGdhcD17Mn1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICA+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IC8+XG4gICAgPC9HcmlkPlxuICA8L0dyaWQ+XG4pO1xuXG5GaWx0ZXJzLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZvcm1Gb290ZXIgPSAoeyBzYXZlTGFiZWwsIGNhbmNlbExhYmVsLCBvbkNsb3NlLCBkaXNhYmxlZCB9KSA9PiAoXG4gIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZm9vdGVyfT5cbiAgICA8QnV0dG9uXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtjYW5jZWxMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNhdmVCdG59XG4gICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtzYXZlTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gIDwvQm94PlxuKTtcblxuRm9ybUZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gIHNhdmVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2FuY2VsTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1Gb290ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEVycm9yTGFiZWwoeyBtZXNzYWdlLCBjb2xvciwgY2xhc3NOYW1lcywgZGF0YVRlc3RJZCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmVycm9yTGFiZWx9ICR7Y2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzfWB9XG4gICAgICBzdHlsZT17eyBjb2xvciB9fVxuICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgPlxuICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvciB9fSAvPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxhYmVsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQmFja2Ryb3AsIENpcmN1bGFyUHJvZ3Jlc3MgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBMb2FkZXIgPSAoeyBvcGVuIH0pID0+IChcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgPEJhY2tkcm9wIG9wZW49e29wZW59IHN4PXsodGhlbWUpID0+ICh7IHpJbmRleDogdGhlbWUuekluZGV4LmRyYXdlciArIDEgfSl9PlxuICAgIDxDaXJjdWxhclByb2dyZXNzIGNvbG9yPVwiaW5oZXJpdFwiIC8+XG4gIDwvQmFja2Ryb3A+XG4pO1xuXG5Mb2FkZXIucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTG9hZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTXlPcmRlcnNUaWNrZXRzID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3QgeyBzdW1taXQsIG1lbWJlck9yZGVycywgb3JkZXJzX2N1cnJlbnRfcGFnZSwgb3JkZXJzX2xhc3RfcGFnZSB9ID1cbiAgICB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBpZD1cImluZmluaXRlV3JhcHBlclwiIGNsYXNzTmFtZT17c3R5bGVzLm15T3JkZXJzV3JhcHBlcn0+XG4gICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzPy5sZW5ndGh9XG4gICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YShvcmRlcnNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgIGhhc01vcmU9e29yZGVyc19jdXJyZW50X3BhZ2UgPCBvcmRlcnNfbGFzdF9wYWdlfVxuICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICA+XG4gICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAga2V5PXtvcmRlci5udW1iZXIgKyBvcmRlci5pZH1cbiAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgVGlja2V0c0ljb24gPSAoKSA9PiAoXG4gIDxzdmdcbiAgICB3aWR0aD1cIjEyOVwiXG4gICAgaGVpZ2h0PVwiODBcIlxuICAgIHZpZXdCb3g9XCIwIDAgMTI5IDgwXCJcbiAgICBmaWxsPVwibm9uZVwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gID5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMjUuMTIyIDM2LjQ3ODFDMTI0LjgxNCAzNy41MTEyIDEyMy43MzggMzguMDg5MSAxMjIuNjYxIDM4LjAzNzZDMTE4LjUwNiAzNy44Mzg2IDExNC41OTMgNDAuNDc1NCAxMTMuMzQ5IDQ0LjY0MTJDMTEyLjEwNSA0OC44MDczIDExMy45MzIgNTMuMTU3NiAxMTcuNTE3IDU1LjI2OTdDMTE4LjQ0NiA1NS44MTY5IDExOS4wMjggNTYuODg5OSAxMTguNzIgNTcuOTIzMUwxMTYuMzY5IDY1Ljc5NjdDMTE2LjA1MyA2Ni44NTUxIDExNC45MzkgNjcuNDU3IDExMy44ODEgNjcuMTQxTDMwLjc2NzUgNDIuMzI3MUMyOS43MDkxIDQyLjAxMTIgMjkuMTA3MiA0MC44OTcgMjkuNDIzMiAzOS44Mzg2TDQwLjM0MzkgMy4yNjAxNkM0MC42NTk5IDIuMjAxNzYgNDEuNzc0IDEuNTk5OTEgNDIuODMyNCAxLjkxNTlMMTI1Ljk0NiAyNi43Mjk3QzEyNy4wMDQgMjcuMDQ1NyAxMjcuNjA2IDI4LjE1OTkgMTI3LjI5IDI5LjIxODNMMTI1LjEyMiAzNi40NzgxWlwiXG4gICAgICBmaWxsPVwid2hpdGVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTEzLjM0OSA0NC42NDEyTDExMi4zOTEgNDQuMzU1MUwxMTIuMzkxIDQ0LjM1NTJMMTEzLjM0OSA0NC42NDEyWk0xMTcuNTE3IDU1LjI2OTdMMTE3LjAwOSA1Ni4xMzEyTDExNy41MTcgNTUuMjY5N1pNMTIyLjY2MSAzOC4wMzc2TDEyMi43MDkgMzcuMDM4N0MxMTguMTA1IDM2LjgxODMgMTEzLjc2OSAzOS43MzgxIDExMi4zOTEgNDQuMzU1MUwxMTMuMzQ5IDQ0LjY0MTJMMTE0LjMwNyA0NC45Mjc0QzExNS40MTYgNDEuMjEyNyAxMTguOTA2IDM4Ljg1ODkgMTIyLjYxNCAzOS4wMzY0TDEyMi42NjEgMzguMDM3NlpNMTEzLjM0OSA0NC42NDEyTDExMi4zOTEgNDQuMzU1MkMxMTEuMDEyIDQ4Ljk3MjUgMTEzLjAzOCA1My43OTE1IDExNy4wMDkgNTYuMTMxMkwxMTcuNTE3IDU1LjI2OTdMMTE4LjAyNCA1NC40MDgxQzExNC44MjYgNTIuNTIzOCAxMTMuMTk4IDQ4LjY0MjEgMTE0LjMwNyA0NC45MjczTDExMy4zNDkgNDQuNjQxMlpNMTE4LjcyIDU3LjkyMzFMMTE3Ljc2MiA1Ny42MzdMMTE1LjQxMSA2NS41MTA2TDExNi4zNjkgNjUuNzk2N0wxMTcuMzI3IDY2LjA4MjhMMTE5LjY3OCA1OC4yMDkxTDExOC43MiA1Ny45MjMxWk0xMTMuODgxIDY3LjE0MUwxMTQuMTY3IDY2LjE4MjhMMzEuMDUzNSA0MS4zNjg5TDMwLjc2NzUgNDIuMzI3MUwzMC40ODE0IDQzLjI4NTRMMTEzLjU5NSA2OC4wOTkyTDExMy44ODEgNjcuMTQxWk0yOS40MjMyIDM5LjgzODZMMzAuMzgxNCA0MC4xMjQ3TDQxLjMwMjEgMy41NDYyNEw0MC4zNDM5IDMuMjYwMTZMMzkuMzg1NyAyLjk3NDA5TDI4LjQ2NSAzOS41NTI1TDI5LjQyMzIgMzkuODM4NlpNNDIuODMyNCAxLjkxNTlMNDIuNTQ2NCAyLjg3NDExTDEyNS42NiAyNy42ODc5TDEyNS45NDYgMjYuNzI5N0wxMjYuMjMyIDI1Ljc3MTVMNDMuMTE4NSAwLjk1NzY5N0w0Mi44MzI0IDEuOTE1OVpNMTI3LjI5IDI5LjIxODNMMTI2LjMzMiAyOC45MzIyTDEyNC4xNjQgMzYuMTkyTDEyNS4xMjIgMzYuNDc4MUwxMjYuMDgxIDM2Ljc2NDJMMTI4LjI0OCAyOS41MDQ0TDEyNy4yOSAyOS4yMTgzWk0xMjUuOTQ2IDI2LjcyOTdMMTI1LjY2IDI3LjY4NzlDMTI2LjE4OSAyNy44NDU5IDEyNi40OSAyOC40MDMgMTI2LjMzMiAyOC45MzIyTDEyNy4yOSAyOS4yMTgzTDEyOC4yNDggMjkuNTA0NEMxMjguNzIyIDI3LjkxNjggMTI3LjgxOSAyNi4yNDU1IDEyNi4yMzIgMjUuNzcxNUwxMjUuOTQ2IDI2LjcyOTdaTTMwLjc2NzUgNDIuMzI3MUwzMS4wNTM1IDQxLjM2ODlDMzAuNTI0MyA0MS4yMTA5IDMwLjIyMzQgNDAuNjUzOSAzMC4zODE0IDQwLjEyNDdMMjkuNDIzMiAzOS44Mzg2TDI4LjQ2NSAzOS41NTI1QzI3Ljk5MSA0MS4xNDAxIDI4Ljg5MzggNDIuODExNCAzMC40ODE0IDQzLjI4NTRMMzAuNzY3NSA0Mi4zMjcxWk0xMTYuMzY5IDY1Ljc5NjdMMTE1LjQxMSA2NS41MTA2QzExNS4yNTMgNjYuMDM5OCAxMTQuNjk2IDY2LjM0MDggMTE0LjE2NyA2Ni4xODI4TDExMy44ODEgNjcuMTQxTDExMy41OTUgNjguMDk5MkMxMTUuMTgyIDY4LjU3MzIgMTE2Ljg1MyA2Ny42NzA0IDExNy4zMjcgNjYuMDgyOEwxMTYuMzY5IDY1Ljc5NjdaTTExNy41MTcgNTUuMjY5N0wxMTcuMDA5IDU2LjEzMTJDMTE3LjY1MyA1Ni41MTA1IDExNy45MDUgNTcuMTU3IDExNy43NjIgNTcuNjM3TDExOC43MiA1Ny45MjMxTDExOS42NzggNTguMjA5MUMxMjAuMTUyIDU2LjYyMjggMTE5LjIzOSA1NS4xMjM0IDExOC4wMjQgNTQuNDA4MUwxMTcuNTE3IDU1LjI2OTdaTTQwLjM0MzkgMy4yNjAxNkw0MS4zMDIxIDMuNTQ2MjRDNDEuNDYwMSAzLjAxNzA0IDQyLjAxNzEgMi43MTYxMSA0Mi41NDY0IDIuODc0MTFMNDIuODMyNCAxLjkxNTlMNDMuMTE4NSAwLjk1NzY5N0M0MS41MzA5IDAuNDgzNzEgMzkuODU5NiAxLjM4NjQ4IDM5LjM4NTcgMi45NzQwOUw0MC4zNDM5IDMuMjYwMTZaTTEyMi42NjEgMzguMDM3NkwxMjIuNjE0IDM5LjAzNjRDMTI0LjAyMSAzOS4xMDM4IDEyNS42MDcgMzguMzUwNSAxMjYuMDgxIDM2Ljc2NDJMMTI1LjEyMiAzNi40NzgxTDEyNC4xNjQgMzYuMTkyQzEyNC4wMjEgMzYuNjcyIDEyMy40NTYgMzcuMDc0NCAxMjIuNzA5IDM3LjAzODdMMTIyLjY2MSAzOC4wMzc2WlwiXG4gICAgICBmaWxsPVwiI0JEQkRCRFwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMDcuOTAzIDIyLjY3NThMOTYuNTY5NiA2MC42Mzc5XCJcbiAgICAgIHN0cm9rZT1cIiNCREJEQkRcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VEYXNoYXJyYXk9XCIyIDVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNOTEuNzQyIDQ1Ljg5NTJDOTEuNzQxOSA0Ni45NzM0IDkwLjg3NjUgNDcuODM0NyA4OS44Mjk3IDQ4LjA5MzNDODUuNzkwNiA0OS4wOTEzIDgyLjc5NTkgNTIuNzM3NiA4Mi43OTUzIDU3LjA4NTJDODIuNzk0OCA2MS40MzI5IDg1Ljc4ODcgNjUuMDc5MiA4OS44Mjc2IDY2LjA3NzlDOTAuODc0MiA2Ni4zMzY3IDkxLjczOTQgNjcuMTk4MyA5MS43MzkyIDY4LjI3NjRMOTEuNzM4MiA3Ni40OTM1QzkxLjczODEgNzcuNTk4MSA5MC44NDI2IDc4LjQ5MzQgODkuNzM4IDc4LjQ5MzNMMi45OTk3MiA3OC40ODI3QzEuODk1MTUgNzguNDgyNSAwLjk5OTgyNSA3Ny41ODcgMC45OTk5NiA3Ni40ODI0TDEuMDA0NjQgMzguMzA4NkMxLjAwNDc3IDM3LjIwNCAxLjkwMDMxIDM2LjMwODcgMy4wMDQ4OCAzNi4zMDg4TDg5Ljc0MzIgMzYuMzE5NUM5MC44NDc3IDM2LjMxOTYgOTEuNzQzMSAzNy4yMTUxIDkxLjc0MjkgMzguMzE5N0w5MS43NDIgNDUuODk1MlpcIlxuICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTgyLjc5NTMgNTcuMDg1Mkw4MS43OTUzIDU3LjA4NTFMODEuNzk1MyA1Ny4wODUxTDgyLjc5NTMgNTcuMDg1MlpNODkuODI5NyA0OC4wOTMzTDkwLjA2OTYgNDkuMDY0MUw4OS44Mjk3IDQ4LjA5MzNaTTg5LjgyOTcgNDguMDkzM0w4OS41ODk5IDQ3LjEyMjVDODUuMTE1IDQ4LjIyODEgODEuNzk2IDUyLjI2NjcgODEuNzk1MyA1Ny4wODUxTDgyLjc5NTMgNTcuMDg1Mkw4My43OTUzIDU3LjA4NTRDODMuNzk1OCA1My4yMDg0IDg2LjQ2NjMgNDkuOTU0NCA5MC4wNjk2IDQ5LjA2NDFMODkuODI5NyA0OC4wOTMzWk04Mi43OTUzIDU3LjA4NTJMODEuNzk1MyA1Ny4wODUxQzgxLjc5NDcgNjEuOTAzNiA4NS4xMTI5IDY1Ljk0MjIgODkuNTg3NSA2Ny4wNDg3TDg5LjgyNzYgNjYuMDc3OUw5MC4wNjc2IDY1LjEwNzFDODYuNDY0NCA2NC4yMTYyIDgzLjc5NDggNjAuOTYyMiA4My43OTUzIDU3LjA4NTNMODIuNzk1MyA1Ny4wODUyWk05MS43MzkyIDY4LjI3NjRMOTAuNzM5MiA2OC4yNzYzTDkwLjczODIgNzYuNDkzNEw5MS43MzgyIDc2LjQ5MzVMOTIuNzM4MiA3Ni40OTM3TDkyLjczOTIgNjguMjc2Nkw5MS43MzkyIDY4LjI3NjRaTTg5LjczOCA3OC40OTMzTDg5LjczODEgNzcuNDkzM0wyLjk5OTg0IDc3LjQ4MjdMMi45OTk3MiA3OC40ODI3TDIuOTk5NiA3OS40ODI3TDg5LjczNzkgNzkuNDkzM0w4OS43MzggNzguNDkzM1pNMC45OTk5NiA3Ni40ODI0TDEuOTk5OTYgNzYuNDgyNUwyLjAwNDY0IDM4LjMwODdMMS4wMDQ2NCAzOC4zMDg2TDAuMDA0NjM3NzYgMzguMzA4NUwtMy45NjA3NWUtMDUgNzYuNDgyM0wwLjk5OTk2IDc2LjQ4MjRaTTMuMDA0ODggMzYuMzA4OEwzLjAwNDc2IDM3LjMwODhMODkuNzQzIDM3LjMxOTVMODkuNzQzMiAzNi4zMTk1TDg5Ljc0MzMgMzUuMzE5NUwzLjAwNTAxIDM1LjMwODhMMy4wMDQ4OCAzNi4zMDg4Wk05MS43NDI5IDM4LjMxOTdMOTAuNzQyOSAzOC4zMTk2TDkwLjc0MiA0NS44OTUxTDkxLjc0MiA0NS44OTUyTDkyLjc0MiA0NS44OTUzTDkyLjc0MjkgMzguMzE5OEw5MS43NDI5IDM4LjMxOTdaTTg5Ljc0MzIgMzYuMzE5NUw4OS43NDMgMzcuMzE5NUM5MC4yOTUzIDM3LjMxOTUgOTAuNzQzIDM3Ljc2NzMgOTAuNzQyOSAzOC4zMTk2TDkxLjc0MjkgMzguMzE5N0w5Mi43NDI5IDM4LjMxOThDOTIuNzQzMSAzNi42NjMgOTEuNDAwMSAzNS4zMTk3IDg5Ljc0MzMgMzUuMzE5NUw4OS43NDMyIDM2LjMxOTVaTTIuOTk5NzIgNzguNDgyN0wyLjk5OTg0IDc3LjQ4MjdDMi40NDc1NSA3Ny40ODI2IDEuOTk5ODkgNzcuMDM0OCAxLjk5OTk2IDc2LjQ4MjVMMC45OTk5NiA3Ni40ODI0TC0zLjk2MDc1ZS0wNSA3Ni40ODIzQy0wLjAwMDI0MjYxOSA3OC4xMzkyIDEuMzQyNzQgNzkuNDgyNSAyLjk5OTYgNzkuNDgyN0wyLjk5OTcyIDc4LjQ4MjdaTTkxLjczODIgNzYuNDkzNUw5MC43MzgyIDc2LjQ5MzRDOTAuNzM4MiA3Ny4wNDU3IDkwLjI5MDQgNzcuNDkzNCA4OS43MzgxIDc3LjQ5MzNMODkuNzM4IDc4LjQ5MzNMODkuNzM3OSA3OS40OTMzQzkxLjM5NDcgNzkuNDkzNSA5Mi43MzggNzguMTUwNSA5Mi43MzgyIDc2LjQ5MzdMOTEuNzM4MiA3Ni40OTM1Wk04OS44Mjc2IDY2LjA3NzlMODkuNTg3NSA2Ny4wNDg3QzkwLjMxMjggNjcuMjI4IDkwLjczOTMgNjcuNzc1NCA5MC43MzkyIDY4LjI3NjNMOTEuNzM5MiA2OC4yNzY0TDkyLjczOTIgNjguMjc2NkM5Mi43Mzk1IDY2LjYyMTEgOTEuNDM1NiA2NS40NDU0IDkwLjA2NzYgNjUuMTA3MUw4OS44Mjc2IDY2LjA3NzlaTTEuMDA0NjQgMzguMzA4NkwyLjAwNDY0IDM4LjMwODdDMi4wMDQ3MSAzNy43NTY0IDIuNDUyNDggMzcuMzA4OCAzLjAwNDc2IDM3LjMwODhMMy4wMDQ4OCAzNi4zMDg4TDMuMDA1MDEgMzUuMzA4OEMxLjM0ODE1IDM1LjMwODYgMC4wMDQ4NDA3NyAzNi42NTE2IDAuMDA0NjM3NzYgMzguMzA4NUwxLjAwNDY0IDM4LjMwODZaTTg5LjgyOTcgNDguMDkzM0w5MC4wNjk2IDQ5LjA2NDFDOTEuNDM3NiA0OC43MjYxIDkyLjc0MTggNDcuNTUwOCA5Mi43NDIgNDUuODk1M0w5MS43NDIgNDUuODk1Mkw5MC43NDIgNDUuODk1MUM5MC43NDE5IDQ2LjM5NiA5MC4zMTUzIDQ2Ljk0MzMgODkuNTg5OSA0Ny4xMjI1TDg5LjgyOTcgNDguMDkzM1pcIlxuICAgICAgZmlsbD1cIiNCREJEQkRcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNNzEuMjk0OSAzNy41OTU3TDcxLjI5MDEgNzcuMjEzNlwiXG4gICAgICBzdHJva2U9XCIjQkRCREJEXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlRGFzaGFycmF5PVwiMiA1XCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldHNJY29uO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBUaWNrZXRzSWNvbiBmcm9tIFwiLi9UaWNrZXRzSWNvblwiO1xuaW1wb3J0IHsgVEFCUyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTm9UaWNrZXRzRm91bmQgPSAoeyBwYWdlVmlldywgb25DbGljayB9KSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0LCBsb2FkaW5nIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9KTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGdldENvbnRlbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgbWFpbHRvVGFnID0gKFxuICAgICAgPGEgaHJlZj17YG1haWx0bzoke3N1bW1pdC5zdXBwb3J0X2VtYWlsfWB9PlxuICAgICAgICB7dChcImdlbmVyYWwuY29udGFjdF9zdXBwb3J0XCIpfVxuICAgICAgPC9hPlxuICAgICk7XG5cbiAgICBzd2l0Y2ggKHBhZ2VWaWV3KSB7XG4gICAgICBjYXNlIFRBQlMuT1JERVJTOiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLm9yZGVycy50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dChcIm5vX3Jlc3VsdHMub3JkZXJzLmJvZHlcIil9IHttYWlsdG9UYWd9LlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcImxhYmVscy5hc3NpZ25lZF90b19tZVwiKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2FzZSBUQUJTLlRJQ0tFVFM6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMuYXNzaWduZWQudGl0bGVcIiksXG4gICAgICAgICAgYm9keTogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3QoXCJub19yZXN1bHRzLmFzc2lnbmVkLmJvZHlcIil9IHttYWlsdG9UYWd9LlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcIm9yZGVycy50aXRsZVwiKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5maWx0ZXIudGl0bGVcIiksXG4gICAgICAgICAgYm9keTogdChcIm5vX3Jlc3VsdHMuZmlsdGVyLmJvZHlcIiksXG4gICAgICAgICAgYnV0dG9uTGFiZWw6IHQoXCJmaWx0ZXIuY2xlYXJfZmlsdGVyc1wiKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCB7IHRpdGxlLCBib2R5LCBidXR0b25MYWJlbCB9ID0gZ2V0Q29udGVudCgpO1xuXG4gIGlmIChsb2FkaW5nKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmljb25XcmFwcGVyfT5cbiAgICAgICAgPFRpY2tldHNJY29uIC8+XG4gICAgICA8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYm9keX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Ym9keX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHtidXR0b25MYWJlbH1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTm9UaWNrZXRzRm91bmQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeVRhYmxlID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgc3ViVG90YWwsXG4gICAgdGlja2V0U3VtbWFyeSxcbiAgICB0YXhlc1N1bW1hcnlcbiAgfSA9IGNhbGN1bGF0ZU9yZGVyVG90YWxzKHsgb3JkZXIsIHN1bW1pdCB9KTtcblxuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuc3ViX3RvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7c3ViVG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmXG4gICAgICAgIHRheGVzU3VtbWFyeT8ubGVuZ3RoID4gMCAmJlxuICAgICAgICB0YXhlc1N1bW1hcnkubWFwKCh0YXgpID0+IChcbiAgICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0ga2V5PXt0YXguaWR9PlxuICAgICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICAgIHt0YXgubmFtZX1cbiAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAge3RheC5hbW91bnR9XG4gICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHthbW91bnRUb3RhbH1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9HcmlkPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuT3JkZXJTdW1tYXJ5VGFibGUucHJvcFR5cGVzID0ge1xuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBjdXJyZW5jeTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkaXNjb3VudF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGF4ZXNfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnlUYWJsZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IHRpY2tldHNSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyB1c2VTdW1taXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N1bW1pdFV0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZEVtYWlsU3VwcG9ydCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0cyxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgaXNTdGFydGVkIH0gPSB1c2VTdW1taXREZXRhaWxzKHsgc3VtbWl0IH0pO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgaXNJblJlZnVuZGFibGVQZXJpb2QgPVxuICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUgPiBub3c7XG4gIGNvbnN0IGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0ID0gdGlja2V0c1JlZnVuZGFibGUodGlja2V0cyk7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9ICEhKFxuICAgIGlzSW5SZWZ1bmRhYmxlUGVyaW9kICYmXG4gICAgIWlzU3RhcnRlZCAmJlxuICAgIGF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0XG4gICk7XG4gIGNvbnN0IGhhc1JlZnVuZFJlcXVlc3RzID0gdGlja2V0cz8uc29tZSgodCkgPT4gdC5yZWZ1bmRfcmVxdWVzdHMubGVuZ3RoID4gMCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCByZXF1ZXN0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgICR7c3VibWl0UmVxdWVzdCA/IHN0eWxlcy5yZWZ1bmREaXNhYmxlZCA6IFwiXCJ9YH1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBkaXNhYmxlZD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAge2hhc1JlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgb25DbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5yZWZ1bmRfZGV0YWlsc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgICAgPEJ1dHRvblxuICAgICAgICBhcmlhLWxhYmVsPVwiZW1haWwgc3VwcG9ydCBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICB0YXJnZXQ9XCJfdG9wXCJcbiAgICAgICAgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiXG4gICAgICAgIGhyZWY9e2BtYWlsdG86JHtzdW1taXQuc3VwcG9ydF9lbWFpbH1gfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX2luZm8uZW1haWxfc3VwcG9ydFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVmdW5kRW1haWxTdXBwb3J0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmREZXRhaWxDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRFbWFpbFN1cHBvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeVRhYmxlIGZyb20gXCIuL09yZGVyU3VtbWFyeVRhYmxlXCI7XG5pbXBvcnQgUmVmdW5kRW1haWxTdXBwb3J0IGZyb20gXCIuL1JlZnVuZEVtYWlsU3VwcG9ydFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlclN1bW1hcnkgPSAoe1xuICBvcmRlcixcbiAgc3VtbWl0LFxuICBvblJlZnVuZENsaWNrLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlXcmFwcGVyfVxuICAgICAgICBzeD17eyBwdDogNCwgcHg6IDQgfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxoMz57dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfc3VtbWFyeVwiKX08L2gzPlxuICAgICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIHhzPXsxMn1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm99XG4gICAgICAgICAgICBzeD17eyBwYjogMyB9fVxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxPcmRlclN1bW1hcnlUYWJsZSBvcmRlcj17b3JkZXJ9IHN1bW1pdD17c3VtbWl0fSAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IHhzPXsxMn0gc3g9e3sgcGI6IDMgfX0+XG4gICAgICAgIDxSZWZ1bmRFbWFpbFN1cHBvcnRcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17b25SZWZ1bmREZXRhaWxDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xufTtcbk9yZGVyU3VtbWFyeS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIHN1Ym1pdFJlcXVlc3Q6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlclN1bW1hcnk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnblRvTWUgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UsXG4gICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9PlxuICAgICAgPGRpdiBpZD1cImFzc2lnbmVkVG9NZVdyYXBwZXJcIiBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZFRvTWVXcmFwcGVyfT5cbiAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgZGF0YUxlbmd0aD17dXNlclRpY2tldHM/Lmxlbmd0aH1cbiAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEodXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgIGhhc01vcmU9e3VzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgPCB1c2VyX3RpY2tldHNfbGFzdF9wYWdlfVxuICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn0+XG4gICAgICAgICAgICB7dXNlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25Ub01lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBHcmlkLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduZWRUbyA9ICh7IGVtYWlsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiPlxuICAgICAgICB7ZW1haWx9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBFeHRlcm5hbEFzc2lnbmVkVG8gPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF9ieVwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgTWFuYWdlRm9yID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMubWFuYWdlX2ZvclwiKX06PC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj5cbiAgICAgICAge2ZpcnN0TmFtZX0ge2xhc3ROYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgQXR0ZW5kZWVTdGF0dXMgPSAoeyB0aWNrZXQsIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gIXRpY2tldC5vd25lcj8uZW1haWwgJiYgdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgaXNEZWxlZ2F0ZWQgPSAhIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxzcGFuXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLXVuYXNzaWduZWRcIlxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXR0ZW5kZWVfc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICA8L3NwYW4+XG4gICAgKTtcbiAgfVxuXG4gIGlmICh0aWNrZXQub3duZXI/LmVtYWlsKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8QXNzaWduZWRUbyBlbWFpbD17dGlja2V0Lm93bmVyLmVtYWlsfSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPEV4dGVybmFsQXNzaWduZWRUb1xuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vcmRlcj8ub3duZXJfbGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8TWFuYWdlRm9yXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm93bmVyPy5maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm93bmVyPy5sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgIDwvR3JpZD5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5BdHRlbmRlZVN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXR0ZW5kZWVTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9LCBbb3JkZXI/LnRpY2tldHNfdG90YWxdKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiwgQm94LCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgQmFkZ2VGZWF0dXJlSWNvbiBmcm9tIFwiLi4vQmFkZ2VGZWF0dXJlSWNvblwiO1xuaW1wb3J0IHsgcmVzZXRUaWNrZXQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2sgYWxpZ25JdGVtcz1cImNlbnRlclwiIGRpcmVjdGlvbj1cInJvd1wiPlxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3RmluaXNoVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmRldGFpbCl9XG4gICAgICA+XG4gICAgICAgIHtpc0luY29tcGxldGVcbiAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmZpbmlzaF90aWNrZXRcIilcbiAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlYXNzaWduIHRpY2tldCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlYXNzaWduQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MucmVhc3NpZ24pfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnJlYXNzaWduX3RpY2tldFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvU3RhY2s+XG4gICk7XG59O1xuXG5UaWNrZXRDVEFzLnByb3BUeXBlcyA9IHtcbiAgaXNJbmNvbXBsZXRlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1VuYXNzaWduZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzUmVhc3NpZ25hYmxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBvbk9wZW5DbGljazogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuY29uc3QgT3JkZXJMaXN0VGlja2V0cyA9ICh7XG4gIHRpY2tldCxcbiAgc3VtbWl0LFxuICBpc1JlZnVuZE1vZGFsLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW21vZGFsT3Blbiwgc2V0TW9kYWxPcGVuXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3Qgb25SZWFzc2lnbmFibGVQZXJpb2QgPSByZWFzc2lnbkRhdGUgPiBub3c7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID1cbiAgICBvblJlYXNzaWduYWJsZVBlcmlvZCAmJiBjYW5SZWFzc2lnbiAmJiAhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKG51bGwpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9ICh2aWV3KSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRUaWNrZXQoKSk7XG4gICAgc2V0TW9kYWxPcGVuKHZpZXcpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlcldyYXBwZXJ9ICR7XG4gICAgICAgIGlzUmVmdW5kTW9kYWwgPyBzdHlsZXMucmVmdW5kTW9kYWwgOiBcIlwiXG4gICAgICB9ICR7aXNSZWZ1bmRNb2RhbCAmJiAhaXNSZWZ1bmRhYmxlID8gc3R5bGVzLmRpc2FibGVkUmVmdW5kIDogXCJcIn0gJHtcbiAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kID8gc3R5bGVzLnNlbGVjdGVkIDogXCJcIlxuICAgICAgfWB9XG4gICAgPlxuICAgICAge2lzUmVmdW5kTW9kYWwgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIHhzPXsxfSBwYWRkaW5nPXsyfSBjbGFzc05hbWU9e3N0eWxlcy5jaGVja2JveH0+XG4gICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHRpY2tldCBjaGVja2JveFwiXG4gICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZWxlY3RUb1JlZnVuZChlLCB0aWNrZXQpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjoge1xuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAxOFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1JlZnVuZGFibGV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIGl0ZW1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgeHM9e2lzUmVmdW5kTW9kYWwgPyAxMSA6IDEyfVxuICAgICAgPlxuICAgICAgICA8R3JpZFxuICAgICAgICAgIHhzPXs4fVxuICAgICAgICAgIHB5PXsyfVxuICAgICAgICAgIHBsPXs0fVxuICAgICAgICAgIGl0ZW1cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUaWNrZXRUeXBlfVxuICAgICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IHB5PXsyfSBwcj17NH0gaXRlbT5cbiAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcz8ubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2JmLm5hbWV9IGtleT17YmYubmFtZX0+XG4gICAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVJY29uIG5hbWU9e2JmLm5hbWV9IGltYWdlPXtiZi5pbWFnZX0gLz5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiA0LCBwYjogMiB9fSBpdGVtPlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1c1xuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ9eyEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEZvb3Rlcn0gcHg9e3sgeHM6IDEgfX0gcGI9e3sgeHM6IDIgfX0+XG4gICAgICAgICAgPEJveD5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfT5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmICFpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGUgJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17W21vZGFsVmlld3MucmVhc3NpZ24sIG1vZGFsVmlld3MuYXNzaWduXS5pbmNsdWRlcyhtb2RhbE9wZW4pfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgaXNSZWZ1bmRNb2RhbDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNlbGVjdFRvUmVmdW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0VGlja2V0cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgUmVmdW5kRGV0YWlscyBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlsc1wiO1xuXG5jb25zdCBUYWJQYW5lbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgPSAoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG4gIGNvbnN0IFt0aWNrZXRzVG9SZWZ1bmQsIHNldFRpY2tldHNUb1JlZnVuZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzdWJtaXRSZXF1ZXN0LCBzZXRTdWJtaXRSZXF1ZXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZnVuZERldGFpbHNPcGVuLCBzZXRSZWZ1bmREZXRhaWxzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgICAgICh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWRcbiAgICAgICk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlU3VibWl0UmVxdWVzdCA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgIG1lc3NhZ2U9e3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgICBjb2xvcj1cIiNmZjk4MDBcIlxuICAgICAgICBkYXRhVGVzdElkPVwibW9yZS1kZXRhaWxzLWxhYmVsXCJcbiAgICAgIC8+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzIHx8IFtdfVxuICAgICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBjbG9zZVN1Ym1pdFJlcXVlc3QoKX1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMSwgbGc6IDAgfSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItdGlja2V0LWluZm8tY29udGFpbmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17b3JkZXIubnVtYmVyfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2lzTW9iaWxlICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzeD17eyBwYWRkaW5nOiBcIjVweCAxMHB4XCIgfX1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vYmlsZVZpZXdhYmxlKCFpc01vYmlsZVZpZXdhYmxlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNNb2JpbGVWaWV3YWJsZVxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmhpZGVfdGlja2V0c1wiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEdyaWRcbiAgICAgICAga2V5PXtvcmRlci5pZH1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHJvd1NwYWNpbmc9ezF9XG4gICAgICAgIGNvbHVtblNwYWNpbmc9e3sgeHM6IDEsIHNtOiAyLCBtZDogMyB9fVxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0gJHtcbiAgICAgICAgICBpc01vYmlsZSAmJiAhaXNNb2JpbGVWaWV3YWJsZSA/IHN0eWxlcy5kaXNwbGF5X25vbmUgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgICBzeD17e1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHtcbiAgICAgICAgICAgIG1kOiBcInJvd1wiLFxuICAgICAgICAgICAgbGc6IFwicm93XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDQsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlXG4gICAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9eyEhZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgeyBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZERldGFpbHMgPSAoeyB0aWNrZXRzLCBjdXJyZW5jeSwgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgcmVxdWVzdGVkVGlja2V0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyh0aWNrZXRzKSxcbiAgICBbdGlja2V0c11cbiAgKTtcbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWZ1bmQtZGV0YWlsc1wiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgPlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjAgNXJlbVwiXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXF1ZXN0ZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGN1cnJlbmN5PXtjdXJyZW5jeX1cbiAgICAgICAgICAgIHJlZnVuZERldGFpbHNcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5SZWZ1bmREZXRhaWxzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmREZXRhaWxzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgSWNvbkJ1dHRvbiwgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB0b29sdGlwQ2xhc3NlcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IEluZm9JY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBSZWZ1bmRTdGF0dXMgZnJvbSBcIi4vUmVmdW5kU3RhdHVzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVJY29uIGZyb20gXCIuLi9CYWRnZUZlYXR1cmVJY29uXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBmb3JtYXRDdXJyZW5jeSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgPSAoeyB0aWNrZXQsIGN1cnJlbmN5LCByZWZ1bmREZXRhaWxzIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IEdSSURfOCA9IDg7XG4gIGNvbnN0IEdSSURfMTIgPSAxMjtcblxuICBjb25zdCBQQURESU5HXzIgPSAyO1xuXG4gIGNvbnN0IGFwcHJvdmVkUmVmdW5kcyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHMuZmlsdGVyKFxuICAgIChyZWZ1bmQpID0+IHJlZnVuZC5zdGF0dXMgPT09IFwiQXBwcm92ZWRcIlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkgPSB7fTtcblxuICBhcHByb3ZlZFJlZnVuZHMuZm9yRWFjaCgocmVmdW5kKSA9PiB7XG4gICAgcmVmdW5kLnJlZnVuZGVkX3RheGVzLmZvckVhY2goKHJ0KSA9PiB7XG4gICAgICBjb25zdCB0YXhJZCA9IHJ0LnRheC5pZDtcbiAgICAgIGlmICghcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0pIHtcbiAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0gPSB7XG4gICAgICAgICAgbmFtZTogcnQudGF4Lm5hbWUsXG4gICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudDogMFxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF0udG90YWxSZWZ1bmRlZFRheEFtb3VudCArPVxuICAgICAgICBydC5yZWZ1bmRlZF9hbW91bnQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IEh0bWxUb29sdGlwID0gc3R5bGVkKCh7IGNsYXNzTmFtZSwgLi4ucHJvcHMgfSkgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIDxUb29sdGlwIHsuLi5wcm9wc30gY2xhc3Nlcz17eyBwb3BwZXI6IGNsYXNzTmFtZSB9fSAvPlxuICApKSgoKSA9PiAoe1xuICAgIFtgJiAuJHt0b29sdGlwQ2xhc3Nlcy50b29sdGlwfWBdOiB7XG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2Y1ZjVmOVwiLFxuICAgICAgY29sb3I6IFwicmdiYSgwLCAwLCAwLCAwLjg3KVwiLFxuICAgICAgbWF4V2lkdGg6IDIyMCxcbiAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgYm9yZGVyOiBcIjFweCBzb2xpZCAjZGFkZGU5XCJcbiAgICB9XG4gIH0pKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn0gJHtcbiAgICAgICAgcmVmdW5kRGV0YWlscyA/IHN0eWxlcy5yZWZ1bmREZXRhaWwgOiBcIlwiXG4gICAgICB9IGB9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9e0dSSURfMTJ9XG4gICAgICAgIHNtPXtyZWZ1bmREZXRhaWxzID8gR1JJRF84IDogR1JJRF8xMn1cbiAgICAgICAgaXRlbVxuICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgIHB0PXsyfVxuICAgICAgICBweD17NH1cbiAgICAgID5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBpdGVtPlxuICAgICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXM/Lm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgICAgPEJhZGdlRmVhdHVyZUljb24ga2V5PXtiZi5uYW1lfSBuYW1lPXtiZi5uYW1lfSBpbWFnZT17YmYuaW1hZ2V9IC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHNtPXs0fSB4cz17MTJ9IHB4PXt7IHNtOiAyLCB4czogNCB9fSBweT17eyB4czogMSwgc206IDIgfX0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzbT17OH0gY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0QXR0ZW5kZWV9PlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTogPENvcHlUZXh0IHRleHQ9e3RpY2tldC5udW1iZXJ9IC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtyZWZ1bmREZXRhaWxzICYmIHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IG1kPXs0fSBwbD17eyB4czogMCwgc206IDQgfX0+XG4gICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICBSZWZ1bmRlZFxuICAgICAgICAgICAge2FwcHJvdmVkUmVmdW5kcy5zb21lKChyKSA9PiByLnJlZnVuZGVkX3RheGVzLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgPEh0bWxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC5yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgIFRpY2tldCBBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8Yj5UYXhlczwvYj5cbiAgICAgICAgICAgICAgICAgICAge09iamVjdC5rZXlzKHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkpLm1hcCgodGF4SWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsIG5hbWUgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXt0YXhJZH0+e2Ake25hbWV9IC0gJHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjdXJyZW5jeSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApfWB9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8SW5mb0ljb24gLz5cbiAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDwvSHRtbFRvb2x0aXA+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICB7bW9tZW50KFxuICAgICAgICAgICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzWzBdLmFjdGlvbl9kYXRlICogTUlMTElTRUNfVE9fU0VDXG4gICAgICAgICAgICApLmZvcm1hdChcIk1NTSBERCwgWVlZWVwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgICB7IXJlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17MTJ9IHByPXs0fSBwYj17Mn0+XG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtPlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdGVkVGlja2V0LnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZ1bmREZXRhaWxzOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENoaXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHN0YXR1c0NvbG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvcih0aWNrZXQpLFxuICAgIFt0aWNrZXRdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPENoaXBcbiAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgcmVmdW5kIHN0YXR1cyBsYWJlbFwiXG4gICAgICBsYWJlbD17dChgdGlja2V0X3N0YXR1cy5yZWZ1bmRfcmVxdWVzdF8ke3N0YXR1c0NvbG9yfWApfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXNbc3RhdHVzQ29sb3JdfWB9XG4gICAgLz5cbiAgKTtcbn07XG5cblJlZnVuZFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVEhSRUUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdHNNb2RhbCA9ICh7XG4gIHRpY2tldHMsXG4gIHN1bW1pdCxcbiAgb3BlbixcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UsXG4gIG9uQ2xvc2VTbGlkZXIsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIHVuc2VsZWN0UmVmdW5kVGlja2V0c1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbmZpcm1SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX1RXTyk7XG4gIH07XG5cbiAgY29uc3QgZ29CYWNrVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHM6IHRpY2tldHNUb1JlZnVuZCB9KSkudGhlbigocmVzKSA9PiB7XG4gICAgICBkaXNwYXRjaCh1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkKHJlcykpOyAvLyByZXR1cm5pbmcgd2hpY2ggdGlja2V0cyB3ZXJlIHN1Y2Nlc3NmdWxcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA9PT0gdGlja2V0c1RvUmVmdW5kLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVEhSRUUpOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9zZWxlY3RfcmVmdW5kXCIpfVxuICAgICAgPC9oMj5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgIGtleT17YHRpY2tldC0ke3RpY2tldC5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17XG4gICAgICAgICAgICAgICEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbFxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjb25maXJtUmVmdW5kfVxuICAgICAgICAgIGRpc2FibGVkPXt0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveCBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIj5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NvbmZpcm1fcmVmdW5kXCIpfVxuICAgICAgPC9oMz5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHNUb1JlZnVuZC5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5DVEFCdXR0b25XcmFwcGVyfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtcmV0dXJuLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2dvQmFja1RvUmVmdW5kfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmJhY2tcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFRocmVlID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBjYXNlIFNURVBfVEhSRUU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVGhyZWUoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlZnVuZC1yZXF1ZXN0c1wiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgPlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgRHJhd2VyLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHtcbiAgaWQsXG4gIHRpdGxlLFxuICBoZWFkZXJDaGlsZHJlbiA9IG51bGwsXG4gIGNoaWxkcmVuLFxuICBvcGVuLFxuICBvbkNsb3NlLFxuICBjbGFzc05hbWVcbn0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtZHJhd2VyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIHt0aXRsZSAmJiAoXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAge3RpdGxlfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICApfVxuICAgICAge2hlYWRlckNoaWxkcmVufVxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGhlYWRlckNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJpZ2h0RHJhd2VyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTdW1taXRIZWFkZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICBkYXRhLXRlc3RpZD1cIm15LW9yZGVycy10aWNrZXQtaGVhZGVyXCJcbiAgICA+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5kYXRlc19sYWJlbH08L2gyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VtbWl0SGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFN1bW1pdEhlYWRlciBmcm9tIFwiLi4vU3VtbWl0SGVhZGVyXCI7XG5pbXBvcnQgTm9UaWNrZXRzRm91bmQgZnJvbSBcIi4uL05vVGlja2V0c0ZvdW5kXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBUYWJXcmFwcGVyID0gKHsgdGFiLCBjaGlsZHJlbiwgc2V0VGFiIH0pID0+IHtcbiAgY29uc3QgeyBtZW1iZXJPcmRlcnMsIHVzZXJUaWNrZXRzLCBhY3RpdmVGaWx0ZXJzQ291bnQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge31cbiAgKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB0aWNrZXRzID0gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyB1c2VyVGlja2V0cyA6IG1lbWJlck9yZGVycztcbiAgY29uc3QgaGFzVGlja2V0cyA9IHRpY2tldHMubGVuZ3RoID4gMDtcbiAgY29uc3QgaXNGaWx0ZXJlZCA9IGFjdGl2ZUZpbHRlcnNDb3VudCA+IDA7XG5cbiAgY29uc3QgY2xlYXJGaWx0ZXJzID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IGdldFBhZ2VWaWV3ID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gXCJmaWx0ZXJcIjtcbiAgICByZXR1cm4gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyBUQUJTLlRJQ0tFVFMgOiBUQUJTLk9SREVSUztcbiAgfTtcblxuICBjb25zdCBnZXRPbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gY2xlYXJGaWx0ZXJzO1xuICAgIGNvbnN0IHRhYlRvTGluayA9IHRhYiA9PT0gVEFCUy5USUNLRVRTID8gVEFCUy5PUkRFUlMgOiBUQUJTLlRJQ0tFVFM7XG4gICAgcmV0dXJuICgpID0+IHNldFRhYih0YWJUb0xpbmspO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHshaGFzVGlja2V0cyAmJiAoXG4gICAgICAgIDxOb1RpY2tldHNGb3VuZCBwYWdlVmlldz17Z2V0UGFnZVZpZXcoKX0gb25DbGljaz17Z2V0T25DbGljaygpfSAvPlxuICAgICAgKX1cbiAgICAgIHtoYXNUaWNrZXRzICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHB0OiA2LCBwYjogMyB9fT5cbiAgICAgICAgICAgIDxTdW1taXRIZWFkZXIgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRhYldyYXBwZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgQ29sbGFwc2UsIERpdmlkZXIsIExpbmsgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi4vUmVhc3NpZ25Gb3JtXCI7XG5pbXBvcnQgRGVsZWdhdGVGb3JtIGZyb20gXCIuLi9EZWxlZ2F0ZUZvcm1cIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IENvbmZpcm1EaWFsb2cgZnJvbSBcIi4uLy4uLy4uL0NvbmZpcm1EaWFsb2dcIjtcblxuY29uc3QgQXNzaWduT3B0aW9ucyA9ICh7XG4gIHRpY2tldCxcbiAgdXNlclByb2ZpbGUsXG4gIGFzc2lnbk9wdGlvbixcbiAgc2V0QXNzaWduT3B0aW9uLFxuICBvbkFzc2lnbixcbiAgb25EZWxlZ2F0ZSxcbiAgb25VbkFzc2lnblxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtvcGVuQ29uZmlybVVuYXNzaWduLCBzZXRPcGVuQ29uZmlybVVuYXNzaWduXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNBc3NpZ25lZFRvTWUgPSB1c2VyUHJvZmlsZT8uZW1haWwgPT09IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3QgaGFuZGxlVW5Bc3NpZ24gPSAoKSA9PiB7XG4gICAgc2V0T3BlbkNvbmZpcm1VbmFzc2lnbihmYWxzZSk7XG4gICAgb25VbkFzc2lnbigpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIGRpc2FibGVkPXtpc0Fzc2lnbmVkVG9NZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25Bc3NpZ24odXNlclByb2ZpbGUuZW1haWwsIFwiXCIpfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX21lXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICBvclxuICAgICAgPC9EaXZpZGVyPlxuICAgICAgPEJveD5cbiAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwib3RoZXJcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICA8UmVhc3NpZ25Gb3JtXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICBvbkFzc2lnbih2YWwubmV3X2F0dGVuZGVlX2VtYWlsLCB2YWwucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm90aGVyXCIgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJvdGhlclwiKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX290aGVyXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICB7YWxsb3dzRGVsZWdhdGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgICAgICBvclxuICAgICAgICAgIDwvRGl2aWRlcj5cbiAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJtYW5hZ2VcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICAgIDxEZWxlZ2F0ZUZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICAgIG9uRGVsZWdhdGUoXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZmlyc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9sYXN0X25hbWUsXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwibWFuYWdlXCIgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwibWFuYWdlXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ubWFuYWdlX3RpY2tldFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHt0aWNrZXQ/Lm93bmVyPy5lbWFpbCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudW5hc3NpZ25XcmFwcGVyfT5cbiAgICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRPcGVuQ29uZmlybVVuYXNzaWduKHRydWUpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgY29sb3I6IFwidGV4dC5saW5rXCIsXG4gICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiBcInVuZGVybGluZVwiLFxuICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbkNvbG9yOiBcInRleHQubGlua1wiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZXZlcnRfdG9fdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICAgIHsvKiBUT0RPOiBpZiB3ZSBuZWVkIHRvIHJldXNlIHRoaXMgdGhlbiB3ZSBzaG91bGQgbW92ZSBpdCB0byBjb250ZXh0ICovfVxuICAgICAgPENvbmZpcm1EaWFsb2dcbiAgICAgICAgb3Blbj17b3BlbkNvbmZpcm1VbmFzc2lnbn1cbiAgICAgICAgdGl0bGU9e3QoXCJ0aWNrZXRfYXNzaWduLmNvbmZpcm1fdW5hc3NpZ24udGl0bGVcIil9XG4gICAgICAgIGJvZHk9e3QoXCJ0aWNrZXRfYXNzaWduLmNvbmZpcm1fdW5hc3NpZ24uYm9keVwiKX1cbiAgICAgICAgb25Db25maXJtPXtoYW5kbGVVbkFzc2lnbn1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0T3BlbkNvbmZpcm1VbmFzc2lnbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduT3B0aW9ucy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyUHJvZmlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBhc3NpZ25PcHRpb246IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEFzc2lnbk9wdGlvbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25Bc3NpZ246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVsZWdhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbk9wdGlvbnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgRGVsZWdhdGVGb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9maXJzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmZpcnN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZmlyc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2xhc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5sYXN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfbGFzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmVtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbkRlbGVnYXRlRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdSA/IFwieW91XCIgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlja2V0LnRpY2tldF90eXBlLm5hbWU7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcbiAgY29uc3QgeyBhbGxvd3NEZWxlZ2F0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi55b3Vyc2VsZlwiKVxuICAgICAgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcblxuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5yZWFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGFsbG93c0RlbGVnYXRlXG4gICAgICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25cIilcbiAgICAgICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvbl9ub19kZWxlZ2F0ZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc0tleSA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfeW91cl9lcVwiXG4gICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX290aGVyc19lcVwiO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHt0KHRyYW5zS2V5KX1cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICA8TGlua1xuICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgIDwvTGluaz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuUmVhc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25IZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgUmVhc3NpZ25Gb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IFwiXCIsXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogeXVwLnN0cmluZyh0KFwidmFsaWRhdGlvbi50ZXh0LnN0cmluZ1wiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnBlcnNvbmFsX21lc3NhZ2VcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIG11bHRpbGluZVxuICAgICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmIGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVhc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduRm9ybTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgYXNzaWduQXR0ZW5kZWUsXG4gIGRlbGVnYXRlVGlja2V0LFxuICByZWFzc2lnblRpY2tldCxcbiAgc2F2ZUV4dHJhUXVlc3Rpb25zLFxuICB1bmFzc2lnblRpY2tldFxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4uL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IEFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXJcIjtcbmltcG9ydCBSZWFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlclwiO1xuaW1wb3J0IEFzc2lnbk9wdGlvbnMgZnJvbSBcIi4vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfRFJBV0VSX0lEIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoeyB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb3Blbiwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSA9IHVzZUNvbnRleHQoXG4gICAgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dFxuICApO1xuICBjb25zdCBbYXNzaWduT3B0aW9uLCBzZXRBc3NpZ25PcHRpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25hdGlvbkluUHJvZ3Jlc3MsIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQXNzaWduID0gKGVtYWlsLCBtZXNzYWdlID0gXCJcIikgPT4ge1xuICAgIGlmIChvd25lcklkKSB7XG4gICAgICBkaXNwYXRjaChyZWFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25VbkFzc2lnbiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaCh1bmFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCkpLnRoZW4oKCkgPT4ge1xuICAgICAgb25DbG9zZUVRRm9ybSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uRGVsZWdhdGUgPSAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGRlbGVnYXRlVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbClcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIG9uQ2xvc2VFUUZvcm0oKTtcbiAgICAgICAgc3VjY2Vzc01lc3NhZ2UodChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgZXJyb3JNZXNzYWdlKHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdGl0bGUgPSBvd25lcklkXG4gICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24udGl0bGVcIilcbiAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24udGl0bGVcIik7XG4gIGNvbnN0IEhlYWRlciA9IG93bmVySWQgPyBSZWFzc2lnbkhlYWRlciA6IEFzc2lnbkhlYWRlcjtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9e1RJQ0tFVF9EUkFXRVJfSUR9XG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICA+XG4gICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn0+XG4gICAgICAgICAgPEhlYWRlclxuICAgICAgICAgICAgaW5Qcm9ncmVzcz17YXNzaWduYXRpb25JblByb2dyZXNzfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJQcm9maWxlLmVtYWlsfVxuICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAvPlxuXG4gICAgICAgICAge2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcyA/IChcbiAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPEFzc2lnbk9wdGlvbnNcbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIHVzZXJQcm9maWxlPXt1c2VyUHJvZmlsZX1cbiAgICAgICAgICAgICAgYXNzaWduT3B0aW9uPXthc3NpZ25PcHRpb259XG4gICAgICAgICAgICAgIHNldEFzc2lnbk9wdGlvbj17c2V0QXNzaWduT3B0aW9ufVxuICAgICAgICAgICAgICBvbkFzc2lnbj17b25Bc3NpZ259XG4gICAgICAgICAgICAgIG9uVW5Bc3NpZ249e29uVW5Bc3NpZ259XG4gICAgICAgICAgICAgIG9uRGVsZWdhdGU9e29uRGVsZWdhdGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0QXNzaWduO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3Qge1xuICAgIGVycm9ycyxcbiAgICB2YWx1ZXMsXG4gICAgdG91Y2hlZCxcbiAgICBzZXRGaWVsZFRvdWNoZWQsXG4gICAgc2V0RmllbGRWYWx1ZSxcbiAgICBpbml0aWFsVmFsdWVzXG4gIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZGlzYWJsZWQgPSAhIWluaXRpYWxWYWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG5cbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLm5hbWUpO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgIHN4PXt7IGZvbnRTaXplOiBcIjFlbVwiLCBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IHsgZ2V0VGlja2V0UERGLCByZXNlbmROb3RpZmljYXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbEhlYWRlciA9ICh7IHRpY2tldCwgaXNWaXJ0dWFsU3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2VudENvbmZpcm1hdGlvbiwgc2V0U2VudENvbmZpcm1hdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGlja2V0Py50aWNrZXRfdHlwZT8ubmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT17c3R5bGVzLnN0YXR1c30+e3QoXCJ0aWNrZXRfZGV0YWlsLnN0YXR1c1wiKX08L3A+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX0+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucXJfbm90ZVwiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDwvPlxuICAgICAgKX1cblxuICAgICAgeyFpc1ZpcnR1YWxTdW1taXQgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RG93bmxvYWRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7c2VudENvbmZpcm1hdGlvbiAmJiBzdHlsZXMuc2VudH1gfVxuICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X2RldGFpbC5zZW50XCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbEhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWspO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIGlzRGVsZWdhdGVkPXshIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZH1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgb3JpZ2luYWxBbnN3ZXJzPXthbnN3ZXJzfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkLCBpc0RlbGVnYXRlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyLCBpbml0aWFsVmFsdWVzIH0gPVxuICAgIGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgIC8+XG4gICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBzeD17eyBmb250V2VpZ2h0OiA1MDAsIG1hcmdpbjogXCIxMHB4IDBcIiB9fT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwubWFuYWdlX2ZvclwiKX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lLCBUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0ubWFwKFxuICAgICAgICAobmFtZSkgPT4gKFxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAga2V5PXtuYW1lfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIGxhYmVsPXt0KGB0aWNrZXRfZGV0YWlsLiR7bmFtZX1gKX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgaXNEZWxlZ2F0ZWQgfHwgISFpbml0aWFsVmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0RlbGVnYXRlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgeyBzYXZlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSA9IHVzZUNvbnRleHQoXG4gICAgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dFxuICApO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG5cbiAgY29uc3Qgb25TYXZlID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlVGlja2V0RGV0YWlscyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlKHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGVycm9yTWVzc2FnZSh0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD17VElDS0VUX0RSQVdFUl9JRH1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgaGVhZGVyQ2hpbGRyZW49e1xuICAgICAgICA8VGlja2V0RGV0YWlsSGVhZGVyXG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgaXNWaXJ0dWFsU3VtbWl0PXtzdW1taXQ/LmlzX3ZpcnR1YWx9XG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgPlxuICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICB7dGlja2V0ICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZX1cbiAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHshIXJlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFiLFxuICBUYWJzLFxuICB1c2VNZWRpYVF1ZXJ5LFxuICB1c2VUaGVtZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgc3RvcExvYWRpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBUQUJTXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICBnZXRVc2VyVGlja2V0c1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRhYldyYXBwZXIgZnJvbSBcIi4uL1RhYldyYXBwZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuICBjb25zdCBbdGlja2V0c0Z1bGx5TG9hZGVkLCBzZXRUaWNrZXRzRnVsbHlMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBvcmRlcnNfcGVyX3BhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIG1lbWJlck9yZGVyc1xuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKGV2LCBuZXdUYWIpID0+IHtcbiAgICBzZXRUYWIobmV3VGFiKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaEFzc2lnbmVkVGlja2V0cyA9IChwYWdlLCBza2lwTG9hZGluZyA9IGZhbHNlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlclRpY2tldHMoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBlclBhZ2U6IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNvcnRcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcExvYWRpbmdcbiAgICAgIClcbiAgICApO1xuXG4gIGNvbnN0IGZldGNoT3JkZXJUaWNrZXRzID0gKHBhZ2UsIHNraXBMb2FkaW5nID0gZmFsc2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyT3JkZXJzKFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICBzb3J0XG4gICAgICAgIH0sXG4gICAgICAgIHNraXBMb2FkaW5nXG4gICAgICApXG4gICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBvcmRlclRpY2tldHNQcm9taXNlcyA9IGRhdGEubWFwKChvcmRlcikgPT5cbiAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICBjdXJyZW50X3BhZ2U6IEZJUlNUX1BBR0UsXG4gICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgc29ydFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcmRlclRpY2tldHNQcm9taXNlcyk7XG4gICAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmZXRjaFByb21pc2VzID0gW1xuICAgICAgZmV0Y2hBc3NpZ25lZFRpY2tldHMoRklSU1RfUEFHRSwgdHJ1ZSksXG4gICAgICBmZXRjaE9yZGVyVGlja2V0cyhGSVJTVF9QQUdFLCB0cnVlKVxuICAgIF07XG4gICAgUHJvbWlzZS5hbGwoZmV0Y2hQcm9taXNlcylcbiAgICAgIC50aGVuKCgpID0+IHNldFRpY2tldHNGdWxseUxvYWRlZCh0cnVlKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpKTtcbiAgfSwgW2ZpbHRlciwgc29ydF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpY2tldHNGdWxseUxvYWRlZCkge1xuICAgICAgaWYgKG1lbWJlck9yZGVycz8ubGVuZ3RoID09PSAwICYmIHVzZXJUaWNrZXRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNldFRhYihUQUJTLlRJQ0tFVFMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldHNGdWxseUxvYWRlZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50YWJXcmFwcGVyfT5cbiAgICAgIDxUYWJzXG4gICAgICAgIHZhbHVlPXt0YWJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUYWJDaGFuZ2V9XG4gICAgICAgIHZhcmlhbnQ9e2lzTW9iaWxlID8gXCJmdWxsV2lkdGhcIiA6IFwic3RhbmRhcmRcIn1cbiAgICAgID5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcIm9yZGVycy50aXRsZVwiKX0gdmFsdWU9e1RBQlMuT1JERVJTfSAvPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpfSB2YWx1ZT17VEFCUy5USUNLRVRTfSAvPlxuICAgICAgPC9UYWJzPlxuICAgICAgPERpdmlkZXIgLz5cblxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgKFxuICAgICAgICA8VGFiV3JhcHBlciB0YWI9e1RBQlMuT1JERVJTfSBzZXRUYWI9e3NldFRhYn0+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0cyBmZXRjaERhdGE9e2ZldGNoT3JkZXJUaWNrZXRzfSAvPlxuICAgICAgICA8L1RhYldyYXBwZXI+XG4gICAgICApfVxuICAgICAge3RhYiA9PT0gVEFCUy5USUNLRVRTICYmIChcbiAgICAgICAgPFRhYldyYXBwZXIgdGFiPXtUQUJTLlRJQ0tFVFN9IHNldFRhYj17c2V0VGFifT5cbiAgICAgICAgICA8QXNzaWduZWRUb01lIGZldGNoRGF0YT17ZmV0Y2hBc3NpZ25lZFRpY2tldHN9IC8+XG4gICAgICAgIDwvVGFiV3JhcHBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRUYWJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwsIGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyByZXNldEZpbHRlciwgY2hhbmdlU29ydCwgY2hhbmdlRmlsdGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi4vQ3VzdG9tVGhlbWVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL0xvYWRlclwiO1xuaW1wb3J0IEZpbHRlcnMgZnJvbSBcIi4uL0ZpbHRlcnNcIjtcbmltcG9ydCBXaWRnZXRUYWJzIGZyb20gXCIuLi9XaWRnZXRUYWJzXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb24gZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvblwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21zZ0RhdGEsIHNldE1zZ0RhdGFdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nLFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09SREVSX05VTUJFUjogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSAobXNnKSA9PlxuICAgIHNldE1zZ0RhdGEoeyBtZXNzYWdlOiBtc2csIHNldmVyaXR5OiBcInN1Y2Nlc3NcIiB9KTtcbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gKG1zZykgPT4gc2V0TXNnRGF0YSh7IG1lc3NhZ2U6IG1zZywgc2V2ZXJpdHk6IFwiZXJyb3JcIiB9KTtcbiAgY29uc3QgbWVzc2FnZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSksIFtdKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlclZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlRmlsdGVyKGZpbHRlclZhbHVlKSk7XG4gIH07XG5cbiAgY29uc3Qgb25Tb3J0ID0gKHNvcnRWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZVNvcnQoc29ydFZhbHVlKSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tVGhlbWU+XG4gICAgICA8TG9hZGVyIG9wZW49e2xvYWRpbmd9IC8+XG4gICAgICA8Q3VzdG9tTm90aWZpY2F0aW9uXG4gICAgICAgIG9wZW49eyEhbXNnRGF0YX1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0TXNnRGF0YShudWxsKX1cbiAgICAgICAgbWVzc2FnZT17bXNnRGF0YT8ubWVzc2FnZX1cbiAgICAgICAgc2V2ZXJpdHk9e21zZ0RhdGE/LnNldmVyaXR5fVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJzXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0c1RpdGxlVGV4dH0+XG4gICAgICAgICAge2ZpbHRlclZhbHVlc1xuICAgICAgICAgICAgPyB0KFwibGFiZWxzLnNlYXJjaF9yZXN1bHRzXCIsIHsgZmlsdGVyOiBmaWx0ZXJWYWx1ZXMgfSlcbiAgICAgICAgICAgIDogdChcImxhYmVscy50aWNrZXRzXCIpfVxuICAgICAgICA8L2gzPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Q3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bWVzc2FnZUNvbnRleHR9PlxuICAgICAgICA8V2lkZ2V0VGFicyAvPlxuICAgICAgPC9DdXN0b21Ob3RpZmljYXRpb25Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoV2lkZ2V0V3JhcHBlcik7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChydW4pIHtcbiAgICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3duZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bl0pO1xuXG4gIGNvbnN0IHsgZXh0cmFRdWVzdGlvbnMsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZVxuICApO1xuXG4gIHJldHVybiB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUdldFRpY2tldDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWspID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIGlzU3VibWl0dGluZyB9ID0gZm9ybWlrO1xuICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgY29uc3QgZXJyb3JDb3VudCA9IGVycm9yQXJyYXkubGVuZ3RoO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gc29ydCBlbGVtZW50cyBieSBwb3NpdGlvblxuICAgIGNvbnN0IGVsZW1lbnRzU29ydGVkID0gZXJyb3JBcnJheVxuICAgICAgLnJlZHVjZSgocmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKFRJQ0tFVF9EUkFXRVJfSUQpXG4gICAgICAucXVlcnlTZWxlY3RvcihcIi5NdWlEcmF3ZXItcGFwZXJcIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gZWxlbWVudHNTb3J0ZWRbMF07XG5cbiAgICBpZiAoY29udGFpbmVyPy5jb250YWlucyh0YXJnZXQuZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gICAgICBjb25zdCBlbGVtT2ZmZXN0ID0gMTAwO1xuICAgICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxuICAgICAgICB0YXJnZXQudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIC0gZWxlbU9mZmVzdDtcblxuICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgcG9zaXRpb25cbiAgICAgIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgc2Nyb2xsVG9wLCBhbmltYXRpb25EdXJhdGlvbik7IC8vIDUwMG1zIGR1cmF0aW9uXG4gICAgfVxuICB9LCBbaXNTdWJtaXR0aW5nXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JvbGxUb0Vycm9yO1xuIiwiaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgIHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgIHRpY2tldD8ucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG4gIGNvbnN0IGNhblJlYXNzaWduID1cbiAgICAhaXNVbmFzc2lnbmVkICYmXG4gICAgdGlja2V0LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fcmVhc3NpZ24gJiZcbiAgICAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fcmVhc3NpZ24pO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGUsXG4gICAgY2FuUmVhc3NpZ25cbiAgfTtcbn07XG4iLCJpbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgaW5pdFJlYWN0STE4bmV4dCB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgTGFuZ3VhZ2VEZXRlY3RvciBmcm9tIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzb25cIjtcbmltcG9ydCBlcyBmcm9tIFwiLi9sb2NhbGVzL2VzLmpzb25cIjtcblxuLy8gaW1wb3J0IEJhY2tlbmQgZnJvbSAnaTE4bmV4dC1odHRwLWJhY2tlbmQnO1xuLy8gZG9uJ3Qgd2FudCB0byB1c2UgdGhpcz9cbi8vIGhhdmUgYSBsb29rIGF0IHRoZSBRdWljayBzdGFydCBndWlkZVxuLy8gZm9yIHBhc3NpbmcgaW4gbG5nIGFuZCB0cmFuc2xhdGlvbnMgb24gaW5pdFxuXG5pMThuXG4gIC8vIGxvYWQgdHJhbnNsYXRpb24gdXNpbmcgaHR0cCAtPiBzZWUgL3B1YmxpYy9sb2NhbGVzIChpLmUuIGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L3JlYWN0LWkxOG5leHQvdHJlZS9tYXN0ZXIvZXhhbXBsZS9yZWFjdC9wdWJsaWMvbG9jYWxlcylcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1odHRwLWJhY2tlbmRcbiAgLy8gd2FudCB5b3VyIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQgZnJvbSBhIHByb2Zlc3Npb25hbCBDRE4/ID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2NpemUvcmVhY3QtdHV0b3JpYWwjc3RlcC0yLS0tdXNlLXRoZS1sb2NpemUtY2RuXG4gIC8vIC51c2UoQmFja2VuZClcbiAgLy8gZGV0ZWN0IHVzZXIgbGFuZ3VhZ2VcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlRGV0ZWN0b3JcbiAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAvLyBwYXNzIHRoZSBpMThuIGluc3RhbmNlIHRvIHJlYWN0LWkxOG5leHQuXG4gIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgLy8gaW5pdCBpMThuZXh0XG4gIC8vIGZvciBhbGwgb3B0aW9ucyByZWFkOiBodHRwczovL3d3dy5pMThuZXh0LmNvbS9vdmVydmlldy9jb25maWd1cmF0aW9uLW9wdGlvbnNcbiAgLmluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBcImVuXCIsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHJlc291cmNlczoge1xuICAgICAgZW46IHsgdHJhbnNsYXRpb246IGVuIH0sXG4gICAgICBlczogeyB0cmFuc2xhdGlvbjogZXMgfVxuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBTVEFSVF9MT0FESU5HLFxuICBTVE9QX0xPQURJTkcsXG4gIFJFU0VUX0xPQURJTkdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfTVlfQVNTSUdORURfVElDS0VUUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVCxcbiAgQVNTSUdOX1RJQ0tFVCxcbiAgUkVTRVRfQVBJX0VSUk9SLFxuICBTRVRfQVBJX0VSUk9SLFxuICBSRVNFVF9USUNLRVQsXG4gIENIQU5HRV9GSUxURVIsXG4gIENIQU5HRV9TT1JULFxuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSLFxuICBGSUxURVJfVkFSX0RBVEUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBERUxFR0FURV9USUNLRVQsXG4gIFJFTU9WRV9USUNLRVRfQVRURU5ERUVcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSwgVEFCUyB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY2FsY3VsYXRlQWN0aXZlRmlsdGVycywgaGFzTG9hZGVkQWxsRGF0YSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIH0gZnJvbSBcIi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIGFjdGl2ZUZpbHRlcnNDb3VudDogMCxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMCxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMCxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDAsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDAsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IDAsXG4gIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IDAsXG4gIGFwaUVycm9yOiBudWxsXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFNUQVJUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogdHJ1ZSB9O1xuICAgIGNhc2UgU1RPUF9MT0FESU5HOlxuICAgIGNhc2UgUkVTRVRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiBmYWxzZSB9O1xuICAgIGNhc2UgUkVTRVRfQVBJX0VSUk9SOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiBudWxsIH07XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgICAgICAgYWN0aXZlRmlsdGVyc0NvdW50OiAwLFxuICAgICAgICBzb3J0OiB7fSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgICAgICAgbG9hZGluZzogdHJ1ZVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBDSEFOR0VfRklMVEVSOiB7XG4gICAgICBjb25zdCBuZXdGaWx0ZXJzID0geyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfTtcbiAgICAgIGNvbnN0IG5ld0FjdGl2ZUNvdW50ID0gY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhuZXdGaWx0ZXJzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH0sXG4gICAgICAgIGFjdGl2ZUZpbHRlcnNDb3VudDogbmV3QWN0aXZlQ291bnRcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgQ0hBTkdFX1NPUlQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzb3J0OiB7IC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUubWVtYmVyT3JkZXJzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgbWVtYmVyT3JkZXJzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUudXNlclRpY2tldHMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB1c2VyVGlja2V0cyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUudXNlclRpY2tldHMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXNlclRpY2tldHMsXG4gICAgICAgIHVzZXJfdGlja2V0c190b3RhbDogdG90YWwsXG4gICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgY29uc3QgbmV3T3JkZXJzID0gbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+IHtcbiAgICAgICAgaWYgKG1vLmlkICE9PSBkYXRhWzBdPy5vcmRlcl9pZCkgcmV0dXJuIG1vO1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID1cbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ubW8sXG4gICAgICAgICAgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyxcbiAgICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnNcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBSRU1PVkVfVElDS0VUX0FUVEVOREVFOlxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICAgIG9yZGVyLm1lbWJlclRpY2tldHMsXG4gICAgICAgICAgdGlja2V0RGF0YVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5ld1VzZXJUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgc3RhdGUudXNlclRpY2tldHMsXG4gICAgICAgIHRpY2tldERhdGFcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycywgdXNlclRpY2tldHM6IG5ld1VzZXJUaWNrZXRzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgICBvcmRlci5tZW1iZXJUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldERhdGFcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBuZXdVc2VyVGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgIHN0YXRlLnVzZXJUaWNrZXRzLFxuICAgICAgICB0aWNrZXREYXRhXG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRpY2tldDogdGlja2V0RGF0YSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMsXG4gICAgICAgIHVzZXJUaWNrZXRzOiBuZXdVc2VyVGlja2V0c1xuICAgICAgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHVwZGF0ZVByb2ZpbGVcbn0pID0+IHtcbiAgLy8gdG8gYWRkIG90aGVyIHJlZHVjZXJzIGxhdGVyXG4gIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAgICB3aWRnZXRTdGF0ZTogV2lkZ2V0UmVkdWNlclxuICB9KTtcblxuICBjb25zdCBzdG9yZSA9IGNvbmZpZ3VyZVN0b3JlKHtcbiAgICByZWR1Y2VyOiBwZXJzaXN0UmVkdWNlcihcbiAgICAgIHtcbiAgICAgICAga2V5OiBgcm9vdF9teV9vcmRlcnNfdGlja2V0c18ke2NsaWVudElkfWAsXG4gICAgICAgIHN0b3JhZ2VcbiAgICAgIH0sXG4gICAgICByZWR1Y2Vyc1xuICAgICksXG4gICAgbWlkZGxld2FyZTogKGdldERlZmF1bHRNaWRkbGV3YXJlKSA9PlxuICAgICAgZ2V0RGVmYXVsdE1pZGRsZXdhcmUoe1xuICAgICAgICB0aHVuazoge1xuICAgICAgICAgIGV4dHJhQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgICAgYXBpQmFzZVVybCxcbiAgICAgICAgICAgIHN1bW1pdCxcbiAgICAgICAgICAgIGxvZ2luVXJsLFxuICAgICAgICAgICAgdXBkYXRlUHJvZmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbmNvbnN0IGdldEFjY2Vzc1Rva2VuTW9jayA9ICgpID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFwiQWNjZXNzIHRva2VuIGVycm9yXCIpO1xuICAvLyByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICAgIGluaXRMb2dPdXQoKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgaW5pdExvZ091dCgpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYXV0aFByb21pc2VSZWplY3QgPSBhc3luYyAoKSA9PlxuICBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJBdXRoIFRva2VuIGVycm9yXCIpKTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcbmV4cG9ydCBjb25zdCBNSU5fUkVRVUlSRUQgPSAxO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJTVEFUVVNfQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiU1RBVFVTX0lOQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUEVORElORyA9IFwiU1RBVFVTX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJTVEFUVVNfQ0FOQ0VMTEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0VSUk9SID0gXCJTVEFUVVNfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUFJPQ0VTU0lORyA9IFwiU1RBVFVTX1BST0NFU1NJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiU1RBVFVTX1VOQVNTSUdORURcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElORyA9IFwiU1RBVFVTX1JFRlVORF9QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCA9IFwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURUQgPSBcIlNUQVRVU19SRUZVTkRfUkVKRUNURURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMgPSBcIlJlcXVlc3RlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMgPSBcIkFwcHJvdmVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyA9IFwiUmVqZWN0ZWRcIjtcblxuZXhwb3J0IGNvbnN0IEpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyA9IDEwMDAwO1xuXG5leHBvcnQgY29uc3QgT05FX0lURU0gPSAxO1xuZXhwb3J0IGNvbnN0IFRXT19JVEVNID0gMjtcbmV4cG9ydCBjb25zdCBGSVZFX0lURU0gPSA1O1xuZXhwb3J0IGNvbnN0IFNJWF9JVEVNID0gNjtcblxuZXhwb3J0IGNvbnN0IFBST01JU0VfQkFUQ0hfTElNSVQgPSAxMDtcbmV4cG9ydCBjb25zdCBGSUZUWV9QRVJfUEFHRSA9IDUwO1xuXG5leHBvcnQgY29uc3QgRVJST1JfQ09ERVMgPSB7XG4gIDQwMTogNDAxLFxuICA0MDM6IDQwMSxcbiAgNDEyOiA0MDEsXG4gIDUwMDogNTAwXG59O1xuXG5leHBvcnQgY29uc3QgVEFCUyA9IHtcbiAgT1JERVJTOiBcIk9SREVSU1wiLFxuICBUSUNLRVRTOiBcIlRJQ0tFVFNcIlxufTtcblxuZXhwb3J0IGNvbnN0IE9ORV9SRVRSWSA9IDE7XG5cbmV4cG9ydCBjb25zdCBGSUxURVJfQUNUSU9OID0ge1xuICBPUkRFUlM6IFwiT1JERVJTXCIsXG4gIEVYVEVSTkFMX1RJQ0tFVFM6IFwiRVhURVJOQUxfVElDS0VUU1wiLFxuICBUSUNLRVRTX0JZX09SREVSUzogXCJUSUNLRVRTX0JZX09SREVSU1wiXG59O1xuXG5leHBvcnQgY29uc3QgVElDS0VUX0RSQVdFUl9JRCA9IFwidGlja2V0RHJhd2VyXCI7XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIGFtb3VudCwgcmF3X2Ftb3VudCB9ID0gb3JkZXI7XG4gIGNvbnN0IHsgdGlja2V0X3R5cGVzIH0gPSBzdW1taXQ7XG5cbiAgY29uc3QgY3VycmVuY3lPYmplY3QgPSB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9O1xuXG4gIGNvbnN0IHRheGVzU3VtbWFyeSA9IFtdO1xuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBvcmRlcj8uYXBwbGllZF90YXhlcz8uZm9yRWFjaCgodGF4KSA9PiB7XG4gICAgY29uc3QgZm9ybWF0dGVkVGF4ID0ge1xuICAgICAgLi4udGF4LFxuICAgICAgYW1vdW50OiBmb3JtYXRDdXJyZW5jeSh0YXguYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICB9O1xuICAgIHRheGVzU3VtbWFyeS5wdXNoKGZvcm1hdHRlZFRheCk7XG4gIH0pO1xuXG4gIGNvbnN0IHB1cmNoYXNlVG90YWwgPSBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRpY2tldFRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgY29uc3QgZGlzY291bnRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KGRpc2NvdW50X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCByZWZ1bmRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJlZnVuZGVkX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBzdWJUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJhd19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICBzdWJUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5LFxuICAgIHRheGVzU3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuXG4vKipcbiAqIEBwYXJhbSBjdXJyZW50UGFnZVxuICogQHBhcmFtIGRhdGFcbiAqIEBwYXJhbSB0b3RhbFxuICogQHJldHVybnMge2Jvb2xlYW59XG4gKi9cbmV4cG9ydCBjb25zdCBoYXNMb2FkZWRBbGxEYXRhID0gKGN1cnJlbnRQYWdlLCBkYXRhLCB0b3RhbCkgPT4ge1xuICBsZXQgcmVzID0gZmFsc2U7XG4gIGNvbnN0IGRhdGFMZW5ndGggPSBBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YS5sZW5ndGggOiAwO1xuICAvLyB3ZSBhbHJlYWR5IGxvYWRlZCBhbGwgIGRhdGEgKCBmaXJzdCBwYWdlIGlzIGFsd2F5cyByZWxvYWRlZCBpdCApXG4gIGlmIChjdXJyZW50UGFnZSA+IEZJUlNUX1BBR0UgJiYgZGF0YUxlbmd0aCA+IDAgJiYgZGF0YUxlbmd0aCA9PT0gdG90YWwpXG4gICAgcmVzID0gdHJ1ZTtcbiAgcmV0dXJuIHJlcztcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzID0gKGZpbHRlcnMpID0+IHtcbiAgbGV0IGNvdW50ID0gMDtcbiAgT2JqZWN0LmVudHJpZXMoZmlsdGVycykuZm9yRWFjaCgoWywgdmFsdWVdKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICBjb3VudCArPSB2YWx1ZS5sZW5ndGg7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIgJiYgdmFsdWUudHJpbSgpICE9PSBcIlwiKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiICYmIHZhbHVlID4gMCkge1xuICAgICAgY291bnQrKztcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gY291bnQ7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgTUlOX1JFUVVJUkVELFxuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVELFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkcsXG4gIFNUQVRVU19SRUZVTkRfUEVORElOR19MQyxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyxcbiAgU1RBVFVTX1VOQVNTSUdORURcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBzdGF0dXNEYXRhID0ge1xuICBbU1RBVFVTX1VOQVNTSUdORURdOiB7XG4gICAgdHlwZTogU1RBVFVTX1VOQVNTSUdORUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy51bmFzc2lnbmVkXCIpXG4gIH0sXG4gIFtTVEFUVVNfSU5DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfSU5DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmluY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NBTkNFTExFRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ0FOQ0VMTEVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY2FuY2VsbGVkXCIpXG4gIH1cbn07XG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzS2V5ID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuXG4gIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcblxuICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19DT01QTEVURTtcblxuICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzRGF0YSA9ICh0aWNrZXQsIGlzU3VtbWl0UGFzdCkgPT5cbiAgc3RhdHVzRGF0YVtnZXRUaWNrZXRTdGF0dXNLZXkodGlja2V0LCBpc1N1bW1pdFBhc3QpXTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFJvbGUgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmJhZGdlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aWNrZXQuYmFkZ2U7XG5cbiAgaWYgKGZlYXR1cmVzLmxlbmd0aCA+IDApXG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT4gZmVhdHVyZS5uYW1lKS5qb2luKFwiLCBcIik7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0VHlwZSA9ICh0aWNrZXQsIHN1bW1pdCkgPT5cbiAgc3VtbWl0LnRpY2tldF90eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmlkID09PSB0aWNrZXQudGlja2V0X3R5cGVfaWQpO1xuXG5leHBvcnQgY29uc3QgaXNUaWNrZXRSZWZ1bmRhYmxlID0gKHRpY2tldCkgPT5cbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiAwICYmXG4gIHRpY2tldD8ubmV0X3NlbGxpbmdfY29zdCA+IHRpY2tldC5yZWZ1bmRlZF9hbW91bnQgJiZcbiAgIXRpY2tldD8ucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHRpY2tldHNSZWZ1bmRhYmxlID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PiBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KSkubGVuZ3RoIHx8IDA7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+XG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApO1xuZXhwb3J0IGNvbnN0IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT4ge1xuICBjb25zdCBhbGxUaWNrZXRzID0gW107XG4gIHRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgICApXG4gICAgKSB7XG4gICAgICBhbGxUaWNrZXRzLnB1c2godGlja2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tldDtcbiAgfSk7XG4gIHJldHVybiBhbGxUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzID0gKHRpY2tldCkgPT4ge1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ7XG4gIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzKHRpY2tldCk7XG4gIGxldCBzdGF0dXNDb2xvciA9IFwiXCI7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1BFTkRJTkc6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcImFwcHJvdmVkXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicmVqZWN0ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICB9XG4gIHJldHVybiBzdGF0dXNDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGlmIChpc1JlcXVpcmVkKSBzY2hlbWEgPSBzY2hlbWEubWluKE1JTl9SRVFVSVJFRCwgYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuY29uc3QgcGFyc2VTdWJRdWVzdGlvbkFuc3dlciA9IChcbiAgcSxcbiAgYW5zd2VycyxcbiAgYW5zd2VyLFxuICBpbml0aWFsVmFsdWVzLFxuICBvbmx5UmVsZXZhbnRcbikgPT4ge1xuICBpZiAocS5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICBjb25zdCB7IHN1Yl9xdWVzdGlvbiwgYW5zd2VyX3ZhbHVlcyB9ID0gcnVsZTtcbiAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJfcXVlc3Rpb24ubmFtZSwgc3ViX3F1ZXN0aW9uLmlkKTtcbiAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBhbnN3ZXJfdmFsdWVzKTtcblxuICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICBzdWJBbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShzdWJfcXVlc3Rpb24pO1xuICAgICAgfVxuXG4gICAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKFxuICAgICAgICBzdWJfcXVlc3Rpb24sXG4gICAgICAgIGFuc3dlcnMsXG4gICAgICAgIHN1YkFuc3dlcixcbiAgICAgICAgaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgb25seVJlbGV2YW50XG4gICAgICApO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgcGFyc2VBbnN3ZXJzID0gKFxuICBvd25lcixcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGFuc3dlcnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIocSwgYW5zd2VycywgYW5zd2VyLCBpbml0aWFsVmFsdWVzLCBvbmx5UmVsZXZhbnQpO1xuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmNvbnN0IGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hID0gKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKSA9PiB7XG4gIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG5cbiAgc2NoZW1hW3N1YlF1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihcbiAgICBzdWJRdWVzdGlvbi50eXBlLFxuICAgIHN1YlF1ZXN0aW9uLm5hbWUsXG4gICAgZmFsc2VcbiAgKVxuICAgIC5udWxsYWJsZSgpXG4gICAgLndoZW4ocXVlc3Rpb25TbHVnLCB7XG4gICAgICBpczogKHF1ZXN0aW9uQW5zKSA9PiB7XG4gICAgICAgIGNvbnN0IGFuc1ZhbHVlTWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChcbiAgICAgICAgICBxdWVzdGlvbkFucyxcbiAgICAgICAgICBydWxlLmFuc3dlcl92YWx1ZXNcbiAgICAgICAgKTtcbiAgICAgICAgLy8gY2hlY2sgaWYgcXVlc3Rpb24gaXMgdmlzaWJsZSB0byBhZGQgdmFsaWRhdGlvblxuICAgICAgICBjb25zdCBpc1Zpc2libGUgPSAhIWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxuICAgICAgICAgIGAke3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gYW5zVmFsdWVNYXRjaCAmJiBpc1Zpc2libGU7XG4gICAgICB9LFxuICAgICAgdGhlbjogKHNjaCkgPT4ge1xuICAgICAgICBpZiAoc3ViUXVlc3Rpb24udHlwZSA9PT0gUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCkge1xuICAgICAgICAgIHJldHVybiBzY2hcbiAgICAgICAgICAgIC5taW4oTUlOX1JFUVVJUkVELCBpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzY2gucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgaWYgKHN1YlF1ZXN0aW9uLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgIHN1YlF1ZXN0aW9uLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChzdWJSdWxlKSA9PiB7XG4gICAgICBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYShzdWJRdWVzdGlvblNsdWcsIHN1YlJ1bGUsIHNjaGVtYSk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgLmVtYWlsKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID0geXVwLmxhenkoKHZhbHVlKSA9PlxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiXG4gICAgICAgID8geXVwXG4gICAgICAgICAgICAub2JqZWN0KClcbiAgICAgICAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgICAgICAgICAudHlwZUVycm9yKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfZmllbGRcIikpXG4gICAgICAgIDogeXVwLnN0cmluZygpLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICApO1xuICB9XG5cbiAgaWYgKGRpc2NsYWltZXJNYW5kYXRvcnkpIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9IHl1cFxuICAgICAgLmJvb2woKVxuICAgICAgLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgeyBpZCwgbmFtZSwgdHlwZSwgbWFuZGF0b3J5LCBzdWJfcXVlc3Rpb25fcnVsZXMgfSA9IHE7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKG5hbWUsIGlkKTtcbiAgICBzY2hlbWFbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKHR5cGUsIG5hbWUsIG1hbmRhdG9yeSk7XG5cbiAgICBpZiAoc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBzdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYShxdWVzdGlvblNsdWcsIHJ1bGUsIHNjaGVtYSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuXG5leHBvcnQgY29uc3QgdXBkYXRlVGlja2V0Q29sbGVjdGlvbiA9ICh0aWNrZXRzLCB0aWNrZXQpID0+XG4gIHRpY2tldHMubWFwKCh0KSA9PiB7XG4gICAgY29uc3QgdG1wVGlja2V0ID0geyAuLi50IH07XG4gICAgLy8gdXBkYXRlIGF0dGVuZGVlXG4gICAgaWYgKFxuICAgICAgdC5vd25lcj8uaWQgPT09IHRpY2tldC5vd25lcj8uaWQgJiZcbiAgICAgIHQub3duZXI/LnN0YXR1cyAhPT0gdGlja2V0Lm93bmVyPy5zdGF0dXNcbiAgICApIHtcbiAgICAgIHRtcFRpY2tldC5vd25lciA9IHRpY2tldC5vd25lcjtcbiAgICB9XG4gICAgcmV0dXJuIHQuaWQgPT09IHRpY2tldC5pZCA/IHRpY2tldCA6IHRtcFRpY2tldDtcbiAgfSk7XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYmFkZ2VGZWF0dXJlSWNvbl9fX3NLVlRDXCI7XG52YXIgXzIgPSBcImJhZGdlRmVhdHVyZUltYWdlX19fWU80ZnNcIjtcbnZhciBfMyA9IFwiYmFkZ2VGZWF0dXJlSW5pdGlhbHNfX19rVzdaa1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJiYWRnZUZlYXR1cmVJY29uXCIsIF8yIGFzIFwiYmFkZ2VGZWF0dXJlSW1hZ2VcIiwgXzMgYXMgXCJiYWRnZUZlYXR1cmVJbml0aWFsc1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjb3B5SWNvbl9fX2xJM2VRXCI7XG52YXIgXzIgPSBcInJldmVyc2VkX19fekp6bURcIjtcbnZhciBfMyA9IFwidHJ1bmNhdGVkX19faldTblVcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX21WUGlSXCI7XG5leHBvcnQgeyBfMSBhcyBcImNvcHlJY29uXCIsIF8yIGFzIFwicmV2ZXJzZWRcIiwgXzMgYXMgXCJ0cnVuY2F0ZWRcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19teEVLV1wiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19PNHNTc1wiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19GM251S1wiO1xudmFyIF80ID0gXCJjbGVhbkJ1dHRvbl9fX3FxRHZVXCI7XG52YXIgXzUgPSBcImNvbnRhaW5lcl9fX1FlUVlfXCI7XG52YXIgXzYgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19aNDJtd1wiO1xudmFyIF83ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19UWjdrSlwiO1xudmFyIF84ID0gXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lcl9fX2tVblc5XCI7XG52YXIgXzkgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JycXA5XCI7XG52YXIgX2EgPSBcImZpbHRlckRhdGVMYWJlbF9fX0pnYmNzXCI7XG52YXIgX2IgPSBcImZpbHRlckljb25fX19paU96b1wiO1xudmFyIF9jID0gXCJmaWx0ZXJMYWJlbF9fX3NrWlA3XCI7XG52YXIgX2QgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19JRHJsU1wiO1xudmFyIF9lID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19rbUVFS1wiO1xudmFyIF9mID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fbmhOSnNcIjtcbnZhciBfMTAgPSBcImxhYmVsX19fTEFtZV9cIjtcbnZhciBfMTEgPSBcInNob3dGaWx0ZXJMaXN0X19fSVc0eEdcIjtcbnZhciBfMTIgPSBcInNvcnRDb250YWluZXJfX19zYjVCZFwiO1xudmFyIF8xMyA9IFwic29ydEljb25fX19jX1haaVwiO1xudmFyIF8xNCA9IFwic29ydExhYmVsX19fZFhpTXlcIjtcbnZhciBfMTUgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fUHAyWGdcIjtcbnZhciBfMTYgPSBcInRpdGxlV3JhcHBlcl9fX1A2bVB1XCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjbGVhbkJ1dHRvblwiLCBfNSBhcyBcImNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzcgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzggYXMgXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lclwiLCBfOSBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfYSBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfYiBhcyBcImZpbHRlckljb25cIiwgX2MgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfZCBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2UgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2YgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF8xMCBhcyBcImxhYmVsXCIsIF8xMSBhcyBcInNob3dGaWx0ZXJMaXN0XCIsIF8xMiBhcyBcInNvcnRDb250YWluZXJcIiwgXzEzIGFzIFwic29ydEljb25cIiwgXzE0IGFzIFwic29ydExhYmVsXCIsIF8xNSBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIsIF8xNiBhcyBcInRpdGxlV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJteU9yZGVyc1dyYXBwZXJfX19ISm15c1wiO1xudmFyIF8yID0gXCJub09yZGVyc0ZvdW5kX19fRFJ3Z29cIjtcbnZhciBfMyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX3RQVG1ZXCI7XG5leHBvcnQgeyBfMSBhcyBcIm15T3JkZXJzV3JhcHBlclwiLCBfMiBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzMgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJvZHlfX19BV2RpTFwiO1xudmFyIF8yID0gXCJpY29uV3JhcHBlcl9fX216ZXZLXCI7XG52YXIgXzMgPSBcInRpdGxlX19fTTI0Mm1cIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1Fzd0NQXCI7XG5leHBvcnQgeyBfMSBhcyBcImJvZHlcIiwgXzIgYXMgXCJpY29uV3JhcHBlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJhc3NpZ25Ub01lVGV4dF9fX1pQYWV4XCI7XG52YXIgXzMgPSBcImFzc2lnbmVkQnlUZXh0X19fYk5aN3pcIjtcbnZhciBfNCA9IFwiYXNzaWduZWRUb01lRGVzX19fR2pGa1ZcIjtcbnZhciBfNSA9IFwiYXNzaWduZWRUb01lV3JhcHBlcl9fX1V4YzJ5XCI7XG52YXIgXzYgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19JUUxOUFwiO1xudmFyIF83ID0gXCJjaGVja2JveF9fX1haSnBiXCI7XG52YXIgXzggPSBcImRpc2FibGVkUmVmdW5kX19fU2ZmbDdcIjtcbnZhciBfOSA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfYSA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF9iID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgX2MgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgX2QgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgX2UgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgX2YgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfMTAgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF8xMSA9IFwicmVmdW5kTW9kYWxfX19FcWdQRlwiO1xudmFyIF8xMiA9IFwic2VsZWN0ZWRfX19IV0dOY1wiO1xudmFyIF8xMyA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzE0ID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTUgPSBcInRpY2tldEZvb3Rlcl9fX2ozYmRpXCI7XG52YXIgXzE2ID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTcgPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMTggPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xOSA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzFhID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMWIgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYXNzaWduVG9NZVRleHRcIiwgXzMgYXMgXCJhc3NpZ25lZEJ5VGV4dFwiLCBfNCBhcyBcImFzc2lnbmVkVG9NZURlc1wiLCBfNSBhcyBcImFzc2lnbmVkVG9NZVdyYXBwZXJcIiwgXzYgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF83IGFzIFwiY2hlY2tib3hcIiwgXzggYXMgXCJkaXNhYmxlZFJlZnVuZFwiLCBfOSBhcyBcImRpc3BsYXlfbm9uZVwiLCBfYSBhcyBcImxhYmVsXCIsIF9iIGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgX2MgYXMgXCJvcmRlclRpY2tldEluZm9cIiwgX2QgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgX2UgYXMgXCJvcmRlcldyYXBwZXJcIiwgX2YgYXMgXCJyZWFzc2lnbkJ1dHRvblwiLCBfMTAgYXMgXCJyZWZ1bmRCdXR0b25zXCIsIF8xMSBhcyBcInJlZnVuZE1vZGFsXCIsIF8xMiBhcyBcInNlbGVjdGVkXCIsIF8xMyBhcyBcInRhYkJ1dHRvbnNcIiwgXzE0IGFzIFwidGlja2V0QWN0aW9uQnV0dG9uc1wiLCBfMTUgYXMgXCJ0aWNrZXRGb290ZXJcIiwgXzE2IGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTcgYXMgXCJ0aWNrZXROb1wiLCBfMTggYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xOSBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzFhIGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMWIgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJDVEFCdXR0b25XcmFwcGVyX19fS2dxNmdcIjtcbnZhciBfMiA9IFwiYWN0aW9uQnV0dG9uc19fX3U3bVBTXCI7XG52YXIgXzMgPSBcImFwcHJvdmVkX19fc3hFSldcIjtcbnZhciBfNCA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX185R2JEXCI7XG52YXIgXzUgPSBcImJ1dHRvblBpbGxfX19MZXNhelwiO1xudmFyIF82ID0gXCJjYW5jZWxCdXR0b25fX195ZmhZYlwiO1xudmFyIF83ID0gXCJjb250aW51ZUJ1dHRvbl9fX055WDNzXCI7XG52YXIgXzggPSBcImRlbGV0ZUljb25fX19GU3d5ZVwiO1xudmFyIF85ID0gXCJwZW5kaW5nX19fYUViV3dcIjtcbnZhciBfYSA9IFwicmVmdW5kRGV0YWlsX19fY1EyOFZcIjtcbnZhciBfYiA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF9jID0gXCJyZWZ1bmRTdWNjZXNzZnVsX19fenJEUVlcIjtcbnZhciBfZCA9IFwicmVmdW5kVGV4dF9fX2FFbkw5XCI7XG52YXIgX2UgPSBcInJlZnVuZFRpY2tldEF0dGVuZGVlX19fUVhDak1cIjtcbnZhciBfZiA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfMTAgPSBcInJlamVjdGVkX19fTkpFNFpcIjtcbnZhciBfMTEgPSBcInN1YnRpdGxlX19fUHREZTJcIjtcbnZhciBfMTIgPSBcInN1Y2Nlc3NNc2dfX19IdE1zZVwiO1xudmFyIF8xMyA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF8xNCA9IFwidGlja2V0TGlzdF9fX2VEUVIzXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcIkNUQUJ1dHRvbldyYXBwZXJcIiwgXzIgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8zIGFzIFwiYXBwcm92ZWRcIiwgXzQgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF81IGFzIFwiYnV0dG9uUGlsbFwiLCBfNiBhcyBcImNhbmNlbEJ1dHRvblwiLCBfNyBhcyBcImNvbnRpbnVlQnV0dG9uXCIsIF84IGFzIFwiZGVsZXRlSWNvblwiLCBfOSBhcyBcInBlbmRpbmdcIiwgX2EgYXMgXCJyZWZ1bmREZXRhaWxcIiwgX2IgYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfYyBhcyBcInJlZnVuZFN1Y2Nlc3NmdWxcIiwgX2QgYXMgXCJyZWZ1bmRUZXh0XCIsIF9lIGFzIFwicmVmdW5kVGlja2V0QXR0ZW5kZWVcIiwgX2YgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgXzEwIGFzIFwicmVqZWN0ZWRcIiwgXzExIGFzIFwic3VidGl0bGVcIiwgXzEyIGFzIFwic3VjY2Vzc01zZ1wiLCBfMTMgYXMgXCJzdWNjZXNzTXNnMlwiLCBfMTQgYXMgXCJ0aWNrZXRMaXN0XCIsIF8xNSBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNsb3NlQnRuX19feVNRQ09cIjtcbnZhciBfMiA9IFwiaGVhZGVyX19fZkJYRzlcIjtcbnZhciBfMyA9IFwidGl0bGVfX190eVplUVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUk9KR3NcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2xvc2VCdG5cIiwgXzIgYXMgXCJoZWFkZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwic3VtbWl0VGl0bGVEYXRlX19fWG5ycEZcIjtcbnZhciBfMiA9IFwid2lkZ2V0SGVhZGVyX19fZ2dMdE1cIjtcbmV4cG9ydCB7IF8xIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8yIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInVuYXNzaWduQnRuX19faTdtZ3lcIjtcbnZhciBfMiA9IFwidW5hc3NpZ25XcmFwcGVyX19fZzNlMnVcIjtcbnZhciBfMyA9IFwid3JhcHBlcl9fX1c5NFNMXCI7XG5leHBvcnQgeyBfMSBhcyBcInVuYXNzaWduQnRuXCIsIF8yIGFzIFwidW5hc3NpZ25XcmFwcGVyXCIsIF8zIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJoZWFkZXJOb3RlX19fQWU1RUFcIjtcbnZhciBfMiA9IFwib3JkZXJOb19fX1ZPUFJ3XCI7XG52YXIgXzMgPSBcInB1cmNoYXNlZEJ5X19fTU5pSFRcIjtcbnZhciBfNCA9IFwicHVyY2hhc2VkQnlXcmFwcGVyX19fRGg2SFVcIjtcbnZhciBfNSA9IFwid3JhcHBlcl9fX21WdWlaXCI7XG5leHBvcnQgeyBfMSBhcyBcImhlYWRlck5vdGVcIiwgXzIgYXMgXCJvcmRlck5vXCIsIF8zIGFzIFwicHVyY2hhc2VkQnlcIiwgXzQgYXMgXCJwdXJjaGFzZWRCeVdyYXBwZXJcIiwgXzUgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fZ090YUpcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic2VudF9fX2s2V0t4XCI7XG52YXIgX2YgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEwID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzExID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMiA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInNlbnRcIiwgX2YgYXMgXCJzdGF0dXNcIiwgXzEwIGFzIFwic3VidGl0bGVcIiwgXzExIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xMiBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aXZlX19fdEx5V1pcIjtcbnZhciBfMiA9IFwidGFiT3B0aW9uX19fSDRIMXVcIjtcbnZhciBfMyA9IFwidGFiV3JhcHBlcl9fX3UyMXNHXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGl2ZVwiLCBfMiBhcyBcInRhYk9wdGlvblwiLCBfMyBhcyBcInRhYldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0c1RpdGxlVGV4dF9fX1REUG1wXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldHNUaXRsZVRleHRcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9CdXR0b25cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9TdGFja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuaW1wb3J0IFdpZGdldFdyYXBwZXIgZnJvbSBcIi4vY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImNyZWF0ZUFjdGlvbiIsImRlbGV0ZVJlcXVlc3QiLCJnZXRSZXF1ZXN0IiwicHV0UmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsInN0b3BMb2FkaW5nIiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiYXV0aFByb21pc2VSZWplY3QiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJFUlJPUl9DT0RFUyIsIkZJRlRZX1BFUl9QQUdFIiwiRklMVEVSX0FDVElPTiIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiQ0hBTkdFX0ZJTFRFUiIsIkNIQU5HRV9TT1JUIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJERUxFR0FURV9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFRpY2tldCIsImRpc3BhdGNoIiwicmVzZXRTdGF0ZSIsInJlc2V0RmlsdGVyIiwicmVzZXRFcnJvciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUiLCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIiwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQiLCJGSUxURVJfVkFSX09XTkVSX1NUQVRVUyIsIkZJTFRFUl9WQVJfUFJPTU9DT0RFIiwiRklMVEVSX1ZBUl9GUkVFX1BBSUQiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsImNoYW5nZUZpbHRlciIsImZpbHRlciIsImNoYW5nZVNvcnQiLCJzb3J0IiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXJBY3Rpb24iLCJwdXNoIiwiY29uY2F0IiwibG93ZXIiLCJ1cHBlciIsImxlbmd0aCIsImZpbHRlck5hbWUiLCJPUkRFUlMiLCJqb2luIiwiaW5wdXRGaWx0ZXJzIiwiVElDS0VUU19CWV9PUkRFUlMiLCJFWFRFUk5BTF9USUNLRVRTIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJ2YWx1ZSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInNraXBMb2FkaW5nIiwicGFnZSIsInBlclBhZ2UiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsImZpZWxkcyIsInBlcl9wYWdlIiwia2V5cyIsImZpbHRlcnMiLCJuYW1lIiwiaWQiLCJ0aGVuIiwiY2F0Y2giLCJlIiwiZmluYWxseSIsInNldEFjdGl2ZU9yZGVySWQiLCJvcmRlcklkIiwic2V0VXNlciIsImdldFVzZXJUaWNrZXRzIiwiX3JlZjQiLCJfcmVmNSIsInVzZXJQcm9maWxlIiwiUHJvbWlzZSIsInJlamVjdCIsImV4cGFuZCIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjE0IiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE1IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMTYiLCJyZW1vdmVUaWNrZXQiLCJfcmVmMTciLCJyZWFzc2lnblRpY2tldCIsInVuYXNzaWduVGlja2V0IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJub3JtYWxpemVkQW5zIiwiZ2V0VGlja2V0UERGIiwiX3JlZjIwIiwicXVlcnlTdHJpbmciLCJhcGlVcmwiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsImhlYWRlcnMiLCJvayIsImJsb2IiLCJwZGYiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidXJsIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiaHJlZiIsImRvd25sb2FkIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJSZWFjdCIsInVzZVN0YXRlIiwiZm9yd2FyZFJlZiIsIlByb3BUeXBlcyIsInN0eWxlcyIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJNQVhfSU5JVElBTFMiLCJCYWRnZUZlYXR1cmVJY29uIiwicmVmIiwiaW1hZ2UiLCJjbGFzc05hbWUiLCJwcm9wcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImltYWdlTG9hZGVkIiwic2V0SW1hZ2VMb2FkZWQiLCJpbWFnZUVycm9yIiwic2V0SW1hZ2VFcnJvciIsInNob3dGYWxsYmFjayIsImluaXRpYWxzIiwic3BsaXQiLCJ3b3JkIiwic3Vic3RyaW5nIiwidG9VcHBlckNhc2UiLCJiYWRnZUZlYXR1cmVJY29uIiwiY2hpbGRyZW4iLCJiYWRnZUZlYXR1cmVJbWFnZSIsInNyYyIsImFsdCIsIm9uTG9hZCIsIm9uRXJyb3IiLCJzdHlsZSIsImRpc3BsYXkiLCJiYWRnZUZlYXR1cmVJbml0aWFscyIsInByb3BUeXBlcyIsInN0cmluZyIsImlzUmVxdWlyZWQiLCJCdXR0b24iLCJEaWFsb2ciLCJEaWFsb2dBY3Rpb25zIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJ1c2VUcmFuc2xhdGlvbiIsIkNvbmZpcm1EaWFsb2ciLCJvcGVuIiwiYm9keSIsIm9uQ2xvc2UiLCJvbkNvbmZpcm0iLCJvbkNsaWNrIiwiYXV0b0ZvY3VzIiwiQ29udGVudENvcHlJY29uIiwiVG9vbHRpcCIsIk1JTExJU0VDX1RPX1NFQyIsImRlZmF1bHRXaWR0aCIsIkNvcHlUZXh0IiwidGV4dCIsInRvb2x0aXBUZXh0IiwiaGlkZUNvcHkiLCJ0cnVuY2F0ZWQiLCJyZXZlcnNlZCIsIndpZHRoIiwidG9vbHRpcFRleHRUb1VzZSIsInRvb2x0aXAiLCJzZXRUb29sdGlwIiwiY2xhc3NOYW1lcyIsImhhbmRsZUNvcHkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzZXRUaW1lb3V0Iiwid3JhcHBlciIsImNvcHlJY29uIiwiYm9vbCIsIm51bWJlciIsImNyZWF0ZUNvbnRleHQiLCJDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IiwiQWxlcnQiLCJTbmFja2JhciIsIlR5cG9ncmFwaHkiLCJDaGVja0NpcmNsZUljb24iLCJFcnJvckljb24iLCJDdXN0b21Ob3RpZmljYXRpb24iLCJzZXZlcml0eSIsImFuY2hvck9yaWdpbiIsInZlcnRpY2FsIiwiaG9yaXpvbnRhbCIsImF1dG9IaWRlRHVyYXRpb24iLCJ2YXJpYW50Iiwic3giLCJiYWNrZ3JvdW5kQ29sb3IiLCJpY29uTWFwcGluZyIsInN1Y2Nlc3MiLCJmb250U2l6ZSIsImVycm9yIiwiZnVuYyIsIlRoZW1lUHJvdmlkZXIiLCJjcmVhdGVUaGVtZSIsImRhcmtDb2xvciIsInJvb3QiLCJkb2N1bWVudEVsZW1lbnQiLCJnZXRDb21wdXRlZFN0eWxlIiwiZ2V0UHJvcGVydHlWYWx1ZSIsInRoZW1lIiwicGFsZXR0ZSIsInByaW1hcnkiLCJtYWluIiwic2Vjb25kYXJ5IiwidHlwb2dyYXBoeSIsImJvZHkxIiwiZm9udFdlaWdodCIsImg1IiwibWFyZ2luQm90dG9tIiwiaDYiLCJjb21wb25lbnRzIiwiTXVpRm9ybUhlbHBlclRleHQiLCJzdHlsZU92ZXJyaWRlcyIsIk11aUJ1dHRvbiIsImxpbmVIZWlnaHQiLCJNdWlUYWIiLCJjb2xvciIsIk11aVRhYnMiLCJpbmRpY2F0b3IiLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJDaGVja2JveCIsIkZvcm1Db250cm9sIiwiRm9ybUNvbnRyb2xMYWJlbCIsIkZvcm1Hcm91cCIsIkZvcm1IZWxwZXJUZXh0IiwiRm9ybUxhYmVsIiwiUmF3SFRNTCIsImdldExhYmVsIiwidG9TbHVnIiwiQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCIsIl9xdWVzdGlvbiR2YWx1ZXMiLCJxdWVzdGlvbiIsInF1ZXN0aW9uQ2xhc3NOYW1lIiwiaXNEaXNhYmxlZCIsIm9uQ2hhbmdlIiwic2V0RmllbGRWYWx1ZSIsImhlbHBlclRleHQiLCJyZXN0IiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInZhbHVlcyIsInZhbCIsImxhYmVsIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJuZXdWYWx1ZSIsInYiLCJkaXNhYmxlZCIsInJlcXVpcmVkIiwiZnVsbFdpZHRoIiwibWFyZ2luIiwib3AiLCJjb250cm9sIiwiaW5jbHVkZXMiLCJldiIsInRhcmdldCIsIm9iamVjdCIsImFycmF5IiwiQ2hlY2tib3hRdWVzdGlvbkZpZWxkIiwiYWxpZ25JdGVtcyIsIm1hcmdpblRvcCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dEZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJjaGVja1Zpc2liaWxpdHkiLCJydWxlUmVzdWx0IiwidmlzaWJpbGl0eSIsInZpc2liaWxpdHlfY29uZGl0aW9uIiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsInNvbWUiLCJnZXRUeXBlSW5pdGlhbFZhbHVlIiwidHlwZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJGcmFnbWVudCIsIkV4dHJhUXVlc3Rpb25zRmllbGRzIiwib3JpZ2luYWxBbnN3ZXJzIiwicmVhZE9ubHkiLCJhbGxvd0VkaXQiLCJmb3JtaWsiLCJyZW5kZXJSdWxlIiwiaXNWaXNpYmxlIiwicmVuZGVyUXVlc3Rpb24iLCJzdWJfcXVlc3Rpb24iLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMiLCJRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwiZm9ybWlrUHJvcHMiLCJoYW5kbGVDaGFuZ2UiLCJvbkJsdXIiLCJoYW5kbGVCbHVyIiwidG91Y2hlZCIsIkJvb2xlYW4iLCJzdWJfcXVlc3Rpb25fcnVsZXMiLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkJveCIsIkNhcmRIZWFkZXIiLCJJY29uQnV0dG9uIiwiQ29sbGFwc2UiLCJDYXJkQ29udGVudCIsIkV4cGFuZE1vcmVJY29uIiwiQXNzaWduZWRGaWx0ZXIiLCJvbkZpbHRlciIsImZpbHRlclZhbHVlcyIsInN0YXRlIiwiaXNFeHBhbmRlZCIsInNldElzRXhwYW5kZWQiLCJhc3NpZ25lZFZhbHVlcyIsImhhbmRsZUZpbHRlckNoYW5nZSIsIm5ld0ZpbHRlciIsInRpdGxlV3JhcHBlciIsImFjdGlvbiIsImRpc2FibGVSaXBwbGUiLCJ0cmFuc2Zvcm0iLCJ0cmFuc2l0aW9uIiwiaW4iLCJ0aW1lb3V0IiwidW5tb3VudE9uRXhpdCIsInB5IiwicGIiLCJhc3NpZ25lZCIsInVzZUVmZmVjdCIsIkJhZGdlRmVhdHVyZUZpbHRlciIsImJhZGdlX2ZlYXR1cmVzX3R5cGVzIiwibmV3RmlsdGVycyIsImYiLCJiZiIsInVzZVJlZiIsIlN0YWNrIiwiRmlsdGVyTGlzdEljb24iLCJCYWRnZSIsIkNhcmQiLCJEaXZpZGVyIiwiUGFwZXIiLCJjb25uZWN0IiwiVGlja2V0VHlwZUZpbHRlciIsIlN0YXR1c0ZpbHRlciIsIkZyZWVQYWlkRmlsdGVyIiwiUHJvbW9Db2RlRmlsdGVyIiwiRmlsdGVyIiwib25SZXNldCIsImFjdGl2ZUZpbHRlcnNDb3VudCIsInNob3dGaWx0ZXJMaXN0Iiwic2V0U2hvd0ZpbHRlckxpc3QiLCJzaG93RGF0ZXBpY2tlciIsInNldFNob3dEYXRlcGlja2VyIiwiZmlsdGVyUmVmIiwiaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlIiwiZXZlbnQiLCJjdXJyZW50IiwiY29udGFpbnMiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImhhbmRsZUZpbHRlclJlc2V0IiwiZmlsdGVyQ29udGFpbmVyIiwicHQiLCJiYWRnZUNvbnRlbnQiLCJtciIsImZpbHRlckljb24iLCJmaWx0ZXJMYWJlbCIsImZpbHRlckxpc3RDb250YWluZXIiLCJjb250YWluZXIiLCJlbGV2YXRpb24iLCJmaWx0ZXJDaGVja2JveENvbnRhaW5lciIsImNsZWFuQnV0dG9uIiwibWFwU3RhdGVUb1Byb3BzIiwicHJvbW9Db2RlIiwic2V0UHJvbW9Db2RlIiwiZGVib3VuY2VUaW1lciIsIkRFQk9VTkNFX1ZBTFVFIiwibmV3UHJvbW9Db2RlIiwiY2xlYXJUaW1lb3V0IiwicGxhY2Vob2xkZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiQ2xvc2VJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiYm9yZGVyQm90dG9tIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJDbG9zZUljb25XcmFwcGVyIiwicGFkZGluZyIsInRvcCIsInJpZ2h0IiwiY3Vyc29yIiwiekluZGV4IiwiU2VhcmNoIiwib25TZWFyY2giLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwic2hvd0Nsb3NlQnRuIiwib25LZXlEb3duIiwibmF0aXZlRXZlbnQiLCJyZXNldFNlYXJjaCIsImlucHV0UHJvcHMiLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwidGlja2V0X3R5cGVzIiwiR3JpZCIsIkZpbHRlcnMiLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsIkZvcm1Gb290ZXIiLCJzYXZlTGFiZWwiLCJjYW5jZWxMYWJlbCIsImZvb3RlciIsImNhbmNlbEJ0biIsInNpemUiLCJzYXZlQnRuIiwiRXJyb3JMYWJlbCIsImRhdGFUZXN0SWQiLCJlcnJvckxhYmVsIiwiQmFja2Ryb3AiLCJDaXJjdWxhclByb2dyZXNzIiwiTG9hZGVyIiwiZHJhd2VyIiwiSW5maW5pdGVTY3JvbGwiLCJPcmRlcnNMaXN0IiwiT05FX1BBR0VfTkVYVCIsIk15T3JkZXJzVGlja2V0cyIsImZldGNoRGF0YSIsIm1lbWJlck9yZGVycyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwibXlPcmRlcnNXcmFwcGVyIiwiZGF0YUxlbmd0aCIsIm5leHQiLCJoYXNNb3JlIiwic2Nyb2xsVGhyZXNob2xkIiwiVGlja2V0c0ljb24iLCJ2aWV3Qm94IiwiZmlsbCIsInhtbG5zIiwiZCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZURhc2hhcnJheSIsIlRBQlMiLCJfRnJhZ21lbnQiLCJOb1RpY2tldHNGb3VuZCIsInBhZ2VWaWV3IiwibG9hZGluZyIsImdldENvbnRlbnQiLCJtYWlsdG9UYWciLCJzdXBwb3J0X2VtYWlsIiwiYnV0dG9uTGFiZWwiLCJUSUNLRVRTIiwiaWNvbldyYXBwZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJkaXNjb3VudFRvdGFsIiwicmVmdW5kVG90YWwiLCJhbW91bnRUb3RhbCIsInN1YlRvdGFsIiwidGlja2V0U3VtbWFyeSIsInRheGVzU3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJ0YXhlc19hbW91bnQiLCJ0YXgiLCJhbW91bnQiLCJkaXNjb3VudF9hbW91bnQiLCJzaGFwZSIsInVzZU5vdyIsInRpY2tldHNSZWZ1bmRhYmxlIiwidXNlU3VtbWl0RGV0YWlscyIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsImlzU3RhcnRlZCIsIm5vdyIsImlzSW5SZWZ1bmRhYmxlUGVyaW9kIiwicmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlIiwiYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQiLCJpc1JlZnVuZGFibGUiLCJoYXNSZWZ1bmRSZXF1ZXN0cyIsInJvbGUiLCJvcmRlclN1bW1hcnlCdXR0b24iLCJyZWZ1bmREaXNhYmxlZCIsInJlbCIsImFycmF5T2YiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwibWVtYmVyVGlja2V0cyIsIk9yZGVyTGlzdFRpY2tldHMiLCJBc3NpZ25Ub01lIiwidXNlclRpY2tldHMiLCJ1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIiwidXNlcl90aWNrZXRzX2xhc3RfcGFnZSIsIm9yZGVyVGlja2V0Q29udGFpbmVyIiwiYXNzaWduZWRUb01lV3JhcHBlciIsInRpY2tldExpc3RDb250YWluZXIiLCJpc1JlZnVuZE1vZGFsIiwiaXNTZWxlY3RlZFRvUmVmdW5kIiwic2VsZWN0VG9SZWZ1bmQiLCJpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQiLCJBc3NpZ25lZFRvIiwiRXh0ZXJuYWxBc3NpZ25lZFRvIiwiTWFuYWdlRm9yIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJfdGlja2V0JG93bmVyMyIsImlzVW5hc3NpZ25lZCIsImlzX2FjdGl2ZSIsImlzRGVsZWdhdGVkIiwidGlja2V0T3duZXJFbWFpbCIsIl90aWNrZXQkb3JkZXIiLCJfdGlja2V0JG9yZGVyMiIsIl90aWNrZXQkb3duZXI0IiwiX3RpY2tldCRvd25lcjUiLCJhc3NpZ25lZEJ5VGV4dCIsIm93bmVyX2ZpcnN0X25hbWUiLCJvd25lcl9sYXN0X25hbWUiLCJQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQiLCJPcmRlckxpc3RJdGVtIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJfb3JkZXIkbWVtYmVyVGlja2V0czIiLCJvblBhZ2luYXRlQ2xpY2siLCJ0aWNrZXRzVG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5IiwidGlja2V0c190b3RhbCIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJvblZpZXdMZXNzIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwidXNlRGlzcGF0Y2giLCJUaWNrZXRTdGF0dXMiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0QXNzaWduIiwibW9kYWxWaWV3cyIsImRldGFpbCIsInJlYXNzaWduIiwiYXNzaWduIiwiVGlja2V0Q1RBcyIsImlzSW5jb21wbGV0ZSIsImlzUmVhc3NpZ25hYmxlIiwib25PcGVuQ2xpY2siLCJhc3NpZ25UaWNrZXRCdXR0b24iLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwicmVhc3NpZ25CdXR0b24iLCJfdGlja2V0JHRpY2tldF90eXBlIiwiX3RpY2tldCRiYWRnZSIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiYmFkZ2UiLCJmZWF0dXJlcyIsInRpY2tldE5vIiwidGlja2V0Rm9vdGVyIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiXyIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJyZWZ1bmREZXRhaWxzT3BlbiIsInNldFJlZnVuZERldGFpbHNPcGVuIiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNsb3NlU3VibWl0UmVxdWVzdCIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsImJvcmRlckNvbG9yIiwidGFiQnV0dG9ucyIsIm9uUmVmdW5kU3VjY2Vzc0Nsb3NlIiwib25DbG9zZVNsaWRlciIsIm1kIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsInRpY2tldF9wZXJfcGFnZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50IiwibGciLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInVzZU1lbW8iLCJSaWdodERyYXdlciIsIlJlZnVuZFJlcXVlc3RlZFRpY2tldCIsImdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMiLCJyZXF1ZXN0ZWRUaWNrZXRzIiwiY2xvc2VTbGlkZXIiLCJyZWZ1bmREZXRhaWxzIiwidG9vbHRpcENsYXNzZXMiLCJJbmZvSWNvbiIsIm1vbWVudCIsIlJlZnVuZFN0YXR1cyIsIkdSSURfOCIsIkdSSURfMTIiLCJQQURESU5HXzIiLCJhcHByb3ZlZFJlZnVuZHMiLCJyZWZ1bmQiLCJyZWZ1bmRlZFRheGVzU3VtbWF0b3J5IiwicmVmdW5kZWRfdGF4ZXMiLCJydCIsInRheElkIiwidG90YWxSZWZ1bmRlZFRheEFtb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsIkh0bWxUb29sdGlwIiwiY2xhc3NlcyIsInBvcHBlciIsIm1heFdpZHRoIiwiYm9yZGVyIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwicmVmdW5kRGV0YWlsIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiRHJhd2VyIiwiQ2xvc2UiLCJoZWFkZXJDaGlsZHJlbiIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJTdW1taXRIZWFkZXIiLCJ3aWRnZXRIZWFkZXIiLCJzdW1taXRUaXRsZURhdGUiLCJkYXRlc19sYWJlbCIsIlRhYldyYXBwZXIiLCJ0YWIiLCJzZXRUYWIiLCJoYXNUaWNrZXRzIiwiaXNGaWx0ZXJlZCIsImNsZWFyRmlsdGVycyIsImdldFBhZ2VWaWV3IiwiZ2V0T25DbGljayIsInRhYlRvTGluayIsIkxpbmsiLCJSZWFzc2lnbkZvcm0iLCJEZWxlZ2F0ZUZvcm0iLCJBc3NpZ25PcHRpb25zIiwiYXNzaWduT3B0aW9uIiwic2V0QXNzaWduT3B0aW9uIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25VbkFzc2lnbiIsIm9wZW5Db25maXJtVW5hc3NpZ24iLCJzZXRPcGVuQ29uZmlybVVuYXNzaWduIiwiaXNBc3NpZ25lZFRvTWUiLCJhbGxvd3NEZWxlZ2F0ZSIsImhhbmRsZVVuQXNzaWduIiwibXkiLCJvblN1Ym1pdCIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJkZWxlZ2F0ZV9maXJzdF9uYW1lIiwiZGVsZWdhdGVfbGFzdF9uYW1lIiwiZGVsZWdhdGVfZW1haWwiLCJ1bmFzc2lnbldyYXBwZXIiLCJjb21wb25lbnQiLCJ0ZXh0RGVjb3JhdGlvbiIsInRleHREZWNvcmF0aW9uQ29sb3IiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJpc1N1Ym1pdHRpbmciLCJBc3NpZ25IZWFkZXIiLCJpblByb2dyZXNzIiwidXNlckVtYWlsIiwiYXNzaWduZWRUb1lvdSIsImdldFNlY29uZGFyeVRpdGxlIiwiZ2V0SGVhZGVyTm90ZSIsInRyYW5zS2V5IiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJoZWFkZXJOb3RlIiwiUmVhc3NpZ25IZWFkZXIiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwidXNlQ29udGV4dCIsIlRpY2tldEZvcm0iLCJ1c2VHZXRUaWNrZXQiLCJUSUNLRVRfRFJBV0VSX0lEIiwic3VjY2Vzc01lc3NhZ2UiLCJlcnJvck1lc3NhZ2UiLCJhc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsIm9uQ2xvc2VFUUZvcm0iLCJvblNhdmVFUSIsInJlc29sdmUiLCJIZWFkZXIiLCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lciIsImNhbkVkaXQiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJkaXNjbGFpbWVyIiwiUVJDb2RlIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiVFdPX0lURU0iLCJUaWNrZXREZXRhaWxIZWFkZXIiLCJpc1ZpcnR1YWxTdW1taXQiLCJpc0NvbXBsZXRlIiwic2VudENvbmZpcm1hdGlvbiIsInNldFNlbnRDb25maXJtYXRpb24iLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwicXJDb2RlIiwicXJfY29kZSIsInFyTm90ZSIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJzZW50Iiwib3JkZXJOdW1iZXIiLCJUaWNrZXRPd25lckZpZWxkcyIsInVzZVNjcm9sbFRvRXJyb3IiLCJwYXJzZUFuc3dlcnMiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJyZWR1Y2UiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnkiLCJyZWxldmFudEFuc3dlcnMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJhZGRpdGlvbmFsRGV0YWlscyIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJpbmZvTm90ZSIsIm9uU2F2ZSIsInRpY2tldERldGFpbENvbnRhaW5lciIsImlzX3ZpcnR1YWwiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJBc3NpZ25lZFRvTWUiLCJXaWRnZXRUYWJzIiwidGlja2V0c0Z1bGx5TG9hZGVkIiwic2V0VGlja2V0c0Z1bGx5TG9hZGVkIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzUGVyUGFnZSIsInRpY2tldFBlclBhZ2UiLCJoYW5kbGVUYWJDaGFuZ2UiLCJuZXdUYWIiLCJmZXRjaEFzc2lnbmVkVGlja2V0cyIsImZldGNoT3JkZXJUaWNrZXRzIiwib3JkZXJUaWNrZXRzUHJvbWlzZXMiLCJjdXJyZW50X3BhZ2UiLCJmZXRjaFByb21pc2VzIiwidGFiV3JhcHBlciIsIldpZGdldFdyYXBwZXIiLCJtc2dEYXRhIiwic2V0TXNnRGF0YSIsIm1lc3NhZ2VDb250ZXh0IiwiZmlsdGVyVmFsdWUiLCJzb3J0VmFsdWUiLCJ0aWNrZXRzVGl0bGVUZXh0IiwiUHJvdmlkZXIiLCJydW4iLCJjdXJyZW50VGlja2V0Iiwic21vb3RoU2Nyb2xsVG8iLCJ0YXJnZXRTY3JvbGxUb3AiLCJkdXJhdGlvbiIsInN0YXJ0U2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiZGlzdGFuY2UiLCJzdGFydFRpbWUiLCJhbmltYXRpb25TdGVwIiwidGltZXN0YW1wIiwiZWxhcHNlZCIsInByb2dyZXNzIiwiTWF0aCIsIm1pbiIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpbml0UmVhY3RJMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImVuIiwiZXMiLCJ1c2UiLCJpbml0IiwiZmFsbGJhY2tMbmciLCJkZWJ1ZyIsInJlc291cmNlcyIsInRyYW5zbGF0aW9uIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiTE9HT1VUX1VTRVIiLCJTVEFSVF9MT0FESU5HIiwiU1RPUF9MT0FESU5HIiwiUkVTRVRfTE9BRElORyIsImNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMiLCJoYXNMb2FkZWRBbGxEYXRhIiwidXBkYXRlVGlja2V0Q29sbGVjdGlvbiIsIkRFRkFVTFRfRklMVEVSX1NUQVRFIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJjdXJyZW50X3RhYiIsIm9yZGVyc190b3RhbCIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwidXNlcl90aWNrZXRzX3RvdGFsIiwiYXBpRXJyb3IiLCJXaWRnZXRSZWR1Y2VyIiwibmV3QWN0aXZlQ291bnQiLCJ0b3RhbCIsImxhc3RfcGFnZSIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsIm5ld09yZGVycyIsIm1vIiwiX2RhdGEkMiIsIm5ld1RpY2tldHMiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidXBkYXRlZE9yZGVyIiwidGlja2V0RGF0YSIsIm5ld1VzZXJUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImdldEFjY2Vzc1Rva2VuTW9jayIsIkVycm9yIiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJNSU5fUkVRVUlSRUQiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJPTkVfUkVUUlkiLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiX29yZGVyJGFwcGxpZWRfdGF4ZXMiLCJyYXdfYW1vdW50IiwiY3VycmVuY3lPYmplY3QiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJhcHBsaWVkX3RheGVzIiwiZm9ybWF0dGVkVGF4IiwicHVyY2hhc2VUb3RhbCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldE9yZGVyVGlja2V0cyIsIl9vcmRlcnMkIiwib3JkZXJzIiwiZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzIiwidHMiLCJzZXRIb3VycyIsImRlZmF1bHRDdXJyZW50VGltZSIsInJvdW5kIiwiRGF0ZSIsImdldE5vdyIsInRpbWVyU3RhdGUiLCJub3dVdGMiLCJjdXJyZW50UGFnZSIsImNvdW50IiwidHJpbSIsImNoZWNrU3VtbWl0UGFzdCIsInJlYXNzaWduX2RhdGUiLCJyZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIiwiZW5kX2RhdGUiLCJjaGVja1N1bW1pdFN0YXJ0ZWQiLCJzdGFydF9kYXRlIiwiZ2V0U3VtbWl0RGF5c0RpZmYiLCJzdGFydERheSIsInRpbWVfem9uZV9pZCIsImVuZERheSIsImRheXMiLCJkaWZmIiwiZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJfc3VtbWl0JHRpbWVfem9uZSIsIl9zdW1taXQkdGltZV96b25lMiIsImZvcm1hdHRlZERhdGUiLCJmb3JtYXR0ZWRSZWFzc2lnbkRhdGUiLCJ0aW1lX3pvbmUiLCJkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lIiwiaXNQYXN0Iiwic3RhdHVzRGF0YSIsImdldFRpY2tldFN0YXR1c0tleSIsImdldFRpY2tldFN0YXR1c0RhdGEiLCJpc1N1bW1pdFBhc3QiLCJnZXRUaWNrZXRSb2xlIiwiZmVhdHVyZSIsImdldFRpY2tldFR5cGUiLCJmaW5hbF9hbW91bnQiLCJuZXRfc2VsbGluZ19jb3N0IiwicnIiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMyIiwiYWxsVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM0IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNSIsImdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNiIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczciLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM4IiwiZ2V0VHlwZVZhbGlkYXRpb24iLCJzY2hlbWEiLCJvbmVPZiIsIm9mIiwicGFyc2VTdWJRdWVzdGlvbkFuc3dlciIsIm9ubHlSZWxldmFudCIsInN1YlF1ZXN0aW9uU2x1ZyIsInN1YkFuc3dlciIsIm1hdGNoIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwiYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEiLCJfc3ViUXVlc3Rpb24kc3ViX3F1ZXMiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJhbnNWYWx1ZU1hdGNoIiwic2NoIiwic3ViUnVsZSIsImRpc2NsYWltZXJNYW5kYXRvcnkiLCJsYXp5IiwidHlwZUVycm9yIiwiX3Qkb3duZXIiLCJfdCRvd25lcjIiLCJfdGlja2V0JG93bmVyNiIsInRtcFRpY2tldCIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9