my-orders-tickets-widget 1.0.0-beta.31 → 1.0.0-beta.32

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 (2) hide show
  1. package/dist/index.js +27 -25
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -3018,36 +3018,38 @@ const AssignToMe = () => {
3018
3018
  fetchData(_utils_constants__WEBPACK_IMPORTED_MODULE_7__.ONE_PAGE_NEXT);
3019
3019
  }, []);
3020
3020
  return /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("div", {
3021
- id: "assignedToMeWrapper",
3022
3021
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.orderTicketContainer,
3023
- style: {
3024
- height: 500,
3025
- overflow: "auto",
3026
- margin: "15px 0"
3027
- },
3028
3022
  children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("h3", {
3029
3023
  className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.assignToMeText,
3030
3024
  children: t("labels.assigned_to_me")
3031
3025
  }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsxs)("h2", {
3032
3026
  children: [summit === null || summit === void 0 ? void 0 : summit.name, " ", /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("br", {}), (0,_utils_summitUtils__WEBPACK_IMPORTED_MODULE_6__.getSummitFormattedDate)(summit)]
3033
- }), userTickets !== null && userTickets !== void 0 && userTickets.length ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_3___default()), {
3034
- dataLength: userTickets === null || userTickets === void 0 ? void 0 : userTickets.length,
3035
- next: () => fetchData(user_tickets_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_7__.ONE_PAGE_NEXT),
3036
- hasMore: user_tickets_current_page < user_tickets_last_page,
3037
- scrollThreshold: 1,
3038
- scrollableTarget: "assignedToMeWrapper",
3039
- children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div", {
3040
- className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.ticketListContainer,
3041
- children: userTickets.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderListTickets__WEBPACK_IMPORTED_MODULE_5__["default"], {
3042
- ticket: ticket,
3043
- summit: summit,
3044
- refundRequested: false,
3045
- isSelectedToRefund: [],
3046
- selectToRefund: false,
3047
- isExternalAssignedTicket: true
3048
- }, ticket.id))
3049
- })
3050
- }) : ""]
3027
+ }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div", {
3028
+ id: "assignedToMeWrapper",
3029
+ style: {
3030
+ height: 500,
3031
+ overflow: "auto",
3032
+ margin: "15px 0"
3033
+ },
3034
+ children: userTickets !== null && userTickets !== void 0 && userTickets.length ? /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)((react_infinite_scroll_component__WEBPACK_IMPORTED_MODULE_3___default()), {
3035
+ dataLength: userTickets === null || userTickets === void 0 ? void 0 : userTickets.length,
3036
+ next: () => fetchData(user_tickets_current_page + _utils_constants__WEBPACK_IMPORTED_MODULE_7__.ONE_PAGE_NEXT),
3037
+ hasMore: user_tickets_current_page < user_tickets_last_page,
3038
+ scrollThreshold: 1,
3039
+ scrollableTarget: "assignedToMeWrapper",
3040
+ children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)("div", {
3041
+ className: _styles_module_scss__WEBPACK_IMPORTED_MODULE_8__.ticketListContainer,
3042
+ children: userTickets.map(ticket => /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_9__.jsx)(_OrderListTickets__WEBPACK_IMPORTED_MODULE_5__["default"], {
3043
+ ticket: ticket,
3044
+ summit: summit,
3045
+ refundRequested: false,
3046
+ isSelectedToRefund: [],
3047
+ selectToRefund: false,
3048
+ isExternalAssignedTicket: true
3049
+ }, ticket.id))
3050
+ })
3051
+ }) : ""
3052
+ })]
3051
3053
  });
3052
3054
  };
3053
3055
  /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (AssignToMe);
@@ -8192,4 +8194,4 @@ MyOrdersMyTicketsWidget.propTypes = {
8192
8194
  /******/ })()
8193
8195
  ;
8194
8196
  });
8195
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,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OztBQ0YxQjtBQUNBO0FBQ0E7QUFDNEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSDVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzhYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkI5WDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDc0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ050STtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN5Rzs7Ozs7Ozs7Ozs7QUNMekc7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7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UyxHQUFHO0VBQ2xDZ3ZCLFFBQVEsRUFBRWx4QiwwREFBZ0I7RUFDMUJ1NkIsWUFBWSxFQUFFdjZCLDBEQUFnQjtFQUM5QnhLLE1BQU0sRUFBRXdLLDBEQUFnQjtFQUN4QjFILFVBQVUsRUFBRTBILDBEQUFnQjtFQUM1QnZLLElBQUksRUFBRXVLLDBEQUFnQjtFQUN0Qml4QixRQUFRLEVBQUVqeEIsMERBQWdCO0VBQzFCckQsYUFBYSxFQUFFcUQsd0RBQWNxQztBQUMvQixDQUFDO0FBRUQsaUVBQWVpNEIsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Fzc2lnbkVRRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRGF0ZXBpY2tlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9FcnJvckxhYmVsLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xvYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXNzaWduZWRUb01lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RJdGVtLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGVsZWdhdGlvbkZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgZ2V0UmVxdWVzdCxcbiAgZGVsZXRlUmVxdWVzdCxcbiAgY3JlYXRlQWN0aW9uLFxuICBzdG9wTG9hZGluZyxcbiAgc3RhcnRMb2FkaW5nLFxuICBwdXRSZXF1ZXN0XG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgeyBvYmplY3RUb1F1ZXJ5U3RyaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgRklSU1RfUEFHRSxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgRklGVFlfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfTVlfQVNTSUdORURfVElDS0VUUyA9IFwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUID0gXCJVUERBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfVElDS0VUID0gXCJSRVNFVF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgQVNTSUdOX1RJQ0tFVCA9IFwiQVNTSUdOX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVycm9yID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9BUElfRVJST1IpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSL1NPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX1bXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfT1AJHtmaWx0ZXJPYmoudmFsdWV9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT5cbiAgZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIjtcblxuLy8gcGF5bG9hZDogeyBodHRwQ29kZSwgdGl0bGUsIGh0bWw6IGNvbnRlbnQsIHR5cGUgfVxuZXhwb3J0IGNvbnN0IGVycm9ySGFuZGxlck5vdGlmeSA9IChwYXlsb2FkLCBjYWxsYmFjaykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQVBJX0VSUk9SKShwYXlsb2FkKSk7XG4gIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHsgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcIm9yZGVyLmlkXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2ZpcnN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfbGFzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2VtYWlsXCIsXG4gICAgICBcIm93bmVyLmlkXCIsXG4gICAgICBcIm93bmVyLmVtYWlsXCIsXG4gICAgICBcIm93bmVyLmZpcnN0X25hbWVcIixcbiAgICAgIFwib3duZXIubGFzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLnN0YXR1c1wiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGZpbHRlcjogXCJzdGF0dXM9PVBhaWRcIixcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfTVlfQVNTSUdORURfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHsgb3JkZXJJZCwgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgYXNzaWduQXR0ZW5kZWUgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlID0gbnVsbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT5cbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpXG4gICAgKTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVFeHRyYVF1ZXN0aW9ucyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgYW5zd2VycyxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFBERiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgeyBidWlsZFZhbGlkYXRpb25TY2hlbWEsIHBhcnNlQW5zd2VycyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBBc3NpZ25FUUZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAge30sXG4gICAgICBudWxsLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrLCBcInJlYXNzaWduRHJhd2VyXCIpO1xuXG4gIGlmIChleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPEJveD5cbiAgICAgICAgPEV4dHJhUXVlc3Rpb25zRmllbGRzIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc30gZm9ybWlrPXtmb3JtaWt9IC8+XG4gICAgICAgIHtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCAmJiAoXG4gICAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgZGlzY2xhaW1lcj17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnR9XG4gICAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ25fZXEuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduX2VxLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbkFzc2lnbkVRRm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduRVFGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgZGVmYXVsdFdpZHRoID0gOTA7XG5cbmNvbnN0IENvcHlUZXh0ID0gKHtcbiAgdGV4dCxcbiAgdG9vbHRpcFRleHQsXG4gIGhpZGVDb3B5ID0gZmFsc2UsXG4gIHRydW5jYXRlZCA9IHRydWUsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdG9vbHRpcFRleHRUb1VzZSA9IHRvb2x0aXBUZXh0IHx8IHQoXCJnZW5lcmFsLmNvcHlfdG9fY2xpcGJvYXJkXCIpO1xuICBjb25zdCBbdG9vbHRpcCwgc2V0VG9vbHRpcF0gPSBSZWFjdC51c2VTdGF0ZSh0b29sdGlwVGV4dFRvVXNlKTtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMudHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIHNldFRvb2x0aXAodChcImdlbmVyYWwuY29waWVkXCIpKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRvb2x0aXAodG9vbHRpcFRleHRUb1VzZSk7XG4gICAgfSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7dGV4dH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHshaGlkZUNvcHkgJiYgKFxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17dG9vbHRpcH0+XG4gICAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db3B5VGV4dC5wcm9wVHlwZXMgPSB7XG4gIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRvb2x0aXBUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRlQ29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvcHlUZXh0O1xuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBkZWZhdWx0Q29udGV4dFZhbHVlID0ge1xuICBzZXRNZXNzYWdlOiAoKSA9PiB7fSxcbiAgc2V0TWVzc2FnZUNhbGxiYWNrOiAoKSA9PiB7fVxufTtcblxuY29uc3QgQ3VzdG9tRGlhbG9nQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHRWYWx1ZSk7XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZ0NvbnRleHQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBEaWFsb2csXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0NvbnRlbnRUZXh0LFxuICBEaWFsb2dUaXRsZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBDdXN0b21EaWFsb2cgPSAoeyBvcGVuLCBvbkNsb3NlLCB0aXRsZSwgYm9keSB9KSA9PiAoXG4gIDxEaWFsb2dcbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgPlxuICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPnt0aXRsZX08L0RpYWxvZ1RpdGxlPlxuICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9EaWFsb2dDb250ZW50VGV4dD5cbiAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gIDwvRGlhbG9nPlxuKTtcblxuQ3VzdG9tRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYm9keTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5sZXQgZGFya0NvbG9yID0gXCJcIjtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIC8vIEdldCB0aGUgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLy8gUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBDU1MgdmFyaWFibGVcbiAgZGFya0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgIFwiLS1jb2xvcl9iYWNrZ3JvdW5kX2RhcmtcIlxuICApO1xufVxuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcGFsZXR0ZToge1xuICAgIHByaW1hcnk6IHtcbiAgICAgIG1haW46IGRhcmtDb2xvclxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IEN1c3RvbVRoZW1lID0gKHsgY2hpbGRyZW4gfSkgPT4gKFxuICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PntjaGlsZHJlbn08L1RoZW1lUHJvdmlkZXI+XG4pO1xuXG5DdXN0b21UaGVtZS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21UaGVtZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID0gY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0LCBjaGlsZHJlbikgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgaWYgKCFydWxlUmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWUudG9TdHJpbmcoKVxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+XG4gICAgY2hlY2tWaXNpYmlsaXR5KFxuICAgICAgcnVsZSxcbiAgICAgIGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbilcbiAgICApO1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQWRhcHRlckRheWpzIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCI7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb25Qcm92aWRlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCI7XG5pbXBvcnQgeyBEYXRlUGlja2VyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvRGF0ZVBpY2tlclwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9EQVRFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYXNpY0RhdGVQaWNrZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgY29uc3QgW2RhdGVWYWx1ZSwgc2V0RGF0ZVZhbHVlXSA9IHVzZVN0YXRlKG5vdyk7XG4gIGNvbnN0IG9uRGF0ZUNoYW5nZSA9ICh2YWwpID0+IHtcbiAgICBzZXREYXRlVmFsdWUodmFsKTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsLiRkKTtcbiAgICBjb25zdCB7IGxvd2VyLCB1cHBlciB9ID0gZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzKGRhdGUpO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIHR5cGU6IEZJTFRFUl9WQVJfREFURSxcbiAgICAgIG5hbWU6IFwiY3JlYXRlZFwiLFxuICAgICAgZGF0ZSxcbiAgICAgIGxvd2VyLFxuICAgICAgdXBwZXJcbiAgICB9KTtcbiAgfTtcbiAgY29uc3Qgb25SZXNldEFjdGlvbiA9ICgpID0+IHtcbiAgICBvblJlc2V0KCk7XG4gICAgc2V0RGF0ZVZhbHVlKG5vdyk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyRGF0ZUxhYmVsfT57dChcImZpbHRlci5wdXJjaGFzZWRfb25cIil9PC9kaXY+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlUGlja2VyQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZXBpY2tlckNsb3NlfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVzZXRBY3Rpb259XG4gICAgICAgIC8+XG4gICAgICAgIDxMb2NhbGl6YXRpb25Qcm92aWRlciBkYXRlQWRhcHRlcj17QWRhcHRlckRheWpzfT5cbiAgICAgICAgICA8RGF0ZVBpY2tlclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FsZW5kYXJEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uRGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIHZhbHVlPXtkYXRlVmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Mb2NhbGl6YXRpb25Qcm92aWRlcj5cbiAgICAgIDwvU3RhY2s+XG4gICAgPC8+XG4gICk7XG59XG5cbkJhc2ljRGF0ZVBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IEJhc2ljRGF0ZVBpY2tlciBmcm9tIFwiLi9EYXRlcGlja2VyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXJOdW1BY3RpdmUsIHNldEZpbHRlck51bUFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEZpbHRlckxpc3RJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJJY29ufSAvPlxuICAgICAgICB7LyoqIGN1cnJlbnRseSBqdXN0IHNob3dpbmcgXCIxXCIgYmVjYXVzZSB3ZSdyZSBjdXJyZW50bHkgb25seSBmaWx0ZXJpbmcgb25lIGNyaXRlcmlhIC0gY3JlYXRlZCBkYXRlICovfVxuICAgICAgICB7ZmlsdGVyTnVtQWN0aXZlICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTnVtQWN0aXZlfT4xPC9kaXY+fVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJMYWJlbH0+e3QoXCJmaWx0ZXIuZmlsdGVyXCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmZpbHRlckxpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn0gJHtcbiAgICAgICAgICBzaG93RmlsdGVyTGlzdCA/IHN0eWxlcy5zaG93RGF0ZVBpY2tlciA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxCYXNpY0RhdGVQaWNrZXJcbiAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XG4gICAgICAgICAgICBvblJlc2V0KCk7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoZmFsc2UpO1xuICAgICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgb25GaWx0ZXIoZmlsdGVyKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZSh0cnVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuZnVuY3Rpb24gU2VhcmNoKHsgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgbmFtZTogXCJudW1iZXJcIixcbiAgICAgICAgdHlwZTogRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcbiAgICAgIH0pO1xuICAgICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgc2V0U2hvd0Nsb3NlKGZhbHNlKTtcbiAgICBvblJlc2V0KCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gU29ydCh7IG9uU29ydCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH0+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiZGVzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImFzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXJTb3J0U2VhcmNoKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICByZXR1cm4gKFxuICAgIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIHhzPXs2fVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgZ2FwPXsyfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cbkZpbHRlclNvcnRTZWFyY2gucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlclNvcnRTZWFyY2g7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBGaWx0ZXJTb3J0U2VhcmNoIGZyb20gXCIuL0ZpbHRlclNvcnRTZWFyY2hcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICByZXNldEZpbHRlcixcbiAgcmVzZXRFcnJvclxufSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0IExvYWRlciBmcm9tIFwiLi9Mb2FkZXJcIjtcbmltcG9ydCBDdXN0b21EaWFsb2dDb250ZXh0IGZyb20gXCIuL0N1c3RvbURpYWxvZy9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbbWVzc2FnZSwgc2V0TWVzc2FnZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW21lc3NhZ2VDYWxsYmFjaywgc2V0TWVzc2FnZUNhbGxiYWNrXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBsb2FkaW5nLFxuICAgIG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgb3JkZXJzX2xhc3RfcGFnZSxcbiAgICBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlLFxuICAgIGFwaUVycm9yXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuICBjb25zdCBbZmlsdGVyLCBzZXRGaWx0ZXJdID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBbc29ydCwgc2V0U29ydF0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QXBpRXJyb3IgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRFcnJvcigpKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAocGFnZSkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgZGF0YS5mb3JFYWNoKChvcmRlcikgPT4ge1xuICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogT05FX1BBR0VfTkVYVCxcbiAgICAgICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YShvcmRlcnNfY3VycmVudF9wYWdlKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwaUVycm9yKSB7XG4gICAgICBzZXRNZXNzYWdlKGFwaUVycm9yKTtcbiAgICAgIHNldE1lc3NhZ2VDYWxsYmFjayhyZXNldEFwaUVycm9yKTtcbiAgICB9XG4gIH0sIFthcGlFcnJvcl0pO1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlcikgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuICBjb25zdCBvblNvcnQgPSAoZGlyZWN0aW9uKSA9PiB7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBzZXRTb3J0KHsgZGlyZWN0aW9uLCBuYW1lOiBcImNyZWF0ZWRcIiB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDdXN0b21UaGVtZT5cbiAgICAgIDxMb2FkZXIgb3Blbj17bG9hZGluZ30gLz5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFtZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgc2V0TWVzc2FnZShudWxsKTtcbiAgICAgICAgICBpZiAobWVzc2FnZUNhbGxiYWNrKSBtZXNzYWdlQ2FsbGJhY2soKTtcbiAgICAgICAgfX1cbiAgICAgICAgYm9keT17bWVzc2FnZT8uYm9keX1cbiAgICAgICAgdGl0bGU9e21lc3NhZ2U/LnRpdGxlfVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldHNUaXRsZVRleHR9Pnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICAgIDwvaDI+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsoc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrKX0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBpZD1cImluZmluaXRlV3JhcHBlclwiXG4gICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiA1MDAsIG92ZXJmbG93OiBcImF1dG9cIiwgbWFyZ2luOiBcIjE1cHggMFwiIH19XG4gICAgICAgID5cbiAgICAgICAgICB7XCIgXCJ9XG4gICAgICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgICAgIGRhdGFMZW5ndGg9e21lbWJlck9yZGVycz8ubGVuZ3RofVxuICAgICAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDw9IG9yZGVyc19sYXN0X3BhZ2V9XG4gICAgICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZVRhcmdldD1cImluZmluaXRlV3JhcHBlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICAgICAga2V5PXtvcmRlci5udW1iZXIgKyBvcmRlci5pZH1cbiAgICAgICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT57dChcIm9yZGVycy5ub19vcmRlcnNcIil9PC9Cb3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0N1c3RvbURpYWxvZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9DdXN0b21UaGVtZT5cbiAgKTtcbn07XG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeVRhYmxlID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0IH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5PcmRlclN1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2NvdW50X2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0YXhlc19hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeVRhYmxlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kRW1haWxTdXBwb3J0ID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgb25SZWZ1bmREZXRhaWxDbGljayxcbiAgb25FbWFpbFN1cHBvcnRDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBpc0luUmVmdW5kYWJsZVBlcmlvZCA9XG4gICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSA+IG5vdztcbiAgY29uc3QgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQgPSB0aWNrZXRzUmVmdW5kYWJsZSh0aWNrZXRzKTtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gISEoaXNJblJlZnVuZGFibGVQZXJpb2QgJiYgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNSZWZ1bmRhYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgcmVxdWVzdCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn0gJHtcbiAgICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZCAmJiB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwICYmICFzdWJtaXRSZXF1ZXN0XG4gICAgICAgICAgICAgID8gc3R5bGVzLnJlZnVuZERpc2FibGVkXG4gICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgIH1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtcbiAgICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZCAmJiB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwICYmICFzdWJtaXRSZXF1ZXN0XG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cImVtYWlsIHN1cHBvcnQgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25FbWFpbFN1cHBvcnRDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgcmVmdW5kUmVxdWVzdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGlja2V0c1RvUmVmdW5kOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlIG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59O1xuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgcmVmdW5kUmVxdWVzdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGlja2V0c1RvUmVmdW5kOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZ2V0VXNlclRpY2tldHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCwgREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICgpID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyVGlja2V0cyxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VXNlclRpY2tldHMoeyBwYWdlLCBwZXJQYWdlOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YShPTkVfUEFHRV9ORVhUKTtcbiAgfSwgW10pO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGlkPVwiYXNzaWduZWRUb01lV3JhcHBlclwiXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn1cbiAgICAgIHN0eWxlPXt7IGhlaWdodDogNTAwLCBvdmVyZmxvdzogXCJhdXRvXCIsIG1hcmdpbjogXCIxNXB4IDBcIiB9fVxuICAgID5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25Ub01lVGV4dH0+e3QoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIil9PC9oMz5cbiAgICAgIDxoMj5cbiAgICAgICAge3N1bW1pdD8ubmFtZX0gPGJyIC8+XG4gICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICA8L2gyPlxuICAgICAge3VzZXJUaWNrZXRzPy5sZW5ndGggPyAoXG4gICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJUaWNrZXRzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXt1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIDwgdXNlcl90aWNrZXRzX2xhc3RfcGFnZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgICAgc2Nyb2xsYWJsZVRhcmdldD1cImFzc2lnbmVkVG9NZVdyYXBwZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfT5cbiAgICAgICAgICAgIHt1c2VyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtbXX1cbiAgICAgICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25Ub01lO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXR0ZW5kZWVTdGF0dXMgPSAoeyB0aWNrZXQsIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgcmV0dXJuIHRpY2tldC5vd25lcj8uZW1haWwgPyAoXG4gICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTogPGJyIC8+XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE93bmVyRW1haWx9XG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy1hc3NpZ25lZFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge1wiIFwifVxuICAgICAgICAgICAge3RpY2tldC5vd25lcj8uZW1haWx9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0JveD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIHtpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgJiYgKFxuICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF9ieVwiKX06IDxiciAvPlxuICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgIHt0aWNrZXQub3JkZXI/Lm93bmVyX2ZpcnN0X25hbWV9IHt0aWNrZXQub3JkZXI/Lm93bmVyX2xhc3RfbmFtZX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICkgOiAoXG4gICAgdGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgKTtcbn07XG5cbkF0dGVuZGVlU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdHRlbmRlZVN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuL09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCB7IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJMaXN0SXRlbSA9ICh7XG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIG9uUGFnaW5hdGVDbGljayxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMtdGlja2V0cy52aWV3X21vcmVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKSA6IChcbiAgICAgICAgXCJcIlxuICAgICAgKX1cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5sZW5ndGggPiBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgJiZcbiAgICAgIHNsaWNlZFRpY2tldHM/Lmxlbmd0aCA9PT0gb3JkZXI/LnRpY2tldHNfdG90YWwgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBsZXNzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TGVzc31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlckxpc3RJdGVtLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0SXRlbTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IGdldFN1bW1pdFJlYXNzaWduRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4vQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgVGlja2V0UmVhc3NpZ24gZnJvbSBcIi4uL1RpY2tldFJlYXNzaWduXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0QXNzaWduIGZyb20gXCIuLi9UaWNrZXRBc3NpZ25cIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBtb2RhbFZpZXdzID0ge1xuICBkZXRhaWw6IFwiREVUQUlMXCIsXG4gIHJlYXNzaWduOiBcIlJFQVNTSUdOXCIsXG4gIGFzc2lnbjogXCJBU1NJR05cIlxufTtcblxuY29uc3QgVGlja2V0Q1RBcyA9ICh7XG4gIGlzSW5jb21wbGV0ZSxcbiAgaXNVbmFzc2lnbmVkLFxuICBpc1JlYXNzaWduYWJsZSxcbiAgb25PcGVuQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25UaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuYXNzaWduKX1cbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbl90aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U3RhY2tcbiAgICAgIHN4PXt7XG4gICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIixcbiAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICB9fVxuICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgID5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5kZXRhaWwpfVxuICAgICAgPlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWFzc2lnbiB0aWNrZXQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLnJlYXNzaWduKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuVGlja2V0Q1RBcy5wcm9wVHlwZXMgPSB7XG4gIGlzSW5jb21wbGV0ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNVbmFzc2lnbmVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1JlYXNzaWduYWJsZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25PcGVuQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbn0pID0+IHtcbiAgY29uc3QgX2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCA9ICEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0O1xuXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSwgY2FuUmVhc3NpZ24gfSA9XG4gICAgdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbbW9kYWxPcGVuLCBzZXRNb2RhbE9wZW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIHNldE1vZGFsT3BlbihudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAodmlldykgPT4ge1xuICAgIHNldE1vZGFsT3Blbih2aWV3KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyV3JhcHBlcn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgPlxuICAgICAgPEdyaWRcbiAgICAgICAgeHM9ezh9XG4gICAgICAgIHBhZGRpbmc9ezJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAge3JlZnVuZFJlcXVlc3RlZCAmJiBpc1JlZnVuZGFibGUgJiYgKFxuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgY2hlY2tlZD17aXNTZWxlY3RlZFRvUmVmdW5kfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXs0fSBwYWRkaW5nPXsyfSBpdGVtPlxuICAgICAgICB7LyogVG8gYWRkIGJhZGdlIGZlYXR1cmVzICovfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogMiwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgPEF0dGVuZGVlU3RhdHVzXG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXtfaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Lm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBjb250YWluZXIgZGlyZWN0aW9uPVwicm93XCIgeHM9ezEyfSBsZz17Nn0gYWxpZ25JdGVtcz1cImNlbnRlclwiIGl0ZW0+XG4gICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBwYWRkaW5nPXsyfSB4cz17MTJ9IGxnPXs2fSBjb250YWluZXIgaXRlbT5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgaXRlbVxuICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICBhbGlnbj1cImNlbnRlclwiXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17XG4gICAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZSAmJiBjYW5SZWFzc2lnbiAmJiAhX2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLmRldGFpbH1cbiAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgIC8+XG4gICAgICB7aXNSZWFzc2lnbmFibGUgJiYgY2FuUmVhc3NpZ24gJiYgIV9pc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxUaWNrZXRSZWFzc2lnblxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWR9XG4gICAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5yZWFzc2lnbn1cbiAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgLz5cbiAgICAgICAgICA8VGlja2V0QXNzaWduXG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZH1cbiAgICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgICAgb3Blbj17bW9kYWxPcGVuID09PSBtb2RhbFZpZXdzLmFzc2lnbn1cbiAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3JkZXJfaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvdGFsX3JlZnVuZGVkX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0aWNrZXRfdHlwZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZnVuZFJlcXVlc3RlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNlbGVjdFRvUmVmdW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0VGlja2V0cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgUmVmdW5kRGV0YWlscyBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlsc1wiO1xuXG5jb25zdCBUYWJQYW5lbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgPSAoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG4gIGNvbnN0IFtyZWZ1bmRSZXF1ZXN0ZWQsIHNldFJlZnVuZFJlcXVlc3RlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFt0aWNrZXRzVG9SZWZ1bmQsIHNldFRpY2tldHNUb1JlZnVuZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzdWJtaXRSZXF1ZXN0LCBzZXRTdWJtaXRSZXF1ZXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZnVuZERldGFpbHNPcGVuLCBzZXRSZWZ1bmREZXRhaWxzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBpZiAodGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMCkge1xuICAgICAgc2V0UmVmdW5kUmVxdWVzdGVkKHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICAgICAodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkXG4gICAgICApO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgY2FuY2VsVGlja2V0c1RvUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFJlZnVuZFJlcXVlc3RlZChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBzZWxlY3RBbGxUaWNrZXRzID0gKCkgPT4ge1xuICAgIGNvbnN0IHJlZnVuZGFibGVUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbHRlcihcbiAgICAgICh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpID09PSB0cnVlXG4gICAgKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQocmVmdW5kYWJsZVRpY2tldHMpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0UmVmdW5kUmVxdWVzdGVkKGZhbHNlKTtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IG1vcmVEZXRhaWxzID0gKCkgPT5cbiAgICBkZXRhaWxzUmVxdWlyZWQgJiYgKFxuICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgbWVzc2FnZT17dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2RldGFpbHNfcmVxdWlyZWRcIil9XG4gICAgICAgIGNvbG9yPVwiI2ZmOTgwMFwiXG4gICAgICAgIGRhdGFUZXN0SWQ9XCJtb3JlLWRldGFpbHMtbGFiZWxcIlxuICAgICAgLz5cbiAgICApO1xuXG4gIHJldHVybiBpc01vYmlsZSA/IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJtb2JpbGUtb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8Qm94IHN4PXt7IGJvcmRlckNvbG9yOiBcImRpdmlkZXJcIiwgcGI6IDIgfX0+XG4gICAgICAgIDxUYWJzXG4gICAgICAgICAgdmFsdWU9e3ZhbHVlfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgdGV4dENvbG9yPVwiIzAwMFwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cIlRpY2tldHMgJiBTdW1tYXJ5XCJcbiAgICAgICAgICBUYWJJbmRpY2F0b3JQcm9wcz17e1xuICAgICAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgICAgYmFja2dyb3VuZDogXCIjMDAwXCJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kUmVxdWVzdGVkICYmIChcbiAgICAgICAgPEdyaWQgaXRlbSBtZD17MTJ9PlxuICAgICAgICAgIDxzcGFuPnt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfdGlja2V0X3JlZnVuZFwiKX08L3NwYW4+XG4gICAgICAgICAgPFN0YWNrXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICAgICAgICBzaXplPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kQnV0dG9uc31cbiAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsVGlja2V0c31cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnNlbGVjdF9hbGxcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEJ1dHRvbnN9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2NhbmNlbFRpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnNlbGVjdF9jYW5jZWxcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXNrdG9wLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17MX0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICBvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZT17KCkgPT4gcmVzZXRBbGxSZWZ1bmRTdGF0dXNlcygpfVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKX1cbiAgICAgIC8+XG4gICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgb3Blbj17cmVmdW5kRGV0YWlsc09wZW59XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgbWVtYmVyVGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KSxcbiAgaXNNb2JpbGU6IFByb3BUeXBlcy5ib29sLFxuICBkZXRhaWxzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvblBhZ2luYXRlQ2xpY2s6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgdXNlTWVkaWFRdWVyeSBmcm9tIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRzQnlPcmRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBnZXRGb3JtYXR0ZWREYXRlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIGZyb20gXCIuL09yZGVyc0xpc3REZXNrdG9wTW9iaWxlXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyc0xpc3QgPSAoeyBzdW1taXQsIG9yZGVyIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgdGlja2V0X3Blcl9wYWdlIH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgbmV4dDogdHJ1ZVxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiAxLFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcn1cbiAgICAgID5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm99XG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci10aWNrZXQtaW5mby1jb250YWluZXJcIlxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcnMucHVyY2hhc2VkXCIpfToge2dldEZvcm1hdHRlZERhdGUob3JkZXIuY3JlYXRlZCl9IHx7XCIgXCJ9XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX25vXCIpfTp7XCIgXCJ9XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXtvcmRlci5udW1iZXJ9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgICB7aXNNb2JpbGUgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHN4PXt7IHBhZGRpbmc6IDAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJsYWNrQnV0dG9ufVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0TW9iaWxlVmlld2FibGUoIWlzTW9iaWxlVmlld2FibGUpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtpc01vYmlsZVZpZXdhYmxlXG4gICAgICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuaGlkZV90aWNrZXRzXCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRzXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICA8R3JpZFxuICAgICAgICBrZXk9e29yZGVyLmlkfVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcm93U3BhY2luZz17MX1cbiAgICAgICAgY29sdW1uU3BhY2luZz17eyB4czogMSwgc206IDIsIG1kOiAzIH19XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfSAke1xuICAgICAgICAgIGlzTW9iaWxlICYmICFpc01vYmlsZVZpZXdhYmxlID8gc3R5bGVzLmRpc3BsYXlfbm9uZSA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgZmxleERpcmVjdGlvbjoge1xuICAgICAgICAgICAgbWQ6IFwicm93XCIsXG4gICAgICAgICAgICBsZzogXCJyb3dcIlxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMCxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8T3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcbiAgICAgICAgICBpc01vYmlsZT17aXNNb2JpbGV9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIGRldGFpbHNSZXF1aXJlZD17ISFkZXRhaWxzUmVxdWlyZWR9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlcnNMaXN0LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgcmVxdWVzdGVkVGlja2V0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyh0aWNrZXRzKSxcbiAgICBbdGlja2V0c11cbiAgKTtcbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWZ1bmQtZGV0YWlsc1wiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgPlxuICAgICAge3JlcXVlc3RlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHJlZnVuZERldGFpbHNcbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5SZWZ1bmREZXRhaWxzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmREZXRhaWxzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBEZWxldGVPdXRsaW5lSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9EZWxldGVPdXRsaW5lXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBSZWZ1bmRTdGF0dXMgZnJvbSBcIi4vUmVmdW5kU3RhdHVzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdGVkVGlja2V0ID0gKHsgdGlja2V0LCBvblJlbW92ZSwgcmVmdW5kRGV0YWlscyB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEJveENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3RlZC10aWNrZXQtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8R3JpZCB4cz17MTJ9IHBhZGRpbmc9ezJ9IGl0ZW0ganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIj5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcInNwYWNlLWJldHdlZW5cIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgeyFyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgICAgIDxEZWxldGVPdXRsaW5lSWNvblxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZW1vdmUtYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGVsZXRlSWNvbn1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25SZW1vdmUodGlja2V0KX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXsxMn0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgPEF0dGVuZGVlU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSBoaWRlQ29weSAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHhzPXsxMn0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb25SZW1vdmU6IFByb3BUeXBlcy5mdW5jLFxuICByZWZ1bmREZXRhaWxzOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgc3RhdHVzQ29sb3IgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yKHRpY2tldCksXG4gICAgW3RpY2tldF1cbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8QnV0dG9uXG4gICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgcmVmdW5kIHN0YXR1cyBsYWJlbFwiXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlc1tzdGF0dXNDb2xvcl19YH1cbiAgICA+XG4gICAgICB7dChgdGlja2V0X3N0YXR1cy5yZWZ1bmRfcmVxdWVzdF8ke3N0YXR1c0NvbG9yfWApfVxuICAgIDwvQnV0dG9uPlxuICApO1xufTtcblxuUmVmdW5kU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmRTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRSZXF1ZXN0c01vZGFsID0gKHtcbiAgdGlja2V0cyxcbiAgb3BlbixcbiAgb25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHMsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc3RlcCwgc2V0U3RlcF0gPSB1c2VTdGF0ZShTVEVQX09ORSk7XG4gIGNvbnN0IFtlcnJvck1zZywgc2V0RXJyb3JNc2ddID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtyZWZ1bmRTdWNjZXNzLCBzZXRSZWZ1bmRTdWNjZXNzXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBjbG9zZVNsaWRlciA9ICgpID0+IHtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgICBvbkNsb3NlU2xpZGVyKCk7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gICAgaWYgKHJlZnVuZFN1Y2Nlc3MpIHtcbiAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlKCk7IC8vIGlmIHRoZSByZWZ1bmQgaXMgYSBzdWNjZXNzLCB0cmlnZ2VyIGFuZCByZS1yZXRyaWV2ZSB0aWNrZXRzIGJ5IG9yZGVyXG4gICAgICBzZXRSZWZ1bmRTdWNjZXNzKGZhbHNlKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHMgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHMubGVuZ3RoKSB7XG4gICAgICAgIHNldFN0ZXAoU1RFUF9UV08pOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDI+e3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfY2FuY2VsXCIpfTwvaDI+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3g+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPFJlZnVuZFJlcXVlc3RlZFRpY2tldFxuICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIG9uUmVtb3ZlPXtvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0c31cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17cmVmdW5kVGlja2V0c31cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWZ1bmQtcmVxdWVzdHNcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LW1vZGFsXCJcbiAgICAgID5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSwgRHJhd2VyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHsgaWQsIHRpdGxlLCBjaGlsZHJlbiwgb3Blbiwgb25DbG9zZSwgY2xhc3NOYW1lIH0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtZHJhd2VyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aXRsZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJhd2VyPlxuKTtcblxuUmlnaHREcmF3ZXIucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aXRsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmlnaHREcmF3ZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgQXNzaWduRm9ybSA9ICh7IG9uU3VibWl0LCBvbkNsb3NlLCBzYXZlTGFiZWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IFwiXCIsXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogeXVwLnN0cmluZyh0KFwidmFsaWRhdGlvbi50ZXh0LnN0cmluZ1wiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X3JlYXNzaWduLm5ld19hdHRlbmRlZV9lbWFpbFwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWwpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsXG4gICAgICAgIH1cbiAgICAgICAgcmVxdWlyZWRcbiAgICAgIC8+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPVwicGVyc29uYWxfbWVzc2FnZVwiXG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X3JlYXNzaWduLnBlcnNvbmFsX21lc3NhZ2VcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgIG11bHRpbGluZVxuICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmIGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXtzYXZlTGFiZWwgfHwgdChcInRpY2tldF9yZWFzc2lnbi5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5jYW5jZWxcIil9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgLz5cbiAgICA8L2Zvcm0+XG4gICk7XG59O1xuXG5Bc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIHNhdmVMYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduRm9ybTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBUeXBvZ3JhcGh5LCBEaXZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIGFzc2lnbkF0dGVuZGVlLFxuICBnZXRFeHRyYVF1ZXN0aW9ucyxcbiAgZ2V0VGlja2V0LFxuICBzYXZlRXh0cmFRdWVzdGlvbnNcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBBc3NpZ25FUUZvcm0gZnJvbSBcIi4uL0Fzc2lnbkVRRm9ybVwiO1xuaW1wb3J0IEFzc2lnbkZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9Bc3NpZ25Gb3JtXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IEN1c3RvbURpYWxvZ0NvbnRleHQgZnJvbSBcIi4uL0N1c3RvbURpYWxvZy9Db250ZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEFzc2lnbiA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFt0aWNrZXRBc3NpZ25lZCwgc2V0VGlja2V0QXNzaWduZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB7IHNldE1lc3NhZ2UsIHNldE1lc3NhZ2VDYWxsYmFjayB9ID0gdXNlQ29udGV4dChDdXN0b21EaWFsb2dDb250ZXh0KTtcbiAgY29uc3Qge1xuICAgIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCxcbiAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpY2tldElkICYmIG9yZGVySWQgJiYgb3Blbikge1xuICAgICAgZGlzcGF0Y2goZ2V0VGlja2V0KHRpY2tldElkLCBvcmRlcklkKSk7XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG9wZW5dKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChvd25lcklkICYmIG9wZW4pIHtcbiAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICB9XG4gIH0sIFtvd25lcklkXSk7XG5cbiAgY29uc3Qgb25Bc3NpZ25Ub090aGVyID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IHsgbmV3X2F0dGVuZGVlX2VtYWlsLCBwZXJzb25hbF9tZXNzYWdlIH0gPSB2YWw7XG4gICAgcmV0dXJuIGRpc3BhdGNoKFxuICAgICAgYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIG5ld19hdHRlbmRlZV9lbWFpbCwgcGVyc29uYWxfbWVzc2FnZSlcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0VGlja2V0QXNzaWduZWQodHJ1ZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25Bc3NpZ25Ub01lID0gKCkgPT5cbiAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgdXNlclByb2ZpbGUuZW1haWwpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFRpY2tldEFzc2lnbmVkKHRydWUpO1xuICAgIH0pO1xuXG4gIGNvbnN0IG9uQ2xvc2VFUUZvcm0gPSAoKSA9PiB7XG4gICAgc2V0VGlja2V0QXNzaWduZWQoZmFsc2UpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlU2F2ZU1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgc2V0VGlja2V0QXNzaWduZWQoZmFsc2UpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldE1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBib2R5OiB0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgc2V0TWVzc2FnZUNhbGxiYWNrKG9uQ2xvc2VTYXZlTWVzc2FnZSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGJvZHk6IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD1cInJlYXNzaWduRHJhd2VyXCJcbiAgICAgIHRpdGxlPXt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBc3NpZ25Db250YWluZXJ9XG4gICAgPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hbGlnbkNlbnRlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck5vfT5cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e3RpY2tldD8ub3JkZXI/Lm51bWJlcn1cbiAgICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgICB3aWR0aD17MjUwfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDwvQm94PlxuICAgICAge3RpY2tldCAmJiAhdGlja2V0QXNzaWduZWQgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFR5cGV9PlxuICAgICAgICAgICAgICB7dGlja2V0Py50eXBlPy5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25CdG59XG4gICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXtvbkFzc2lnblRvTWV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fbWVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCI+Jm5ic3A7Jm5ic3A7b3ImbmJzcDsmbmJzcDs8L0RpdmlkZXI+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFsaWduQ2VudGVyfT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmFzc2lnbl90b19zb21lb25lX2Vsc2VcIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb05vdGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZW50ZXJfZW1haWxfbm90ZVwiKX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8QXNzaWduRm9ybVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25Bc3NpZ25Ub090aGVyfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnNhdmVfbGFiZWxcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICB7dGlja2V0ICYmIHRpY2tldEFzc2lnbmVkICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hbGlnbkNlbnRlcn0+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fc29tZW9uZV9lbHNlXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb05vdGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5lbnRlcl9lbWFpbF9ub3RlXCIpfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxBc3NpZ25Gb3JtXG4gICAgICAgICAgICBvblN1Ym1pdD17b25Bc3NpZ25Ub090aGVyfVxuICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24uc2F2ZV9sYWJlbFwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgICB7dGlja2V0ICYmIHRpY2tldEFzc2lnbmVkICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hbGlnbkNlbnRlcn0+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25lZF90b1wiKX1cbiAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgIHt0aWNrZXQ/Lm93bmVyPy5lbWFpbH1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9Ob3RlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uY29tcGxldGVfaW5mb1wiKX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8QXNzaWduRVFGb3JtXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldEFzc2lnbi5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0QXNzaWduO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgc2V0RmllbGRUb3VjaGVkLCBzZXRGaWVsZFZhbHVlIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoXG4gICAgICAgICAgKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLnRpdGxlXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgfVxuICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAvPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblJlZ2lzdHJhdGlvbkRpc2NsYWltZXIucHJvcFR5cGVzID0ge1xuICBkaXNjbGFpbWVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgaXNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5jb25zdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzID0gKHsgZm9ybWlrIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGlkPVwiZGVsZWdhdGVkX2ZpcnN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2ZpcnN0X25hbWV9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9sYXN0X25hbWVcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwubGFzdF9uYW1lXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZWRfbGFzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9sYXN0X25hbWUgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXREZWxlZ2F0aW9uRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERlbGVnYXRpb25GaWVsZHM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuXG5pbXBvcnQge1xuICBnZXRUeXBlVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuXG5pbXBvcnQgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyBmcm9tIFwiLi4vVGlja2V0RGVsZWdhdGlvbkZpZWxkc1wiO1xuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQge1xuICBwYXJzZUFuc3dlcnMsXG4gIGJ1aWxkVmFsaWRhdGlvblNjaGVtYVxufSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB0aWNrZXRNYW5hZ2VyID0gdGlja2V0Py5tYW5hZ2VyO1xuICAvKiBESVNBQkxFIERFTEVHQVRJT04gRlRNICovXG4gIGNvbnN0IGFsbG93c0RlbGVnYXRpb24gPSB0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgJiYgZmFsc2U7XG4gIGNvbnN0IGFuc3dlcnMgPSB0aWNrZXQ/Lm93bmVyPy5leHRyYV9xdWVzdGlvbnMucmVkdWNlKChyZXMsIGFucykgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhhbnMucXVlc3Rpb24ubmFtZSwgYW5zLnF1ZXN0aW9uLmlkKTtcbiAgICByZXNbcXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWx1ZShhbnMudmFsdWUsIGFucy5xdWVzdGlvbi50eXBlKTtcbiAgICByZXR1cm4gcmVzO1xuICB9LCB7fSk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiBwYXJzZUFuc3dlcnMoXG4gICAgICB0aWNrZXQub3duZXIsXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIGFuc3dlcnMsXG4gICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgYWxsb3dzRGVsZWdhdGlvbixcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeVxuICAgICksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMpID0+IHtcbiAgICAgIGNvbnN0IHJlbGV2YW50QW5zd2VycyA9IHBhcnNlQW5zd2VycyhcbiAgICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgICAgdmFsdWVzLFxuICAgICAgICB0aWNrZXRNYW5hZ2VyLFxuICAgICAgICBhbGxvd3NEZWxlZ2F0aW9uLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuXG4gICAgICByZXR1cm4gb25TdWJtaXQocmVsZXZhbnRBbnN3ZXJzKTtcbiAgICB9LFxuICAgIGVuYWJsZVJlaW5pdGlhbGl6ZTogdHJ1ZVxuICB9KTtcblxuICAvLyBjb25zb2xlLmxvZyhcIlNVTU1JVDogXCIsIHN1bW1pdCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVElDS0VUOiBcIiwgdGlja2V0KTtcbiAgLy8gY29uc29sZS5sb2coXCJRVUVTVElVT05zOiBcIiwgZXh0cmFRdWVzdGlvbnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkFOU1dFUlM6IFwiLCBhbnN3ZXJzKTtcbiAgLy8gY29uc29sZS5sb2coXCJFUlJPUnM6IFwiLCBmb3JtaWsuZXJyb3JzKTtcbiAgLy8gY29uc29sZS5sb2coXCJWQUxVRVM6IFwiLCBmb3JtaWsudmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJJTklUSUFMOiBcIiwgZm9ybWlrLmluaXRpYWxWYWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRPVUNIRUQ6IFwiLCBmb3JtaWsudG91Y2hlZCk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrLCBcImRldGFpbHNEcmF3ZXJcIik7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxUaWNrZXRPd25lckZpZWxkc1xuICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgb3duZXI9e3RpY2tldC5vd25lcn1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2FsbG93c0RlbGVnYXRpb24gJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICB2YXJpYW50PVwic3VidGl0bGUyXCJcbiAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGVsZWdhdGVkVG99XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRlbGVnYXRlZF90b1wiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPFRpY2tldERlbGVnYXRpb25GaWVsZHMgZm9ybWlrPXtmb3JtaWt9IC8+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8aDYgY2xhc3NOYW1lPXtzdHlsZXMuYWRkaXRpb25hbERldGFpbHN9PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmFkaXRpb25hbF9kZXRhaWxzXCIpfVxuICAgICAgICAgIDwvaDY+XG4gICAgICAgICAgPEV4dHJhUXVlc3Rpb25zRmllbGRzXG4gICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICBhbGxvd0VkaXQ9e2NhbkVkaXR9XG4gICAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCAmJiAoXG4gICAgICAgIDxSZWdpc3RyYXRpb25EaXNjbGFpbWVyXG4gICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgZGlzY2xhaW1lcj17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnR9XG4gICAgICAgICAgaXNSZXF1aXJlZD17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeX1cbiAgICAgICAgICBpc0Rpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLnNhdmVcIil9XG4gICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2RldGFpbC5jYW5jZWxcIil9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgLz5cbiAgICA8L2Zvcm0+XG4gICk7XG59O1xuXG5UaWNrZXRGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjYW5FZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEZvcm07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IENvbXBhbnlGaWVsZCBmcm9tIFwiLi4vQ29tcGFueUZpZWxkXCI7XG5cbmNvbnN0IFRpY2tldE93bmVyRmllbGRzID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgZGlzYWJsZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9e1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsfVxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZW1haWxcIil9XG4gICAgICAgIGRpc2FibGVkXG4gICAgICAgIHZhbHVlPXt2YWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdfVxuICAgICAgLz5cbiAgICAgIHtbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lLCBUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0ubWFwKFxuICAgICAgICAobmFtZSkgPT4gKFxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAga2V5PXtuYW1lfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIGxhYmVsPXt0KGB0aWNrZXRfZGV0YWlsLiR7bmFtZX1gKX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgZXJyb3I9e3RvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pfVxuICAgICAgICAgICAgaGVscGVyVGV4dD17Zm9ybWlrLnRvdWNoZWRbbmFtZV0gJiYgZm9ybWlrLmVycm9yc1tuYW1lXX1cbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgLz5cbiAgICAgICAgKVxuICAgICAgKX1cbiAgICAgIDxDb21wYW55RmllbGQgZm9ybWlrPXtmb3JtaWt9IHN1bW1pdElkPXtzdW1taXRJZH0gaXNSZXF1aXJlZCAvPlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5pbmZvTm90ZX0+e3QoXCJ0aWNrZXRfZGV0YWlsLmluZm9fbm90ZVwiKX08L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldE93bmVyRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBDbG9zZSBhcyBDbG9zZUljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvbixcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIFRXT19JVEVNIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRQREYsIHNhdmVUaWNrZXREZXRhaWxzLCByZXNlbmROb3RpZmljYXRpb24gfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbc2VudENvbmZpcm1hdGlvbiwgc2V0U2VudENvbmZpcm1hdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGlzVXNlck9yZGVyT3duZXIgPSB0aWNrZXQ/Lm9yZGVyPy5vd25lcl9pZCA9PT0gdXNlclByb2ZpbGU/LmlkO1xuICBjb25zdCBpc1VzZXJUaWNrZXRPd25lciA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyUHJvZmlsZT8uZW1haWw7XG4gIGNvbnN0IGNhbkVkaXRUaWNrZXREYXRhID1cbiAgICAoaXNVc2VyVGlja2V0T3duZXIgfHwgaXNVc2VyT3JkZXJPd25lcikgJiZcbiAgICBzdW1taXQuYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucztcbiAgY29uc3QgeyBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3Qgb25TYXZlID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlVGlja2V0RGV0YWlscyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvbkNsb3NlU2F2ZU1lc3NhZ2UgPSAoKSA9PiB7XG4gICAgc2V0U2F2ZU1lc3NhZ2UobnVsbCk7XG4gICAgc2V0VGltZW91dChvbkNsb3NlLCBNSUxMSVNFQ19UT19TRUMpO1xuICB9O1xuXG4gIGNvbnN0IGRvd25sb2FkVGlja2V0UGRmID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKGdldFRpY2tldFBERih0aWNrZXQpKTtcbiAgfTtcblxuICBjb25zdCBvblNlbmRFbWFpbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNlbmROb3RpZmljYXRpb24odGlja2V0KSkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTZW50Q29uZmlybWF0aW9uKHRydWUpO1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIHNldFNlbnRDb25maXJtYXRpb24oZmFsc2UpO1xuICAgICAgfSwgTUlMTElTRUNfVE9fU0VDICogVFdPX0lURU0pO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxEcmF3ZXJcbiAgICAgICAgaWQ9XCJkZXRhaWxzRHJhd2VyXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgYW5jaG9yPVwicmlnaHRcIlxuICAgICAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXREZXRhaWxDb250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAgICAgICAgICB7dGlja2V0Py50aWNrZXRfdHlwZT8ubmFtZX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucHVyY2hhc2VkX2J5XCIpfSB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgICAgICAgICAgPFFSQ29kZVxuICAgICAgICAgICAgICAgICAgICAgIHNpemU9ezI1Nn1cbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICAgICAgICAgIG1heFdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3RpY2tldC5xcl9jb2RlfVxuICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT17c3R5bGVzLnN0YXR1c30+e3QoXCJ0aWNrZXRfZGV0YWlsLnN0YXR1c1wiKX08L3A+XG4gICAgICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucXJOb3RlfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucXJfbm90ZVwiKX1cbiAgICAgICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgICB7IXN1bW1pdD8uaXNfdmlydHVhbCAmJiBpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kb3dubG9hZEJ0bn1cbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2Rvd25sb2FkVGlja2V0UGRmfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RG93bmxvYWRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZG93bmxvYWRcIil9XG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc2VuZEJ0bn0gJHtcbiAgICAgICAgICAgICAgICAgICAgICBzZW50Q29uZmlybWF0aW9uID8gc3R5bGVzLnNlbnQgOiBcIlwiXG4gICAgICAgICAgICAgICAgICAgIH1gfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtvblNlbmRFbWFpbH1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbnRDb25maXJtYXRpb259XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxFbWFpbEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICAgICAgICAgIHtzZW50Q29uZmlybWF0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgPyB0KFwidGlja2V0X2RldGFpbC5zZW50XCIpXG4gICAgICAgICAgICAgICAgICAgICAgOiB0KFwidGlja2V0X2RldGFpbC5zZW5kXCIpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlck51bWJlcn0+XG4gICAgICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9pbmZvcm1hdGlvblwiKX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICB7dGlja2V0ICYmIChcbiAgICAgICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9EcmF3ZXI+XG4gICAgICA8Q3VzdG9tRGlhbG9nXG4gICAgICAgIG9wZW49eyEhc2F2ZU1lc3NhZ2V9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VTYXZlTWVzc2FnZX1cbiAgICAgICAgdGl0bGU9e3NhdmVNZXNzYWdlPy50aXRsZX1cbiAgICAgICAgZGVzY3JpcHRpb249e3NhdmVNZXNzYWdlPy5kZXNjcmlwdGlvbn1cbiAgICAgIC8+XG4gICAgPC8+XG4gICk7XG59O1xuXG5UaWNrZXREZXRhaWwucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBSZWFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ubmV3X2F0dGVuZGVlX2VtYWlsXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWxcbiAgICAgICAgfVxuICAgICAgICByZXF1aXJlZFxuICAgICAgLz5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJwZXJzb25hbF9tZXNzYWdlXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICBlcnJvcj17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuUmVhc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduRm9ybTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyByZWFzc2lnblRpY2tldCwgc2F2ZUV4dHJhUXVlc3Rpb25zIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSZWFzc2lnbkZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9SZWFzc2lnbkZvcm1cIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcblxuaW1wb3J0IEFzc2lnbkVRRm9ybSBmcm9tIFwiLi4vQXNzaWduRVFGb3JtXCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IEN1c3RvbURpYWxvZyBmcm9tIFwiLi4vQ3VzdG9tRGlhbG9nXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0UmVhc3NpZ24gPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2F2ZU1lc3NhZ2UsIHNldFNhdmVNZXNzYWdlXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbdGlja2V0UmVhc3NpZ25lZCwgc2V0VGlja2V0UmVhc3NpZ25lZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG5cbiAgY29uc3Qgb25SZWFzc2lnbiA9ICh2YWwpID0+IHtcbiAgICBjb25zdCB7IG5ld19hdHRlbmRlZV9lbWFpbCwgcGVyc29uYWxfbWVzc2FnZSB9ID0gdmFsO1xuICAgIHJldHVybiBkaXNwYXRjaChcbiAgICAgIHJlYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFRpY2tldFJlYXNzaWduZWQodHJ1ZSk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRUaWNrZXRSZWFzc2lnbmVkKGZhbHNlKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpY2tldFJlYXNzaWduZWQoZmFsc2UpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfc3VjY2Vzc19kZXNjcmlwdGlvblwiKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgIHNldFNhdmVNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5zYXZpbmdfZXJyb3JcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IGVyci50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IGdldExhYmVscyA9ICgpID0+IHtcbiAgICBpZiAodGlja2V0UmVhc3NpZ25lZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24ucmVhc3NpZ25fdGlja2V0XCIpLFxuICAgICAgICBzdWJ0aXRsZTogYCR7dChcInRpY2tldF9yZWFzc2lnbi5yZWFzc2lnbmVkX3RvXCIpfSAke1xuICAgICAgICAgIHRpY2tldD8ub3duZXI/LmVtYWlsXG4gICAgICAgIH1gLFxuICAgICAgICBoZWFkZXJOb3RlOiB0KFwidGlja2V0X3JlYXNzaWduLmNvbXBsZXRlX2luZm9cIilcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRpdGxlOiB0KFwidGlja2V0X3JlYXNzaWduLnJlYXNzaWduX3RpY2tldFwiKSxcbiAgICAgIHN1YnRpdGxlOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfcmVhc3NpZ24uYXNzaWduZWRfdG9cIil9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICA8Lz5cbiAgICAgICksXG4gICAgICBoZWFkZXJOb3RlOiB0KFwidGlja2V0X3JlYXNzaWduLmVudGVyX2VtYWlsX25vdGVcIilcbiAgICB9O1xuICB9O1xuXG4gIGNvbnN0IHsgdGl0bGUsIHN1YnRpdGxlLCBoZWFkZXJOb3RlIH0gPSBnZXRMYWJlbHMoKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0UmVhc3NpZ25Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8Qm94PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICAgICAgICAgIHtzdWJ0aXRsZX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtoZWFkZXJOb3RlfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dGlja2V0Py50eXBlPy5uYW1lfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgIXRpY2tldFJlYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25SZWFzc2lnbn1cbiAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge3RpY2tldCAmJiB0aWNrZXRSZWFzc2lnbmVkICYmIChcbiAgICAgICAgICAgICAgICA8QXNzaWduRVFGb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0UmVhc3NpZ24ucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFJlYXNzaWduO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHtyZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyByZWZ1bmQgcmVxdWVzdGVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uUmVmdW5kUmVxdWVzdGVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfcmVmdW5kX3JlcXVlc3RlZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzSW5jb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBpbmNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uSW5jb21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2luY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc1VuYXNzaWduZWQgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgdW5hc3NpZ25lZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblVuYXNzaWduZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY29tcGxldGVcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICA8Lz5cbiAgICAgICkgOiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyBjYW5jZWxsZWRcIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkNhbmNlbGxlZH1gfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jYW5jZWxsZWRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKTtcbn07XG5cblRpY2tldFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHN0YXR1czogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIHJlZnVuZFJlcXVlc3RzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRTdGF0dXM7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG93bmVySWQgJiYgcnVuKSB7XG4gICAgICBkaXNwYXRjaChnZXRUaWNrZXQodGlja2V0SWQsIG9yZGVySWQpKTtcbiAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuXSk7XG5cbiAgY29uc3QgeyBleHRyYVF1ZXN0aW9ucywgY3VycmVudFRpY2tldDogdGlja2V0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlXG4gICk7XG5cbiAgcmV0dXJuIHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlR2V0VGlja2V0O1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8vIFNtb290aCBzY3JvbGxpbmcgZnVuY3Rpb24gdXNpbmcgcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG5mdW5jdGlvbiBzbW9vdGhTY3JvbGxUbyhjb250YWluZXIsIHRhcmdldFNjcm9sbFRvcCwgZHVyYXRpb24pIHtcbiAgY29uc3Qgc3RhcnRTY3JvbGxUb3AgPSBjb250YWluZXIuc2Nyb2xsVG9wO1xuICBjb25zdCBkaXN0YW5jZSA9IHRhcmdldFNjcm9sbFRvcCAtIHN0YXJ0U2Nyb2xsVG9wO1xuICBsZXQgc3RhcnRUaW1lID0gbnVsbDtcblxuICBmdW5jdGlvbiBhbmltYXRpb25TdGVwKHRpbWVzdGFtcCkge1xuICAgIGlmICghc3RhcnRUaW1lKSBzdGFydFRpbWUgPSB0aW1lc3RhbXA7XG4gICAgY29uc3QgZWxhcHNlZCA9IHRpbWVzdGFtcCAtIHN0YXJ0VGltZTtcblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgY29uc3QgcHJvZ3Jlc3MgPSBNYXRoLm1pbihlbGFwc2VkIC8gZHVyYXRpb24sIDEpO1xuICAgIGNvbnN0IGVhc2VJbk91dFF1YWQgPVxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICAgIHByb2dyZXNzIDwgMC41ID8gMiAqIHByb2dyZXNzICoqIDIgOiAxIC0gKC0yICogcHJvZ3Jlc3MgKyAyKSAqKiAyIC8gMjtcblxuICAgIGNvbnRhaW5lci5zY3JvbGxUb3AgPSBzdGFydFNjcm9sbFRvcCArIGRpc3RhbmNlICogZWFzZUluT3V0UXVhZDtcblxuICAgIGlmIChlbGFwc2VkIDwgZHVyYXRpb24pIHtcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbiAgICB9XG4gIH1cblxuICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG59XG5cbmNvbnN0IHVzZVNjcm9sbFRvRXJyb3IgPSAoZm9ybWlrLCBjb250YWluZXJJZCkgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgaXNTdWJtaXR0aW5nIH0gPSBmb3JtaWs7XG4gIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICBjb25zdCBlcnJvckNvdW50ID0gZXJyb3JBcnJheS5sZW5ndGg7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBzb3J0IGVsZW1lbnRzIGJ5IHBvc2l0aW9uXG4gICAgY29uc3QgZWxlbWVudHNTb3J0ZWQgPSBlcnJvckFycmF5XG4gICAgICAucmVkdWNlKChyZXN1bHQsIGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBpbnB1dFtuYW1lPScke2Vycm9yfSddYCk7XG4gICAgICAgIGlmICghZWxlbWVudCkgcmV0dXJuIHJlc3VsdDtcblxuICAgICAgICBjb25zdCBlbFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICByZXN1bHQucHVzaCh7IGVsZW1lbnQsIGVycm9yLCB0b3A6IGVsUmVjdC50b3AgfSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sIFtdKVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEudG9wIC0gYi50b3ApO1xuXG4gICAgaWYgKGVsZW1lbnRzU29ydGVkLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnRcbiAgICAgIC5nZXRFbGVtZW50QnlJZChjb250YWluZXJJZClcbiAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLk11aURyYXdlci1wYXBlclwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50c1NvcnRlZFswXTtcblxuICAgIGlmIChjb250YWluZXI/LmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgKHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGUpICYmXG4gICAgc3RhdHVzICE9PSBTVEFUVVNfVU5BU1NJR05FRCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXI/LmlkICYmXG4gICAgIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZDtcbiAgY29uc3QgaXNDb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0NPTVBMRVRFO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSBzdGF0dXMgPT09IFNUQVRVU19VTkFTU0lHTkVEO1xuICBjb25zdCBpc0luY29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19JTkNPTVBMRVRFO1xuICBjb25zdCBjYW5SZWFzc2lnbiA9XG4gICAgIWlzVW5hc3NpZ25lZCAmJlxuICAgIHRpY2tldC50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX3JlYXNzaWduICYmXG4gICAgKCF0aWNrZXQucHJvbW9fY29kZSB8fCB0aWNrZXQucHJvbW9fY29kZT8uYWxsb3dzX3RvX3JlYXNzaWduKTtcblxuICByZXR1cm4ge1xuICAgIHN0YXR1cyxcbiAgICBpc0NvbXBsZXRlLFxuICAgIGlzVW5hc3NpZ25lZCxcbiAgICBpc0luY29tcGxldGUsXG4gICAgaXNBY3RpdmUsXG4gICAgaXNSZWZ1bmRhYmxlLFxuICAgIGFsbG93c0RlbGVnYXRlLFxuICAgIGNhblJlYXNzaWduXG4gIH07XG59O1xuIiwiaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGluaXRSZWFjdEkxOG5leHQgfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IExhbmd1YWdlRGV0ZWN0b3IgZnJvbSBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCI7XG5pbXBvcnQgZW4gZnJvbSBcIi4vbG9jYWxlcy9lbi5qc29uXCI7XG5pbXBvcnQgZXMgZnJvbSBcIi4vbG9jYWxlcy9lcy5qc29uXCI7XG5cbi8vIGltcG9ydCBCYWNrZW5kIGZyb20gJ2kxOG5leHQtaHR0cC1iYWNrZW5kJztcbi8vIGRvbid0IHdhbnQgdG8gdXNlIHRoaXM/XG4vLyBoYXZlIGEgbG9vayBhdCB0aGUgUXVpY2sgc3RhcnQgZ3VpZGVcbi8vIGZvciBwYXNzaW5nIGluIGxuZyBhbmQgdHJhbnNsYXRpb25zIG9uIGluaXRcblxuaTE4blxuICAvLyBsb2FkIHRyYW5zbGF0aW9uIHVzaW5nIGh0dHAgLT4gc2VlIC9wdWJsaWMvbG9jYWxlcyAoaS5lLiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9yZWFjdC1pMThuZXh0L3RyZWUvbWFzdGVyL2V4YW1wbGUvcmVhY3QvcHVibGljL2xvY2FsZXMpXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtaHR0cC1iYWNrZW5kXG4gIC8vIHdhbnQgeW91ciB0cmFuc2xhdGlvbnMgdG8gYmUgbG9hZGVkIGZyb20gYSBwcm9mZXNzaW9uYWwgQ0ROPyA9PiBodHRwczovL2dpdGh1Yi5jb20vbG9jaXplL3JlYWN0LXR1dG9yaWFsI3N0ZXAtMi0tLXVzZS10aGUtbG9jaXplLWNkblxuICAvLyAudXNlKEJhY2tlbmQpXG4gIC8vIGRldGVjdCB1c2VyIGxhbmd1YWdlXG4gIC8vIGxlYXJuIG1vcmU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L2kxOG5leHQtYnJvd3Nlci1sYW5ndWFnZURldGVjdG9yXG4gIC51c2UoTGFuZ3VhZ2VEZXRlY3RvcilcbiAgLy8gcGFzcyB0aGUgaTE4biBpbnN0YW5jZSB0byByZWFjdC1pMThuZXh0LlxuICAudXNlKGluaXRSZWFjdEkxOG5leHQpXG4gIC8vIGluaXQgaTE4bmV4dFxuICAvLyBmb3IgYWxsIG9wdGlvbnMgcmVhZDogaHR0cHM6Ly93d3cuaTE4bmV4dC5jb20vb3ZlcnZpZXcvY29uZmlndXJhdGlvbi1vcHRpb25zXG4gIC5pbml0KHtcbiAgICBmYWxsYmFja0xuZzogXCJlblwiLFxuICAgIGRlYnVnOiBmYWxzZSxcbiAgICByZXNvdXJjZXM6IHtcbiAgICAgIGVuOiB7IHRyYW5zbGF0aW9uOiBlbiB9LFxuICAgICAgZXM6IHsgdHJhbnNsYXRpb246IGVzIH1cbiAgICB9LFxuICAgIGludGVycG9sYXRpb246IHtcbiAgICAgIGVzY2FwZVZhbHVlOiBmYWxzZSAvLyBub3QgbmVlZGVkIGZvciByZWFjdCBhcyBpdCBlc2NhcGVzIGJ5IGRlZmF1bHRcbiAgICB9XG4gIH0pO1xuXG5leHBvcnQgZGVmYXVsdCBpMThuO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCB7IExPR09VVF9VU0VSIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgU1RBUlRfTE9BRElORyxcbiAgU1RPUF9MT0FESU5HLFxuICBSRVNFVF9MT0FESU5HXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFJFU0VUX1NUQVRFLFxuICBSRVNFVF9GSUxURVIsXG4gIFNFVF9TVEFURSxcbiAgU0VUX1VTRVIsXG4gIEdFVF9VU0VSX09SREVSUyxcbiAgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMsXG4gIEdFVF9USUNLRVRTX0JZX09SREVSLFxuICBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVELFxuICBSRUNFSVZFX1RJQ0tFVCxcbiAgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMsXG4gIFVQREFURV9USUNLRVQsXG4gIEFTU0lHTl9USUNLRVQsXG4gIFJFU0VUX0FQSV9FUlJPUixcbiAgU0VUX0FQSV9FUlJPUixcbiAgUkVTRVRfVElDS0VUXG59IGZyb20gXCIuL2FjdGlvbnNcIjtcbmltcG9ydCB7IEZJUlNUX1BBR0UgfSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHtcbiAgc3VtbWl0OiBudWxsLFxuICB1c2VyOiB7fSxcbiAgd2lkZ2V0TG9hZGluZzogZmFsc2UsXG4gIG1lbWJlck9yZGVyczogW10sXG4gIHVzZXJUaWNrZXRzOiBbXSxcbiAgZXh0cmFRdWVzdGlvbnM6IFtdLFxuICBjdXJyZW50VGlja2V0OiBudWxsLFxuICBlcnJvcnM6IHt9LFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgaXNPcmRlckxvYWRpbmc6IGZhbHNlLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAxLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMSxcbiAgdGlja2V0X2xhc3RfcGFnZTogMSxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c190b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogMCxcbiAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogMCxcbiAgYXBpRXJyb3I6IG51bGxcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgY2FzZSBSRVNFVF9TVEFURTpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgU1RBUlRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiB0cnVlIH07XG4gICAgY2FzZSBTVE9QX0xPQURJTkc6XG4gICAgY2FzZSBSRVNFVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IGZhbHNlIH07XG4gICAgY2FzZSBSRVNFVF9BUElfRVJST1I6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IG51bGwgfTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9BUElfRVJST1I6IHtcbiAgICAgIGNvbnN0IHsgdGl0bGUsIGh0bWw6IGJvZHkgfSA9IHBheWxvYWQ7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IHsgdGl0bGUsIGJvZHkgfSB9O1xuICAgIH1cbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyB1c2VyVGlja2V0cyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1c2VyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnVzZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdXNlcl90aWNrZXRzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBjb25zdCB1cGRhdGVkT3JkZXIgPSB7XG4gICAgICAgIC4uLmZvcm1lck9yZGVyLFxuICAgICAgICBtZW1iZXJUaWNrZXRzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXSxcbiAgICAgICAgdGlja2V0c19wYWdlX2N1cnJlbnQ6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkID0gcGF5bG9hZDtcbiAgICAgIGNvbnN0IG9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoXG4gICAgICAgIChvKSA9PiBvLmlkID09PSB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkWzBdPy5vcmRlcl9pZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHMubWFwKFxuICAgICAgICAodGlja2V0KSA9PlxuICAgICAgICAgIHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQuZmluZCgodHJyKSA9PiB0cnIuaWQgPT09IHRpY2tldC5pZCkgfHwgdGlja2V0XG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5vcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czogdXBkYXRlZFRpY2tldHNcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBSRVNFVF9USUNLRVQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiBudWxsIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldCA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0IH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBleHRyYVF1ZXN0aW9uczogZGF0YSB9O1xuICAgIH1cbiAgICBjYXNlIFVQREFURV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldERhdGEgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IG9yZGVyLm1lbWJlclRpY2tldHMubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICBpZiAodGlja2V0LmlkID09PSB0aWNrZXREYXRhLmlkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGlja2V0RGF0YTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHRpY2tldDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMgfTtcbiAgICB9XG4gICAgY2FzZSBBU1NJR05fVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldERhdGEsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFJlZHVjZXI7XG4iLCJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBjb25maWd1cmVTdG9yZSB9IGZyb20gXCJAcmVkdXhqcy90b29sa2l0XCI7XG5pbXBvcnQge1xuICBwZXJzaXN0U3RvcmUsXG4gIHBlcnNpc3RSZWR1Y2VyLFxuICBGTFVTSCxcbiAgUkVIWURSQVRFLFxuICBQQVVTRSxcbiAgUEVSU0lTVCxcbiAgUFVSR0UsXG4gIFJFR0lTVEVSXG59IGZyb20gXCJyZWR1eC1wZXJzaXN0XCI7XG5pbXBvcnQgc3RvcmFnZSBmcm9tIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiO1xuaW1wb3J0IHsgY29tYmluZVJlZHVjZXJzIH0gZnJvbSBcInJlZHV4XCI7XG5pbXBvcnQgV2lkZ2V0UmVkdWNlciBmcm9tIFwiLi9yZWR1Y2VyXCI7XG5cbmV4cG9ydCBjb25zdCBnZXRTdG9yZSA9ICh7XG4gIGNsaWVudElkLFxuICBsb2dpblVybCxcbiAgc3VtbWl0LFxuICBhcGlCYXNlVXJsLFxuICB1cGRhdGVQcm9maWxlXG59KSA9PiB7XG4gIC8vIHRvIGFkZCBvdGhlciByZWR1Y2VycyBsYXRlclxuICBjb25zdCByZWR1Y2VycyA9IGNvbWJpbmVSZWR1Y2Vycyh7XG4gICAgd2lkZ2V0U3RhdGU6IFdpZGdldFJlZHVjZXJcbiAgfSk7XG5cbiAgY29uc3Qgc3RvcmUgPSBjb25maWd1cmVTdG9yZSh7XG4gICAgcmVkdWNlcjogcGVyc2lzdFJlZHVjZXIoXG4gICAgICB7XG4gICAgICAgIGtleTogYHJvb3RfbXlfb3JkZXJzX3RpY2tldHNfJHtjbGllbnRJZH1gLFxuICAgICAgICBzdG9yYWdlXG4gICAgICB9LFxuICAgICAgcmVkdWNlcnNcbiAgICApLFxuICAgIG1pZGRsZXdhcmU6IChnZXREZWZhdWx0TWlkZGxld2FyZSkgPT5cbiAgICAgIGdldERlZmF1bHRNaWRkbGV3YXJlKHtcbiAgICAgICAgdGh1bms6IHtcbiAgICAgICAgICBleHRyYUFyZ3VtZW50OiB7XG4gICAgICAgICAgICBjbGllbnRJZCxcbiAgICAgICAgICAgIGFwaUJhc2VVcmwsXG4gICAgICAgICAgICBzdW1taXQsXG4gICAgICAgICAgICBsb2dpblVybCxcbiAgICAgICAgICAgIHVwZGF0ZVByb2ZpbGVcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGltbXV0YWJsZUNoZWNrOiBmYWxzZSxcbiAgICAgICAgc2VyaWFsaXphYmxlQ2hlY2s6IHtcbiAgICAgICAgICBpZ25vcmVkQWN0aW9uczogW0ZMVVNILCBSRUhZRFJBVEUsIFBBVVNFLCBQRVJTSVNULCBQVVJHRSwgUkVHSVNURVJdXG4gICAgICAgIH1cbiAgICAgIH0pXG4gIH0pO1xuXG4gIHJldHVybiBzdG9yZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VJbml0U3RvcmUgPSAoY29uZmlnKSA9PiB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRTdG9yZShjb25maWcpLCBbXSk7XG4gIGNvbnN0IHBlcnNpc3RvciA9IHVzZU1lbW8oKCkgPT4gcGVyc2lzdFN0b3JlKHN0b3JlKSwgW3N0b3JlXSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdG9yZSxcbiAgICBwZXJzaXN0b3JcbiAgfTtcbn07XG4iLCJpbXBvcnQge1xuICBpbml0TG9nT3V0LFxuICBnZXRBY2Nlc3NUb2tlblxufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgKiBhcyBTZW50cnkgZnJvbSBcIkBzZW50cnkvcmVhY3RcIjtcblxuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuU2FmZWx5ID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgaW5pdExvZ091dCgpO1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICB9XG59O1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gNTtcbmV4cG9ydCBjb25zdCBTVEVQX09ORSA9IDE7XG5leHBvcnQgY29uc3QgU1RFUF9UV08gPSAyO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJTVEFUVVNfQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiU1RBVFVTX0lOQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUEVORElORyA9IFwiU1RBVFVTX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJTVEFUVVNfQ0FOQ0VMTEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0VSUk9SID0gXCJTVEFUVVNfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUFJPQ0VTU0lORyA9IFwiU1RBVFVTX1BST0NFU1NJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiU1RBVFVTX1VOQVNTSUdORURcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElORyA9IFwiU1RBVFVTX1JFRlVORF9QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCA9IFwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURUQgPSBcIlNUQVRVU19SRUZVTkRfUkVKRUNURURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMgPSBcIlJlcXVlc3RlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMgPSBcIkFwcHJvdmVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyA9IFwiUmVqZWN0ZWRcIjtcblxuZXhwb3J0IGNvbnN0IEpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyA9IDEwMDAwO1xuXG5leHBvcnQgY29uc3QgT05FX0lURU0gPSAxO1xuZXhwb3J0IGNvbnN0IFRXT19JVEVNID0gMjtcbmV4cG9ydCBjb25zdCBGSVZFX0lURU0gPSA1O1xuZXhwb3J0IGNvbnN0IFNJWF9JVEVNID0gNjtcblxuZXhwb3J0IGNvbnN0IFBST01JU0VfQkFUQ0hfTElNSVQgPSAxMDtcbmV4cG9ydCBjb25zdCBGSUZUWV9QRVJfUEFHRSA9IDUwO1xuXG5leHBvcnQgY29uc3QgRVJST1JfQ09ERVMgPSB7XG4gIDQwMTogNDAxLFxuICA0MDM6IDQwMSxcbiAgNDEyOiA0MDEsXG4gIDUwMDogNTAwXG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQ1xufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQpIHJldHVybiB7fTtcbiAgY29uc3QgdGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzO1xuICBpZiAoIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCB0YXhlc19hbW91bnQsIGFtb3VudCB9ID0gb3JkZXI7XG4gIGNvbnN0IHsgdGlja2V0X3R5cGVzIH0gPSBzdW1taXQ7XG5cbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgY29uc3QgY3VycmVuY3lPYmplY3QgPSB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9O1xuXG4gIE9iamVjdC5rZXlzKG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSkubWFwKCh0aWNrZXQpID0+IHtcbiAgICBjb25zdCB0aWNrZXRUeXBlID0gdGlja2V0X3R5cGVzPy5maW5kKCh0dCkgPT4gdHQubmFtZSA9PT0gdGlja2V0KTtcbiAgICBpZiAoIXRpY2tldFR5cGUpIHJldHVybiBudWxsO1xuICAgIHRpY2tldFN1bW1hcnkucHVzaCh7XG4gICAgICB0aWNrZXRfdHlwZV9pZDogdGlja2V0VHlwZS5pZCxcbiAgICAgIHRpY2tldF90eXBlOiB0aWNrZXRUeXBlLFxuICAgICAgbmFtZTogdGlja2V0LFxuICAgICAgcXR5OiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XVxuICAgIH0pO1xuICAgIHB1cmNoYXNlVGlja2V0VG90YWwgKz1cbiAgICAgIHRpY2tldFR5cGUuY29zdCAqIG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdO1xuXG4gICAgcmV0dXJuIHRpY2tldFN1bW1hcnk7XG4gIH0pO1xuXG4gIGNvbnN0IHB1cmNoYXNlVG90YWwgPSBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRpY2tldFRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgY29uc3QgZGlzY291bnRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KGRpc2NvdW50X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCByZWZ1bmRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJlZnVuZGVkX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCB0YXhlc1RvdGFsID0gZm9ybWF0Q3VycmVuY3kodGF4ZXNfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IGFtb3VudFRvdGFsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZGVyLCBcImFtb3VudFwiKVxuICAgID8gZm9ybWF0Q3VycmVuY3koYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICA6IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICByZXR1cm4ge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgdGF4ZXNUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJUaWNrZXRzID0gKG1lbWJlck9yZGVycywgb3JkZXJJZCkgPT4ge1xuICBjb25zdCBvcmRlcnMgPSBtZW1iZXJPcmRlcnMuZmlsdGVyKChvKSA9PiBvLmlkID09PSBvcmRlcklkKTtcbiAgcmV0dXJuIG9yZGVyc1swXT8ubWVtYmVyVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgPSAodHMpID0+IHtcbiAgY29uc3QgbG93ZXIgPSB0cy5zZXRIb3VycygwLCAwLCAwLCAwKSAvIE1JTExJU0VDX1RPX1NFQztcbiAgY29uc3QgdXBwZXIgPVxuICAgIHRzLnNldEhvdXJzKExBU1RfSE9VUl9PRl8yNF9IT1VSLCBMQVNUX01JTlVURV9PRl9IT1VSLCAwLCAwKSAvXG4gICAgTUlMTElTRUNfVE9fU0VDO1xuICByZXR1cm4ge1xuICAgIGxvd2VyLFxuICAgIHVwcGVyXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEN1cnJlbnRUaW1lID0gKCkgPT5cbiAgTWF0aC5yb3VuZCgrbmV3IERhdGUoKSAvIE1JTExJU0VDX1RPX1NFQyk7XG5cbmV4cG9ydCBjb25zdCBnZXROb3cgPSAoKSA9PiAoZGlzcGF0Y2gsIGdldFN0YXRlKSA9PiB7XG4gIGNvbnN0IHsgdGltZXJTdGF0ZSB9ID0gZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIHRpbWVyU3RhdGU/Lm5vd1V0YyA9PSBudWxsID8gZGVmYXVsdEN1cnJlbnRUaW1lKCkgOiB0aW1lclN0YXRlPy5ub3dVdGM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTm93ID0gKCkgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgcmV0dXJuIGRpc3BhdGNoKGdldE5vdygpKTtcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgT05FX0RBWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi5cIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0UGFzdCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVhc3NpZ25fZGF0ZSA9XG4gICAgc3VtbWl0Py5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICAgIDogc3VtbWl0LmVuZF9kYXRlO1xuXG4gIHJldHVybiBub3cgPiByZWFzc2lnbl9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0U3RhcnRlZCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5zdGFydF9kYXRlIDwgbm93O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdERheXNEaWZmID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheT8uZGlmZihzdGFydERheSwgXCJkYXlzXCIpO1xuICByZXR1cm4ge1xuICAgIHN0YXJ0RGF5LFxuICAgIGVuZERheSxcbiAgICBkYXlzXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCB7IHN0YXJ0RGF5LCBlbmREYXksIGRheXMgfSA9IGdldFN1bW1pdERheXNEaWZmKHN1bW1pdCk7XG4gIGlmICghc3RhcnREYXkgfHwgIWVuZERheSkgcmV0dXJuIG51bGw7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0TG9jYXRpb24gPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBsb2NhdGlvbiA9IHN1bW1pdC5sb2NhdGlvbnM/LmZpbmQoXG4gICAgKGwpID0+IGwuY2xhc3NfbmFtZSA9PT0gXCJTdW1taXRWZW51ZVwiICYmIGwuaXNfbWFpbiA9PT0gdHJ1ZVxuICApO1xuXG4gIGlmICghbG9jYXRpb24pIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBgJHtsb2NhdGlvbi5jaXR5fSwgJHtsb2NhdGlvbi5jb3VudHJ5fWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgOiBzdW1taXQuZW5kX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlU3VtbWl0RGV0YWlscyA9ICh7IHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuXG4gIGlmICghc3VtbWl0KSByZXR1cm4ge307XG5cbiAgY29uc3QgbG9jYXRpb24gPSBnZXRTdW1taXRMb2NhdGlvbihzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkUmVhc3NpZ25EYXRlID0gbW9tZW50LnR6KFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSA9IGdldFN1bW1pdERheXNEaWZmKFxuICAgIG5vdyxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8ubmFtZVxuICApO1xuXG4gIGNvbnN0IGlzUGFzdCA9IGNoZWNrU3VtbWl0UGFzdChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzU3RhcnRlZCA9IGNoZWNrU3VtbWl0U3RhcnRlZChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogc3VtbWl0Py5uYW1lLFxuICAgIG5vdyxcbiAgICBsb2NhdGlvbixcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUsXG4gICAgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSxcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlXG4gIH07XG59O1xuIiwiaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBTVEFUVVNfQ0FOQ0VMTEVELFxuICBTVEFUVVNfQ09NUExFVEUsXG4gIFNUQVRVU19JTkNPTVBMRVRFLFxuICBTVEFUVVNfVU5BU1NJR05FRCxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVELFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVELFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHNcIjtcbmltcG9ydCB7XG4gIGNoZWNrSWZWYWx1ZU1hdGNoLFxuICBnZXRUeXBlSW5pdGlhbFZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBzdGF0dXNEYXRhID0ge1xuICBbU1RBVFVTX1VOQVNTSUdORURdOiB7XG4gICAgdHlwZTogU1RBVFVTX1VOQVNTSUdORUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy51bmFzc2lnbmVkXCIpXG4gIH0sXG4gIFtTVEFUVVNfSU5DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfSU5DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmluY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DT01QTEVURV06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NBTkNFTExFRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfQ0FOQ0VMTEVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY2FuY2VsbGVkXCIpXG4gIH1cbn07XG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzS2V5ID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5pc19hY3RpdmUpIHJldHVybiBTVEFUVVNfQ0FOQ0VMTEVEO1xuXG4gIGlmICh0aWNrZXQub3duZXJfaWQgPT09IDApIHJldHVybiBTVEFUVVNfVU5BU1NJR05FRDtcblxuICBpZiAoIXRpY2tldC5vd25lcj8uZmlyc3RfbmFtZSB8fCAhdGlja2V0Lm93bmVyPy5sYXN0X25hbWUpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiSW5jb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19DT01QTEVURTtcblxuICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0U3RhdHVzRGF0YSA9ICh0aWNrZXQsIGlzU3VtbWl0UGFzdCkgPT5cbiAgc3RhdHVzRGF0YVtnZXRUaWNrZXRTdGF0dXNLZXkodGlja2V0LCBpc1N1bW1pdFBhc3QpXTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFJvbGUgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmJhZGdlKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCB7IGZlYXR1cmVzIH0gPSB0aWNrZXQuYmFkZ2U7XG5cbiAgaWYgKGZlYXR1cmVzLmxlbmd0aCA+IDApXG4gICAgcmV0dXJuIGZlYXR1cmVzLm1hcCgoZmVhdHVyZSkgPT4gZmVhdHVyZS5uYW1lKS5qb2luKFwiLCBcIik7XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0VHlwZSA9ICh0aWNrZXQsIHN1bW1pdCkgPT5cbiAgc3VtbWl0LnRpY2tldF90eXBlcy5maW5kKCh0eXBlKSA9PiB0eXBlLmlkID09PSB0aWNrZXQudGlja2V0X3R5cGVfaWQpO1xuXG5leHBvcnQgY29uc3QgaXNUaWNrZXRSZWZ1bmRhYmxlID0gKHRpY2tldCkgPT5cbiAgdGlja2V0Py5maW5hbF9hbW91bnQgPiAwICYmXG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gdGlja2V0Py5yZWZ1bmRlZF9hbW91bnQgJiZcbiAgIXRpY2tldD8ucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgKTtcblxuZXhwb3J0IGNvbnN0IHRpY2tldHNSZWZ1bmRhYmxlID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PiBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KSkubGVuZ3RoIHx8IDA7XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+XG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApO1xuZXhwb3J0IGNvbnN0IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgPSAodGlja2V0cykgPT4ge1xuICBjb25zdCBhbGxUaWNrZXRzID0gW107XG4gIHRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiB7XG4gICAgaWYgKFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgICApXG4gICAgKSB7XG4gICAgICBhbGxUaWNrZXRzLnB1c2godGlja2V0KTtcbiAgICB9XG4gICAgcmV0dXJuIHRpY2tldDtcbiAgfSk7XG4gIHJldHVybiBhbGxUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzID0gKHRpY2tldCkgPT4ge1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZSgocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ7XG4gIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgPSAodGlja2V0KSA9PiB7XG4gIGNvbnN0IHN0YXR1cyA9IGdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzKHRpY2tldCk7XG4gIGxldCBzdGF0dXNDb2xvciA9IFwiXCI7XG4gIHN3aXRjaCAoc3RhdHVzKSB7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1BFTkRJTkc6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcImFwcHJvdmVkXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUkVKRUNURUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicmVqZWN0ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwicGVuZGluZ1wiO1xuICB9XG4gIHJldHVybiBzdGF0dXNDb2xvcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsaWRhdGlvbiA9ICh0eXBlLCBuYW1lLCBpc1JlcXVpcmVkKSA9PiB7XG4gIGxldCBzY2hlbWE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgc2NoZW1hID0geXVwLmJvb2woKS5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgc2NoZW1hID0geXVwLmFycmF5KCkub2YoeXVwLnN0cmluZygpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgfVxuXG4gIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgc2NoZW1hID0gc2NoZW1hLnJlcXVpcmVkKGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICByZXR1cm4gc2NoZW1hO1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQW5zd2VycyA9IChcbiAgb3duZXIsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbnN3ZXJzLFxuICBtYW5hZ2VyLFxuICBpbmNsdWRlRGVsZWdhdGlvbixcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgaW5jbHVkZURpc2NsYWltZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdIHx8IG93bmVyLmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueTtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGlzY2xhaW1lcikge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gfHxcbiAgICAgIG93bmVyLmRpc2NsYWltZXJfYWNjZXB0ZWQ7XG4gIH1cblxuICBpZiAoaW5jbHVkZURlbGVnYXRpb24pIHtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lID1cbiAgICAgIGFuc3dlcnMuZGVsZWdhdGVkX2ZpcnN0X25hbWUgfHwgbWFuYWdlcj8uZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9sYXN0X25hbWUgfHwgbWFuYWdlcj8ubGFzdF9uYW1lIHx8IFwiXCI7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIHJ1bGUuc3ViX3F1ZXN0aW9uLmlkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IHN1YkFuc3dlciA9IGFuc3dlcnNbc3ViUXVlc3Rpb25TbHVnXTtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIHJ1bGUuYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgICAgaWYgKCFvbmx5UmVsZXZhbnQgfHwgbWF0Y2gpIHtcbiAgICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocnVsZS5zdWJfcXVlc3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGFsbG93c0RlbGVnYXRpb24sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGlmIChhbGxvd3NEZWxlZ2F0aW9uKSB7XG4gICAgc2NoZW1hLmRlbGVnYXRlZF9maXJzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKTtcblxuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfbGFzdF9uYW1lID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbihxLnR5cGUsIHEubmFtZSwgcS5tYW5kYXRvcnkpO1xuXG4gICAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgICBxLnN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uID0gcnVsZS5zdWJfcXVlc3Rpb247XG4gICAgICAgIGNvbnN0IHN1YlF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhzdWJRdWVzdGlvbi5uYW1lLCBzdWJRdWVzdGlvbi5pZCk7XG4gICAgICAgIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgICAgICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICAgICAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgICAgICAgIGZhbHNlXG4gICAgICAgIClcbiAgICAgICAgICAubnVsbGFibGUoKVxuICAgICAgICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKHF1ZXN0aW9uQW5zLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuICAgICAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdGhlbjogKHNjaCkgPT4gc2NoLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpXG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB5dXAub2JqZWN0KHNjaGVtYSk7XG59O1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNvcHlJY29uX19fbEkzZVFcIjtcbnZhciBfMiA9IFwicmV2ZXJzZWRfX196SnptRFwiO1xudmFyIF8zID0gXCJ0cnVuY2F0ZWRfX19qV1NuVVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fbVZQaVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY29weUljb25cIiwgXzIgYXMgXCJyZXZlcnNlZFwiLCBfMyBhcyBcInRydW5jYXRlZFwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX1JvaW1SXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX29vSTBWXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX2ltX2poXCI7XG52YXIgXzQgPSBcImNvbnRhaW5lcl9fX04zWTRYXCI7XG52YXIgXzUgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19KVzJsT1wiO1xudmFyIF82ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19WOWdIQ1wiO1xudmFyIF83ID0gXCJmaWx0ZXJDb250YWluZXJfX19yR3BZVlwiO1xudmFyIF84ID0gXCJmaWx0ZXJEYXRlTGFiZWxfX19pZkQ0cFwiO1xudmFyIF85ID0gXCJmaWx0ZXJJY29uX19fbDIxS0lcIjtcbnZhciBfYSA9IFwiZmlsdGVyTGFiZWxfX19fUDB3blwiO1xudmFyIF9iID0gXCJmaWx0ZXJMaXN0Q29udGFpbmVyX19fVm1kR3FcIjtcbnZhciBfYyA9IFwiZmlsdGVyTnVtQWN0aXZlX19fVnVIQ0pcIjtcbnZhciBfZCA9IFwiZmlsdGVyU29ydENvbnRhaW5lcl9fX2FyQnZRXCI7XG52YXIgX2UgPSBcImxhYmVsX19feU5GeWpcIjtcbnZhciBfZiA9IFwic2hvd0RhdGVQaWNrZXJfX19VcFFicFwiO1xudmFyIF8xMCA9IFwic29ydENvbnRhaW5lcl9fX2xSc2pVXCI7XG52YXIgXzExID0gXCJzb3J0SWNvbl9fX2ZWVjVLXCI7XG52YXIgXzEyID0gXCJzb3J0TGFiZWxfX19VcUxUQ1wiO1xudmFyIF8xMyA9IFwic29ydExpc3RDb250YWluZXJfX19jbW5CRFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJNdWlPdXRsaW5lZElucHV0LW5vdGNoZWRPdXRsaW5lXCIsIF8yIGFzIFwiTXVpUGlja2Vyc0NhbGVuZGFySGVhZGVyLWxhYmVsQ29udGFpbmVyXCIsIF8zIGFzIFwiY2FsZW5kYXJEaXNwbGF5XCIsIF80IGFzIFwiY29udGFpbmVyXCIsIF81IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfNyBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfOCBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfOSBhcyBcImZpbHRlckljb25cIiwgX2EgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfYiBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2MgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2QgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF9lIGFzIFwibGFiZWxcIiwgX2YgYXMgXCJzaG93RGF0ZVBpY2tlclwiLCBfMTAgYXMgXCJzb3J0Q29udGFpbmVyXCIsIF8xMSBhcyBcInNvcnRJY29uXCIsIF8xMiBhcyBcInNvcnRMYWJlbFwiLCBfMTMgYXMgXCJzb3J0TGlzdENvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJhc3NpZ25Ub01lVGV4dF9fX1pQYWV4XCI7XG52YXIgXzMgPSBcImFzc2lnbmVkQnlUZXh0X19fYk5aN3pcIjtcbnZhciBfNCA9IFwiYXNzaWduZWRUb01lRGVzX19fR2pGa1ZcIjtcbnZhciBfNSA9IFwiYmxhY2tCdXR0b25fX19sOWhqOVwiO1xudmFyIF82ID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF83ID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgXzggPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfOSA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfYSA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfYiA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfYyA9IFwicmVhc3NpZ25CdXR0b25fX19Sb2pNNVwiO1xudmFyIF9kID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfZSA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgX2YgPSBcInRpY2tldEFjdGlvbkJ1dHRvbnNfX19ycFNNUVwiO1xudmFyIF8xMCA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzExID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzEyID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMTMgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xNCA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzE1ID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImFzc2lnblRvTWVUZXh0XCIsIF8zIGFzIFwiYXNzaWduZWRCeVRleHRcIiwgXzQgYXMgXCJhc3NpZ25lZFRvTWVEZXNcIiwgXzUgYXMgXCJibGFja0J1dHRvblwiLCBfNiBhcyBcImRpc3BsYXlfbm9uZVwiLCBfNyBhcyBcImxhYmVsXCIsIF84IGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgXzkgYXMgXCJvcmRlclRpY2tldEluZm9cIiwgX2EgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgX2IgYXMgXCJvcmRlcldyYXBwZXJcIiwgX2MgYXMgXCJyZWFzc2lnbkJ1dHRvblwiLCBfZCBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgX2UgYXMgXCJ0YWJCdXR0b25zXCIsIF9mIGFzIFwidGlja2V0QWN0aW9uQnV0dG9uc1wiLCBfMTAgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xMSBhcyBcInRpY2tldE5vXCIsIF8xMiBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzEzIGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMTQgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xNSBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNfX191N21QU1wiO1xudmFyIF8yID0gXCJhcHByb3ZlZF9fX3N4RUpXXCI7XG52YXIgXzMgPSBcImJ1dHRvblBpbGxfX19MZXNhelwiO1xudmFyIF80ID0gXCJjYW5jZWxCdXR0b25fX195ZmhZYlwiO1xudmFyIF81ID0gXCJjb250aW51ZUJ1dHRvbl9fX055WDNzXCI7XG52YXIgXzYgPSBcImRlbGV0ZUljb25fX19GU3d5ZVwiO1xudmFyIF83ID0gXCJwZW5kaW5nX19fYUViV3dcIjtcbnZhciBfOCA9IFwicmVmdW5kRXJyb3JNc2dfX19BYWh6clwiO1xudmFyIF85ID0gXCJyZWZ1bmRTdWNjZXNzZnVsX19fenJEUVlcIjtcbnZhciBfYSA9IFwicmVmdW5kVGV4dF9fX2FFbkw5XCI7XG52YXIgX2IgPSBcInJlZnVuZFRpY2tldEJveENvbnRhaW5lcl9fX3lhNjEzXCI7XG52YXIgX2MgPSBcInJlamVjdGVkX19fTkpFNFpcIjtcbnZhciBfZCA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgX2UgPSBcInN1Y2Nlc3NNc2cyX19fUTZ6bmFcIjtcbnZhciBfZiA9IFwidGlja2V0Tm9fX19fRUFENFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8yIGFzIFwiYXBwcm92ZWRcIiwgXzMgYXMgXCJidXR0b25QaWxsXCIsIF80IGFzIFwiY2FuY2VsQnV0dG9uXCIsIF81IGFzIFwiY29udGludWVCdXR0b25cIiwgXzYgYXMgXCJkZWxldGVJY29uXCIsIF83IGFzIFwicGVuZGluZ1wiLCBfOCBhcyBcInJlZnVuZEVycm9yTXNnXCIsIF85IGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfYSBhcyBcInJlZnVuZFRleHRcIiwgX2IgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgX2MgYXMgXCJyZWplY3RlZFwiLCBfZCBhcyBcInN1Y2Nlc3NNc2dcIiwgX2UgYXMgXCJzdWNjZXNzTXNnMlwiLCBfZiBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNsb3NlQnRuX19feVNRQ09cIjtcbnZhciBfMiA9IFwiaGVhZGVyX19fZkJYRzlcIjtcbnZhciBfMyA9IFwidGl0bGVfX190eVplUVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUk9KR3NcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2xvc2VCdG5cIiwgXzIgYXMgXCJoZWFkZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWxpZ25DZW50ZXJfX19ONEV2T1wiO1xudmFyIF8yID0gXCJhc3NpZ25CdG5fX19GUUgzblwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX2QzUkdDXCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb05vdGVfX19LZDF5NlwiO1xudmFyIF81ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX1Q5VTV6XCI7XG52YXIgXzYgPSBcIm9yZGVyTm9fX195cVJyOFwiO1xudmFyIF83ID0gXCJzdWJ0aXRsZV9fX1N2UmxVXCI7XG52YXIgXzggPSBcInRpY2tldEFzc2lnbkNvbnRhaW5lcl9fX2RKNXZXXCI7XG52YXIgXzkgPSBcInRpY2tldFR5cGVfX19ZWHdPSlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhbGlnbkNlbnRlclwiLCBfMiBhcyBcImFzc2lnbkJ0blwiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvTm90ZVwiLCBfNSBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF82IGFzIFwib3JkZXJOb1wiLCBfNyBhcyBcInN1YnRpdGxlXCIsIF84IGFzIFwidGlja2V0QXNzaWduQ29udGFpbmVyXCIsIF85IGFzIFwidGlja2V0VHlwZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ3cmFwcGVyX19fRXdPUnpcIjtcbmV4cG9ydCB7IF8xIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJpbmZvTm90ZV9fX2kxWFk5XCI7XG52YXIgXzIgPSBcIndyYXBwZXJfX19NQXVOU1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJpbmZvTm90ZVwiLCBfMiBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lcl9fX0F1dnJuXCI7XG52YXIgXzIgPSBcImFkZGl0aW9uYWxEZXRhaWxzX19fbVAxaUpcIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19RMFZVelwiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0xtcm00XCI7XG52YXIgXzUgPSBcImNsb3NlQnRuX19fV05KbEVcIjtcbnZhciBfNiA9IFwiY29weUJ0bl9fX191dEE2XCI7XG52YXIgXzcgPSBcImRlbGVnYXRlZFRvX19fU0dWUUlcIjtcbnZhciBfOCA9IFwiZG93bmxvYWRCdG5fX19xalloelwiO1xudmFyIF85ID0gXCJoZWFkZXJfX19BdWduelwiO1xudmFyIF9hID0gXCJvcmRlck51bWJlcl9fX0w1UTVhXCI7XG52YXIgX2IgPSBcInFyQ29kZV9fX2Z3cVpxXCI7XG52YXIgX2MgPSBcInFyTm90ZV9fX0djN0tuXCI7XG52YXIgX2QgPSBcInNlbmRCdG5fX19rb1dNMlwiO1xudmFyIF9lID0gXCJzZW50X19fazZXS3hcIjtcbnZhciBfZiA9IFwic3RhdHVzX19fa3dDOHlcIjtcbnZhciBfMTAgPSBcInN1YnRpdGxlX19feV9OdU9cIjtcbnZhciBfMTEgPSBcInRpY2tldERldGFpbENvbnRhaW5lcl9fX2IyVExSXCI7XG52YXIgXzEyID0gXCJ0aXRsZV9fX3dRelVOXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJcIiwgXzIgYXMgXCJhZGRpdGlvbmFsRGV0YWlsc1wiLCBfMyBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF80IGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzUgYXMgXCJjbG9zZUJ0blwiLCBfNiBhcyBcImNvcHlCdG5cIiwgXzcgYXMgXCJkZWxlZ2F0ZWRUb1wiLCBfOCBhcyBcImRvd25sb2FkQnRuXCIsIF85IGFzIFwiaGVhZGVyXCIsIF9hIGFzIFwib3JkZXJOdW1iZXJcIiwgX2IgYXMgXCJxckNvZGVcIiwgX2MgYXMgXCJxck5vdGVcIiwgX2QgYXMgXCJzZW5kQnRuXCIsIF9lIGFzIFwic2VudFwiLCBfZiBhcyBcInN0YXR1c1wiLCBfMTAgYXMgXCJzdWJ0aXRsZVwiLCBfMTEgYXMgXCJ0aWNrZXREZXRhaWxDb250YWluZXJcIiwgXzEyIGFzIFwidGl0bGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19jSFNNdFwiO1xudmFyIF8yID0gXCJhdHRlbmRlZUluZm9UaXRsZV9fX0pzUGxHXCI7XG52YXIgXzMgPSBcImhlYWRlck5vdGVfX19iMm1yQ1wiO1xudmFyIF80ID0gXCJzdWJ0aXRsZV9fX1lYNk9EXCI7XG52YXIgXzUgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fcEc5YjRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzIgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfMyBhcyBcImhlYWRlck5vdGVcIiwgXzQgYXMgXCJzdWJ0aXRsZVwiLCBfNSBhcyBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwibm9PcmRlcnNGb3VuZF9fX0FvZzJwXCI7XG52YXIgXzIgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1oxOVBtXCI7XG52YXIgXzMgPSBcInRpY2tldHNUaXRsZVRleHRfX19VMXVIN1wiO1xudmFyIF80ID0gXCJ3aWRnZXRIZWFkZXJfX195WTVnZVwiO1xuZXhwb3J0IHsgXzEgYXMgXCJub09yZGVyc0ZvdW5kXCIsIF8yIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8zIGFzIFwidGlja2V0c1RpdGxlVGV4dFwiLCBfNCBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NvbnRlbnRDb3B5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0FkYXB0ZXJEYXlqc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0RhdGVQaWNrZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IE15T3JkZXJzVGlja2V0cyBmcm9tIFwiLi9jb21wb25lbnRzL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnblRvTWUgZnJvbSBcIi4vY29tcG9uZW50cy9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuY29uc3QgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQgPSAocHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgYXBpQmFzZVVybCxcbiAgICB1c2VyLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSA9IHByb3BzO1xuXG4gIGNvbnN0IHsgc3RvcmUsIHBlcnNpc3RvciB9ID0gdXNlSW5pdFN0b3JlKHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIHVzZXIsXG4gICAgYXBpQmFzZVVybCxcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUJlZm9yZUxpZnQgPSAoKSA9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcbiAgICBjb25zdCBmbHVzaCA9IHBhcmFtcy5oYXMoXCJmbHVzaFN0YXRlXCIpO1xuICAgIGlmIChmbHVzaCkgc3RvcmUuZGlzcGF0Y2goeyB0eXBlOiBSRVNFVF9TVEFURSwgcGF5bG9hZDogbnVsbCB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHN0b3JlLmRpc3BhdGNoKHNldFJlZHVjZXJTdGF0ZShzdW1taXQsIHVzZXIpKTtcbiAgfSwgW3N1bW1pdCwgdXNlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPFByb3ZpZGVyIHN0b3JlPXtzdG9yZX0+XG4gICAgICA8UGVyc2lzdEdhdGVcbiAgICAgICAgb25CZWZvcmVMaWZ0PXtoYW5kbGVCZWZvcmVMaWZ0fVxuICAgICAgICBsb2FkaW5nPXtudWxsfVxuICAgICAgICBwZXJzaXN0b3I9e3BlcnNpc3Rvcn1cbiAgICAgID5cbiAgICAgICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgICAgIDxNeU9yZGVyc1RpY2tldHNcbiAgICAgICAgICAgIGxvZ2luVXJsPXtsb2dpblVybH1cbiAgICAgICAgICAgIHN1cHBvcnRFbWFpbD17c3VwcG9ydEVtYWlsfVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBhcGlCYXNlVXJsPXthcGlCYXNlVXJsfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPEFzc2lnblRvTWUgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJnZXRSZXF1ZXN0IiwiZGVsZXRlUmVxdWVzdCIsImNyZWF0ZUFjdGlvbiIsInN0b3BMb2FkaW5nIiwic3RhcnRMb2FkaW5nIiwicHV0UmVxdWVzdCIsInBMaW1pdCIsImdldElkVG9rZW4iLCJvYmplY3RUb1F1ZXJ5U3RyaW5nIiwiSWRUb2tlblZlcmlmaWVyIiwiaTE4biIsImdldEFjY2Vzc1Rva2VuU2FmZWx5IiwiRklSU1RfUEFHRSIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiRklGVFlfUEVSX1BBR0UiLCJFUlJPUl9DT0RFUyIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiUkVTRVRfQVBJX0VSUk9SIiwiU0VUX1NUQVRFIiwiU0VUX0FQSV9FUlJPUiIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfTVlfQVNTSUdORURfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRVNFVF9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRTdGF0ZSIsImRpc3BhdGNoIiwicmVzZXRGaWx0ZXIiLCJyZXNldEVycm9yIiwic2V0UmVkdWNlclN0YXRlIiwic3VtbWl0IiwidXNlciIsIkZJTFRFUl9WQVJfREFURSIsIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJmaWx0ZXIiLCJ0eXBlIiwicHVzaCIsImNvbmNhdCIsIm5hbWUiLCJsb3dlciIsInVwcGVyIiwidmFsdWUiLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZXJyb3JIYW5kbGVyTm90aWZ5IiwicGF5bG9hZCIsImNhbGxiYWNrIiwiY3VzdG9tQXV0aEVycm9ySGFuZGxlciIsImVyciIsInJlcyIsImN1c3RvbUZldGNoRXJyb3JIYW5kbGVyIiwicmVzcG9uc2UiLCJjb2RlIiwic3RhdHVzIiwibXNnIiwidCIsIk9iamVjdCIsImVudHJpZXMiLCJlcnJvcnMiLCJmb3JFYWNoIiwiX3JlZiIsImtleSIsIk51bWJlciIsImlzTmFOIiwic3RhdHVzVGV4dCIsInRpdGxlIiwiaHRtbCIsImdldFVzZXJPcmRlcnMiLCJfcmVmMiIsInBhZ2UiLCJwZXJQYWdlIiwic29ydCIsImdldFN0YXRlIiwiX3JlZjMiLCJhcGlCYXNlVXJsIiwid2lkZ2V0U3RhdGUiLCJhY2Nlc3NUb2tlbiIsImNhdGNoIiwiUHJvbWlzZSIsInJlamVjdCIsInBhcmFtcyIsImFjY2Vzc190b2tlbiIsIm9yZGVyIiwicmVsYXRpb25zIiwicGVyX3BhZ2UiLCJrZXlzIiwibGVuZ3RoIiwiZmlsdGVycyIsImlkIiwidGhlbiIsImUiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWY0IiwiX3JlZjUiLCJmaWVsZHMiLCJleHBhbmQiLCJqb2luIiwiZ2V0VGlja2V0c0J5T3JkZXIiLCJfcmVmNiIsIl9yZWY3IiwicmVzZW5kTm90aWZpY2F0aW9uIiwidGlja2V0IiwiX3JlZjgiLCJtZXNzYWdlIiwib3JkZXJfaWQiLCJyZWZ1bmRUaWNrZXQiLCJfcmVmOSIsIl9yZWYxMCIsInJlZnVuZEJ1bGtUaWNrZXRzIiwiX3JlZjExIiwidGlja2V0cyIsImxpbWl0IiwiYWxsUmVmdW5kVGlja2V0Q2FsbHMiLCJtYXAiLCJhbGwiLCJzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQiLCJyIiwiX3IkcmVzcG9uc2UiLCJyZWZ1bmRfcmVxdWVzdHMiLCJ1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsImdldEV4dHJhUXVlc3Rpb25zIiwiYXR0ZW5kZWVJZCIsIl9yZWYxMiIsImVuZHBvaW50IiwiZ2V0VGlja2V0IiwidGlja2V0SWQiLCJfcmVmMTMiLCJmaW5hbGx5Iiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjE0IiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwidXNlclByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTUiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJhc3NpZ25BdHRlbmRlZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYxNiIsInJlYXNzaWduVGlja2V0IiwiX3JlZjE3Iiwic2F2ZUV4dHJhUXVlc3Rpb25zIiwiX3JlZjE4IiwiZ2V0VGlja2V0UERGIiwiX3JlZjE5IiwicXVlcnlTdHJpbmciLCJhcGlVcmwiLCJmZXRjaCIsInJlc3BvbnNlVHlwZSIsImhlYWRlcnMiLCJvayIsImJsb2IiLCJwZGYiLCJsaW5rIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwidXJsIiwid2luZG93IiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiaHJlZiIsImRvd25sb2FkIiwiZGlzcGF0Y2hFdmVudCIsIk1vdXNlRXZlbnQiLCJSZWFjdCIsIlByb3BUeXBlcyIsInVzZVRyYW5zbGF0aW9uIiwiQm94IiwidXNlRm9ybWlrIiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJGb3JtRm9vdGVyIiwidXNlU2Nyb2xsVG9FcnJvciIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJwYXJzZUFuc3dlcnMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQXNzaWduRVFGb3JtIiwib25TdWJtaXQiLCJvbkNsb3NlIiwiZm9ybWlrIiwiaW5pdGlhbFZhbHVlcyIsInZhbGlkYXRpb25TY2hlbWEiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnkiLCJ2YWx1ZXMiLCJyZWxldmFudEFuc3dlcnMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJoYW5kbGVTdWJtaXQiLCJub1ZhbGlkYXRlIiwiY2hpbGRyZW4iLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50IiwiZGlzY2xhaW1lciIsImlzUmVxdWlyZWQiLCJzYXZlTGFiZWwiLCJjYW5jZWxMYWJlbCIsImRpc2FibGVkIiwiaXNTdWJtaXR0aW5nIiwicHJvcFR5cGVzIiwib2JqZWN0IiwiYXJyYXkiLCJmdW5jIiwiQ29udGVudENvcHlJY29uIiwiVG9vbHRpcCIsIk1JTExJU0VDX1RPX1NFQyIsInN0eWxlcyIsImRlZmF1bHRXaWR0aCIsIkNvcHlUZXh0IiwidGV4dCIsInRvb2x0aXBUZXh0IiwiaGlkZUNvcHkiLCJ0cnVuY2F0ZWQiLCJyZXZlcnNlZCIsIndpZHRoIiwidG9vbHRpcFRleHRUb1VzZSIsInRvb2x0aXAiLCJzZXRUb29sdGlwIiwidXNlU3RhdGUiLCJjbGFzc05hbWVzIiwiaGFuZGxlQ29weSIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInNldFRpbWVvdXQiLCJjbGFzc05hbWUiLCJ3cmFwcGVyIiwic3R5bGUiLCJjb3B5SWNvbiIsIm9uQ2xpY2siLCJzdHJpbmciLCJib29sIiwibnVtYmVyIiwiY3JlYXRlQ29udGV4dCIsImRlZmF1bHRDb250ZXh0VmFsdWUiLCJzZXRNZXNzYWdlIiwic2V0TWVzc2FnZUNhbGxiYWNrIiwiQ3VzdG9tRGlhbG9nQ29udGV4dCIsIkRpYWxvZyIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dDb250ZW50VGV4dCIsIkRpYWxvZ1RpdGxlIiwiQ3VzdG9tRGlhbG9nIiwib3BlbiIsImJvZHkiLCJUaGVtZVByb3ZpZGVyIiwiY3JlYXRlVGhlbWUiLCJkYXJrQ29sb3IiLCJyb290IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsIkN1c3RvbVRoZW1lIiwibm9kZSIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJlcnJvciIsImhlbHBlclRleHQiLCJyZXN0IiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwicXVlc3Rpb25TbHVnIiwicXVlc3Rpb25MYWJlbCIsIm1hbmRhdG9yeSIsInF1ZXN0aW9uTWF4VmFsdWVzIiwibWF4X3NlbGVjdGVkX3ZhbHVlcyIsInF1ZXN0aW9uT3B0aW9ucyIsInZhbCIsImxhYmVsIiwidG9TdHJpbmciLCJoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UiLCJjaGVja2VkIiwiY3VycmVudEFucyIsIm1heFNlbGVjdGlvblJlYWNoZWQiLCJuZXdWYWx1ZSIsInYiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJSYXdIVE1MIiwiQ2hlY2tib3hRdWVzdGlvbkZpZWxkIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsIm1hcmdpbkJvdHRvbSIsIlJhZGlvIiwiUmFkaW9Hcm91cCIsIlJhZGlvTGlzdFF1ZXN0aW9uRmllbGQiLCJUZXh0RmllbGQiLCJUZXh0UXVlc3Rpb25GaWVsZCIsIlF1ZXN0aW9uVHlwZV9DaGVja2JveCIsIlF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QiLCJRdWVzdGlvblR5cGVfQ29tYm9Cb3giLCJRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94IiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCIsImNoZWNrUnVsZSIsInJ1bGUiLCJhbnN3ZXJfdmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYW5zd2VyX3ZhbHVlc19vcGVyYXRvciIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJnZXRUeXBlVmFsdWUiLCJhbnMiLCJzcGxpdCIsInRyYW5zZm9ybUFud2Vyc0Zvcm1hdCIsImRpc2NsYWltZXJfYWNjZXB0ZWQiLCJleHRyYV9xdWVzdGlvbnMiLCJmb3JtYXR0ZWRFUSIsInF1ZXN0aW9uX2lkIiwicGFyc2VJbnQiLCJwb3AiLCJRdWVzdGlvblR5cGVfVGV4dCIsIlF1ZXN0aW9uVHlwZV9UZXh0QXJlYSIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiIsImdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJxdWVzdGlvblR5cGUiLCJGcmFnbWVudCIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwicmVuZGVyUnVsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlQmx1ciIsInRvdWNoZWQiLCJCb29sZWFuIiwic3ViX3F1ZXN0aW9uX3J1bGVzIiwiU3RhY2siLCJkYXlqcyIsIkFkYXB0ZXJEYXlqcyIsIkxvY2FsaXphdGlvblByb3ZpZGVyIiwiRGF0ZVBpY2tlciIsIkNsb3NlSWNvbiIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsIl9GcmFnbWVudCIsIkJhc2ljRGF0ZVBpY2tlciIsIm9uRmlsdGVyIiwib25SZXNldCIsIm5vdyIsImRhdGVWYWx1ZSIsInNldERhdGVWYWx1ZSIsIm9uRGF0ZUNoYW5nZSIsImRhdGUiLCJEYXRlIiwiJGQiLCJvblJlc2V0QWN0aW9uIiwiZmlsdGVyRGF0ZUxhYmVsIiwiYWxpZ25JdGVtcyIsInN4IiwicHQiLCJwYiIsImRhdGVQaWNrZXJDb250YWluZXIiLCJmb250U2l6ZSIsImRhdGVwaWNrZXJDbG9zZSIsImRhdGVBZGFwdGVyIiwiY2FsZW5kYXJEaXNwbGF5IiwidXNlUmVmIiwidXNlRWZmZWN0IiwiRmlsdGVyTGlzdEljb24iLCJGaWx0ZXIiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlck51bUFjdGl2ZSIsInNldEZpbHRlck51bUFjdGl2ZSIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwic2hvd0RhdGVQaWNrZXIiLCJzdHlsZWQiLCJTZWFyY2hJY29uIiwiSW5wdXRCYXNlIiwiU2VhcmNoQ29udGFpbmVyIiwicG9zaXRpb24iLCJtYXJnaW5SaWdodCIsIm1hcmdpbkxlZnQiLCJkaXNwbGF5IiwiU2VhcmNoSWNvbldyYXBwZXIiLCJoZWlnaHQiLCJqdXN0aWZ5Q29udGVudCIsIlN0eWxlZElucHV0QmFzZSIsImNvbG9yIiwiYm9yZGVyQm90dG9tIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJDbG9zZUljb25XcmFwcGVyIiwicGFkZGluZyIsInRvcCIsInJpZ2h0IiwiY3Vyc29yIiwiekluZGV4IiwiU2VhcmNoIiwib25TZWFyY2giLCJzaG93Q2xvc2UiLCJzZXRTaG93Q2xvc2UiLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwib25LZXlEb3duIiwibmF0aXZlRXZlbnQiLCJyZXNldFNlYXJjaCIsInBsYWNlaG9sZGVyIiwiaW5wdXRQcm9wcyIsIkJ1dHRvbiIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJHcmlkIiwiRmlsdGVyU29ydFNlYXJjaCIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInZhcmlhbnQiLCJzYXZlQnRuIiwiRXJyb3JJY29uIiwiRXJyb3JMYWJlbCIsImRhdGFUZXN0SWQiLCJlcnJvckxhYmVsIiwiQmFja2Ryb3AiLCJDaXJjdWxhclByb2dyZXNzIiwiTG9hZGVyIiwiZHJhd2VyIiwidXNlRGlzcGF0Y2giLCJ1c2VTZWxlY3RvciIsInNoYWxsb3dFcXVhbCIsIkluZmluaXRlU2Nyb2xsIiwiT3JkZXJzTGlzdCIsImdldFN1bW1pdEZvcm1hdHRlZERhdGUiLCJPTkVfUEFHRV9ORVhUIiwiTXlPcmRlcnNUaWNrZXRzIiwibWVzc2FnZUNhbGxiYWNrIiwibWVtYmVyT3JkZXJzIiwibG9hZGluZyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwib3JkZXJzX3Blcl9wYWdlIiwidGlja2V0X3Blcl9wYWdlIiwiYXBpRXJyb3IiLCJzdGF0ZSIsInNldEZpbHRlciIsInNldFNvcnQiLCJyZXNldEFwaUVycm9yIiwiZmV0Y2hEYXRhIiwiY3VycmVudF9wYWdlIiwid2lkZ2V0SGVhZGVyIiwibWQiLCJsZyIsInRpY2tldHNUaXRsZVRleHQiLCJzdW1taXRUaXRsZURhdGUiLCJQcm92aWRlciIsIm92ZXJmbG93IiwibWFyZ2luIiwiZGF0YUxlbmd0aCIsIm5leHQiLCJoYXNNb3JlIiwic2Nyb2xsVGhyZXNob2xkIiwic2Nyb2xsYWJsZVRhcmdldCIsIm5vT3JkZXJzRm91bmQiLCJEaXZpZGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzaGFwZSIsInVzZU5vdyIsInRpY2tldHNSZWZ1bmRhYmxlIiwiUmVmdW5kRW1haWxTdXBwb3J0IiwicmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1RvUmVmdW5kIiwic3VibWl0UmVxdWVzdCIsIm9uUmVmdW5kQ2xpY2siLCJvblJlZnVuZERldGFpbENsaWNrIiwib25FbWFpbFN1cHBvcnRDbGljayIsImlzSW5SZWZ1bmRhYmxlUGVyaW9kIiwicmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlIiwiYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQiLCJpc1JlZnVuZGFibGUiLCJyb2xlIiwib3JkZXJTdW1tYXJ5QnV0dG9uIiwicmVmdW5kRGlzYWJsZWQiLCJhcnJheU9mIiwiT3JkZXJTdW1tYXJ5Iiwib3JkZXJTdW1tYXJ5V3JhcHBlciIsInB4Iiwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mbyIsIm1lbWJlclRpY2tldHMiLCJPcmRlckxpc3RUaWNrZXRzIiwiQXNzaWduVG9NZSIsInVzZXJUaWNrZXRzIiwidXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSIsInVzZXJfdGlja2V0c19sYXN0X3BhZ2UiLCJvcmRlclRpY2tldENvbnRhaW5lciIsImFzc2lnblRvTWVUZXh0IiwidGlja2V0TGlzdENvbnRhaW5lciIsImlzU2VsZWN0ZWRUb1JlZnVuZCIsInNlbGVjdFRvUmVmdW5kIiwiaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJfdGlja2V0JG9yZGVyIiwiX3RpY2tldCRvcmRlcjIiLCJ0aWNrZXRPd25lckVtYWlsIiwiYXNzaWduZWRCeVRleHQiLCJvd25lcl9maXJzdF9uYW1lIiwib3duZXJfbGFzdF9uYW1lIiwiaXNfYWN0aXZlIiwiUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIiwiT3JkZXJMaXN0SXRlbSIsIl9vcmRlciRtZW1iZXJUaWNrZXRzIiwiX29yZGVyJG1lbWJlclRpY2tldHMyIiwib25QYWdpbmF0ZUNsaWNrIiwiaXRlbXNUb0Rpc3BsYXkiLCJzZXRJdGVtc1RvRGlzcGxheSIsInNsaWNlZFRpY2tldHMiLCJzbGljZSIsIm9uVmlld01vcmUiLCJ0aWNrZXRzX3RvdGFsIiwib25WaWV3TGVzcyIsImZpbmQiLCJ2aWV3TW9yZUJ1dHRvbiIsIlRpY2tldFN0YXR1cyIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRSZWFzc2lnbiIsIlRpY2tldEFzc2lnbiIsIm1vZGFsVmlld3MiLCJkZXRhaWwiLCJyZWFzc2lnbiIsImFzc2lnbiIsIlRpY2tldENUQXMiLCJpc0luY29tcGxldGUiLCJpc1VuYXNzaWduZWQiLCJpc1JlYXNzaWduYWJsZSIsIm9uT3BlbkNsaWNrIiwiYXNzaWduVGlja2V0QnV0dG9uIiwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbiIsInJlYXNzaWduQnV0dG9uIiwiX3RpY2tldCR0aWNrZXRfdHlwZSIsIl90aWNrZXQkb3duZXIzIiwiX2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZU9wZW5Nb2RhbCIsInZpZXciLCJvcmRlcldyYXBwZXIiLCJ0aWNrZXRUaWNrZXRUeXBlIiwidGlja2V0Tm8iLCJ0aWNrZXRBY3Rpb25CdXR0b25zIiwib3duZXJJZCIsInRvdGFsX3JlZnVuZGVkX2Ftb3VudCIsIlRhYnMiLCJUYWIiLCJSZWZ1bmRSZXF1ZXN0c01vZGFsIiwiaXNUaWNrZXRSZWZ1bmRhYmxlIiwiUmVmdW5kRGV0YWlscyIsIlRhYlBhbmVsIiwicHJvcHMiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsIl8iLCJzZXRSZWZ1bmRSZXF1ZXN0ZWQiLCJzZXRUaWNrZXRzVG9SZWZ1bmQiLCJzZXRTdWJtaXRSZXF1ZXN0IiwicmVmdW5kRGV0YWlsc09wZW4iLCJzZXRSZWZ1bmREZXRhaWxzT3BlbiIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjYW5jZWxUaWNrZXRzVG9SZWZ1bmQiLCJzZWxlY3RBbGxUaWNrZXRzIiwicmVmdW5kYWJsZVRpY2tldHMiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJib3JkZXJDb2xvciIsInRleHRDb2xvciIsIlRhYkluZGljYXRvclByb3BzIiwiYmFja2dyb3VuZCIsInRhYkJ1dHRvbnMiLCJyZWZ1bmRCdXR0b25zIiwib25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHMiLCJvblJlZnVuZFN1Y2Nlc3NDbG9zZSIsIm9uQ2xvc2VTbGlkZXIiLCJ1c2VUaGVtZSIsInVzZU1lZGlhUXVlcnkiLCJnZXRGb3JtYXR0ZWREYXRlIiwiYnJlYWtwb2ludHMiLCJkb3duIiwiaXNNb2JpbGVWaWV3YWJsZSIsInNldE1vYmlsZVZpZXdhYmxlIiwidGlja2V0c19wYWdlX2N1cnJlbnQiLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJibGFja0J1dHRvbiIsInJvd1NwYWNpbmciLCJjb2x1bW5TcGFjaW5nIiwic20iLCJkaXNwbGF5X25vbmUiLCJmbGV4RGlyZWN0aW9uIiwidXNlTWVtbyIsIlJpZ2h0RHJhd2VyIiwiUmVmdW5kUmVxdWVzdGVkVGlja2V0IiwiZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyIsInJlcXVlc3RlZFRpY2tldHMiLCJjbG9zZVNsaWRlciIsInJlZnVuZERldGFpbHMiLCJEZWxldGVPdXRsaW5lSWNvbiIsIlJlZnVuZFN0YXR1cyIsIm9uUmVtb3ZlIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwiZGVsZXRlSWNvbiIsImdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIiwic3RhdHVzQ29sb3IiLCJidXR0b25QaWxsIiwiU3R5bGVkRW5naW5lUHJvdmlkZXIiLCJDaGVja0NpcmNsZUljb24iLCJTVEVQX09ORSIsIlNURVBfVFdPIiwic3RlcCIsInNldFN0ZXAiLCJlcnJvck1zZyIsInNldEVycm9yTXNnIiwicmVmdW5kU3VjY2VzcyIsInNldFJlZnVuZFN1Y2Nlc3MiLCJyZWZ1bmRUaWNrZXRzIiwicmVmdW5kU3RlcE9uZSIsInJlZnVuZEVycm9yTXNnIiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiSWNvbkJ1dHRvbiIsIlR5cG9ncmFwaHkiLCJEcmF3ZXIiLCJDbG9zZSIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJ5dXAiLCJBc3NpZ25Gb3JtIiwibmV3X2F0dGVuZGVlX2VtYWlsIiwicGVyc29uYWxfbWVzc2FnZSIsIm11bHRpbGluZSIsIm1pblJvd3MiLCJ1c2VDb250ZXh0IiwiX3RpY2tldCR0eXBlIiwidGlja2V0QXNzaWduZWQiLCJzZXRUaWNrZXRBc3NpZ25lZCIsImN1cnJlbnRUaWNrZXQiLCJvbkFzc2lnblRvT3RoZXIiLCJvbkFzc2lnblRvTWUiLCJvbkNsb3NlRVFGb3JtIiwib25DbG9zZVNhdmVNZXNzYWdlIiwib25TYXZlRVEiLCJyZXNvbHZlIiwidGlja2V0QXNzaWduQ29udGFpbmVyIiwiYWxpZ25DZW50ZXIiLCJzdWJ0aXRsZSIsIm93bmVyX2VtYWlsIiwib3JkZXJObyIsInRpY2tldFR5cGUiLCJhc3NpZ25CdG4iLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiYXR0ZW5kZWVJbmZvTm90ZSIsIkF1dG9jb21wbGV0ZSIsInF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIiwiQ29tcGFueUZpZWxkIiwic3VtbWl0SWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwic2V0RmllbGRUb3VjaGVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJyZW5kZXJJbnB1dCIsInJlbmRlck9wdGlvbiIsIm9wdGlvblByb3BzIiwiVGlja2V0RGVsZWdhdGlvbkZpZWxkcyIsImRlbGVnYXRlZF9maXJzdF9uYW1lIiwiZGVsZWdhdGVkX2xhc3RfbmFtZSIsIlRpY2tldE93bmVyRmllbGRzIiwiVGlja2V0Rm9ybSIsImNhbkVkaXQiLCJ0aWNrZXRNYW5hZ2VyIiwiYWxsb3dzRGVsZWdhdGlvbiIsImFsbG93c190b19kZWxlZ2F0ZSIsInJlZHVjZSIsImRlbGVnYXRlZFRvIiwiYWRkaXRpb25hbERldGFpbHMiLCJpbmZvTm90ZSIsIlFSQ29kZSIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsInVzZUdldFRpY2tldCIsIlRXT19JVEVNIiwic2F2ZU1lc3NhZ2UiLCJzZXRTYXZlTWVzc2FnZSIsInNlbnRDb25maXJtYXRpb24iLCJzZXRTZW50Q29uZmlybWF0aW9uIiwiaXNVc2VyT3JkZXJPd25lciIsIm93bmVyX2lkIiwiaXNVc2VyVGlja2V0T3duZXIiLCJjYW5FZGl0VGlja2V0RGF0YSIsImFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnMiLCJpc0NvbXBsZXRlIiwib25TYXZlIiwiZGVzY3JpcHRpb24iLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwicXJDb2RlIiwibWF4V2lkdGgiLCJxcl9jb2RlIiwidmlld0JveCIsInFyTm90ZSIsImlzX3ZpcnR1YWwiLCJhY3Rpb25CdXR0b25zQ29udGFpbmVyIiwiZG93bmxvYWRCdG4iLCJzZW5kQnRuIiwic2VudCIsIm9yZGVyTnVtYmVyIiwiUmVhc3NpZ25Gb3JtIiwidGlja2V0UmVhc3NpZ25lZCIsInNldFRpY2tldFJlYXNzaWduZWQiLCJvblJlYXNzaWduIiwiZ2V0TGFiZWxzIiwiaGVhZGVyTm90ZSIsInRpY2tldFJlYXNzaWduQ29udGFpbmVyIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJydW4iLCJzbW9vdGhTY3JvbGxUbyIsInRhcmdldFNjcm9sbFRvcCIsImR1cmF0aW9uIiwic3RhcnRTY3JvbGxUb3AiLCJzY3JvbGxUb3AiLCJkaXN0YW5jZSIsInN0YXJ0VGltZSIsImFuaW1hdGlvblN0ZXAiLCJ0aW1lc3RhbXAiLCJlbGFwc2VkIiwicHJvZ3Jlc3MiLCJNYXRoIiwibWluIiwiZWFzZUluT3V0UXVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNvbnRhaW5lcklkIiwiaXNWYWxpZCIsImVycm9yQXJyYXkiLCJlcnJvckNvdW50IiwiZWxlbWVudHNTb3J0ZWQiLCJyZXN1bHQiLCJlbGVtZW50IiwicXVlcnlTZWxlY3RvciIsImVsUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImEiLCJiIiwiZ2V0RWxlbWVudEJ5SWQiLCJjb250YWluZXJSZWN0IiwiZWxlbU9mZmVzdCIsImFuaW1hdGlvbkR1cmF0aW9uIiwiU1RBVFVTX0NPTVBMRVRFIiwiU1RBVFVTX0lOQ09NUExFVEUiLCJTVEFUVVNfQ0FOQ0VMTEVEIiwiU1RBVFVTX1VOQVNTSUdORUQiLCJfdGlja2V0JHByb21vX2NvZGUiLCJfdGlja2V0JG93bmVyNCIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c0RlbGVnYXRlIiwicHJvbW9fY29kZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJpc09yZGVyTG9hZGluZyIsIm9yZGVyc190b3RhbCIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwidXNlcl90aWNrZXRzX3RvdGFsIiwiV2lkZ2V0UmVkdWNlciIsInRvdGFsIiwibGFzdF9wYWdlIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwidXBkYXRlZE9yZGVyIiwidGlja2V0c19wYWdlX2xhc3QiLCJtbyIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidGlja2V0RGF0YSIsIm5ld09yZGVycyIsIm5ld1RpY2tldHMiLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJtb21lbnQiLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJmb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwicmVmdW5kZWRfYW1vdW50IiwiYW1vdW50IiwidGlja2V0X3R5cGVzIiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJnZXRPcmRlclRpY2tldHMiLCJfb3JkZXJzJCIsIm9yZGVycyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJyb3VuZCIsImdldE5vdyIsInRpbWVyU3RhdGUiLCJub3dVdGMiLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJ1c2VTdW1taXREZXRhaWxzIiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsImlzU3RhcnRlZCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImJhZGdlIiwiZmVhdHVyZXMiLCJmZWF0dXJlIiwiZ2V0VGlja2V0VHlwZSIsImZpbmFsX2Ftb3VudCIsInJyIiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMiIsImFsbFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczUiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczYiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM3IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzOCIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsImluY2x1ZGVEZWxlZ2F0aW9uIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwib25seVJlbGV2YW50Iiwic3ViUXVlc3Rpb25TbHVnIiwic3ViQW5zd2VyIiwibWF0Y2giLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlczIiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJzY2giLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
8197
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7QUNWdk47QUFDQTtBQUMwQjs7Ozs7Ozs7Ozs7Ozs7OztBQ0YxQjtBQUNBO0FBQ0E7QUFDNEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDSDVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzhYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkI5WDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDc0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ050STtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNSaE07QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN5Rzs7Ozs7Ozs7Ozs7QUNMekc7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7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ZixDQUFDO0FBRURpaEIsdUJBQXVCLENBQUNwNEIsU0FBUyxHQUFHO0VBQ2xDZ3ZCLFFBQVEsRUFBRWx4QiwwREFBZ0I7RUFDMUJ1NkIsWUFBWSxFQUFFdjZCLDBEQUFnQjtFQUM5QnhLLE1BQU0sRUFBRXdLLDBEQUFnQjtFQUN4QjFILFVBQVUsRUFBRTBILDBEQUFnQjtFQUM1QnZLLElBQUksRUFBRXVLLDBEQUFnQjtFQUN0Qml4QixRQUFRLEVBQUVqeEIsMERBQWdCO0VBQzFCckQsYUFBYSxFQUFFcUQsd0RBQWNxQztBQUMvQixDQUFDO0FBRUQsaUVBQWVpNEIsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Fzc2lnbkVRRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21EaWFsb2cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlclNvcnRTZWFyY2gvRGF0ZXBpY2tlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL0ZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVyU29ydFNlYXJjaC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xhYmVscy9FcnJvckxhYmVsLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0xvYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L09yZGVyU3VtbWFyeVRhYmxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9SZWZ1bmRFbWFpbFN1cHBvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXNzaWduZWRUb01lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RJdGVtLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyc0xpc3REZXNrdG9wTW9iaWxlLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGVsZWdhdGlvbkZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJTb3J0U2VhcmNoL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFJlYXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS94LWRhdGUtcGlja2Vycy9Mb2NhbGl6YXRpb25Qcm92aWRlclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZGF5anNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgZ2V0UmVxdWVzdCxcbiAgZGVsZXRlUmVxdWVzdCxcbiAgY3JlYXRlQWN0aW9uLFxuICBzdG9wTG9hZGluZyxcbiAgc3RhcnRMb2FkaW5nLFxuICBwdXRSZXF1ZXN0XG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgeyBvYmplY3RUb1F1ZXJ5U3RyaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGdldEFjY2Vzc1Rva2VuU2FmZWx5IH0gZnJvbSBcIi4vdXRpbHMvYXV0aFwiO1xuaW1wb3J0IHtcbiAgRklSU1RfUEFHRSxcbiAgREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgRklGVFlfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTXG59IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgUkVTRVRfU1RBVEUgPSBcIlJFU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfRklMVEVSID0gXCJSRVNFVF9GSUxURVJcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9BUElfRVJST1IgPSBcIlJFU0VUX0FQSV9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9TVEFURSA9IFwiU0VUX1NUQVRFXCI7XG5leHBvcnQgY29uc3QgU0VUX0FQSV9FUlJPUiA9IFwiU0VUX0FQSV9FUlJPUlwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfTVlfQVNTSUdORURfVElDS0VUUyA9IFwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUID0gXCJVUERBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfVElDS0VUID0gXCJSRVNFVF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgQVNTSUdOX1RJQ0tFVCA9IFwiQVNTSUdOX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFRlVORF9USUNLRVQgPSBcIlJFRlVORF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFTkRfTk9USUZJQ0FUSU9OID0gXCJSRVNFTkRfTk9USUZJQ0FUSU9OXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVIgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IgPSBcIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TID0gXCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCIsXG4gIGV4dHJhUXVlc3Rpb25zOiBcImV4dHJhX3F1ZXN0aW9uc1wiXG59O1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQgPVxuICBcIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURURcIjtcblxuLy8gVVNFUiBDT05UU1xuZXhwb3J0IGNvbnN0IFNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUgPSBcIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9JRFBfUFJPRklMRSA9IFwiVVBEQVRFX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU0VUX1VTRVIgPSBcIlNFVF9VU0VSXCI7XG5cbi8vIFNVTU1JVCBDT05TVFNcbmV4cG9ydCBjb25zdCBTRVRfU1VNTUlUID0gXCJTRVRfU1VNTUlUXCI7XG5leHBvcnQgY29uc3QgR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TID0gXCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyA9IFwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1NcIjtcbmV4cG9ydCBjb25zdCBDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIkNMRUFSX01BUktFVElOR19TRVRUSU5HU1wiO1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVycm9yID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9BUElfRVJST1IpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSL1NPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHBhcnNlRmlsdGVyID0gKGZpbHRlck9iaikgPT4ge1xuICBjb25zdCBmaWx0ZXIgPSBbXTtcbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX0RBVEUpIHtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJPYmoubmFtZX1bXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai50eXBlID09PSBGSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck9iai5uYW1lfT1AJHtmaWx0ZXJPYmoudmFsdWV9YCk7XG4gIH1cbiAgcmV0dXJuIGZpbHRlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT5cbiAgZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCIrXCIgOiBcIi1cIjtcblxuLy8gcGF5bG9hZDogeyBodHRwQ29kZSwgdGl0bGUsIGh0bWw6IGNvbnRlbnQsIHR5cGUgfVxuZXhwb3J0IGNvbnN0IGVycm9ySGFuZGxlck5vdGlmeSA9IChwYXlsb2FkLCBjYWxsYmFjaykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQVBJX0VSUk9SKShwYXlsb2FkKSk7XG4gIGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoe1xuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlciA9IHt9LFxuICAgIHNvcnQgPSB7fVxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKHsgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcIm9yZGVyLmlkXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2ZpcnN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfbGFzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2VtYWlsXCIsXG4gICAgICBcIm93bmVyLmlkXCIsXG4gICAgICBcIm93bmVyLmVtYWlsXCIsXG4gICAgICBcIm93bmVyLmZpcnN0X25hbWVcIixcbiAgICAgIFwib3duZXIubGFzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLnN0YXR1c1wiXG4gICAgXTtcbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGZpbHRlcjogXCJzdGF0dXM9PVBhaWRcIixcbiAgICAgIGV4cGFuZDogXCJvcmRlcixvd25lcix0aWNrZXRfdHlwZVwiLFxuICAgICAgb3JkZXI6IFwiLWlkXCIsXG4gICAgICBmaWVsZHM6IGZpZWxkcy5qb2luKFwiLFwiKSxcbiAgICAgIHJlbGF0aW9uczogXCJub25lXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfTVlfQVNTSUdORURfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHsgb3JkZXJJZCwgcGFnZSA9IEZJUlNUX1BBR0UsIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaCgoKSA9PlxuICAgICAgUHJvbWlzZS5yZWplY3QoKVxuICAgICk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKCgpID0+XG4gICAgICBQcm9taXNlLnJlamVjdCgpXG4gICAgKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcInJlZnVuZF9yZXF1ZXN0cyx0aWNrZXRfdHlwZVwiLFxuICAgICAgZmllbGRzOiBcInJlZnVuZF9yZXF1ZXN0cy5zdGF0dXNcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVGVU5EX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcmVmdW5kYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRCdWxrVGlja2V0cyA9XG4gICh7IHRpY2tldHMgfSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoKSA9PiB7XG4gICAgY29uc3QgbGltaXQgPSBwTGltaXQoUFJPTUlTRV9CQVRDSF9MSU1JVCk7XG4gICAgY29uc3QgYWxsUmVmdW5kVGlja2V0Q2FsbHMgPSB0aWNrZXRzLm1hcCgodGlja2V0KSA9PlxuICAgICAgbGltaXQoKCkgPT4gZGlzcGF0Y2gocmVmdW5kVGlja2V0KHsgdGlja2V0IH0pKSlcbiAgICApO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbLi4uYWxsUmVmdW5kVGlja2V0Q2FsbHNdKVxuICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICBjb25zdCBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQgPSByZXNcbiAgICAgICAgICAuZmlsdGVyKChyKSA9PiByLnJlc3BvbnNlPy5yZWZ1bmRfcmVxdWVzdHM/Lmxlbmd0aClcbiAgICAgICAgICAubWFwKChyKSA9PiByLnJlc3BvbnNlKTtcbiAgICAgICAgcmV0dXJuIHN1Y2Nlc3NmdWxseVJlcXVlc3RlZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IGUpO1xuICB9O1xuXG4vLyB1cGRhdGUgdGhlIHRpY2tldHMgdGhhdCBoYXZlIGJlZW4gc3VjZXNzZnVsbHkgcmVmdW5kZWRcbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkID1cbiAgKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpID0+IChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEKSh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKVxuICAgICk7XG5cbi8vIFNVTU1JVCBBQ1RJT05TXG5cbmV4cG9ydCBjb25zdCBnZXRFeHRyYVF1ZXN0aW9ucyA9XG4gIChhdHRlbmRlZUlkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goKCkgPT5cbiAgICAgIFByb21pc2UucmVqZWN0KClcbiAgICApO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKS5jYXRjaChQcm9taXNlLnJlamVjdCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgYXNzaWduQXR0ZW5kZWUgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGF0dGVuZGVlX2VtYWlsLCBtZXNzYWdlID0gbnVsbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlYXNzaWduVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCkuY2F0Y2goUHJvbWlzZS5yZWplY3QpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLnRoZW4oKCkgPT5cbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpXG4gICAgKTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVFeHRyYVF1ZXN0aW9ucyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgYW5zd2VycyxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFBERiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpLmNhdGNoKFByb21pc2UucmVqZWN0KTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBvYmplY3RUb1F1ZXJ5U3RyaW5nKHBhcmFtcyk7XG4gICAgY29uc3QgYXBpVXJsID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3BkZj8ke3F1ZXJ5U3RyaW5nfWA7XG5cbiAgICByZXR1cm4gZmV0Y2goYXBpVXJsLCB7XG4gICAgICByZXNwb25zZVR5cGU6IFwiQmxvYlwiLFxuICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL3BkZlwiIH1cbiAgICB9KVxuICAgICAgLnRoZW4oKHJlc3BvbnNlKSA9PiB7XG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgICB0aHJvdyByZXNwb25zZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gcmVzcG9uc2UuYmxvYigpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLnRoZW4oKHBkZikgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJhXCIpO1xuICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChwZGYpO1xuICAgICAgICBsaW5rLmhyZWYgPSB1cmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBcInRpY2tldC5wZGZcIjtcbiAgICAgICAgbGluay5kaXNwYXRjaEV2ZW50KG5ldyBNb3VzZUV2ZW50KFwiY2xpY2tcIikpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaChjdXN0b21GZXRjaEVycm9ySGFuZGxlcik7XG4gIH07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0IEV4dHJhUXVlc3Rpb25zRmllbGRzIGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkc1wiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciBmcm9tIFwiLi4vVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyXCI7XG5pbXBvcnQgeyBidWlsZFZhbGlkYXRpb25TY2hlbWEsIHBhcnNlQW5zd2VycyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBBc3NpZ25FUUZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAge30sXG4gICAgICBudWxsLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgZmFsc2UsXG4gICAgICBmYWxzZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gU0NST0xMIFRPIEVSUk9SXG4gIHVzZVNjcm9sbFRvRXJyb3IoZm9ybWlrLCBcInJlYXNzaWduRHJhd2VyXCIpO1xuXG4gIGlmIChleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPEJveD5cbiAgICAgICAgPEV4dHJhUXVlc3Rpb25zRmllbGRzIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc30gZm9ybWlrPXtmb3JtaWt9IC8+XG4gICAgICAgIHtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCAmJiAoXG4gICAgICAgICAgPFJlZ2lzdHJhdGlvbkRpc2NsYWltZXJcbiAgICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgICAgZGlzY2xhaW1lcj17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnR9XG4gICAgICAgICAgICBpc1JlcXVpcmVkPXtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5fVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ25fZXEuc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduX2VxLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cbkFzc2lnbkVRRm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduRVFGb3JtO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgZGVmYXVsdFdpZHRoID0gOTA7XG5cbmNvbnN0IENvcHlUZXh0ID0gKHtcbiAgdGV4dCxcbiAgdG9vbHRpcFRleHQsXG4gIGhpZGVDb3B5ID0gZmFsc2UsXG4gIHRydW5jYXRlZCA9IHRydWUsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdG9vbHRpcFRleHRUb1VzZSA9IHRvb2x0aXBUZXh0IHx8IHQoXCJnZW5lcmFsLmNvcHlfdG9fY2xpcGJvYXJkXCIpO1xuICBjb25zdCBbdG9vbHRpcCwgc2V0VG9vbHRpcF0gPSBSZWFjdC51c2VTdGF0ZSh0b29sdGlwVGV4dFRvVXNlKTtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMudHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIHNldFRvb2x0aXAodChcImdlbmVyYWwuY29waWVkXCIpKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRvb2x0aXAodG9vbHRpcFRleHRUb1VzZSk7XG4gICAgfSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7dGV4dH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHshaGlkZUNvcHkgJiYgKFxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17dG9vbHRpcH0+XG4gICAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db3B5VGV4dC5wcm9wVHlwZXMgPSB7XG4gIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRvb2x0aXBUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRlQ29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvcHlUZXh0O1xuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBkZWZhdWx0Q29udGV4dFZhbHVlID0ge1xuICBzZXRNZXNzYWdlOiAoKSA9PiB7fSxcbiAgc2V0TWVzc2FnZUNhbGxiYWNrOiAoKSA9PiB7fVxufTtcblxuY29uc3QgQ3VzdG9tRGlhbG9nQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHRWYWx1ZSk7XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbURpYWxvZ0NvbnRleHQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBEaWFsb2csXG4gIERpYWxvZ0NvbnRlbnQsXG4gIERpYWxvZ0NvbnRlbnRUZXh0LFxuICBEaWFsb2dUaXRsZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBDdXN0b21EaWFsb2cgPSAoeyBvcGVuLCBvbkNsb3NlLCB0aXRsZSwgYm9keSB9KSA9PiAoXG4gIDxEaWFsb2dcbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgPlxuICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPnt0aXRsZX08L0RpYWxvZ1RpdGxlPlxuICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgPERpYWxvZ0NvbnRlbnRUZXh0IGlkPVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCI+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9EaWFsb2dDb250ZW50VGV4dD5cbiAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gIDwvRGlhbG9nPlxuKTtcblxuQ3VzdG9tRGlhbG9nLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYm9keTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tRGlhbG9nO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5sZXQgZGFya0NvbG9yID0gXCJcIjtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIC8vIEdldCB0aGUgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLy8gUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBDU1MgdmFyaWFibGVcbiAgZGFya0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgIFwiLS1jb2xvcl9iYWNrZ3JvdW5kX2RhcmtcIlxuICApO1xufVxuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcGFsZXR0ZToge1xuICAgIHByaW1hcnk6IHtcbiAgICAgIG1haW46IGRhcmtDb2xvclxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IEN1c3RvbVRoZW1lID0gKHsgY2hpbGRyZW4gfSkgPT4gKFxuICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PntjaGlsZHJlbn08L1RoZW1lUHJvdmlkZXI+XG4pO1xuXG5DdXN0b21UaGVtZS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21UaGVtZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID0gY3VycmVudEFucy5sZW5ndGggPT09IHF1ZXN0aW9uTWF4VmFsdWVzO1xuICAgIGxldCBuZXdWYWx1ZTtcblxuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBuZXdWYWx1ZSA9IG1heFNlbGVjdGlvblJlYWNoZWQgPyBjdXJyZW50QW5zIDogWy4uLmN1cnJlbnRBbnMsIHZhbF07XG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld1ZhbHVlID0gY3VycmVudEFucy5maWx0ZXIoKHYpID0+IHYgIT09IHZhbCk7XG4gICAgfVxuXG4gICAgc2V0RmllbGRWYWx1ZShxdWVzdGlvblNsdWcsIG5ld1ZhbHVlKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbD57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPEZvcm1Hcm91cD5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXt2YWx1ZT8uaW5jbHVkZXMob3AudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhldikgPT5cbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlKGV2LnRhcmdldC5jaGVja2VkLCBvcC52YWx1ZSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGxhYmVsPXtvcC5sYWJlbH1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvRm9ybUdyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBDaGVja2JveFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIHNldEZpZWxkVmFsdWUsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUdyb3VwPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuVGV4dFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRleHRRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Rcbn0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tSdWxlID0gKHZhbHVlLCBydWxlKSA9PiB7XG4gIGNvbnN0IHZhbHVlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlcztcblxuICBpZiAoIXZhbHVlKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgaWYgKCF2YWx1ZS5sZW5ndGgpIHJldHVybiBmYWxzZTtcbiAgICBsZXQgcmVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiO1xuICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICBpZiAocnVsZS5hbnN3ZXJfdmFsdWVzX29wZXJhdG9yID09PSBcIkFuZFwiKSB7XG4gICAgICAgIHJlcyA9IHJlcyAmJiB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE9yXG4gICAgICAgIHJlcyA9IHJlcyB8fCB2YWx1ZS5pbmNsdWRlcyh2KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gcmVzO1xuICB9XG4gIHJldHVybiB2YWx1ZXMuaW5jbHVkZXModmFsdWU/LnRvU3RyaW5nKCkpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrVmlzaWJpbGl0eSA9IChydWxlLCBydWxlUmVzdWx0LCBjaGlsZHJlbikgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIGlmIChydWxlUmVzdWx0KSByZXR1cm4gY2hpbGRyZW47XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gTm9uIEVxdWFsXG4gICAgaWYgKCFydWxlUmVzdWx0KSB7XG4gICAgICByZXR1cm4gY2hpbGRyZW47XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG4gIC8vIG5vdCB2aXNpYmxlXG4gIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICBpZiAoIXJ1bGVSZXN1bHQpIHJldHVybiBjaGlsZHJlbjtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocnVsZVJlc3VsdCkgcmV0dXJuIGNoaWxkcmVuO1xuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCB0b1NsdWcgPSAodGV4dCwgcXVlc3Rpb25JZCkgPT4ge1xuICBjb25zdCB0ZXh0TEMgPSB0ZXh0LnRvTG93ZXJDYXNlKCk7XG4gIHJldHVybiBgJHt0ZXh0TEMucmVwbGFjZSgvW15hLXpBLVowLTldKy9nLCBcIl9cIil9XyR7cXVlc3Rpb25JZH1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldExhYmVsID0gKHEpID0+XG4gIC8vIHJlcGxhY2UgbGluZSBicmVha3MgYW5kIHJlbW92ZSBvdXRlciA8cD5cbiAgcT8ubGFiZWw/LnJlcGxhY2UoL1xcbi9nLCBcIiBcIikucmVwbGFjZSgvPHA+KC4qKTxcXC9wPi9naSwgXCIkMVwiKTtcblxuZXhwb3J0IGNvbnN0IGlzQW5zd2VyZWQgPSAoYW5zd2VyKSA9PiB7XG4gIGlmICghYW5zd2VyKSByZXR1cm4gZmFsc2U7XG4gIC8vIGNoZWNrIHR5cGVcbiAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyKSkgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIGFuc3dlci5sZW5ndGggPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJudW1iZXJcIikgcmV0dXJuIGFuc3dlciA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcImJvb2xlYW5cIikgcmV0dXJuIGFuc3dlcjtcbiAgcmV0dXJuIGZhbHNlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrSWZWYWx1ZU1hdGNoID0gKGFuc3dlciwgY29tcGFyZVZhbCkgPT4ge1xuICBjb25zdCBhbnN3ZXJBcnJheSA9IEFycmF5LmlzQXJyYXkoYW5zd2VyKSA/IGFuc3dlciA6IFthbnN3ZXJdO1xuXG4gIHJldHVybiBhbnN3ZXJBcnJheS5zb21lKCh2KSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY29tcGFyZVZhbCkpIHtcbiAgICAgIHJldHVybiBjb21wYXJlVmFsLmluY2x1ZGVzKHYpO1xuICAgIH1cbiAgICByZXR1cm4gdiA9PT0gY29tcGFyZVZhbDtcbiAgfSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZUluaXRpYWxWYWx1ZSA9IChxKSA9PiB7XG4gIHN3aXRjaCAocS50eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBcIlwiO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWx1ZSA9IChhbnMsIHR5cGUpID0+IHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICByZXR1cm4gYW5zID09PSBcInRydWVcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gYW5zPy5zcGxpdChcIixcIikgfHwgW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIGFucyB8fCBcIlwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBhbnMgfHwgbnVsbDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGFucztcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCA9IChhbnN3ZXJzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgLi4uZXh0cmFfcXVlc3Rpb25zXG4gIH0gPSBhbnN3ZXJzO1xuXG4gIGNvbnN0IGZvcm1hdHRlZEVRID0gT2JqZWN0LmVudHJpZXMoZXh0cmFfcXVlc3Rpb25zKS5tYXAoKFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICBxdWVzdGlvbl9pZDogcGFyc2VJbnQoa2V5LnNwbGl0KFwiX1wiKS5wb3AoKSwgMTApLFxuICAgIGFuc3dlcjogdmFsdWUudG9TdHJpbmcoKVxuICB9KSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhdHRlbmRlZV9lbWFpbCxcbiAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9jb21wYW55LFxuICAgIGRpc2NsYWltZXJfYWNjZXB0ZWQsXG4gICAgZXh0cmFfcXVlc3Rpb25zOiBmb3JtYXR0ZWRFUVxuICB9O1xufTtcbiIsImV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dCA9IFwiVGV4dFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0QXJlYSA9IFwiVGV4dEFyZWFcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tib3ggPSBcIkNoZWNrQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCA9IFwiUmFkaW9CdXR0b25MaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvbWJvQm94ID0gXCJDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QgPSBcIkNoZWNrQm94TGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3ggPSBcIkNvdW50cnlDb21ib0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbiA9IFwiUmFkaW9CdXR0b25cIjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgdG9TbHVnLFxuICBpc0Fuc3dlcmVkLFxuICBjaGVja1Zpc2liaWxpdHksXG4gIGNoZWNrUnVsZVxufSBmcm9tIFwiLi9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCxcbiAgUXVlc3Rpb25UeXBlX1RleHQsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCBUZXh0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IERyb3Bkb3duUXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZFwiO1xuXG5jb25zdCBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gKHF1ZXN0aW9uVHlwZSkgPT4ge1xuICBzd2l0Y2ggKHF1ZXN0aW9uVHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHRBcmVhOlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1RleHQ6IHtcbiAgICAgIHJldHVybiBUZXh0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6IHtcbiAgICAgIHJldHVybiBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDoge1xuICAgICAgcmV0dXJuIFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDoge1xuICAgICAgcmV0dXJuIERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgcmV0dXJuIFJlYWN0LkZyYWdtZW50O1xuICAgIH1cbiAgfVxufTtcblxuY29uc3QgRXh0cmFRdWVzdGlvbnNGaWVsZHMgPSAoe1xuICBleHRyYVF1ZXN0aW9ucyxcbiAgY2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uc1wiLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvblwiLFxuICByZWFkT25seSA9IGZhbHNlLFxuICBhbGxvd0VkaXQgPSB0cnVlLFxuICBmb3JtaWtcbn0pID0+IHtcbiAgY29uc3QgcmVuZGVyUnVsZSA9IChydWxlLCBxdWVzdGlvblNsdWcpID0+XG4gICAgY2hlY2tWaXNpYmlsaXR5KFxuICAgICAgcnVsZSxcbiAgICAgIGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpLFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZS1iZWZvcmUtZGVmaW5lXG4gICAgICByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbilcbiAgICApO1xuXG4gIGNvbnN0IHJlbmRlclF1ZXN0aW9uID0gKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICAvLyBkaXNhYmxlIGZpZWxkIGlmIGVkaXQgaXNuJ3QgYWxsb3dlZCBhbmQgdGhlIHF1ZXN0aW9ucyBpcyBhbnN3ZXJlZFxuICAgIGNvbnN0IGlzRGlzYWJsZWQgPVxuICAgICAgKCFhbGxvd0VkaXQgJiYgaXNBbnN3ZXJlZChmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10pKSB8fCByZWFkT25seTtcbiAgICBjb25zdCBRdWVzdGlvbkZpZWxkQ29tcG9uZW50ID0gZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudChxLnR5cGUpO1xuXG4gICAgY29uc3QgZm9ybWlrUHJvcHMgPSB7XG4gICAgICB2YWx1ZTogZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLFxuICAgICAgb25DaGFuZ2U6IGZvcm1pay5oYW5kbGVDaGFuZ2UsXG4gICAgICBvbkJsdXI6IGZvcm1pay5oYW5kbGVCbHVyLFxuICAgICAgZXJyb3I6XG4gICAgICAgIGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgQm9vbGVhbihmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10pLFxuICAgICAgaGVscGVyVGV4dDogZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBmb3JtaWsuZXJyb3JzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBzZXRGaWVsZFZhbHVlOiBmb3JtaWsuc2V0RmllbGRWYWx1ZVxuICAgIH07XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFF1ZXN0aW9uRmllbGRDb21wb25lbnRcbiAgICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICAgIHF1ZXN0aW9uPXtxfVxuICAgICAgICBxdWVzdGlvbkNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgICAgIGlzRGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgIHsuLi5mb3JtaWtQcm9wc31cbiAgICAgID5cbiAgICAgICAge3Euc3ViX3F1ZXN0aW9uX3J1bGVzPy5tYXAoKHJ1bGUpID0+IHJlbmRlclJ1bGUocnVsZSwgcXVlc3Rpb25TbHVnKSl9XG4gICAgICA8L1F1ZXN0aW9uRmllbGRDb21wb25lbnQ+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZX0+e2V4dHJhUXVlc3Rpb25zLm1hcChyZW5kZXJRdWVzdGlvbil9PC9kaXY+O1xufTtcblxuRXh0cmFRdWVzdGlvbnNGaWVsZHMucHJvcFR5cGVzID0ge1xuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGFsbG93RWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIHJlYWRPbmx5OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRXh0cmFRdWVzdGlvbnNGaWVsZHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IGRheWpzIGZyb20gXCJkYXlqc1wiO1xuaW1wb3J0IHsgQWRhcHRlckRheWpzIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvQWRhcHRlckRheWpzXCI7XG5pbXBvcnQgeyBMb2NhbGl6YXRpb25Qcm92aWRlciB9IGZyb20gXCJAbXVpL3gtZGF0ZS1waWNrZXJzL0xvY2FsaXphdGlvblByb3ZpZGVyXCI7XG5pbXBvcnQgeyBEYXRlUGlja2VyIH0gZnJvbSBcIkBtdWkveC1kYXRlLXBpY2tlcnMvRGF0ZVBpY2tlclwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9EQVRFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBCYXNpY0RhdGVQaWNrZXIoeyBvbkZpbHRlciwgb25SZXNldCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3Qgbm93ID0gZGF5anMoKTtcbiAgY29uc3QgW2RhdGVWYWx1ZSwgc2V0RGF0ZVZhbHVlXSA9IHVzZVN0YXRlKG5vdyk7XG4gIGNvbnN0IG9uRGF0ZUNoYW5nZSA9ICh2YWwpID0+IHtcbiAgICBzZXREYXRlVmFsdWUodmFsKTtcbiAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodmFsLiRkKTtcbiAgICBjb25zdCB7IGxvd2VyLCB1cHBlciB9ID0gZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzKGRhdGUpO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIHR5cGU6IEZJTFRFUl9WQVJfREFURSxcbiAgICAgIG5hbWU6IFwiY3JlYXRlZFwiLFxuICAgICAgZGF0ZSxcbiAgICAgIGxvd2VyLFxuICAgICAgdXBwZXJcbiAgICB9KTtcbiAgfTtcbiAgY29uc3Qgb25SZXNldEFjdGlvbiA9ICgpID0+IHtcbiAgICBvblJlc2V0KCk7XG4gICAgc2V0RGF0ZVZhbHVlKG5vdyk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyRGF0ZUxhYmVsfT57dChcImZpbHRlci5wdXJjaGFzZWRfb25cIil9PC9kaXY+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kYXRlUGlja2VyQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uXG4gICAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZGF0ZXBpY2tlckNsb3NlfVxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVzZXRBY3Rpb259XG4gICAgICAgIC8+XG4gICAgICAgIDxMb2NhbGl6YXRpb25Qcm92aWRlciBkYXRlQWRhcHRlcj17QWRhcHRlckRheWpzfT5cbiAgICAgICAgICA8RGF0ZVBpY2tlclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FsZW5kYXJEaXNwbGF5fVxuICAgICAgICAgICAgb25DaGFuZ2U9e29uRGF0ZUNoYW5nZX1cbiAgICAgICAgICAgIHZhbHVlPXtkYXRlVmFsdWV9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Mb2NhbGl6YXRpb25Qcm92aWRlcj5cbiAgICAgIDwvU3RhY2s+XG4gICAgPC8+XG4gICk7XG59XG5cbkJhc2ljRGF0ZVBpY2tlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBGaWx0ZXJMaXN0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IEJhc2ljRGF0ZVBpY2tlciBmcm9tIFwiLi9EYXRlcGlja2VyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEZpbHRlcih7IG9uRmlsdGVyLCBvblJlc2V0IH0pIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtmaWx0ZXJOdW1BY3RpdmUsIHNldEZpbHRlck51bUFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEZpbHRlckxpc3RJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJJY29ufSAvPlxuICAgICAgICB7LyoqIGN1cnJlbnRseSBqdXN0IHNob3dpbmcgXCIxXCIgYmVjYXVzZSB3ZSdyZSBjdXJyZW50bHkgb25seSBmaWx0ZXJpbmcgb25lIGNyaXRlcmlhIC0gY3JlYXRlZCBkYXRlICovfVxuICAgICAgICB7ZmlsdGVyTnVtQWN0aXZlICYmIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyTnVtQWN0aXZlfT4xPC9kaXY+fVxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJMYWJlbH0+e3QoXCJmaWx0ZXIuZmlsdGVyXCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmZpbHRlckxpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn0gJHtcbiAgICAgICAgICBzaG93RmlsdGVyTGlzdCA/IHN0eWxlcy5zaG93RGF0ZVBpY2tlciA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxCYXNpY0RhdGVQaWNrZXJcbiAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XG4gICAgICAgICAgICBvblJlc2V0KCk7XG4gICAgICAgICAgICBzZXRGaWx0ZXJOdW1BY3RpdmUoZmFsc2UpO1xuICAgICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgICAgfX1cbiAgICAgICAgICBvbkZpbHRlcj17KGZpbHRlcikgPT4ge1xuICAgICAgICAgICAgb25GaWx0ZXIoZmlsdGVyKTtcbiAgICAgICAgICAgIHNldEZpbHRlck51bUFjdGl2ZSh0cnVlKTtcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBTZWFyY2hJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiO1xuaW1wb3J0IENsb3NlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiO1xuaW1wb3J0IElucHV0QmFzZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09SREVSX05VTUJFUiB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFNlYXJjaENvbnRhaW5lciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiLFxuICBtYXJnaW5SaWdodDogXCIwXCIsXG4gIG1hcmdpbkxlZnQ6IFwiMFwiLFxuICB3aWR0aDogXCIxMDAlXCIsXG4gIGRpc3BsYXk6IFwiYmxvY2tcIlxufSkpO1xuY29uc3QgU2VhcmNoSWNvbldyYXBwZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiXG59KSk7XG5jb25zdCBTdHlsZWRJbnB1dEJhc2UgPSBzdHlsZWQoSW5wdXRCYXNlKSgoKSA9PiAoe1xuICBjb2xvcjogXCJpbmhlcml0XCIsXG4gIGJvcmRlckJvdHRvbTogXCIxcHggc29saWQgcmdiYSgwLCAwLCAwLCAwLjQyKVwiLFxuICBwYWRkaW5nTGVmdDogXCIyNXB4XCIsXG4gIHBhZGRpbmdSaWdodDogXCIyNXB4XCIsXG4gIGZvbnRTaXplOiBcIjFlbVwiXG59KSk7XG5jb25zdCBDbG9zZUljb25XcmFwcGVyID0gc3R5bGVkKENsb3NlSWNvbikoKCkgPT4gKHtcbiAgcGFkZGluZzogXCIycHhcIixcbiAgZm9udFNpemU6IFwiMS41ZW1cIixcbiAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgcG9zaXRpb246IFwiYWJzb2x1dGVcIixcbiAgdG9wOiBcIjBcIixcbiAgcmlnaHQ6IFwiMFwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsXG4gIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gIHpJbmRleDogXCIxMDAwXCJcbn0pKTtcblxuZnVuY3Rpb24gU2VhcmNoKHsgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93Q2xvc2UsIHNldFNob3dDbG9zZV0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICB2YWx1ZSxcbiAgICAgICAgbmFtZTogXCJudW1iZXJcIixcbiAgICAgICAgdHlwZTogRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcbiAgICAgIH0pO1xuICAgICAgc2V0U2hvd0Nsb3NlKHRydWUpO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgc2V0U2hvd0Nsb3NlKGZhbHNlKTtcbiAgICBvblJlc2V0KCk7XG4gIH07XG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2UgJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn1cblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlc2V0OiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gU29ydCh7IG9uU29ydCB9KSB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH0+XG4gICAgICAgICAgPEJ1dHRvbiBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0gb25DbGljaz17KCkgPT4gb25Tb3J0KFwiZGVzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b24gY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9IG9uQ2xpY2s9eygpID0+IG9uU29ydChcImFzY1wiKX0+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5mdW5jdGlvbiBGaWx0ZXJTb3J0U2VhcmNoKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkge1xuICByZXR1cm4gKFxuICAgIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIHhzPXs2fVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgZ2FwPXsyfVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJTb3J0Q29udGFpbmVyfVxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0dyaWQ+XG4gICk7XG59XG5cbkZpbHRlclNvcnRTZWFyY2gucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlclNvcnRTZWFyY2g7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBGaWx0ZXJTb3J0U2VhcmNoIGZyb20gXCIuL0ZpbHRlclNvcnRTZWFyY2hcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuL09yZGVyc0xpc3RcIjtcbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICByZXNldEZpbHRlcixcbiAgcmVzZXRFcnJvclxufSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0IExvYWRlciBmcm9tIFwiLi9Mb2FkZXJcIjtcbmltcG9ydCBDdXN0b21EaWFsb2dDb250ZXh0IGZyb20gXCIuL0N1c3RvbURpYWxvZy9Db250ZXh0XCI7XG5pbXBvcnQgQ3VzdG9tRGlhbG9nIGZyb20gXCIuL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbbWVzc2FnZSwgc2V0TWVzc2FnZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW21lc3NhZ2VDYWxsYmFjaywgc2V0TWVzc2FnZUNhbGxiYWNrXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIG1lbWJlck9yZGVycyxcbiAgICBsb2FkaW5nLFxuICAgIG9yZGVyc19jdXJyZW50X3BhZ2UsXG4gICAgb3JkZXJzX2xhc3RfcGFnZSxcbiAgICBvcmRlcnNfcGVyX3BhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlLFxuICAgIGFwaUVycm9yXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuICBjb25zdCBbZmlsdGVyLCBzZXRGaWx0ZXJdID0gdXNlU3RhdGUoe30pO1xuICBjb25zdCBbc29ydCwgc2V0U29ydF0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgY29uc3Qgb25SZXNldCA9ICgpID0+IHtcbiAgICBzZXRTb3J0KHt9KTtcbiAgICBzZXRGaWx0ZXIoe30pO1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QXBpRXJyb3IgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRFcnJvcigpKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaERhdGEgPSBhc3luYyAocGFnZSkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlck9yZGVycyh7XG4gICAgICAgIHBhZ2UsXG4gICAgICAgIHBlclBhZ2U6IG9yZGVyc19wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICkudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgZGF0YS5mb3JFYWNoKChvcmRlcikgPT4ge1xuICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogT05FX1BBR0VfTkVYVCxcbiAgICAgICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZVxuICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YShvcmRlcnNfY3VycmVudF9wYWdlKTtcbiAgfSwgW2ZpbHRlcl0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFwaUVycm9yKSB7XG4gICAgICBzZXRNZXNzYWdlKGFwaUVycm9yKTtcbiAgICAgIHNldE1lc3NhZ2VDYWxsYmFjayhyZXNldEFwaUVycm9yKTtcbiAgICB9XG4gIH0sIFthcGlFcnJvcl0pO1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlcikgPT4ge1xuICAgIHNldFNvcnQoe30pO1xuICAgIHNldEZpbHRlcihmaWx0ZXIpO1xuICB9O1xuICBjb25zdCBvblNvcnQgPSAoZGlyZWN0aW9uKSA9PiB7XG4gICAgc2V0RmlsdGVyKHt9KTtcbiAgICBzZXRTb3J0KHsgZGlyZWN0aW9uLCBuYW1lOiBcImNyZWF0ZWRcIiB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDdXN0b21UaGVtZT5cbiAgICAgIDxMb2FkZXIgb3Blbj17bG9hZGluZ30gLz5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFtZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiB7XG4gICAgICAgICAgc2V0TWVzc2FnZShudWxsKTtcbiAgICAgICAgICBpZiAobWVzc2FnZUNhbGxiYWNrKSBtZXNzYWdlQ2FsbGJhY2soKTtcbiAgICAgICAgfX1cbiAgICAgICAgYm9keT17bWVzc2FnZT8uYm9keX1cbiAgICAgICAgdGl0bGU9e21lc3NhZ2U/LnRpdGxlfVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJTb3J0U2VhcmNoXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgICA+XG4gICAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldHNUaXRsZVRleHR9Pnt0KFwib3JkZXJzLnRpdGxlXCIpfTwvaDM+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICAgIDxoMiBjbGFzc05hbWU9e3N0eWxlcy5zdW1taXRUaXRsZURhdGV9PlxuICAgICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICAgIDwvaDI+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21EaWFsb2dDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXsoc2V0TWVzc2FnZSwgc2V0TWVzc2FnZUNhbGxiYWNrKX0+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBpZD1cImluZmluaXRlV3JhcHBlclwiXG4gICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiA1MDAsIG92ZXJmbG93OiBcImF1dG9cIiwgbWFyZ2luOiBcIjE1cHggMFwiIH19XG4gICAgICAgID5cbiAgICAgICAgICB7XCIgXCJ9XG4gICAgICAgICAge21lbWJlck9yZGVycz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgPEluZmluaXRlU2Nyb2xsXG4gICAgICAgICAgICAgIGRhdGFMZW5ndGg9e21lbWJlck9yZGVycz8ubGVuZ3RofVxuICAgICAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEob3JkZXJzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgICAgICBoYXNNb3JlPXtvcmRlcnNfY3VycmVudF9wYWdlIDw9IG9yZGVyc19sYXN0X3BhZ2V9XG4gICAgICAgICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgICAgICAgICAgc2Nyb2xsYWJsZVRhcmdldD1cImluZmluaXRlV3JhcHBlclwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAgICAgICAga2V5PXtvcmRlci5udW1iZXIgKyBvcmRlci5pZH1cbiAgICAgICAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5ub09yZGVyc0ZvdW5kfT57dChcIm9yZGVycy5ub19vcmRlcnNcIil9PC9Cb3g+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0N1c3RvbURpYWxvZ0NvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9DdXN0b21UaGVtZT5cbiAgKTtcbn07XG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc1RpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeVRhYmxlID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0IH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5PcmRlclN1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2NvdW50X2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0YXhlc19hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeVRhYmxlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kRW1haWxTdXBwb3J0ID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICByZWZ1bmRSZXF1ZXN0ZWQsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgb25SZWZ1bmREZXRhaWxDbGljayxcbiAgb25FbWFpbFN1cHBvcnRDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBpc0luUmVmdW5kYWJsZVBlcmlvZCA9XG4gICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSA+IG5vdztcbiAgY29uc3QgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQgPSB0aWNrZXRzUmVmdW5kYWJsZSh0aWNrZXRzKTtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gISEoaXNJblJlZnVuZGFibGVQZXJpb2QgJiYgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNSZWZ1bmRhYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgcmVxdWVzdCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn0gJHtcbiAgICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZCAmJiB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwICYmICFzdWJtaXRSZXF1ZXN0XG4gICAgICAgICAgICAgID8gc3R5bGVzLnJlZnVuZERpc2FibGVkXG4gICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgIH1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtcbiAgICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZCAmJiB0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwICYmICFzdWJtaXRSZXF1ZXN0XG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgZGV0YWlscyBidXR0b25cIlxuICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICB2YXJpYW50PVwib3V0bGluZWRcIlxuICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgPlxuICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cImVtYWlsIHN1cHBvcnQgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25FbWFpbFN1cHBvcnRDbGlja31cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvbkVtYWlsU3VwcG9ydENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgcmVmdW5kUmVxdWVzdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGlja2V0c1RvUmVmdW5kOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgcmVmdW5kUmVxdWVzdGVkLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlIG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICAgIG9uRW1haWxTdXBwb3J0Q2xpY2s9eygpID0+IHt9fVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59O1xuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgcmVmdW5kUmVxdWVzdGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgdGlja2V0c1RvUmVmdW5kOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IHsgZ2V0VXNlclRpY2tldHMgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCwgREVGQVVMVF9JVEVNU19QRVJfUEFHRSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICgpID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyVGlja2V0cyxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZldGNoRGF0YSA9IGFzeW5jIChwYWdlKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VXNlclRpY2tldHMoeyBwYWdlLCBwZXJQYWdlOiBERUZBVUxUX0lURU1TX1BFUl9QQUdFIH0pKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoRGF0YShPTkVfUEFHRV9ORVhUKTtcbiAgfSwgW10pO1xuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9PlxuICAgICAgPGgzIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRvTWVUZXh0fT57dChcImxhYmVscy5hc3NpZ25lZF90b19tZVwiKX08L2gzPlxuICAgICAgPGgyPlxuICAgICAgICB7c3VtbWl0Py5uYW1lfSA8YnIgLz5cbiAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgIDwvaDI+XG4gICAgICA8ZGl2XG4gICAgICAgIGlkPVwiYXNzaWduZWRUb01lV3JhcHBlclwiXG4gICAgICAgIHN0eWxlPXt7IGhlaWdodDogNTAwLCBvdmVyZmxvdzogXCJhdXRvXCIsIG1hcmdpbjogXCIxNXB4IDBcIiB9fVxuICAgICAgPlxuICAgICAgICB7dXNlclRpY2tldHM/Lmxlbmd0aCA/IChcbiAgICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJUaWNrZXRzPy5sZW5ndGh9XG4gICAgICAgICAgICBuZXh0PXsoKSA9PiBmZXRjaERhdGEodXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSArIE9ORV9QQUdFX05FWFQpfVxuICAgICAgICAgICAgaGFzTW9yZT17dXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSA8IHVzZXJfdGlja2V0c19sYXN0X3BhZ2V9XG4gICAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgICAgICBzY3JvbGxhYmxlVGFyZ2V0PVwiYXNzaWduZWRUb01lV3JhcHBlclwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfT5cbiAgICAgICAgICAgICAge3VzZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1tdfVxuICAgICAgICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgICAgICApIDogKFxuICAgICAgICAgIFwiXCJcbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduVG9NZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgR3JpZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEF0dGVuZGVlU3RhdHVzID0gKHsgdGlja2V0LCBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiB0aWNrZXQub3duZXI/LmVtYWlsID8gKFxuICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25lZF90b1wiKX06IDxiciAvPlxuICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtYXNzaWduZWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtcIiBcIn1cbiAgICAgICAgICAgIHt0aWNrZXQub3duZXI/LmVtYWlsfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7aXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ICYmIChcbiAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfYnlcIil9OiA8YnIgLz5cbiAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICB7dGlja2V0Lm9yZGVyPy5vd25lcl9maXJzdF9uYW1lfSB7dGlja2V0Lm9yZGVyPy5vd25lcl9sYXN0X25hbWV9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApIDogKFxuICAgIHRpY2tldC5pc19hY3RpdmUgJiYgKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApXG4gICk7XG59O1xuXG5BdHRlbmRlZVN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXR0ZW5kZWVTdGF0dXM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyTGlzdEl0ZW0gPSAoe1xuICBzdW1taXQsXG4gIG9yZGVyLFxuICBvblBhZ2luYXRlQ2xpY2ssXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgdGlja2V0c1RvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpdGVtc1RvRGlzcGxheSwgc2V0SXRlbXNUb0Rpc3BsYXldID0gdXNlU3RhdGUoXG4gICAgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UXG4gICk7XG5cbiAgaWYgKCFvcmRlcj8ubWVtYmVyVGlja2V0cz8ubGVuZ3RoKSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc2xpY2VkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5zbGljZSgwLCBpdGVtc1RvRGlzcGxheSk7XG5cbiAgY29uc3Qgb25WaWV3TW9yZSA9ICgpID0+IHtcbiAgICBpZiAob3JkZXI/LnRpY2tldHNfdG90YWwgPiBvcmRlcj8ubWVtYmVyVGlja2V0cy5sZW5ndGgpIHtcbiAgICAgIG9uUGFnaW5hdGVDbGljaygpO1xuICAgIH1cbiAgICBzZXRJdGVtc1RvRGlzcGxheShpdGVtc1RvRGlzcGxheSArIFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH07XG5cbiAgY29uc3Qgb25WaWV3TGVzcyA9ICgpID0+IHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge3NsaWNlZFRpY2tldHM/Lm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXshIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgICAge29yZGVyPy50aWNrZXRzX3RvdGFsID4gaXRlbXNUb0Rpc3BsYXkgPyAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwidmlldyBtb3JlIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld01vcmVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17b25WaWV3TW9yZX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLXRpY2tldHMudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IG9yZGVyPy50aWNrZXRzX3RvdGFsID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbGVzcyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld0xlc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy10aWNrZXRzLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBDaGVja2JveCBmcm9tIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IFRpY2tldFJlYXNzaWduIGZyb20gXCIuLi9UaWNrZXRSZWFzc2lnblwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgbW9kYWxWaWV3cyA9IHtcbiAgZGV0YWlsOiBcIkRFVEFJTFwiLFxuICByZWFzc2lnbjogXCJSRUFTU0lHTlwiLFxuICBhc3NpZ246IFwiQVNTSUdOXCJcbn07XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmFzc2lnbil9XG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrXG4gICAgICBzeD17e1xuICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgfX1cbiAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICA+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuZGV0YWlsKX1cbiAgICAgID5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVhc3NpZ24gdGlja2V0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5yZWFzc2lnbil9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cblRpY2tldENUQXMucHJvcFR5cGVzID0ge1xuICBpc0luY29tcGxldGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzVW5hc3NpZ25lZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNSZWFzc2lnbmFibGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uT3BlbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIHJlZnVuZFJlcXVlc3RlZCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG59KSA9PiB7XG4gIGNvbnN0IF9pc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgPSAhIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDtcblxuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCB7IGlzUmVmdW5kYWJsZSwgaXNVbmFzc2lnbmVkLCBpc0luY29tcGxldGUsIGNhblJlYXNzaWduIH0gPVxuICAgIHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgW21vZGFsT3Blbiwgc2V0TW9kYWxPcGVuXSA9IHVzZVN0YXRlKG51bGwpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBzZXRNb2RhbE9wZW4obnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKHZpZXcpID0+IHtcbiAgICBzZXRNb2RhbE9wZW4odmlldyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlcldyYXBwZXJ9XG4gICAgICBjb250YWluZXJcbiAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItbGlzdC10aWNrZXRcIlxuICAgID5cbiAgICAgIDxHcmlkXG4gICAgICAgIHhzPXs4fVxuICAgICAgICBwYWRkaW5nPXsyfVxuICAgICAgICBpdGVtXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFRpY2tldFR5cGV9XG4gICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgID5cbiAgICAgICAgPFN0YWNrXG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIHtyZWZ1bmRSZXF1ZXN0ZWQgJiYgaXNSZWZ1bmRhYmxlICYmIChcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHRpY2tldCBjaGVja2JveFwiXG4gICAgICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgIGNoZWNrZWQ9e2lzU2VsZWN0ZWRUb1JlZnVuZH1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZWxlY3RUb1JlZnVuZChlLCB0aWNrZXQpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApfVxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17NH0gcGFkZGluZz17Mn0gaXRlbT5cbiAgICAgICAgey8qIFRvIGFkZCBiYWRnZSBmZWF0dXJlcyAqL31cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHhzPXsxMn0gc3g9e3sgcHg6IDIsIHBiOiAyIH19IGl0ZW0+XG4gICAgICAgIDxBdHRlbmRlZVN0YXR1c1xuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldD17X2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyIGRpcmVjdGlvbj1cInJvd1wiIHhzPXsxMn0gbGc9ezZ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIiBpdGVtPlxuICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgcGFkZGluZz17Mn0geHM9ezEyfSBsZz17Nn0gY29udGFpbmVyIGl0ZW0+XG4gICAgICAgICAgPEdyaWRcbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgYWxpZ249XCJjZW50ZXJcIlxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e1xuICAgICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGUgJiYgY2FuUmVhc3NpZ24gJiYgIV9pc0V4dGVybmFsQXNzaWduZWRUaWNrZXRcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAvPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIGNhblJlYXNzaWduICYmICFfaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8VGlja2V0UmVhc3NpZ25cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkfVxuICAgICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MucmVhc3NpZ259XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWR9XG4gICAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5hc3NpZ259XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5PcmRlckxpc3RUaWNrZXRzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG9yZGVyX2lkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIG51bWJlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICB0b3RhbF9yZWZ1bmRlZF9hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgdGlja2V0X3R5cGU6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgaXNfYWN0aXZlOiBQcm9wVHlwZXMuYm9vbFxuICB9KSxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZ1bmRSZXF1ZXN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWxlY3RUb1JlZnVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IFRhYnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiO1xuaW1wb3J0IFRhYiBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJcIjtcbmltcG9ydCBPcmRlckxpc3RJdGVtIGZyb20gXCIuL09yZGVyTGlzdEl0ZW1cIjtcbmltcG9ydCBPcmRlclN1bW1hcnkgZnJvbSBcIi4uL09yZGVyU3VtbWFyeVwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RzTW9kYWwgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IGlzVGlja2V0UmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlZnVuZERldGFpbHMgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHNcIjtcblxuY29uc3QgVGFiUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlID0gKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbcmVmdW5kUmVxdWVzdGVkLCBzZXRSZWZ1bmRSZXF1ZXN0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZ1bmREZXRhaWxzT3Blbiwgc2V0UmVmdW5kRGV0YWlsc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHRpY2tldHNUb1JlZnVuZC5sZW5ndGggPT09IDApIHtcbiAgICAgIHNldFJlZnVuZFJlcXVlc3RlZCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IHVuc2VsZWN0UmVmdW5kVGlja2V0cyA9ICh0aWNrZXQpID0+IHtcbiAgICBjb25zdCBmaWx0ZXJTZWxlY3RlZCA9IHRpY2tldHNUb1JlZnVuZC5maWx0ZXIoKHQpID0+IHQuaWQgIT09IHRpY2tldC5pZCk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKGZpbHRlclNlbGVjdGVkKTtcbiAgfTtcbiAgY29uc3Qgc2VsZWN0VG9SZWZ1bmQgPSAoZSwgdGlja2V0KSA9PiB7XG4gICAgY29uc3QgeyBjaGVja2VkIH0gPSBlLnRhcmdldDtcbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgY29uc3Qgc2VsZWN0ZWRUaWNrZXQgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAgICAgKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZFxuICAgICAgKTtcbiAgICAgIHNldFRpY2tldHNUb1JlZnVuZChbLi4udGlja2V0c1RvUmVmdW5kLCBzZWxlY3RlZFRpY2tldF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHModGlja2V0KTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGNhbmNlbFRpY2tldHNUb1JlZnVuZCA9ICgpID0+IHtcbiAgICBzZXRSZWZ1bmRSZXF1ZXN0ZWQoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3Qgc2VsZWN0QWxsVGlja2V0cyA9ICgpID0+IHtcbiAgICBjb25zdCByZWZ1bmRhYmxlVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maWx0ZXIoXG4gICAgICAodGlja2V0KSA9PiBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KSA9PT0gdHJ1ZVxuICAgICk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKHJlZnVuZGFibGVUaWNrZXRzKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFJlZnVuZFJlcXVlc3RlZChmYWxzZSk7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgIG1lc3NhZ2U9e3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgICBjb2xvcj1cIiNmZjk4MDBcIlxuICAgICAgICBkYXRhVGVzdElkPVwibW9yZS1kZXRhaWxzLWxhYmVsXCJcbiAgICAgIC8+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIHRleHRDb2xvcj1cIiMwMDBcIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgICAgVGFiSW5kaWNhdG9yUHJvcHM9e3tcbiAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgIGJhY2tncm91bmQ6IFwiIzAwMFwiXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMudGlja2V0c1wiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnN1bW1hcnlcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgIDwvVGFicz5cbiAgICAgIDwvQm94PlxuICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MH0+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9UYWJQYW5lbD5cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXsxfT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHJlZnVuZFJlcXVlc3RlZD17cmVmdW5kUmVxdWVzdGVkfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZFJlcXVlc3RlZCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAgICA8c3Bhbj57dChcInRpY2tldF9zdGF0dXMuc2VsZWN0X3RpY2tldF9yZWZ1bmRcIil9PC9zcGFuPlxuICAgICAgICAgIDxTdGFja1xuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwiZmxleC1zdGFydFwiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgICAgc2l6ZT1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZEJ1dHRvbnN9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbFRpY2tldHN9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfYWxsXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICAgIHNpemU9XCJtZWRpdW1cIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRCdXR0b25zfVxuICAgICAgICAgICAgICBvbkNsaWNrPXtjYW5jZWxUaWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zZWxlY3RfY2FuY2VsXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkXG4gICAgICAgIHBhZGRpbmc9ezF9XG4gICAgICAgIGl0ZW1cbiAgICAgICAgbWQ9ezd9XG4gICAgICAgIG9yZGVyPXt7IG1kOiAxIH19XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwiZGVza3RvcC1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICByZWZ1bmRSZXF1ZXN0ZWQ9e3JlZnVuZFJlcXVlc3RlZH1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIHBhZGRpbmc9ezF9IGl0ZW0gbWQ9ezV9IG9yZGVyPXt7IG1kOiAxIH19PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgcmVmdW5kUmVxdWVzdGVkPXtyZWZ1bmRSZXF1ZXN0ZWR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3Blbih0cnVlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxSZWZ1bmRSZXF1ZXN0c01vZGFsXG4gICAgICAgIHRpY2tldHM9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0U3VibWl0UmVxdWVzdChmYWxzZSl9XG4gICAgICAvPlxuICAgICAgPFJlZnVuZERldGFpbHNcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgIG5leHQ6IHRydWVcbiAgICAgIH0pXG4gICAgKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIHN4PXt7XG4gICAgICAgICAgcGFkZGluZzoge1xuICAgICAgICAgICAgeHM6IDIsXG4gICAgICAgICAgICBtZDogMSxcbiAgICAgICAgICAgIGxnOiAwXG4gICAgICAgICAgfVxuICAgICAgICB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItdGlja2V0LWluZm8tY29udGFpbmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17b3JkZXIubnVtYmVyfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2lzTW9iaWxlICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzeD17eyBwYWRkaW5nOiAwIH19XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5ibGFja0J1dHRvbn1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vYmlsZVZpZXdhYmxlKCFpc01vYmlsZVZpZXdhYmxlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNNb2JpbGVWaWV3YWJsZVxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmhpZGVfdGlja2V0c1wiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEdyaWRcbiAgICAgICAga2V5PXtvcmRlci5pZH1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHJvd1NwYWNpbmc9ezF9XG4gICAgICAgIGNvbHVtblNwYWNpbmc9e3sgeHM6IDEsIHNtOiAyLCBtZDogMyB9fVxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0gJHtcbiAgICAgICAgICBpc01vYmlsZSAmJiAhaXNNb2JpbGVWaWV3YWJsZSA/IHN0eWxlcy5kaXNwbGF5X25vbmUgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgICBzeD17e1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHtcbiAgICAgICAgICAgIG1kOiBcInJvd1wiLFxuICAgICAgICAgICAgbGc6IFwicm93XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDAsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlXG4gICAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9eyEhZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcbmltcG9ydCB7IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRGV0YWlscyA9ICh7IHRpY2tldHMsIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHJlcXVlc3RlZFRpY2tldHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHModGlja2V0cyksXG4gICAgW3RpY2tldHNdXG4gICk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIHtyZXF1ZXN0ZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAga2V5PXtgcmVmdW5kX3JlcV8ke3RpY2tldD8uaWR9YH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICByZWZ1bmREZXRhaWxzXG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuUmVmdW5kRGV0YWlscy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRGV0YWlscztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRGVsZXRlT3V0bGluZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRGVsZXRlT3V0bGluZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgUmVmdW5kU3RhdHVzIGZyb20gXCIuL1JlZnVuZFN0YXR1c1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCA9ICh7IHRpY2tldCwgb25SZW1vdmUsIHJlZnVuZERldGFpbHMgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRUaWNrZXRCb3hDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0ZWQtdGlja2V0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEdyaWQgeHM9ezEyfSBwYWRkaW5nPXsyfSBpdGVtIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCI+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgICB9fVxuICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgID5cbiAgICAgICAgICA8aDQ+e3RpY2tldC50aWNrZXRfdHlwZT8ubmFtZX08L2g0PlxuICAgICAgICAgIHshcmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgICAgICA8RGVsZXRlT3V0bGluZUljb25cbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVtb3ZlLWJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRlbGV0ZUljb259XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uUmVtb3ZlKHRpY2tldCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCB4cz17MTJ9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHQgdGV4dD17dGlja2V0Lm51bWJlcn0gaGlkZUNvcHkgLz5cbiAgICAgICAgPC9zcGFuPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17MTJ9IHBhZGRpbmc9ezJ9IGl0ZW0+XG4gICAgICAgICAgPFJlZnVuZFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICA8L0dyaWQ+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9uUmVtb3ZlOiBQcm9wVHlwZXMuZnVuYyxcbiAgcmVmdW5kRGV0YWlsczogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RlZFRpY2tldDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHN0YXR1c0NvbG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvcih0aWNrZXQpLFxuICAgIFt0aWNrZXRdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPEJ1dHRvblxuICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHJlZnVuZCBzdGF0dXMgbGFiZWxcIlxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXNbc3RhdHVzQ29sb3JdfWB9XG4gICAgPlxuICAgICAge3QoYHRpY2tldF9zdGF0dXMucmVmdW5kX3JlcXVlc3RfJHtzdGF0dXNDb2xvcn1gKX1cbiAgICA8L0J1dHRvbj5cbiAgKTtcbn07XG5cblJlZnVuZFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdHNNb2RhbCA9ICh7XG4gIHRpY2tldHMsXG4gIG9wZW4sXG4gIG9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzLFxuICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSxcbiAgb25DbG9zZVNsaWRlclxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzIH0pKS50aGVuKChyZXMpID0+IHtcbiAgICAgIGRpc3BhdGNoKHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQocmVzKSk7IC8vIHJldHVybmluZyB3aGljaCB0aWNrZXRzIHdlcmUgc3VjY2Vzc2Z1bFxuICAgICAgaWYgKHJlcz8ubGVuZ3RoID09PSB0aWNrZXRzLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVFdPKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyPnt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NhbmNlbFwiKX08L2gyPlxuICAgICAge2Vycm9yTXNnICYmIChcbiAgICAgICAgPEVycm9yTGFiZWxcbiAgICAgICAgICBjbGFzc05hbWVzPXtzdHlsZXMucmVmdW5kRXJyb3JNc2d9XG4gICAgICAgICAgY29sb3I9XCIjRkYwMDAwXCJcbiAgICAgICAgICBkYXRhVGVzdElkPVwiZmFpbGVkLXJlZnVuZC1tZXNzYWdlXCJcbiAgICAgICAgICBtZXNzYWdlPXtlcnJvck1zZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Qm94PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBvblJlbW92ZT17b25SZW1vdmVTZWxlY3RlZFJlZnVuZFRpY2tldHN9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc30+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNhbmNlbC1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFR3byA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICB9XG4gIH07XG4gIHJldHVybiAoXG4gICAgPFN0eWxlZEVuZ2luZVByb3ZpZGVyIGluamVjdEZpcnN0PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVmdW5kLXJlcXVlc3RzXCJcbiAgICAgICAgb3Blbj17b3Blbn1cbiAgICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICAgIHRpdGxlPXt0KFwib3JkZXJfc3VtbWFyeS5yZXF1ZXN0X3JlZnVuZFwiKX1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1tb2RhbFwiXG4gICAgICA+XG4gICAgICAgIHtyZW5kZXJTdGVwcygpfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdHNNb2RhbC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvblJlbW92ZVNlbGVjdGVkUmVmdW5kVGlja2V0czogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEljb25CdXR0b24sIFR5cG9ncmFwaHksIERyYXdlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBDbG9zZSBhcyBDbG9zZUljb24gfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSaWdodERyYXdlciA9ICh7IGlkLCB0aXRsZSwgY2hpbGRyZW4sIG9wZW4sIG9uQ2xvc2UsIGNsYXNzTmFtZSB9KSA9PiAoXG4gIDxEcmF3ZXJcbiAgICBpZD17aWR9XG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLndyYXBwZXJ9ICR7Y2xhc3NOYW1lfWB9XG4gID5cbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8SWNvbkJ1dHRvblxuICAgICAgICBkYXRhLXRlc3RpZD1cImNsb3NlLWRyYXdlclwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICAge2NoaWxkcmVufVxuICA8L0RyYXdlcj5cbik7XG5cblJpZ2h0RHJhd2VyLnByb3BUeXBlcyA9IHtcbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGl0bGU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5ub2RlXSksXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJpZ2h0RHJhd2VyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5cbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5cbmNvbnN0IEFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSwgc2F2ZUxhYmVsIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczoge1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiBcIlwiLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IHl1cFxuICAgICAgICAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgICAgLmVtYWlsKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKSxcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IHl1cC5zdHJpbmcodChcInZhbGlkYXRpb24udGV4dC5zdHJpbmdcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXRcbiAgfSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJiBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICB9XG4gICAgICAgIHJlcXVpcmVkXG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9yZWFzc2lnbi5wZXJzb25hbF9tZXNzYWdlXCIpfVxuICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICBtdWx0aWxpbmVcbiAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQucGVyc29uYWxfbWVzc2FnZSAmJiBmb3JtaWsuZXJyb3JzLnBlcnNvbmFsX21lc3NhZ2VcbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgIHNhdmVMYWJlbD17c2F2ZUxhYmVsIHx8IHQoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2ZVwiKX1cbiAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfcmVhc3NpZ24uY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuQXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBzYXZlTGFiZWw6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbkZvcm07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgVHlwb2dyYXBoeSwgRGl2aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBhc3NpZ25BdHRlbmRlZSxcbiAgZ2V0RXh0cmFRdWVzdGlvbnMsXG4gIGdldFRpY2tldCxcbiAgc2F2ZUV4dHJhUXVlc3Rpb25zXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgQXNzaWduRVFGb3JtIGZyb20gXCIuLi9Bc3NpZ25FUUZvcm1cIjtcbmltcG9ydCBBc3NpZ25Gb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvQXNzaWduRm9ybVwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCBDdXN0b21EaWFsb2dDb250ZXh0IGZyb20gXCIuLi9DdXN0b21EaWFsb2cvQ29udGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbdGlja2V0QXNzaWduZWQsIHNldFRpY2tldEFzc2lnbmVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyBzZXRNZXNzYWdlLCBzZXRNZXNzYWdlQ2FsbGJhY2sgfSA9IHVzZUNvbnRleHQoQ3VzdG9tRGlhbG9nQ29udGV4dCk7XG4gIGNvbnN0IHtcbiAgICBjdXJyZW50VGlja2V0OiB0aWNrZXQsXG4gICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkICYmIG9wZW4pIHtcbiAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgIH1cbiAgfSwgW3RpY2tldElkLCBvcmRlcklkLCBvcGVuXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3duZXJJZCAmJiBvcGVuKSB7XG4gICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgfVxuICB9LCBbb3duZXJJZF0pO1xuXG4gIGNvbnN0IG9uQXNzaWduVG9PdGhlciA9ICh2YWwpID0+IHtcbiAgICBjb25zdCB7IG5ld19hdHRlbmRlZV9lbWFpbCwgcGVyc29uYWxfbWVzc2FnZSB9ID0gdmFsO1xuICAgIHJldHVybiBkaXNwYXRjaChcbiAgICAgIGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UpXG4gICAgKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFRpY2tldEFzc2lnbmVkKHRydWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQXNzaWduVG9NZSA9ICgpID0+XG4gICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIHVzZXJQcm9maWxlLmVtYWlsKSkudGhlbigoKSA9PiB7XG4gICAgICBzZXRUaWNrZXRBc3NpZ25lZCh0cnVlKTtcbiAgICB9KTtcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldFRpY2tldEFzc2lnbmVkKGZhbHNlKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFRpY2tldEFzc2lnbmVkKGZhbHNlKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRNZXNzYWdlKHtcbiAgICAgICAgICB0aXRsZTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgYm9keTogdChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHNldE1lc3NhZ2VDYWxsYmFjayhvbkNsb3NlU2F2ZU1lc3NhZ2UpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgc2V0TWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBib2R5OiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWFzc2lnbkRyYXdlclwiXG4gICAgICB0aXRsZT17dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QXNzaWduQ29udGFpbmVyfVxuICAgID5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOb30+XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgd2lkdGg9ezI1MH1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8L0JveD5cbiAgICAgIHt0aWNrZXQgJiYgIXRpY2tldEFzc2lnbmVkICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFsaWduQ2VudGVyfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRUeXBlfT5cbiAgICAgICAgICAgICAge3RpY2tldD8udHlwZT8ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduQnRufVxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgb25DbGljaz17b25Bc3NpZ25Ub01lfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX21lXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiPiZuYnNwOyZuYnNwO29yJm5ic3A7Jm5ic3A7PC9EaXZpZGVyPlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hbGlnbkNlbnRlcn0+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9UaXRsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fc29tZW9uZV9lbHNlXCIpfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9Ob3RlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmVudGVyX2VtYWlsX25vdGVcIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgPEFzc2lnbkZvcm1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uQXNzaWduVG9PdGhlcn1cbiAgICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5zYXZlX2xhYmVsXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge3RpY2tldCAmJiB0aWNrZXRBc3NpZ25lZCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX3NvbWVvbmVfZWxzZVwiKX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUluZm9Ob3RlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uZW50ZXJfZW1haWxfbm90ZVwiKX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8QXNzaWduRm9ybVxuICAgICAgICAgICAgb25TdWJtaXQ9e29uQXNzaWduVG9PdGhlcn1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnNhdmVfbGFiZWxcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgICAge3RpY2tldCAmJiB0aWNrZXRBc3NpZ25lZCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWxpZ25DZW50ZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduZWRfdG9cIil9XG4gICAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAgICB7dGlja2V0Py5vd25lcj8uZW1haWx9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvTm90ZX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmNvbXBsZXRlX2luZm9cIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEFzc2lnbkVRRm9ybVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmVFUX1cbiAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5UaWNrZXRBc3NpZ24ucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldElkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcmRlcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvd25lcklkOiBQcm9wVHlwZXMubnVtYmVyLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEFzc2lnbjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgQXV0b2NvbXBsZXRlLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IENvbXBhbnlGaWVsZCA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGlzUmVxdWlyZWQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtpbnB1dFZhbHVlLCBzZXRJbnB1dFZhbHVlXSA9IFJlYWN0LnVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIHNldEZpZWxkVG91Y2hlZCwgc2V0RmllbGRWYWx1ZSB9ID0gZm9ybWlrO1xuICBjb25zdCBuYW1lID0gVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueTtcbiAgY29uc3QgdmFsdWUgPSB2YWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG4gICAgICAgIHNldE9wdGlvbnModG1wVmFsdWUgPyBbdG1wVmFsdWUsIC4uLm9wdGlvbnNdIDogb3B0aW9ucyk7XG4gICAgICAgIHNldEZpZWxkVmFsdWUobmFtZSwgdG1wVmFsdWUpO1xuICAgICAgfX1cbiAgICAgIG9uSW5wdXRDaGFuZ2U9eyhldmVudCwgbmV3SW5wdXRWYWx1ZSkgPT4ge1xuICAgICAgICBzZXRJbnB1dFZhbHVlKG5ld0lucHV0VmFsdWUpO1xuICAgICAgfX1cbiAgICAgIGZpbHRlck9wdGlvbnM9eyhvcHRpb25zLCBwYXJhbXMpID0+IHtcbiAgICAgICAgY29uc3QgeyBpbnB1dFZhbHVlIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IGZpbHRlcmVkID0gWy4uLm9wdGlvbnNdO1xuICAgICAgICAvLyBTdWdnZXN0IHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgICAgICBjb25zdCBpc0V4aXN0aW5nID0gb3B0aW9ucy5zb21lKFxuICAgICAgICAgIChvcHRpb24pID0+IGlucHV0VmFsdWUgPT09IG9wdGlvbi50aXRsZVxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICByZW5kZXJPcHRpb249eyhwcm9wcywgb3B0aW9uKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCAuLi5vcHRpb25Qcm9wcyB9ID0gcHJvcHM7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmdcbiAgICAgICAgICA8bGkga2V5PXtrZXl9IHsuLi5vcHRpb25Qcm9wc30+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICAgICAgICB7b3B0aW9uLm5hbWV9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPC9saT5cbiAgICAgICAgKTtcbiAgICAgIH19XG4gICAgLz5cbiAgKTtcbn07XG5cbkNvbXBhbnlGaWVsZC5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb21wYW55RmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUhlbHBlclRleHRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSYXdIVE1MIGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL2NvbXBvbmVudHMvcmF3LWh0bWxcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgPSAoe1xuICBkaXNjbGFpbWVyLFxuICBmb3JtaWssXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgaXNSZXF1aXJlZCA9IHRydWVcbn0pID0+IHtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57ZGlzY2xhaW1lcn08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgVGV4dEZpZWxkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgVGlja2V0RGVsZWdhdGlvbkZpZWxkcyA9ICh7IGZvcm1payB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBpZD1cImRlbGVnYXRlZF9maXJzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmZpcnN0X25hbWVcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLmRlbGVnYXRlZF9maXJzdF9uYW1lfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9maXJzdF9uYW1lKVxuICAgICAgICB9XG4gICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlZF9maXJzdF9uYW1lICYmXG4gICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgaWQ9XCJkZWxlZ2F0ZWRfbGFzdF9uYW1lXCJcbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVkX2xhc3RfbmFtZX1cbiAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgIGVycm9yPXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZWRfbGFzdF9uYW1lICYmXG4gICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlZF9sYXN0X25hbWUpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVkX2xhc3RfbmFtZSAmJlxuICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVkX2xhc3RfbmFtZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGVsZWdhdGlvbkZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZWxlZ2F0aW9uRmllbGRzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldERlbGVnYXRpb25GaWVsZHMgZnJvbSBcIi4uL1RpY2tldERlbGVnYXRpb25GaWVsZHNcIjtcbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdGlja2V0TWFuYWdlciA9IHRpY2tldD8ubWFuYWdlcjtcbiAgLyogRElTQUJMRSBERUxFR0FUSU9OIEZUTSAqL1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0aW9uID0gdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlICYmIGZhbHNlO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdGlja2V0TWFuYWdlcixcbiAgICAgIGFsbG93c0RlbGVnYXRpb24sXG4gICAgICB0cnVlLFxuICAgICAgdHJ1ZVxuICAgICksXG4gICAgdmFsaWRhdGlvblNjaGVtYTogYnVpbGRWYWxpZGF0aW9uU2NoZW1hKFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICB0cnVlLFxuICAgICAgYWxsb3dzRGVsZWdhdGlvbixcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdGlja2V0TWFuYWdlcixcbiAgICAgICAgYWxsb3dzRGVsZWdhdGlvbixcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1paywgXCJkZXRhaWxzRHJhd2VyXCIpO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIG93bmVyPXt0aWNrZXQub3duZXJ9XG4gICAgICAgIHN1bW1pdElkPXtzdW1taXQuaWR9XG4gICAgICAgIGRpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgIC8+XG5cbiAgICAgIHthbGxvd3NEZWxlZ2F0aW9uICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgdmFyaWFudD1cInN1YnRpdGxlMlwiXG4gICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmRlbGVnYXRlZFRvfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5kZWxlZ2F0ZWRfdG9cIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxUaWNrZXREZWxlZ2F0aW9uRmllbGRzIGZvcm1paz17Zm9ybWlrfSAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHtleHRyYVF1ZXN0aW9ucz8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDxCb3g+XG4gICAgICAgICAgPGg2IGNsYXNzTmFtZT17c3R5bGVzLmFkZGl0aW9uYWxEZXRhaWxzfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hZGl0aW9uYWxfZGV0YWlsc1wiKX1cbiAgICAgICAgICA8L2g2PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIgfSA9IGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgIC8+XG4gICAgICB7W1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZSwgVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdLm1hcChcbiAgICAgICAgKG5hbWUpID0+IChcbiAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIGtleT17bmFtZX1cbiAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICBsYWJlbD17dChgdGlja2V0X2RldGFpbC4ke25hbWV9YCl9XG4gICAgICAgICAgICB2YWx1ZT17dmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgICA8Q29tcGFueUZpZWxkIGZvcm1paz17Zm9ybWlrfSBzdW1taXRJZD17c3VtbWl0SWR9IGlzUmVxdWlyZWQgLz5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaW5mb05vdGV9Pnt0KFwidGlja2V0X2RldGFpbC5pbmZvX25vdGVcIil9PC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRPd25lckZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRPd25lckZpZWxkcztcbiIsImV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiXG59O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBEcmF3ZXIsIEljb25CdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgQ2xvc2UgYXMgQ2xvc2VJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb24sXG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uXG59IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0UERGLCBzYXZlVGlja2V0RGV0YWlscywgcmVzZW5kTm90aWZpY2F0aW9uIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXREZXRhaWwgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldElkLFxuICBvcmRlcklkLFxuICBvd25lcklkLFxuICBvcGVuLFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7XG4gICAgdXNlcjogeyB1c2VyUHJvZmlsZSB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgeyB0aWNrZXQsIGV4dHJhUXVlc3Rpb25zIH0gPSB1c2VHZXRUaWNrZXQoXG4gICAgdGlja2V0SWQsXG4gICAgb3JkZXJJZCxcbiAgICBvd25lcklkLFxuICAgIG9wZW5cbiAgKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3NlbnRDb25maXJtYXRpb24sIHNldFNlbnRDb25maXJtYXRpb25dID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IG9uU2F2ZSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZVRpY2tldERldGFpbHModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0U2F2ZU1lc3NhZ2Uoe1xuICAgICAgICAgIHRpdGxlOiB0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfc3VjY2Vzc1wiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogdChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogZXJyLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25DbG9zZVNhdmVNZXNzYWdlID0gKCkgPT4ge1xuICAgIHNldFNhdmVNZXNzYWdlKG51bGwpO1xuICAgIHNldFRpbWVvdXQob25DbG9zZSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICBjb25zdCBkb3dubG9hZFRpY2tldFBkZiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChnZXRUaWNrZXRQREYodGlja2V0KSk7XG4gIH07XG5cbiAgY29uc3Qgb25TZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZW5kTm90aWZpY2F0aW9uKHRpY2tldCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U2VudENvbmZpcm1hdGlvbih0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZW50Q29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICAgIH0sIE1JTExJU0VDX1RPX1NFQyAqIFRXT19JVEVNKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8RHJhd2VyXG4gICAgICAgIGlkPVwiZGV0YWlsc0RyYXdlclwiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICAgICAgTW9kYWxQcm9wcz17eyBrZWVwTW91bnRlZDogZmFsc2UgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgICAgICAgc3g9e3sgZmxvYXQ6IFwicmlnaHRcIiB9fVxuICAgICAgICAgICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAgICAgICAge3RpY2tldD8udGlja2V0X3R5cGU/Lm5hbWV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTJcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3duZXI/LmVtYWlsfVxuICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG5cbiAgICAgICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnFyQ29kZX0+XG4gICAgICAgICAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXhXaWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCJcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI1NiAyNTZcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9e3N0eWxlcy5zdGF0dXN9Pnt0KFwidGlja2V0X2RldGFpbC5zdGF0dXNcIil9PC9wPlxuICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnFyX25vdGVcIil9XG4gICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgeyFzdW1taXQ/LmlzX3ZpcnR1YWwgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPERvd25sb2FkSWNvbiBmb250U2l6ZT1cImxhcmdlXCIgLz5cbiAgICAgICAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7XG4gICAgICAgICAgICAgICAgICAgICAgc2VudENvbmZpcm1hdGlvbiA/IHN0eWxlcy5zZW50IDogXCJcIlxuICAgICAgICAgICAgICAgICAgICB9YH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZW50Q29uZmlybWF0aW9ufVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAgICAgICAgICB7c2VudENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICAgICAgICAgID8gdChcInRpY2tldF9kZXRhaWwuc2VudFwiKVxuICAgICAgICAgICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgICAgICAgIHdpZHRoPXsxNTB9XG4gICAgICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJoNFwiXG4gICAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAge3RpY2tldCAmJiAoXG4gICAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmV9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cbiAgICAgIDwvRHJhd2VyPlxuICAgICAgPEN1c3RvbURpYWxvZ1xuICAgICAgICBvcGVuPXshIXNhdmVNZXNzYWdlfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlU2F2ZU1lc3NhZ2V9XG4gICAgICAgIHRpdGxlPXtzYXZlTWVzc2FnZT8udGl0bGV9XG4gICAgICAgIGRlc2NyaXB0aW9uPXtzYXZlTWVzc2FnZT8uZGVzY3JpcHRpb259XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgUmVhc3NpZ25Gb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IFwiXCIsXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogeXVwLnN0cmluZyh0KFwidmFsaWRhdGlvbi50ZXh0LnN0cmluZ1wiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdFxuICB9KTtcblxuICByZXR1cm4gKFxuICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgPFRleHRGaWVsZFxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbmFtZT1cIm5ld19hdHRlbmRlZV9lbWFpbFwiXG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X3JlYXNzaWduLm5ld19hdHRlbmRlZV9lbWFpbFwiKX1cbiAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMubmV3X2F0dGVuZGVlX2VtYWlsfVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWwpXG4gICAgICAgIH1cbiAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsXG4gICAgICAgIH1cbiAgICAgICAgcmVxdWlyZWRcbiAgICAgIC8+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPVwicGVyc29uYWxfbWVzc2FnZVwiXG4gICAgICAgIGxhYmVsPXt0KFwidGlja2V0X3JlYXNzaWduLnBlcnNvbmFsX21lc3NhZ2VcIil9XG4gICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLnBlcnNvbmFsX21lc3NhZ2V9XG4gICAgICAgIG11bHRpbGluZVxuICAgICAgICBtaW5Sb3dzPXs0fVxuICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgZXJyb3I9e1xuICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiZcbiAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmIGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZVxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X3JlYXNzaWduLnNhdmVcIil9XG4gICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X3JlYXNzaWduLmNhbmNlbFwiKX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAvPlxuICAgIDwvZm9ybT5cbiAgKTtcbn07XG5cblJlYXNzaWduRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkZvcm07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVhc3NpZ25UaWNrZXQsIHNhdmVFeHRyYVF1ZXN0aW9ucyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmVhc3NpZ25Gb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5cbmltcG9ydCBBc3NpZ25FUUZvcm0gZnJvbSBcIi4uL0Fzc2lnbkVRRm9ybVwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCBDdXN0b21EaWFsb2cgZnJvbSBcIi4uL0N1c3RvbURpYWxvZ1wiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldFJlYXNzaWduID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3NhdmVNZXNzYWdlLCBzZXRTYXZlTWVzc2FnZV0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3RpY2tldFJlYXNzaWduZWQsIHNldFRpY2tldFJlYXNzaWduZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuXG4gIGNvbnN0IG9uUmVhc3NpZ24gPSAodmFsKSA9PiB7XG4gICAgY29uc3QgeyBuZXdfYXR0ZW5kZWVfZW1haWwsIHBlcnNvbmFsX21lc3NhZ2UgfSA9IHZhbDtcbiAgICByZXR1cm4gZGlzcGF0Y2goXG4gICAgICByZWFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgbmV3X2F0dGVuZGVlX2VtYWlsLCBwZXJzb25hbF9tZXNzYWdlKVxuICAgICkudGhlbigoKSA9PiB7XG4gICAgICBzZXRUaWNrZXRSZWFzc2lnbmVkKHRydWUpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VFUUZvcm0gPSAoKSA9PiB7XG4gICAgc2V0VGlja2V0UmVhc3NpZ25lZChmYWxzZSk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQ2xvc2VTYXZlTWVzc2FnZSA9ICgpID0+IHtcbiAgICBzZXRTYXZlTWVzc2FnZShudWxsKTtcbiAgICBzZXRUaWNrZXRSZWFzc2lnbmVkKGZhbHNlKTtcbiAgICBzZXRUaW1lb3V0KG9uQ2xvc2UsIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgY29uc3Qgb25TYXZlRVEgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVFeHRyYVF1ZXN0aW9ucyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIiksXG4gICAgICAgICAgZGVzY3JpcHRpb246IHQoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2aW5nX3N1Y2Nlc3NfZGVzY3JpcHRpb25cIilcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBzZXRTYXZlTWVzc2FnZSh7XG4gICAgICAgICAgdGl0bGU6IHQoXCJ0aWNrZXRfcmVhc3NpZ24uc2F2aW5nX2Vycm9yXCIpLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBlcnIudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCBnZXRMYWJlbHMgPSAoKSA9PiB7XG4gICAgaWYgKHRpY2tldFJlYXNzaWduZWQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRpdGxlOiB0KFwidGlja2V0X3JlYXNzaWduLnJlYXNzaWduX3RpY2tldFwiKSxcbiAgICAgICAgc3VidGl0bGU6IGAke3QoXCJ0aWNrZXRfcmVhc3NpZ24ucmVhc3NpZ25lZF90b1wiKX0gJHtcbiAgICAgICAgICB0aWNrZXQ/Lm93bmVyPy5lbWFpbFxuICAgICAgICB9YCxcbiAgICAgICAgaGVhZGVyTm90ZTogdChcInRpY2tldF9yZWFzc2lnbi5jb21wbGV0ZV9pbmZvXCIpXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0aXRsZTogdChcInRpY2tldF9yZWFzc2lnbi5yZWFzc2lnbl90aWNrZXRcIiksXG4gICAgICBzdWJ0aXRsZTogKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0KFwidGlja2V0X3JlYXNzaWduLmFzc2lnbmVkX3RvXCIpfVxuICAgICAgICAgIDxiciAvPlxuICAgICAgICAgIHt0aWNrZXQ/Lm93bmVyPy5lbWFpbH1cbiAgICAgICAgPC8+XG4gICAgICApLFxuICAgICAgaGVhZGVyTm90ZTogdChcInRpY2tldF9yZWFzc2lnbi5lbnRlcl9lbWFpbF9ub3RlXCIpXG4gICAgfTtcbiAgfTtcblxuICBjb25zdCB7IHRpdGxlLCBzdWJ0aXRsZSwgaGVhZGVyTm90ZSB9ID0gZ2V0TGFiZWxzKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFJpZ2h0RHJhd2VyXG4gICAgICAgIGlkPVwicmVhc3NpZ25EcmF3ZXJcIlxuICAgICAgICB0aXRsZT17dGl0bGV9XG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFJlYXNzaWduQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPEJveD5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg0XCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAgICAgICAgICB7c3VidGl0bGV9XG4gICAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7aGVhZGVyTm90ZX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlQ29udGFpbmVyfT5cbiAgICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge3RpY2tldD8udHlwZT8ubmFtZX1cbiAgICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgICAgICB7dGlja2V0ICYmICF0aWNrZXRSZWFzc2lnbmVkICYmIChcbiAgICAgICAgICAgICAgICA8UmVhc3NpZ25Gb3JtXG4gICAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uUmVhc3NpZ259XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHt0aWNrZXQgJiYgdGlja2V0UmVhc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICAgICAgPEFzc2lnbkVRRm9ybVxuICAgICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICAgIG9uU3VibWl0PXtvblNhdmVFUX1cbiAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9SaWdodERyYXdlcj5cbiAgICAgIDxDdXN0b21EaWFsb2dcbiAgICAgICAgb3Blbj17ISFzYXZlTWVzc2FnZX1cbiAgICAgICAgb25DbG9zZT17b25DbG9zZVNhdmVNZXNzYWdlfVxuICAgICAgICB0aXRsZT17c2F2ZU1lc3NhZ2U/LnRpdGxlfVxuICAgICAgICBkZXNjcmlwdGlvbj17c2F2ZU1lc3NhZ2U/LmRlc2NyaXB0aW9ufVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblRpY2tldFJlYXNzaWduLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRSZWFzc2lnbjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENvbnRhaW5lciwgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldFN0YXR1cyA9ICh7IHRpY2tldCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgaXNBY3RpdmUgPSB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCByZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LmZpbmQoXG4gICAgKHIpID0+IHIuc3RhdHVzID09PSBcIlJlcXVlc3RlZFwiXG4gICk7XG4gIGNvbnN0IHsgaXNJbmNvbXBsZXRlLCBpc1VuYXNzaWduZWQsIGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICByZXR1cm4gKFxuICAgIDxDb250YWluZXIgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0U3RhdHVzQ29udGFpbmVyfT5cbiAgICAgIHtpc0FjdGl2ZSA/IChcbiAgICAgICAgPD5cbiAgICAgICAgICB7cmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgcmVmdW5kIHJlcXVlc3RlZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblJlZnVuZFJlcXVlc3RlZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3JlZnVuZF9yZXF1ZXN0ZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0luY29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgaW5jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNVbmFzc2lnbmVkICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHVuYXNzaWduZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25Db21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY2FuY2VsbGVkXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25DYW5jZWxsZWR9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY2FuY2VsbGVkXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRSZXF1ZXN0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0U3RhdHVzO1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IGdldEV4dHJhUXVlc3Rpb25zLCBnZXRUaWNrZXQgfSBmcm9tIFwiLi4vYWN0aW9uc1wiO1xuXG5jb25zdCB1c2VHZXRUaWNrZXQgPSAodGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bikgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0SWQgJiYgb3JkZXJJZCAmJiBvd25lcklkICYmIHJ1bikge1xuICAgICAgZGlzcGF0Y2goZ2V0VGlja2V0KHRpY2tldElkLCBvcmRlcklkKSk7XG4gICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bl0pO1xuXG4gIGNvbnN0IHsgZXh0cmFRdWVzdGlvbnMsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZVxuICApO1xuXG4gIHJldHVybiB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUdldFRpY2tldDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuXG4vLyBTbW9vdGggc2Nyb2xsaW5nIGZ1bmN0aW9uIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuZnVuY3Rpb24gc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCB0YXJnZXRTY3JvbGxUb3AsIGR1cmF0aW9uKSB7XG4gIGNvbnN0IHN0YXJ0U2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgY29uc3QgZGlzdGFuY2UgPSB0YXJnZXRTY3JvbGxUb3AgLSBzdGFydFNjcm9sbFRvcDtcbiAgbGV0IHN0YXJ0VGltZSA9IG51bGw7XG5cbiAgZnVuY3Rpb24gYW5pbWF0aW9uU3RlcCh0aW1lc3RhbXApIHtcbiAgICBpZiAoIXN0YXJ0VGltZSkgc3RhcnRUaW1lID0gdGltZXN0YW1wO1xuICAgIGNvbnN0IGVsYXBzZWQgPSB0aW1lc3RhbXAgLSBzdGFydFRpbWU7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5taW4oZWxhcHNlZCAvIGR1cmF0aW9uLCAxKTtcbiAgICBjb25zdCBlYXNlSW5PdXRRdWFkID1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICBwcm9ncmVzcyA8IDAuNSA/IDIgKiBwcm9ncmVzcyAqKiAyIDogMSAtICgtMiAqIHByb2dyZXNzICsgMikgKiogMiAvIDI7XG5cbiAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gc3RhcnRTY3JvbGxUb3AgKyBkaXN0YW5jZSAqIGVhc2VJbk91dFF1YWQ7XG5cbiAgICBpZiAoZWxhcHNlZCA8IGR1cmF0aW9uKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xufVxuXG5jb25zdCB1c2VTY3JvbGxUb0Vycm9yID0gKGZvcm1paywgY29udGFpbmVySWQpID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIGlzU3VibWl0dGluZyB9ID0gZm9ybWlrO1xuICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgY29uc3QgZXJyb3JDb3VudCA9IGVycm9yQXJyYXkubGVuZ3RoO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gc29ydCBlbGVtZW50cyBieSBwb3NpdGlvblxuICAgIGNvbnN0IGVsZW1lbnRzU29ydGVkID0gZXJyb3JBcnJheVxuICAgICAgLnJlZHVjZSgocmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbbmFtZT0nJHtlcnJvcn0nXWApO1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY29uc3QgZWxSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmVzdWx0LnB1c2goeyBlbGVtZW50LCBlcnJvciwgdG9wOiBlbFJlY3QudG9wIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LCBbXSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRvcCAtIGIudG9wKTtcblxuICAgIGlmIChlbGVtZW50c1NvcnRlZC5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50XG4gICAgICAuZ2V0RWxlbWVudEJ5SWQoY29udGFpbmVySWQpXG4gICAgICAucXVlcnlTZWxlY3RvcihcIi5NdWlEcmF3ZXItcGFwZXJcIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gZWxlbWVudHNTb3J0ZWRbMF07XG5cbiAgICBpZiAoY29udGFpbmVyPy5jb250YWlucyh0YXJnZXQuZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gICAgICBjb25zdCBlbGVtT2ZmZXN0ID0gMTAwO1xuICAgICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxuICAgICAgICB0YXJnZXQudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIC0gZWxlbU9mZmVzdDtcblxuICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgcG9zaXRpb25cbiAgICAgIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgc2Nyb2xsVG9wLCBhbmltYXRpb25EdXJhdGlvbik7IC8vIDUwMG1zIGR1cmF0aW9uXG4gICAgfVxuICB9LCBbaXNTdWJtaXR0aW5nXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JvbGxUb0Vycm9yO1xuIiwiaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgICh0aWNrZXQ/LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fZGVsZWdhdGUgfHxcbiAgICAgIHRpY2tldD8ucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlKSAmJlxuICAgIHN0YXR1cyAhPT0gU1RBVFVTX1VOQVNTSUdORUQgJiZcbiAgICAhdGlja2V0Lm93bmVyPy5tYW5hZ2VyPy5pZCAmJlxuICAgICF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcbiAgY29uc3QgY2FuUmVhc3NpZ24gPVxuICAgICFpc1VuYXNzaWduZWQgJiZcbiAgICB0aWNrZXQudGlja2V0X3R5cGU/LmFsbG93c190b19yZWFzc2lnbiAmJlxuICAgICghdGlja2V0LnByb21vX2NvZGUgfHwgdGlja2V0LnByb21vX2NvZGU/LmFsbG93c190b19yZWFzc2lnbik7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBjYW5SZWFzc2lnblxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFNUQVJUX0xPQURJTkcsXG4gIFNUT1BfTE9BRElORyxcbiAgUkVTRVRfTE9BRElOR1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1RBVEUsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VULFxuICBBU1NJR05fVElDS0VULFxuICBSRVNFVF9BUElfRVJST1IsXG4gIFNFVF9BUElfRVJST1IsXG4gIFJFU0VUX1RJQ0tFVFxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGlzT3JkZXJMb2FkaW5nOiBmYWxzZSxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDEsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDEsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IDAsXG4gIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IDAsXG4gIGFwaUVycm9yOiBudWxsXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFNUQVJUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogdHJ1ZSB9O1xuICAgIGNhc2UgU1RPUF9MT0FESU5HOlxuICAgIGNhc2UgUkVTRVRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiBmYWxzZSB9O1xuICAgIGNhc2UgUkVTRVRfQVBJX0VSUk9SOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiBudWxsIH07XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBHRVRfVVNFUl9PUkRFUlM6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOlxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4ubWVtYmVyT3JkZXJzLCAuLi5kYXRhXSxcbiAgICAgICAgb3JkZXJzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFM6IHtcbiAgICAgIGNvbnN0IHsgdXNlclRpY2tldHMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXNlclRpY2tldHM6XG4gICAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi51c2VyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHVzZXJfdGlja2V0c190b3RhbDogdG90YWwsXG4gICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5mb3JtZXJPcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czpcbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV0sXG4gICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgIHRpY2tldHNfdG90YWw6IHRvdGFsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSBvcmRlci5tZW1iZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiB7XG4gICAgICAgICAgaWYgKHRpY2tldC5pZCA9PT0gdGlja2V0RGF0YS5pZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2tldERhdGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiB0aWNrZXQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzIH07XG4gICAgfVxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gb3JkZXIubWVtYmVyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgIGlmICh0aWNrZXQuaWQgPT09IHRpY2tldERhdGEuaWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aWNrZXREYXRhO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGlja2V0O1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUubG9nKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0OjpnZXRBY2Nlc3NUb2tlblNhZmVseSBlcnJvcjogXCIsIGUpO1xuICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgIGluaXRMb2dPdXQoKTtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgfVxufTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiU1RBVFVTX0NPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIlNUQVRVU19JTkNPTVBMRVRFXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BFTkRJTkcgPSBcIlNUQVRVU19QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0NBTkNFTExFRCA9IFwiU1RBVFVTX0NBTkNFTExFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19FUlJPUiA9IFwiU1RBVFVTX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1BST0NFU1NJTkcgPSBcIlNUQVRVU19QUk9DRVNTSU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1VOQVNTSUdORUQgPSBcIlNUQVRVU19VTkFTU0lHTkVEXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkcgPSBcIlNUQVRVU19SRUZVTkRfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRUQgPSBcIlNUQVRVU19SRUZVTkRfQVBQUk9WRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEID0gXCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDID0gXCJSZXF1ZXN0ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDID0gXCJBcHByb3ZlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMgPSBcIlJlamVjdGVkXCI7XG5cbmV4cG9ydCBjb25zdCBKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMgPSAxMDAwMDtcblxuZXhwb3J0IGNvbnN0IE9ORV9JVEVNID0gMTtcbmV4cG9ydCBjb25zdCBUV09fSVRFTSA9IDI7XG5leHBvcnQgY29uc3QgRklWRV9JVEVNID0gNTtcbmV4cG9ydCBjb25zdCBTSVhfSVRFTSA9IDY7XG5cbmV4cG9ydCBjb25zdCBQUk9NSVNFX0JBVENIX0xJTUlUID0gMTA7XG5leHBvcnQgY29uc3QgRklGVFlfUEVSX1BBR0UgPSA1MDtcblxuZXhwb3J0IGNvbnN0IEVSUk9SX0NPREVTID0ge1xuICA0MDE6IDQwMSxcbiAgNDAzOiA0MDEsXG4gIDQxMjogNDAxLFxuICA1MDA6IDUwMFxufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIExBU1RfSE9VUl9PRl8yNF9IT1VSLFxuICBMQVNUX01JTlVURV9PRl9IT1VSLFxuICBNSUxMSVNFQ19UT19TRUNcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBmb3JtYXRDdXJyZW5jeSA9ICh2YWx1ZSwgeyBsb2NhbGUgPSBcImVuLVVTXCIsIC4uLm9wdGlvbnMgfSkgPT4ge1xuICBjb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBjdXJyZW5jeTogXCJVU0RcIixcbiAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IDIsXG4gICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiAyXG4gIH07XG5cbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuTnVtYmVyRm9ybWF0KGxvY2FsZSwge1xuICAgIHN0eWxlOiBcImN1cnJlbmN5XCIsXG4gICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcblxuICByZXR1cm4gZm9ybWF0dGVyLmZvcm1hdCh2YWx1ZSk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rm9ybWF0dGVkRGF0ZSA9IChkYXRldGltZSwgdGltZVpvbmUpID0+IHtcbiAgaWYgKHRpbWVab25lKVxuICAgIHJldHVybiBtb21lbnRcbiAgICAgIC50eihkYXRldGltZSAqIE1JTExJU0VDX1RPX1NFQywgdGltZVpvbmUpXG4gICAgICAuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcblxuICByZXR1cm4gbW9tZW50LnVuaXgoZGF0ZXRpbWUpLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlT3JkZXJUb3RhbHMgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgaWYgKCFvcmRlciB8fCAhc3VtbWl0KSByZXR1cm4ge307XG4gIGNvbnN0IHRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cztcbiAgaWYgKCF0aWNrZXRzKSByZXR1cm4ge307XG5cbiAgY29uc3QgeyByZWZ1bmRlZF9hbW91bnQsIGRpc2NvdW50X2Ftb3VudCwgdGF4ZXNfYW1vdW50LCBhbW91bnQgfSA9IG9yZGVyO1xuICBjb25zdCB7IHRpY2tldF90eXBlcyB9ID0gc3VtbWl0O1xuXG4gIGNvbnN0IHRpY2tldFN1bW1hcnkgPSBbXTtcbiAgbGV0IHB1cmNoYXNlVGlja2V0VG90YWwgPSAwO1xuXG4gIGNvbnN0IGN1cnJlbmN5T2JqZWN0ID0geyBjdXJyZW5jeTogb3JkZXIuY3VycmVuY3kgfTtcblxuICBPYmplY3Qua2V5cyhvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUpLm1hcCgodGlja2V0KSA9PiB7XG4gICAgY29uc3QgdGlja2V0VHlwZSA9IHRpY2tldF90eXBlcz8uZmluZCgodHQpID0+IHR0Lm5hbWUgPT09IHRpY2tldCk7XG4gICAgaWYgKCF0aWNrZXRUeXBlKSByZXR1cm4gbnVsbDtcbiAgICB0aWNrZXRTdW1tYXJ5LnB1c2goe1xuICAgICAgdGlja2V0X3R5cGVfaWQ6IHRpY2tldFR5cGUuaWQsXG4gICAgICB0aWNrZXRfdHlwZTogdGlja2V0VHlwZSxcbiAgICAgIG5hbWU6IHRpY2tldCxcbiAgICAgIHF0eTogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF1cbiAgICB9KTtcbiAgICBwdXJjaGFzZVRpY2tldFRvdGFsICs9XG4gICAgICB0aWNrZXRUeXBlLmNvc3QgKiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XTtcblxuICAgIHJldHVybiB0aWNrZXRTdW1tYXJ5O1xuICB9KTtcblxuICBjb25zdCBwdXJjaGFzZVRvdGFsID0gZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUaWNrZXRUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIGNvbnN0IGRpc2NvdW50VG90YWwgPSBmb3JtYXRDdXJyZW5jeShkaXNjb3VudF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgcmVmdW5kVG90YWwgPSBmb3JtYXRDdXJyZW5jeShyZWZ1bmRlZF9hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgdGF4ZXNUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHRheGVzX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCBhbW91bnRUb3RhbCA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvcmRlciwgXCJhbW91bnRcIilcbiAgICA/IGZvcm1hdEN1cnJlbmN5KGFtb3VudCwgY3VycmVuY3lPYmplY3QpXG4gICAgOiBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgcmV0dXJuIHtcbiAgICBkaXNjb3VudFRvdGFsLFxuICAgIHJlZnVuZFRvdGFsLFxuICAgIHRheGVzVG90YWwsXG4gICAgYW1vdW50VG90YWwsXG4gICAgdGlja2V0U3VtbWFyeVxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldE9yZGVyVGlja2V0cyA9IChtZW1iZXJPcmRlcnMsIG9yZGVySWQpID0+IHtcbiAgY29uc3Qgb3JkZXJzID0gbWVtYmVyT3JkZXJzLmZpbHRlcigobykgPT4gby5pZCA9PT0gb3JkZXJJZCk7XG4gIHJldHVybiBvcmRlcnNbMF0/Lm1lbWJlclRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0RXBvY2hMb3dlclVwcGVySW5TZWNvbmRzID0gKHRzKSA9PiB7XG4gIGNvbnN0IGxvd2VyID0gdHMuc2V0SG91cnMoMCwgMCwgMCwgMCkgLyBNSUxMSVNFQ19UT19TRUM7XG4gIGNvbnN0IHVwcGVyID1cbiAgICB0cy5zZXRIb3VycyhMQVNUX0hPVVJfT0ZfMjRfSE9VUiwgTEFTVF9NSU5VVEVfT0ZfSE9VUiwgMCwgMCkgL1xuICAgIE1JTExJU0VDX1RPX1NFQztcbiAgcmV0dXJuIHtcbiAgICBsb3dlcixcbiAgICB1cHBlclxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRDdXJyZW50VGltZSA9ICgpID0+XG4gIE1hdGgucm91bmQoK25ldyBEYXRlKCkgLyBNSUxMSVNFQ19UT19TRUMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Tm93ID0gKCkgPT4gKGRpc3BhdGNoLCBnZXRTdGF0ZSkgPT4ge1xuICBjb25zdCB7IHRpbWVyU3RhdGUgfSA9IGdldFN0YXRlKCk7XG4gIHJldHVybiB0aW1lclN0YXRlPy5ub3dVdGMgPT0gbnVsbCA/IGRlZmF1bHRDdXJyZW50VGltZSgpIDogdGltZXJTdGF0ZT8ubm93VXRjO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZU5vdyA9ICgpID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHJldHVybiBkaXNwYXRjaChnZXROb3coKSk7XG59O1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIE9ORV9EQVkgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFBhc3QgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHJlYXNzaWduX2RhdGUgPVxuICAgIHN1bW1pdD8ucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcblxuICByZXR1cm4gbm93ID4gcmVhc3NpZ25fZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1N1bW1pdFN0YXJ0ZWQgPSAoc3VtbWl0LCBub3cpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQuc3RhcnRfZGF0ZSA8IG5vdztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXREYXlzRGlmZiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCBzdGFydERheSA9IG1vbWVudChzdW1taXQuc3RhcnRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBlbmREYXkgPSBtb21lbnQoc3VtbWl0LmVuZF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXMgPSBlbmREYXk/LmRpZmYoc3RhcnREYXksIFwiZGF5c1wiKTtcbiAgcmV0dXJuIHtcbiAgICBzdGFydERheSxcbiAgICBlbmREYXksXG4gICAgZGF5c1xuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3QgeyBzdGFydERheSwgZW5kRGF5LCBkYXlzIH0gPSBnZXRTdW1taXREYXlzRGlmZihzdW1taXQpO1xuICBpZiAoIXN0YXJ0RGF5IHx8ICFlbmREYXkpIHJldHVybiBudWxsO1xuICBsZXQgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGxldCBmb3JtYXRFbmREYXRlID0gXCJNTU1NIERELCBZWVlZXCI7XG4gIGlmIChzdGFydERheS55ZWFyKCkgPT09IGVuZERheS55ZWFyKCkpIGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERFwiO1xuICBpZiAoc3RhcnREYXkubW9udGgoKSA9PT0gZW5kRGF5Lm1vbnRoKCkpIGZvcm1hdEVuZERhdGUgPSBcIkRELCBZWVlZXCI7XG5cbiAgY29uc3Qgc3RhcnREYXRlID0gc3RhcnREYXkuZm9ybWF0KGZvcm1hdFN0YXJ0RGF0ZSk7XG4gIGNvbnN0IGVuZERhdGUgPSBlbmREYXkuZm9ybWF0KGZvcm1hdEVuZERhdGUpO1xuXG4gIGlmIChkYXlzID4gT05FX0RBWSkgcmV0dXJuIGAke3N0YXJ0RGF0ZX0gLSAke2VuZERhdGV9YDtcblxuICByZXR1cm4gc3RhcnREYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdExvY2F0aW9uID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgbG9jYXRpb24gPSBzdW1taXQubG9jYXRpb25zPy5maW5kKFxuICAgIChsKSA9PiBsLmNsYXNzX25hbWUgPT09IFwiU3VtbWl0VmVudWVcIiAmJiBsLmlzX21haW4gPT09IHRydWVcbiAgKTtcblxuICBpZiAoIWxvY2F0aW9uKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gYCR7bG9jYXRpb24uY2l0eX0sICR7bG9jYXRpb24uY291bnRyeX1gO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdFJlYXNzaWduRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSAmJlxuICAgIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlIDwgc3VtbWl0LmVuZF9kYXRlXG4gICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgIDogc3VtbWl0LmVuZF9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVN1bW1pdERldGFpbHMgPSAoeyBzdW1taXQgfSkgPT4ge1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcblxuICBpZiAoIXN1bW1pdCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gZ2V0U3VtbWl0TG9jYXRpb24oc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkRGF0ZSA9IGdldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZFJlYXNzaWduRGF0ZSA9IG1vbWVudC50eihcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8udGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUgPSBnZXRTdW1taXREYXlzRGlmZihcbiAgICBub3csXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/Lm5hbWVcbiAgKTtcblxuICBjb25zdCBpc1Bhc3QgPSBjaGVja1N1bW1pdFBhc3Qoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1N0YXJ0ZWQgPSBjaGVja1N1bW1pdFN0YXJ0ZWQoc3VtbWl0LCBub3cpO1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9IHJlYXNzaWduRGF0ZSA+IG5vdztcblxuICByZXR1cm4ge1xuICAgIG5hbWU6IHN1bW1pdD8ubmFtZSxcbiAgICBub3csXG4gICAgbG9jYXRpb24sXG4gICAgZm9ybWF0dGVkRGF0ZSxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgZm9ybWF0dGVkUmVhc3NpZ25EYXRlLFxuICAgIGRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUsXG4gICAgaXNQYXN0LFxuICAgIGlzU3RhcnRlZCxcbiAgICBpc1JlYXNzaWduYWJsZVxuICB9O1xufTtcbiIsImltcG9ydCAqIGFzIHl1cCBmcm9tIFwieXVwXCI7XG5pbXBvcnQgaTE4biBmcm9tIFwiLi4vaTE4blwiO1xuaW1wb3J0IHtcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1VOQVNTSUdORUQsXG4gIFNUQVRVU19SRUZVTkRfUEVORElORyxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDLFxuICBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDLFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IHRpY2tldD8ucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoaXNSZXF1aXJlZCkge1xuICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgbWFuYWdlcixcbiAgaW5jbHVkZURlbGVnYXRpb24sXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGluY2x1ZGVEaXNjbGFpbWVyLFxuICBvbmx5UmVsZXZhbnQgPSBmYWxzZVxuKSA9PiB7XG4gIGNvbnN0IGluaXRpYWxWYWx1ZXMgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdIHx8IG93bmVyLmVtYWlsIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSB8fCBvd25lci5maXJzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gfHwgb3duZXIubGFzdF9uYW1lIHx8IFwiXCI7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldIHx8IG93bmVyLmNvbXBhbnk7XG4gIH1cblxuICBpZiAoaW5jbHVkZURpc2NsYWltZXIpIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdIHx8XG4gICAgICBvd25lci5kaXNjbGFpbWVyX2FjY2VwdGVkO1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEZWxlZ2F0aW9uKSB7XG4gICAgaW5pdGlhbFZhbHVlcy5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSA9XG4gICAgICBhbnN3ZXJzLmRlbGVnYXRlZF9maXJzdF9uYW1lIHx8IG1hbmFnZXI/LmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzLmRlbGVnYXRlZF9sYXN0X25hbWUgPVxuICAgICAgYW5zd2Vycy5kZWxlZ2F0ZWRfbGFzdF9uYW1lIHx8IG1hbmFnZXI/Lmxhc3RfbmFtZSB8fCBcIlwiO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIGNvbnN0IGFuc3dlciA9IGFuc3dlcnNbcXVlc3Rpb25TbHVnXTtcbiAgICBpbml0aWFsVmFsdWVzW3F1ZXN0aW9uU2x1Z10gPSBhbnN3ZXIgfHwgZ2V0VHlwZUluaXRpYWxWYWx1ZShxKTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoXG4gICAgICAgICAgcnVsZS5zdWJfcXVlc3Rpb24ubmFtZSxcbiAgICAgICAgICBydWxlLnN1Yl9xdWVzdGlvbi5pZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICAgIGNvbnN0IG1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goYW5zd2VyLCBydWxlLmFuc3dlcl92YWx1ZXMpO1xuXG4gICAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgICAgaW5pdGlhbFZhbHVlc1tzdWJRdWVzdGlvblNsdWddID1cbiAgICAgICAgICAgIHN1YkFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHJ1bGUuc3ViX3F1ZXN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaW5pdGlhbFZhbHVlcztcbn07XG5cbmV4cG9ydCBjb25zdCBidWlsZFZhbGlkYXRpb25TY2hlbWEgPSAoXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBhbGxvd3NEZWxlZ2F0aW9uLFxuICBkaXNjbGFpbWVyTWFuZGF0b3J5XG4pID0+IHtcbiAgY29uc3Qgc2NoZW1hID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgLmVtYWlsKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID0geXVwXG4gICAgICAuc3RyaW5nKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID0geXVwLmxhenkoKHZhbHVlKSA9PlxuICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiXG4gICAgICAgID8geXVwXG4gICAgICAgICAgICAub2JqZWN0KClcbiAgICAgICAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgICAgICAgICAudHlwZUVycm9yKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfZmllbGRcIikpXG4gICAgICAgIDogeXVwLnN0cmluZygpLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICApO1xuICB9XG5cbiAgaWYgKGRpc2NsYWltZXJNYW5kYXRvcnkpIHtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9IHl1cFxuICAgICAgLmJvb2woKVxuICAgICAgLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gIH1cblxuICBpZiAoYWxsb3dzRGVsZWdhdGlvbikge1xuICAgIHNjaGVtYS5kZWxlZ2F0ZWRfZmlyc3RfbmFtZSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG5cbiAgICBzY2hlbWEuZGVsZWdhdGVkX2xhc3RfbmFtZSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24ocS50eXBlLCBxLm5hbWUsIHEubWFuZGF0b3J5KTtcblxuICAgIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvbiA9IHJ1bGUuc3ViX3F1ZXN0aW9uO1xuICAgICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViUXVlc3Rpb24ubmFtZSwgc3ViUXVlc3Rpb24uaWQpO1xuICAgICAgICBzY2hlbWFbc3ViUXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKFxuICAgICAgICAgIHN1YlF1ZXN0aW9uLnR5cGUsXG4gICAgICAgICAgc3ViUXVlc3Rpb24ubmFtZSxcbiAgICAgICAgICBmYWxzZVxuICAgICAgICApXG4gICAgICAgICAgLm51bGxhYmxlKClcbiAgICAgICAgICAud2hlbihxdWVzdGlvblNsdWcsIHtcbiAgICAgICAgICAgIGlzOiAocXVlc3Rpb25BbnMpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChxdWVzdGlvbkFucywgcnVsZS5hbnN3ZXJfdmFsdWVzKTtcbiAgICAgICAgICAgICAgcmV0dXJuIG1hdGNoO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHRoZW46IChzY2gpID0+IHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKVxuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjb3B5SWNvbl9fX2xJM2VRXCI7XG52YXIgXzIgPSBcInJldmVyc2VkX19fekp6bURcIjtcbnZhciBfMyA9IFwidHJ1bmNhdGVkX19faldTblVcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX21WUGlSXCI7XG5leHBvcnQgeyBfMSBhcyBcImNvcHlJY29uXCIsIF8yIGFzIFwicmV2ZXJzZWRcIiwgXzMgYXMgXCJ0cnVuY2F0ZWRcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19Sb2ltUlwiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19vb0kwVlwiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19pbV9qaFwiO1xudmFyIF80ID0gXCJjb250YWluZXJfX19OM1k0WFwiO1xudmFyIF81ID0gXCJkYXRlUGlja2VyQ29udGFpbmVyX19fSlcybE9cIjtcbnZhciBfNiA9IFwiZGF0ZXBpY2tlckNsb3NlX19fVjlnSENcIjtcbnZhciBfNyA9IFwiZmlsdGVyQ29udGFpbmVyX19fckdwWVZcIjtcbnZhciBfOCA9IFwiZmlsdGVyRGF0ZUxhYmVsX19faWZENHBcIjtcbnZhciBfOSA9IFwiZmlsdGVySWNvbl9fX2wyMUtJXCI7XG52YXIgX2EgPSBcImZpbHRlckxhYmVsX19fX1Awd25cIjtcbnZhciBfYiA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX1ZtZEdxXCI7XG52YXIgX2MgPSBcImZpbHRlck51bUFjdGl2ZV9fX1Z1SENKXCI7XG52YXIgX2QgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19hckJ2UVwiO1xudmFyIF9lID0gXCJsYWJlbF9fX3lORnlqXCI7XG52YXIgX2YgPSBcInNob3dEYXRlUGlja2VyX19fVXBRYnBcIjtcbnZhciBfMTAgPSBcInNvcnRDb250YWluZXJfX19sUnNqVVwiO1xudmFyIF8xMSA9IFwic29ydEljb25fX19mVlY1S1wiO1xudmFyIF8xMiA9IFwic29ydExhYmVsX19fVXFMVENcIjtcbnZhciBfMTMgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fY21uQkRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNvbnRhaW5lclwiLCBfNSBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzYgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzcgYXMgXCJmaWx0ZXJDb250YWluZXJcIiwgXzggYXMgXCJmaWx0ZXJEYXRlTGFiZWxcIiwgXzkgYXMgXCJmaWx0ZXJJY29uXCIsIF9hIGFzIFwiZmlsdGVyTGFiZWxcIiwgX2IgYXMgXCJmaWx0ZXJMaXN0Q29udGFpbmVyXCIsIF9jIGFzIFwiZmlsdGVyTnVtQWN0aXZlXCIsIF9kIGFzIFwiZmlsdGVyU29ydENvbnRhaW5lclwiLCBfZSBhcyBcImxhYmVsXCIsIF9mIGFzIFwic2hvd0RhdGVQaWNrZXJcIiwgXzEwIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTEgYXMgXCJzb3J0SWNvblwiLCBfMTIgYXMgXCJzb3J0TGFiZWxcIiwgXzEzIGFzIFwic29ydExpc3RDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiY2FuY2VsQnRuX19fcURleGhcIjtcbnZhciBfMiA9IFwiZm9vdGVyX19fU043MHlcIjtcbnZhciBfMyA9IFwic2F2ZUJ0bl9fX25iVTZjXCI7XG5leHBvcnQgeyBfMSBhcyBcImNhbmNlbEJ0blwiLCBfMiBhcyBcImZvb3RlclwiLCBfMyBhcyBcInNhdmVCdG5cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiZXJyb3JMYWJlbF9fX25vY3lYXCI7XG5leHBvcnQgeyBfMSBhcyBcImVycm9yTGFiZWxcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwib3JkZXJEZXRhaWxzTW1vdW50X19fcjNrUkFcIjtcbnZhciBfMiA9IFwib3JkZXJEZXRhaWxzVGlja2V0c19fX200SWpLXCI7XG52YXIgXzMgPSBcIm9yZGVyU3VtbWFyeUJ1dHRvbl9fX3V4amh0XCI7XG52YXIgXzQgPSBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9fX19fUkJYRVwiO1xudmFyIF81ID0gXCJvcmRlclN1bW1hcnlUYWJsZV9fX1lEbnhWXCI7XG52YXIgXzYgPSBcIm9yZGVyU3VtbWFyeVdyYXBwZXJfX19Sd0lFUlwiO1xudmFyIF83ID0gXCJyZWZ1bmREaXNhYmxlZF9fX2p2cmszXCI7XG5leHBvcnQgeyBfMSBhcyBcIm9yZGVyRGV0YWlsc01tb3VudFwiLCBfMiBhcyBcIm9yZGVyRGV0YWlsc1RpY2tldHNcIiwgXzMgYXMgXCJvcmRlclN1bW1hcnlCdXR0b25cIiwgXzQgYXMgXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvXCIsIF81IGFzIFwib3JkZXJTdW1tYXJ5VGFibGVcIiwgXzYgYXMgXCJvcmRlclN1bW1hcnlXcmFwcGVyXCIsIF83IGFzIFwicmVmdW5kRGlzYWJsZWRcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYXNzaWduVGlja2V0QnV0dG9uX19fenpMc2NcIjtcbnZhciBfMiA9IFwiYXNzaWduVG9NZVRleHRfX19aUGFleFwiO1xudmFyIF8zID0gXCJhc3NpZ25lZEJ5VGV4dF9fX2JOWjd6XCI7XG52YXIgXzQgPSBcImFzc2lnbmVkVG9NZURlc19fX0dqRmtWXCI7XG52YXIgXzUgPSBcImJsYWNrQnV0dG9uX19fbDloajlcIjtcbnZhciBfNiA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfNyA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF84ID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgXzkgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgX2EgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgX2IgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgX2MgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfZCA9IFwicmVmdW5kQnV0dG9uc19fX2pEbDRIXCI7XG52YXIgX2UgPSBcInRhYkJ1dHRvbnNfX194VHlKQVwiO1xudmFyIF9mID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTAgPSBcInRpY2tldExpc3RDb250YWluZXJfX19jZm1yclwiO1xudmFyIF8xMSA9IFwidGlja2V0Tm9fX19hMmlNOVwiO1xudmFyIF8xMiA9IFwidGlja2V0T3duZXJFbWFpbF9fX1p0NE9FXCI7XG52YXIgXzEzID0gXCJ0aWNrZXRUaWNrZXRUeXBlX19fWnFfZjBcIjtcbnZhciBfMTQgPSBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25fX19IRjZJbVwiO1xudmFyIF8xNSA9IFwidmlld01vcmVCdXR0b25fX19LXzF6VFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhc3NpZ25UaWNrZXRCdXR0b25cIiwgXzIgYXMgXCJhc3NpZ25Ub01lVGV4dFwiLCBfMyBhcyBcImFzc2lnbmVkQnlUZXh0XCIsIF80IGFzIFwiYXNzaWduZWRUb01lRGVzXCIsIF81IGFzIFwiYmxhY2tCdXR0b25cIiwgXzYgYXMgXCJkaXNwbGF5X25vbmVcIiwgXzcgYXMgXCJsYWJlbFwiLCBfOCBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF85IGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF9hIGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF9iIGFzIFwib3JkZXJXcmFwcGVyXCIsIF9jIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgX2QgYXMgXCJyZWZ1bmRCdXR0b25zXCIsIF9lIGFzIFwidGFiQnV0dG9uc1wiLCBfZiBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzEwIGFzIFwidGlja2V0TGlzdENvbnRhaW5lclwiLCBfMTEgYXMgXCJ0aWNrZXROb1wiLCBfMTIgYXMgXCJ0aWNrZXRPd25lckVtYWlsXCIsIF8xMyBhcyBcInRpY2tldFRpY2tldFR5cGVcIiwgXzE0IGFzIFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvblwiLCBfMTUgYXMgXCJ2aWV3TW9yZUJ1dHRvblwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMiA9IFwiYXBwcm92ZWRfX19zeEVKV1wiO1xudmFyIF8zID0gXCJidXR0b25QaWxsX19fTGVzYXpcIjtcbnZhciBfNCA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfNSA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF82ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfNyA9IFwicGVuZGluZ19fX2FFYld3XCI7XG52YXIgXzggPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfOSA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgX2EgPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF9iID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF9jID0gXCJyZWplY3RlZF9fX05KRTRaXCI7XG52YXIgX2QgPSBcInN1Y2Nlc3NNc2dfX19IdE1zZVwiO1xudmFyIF9lID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgX2YgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc1wiLCBfMiBhcyBcImFwcHJvdmVkXCIsIF8zIGFzIFwiYnV0dG9uUGlsbFwiLCBfNCBhcyBcImNhbmNlbEJ1dHRvblwiLCBfNSBhcyBcImNvbnRpbnVlQnV0dG9uXCIsIF82IGFzIFwiZGVsZXRlSWNvblwiLCBfNyBhcyBcInBlbmRpbmdcIiwgXzggYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfOSBhcyBcInJlZnVuZFN1Y2Nlc3NmdWxcIiwgX2EgYXMgXCJyZWZ1bmRUZXh0XCIsIF9iIGFzIFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyXCIsIF9jIGFzIFwicmVqZWN0ZWRcIiwgX2QgYXMgXCJzdWNjZXNzTXNnXCIsIF9lIGFzIFwic3VjY2Vzc01zZzJcIiwgX2YgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjbG9zZUJ0bl9fX3lTUUNPXCI7XG52YXIgXzIgPSBcImhlYWRlcl9fX2ZCWEc5XCI7XG52YXIgXzMgPSBcInRpdGxlX19fdHlaZVFcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1JPSkdzXCI7XG5leHBvcnQgeyBfMSBhcyBcImNsb3NlQnRuXCIsIF8yIGFzIFwiaGVhZGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFsaWduQ2VudGVyX19fTjRFdk9cIjtcbnZhciBfMiA9IFwiYXNzaWduQnRuX19fRlFIM25cIjtcbnZhciBfMyA9IFwiYXR0ZW5kZWVDb250YWluZXJfX19kM1JHQ1wiO1xudmFyIF80ID0gXCJhdHRlbmRlZUluZm9Ob3RlX19fS2QxeTZcIjtcbnZhciBfNSA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19UOVU1elwiO1xudmFyIF82ID0gXCJvcmRlck5vX19feXFScjhcIjtcbnZhciBfNyA9IFwic3VidGl0bGVfX19TdlJsVVwiO1xudmFyIF84ID0gXCJ0aWNrZXRBc3NpZ25Db250YWluZXJfX19kSjV2V1wiO1xudmFyIF85ID0gXCJ0aWNrZXRUeXBlX19fWVh3T0pcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWxpZ25DZW50ZXJcIiwgXzIgYXMgXCJhc3NpZ25CdG5cIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb05vdGVcIiwgXzUgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNiBhcyBcIm9yZGVyTm9cIiwgXzcgYXMgXCJzdWJ0aXRsZVwiLCBfOCBhcyBcInRpY2tldEFzc2lnbkNvbnRhaW5lclwiLCBfOSBhcyBcInRpY2tldFR5cGVcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic2VudF9fX2s2V0t4XCI7XG52YXIgX2YgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEwID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzExID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMiA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInNlbnRcIiwgX2YgYXMgXCJzdGF0dXNcIiwgXzEwIGFzIFwic3VidGl0bGVcIiwgXzExIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xMiBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fY0hTTXRcIjtcbnZhciBfMiA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19Kc1BsR1wiO1xudmFyIF8zID0gXCJoZWFkZXJOb3RlX19fYjJtckNcIjtcbnZhciBfNCA9IFwic3VidGl0bGVfX19ZWDZPRFwiO1xudmFyIF81ID0gXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lcl9fX3BHOWI0XCI7XG5leHBvcnQgeyBfMSBhcyBcImF0dGVuZGVlQ29udGFpbmVyXCIsIF8yIGFzIFwiYXR0ZW5kZWVJbmZvVGl0bGVcIiwgXzMgYXMgXCJoZWFkZXJOb3RlXCIsIF80IGFzIFwic3VidGl0bGVcIiwgXzUgYXMgXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJidXR0b25DYW5jZWxsZWRfX19FcmxEWlwiO1xudmFyIF8yID0gXCJidXR0b25Db21wbGV0ZV9fX2xsV2taXCI7XG52YXIgXzMgPSBcImJ1dHRvbkluY29tcGxldGVfX19Ub2xIZ1wiO1xudmFyIF80ID0gXCJidXR0b25QaWxsX19fenEydGNcIjtcbnZhciBfNSA9IFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkX19fcFd0MzBcIjtcbnZhciBfNiA9IFwiYnV0dG9uVW5hc3NpZ25lZF9fX1lEZDhYXCI7XG52YXIgXzcgPSBcInRpY2tldFN0YXR1c0NvbnRhaW5lcl9fX3FqNmZiXCI7XG5leHBvcnQgeyBfMSBhcyBcImJ1dHRvbkNhbmNlbGxlZFwiLCBfMiBhcyBcImJ1dHRvbkNvbXBsZXRlXCIsIF8zIGFzIFwiYnV0dG9uSW5jb21wbGV0ZVwiLCBfNCBhcyBcImJ1dHRvblBpbGxcIiwgXzUgYXMgXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRcIiwgXzYgYXMgXCJidXR0b25VbmFzc2lnbmVkXCIsIF83IGFzIFwidGlja2V0U3RhdHVzQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm5vT3JkZXJzRm91bmRfX19Bb2cycFwiO1xudmFyIF8yID0gXCJzdW1taXRUaXRsZURhdGVfX19aMTlQbVwiO1xudmFyIF8zID0gXCJ0aWNrZXRzVGl0bGVUZXh0X19fVTF1SDdcIjtcbnZhciBfNCA9IFwid2lkZ2V0SGVhZGVyX19feVk1Z2VcIjtcbmV4cG9ydCB7IF8xIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMiBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMyBhcyBcInRpY2tldHNUaXRsZVRleHRcIiwgXzQgYXMgXCJ3aWRnZXRIZWFkZXJcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0RlbGV0ZU91dGxpbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFiXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVGFic1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9BZGFwdGVyRGF5anNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS94LWRhdGUtcGlja2Vycy9EYXRlUGlja2VyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkveC1kYXRlLXBpY2tlcnMvTG9jYWxpemF0aW9uUHJvdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImRheWpzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInAtbGltaXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcXItY29kZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ5dXBcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgUGVyc2lzdEdhdGUgfSBmcm9tIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4vY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHNcIjtcbmltcG9ydCBBc3NpZ25Ub01lIGZyb20gXCIuL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8TXlPcmRlcnNUaWNrZXRzXG4gICAgICAgICAgICBsb2dpblVybD17bG9naW5Vcmx9XG4gICAgICAgICAgICBzdXBwb3J0RW1haWw9e3N1cHBvcnRFbWFpbH1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgYXBpQmFzZVVybD17YXBpQmFzZVVybH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxBc3NpZ25Ub01lIC8+XG4gICAgICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICAgICA8L1BlcnNpc3RHYXRlPlxuICAgIDwvUHJvdmlkZXI+XG4gICk7XG59O1xuXG5NeU9yZGVyc015VGlja2V0c1dpZGdldC5wcm9wVHlwZXMgPSB7XG4gIGxvZ2luVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdXBwb3J0RW1haWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgYXBpQmFzZVVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXNlcjogUHJvcFR5cGVzLm9iamVjdCxcbiAgY2xpZW50SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVwZGF0ZVByb2ZpbGU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBNeU9yZGVyc015VGlja2V0c1dpZGdldDtcbiJdLCJuYW1lcyI6WyJhdXRoRXJyb3JIYW5kbGVyIiwiZ2V0UmVxdWVzdCIsImRlbGV0ZVJlcXVlc3QiLCJjcmVhdGVBY3Rpb24iLCJzdG9wTG9hZGluZyIsInN0YXJ0TG9hZGluZyIsInB1dFJlcXVlc3QiLCJwTGltaXQiLCJnZXRJZFRva2VuIiwib2JqZWN0VG9RdWVyeVN0cmluZyIsIklkVG9rZW5WZXJpZmllciIsImkxOG4iLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkZJUlNUX1BBR0UiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiUFJPTUlTRV9CQVRDSF9MSU1JVCIsIkZJRlRZX1BFUl9QQUdFIiwiRVJST1JfQ09ERVMiLCJSRVNFVF9TVEFURSIsIlJFU0VUX0ZJTFRFUiIsIlJFU0VUX0FQSV9FUlJPUiIsIlNFVF9TVEFURSIsIlNFVF9BUElfRVJST1IiLCJHRVRfVVNFUl9PUkRFUlMiLCJSRUZVTkRfT1JERVIiLCJTRVRfQUNUSVZFX09SREVSX0lEIiwiRklMVEVSX1VTRVJfT1JERVJTIiwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFMiLCJVUERBVEVfVElDS0VUIiwiUkVTRVRfVElDS0VUIiwiUkVDRUlWRV9USUNLRVQiLCJSRU1PVkVfVElDS0VUX0FUVEVOREVFIiwiQVNTSUdOX1RJQ0tFVCIsIlJFRlVORF9USUNLRVQiLCJSRVNFTkRfTk9USUZJQ0FUSU9OIiwiR0VUX1RJQ0tFVFNfQllfT1JERVIiLCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiIsIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyIsIkdFVF9USUNLRVRfREVUQUlMUyIsIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TIiwiVElDS0VUX0FUVEVOREVFX0tFWVMiLCJlbWFpbCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY29tcGFueSIsImRpc2NsYWltZXJBY2NlcHRlZCIsImV4dHJhUXVlc3Rpb25zIiwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCIsIlNUQVJUX0xPQURJTkdfSURQX1BST0ZJTEUiLCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEUiLCJVUERBVEVfSURQX1BST0ZJTEUiLCJTRVRfVVNFUiIsIlNFVF9TVU1NSVQiLCJHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMiLCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HUyIsIkNMRUFSX01BUktFVElOR19TRVRUSU5HUyIsInJlc2V0U3RhdGUiLCJkaXNwYXRjaCIsInJlc2V0RmlsdGVyIiwicmVzZXRFcnJvciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiZmlsdGVyIiwidHlwZSIsInB1c2giLCJjb25jYXQiLCJuYW1lIiwibG93ZXIiLCJ1cHBlciIsInZhbHVlIiwiZ2V0U29ydERpcmVjdGlvbiIsImRpcmVjdGlvbiIsImVycm9ySGFuZGxlck5vdGlmeSIsInBheWxvYWQiLCJjYWxsYmFjayIsImN1c3RvbUF1dGhFcnJvckhhbmRsZXIiLCJlcnIiLCJyZXMiLCJjdXN0b21GZXRjaEVycm9ySGFuZGxlciIsInJlc3BvbnNlIiwiY29kZSIsInN0YXR1cyIsIm1zZyIsInQiLCJPYmplY3QiLCJlbnRyaWVzIiwiZXJyb3JzIiwiZm9yRWFjaCIsIl9yZWYiLCJrZXkiLCJOdW1iZXIiLCJpc05hTiIsInN0YXR1c1RleHQiLCJ0aXRsZSIsImh0bWwiLCJnZXRVc2VyT3JkZXJzIiwiX3JlZjIiLCJwYWdlIiwicGVyUGFnZSIsInNvcnQiLCJnZXRTdGF0ZSIsIl9yZWYzIiwiYXBpQmFzZVVybCIsIndpZGdldFN0YXRlIiwiYWNjZXNzVG9rZW4iLCJjYXRjaCIsIlByb21pc2UiLCJyZWplY3QiLCJwYXJhbXMiLCJhY2Nlc3NfdG9rZW4iLCJvcmRlciIsInJlbGF0aW9ucyIsInBlcl9wYWdlIiwia2V5cyIsImxlbmd0aCIsImZpbHRlcnMiLCJpZCIsInRoZW4iLCJlIiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmNCIsIl9yZWY1IiwiZmllbGRzIiwiZXhwYW5kIiwiam9pbiIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwiZmluYWxseSIsIm5vcm1hbGl6ZVRpY2tldCIsImVudGl0eSIsIm5vcm1hbGl6ZWRFbnRpdHkiLCJfb2JqZWN0U3ByZWFkIiwiYXR0ZW5kZWVfY29tcGFueSIsImF0dGVuZGVlX2NvbXBhbnlfaWQiLCJyZWZyZXNoUHJvZmlsZSIsImRhdGEiLCJ0aWNrZXRPd25lciIsIl9yZWYxNCIsIl90aWNrZXRPd25lciRtYW5hZ2VyIiwidXBkYXRlUHJvZmlsZSIsInVzZXJQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE1IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMTYiLCJyZWFzc2lnblRpY2tldCIsIl9yZWYxNyIsInNhdmVFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxOCIsImdldFRpY2tldFBERiIsIl9yZWYxOSIsInF1ZXJ5U3RyaW5nIiwiYXBpVXJsIiwiZmV0Y2giLCJyZXNwb25zZVR5cGUiLCJoZWFkZXJzIiwib2siLCJibG9iIiwicGRmIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImhyZWYiLCJkb3dubG9hZCIsImRpc3BhdGNoRXZlbnQiLCJNb3VzZUV2ZW50IiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJ1c2VUcmFuc2xhdGlvbiIsIkJveCIsInVzZUZvcm1payIsIkV4dHJhUXVlc3Rpb25zRmllbGRzIiwiRm9ybUZvb3RlciIsInVzZVNjcm9sbFRvRXJyb3IiLCJSZWdpc3RyYXRpb25EaXNjbGFpbWVyIiwiYnVpbGRWYWxpZGF0aW9uU2NoZW1hIiwicGFyc2VBbnN3ZXJzIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkFzc2lnbkVRRm9ybSIsIm9uU3VibWl0Iiwib25DbG9zZSIsImZvcm1payIsImluaXRpYWxWYWx1ZXMiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5IiwidmFsdWVzIiwicmVsZXZhbnRBbnN3ZXJzIiwiZW5hYmxlUmVpbml0aWFsaXplIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImNoaWxkcmVuIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCIsImRpc2NsYWltZXIiLCJpc1JlcXVpcmVkIiwic2F2ZUxhYmVsIiwiY2FuY2VsTGFiZWwiLCJkaXNhYmxlZCIsImlzU3VibWl0dGluZyIsInByb3BUeXBlcyIsIm9iamVjdCIsImFycmF5IiwiZnVuYyIsIkNvbnRlbnRDb3B5SWNvbiIsIlRvb2x0aXAiLCJNSUxMSVNFQ19UT19TRUMiLCJzdHlsZXMiLCJkZWZhdWx0V2lkdGgiLCJDb3B5VGV4dCIsInRleHQiLCJ0b29sdGlwVGV4dCIsImhpZGVDb3B5IiwidHJ1bmNhdGVkIiwicmV2ZXJzZWQiLCJ3aWR0aCIsInRvb2x0aXBUZXh0VG9Vc2UiLCJ0b29sdGlwIiwic2V0VG9vbHRpcCIsInVzZVN0YXRlIiwiY2xhc3NOYW1lcyIsImhhbmRsZUNvcHkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzZXRUaW1lb3V0IiwiY2xhc3NOYW1lIiwid3JhcHBlciIsInN0eWxlIiwiY29weUljb24iLCJvbkNsaWNrIiwic3RyaW5nIiwiYm9vbCIsIm51bWJlciIsImNyZWF0ZUNvbnRleHQiLCJkZWZhdWx0Q29udGV4dFZhbHVlIiwic2V0TWVzc2FnZSIsInNldE1lc3NhZ2VDYWxsYmFjayIsIkN1c3RvbURpYWxvZ0NvbnRleHQiLCJEaWFsb2ciLCJEaWFsb2dDb250ZW50IiwiRGlhbG9nQ29udGVudFRleHQiLCJEaWFsb2dUaXRsZSIsIkN1c3RvbURpYWxvZyIsIm9wZW4iLCJib2R5IiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwiZGFya0NvbG9yIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwidGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJDdXN0b21UaGVtZSIsIm5vZGUiLCJDaGVja2JveCIsIkZvcm1Db250cm9sIiwiRm9ybUNvbnRyb2xMYWJlbCIsIkZvcm1Hcm91cCIsIkZvcm1IZWxwZXJUZXh0IiwiRm9ybUxhYmVsIiwiZ2V0TGFiZWwiLCJ0b1NsdWciLCJDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIiwiX3F1ZXN0aW9uJHZhbHVlcyIsInF1ZXN0aW9uIiwicXVlc3Rpb25DbGFzc05hbWUiLCJpc0Rpc2FibGVkIiwib25DaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwiZXJyb3IiLCJoZWxwZXJUZXh0IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwicmVxdWlyZWQiLCJmdWxsV2lkdGgiLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwidGFyZ2V0IiwiUmF3SFRNTCIsIkNoZWNrYm94UXVlc3Rpb25GaWVsZCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJtYXJnaW5Cb3R0b20iLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dEZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJjaGVja1Zpc2liaWxpdHkiLCJydWxlUmVzdWx0IiwidmlzaWJpbGl0eSIsInZpc2liaWxpdHlfY29uZGl0aW9uIiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsInNvbWUiLCJnZXRUeXBlSW5pdGlhbFZhbHVlIiwiZ2V0VHlwZVZhbHVlIiwiYW5zIiwic3BsaXQiLCJ0cmFuc2Zvcm1BbndlcnNGb3JtYXQiLCJkaXNjbGFpbWVyX2FjY2VwdGVkIiwiZXh0cmFfcXVlc3Rpb25zIiwiZm9ybWF0dGVkRVEiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRnJhZ21lbnQiLCJyZWFkT25seSIsImFsbG93RWRpdCIsInJlbmRlclJ1bGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZUJsdXIiLCJ0b3VjaGVkIiwiQm9vbGVhbiIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsIlN0YWNrIiwiZGF5anMiLCJBZGFwdGVyRGF5anMiLCJMb2NhbGl6YXRpb25Qcm92aWRlciIsIkRhdGVQaWNrZXIiLCJDbG9zZUljb24iLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJfRnJhZ21lbnQiLCJCYXNpY0RhdGVQaWNrZXIiLCJvbkZpbHRlciIsIm9uUmVzZXQiLCJub3ciLCJkYXRlVmFsdWUiLCJzZXREYXRlVmFsdWUiLCJvbkRhdGVDaGFuZ2UiLCJkYXRlIiwiRGF0ZSIsIiRkIiwib25SZXNldEFjdGlvbiIsImZpbHRlckRhdGVMYWJlbCIsImFsaWduSXRlbXMiLCJzeCIsInB0IiwicGIiLCJkYXRlUGlja2VyQ29udGFpbmVyIiwiZm9udFNpemUiLCJkYXRlcGlja2VyQ2xvc2UiLCJkYXRlQWRhcHRlciIsImNhbGVuZGFyRGlzcGxheSIsInVzZVJlZiIsInVzZUVmZmVjdCIsIkZpbHRlckxpc3RJY29uIiwiRmlsdGVyIiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJOdW1BY3RpdmUiLCJzZXRGaWx0ZXJOdW1BY3RpdmUiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidG9nZ2xlIiwiZmlsdGVyQ29udGFpbmVyIiwicmVmIiwiZmlsdGVySWNvbiIsImZpbHRlckxhYmVsIiwiZmlsdGVyTGlzdENvbnRhaW5lciIsImNvbnRhaW5lciIsInNob3dEYXRlUGlja2VyIiwic3R5bGVkIiwiU2VhcmNoSWNvbiIsIklucHV0QmFzZSIsIlNlYXJjaENvbnRhaW5lciIsInBvc2l0aW9uIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJjb2xvciIsImJvcmRlckJvdHRvbSIsInBhZGRpbmdMZWZ0IiwicGFkZGluZ1JpZ2h0IiwiQ2xvc2VJY29uV3JhcHBlciIsInBhZGRpbmciLCJ0b3AiLCJyaWdodCIsImN1cnNvciIsInpJbmRleCIsIlNlYXJjaCIsIm9uU2VhcmNoIiwic2hvd0Nsb3NlIiwic2V0U2hvd0Nsb3NlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsIm9uS2V5RG93biIsIm5hdGl2ZUV2ZW50IiwicmVzZXRTZWFyY2giLCJwbGFjZWhvbGRlciIsImlucHV0UHJvcHMiLCJCdXR0b24iLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwiR3JpZCIsIkZpbHRlclNvcnRTZWFyY2giLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsImZvb3RlciIsImNhbmNlbEJ0biIsInNpemUiLCJ2YXJpYW50Iiwic2F2ZUJ0biIsIkVycm9ySWNvbiIsIkVycm9yTGFiZWwiLCJkYXRhVGVzdElkIiwiZXJyb3JMYWJlbCIsIkJhY2tkcm9wIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkxvYWRlciIsImRyYXdlciIsInVzZURpc3BhdGNoIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiT05FX1BBR0VfTkVYVCIsIk15T3JkZXJzVGlja2V0cyIsIm1lc3NhZ2VDYWxsYmFjayIsIm1lbWJlck9yZGVycyIsImxvYWRpbmciLCJvcmRlcnNfY3VycmVudF9wYWdlIiwib3JkZXJzX2xhc3RfcGFnZSIsIm9yZGVyc19wZXJfcGFnZSIsInRpY2tldF9wZXJfcGFnZSIsImFwaUVycm9yIiwic3RhdGUiLCJzZXRGaWx0ZXIiLCJzZXRTb3J0IiwicmVzZXRBcGlFcnJvciIsImZldGNoRGF0YSIsImN1cnJlbnRfcGFnZSIsIndpZGdldEhlYWRlciIsIm1kIiwibGciLCJ0aWNrZXRzVGl0bGVUZXh0Iiwic3VtbWl0VGl0bGVEYXRlIiwiUHJvdmlkZXIiLCJvdmVyZmxvdyIsIm1hcmdpbiIsImRhdGFMZW5ndGgiLCJuZXh0IiwiaGFzTW9yZSIsInNjcm9sbFRocmVzaG9sZCIsInNjcm9sbGFibGVUYXJnZXQiLCJub09yZGVyc0ZvdW5kIiwiRGl2aWRlciIsImNhbGN1bGF0ZU9yZGVyVG90YWxzIiwiZm9ybWF0Q3VycmVuY3kiLCJPcmRlclN1bW1hcnlUYWJsZSIsImRpc2NvdW50VG90YWwiLCJyZWZ1bmRUb3RhbCIsInRheGVzVG90YWwiLCJhbW91bnRUb3RhbCIsInRpY2tldFN1bW1hcnkiLCJodW5kcmVkIiwib3JkZXJTdW1tYXJ5VGFibGUiLCJ0aWNrZXRUb3RhbCIsInF0eSIsInRpY2tldF90eXBlIiwiY29zdCIsImFsaWduIiwiY3VycmVuY3kiLCJjcmVhdGVkIiwiZGlzY291bnRfYW1vdW50IiwidGF4ZXNfYW1vdW50Iiwic2hhcGUiLCJ1c2VOb3ciLCJ0aWNrZXRzUmVmdW5kYWJsZSIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInJlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNUb1JlZnVuZCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsIm9uRW1haWxTdXBwb3J0Q2xpY2siLCJpc0luUmVmdW5kYWJsZVBlcmlvZCIsInJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSIsImF0TGVhc3RPbmVSZWZ1bmRhYmxlVGlja2V0IiwiaXNSZWZ1bmRhYmxlIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwiYXJyYXlPZiIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJtZW1iZXJUaWNrZXRzIiwiT3JkZXJMaXN0VGlja2V0cyIsIkFzc2lnblRvTWUiLCJ1c2VyVGlja2V0cyIsInVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UiLCJ1c2VyX3RpY2tldHNfbGFzdF9wYWdlIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJhc3NpZ25Ub01lVGV4dCIsInRpY2tldExpc3RDb250YWluZXIiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJzZWxlY3RUb1JlZnVuZCIsImlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsIkF0dGVuZGVlU3RhdHVzIiwiX3RpY2tldCRvd25lciIsIl90aWNrZXQkb3duZXIyIiwiX3RpY2tldCRvcmRlciIsIl90aWNrZXQkb3JkZXIyIiwidGlja2V0T3duZXJFbWFpbCIsImFzc2lnbmVkQnlUZXh0Iiwib3duZXJfZmlyc3RfbmFtZSIsIm93bmVyX2xhc3RfbmFtZSIsImlzX2FjdGl2ZSIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJfb3JkZXIkbWVtYmVyVGlja2V0cyIsIl9vcmRlciRtZW1iZXJUaWNrZXRzMiIsIm9uUGFnaW5hdGVDbGljayIsIml0ZW1zVG9EaXNwbGF5Iiwic2V0SXRlbXNUb0Rpc3BsYXkiLCJzbGljZWRUaWNrZXRzIiwic2xpY2UiLCJvblZpZXdNb3JlIiwidGlja2V0c190b3RhbCIsIm9uVmlld0xlc3MiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJUaWNrZXRTdGF0dXMiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0UmVhc3NpZ24iLCJUaWNrZXRBc3NpZ24iLCJtb2RhbFZpZXdzIiwiZGV0YWlsIiwicmVhc3NpZ24iLCJhc3NpZ24iLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNVbmFzc2lnbmVkIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIl90aWNrZXQkdGlja2V0X3R5cGUiLCJfdGlja2V0JG93bmVyMyIsIl9pc0V4dGVybmFsQXNzaWduZWRUaWNrZXQiLCJjYW5SZWFzc2lnbiIsIm1vZGFsT3BlbiIsInNldE1vZGFsT3BlbiIsInJlYXNzaWduRGF0ZSIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVPcGVuTW9kYWwiLCJ2aWV3Iiwib3JkZXJXcmFwcGVyIiwidGlja2V0VGlja2V0VHlwZSIsInRpY2tldE5vIiwidGlja2V0QWN0aW9uQnV0dG9ucyIsIm93bmVySWQiLCJ0b3RhbF9yZWZ1bmRlZF9hbW91bnQiLCJUYWJzIiwiVGFiIiwiUmVmdW5kUmVxdWVzdHNNb2RhbCIsImlzVGlja2V0UmVmdW5kYWJsZSIsIlJlZnVuZERldGFpbHMiLCJUYWJQYW5lbCIsInByb3BzIiwiaW5kZXgiLCJoaWRkZW4iLCJPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSIsImlzTW9iaWxlIiwiZGV0YWlsc1JlcXVpcmVkIiwic2V0VmFsdWUiLCJfIiwic2V0UmVmdW5kUmVxdWVzdGVkIiwic2V0VGlja2V0c1RvUmVmdW5kIiwic2V0U3VibWl0UmVxdWVzdCIsInJlZnVuZERldGFpbHNPcGVuIiwic2V0UmVmdW5kRGV0YWlsc09wZW4iLCJ1bnNlbGVjdFJlZnVuZFRpY2tldHMiLCJmaWx0ZXJTZWxlY3RlZCIsInNlbGVjdGVkVGlja2V0IiwiY2FuY2VsVGlja2V0c1RvUmVmdW5kIiwic2VsZWN0QWxsVGlja2V0cyIsInJlZnVuZGFibGVUaWNrZXRzIiwicmVzZXRBbGxSZWZ1bmRTdGF0dXNlcyIsIm1vcmVEZXRhaWxzIiwiYm9yZGVyQ29sb3IiLCJ0ZXh0Q29sb3IiLCJUYWJJbmRpY2F0b3JQcm9wcyIsImJhY2tncm91bmQiLCJ0YWJCdXR0b25zIiwicmVmdW5kQnV0dG9ucyIsIm9uUmVtb3ZlU2VsZWN0ZWRSZWZ1bmRUaWNrZXRzIiwib25SZWZ1bmRTdWNjZXNzQ2xvc2UiLCJvbkNsb3NlU2xpZGVyIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50Iiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwiYmxhY2tCdXR0b24iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInVzZU1lbW8iLCJSaWdodERyYXdlciIsIlJlZnVuZFJlcXVlc3RlZFRpY2tldCIsImdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMiLCJyZXF1ZXN0ZWRUaWNrZXRzIiwiY2xvc2VTbGlkZXIiLCJyZWZ1bmREZXRhaWxzIiwiRGVsZXRlT3V0bGluZUljb24iLCJSZWZ1bmRTdGF0dXMiLCJvblJlbW92ZSIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsImRlbGV0ZUljb24iLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiQ2hlY2tDaXJjbGVJY29uIiwiU1RFUF9PTkUiLCJTVEVQX1RXTyIsInN0ZXAiLCJzZXRTdGVwIiwiZXJyb3JNc2ciLCJzZXRFcnJvck1zZyIsInJlZnVuZFN1Y2Nlc3MiLCJzZXRSZWZ1bmRTdWNjZXNzIiwicmVmdW5kVGlja2V0cyIsInJlZnVuZFN0ZXBPbmUiLCJyZWZ1bmRFcnJvck1zZyIsImFjdGlvbkJ1dHRvbnMiLCJjYW5jZWxCdXR0b24iLCJjb250aW51ZUJ1dHRvbiIsInJlZnVuZFN0ZXBUd28iLCJyZWZ1bmRTdWNjZXNzZnVsIiwic3VjY2Vzc01zZyIsInN1Y2Nlc3NNc2cyIiwicmVuZGVyU3RlcHMiLCJpbmplY3RGaXJzdCIsIkljb25CdXR0b24iLCJUeXBvZ3JhcGh5IiwiRHJhd2VyIiwiQ2xvc2UiLCJhbmNob3IiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0IiwiZ3V0dGVyQm90dG9tIiwib25lT2ZUeXBlIiwieXVwIiwiQXNzaWduRm9ybSIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwidXNlQ29udGV4dCIsIl90aWNrZXQkdHlwZSIsInRpY2tldEFzc2lnbmVkIiwic2V0VGlja2V0QXNzaWduZWQiLCJjdXJyZW50VGlja2V0Iiwib25Bc3NpZ25Ub090aGVyIiwib25Bc3NpZ25Ub01lIiwib25DbG9zZUVRRm9ybSIsIm9uQ2xvc2VTYXZlTWVzc2FnZSIsIm9uU2F2ZUVRIiwicmVzb2x2ZSIsInRpY2tldEFzc2lnbkNvbnRhaW5lciIsImFsaWduQ2VudGVyIiwic3VidGl0bGUiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJ0aWNrZXRUeXBlIiwiYXNzaWduQnRuIiwiYXR0ZW5kZWVDb250YWluZXIiLCJhdHRlbmRlZUluZm9UaXRsZSIsImF0dGVuZGVlSW5mb05vdGUiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlRpY2tldERlbGVnYXRpb25GaWVsZHMiLCJkZWxlZ2F0ZWRfZmlyc3RfbmFtZSIsImRlbGVnYXRlZF9sYXN0X25hbWUiLCJUaWNrZXRPd25lckZpZWxkcyIsIlRpY2tldEZvcm0iLCJjYW5FZGl0IiwidGlja2V0TWFuYWdlciIsImFsbG93c0RlbGVnYXRpb24iLCJhbGxvd3NfdG9fZGVsZWdhdGUiLCJyZWR1Y2UiLCJkZWxlZ2F0ZWRUbyIsImFkZGl0aW9uYWxEZXRhaWxzIiwiaW5mb05vdGUiLCJRUkNvZGUiLCJGaWxlRG93bmxvYWRPdXRsaW5lZCIsIkRvd25sb2FkSWNvbiIsIkVtYWlsT3V0bGluZWQiLCJFbWFpbEljb24iLCJ1c2VHZXRUaWNrZXQiLCJUV09fSVRFTSIsInNhdmVNZXNzYWdlIiwic2V0U2F2ZU1lc3NhZ2UiLCJzZW50Q29uZmlybWF0aW9uIiwic2V0U2VudENvbmZpcm1hdGlvbiIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwiaXNDb21wbGV0ZSIsIm9uU2F2ZSIsImRlc2NyaXB0aW9uIiwiZG93bmxvYWRUaWNrZXRQZGYiLCJvblNlbmRFbWFpbCIsInRpY2tldERldGFpbENvbnRhaW5lciIsInFyQ29kZSIsIm1heFdpZHRoIiwicXJfY29kZSIsInZpZXdCb3giLCJxck5vdGUiLCJpc192aXJ0dWFsIiwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lciIsImRvd25sb2FkQnRuIiwic2VuZEJ0biIsInNlbnQiLCJvcmRlck51bWJlciIsIlJlYXNzaWduRm9ybSIsInRpY2tldFJlYXNzaWduZWQiLCJzZXRUaWNrZXRSZWFzc2lnbmVkIiwib25SZWFzc2lnbiIsImdldExhYmVscyIsImhlYWRlck5vdGUiLCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lciIsIkNvbnRhaW5lciIsIl90aWNrZXQkcmVmdW5kX3JlcXVlcyIsImlzQWN0aXZlIiwicmVmdW5kUmVxdWVzdHMiLCJ0aWNrZXRTdGF0dXNDb250YWluZXIiLCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWQiLCJidXR0b25JbmNvbXBsZXRlIiwiYnV0dG9uVW5hc3NpZ25lZCIsImJ1dHRvbkNvbXBsZXRlIiwiYnV0dG9uQ2FuY2VsbGVkIiwicnVuIiwic21vb3RoU2Nyb2xsVG8iLCJ0YXJnZXRTY3JvbGxUb3AiLCJkdXJhdGlvbiIsInN0YXJ0U2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiZGlzdGFuY2UiLCJzdGFydFRpbWUiLCJhbmltYXRpb25TdGVwIiwidGltZXN0YW1wIiwiZWxhcHNlZCIsInByb2dyZXNzIiwiTWF0aCIsIm1pbiIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjb250YWluZXJJZCIsImlzVmFsaWQiLCJlcnJvckFycmF5IiwiZXJyb3JDb3VudCIsImVsZW1lbnRzU29ydGVkIiwicmVzdWx0IiwiZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhIiwiYiIsImdldEVsZW1lbnRCeUlkIiwiY29udGFpbmVyUmVjdCIsImVsZW1PZmZlc3QiLCJhbmltYXRpb25EdXJhdGlvbiIsIlNUQVRVU19DT01QTEVURSIsIlNUQVRVU19JTkNPTVBMRVRFIiwiU1RBVFVTX0NBTkNFTExFRCIsIlNUQVRVU19VTkFTU0lHTkVEIiwiX3RpY2tldCRwcm9tb19jb2RlIiwiX3RpY2tldCRvd25lcjQiLCJfdGlja2V0JHRpY2tldF90eXBlMiIsIl90aWNrZXQkcHJvbW9fY29kZTIiLCJnZXRTdGF0dXMiLCJhbGxvd3NEZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpbml0UmVhY3RJMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImVuIiwiZXMiLCJ1c2UiLCJpbml0IiwiZmFsbGJhY2tMbmciLCJkZWJ1ZyIsInJlc291cmNlcyIsInRyYW5zbGF0aW9uIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiTE9HT1VUX1VTRVIiLCJTVEFSVF9MT0FESU5HIiwiU1RPUF9MT0FESU5HIiwiUkVTRVRfTE9BRElORyIsIkRFRkFVTFRfU1RBVEUiLCJ3aWRnZXRMb2FkaW5nIiwiaXNPcmRlckxvYWRpbmciLCJvcmRlcnNfdG90YWwiLCJ0aWNrZXRfY3VycmVudF9wYWdlIiwidGlja2V0X2xhc3RfcGFnZSIsInRpY2tldF90b3RhbCIsInVzZXJfdGlja2V0c190b3RhbCIsIldpZGdldFJlZHVjZXIiLCJ0b3RhbCIsImxhc3RfcGFnZSIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsInVwZGF0ZWRPcmRlciIsInRpY2tldHNfcGFnZV9sYXN0IiwibW8iLCJfdGlja2V0c1JlZnVuZFJlcXVlc3QiLCJ1cGRhdGVkVGlja2V0cyIsInRyciIsInRpY2tldERhdGEiLCJuZXdPcmRlcnMiLCJuZXdUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImNhcHR1cmVFeGNlcHRpb24iLCJMQVNUX0hPVVJfT0ZfMjRfSE9VUiIsIkxBU1RfTUlOVVRFX09GX0hPVVIiLCJPTkVfREFZIiwiU1RBVFVTX1BFTkRJTkciLCJTVEFUVVNfRVJST1IiLCJTVEFUVVNfUFJPQ0VTU0lORyIsIlNUQVRVU19SRUZVTkRfUEVORElORyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRUQiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyIsIlNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMiLCJKRVNUX1RJTUVPVVRfSU5fTUlMTElTRUMiLCJPTkVfSVRFTSIsIkZJVkVfSVRFTSIsIlNJWF9JVEVNIiwibW9tZW50IiwibG9jYWxlIiwiZGVmYXVsdE9wdGlvbnMiLCJtaW5pbXVtRnJhY3Rpb25EaWdpdHMiLCJtYXhpbXVtRnJhY3Rpb25EaWdpdHMiLCJmb3JtYXR0ZXIiLCJJbnRsIiwiTnVtYmVyRm9ybWF0IiwiZm9ybWF0IiwiZGF0ZXRpbWUiLCJ0aW1lWm9uZSIsInR6IiwidW5peCIsInJlZnVuZGVkX2Ftb3VudCIsImFtb3VudCIsInRpY2tldF90eXBlcyIsInB1cmNoYXNlVGlja2V0VG90YWwiLCJjdXJyZW5jeU9iamVjdCIsInRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwidXNlU3VtbWl0RGV0YWlscyIsIl9zdW1taXQkdGltZV96b25lIiwiX3N1bW1pdCR0aW1lX3pvbmUyIiwiZm9ybWF0dGVkRGF0ZSIsImZvcm1hdHRlZFJlYXNzaWduRGF0ZSIsInRpbWVfem9uZSIsImRheXNVbnRpbFJlYXNzaWduRGVhZGxpbmUiLCJpc1Bhc3QiLCJpc1N0YXJ0ZWQiLCJzdGF0dXNEYXRhIiwiZ2V0VGlja2V0U3RhdHVzS2V5IiwiZ2V0VGlja2V0U3RhdHVzRGF0YSIsImlzU3VtbWl0UGFzdCIsImdldFRpY2tldFJvbGUiLCJiYWRnZSIsImZlYXR1cmVzIiwiZmVhdHVyZSIsImdldFRpY2tldFR5cGUiLCJmaW5hbF9hbW91bnQiLCJyciIsImdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczIiLCJhbGxUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczQiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM1IiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM2IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczgiLCJnZXRUeXBlVmFsaWRhdGlvbiIsInNjaGVtYSIsIm9uZU9mIiwib2YiLCJpbmNsdWRlRGVsZWdhdGlvbiIsImluY2x1ZGVBdHRlbmRlZUluZm8iLCJpbmNsdWRlRGlzY2xhaW1lciIsIm9ubHlSZWxldmFudCIsInN1YlF1ZXN0aW9uU2x1ZyIsInN1YkFuc3dlciIsIm1hdGNoIiwiZGlzY2xhaW1lck1hbmRhdG9yeSIsImxhenkiLCJ0eXBlRXJyb3IiLCJfcSRzdWJfcXVlc3Rpb25fcnVsZXMyIiwic3ViUXVlc3Rpb24iLCJudWxsYWJsZSIsIndoZW4iLCJpcyIsInF1ZXN0aW9uQW5zIiwic2NoIiwiUGVyc2lzdEdhdGUiLCJNeU9yZGVyc015VGlja2V0c1dpZGdldCIsInN1cHBvcnRFbWFpbCIsImhhbmRsZUJlZm9yZUxpZnQiLCJVUkxTZWFyY2hQYXJhbXMiLCJzZWFyY2giLCJmbHVzaCIsImhhcyIsIm9uQmVmb3JlTGlmdCJdLCJzb3VyY2VSb290IjoiIn0=