my-orders-tickets-widget 1.0.0-beta.60 → 1.0.0-beta.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +4 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4095,6 +4095,9 @@ const OrderListItem = _ref => {
|
|
|
4095
4095
|
t
|
|
4096
4096
|
} = (0,react_i18next__WEBPACK_IMPORTED_MODULE_2__.useTranslation)();
|
|
4097
4097
|
const [itemsToDisplay, setItemsToDisplay] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(_utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT);
|
|
4098
|
+
(0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(() => {
|
|
4099
|
+
setItemsToDisplay(_utils_constants__WEBPACK_IMPORTED_MODULE_5__.PAGINATION_DISPLAY_COUNT);
|
|
4100
|
+
}, [order === null || order === void 0 ? void 0 : order.tickets_total]);
|
|
4098
4101
|
if (!(order !== null && order !== void 0 && (_order$memberTickets = order.memberTickets) !== null && _order$memberTickets !== void 0 && _order$memberTickets.length)) return null;
|
|
4099
4102
|
const slicedTickets = order === null || order === void 0 || (_order$memberTickets2 = order.memberTickets) === null || _order$memberTickets2 === void 0 ? void 0 : _order$memberTickets2.slice(0, itemsToDisplay);
|
|
4100
4103
|
const onViewMore = () => {
|
|
@@ -10084,4 +10087,4 @@ MyOrdersMyTicketsWidget.propTypes = {
|
|
|
10084
10087
|
/******/ })()
|
|
10085
10088
|
;
|
|
10086
10089
|
});
|
|
10087
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztVQ0FBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7O1VBRUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7Ozs7O1dDdEJBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQ0FBaUMsV0FBVztXQUM1QztXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EseUNBQXlDLHdDQUF3QztXQUNqRjtXQUNBO1dBQ0E7Ozs7O1dDUEE7Ozs7O1dDQUE7V0FDQTtXQUNBO1dBQ0EsdURBQXVELGlCQUFpQjtXQUN4RTtXQUNBLGdEQUFnRCxhQUFhO1dBQzdEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUN5QztBQUNOO0FBQ0k7QUFDdUI7QUFDVDtBQUNkO0FBQ2tCO0FBRUY7QUFBQTtBQUV2RCxNQUFNRSx1QkFBdUIsR0FBSTVpQixLQUFLLElBQUs7RUFDekMsTUFBTTtJQUNKK1ksUUFBUTtJQUNSOEosWUFBWTtJQUNabHdDLE1BQU07SUFDTjBELFVBQVU7SUFDVnpELElBQUk7SUFDSmttQyxRQUFRO0lBQ1JuK0I7RUFDRixDQUFDLEdBQUdxbEIsS0FBSztFQUVULE1BQU07SUFBRWlaLEtBQUs7SUFBRVc7RUFBVSxDQUFDLEdBQUdGLG9EQUFZLENBQUM7SUFDeENYLFFBQVE7SUFDUjhKLFlBQVk7SUFDWmx3QyxNQUFNO0lBQ05DLElBQUk7SUFDSnlELFVBQVU7SUFDVnlpQyxRQUFRO0lBQ1JuK0I7RUFDRixDQUFDLENBQUM7RUFFRixNQUFNbW9DLGdCQUFnQixHQUFHQSxDQUFBLEtBQU07SUFDN0IsTUFBTXRzQyxNQUFNLEdBQUcsSUFBSXVzQyxlQUFlLENBQUNwbEMsTUFBTSxDQUFDa2hDLFFBQVEsQ0FBQ21FLE1BQU0sQ0FBQztJQUMxRCxNQUFNQyxLQUFLLEdBQUd6c0MsTUFBTSxDQUFDMHNDLEdBQUcsQ0FBQyxZQUFZLENBQUM7SUFDdEMsSUFBSUQsS0FBSyxFQUFFaEssS0FBSyxDQUFDM21DLFFBQVEsQ0FBQztNQUFFMFgsSUFBSSxFQUFFcGEsaURBQVc7TUFBRTJFLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUNqRSxDQUFDO0VBRUR1WixnREFBUyxDQUFDLE1BQU07SUFDZG1yQixLQUFLLENBQUMzbUMsUUFBUSxDQUFDSSx5REFBZSxDQUFDQyxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBQy9DLENBQUMsRUFBRSxDQUFDRCxNQUFNLEVBQUVDLElBQUksQ0FBQyxDQUFDO0VBRWxCLG9CQUNFK0wsc0RBQUEsQ0FBQzJ6QixpREFBUTtJQUFDMkcsS0FBSyxFQUFFQSxLQUFNO0lBQUE5NUIsUUFBQSxlQUNyQlIsc0RBQUEsQ0FBQ2drQyx3RUFBVztNQUNWUSxZQUFZLEVBQUVMLGdCQUFpQjtNQUMvQmpzQixPQUFPLEVBQUUsSUFBSztNQUNkK2lCLFNBQVMsRUFBRUEsU0FBVTtNQUFBejZCLFFBQUEsZUFFckJSLHNEQUFBLENBQUNrbUIsK0RBQW9CO1FBQUMyQixXQUFXO1FBQUFybkIsUUFBQSxlQUMvQlIsc0RBQUEsQ0FBQ296QixpRUFBYSxJQUFFO01BQUMsQ0FDRztJQUFDLENBQ1o7RUFBQyxDQUNOLENBQUM7QUFFZixDQUFDO0FBRUQ2USx1QkFBdUIsQ0FBQzNoQyxTQUFTLEdBQUc7RUFDbEM4M0IsUUFBUSxFQUFFejVCLDBEQUFnQjtFQUMxQnVqQyxZQUFZLEVBQUV2akMsMERBQWdCO0VBQzlCM00sTUFBTSxFQUFFMk0sMERBQWdCO0VBQ3hCakosVUFBVSxFQUFFaUosMERBQWdCO0VBQzVCMU0sSUFBSSxFQUFFME0sMERBQWdCO0VBQ3RCdzVCLFFBQVEsRUFBRXg1QiwwREFBZ0I7RUFDMUIzRSxhQUFhLEVBQUUyRSx3REFBY21EO0FBQy9CLENBQUM7QUFFRCxpRUFBZW1nQyx1QkFBdUIsRSIsInNvdXJjZXMiOlsid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24iLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2FjdGlvbnMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29uZmlybURpYWxvZy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9DdXN0b21Ob3RpZmljYXRpb24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tVGhlbWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1RleHRRdWVzdGlvbkZpZWxkLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQXNzaWduZWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9CYWRnZUZlYXR1cmVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9GcmVlUGFpZEZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1Byb21vQ29kZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NlYXJjaC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL1NvcnQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TdGF0dXNGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9UaWNrZXRUeXBlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvRXJyb3JMYWJlbC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Mb2FkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTXlPcmRlcnNUaWNrZXRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL1RpY2tldHNJY29uLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9PcmRlclN1bW1hcnlUYWJsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvUmVmdW5kRW1haWxTdXBwb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJMaXN0SXRlbS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvUmVmdW5kUmVxdWVzdGVkVGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGFiV3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0RlbGVnYXRlRm9ybS9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvQXNzaWduSGVhZGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9SZWFzc2lnbkZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL0NvbXBhbnlGaWVsZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlR2V0VGlja2V0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VTY3JvbGxUb0Vycm9yLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9ob29rcy91c2VUaWNrZXREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9pMThuL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9yZWR1Y2VyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9zdG9yZS5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvYXV0aC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvY29uc3RhbnRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvc3VtbWl0VXRpbHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3RpY2tldFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvcHlUZXh0L3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Gb3JtRm9vdGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9MYWJlbHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTm9UaWNrZXRzRm91bmQvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyU3VtbWFyeS9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JpZ2h0RHJhd2VyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9TdW1taXRIZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9jb21wb25lbnRzL0hlYWRlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRPd25lckZpZWxkcy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRTdGF0dXMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFRhYnMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZGVmaW5lUHJvcGVydHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ltcG9ydEV4cG9ydFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50VGV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYlwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVGFic1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC91c2VNZWRpYVF1ZXJ5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQHJlZHV4anMvdG9vbGtpdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBzZW50cnkvcmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJmb3JtaWtcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJpZHRva2VuLXZlcmlmaWVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwibW9tZW50LXRpbWV6b25lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9tZXRob2RzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicC1saW1pdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInByb3AtdHlwZXNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LWkxOG5leHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtcXItY29kZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXJlZHV4XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QvanN4LXJ1bnRpbWVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInl1cFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2NvbXBhdCBnZXQgZGVmYXVsdCBleHBvcnQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbiB3ZWJwYWNrVW5pdmVyc2FsTW9kdWxlRGVmaW5pdGlvbihyb290LCBmYWN0b3J5KSB7XG5cdGlmKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0Jylcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoKTtcblx0ZWxzZSBpZih0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpXG5cdFx0ZGVmaW5lKFwibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCIsIFtdLCBmYWN0b3J5KTtcblx0ZWxzZSBpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcpXG5cdFx0ZXhwb3J0c1tcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiXSA9IGZhY3RvcnkoKTtcblx0ZWxzZVxuXHRcdHJvb3RbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG59KSh0aGlzLCAoKSA9PiB7XG5yZXR1cm4gIiwiaW1wb3J0IHtcbiAgYXV0aEVycm9ySGFuZGxlcixcbiAgY3JlYXRlQWN0aW9uLFxuICBkZWxldGVSZXF1ZXN0LFxuICBnZXRSZXF1ZXN0LFxuICBwdXRSZXF1ZXN0LFxuICBzdGFydExvYWRpbmcsXG4gIHN0b3BMb2FkaW5nXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCBwTGltaXQgZnJvbSBcInAtbGltaXRcIjtcbmltcG9ydCB7IGdldElkVG9rZW4gfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCI7XG5pbXBvcnQgeyBvYmplY3RUb1F1ZXJ5U3RyaW5nIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiO1xuaW1wb3J0IElkVG9rZW5WZXJpZmllciBmcm9tIFwiaWR0b2tlbi12ZXJpZmllclwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcImkxOG5leHRcIjtcbmltcG9ydCB7IGF1dGhQcm9taXNlUmVqZWN0LCBnZXRBY2Nlc3NUb2tlblNhZmVseSB9IGZyb20gXCIuL3V0aWxzL2F1dGhcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEVSUk9SX0NPREVTLFxuICBGSUZUWV9QRVJfUEFHRSxcbiAgRklSU1RfUEFHRSxcbiAgUFJPTUlTRV9CQVRDSF9MSU1JVCxcbiAgVEFCU1xufSBmcm9tIFwiLi91dGlscy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IFJFU0VUX1NUQVRFID0gXCJSRVNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0ZJTFRFUiA9IFwiUkVTRVRfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfQVBJX0VSUk9SID0gXCJSRVNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTRVRfU1RBVEUgPSBcIlNFVF9TVEFURVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BUElfRVJST1IgPSBcIlNFVF9BUElfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBDSEFOR0VfRklMVEVSID0gXCJDSEFOR0VfRklMVEVSXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX1NPUlQgPSBcIkNIQU5HRV9TT1JUXCI7XG5cbi8vIE9SREVSUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfVVNFUl9PUkRFUlMgPSBcIkdFVF9PUkRFUlNcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfT1JERVIgPSBcIlJFRlVORF9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IFNFVF9BQ1RJVkVfT1JERVJfSUQgPSBcIlNFVF9BQ1RJVkVfT1JERVJfSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVVNFUl9PUkRFUlMgPSBcIkZJTFRFUl9VU0VSX09SREVSU1wiO1xuXG4vLyBUSUNLRVRTIENPTlNUU1xuZXhwb3J0IGNvbnN0IEdFVF9NWV9BU1NJR05FRF9USUNLRVRTID0gXCJHRVRfTVlfQVNTSUdORURfVElDS0VUU1wiO1xuZXhwb3J0IGNvbnN0IFVQREFURV9USUNLRVQgPSBcIlVQREFURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9USUNLRVQgPSBcIlJFU0VUX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfVElDS0VUID0gXCJSRUNFSVZFX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFTU9WRV9USUNLRVRfQVRURU5ERUUgPSBcIlJFTU9WRV9USUNLRVRfQVRURU5ERUVcIjtcbmV4cG9ydCBjb25zdCBBU1NJR05fVElDS0VUID0gXCJBU1NJR05fVElDS0VUXCI7XG5leHBvcnQgY29uc3QgREVMRUdBVEVfVElDS0VUID0gXCJERUxFR0FURV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUZVTkRfVElDS0VUID0gXCJSRUZVTkRfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRU5EX05PVElGSUNBVElPTiA9IFwiUkVTRU5EX05PVElGSUNBVElPTlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SID0gXCJHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IEdFVF9PUkRFUl9USUNLRVRfREVUQUlMUyA9IFwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgR0VUX1RJQ0tFVF9ERVRBSUxTID0gXCJHRVRfVElDS0VUX0RFVEFJTFNcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyA9IFwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlNcIjtcbmV4cG9ydCBjb25zdCBUSUNLRVRfQVRURU5ERUVfS0VZUyA9IHtcbiAgZW1haWw6IFwiYXR0ZW5kZWVfZW1haWxcIixcbiAgZmlyc3ROYW1lOiBcImF0dGVuZGVlX2ZpcnN0X25hbWVcIixcbiAgbGFzdE5hbWU6IFwiYXR0ZW5kZWVfbGFzdF9uYW1lXCIsXG4gIGNvbXBhbnk6IFwiYXR0ZW5kZWVfY29tcGFueVwiLFxuICBkaXNjbGFpbWVyQWNjZXB0ZWQ6IFwiZGlzY2xhaW1lcl9hY2NlcHRlZFwiLFxuICBleHRyYVF1ZXN0aW9uczogXCJleHRyYV9xdWVzdGlvbnNcIlxufTtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEID1cbiAgXCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEXCI7XG5cbi8vIFVTRVIgQ09OVFNcbmV4cG9ydCBjb25zdCBTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFID0gXCJTVE9QX0xPQURJTkdfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfSURQX1BST0ZJTEUgPSBcIlVQREFURV9JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNFVF9VU0VSID0gXCJTRVRfVVNFUlwiO1xuXG4vLyBTVU1NSVQgQ09OU1RTXG5leHBvcnQgY29uc3QgU0VUX1NVTU1JVCA9IFwiU0VUX1NVTU1JVFwiO1xuZXhwb3J0IGNvbnN0IEdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyA9IFwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MgPSBcIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5leHBvcnQgY29uc3QgQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1NcIjtcblxuZXhwb3J0IGNvbnN0IHJlc2V0VGlja2V0ID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9USUNLRVQpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRTdGF0ZSA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfU1RBVEUpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRGaWx0ZXIgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX0ZJTFRFUikoe30pKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZXNldEVycm9yID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9BUElfRVJST1IpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3Qgc2V0UmVkdWNlclN0YXRlID0gKHN1bW1pdCwgdXNlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfU1RBVEUpKHsgc3VtbWl0LCB1c2VyIH0pKTtcbn07XG5cbi8vIEZJTFRFUiAvIFNPUlQgQ09OU1RBTlRTXG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9EQVRFID0gXCJGSUxURVJfVkFSX0RBVEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgPSBcIkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRVwiO1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgPSBcIkZJTFRFUl9WQVJfVElDS0VUX1RZUEVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCA9IFwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyA9IFwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1BST01PQ09ERSA9IFwiRklMVEVSX1ZBUl9QUk9NT0NPREVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX0ZSRUVfUEFJRCA9IFwiRklMVEVSX1ZBUl9GUkVFX1BBSURcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX09SREVSX05VTUJFUiA9IFwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJcIjtcblxuLy8gRklMVEVSIC8gU09SVCBBQ1RJT05TXG5leHBvcnQgY29uc3QgY2hhbmdlRmlsdGVyID0gKGZpbHRlcikgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihDSEFOR0VfRklMVEVSKShmaWx0ZXIpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGFuZ2VTb3J0ID0gKHNvcnQpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX1NPUlQpKHNvcnQpKTtcbn07XG5cbi8vIEZJTFRFUi9TT1JUIFBBUlNFXG5jb25zdCBwYXJzZUZpbHRlciA9IChmaWx0ZXJPYmosIGN1cnJlbnRUYWIpID0+IHtcbiAgY29uc3QgZmlsdGVyID0gW107XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9EQVRFKSB7XG4gICAgZmlsdGVyLnB1c2goYGNyZWF0ZWRbXSR7ZmlsdGVyT2JqLmxvd2VyfSYmJHtmaWx0ZXJPYmoudXBwZXJ9YCk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUgJiZcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSU1xuICAgICAgICA/IFwidGlja2V0c19iYWRnZV9mZWF0dXJlc19pZFwiXG4gICAgICAgIDogXCJiYWRnZV9mZWF0dXJlc19pZFwiO1xuICAgIGZpbHRlci5wdXNoKFxuICAgICAgYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX1RZUEUubGVuZ3RoID4gMFxuICApIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID1cbiAgICAgIGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJ0aWNrZXRzX3R5cGVfaWRcIiA6IFwidGlja2V0X3R5cGVfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmpvaW4oXCJ8fFwiKX1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19hc3NpZ25lZF90b1wiIDogXCJhc3NpZ25lZF90b1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRH1gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19vd25lcl9zdGF0dXNcIiA6IFwib3duZXJfc3RhdHVzXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09PSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQpIHtcbiAgICBjb25zdCBmaWx0ZXJOYW1lID0gY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcImFtb3VudFwiIDogXCJmaW5hbF9hbW91bnRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9GUkVFX1BBSUQgPT09IFwiRnJlZVwiID8gXCI9PTBcIiA6IFwiPjBcIn1gXG4gICAgKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c19wcm9tb19jb2RlXCIgOiBcInByb21vX2NvZGVcIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT1AJHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9QUk9NT0NPREV9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUikge1xuICAgIGZpbHRlci5wdXNoKGBudW1iZXI9QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSfWApO1xuICB9XG4gIHJldHVybiBmaWx0ZXI7XG59O1xuXG5jb25zdCBnZXRTb3J0RGlyZWN0aW9uID0gKGRpcmVjdGlvbikgPT4gKGRpcmVjdGlvbiA9PT0gXCJhc2NcIiA/IFwiK1wiIDogXCItXCIpO1xuXG4vLyBwYXlsb2FkOiB7IGh0dHBDb2RlLCB0aXRsZSwgaHRtbDogY29udGVudCwgdHlwZSB9XG5jb25zdCBlcnJvckhhbmRsZXJOb3RpZnkgPSAocGF5bG9hZCwgY2FsbGJhY2spID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX0FQSV9FUlJPUikocGF5bG9hZCkpO1xuICBpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG59O1xuXG5jb25zdCBjdXN0b21BdXRoRXJyb3JIYW5kbGVyID0gKGVyciwgcmVzKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goYXV0aEVycm9ySGFuZGxlcihlcnIsIHJlcywgZXJyb3JIYW5kbGVyTm90aWZ5KSk7XG59O1xuXG5jb25zdCBjdXN0b21GZXRjaEVycm9ySGFuZGxlciA9IChyZXNwb25zZSkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGNvbnN0IGNvZGUgPSByZXNwb25zZS5zdGF0dXM7XG4gIGxldCBtc2c7XG4gIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICBzd2l0Y2ggKGNvZGUpIHtcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDAzXCJdOlxuICAgICAgbXNnID0gaTE4bi50KFwiZXJyb3JzLnVzZXJfbm90X2F1dGh6XCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwMVwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXNzaW9uX2V4cGlyZWRcIik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIEVSUk9SX0NPREVTW1wiNDEyXCJdOlxuICAgICAgbXNnID0gXCJcIjtcbiAgICAgIE9iamVjdC5lbnRyaWVzKHJlc3BvbnNlLmVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgIGlmIChOdW1iZXIuaXNOYU4oa2V5KSkge1xuICAgICAgICAgIG1zZyA9IGAke21zZ30gJHtrZXl9OiBgO1xuICAgICAgICB9XG5cbiAgICAgICAgbXNnID0gYCR7bXNnfSAke3ZhbHVlfSA8YnI+YDtcbiAgICAgIH0pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjUwMFwiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy5zZXJ2ZXJfZXJyb3JcIik7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgbXNnID0gcmVzcG9uc2Uuc3RhdHVzVGV4dDtcbiAgfVxuXG4gIGRpc3BhdGNoKGVycm9ySGFuZGxlck5vdGlmeSh7IHRpdGxlOiBpMThuLnQoXCJlcnJvcnMuZXJyb3JcIiksIGh0bWw6IG1zZyB9KSk7XG59O1xuXG4vLyBPUkRFUlMgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGdldFVzZXJPcmRlcnMgPVxuICAoXG4gICAge1xuICAgICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgIGZpbHRlciA9IHt9LFxuICAgICAgc29ydCA9IHt9XG4gICAgfSxcbiAgICBza2lwTG9hZGluZ1xuICApID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBvcmRlcjogXCItY3JlYXRlZFwiLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIl0sXG4gICAgICByZWxhdGlvbnM6IFwibm9uZVwiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcblxuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuT1JERVJTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9VU0VSX09SREVSUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXIsXG4gICAgICB7IGZpbHRlciwgc29ydCB9XG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHBheWxvYWQpXG4gICAgICAuY2F0Y2goKGUpID0+IGUpXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmICghc2tpcExvYWRpbmcpIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzZXRBY3RpdmVPcmRlcklkID0gKG9yZGVySWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BQ1RJVkVfT1JERVJfSUQpKG9yZGVySWQpKTtcblxuLy8gVVNFUiBBQ1RJT05TXG5leHBvcnQgY29uc3Qgc2V0VXNlciA9ICh1c2VyKSA9PiAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfVVNFUikodXNlcikpO1xuXG4vLyBUSUNLRVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0VXNlclRpY2tldHMgPVxuICAoXG4gICAge1xuICAgICAgcGFnZSA9IEZJUlNUX1BBR0UsXG4gICAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgIGZpbHRlciA9IHt9LFxuICAgICAgc29ydCA9IHt9XG4gICAgfSxcbiAgICBza2lwTG9hZGluZ1xuICApID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0LCB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuICAgIGlmICghc3VtbWl0KSByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IGZpZWxkcyA9IFtcbiAgICAgIFwib3JkZXIuaWRcIixcbiAgICAgIFwib3JkZXIub3duZXJfZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvcmRlci5vd25lcl9sYXN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfZW1haWxcIixcbiAgICAgIFwib3duZXIuaWRcIixcbiAgICAgIFwib3duZXIuZW1haWxcIixcbiAgICAgIFwib3duZXIuZmlyc3RfbmFtZVwiLFxuICAgICAgXCJvd25lci5sYXN0X25hbWVcIixcbiAgICAgIFwib3duZXIuc3RhdHVzXCIsXG4gICAgICBcImJhZGdlLm5vbmVcIlxuICAgIF07XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtcInN0YXR1cz09UGFpZFwiLCBgb3JkZXJfb3duZXJfaWQ8PiR7dXNlclByb2ZpbGUuaWR9YF0sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsb3duZXIsdGlja2V0X3R5cGUsYmFkZ2UsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIG9yZGVyOiBcIi1pZFwiLFxuICAgICAgZmllbGRzOiBmaWVsZHMuam9pbihcIixcIiksXG4gICAgICByZWxhdGlvbnM6IFwibm9uZSxiYWRnZS5mZWF0dXJlc1wiLFxuICAgICAgcGFnZSxcbiAgICAgIHBlcl9wYWdlOiBwZXJQYWdlXG4gICAgfTtcbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLlRJQ0tFVFMpO1xuICAgICAgcGFyYW1zW1wiZmlsdGVyW11cIl0gPSBbLi4ucGFyYW1zW1wiZmlsdGVyW11cIl0sIC4uLmZpbHRlcnNdO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXMoc29ydCkubGVuZ3RoID4gMCkge1xuICAgICAgcGFyYW1zLm9yZGVyID0gYCR7Z2V0U29ydERpcmVjdGlvbihzb3J0LmRpcmVjdGlvbil9JHtzb3J0Lm5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEdFVF9NWV9BU1NJR05FRF9USUNLRVRTKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9vcmRlcnMvYWxsL3RpY2tldHMvbWVgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgaWYgKCFza2lwTG9hZGluZykgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldHNCeU9yZGVyID1cbiAgKHtcbiAgICBvcmRlcklkLFxuICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgIHBlclBhZ2UgPSBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICAgIGZpbHRlcixcbiAgICBzb3J0XG4gIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogW10sXG4gICAgICBmaWVsZHM6IFwiYmFkZ2Uubm9uZVwiLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxyZWZ1bmRfcmVxdWVzdHMucmVmdW5kZWRfdGF4ZXMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLnRheCxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsYmFkZ2UsYmFkZ2UuZmVhdHVyZXMsdGlja2V0X3R5cGVcIixcbiAgICAgIG9yZGVyOiBcIitpZFwiLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5USUNLRVRTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0c2AsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKEdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZXNlbmROb3RpZmljYXRpb24gPVxuICAodGlja2V0KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgeyBtZXNzYWdlIH0gPSB0aWNrZXQ7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlblxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRU5EX05PVElGSUNBVElPTiksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vYXR0ZW5kZWUvcmVpbnZpdGVgLFxuICAgICAgeyBtZXNzYWdlIH0sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBlO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWZ1bmRUaWNrZXQgPVxuICAoeyB0aWNrZXQgfSkgPT5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC12YXJzXG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBvcmRlcklkID0gdGlja2V0Lm9yZGVyID8gdGlja2V0Lm9yZGVyLmlkIDogdGlja2V0Lm9yZGVyX2lkO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDogXCJyZWZ1bmRfcmVxdWVzdHMsdGlja2V0X3R5cGVcIixcbiAgICAgIGZpZWxkczogXCJyZWZ1bmRfcmVxdWVzdHMuc3RhdHVzXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIGRlbGV0ZVJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFRlVORF9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L3JlZnVuZGAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbigocGF5bG9hZCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIHBheWxvYWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kQnVsa1RpY2tldHMgPVxuICAoeyB0aWNrZXRzIH0pID0+XG4gIGFzeW5jIChkaXNwYXRjaCkgPT4ge1xuICAgIGNvbnN0IGxpbWl0ID0gcExpbWl0KFBST01JU0VfQkFUQ0hfTElNSVQpO1xuICAgIGNvbnN0IGFsbFJlZnVuZFRpY2tldENhbGxzID0gdGlja2V0cy5tYXAoKHRpY2tldCkgPT5cbiAgICAgIGxpbWl0KCgpID0+IGRpc3BhdGNoKHJlZnVuZFRpY2tldCh7IHRpY2tldCB9KSkpXG4gICAgKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoWy4uLmFsbFJlZnVuZFRpY2tldENhbGxzXSlcbiAgICAgIC50aGVuKChyZXMpID0+IHtcbiAgICAgICAgY29uc3Qgc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkID0gcmVzXG4gICAgICAgICAgLmZpbHRlcigocikgPT4gci5yZXNwb25zZT8ucmVmdW5kX3JlcXVlc3RzPy5sZW5ndGgpXG4gICAgICAgICAgLm1hcCgocikgPT4gci5yZXNwb25zZSk7XG4gICAgICAgIHJldHVybiBzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQ7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiBlKTtcbiAgfTtcblxuLy8gdXBkYXRlIHRoZSB0aWNrZXRzIHRoYXQgaGF2ZSBiZWVuIHN1Y2Vzc2Z1bGx5IHJlZnVuZGVkXG5leHBvcnQgY29uc3QgdXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9XG4gICh0aWNrZXRzUmVmdW5kUmVxdWVzdGVkKSA9PiAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCkodGlja2V0c1JlZnVuZFJlcXVlc3RlZClcbiAgICApO1xuXG4vLyBTVU1NSVQgQUNUSU9OU1xuXG5leHBvcnQgY29uc3QgZ2V0RXh0cmFRdWVzdGlvbnMgPVxuICAoYXR0ZW5kZWVJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyBzdW1taXQgfVxuICAgIH0gPSBnZXRTdGF0ZSgpO1xuXG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBwYWdlOiAxLFxuICAgICAgcGVyX3BhZ2U6IEZJRlRZX1BFUl9QQUdFLFxuICAgICAgZXhwYW5kOiBcIipzdWJfcXVlc3Rpb25fcnVsZXMsKnN1Yl9xdWVzdGlvbiwqdmFsdWVzXCIsXG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBcInRpY2tldHNfZXhjbHVkZV9pbmFjdGl2ZXM9PXRydWVcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzLyR7c3VtbWl0LmlkfS9hdHRlbmRlZXMvJHthdHRlbmRlZUlkfS9hbGxvd2VkLWV4dHJhLXF1ZXN0aW9uc2A7XG5cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS50aGVuKCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0ID1cbiAgKHRpY2tldElkLCBvcmRlcklkKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyLHByb21vX2NvZGVcIixcbiAgICAgIHJlbGF0aW9uczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmUscHJvbW9fY29kZS5ub25lLHRpY2tldF90eXBlLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGUscHJvbW9fY29kZS5pZCxwcm9tb19jb2RlLmNvZGUscHJvbW9fY29kZS5hbGxvd3NfdG9fZGVsZWdhdGUscHJvbW9fY29kZS5hbGxvd3NfdG9fcmVhc3NpZ24sdGlja2V0X3R5cGUuaWQsdGlja2V0X3R5cGUubmFtZSx0aWNrZXRfdHlwZS5hbGxvd3NfdG9fZGVsZWdhdGUsdGlja2V0X3R5cGUuYWxsb3dzX3RvX3JlYXNzaWduLHRpY2tldF90eXBlLmNvc3QsdGlja2V0X3R5cGUuY3JlYXRlZFwiXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZHBvaW50ID0gYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH1gO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUNFSVZFX1RJQ0tFVCksXG4gICAgICBlbmRwb2ludCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmNvbnN0IG5vcm1hbGl6ZVRpY2tldCA9IChlbnRpdHkpID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IHsgLi4uZW50aXR5IH07XG5cbiAgaWYgKCFlbnRpdHkuYXR0ZW5kZWVfY29tcGFueS5pZCkge1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueSA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnk7XG4gICAgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55X2lkID0gZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQ7XG4gIH1cblxuICByZXR1cm4gbm9ybWFsaXplZEVudGl0eTtcbn07XG5cbmV4cG9ydCBjb25zdCByZWZyZXNoUHJvZmlsZSA9XG4gIChkYXRhLCBjb21wYW55LCB0aWNrZXRPd25lcikgPT5cbiAgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyB1cGRhdGVQcm9maWxlIH0pID0+IHtcbiAgICBjb25zdCB7XG4gICAgICB3aWRnZXRTdGF0ZTogeyB1c2VyIH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB7IHVzZXJQcm9maWxlIH0gPSB1c2VyO1xuXG4gICAgLy8gZW1haWwgc2hvdWxkIG1hdGNoICggb25seSB1cGRhdGUgbXkgcHJvZmlsZSBpcyB0aWNrZXQgYmVsb25ncyB0byBtZSEpXG4gICAgLy8gYW5kIGlmIHRoZSB0aWNrZXQgZG9lc24ndCBoYXZlIGEgbWFuYWdlclxuICAgIC8vIENoZWNrIGlmIHRoZXJlJ3MgY2hhbmdlcyBpbiB0aGUgdGlja2V0IGRhdGEgdG8gdXBkYXRlIHRoZSBwcm9maWxlXG4gICAgY29uc3Qge1xuICAgICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgYXR0ZW5kZWVfY29tcGFueVxuICAgIH0gPSBkYXRhO1xuICAgIGNvbnN0IGhhc01hbmFnZXIgPSB0aWNrZXRPd25lcj8ubWFuYWdlcj8uaWQgfHwgdGlja2V0T3duZXI/Lm1hbmFnZXJfaWQ7XG4gICAgY29uc3QgaXRzTWUgPSB1c2VyUHJvZmlsZS5lbWFpbCA9PT0gYXR0ZW5kZWVfZW1haWw7XG4gICAgY29uc3QgcHJvZmlsZUNoYW5nZWQgPVxuICAgICAgYXR0ZW5kZWVfY29tcGFueS5uYW1lICE9PSBjb21wYW55IHx8XG4gICAgICBhdHRlbmRlZV9maXJzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5maXJzdF9uYW1lIHx8XG4gICAgICBhdHRlbmRlZV9sYXN0X25hbWUgIT09IHVzZXJQcm9maWxlLmxhc3RfbmFtZTtcblxuICAgIGlmIChpdHNNZSAmJiAhaGFzTWFuYWdlciAmJiBwcm9maWxlQ2hhbmdlZCkge1xuICAgICAgY29uc3QgbmV3UHJvZmlsZSA9IHtcbiAgICAgICAgZmlyc3RfbmFtZTogYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgICAgbGFzdF9uYW1lOiBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgICAgIGNvbXBhbnk6IGF0dGVuZGVlX2NvbXBhbnkubmFtZSB8fCBhdHRlbmRlZV9jb21wYW55XG4gICAgICB9O1xuXG4gICAgICAvLyB0aGlzIGlzIGEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgdXBkYXRlcyB1c2VyUHJvZmlsZSBpbiBBUEkgYW5kIGV2ZW50LXNpdGVcbiAgICAgIHVwZGF0ZVByb2ZpbGUobmV3UHJvZmlsZSk7XG4gICAgfVxuICB9O1xuXG5leHBvcnQgY29uc3Qgc2F2ZVRpY2tldERldGFpbHMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgaWRUb2tlbiA9IGdldElkVG9rZW4oKTtcbiAgICBsZXQgY29tcGFueSA9IFwiXCI7XG4gICAgaWYgKGlkVG9rZW4pIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHZlcmlmaWVyID0gbmV3IElkVG9rZW5WZXJpZmllcigpO1xuICAgICAgICBjb25zdCBqd3QgPSB2ZXJpZmllci5kZWNvZGUoaWRUb2tlbik7XG4gICAgICAgIGNvbXBhbnkgPSBqd3QucGF5bG9hZC5jb21wYW55O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGUpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBub3JtYWxpemVkRW50aXR5ID0gbm9ybWFsaXplVGlja2V0KGFuc3dlcnMpO1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgbm9ybWFsaXplZEVudGl0eSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHJlZnJlc2hQcm9maWxlKGFuc3dlcnMsIGNvbXBhbnksIHRpY2tldC5vd25lcikpO1xuICAgICAgfSlcbiAgICAgIC5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGFzc2lnbkF0dGVuZGVlID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBhdHRlbmRlZV9lbWFpbCwgbWVzc2FnZSA9IG51bGwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHsgYXR0ZW5kZWVfZW1haWwgfTtcbiAgICBpZiAobWVzc2FnZSkgcGF5bG9hZC5tZXNzYWdlID0gbWVzc2FnZTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oQVNTSUdOX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlbW92ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwib3JkZXIsIG93bmVyLCBvd25lci5leHRyYV9xdWVzdGlvbnMsIG9yZGVyLnN1bW1pdFwiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRU1PVkVfVElDS0VUX0FUVEVOREVFKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9L2F0dGVuZGVlYCxcbiAgICAgIHt9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZWFzc2lnblRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgICBkaXNwYXRjaChyZW1vdmVUaWNrZXQob3JkZXJJZCwgdGlja2V0SWQpKS50aGVuKCgpID0+XG4gICAgICBkaXNwYXRjaChhc3NpZ25BdHRlbmRlZShvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKVxuICAgICk7XG5cbmV4cG9ydCBjb25zdCB1bmFzc2lnblRpY2tldCA9IChvcmRlcklkLCB0aWNrZXRJZCkgPT4gYXN5bmMgKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChyZW1vdmVUaWNrZXQob3JkZXJJZCwgdGlja2V0SWQpKS50aGVuKCgpID0+IGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpKTtcblxuZXhwb3J0IGNvbnN0IGRlbGVnYXRlVGlja2V0ID1cbiAgKG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZTogZmlyc3ROYW1lLFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lOiBsYXN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2VtYWlsOiBlbWFpbFxuICAgIH07XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKERFTEVHQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9kZWxlZ2F0ZWAsXG4gICAgICBwYXlsb2FkLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkuZmluYWxseSgoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVFeHRyYVF1ZXN0aW9ucyA9XG4gICh0aWNrZXQsIGFuc3dlcnMpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcInJlZnVuZF9yZXF1ZXN0cyxvd25lcixvd25lci5leHRyYV9xdWVzdGlvbnMsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlLG9yZGVyXCIsXG4gICAgICByZWxhdGlvbnM6IFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5vbmVcIixcbiAgICAgIGZpZWxkczpcbiAgICAgICAgXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24uaWQsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLm5hbWUsb3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLnR5cGVcIlxuICAgIH07XG5cbiAgICByZXR1cm4gcHV0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oVVBEQVRFX1RJQ0tFVCksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzL2FsbC90aWNrZXRzLyR7dGlja2V0LmlkfWAsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKGFzeW5jICgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0UERGID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gb2JqZWN0VG9RdWVyeVN0cmluZyhwYXJhbXMpO1xuICAgIGNvbnN0IGFwaVVybCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9wZGY/JHtxdWVyeVN0cmluZ31gO1xuXG4gICAgcmV0dXJuIGZldGNoKGFwaVVybCwge1xuICAgICAgcmVzcG9uc2VUeXBlOiBcIkJsb2JcIixcbiAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9wZGZcIiB9XG4gICAgfSlcbiAgICAgIC50aGVuKChyZXNwb25zZSkgPT4ge1xuICAgICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgICAgdGhyb3cgcmVzcG9uc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLmJsb2IoKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC50aGVuKChwZGYpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcbiAgICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwocGRmKTtcbiAgICAgICAgbGluay5ocmVmID0gdXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gXCJ0aWNrZXQucGRmXCI7XG4gICAgICAgIGxpbmsuZGlzcGF0Y2hFdmVudChuZXcgTW91c2VFdmVudChcImNsaWNrXCIpKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIpO1xuICB9O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiQG11aS9tYXRlcmlhbC9CdXR0b25cIjtcbmltcG9ydCBEaWFsb2cgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nXCI7XG5pbXBvcnQgRGlhbG9nQWN0aW9ucyBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCI7XG5pbXBvcnQgRGlhbG9nQ29udGVudCBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCI7XG5pbXBvcnQgRGlhbG9nQ29udGVudFRleHQgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIjtcbmltcG9ydCBEaWFsb2dUaXRsZSBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZVwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5jb25zdCBDb25maXJtRGlhbG9nID0gKHsgb3BlbiwgdGl0bGUsIGJvZHksIG9uQ2xvc2UsIG9uQ29uZmlybSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxEaWFsb2dcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PVwiYWxlcnQtZGlhbG9nLXRpdGxlXCJcbiAgICAgIGFyaWEtZGVzY3JpYmVkYnk9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIlxuICAgID5cbiAgICAgIDxEaWFsb2dUaXRsZSBpZD1cImFsZXJ0LWRpYWxvZy10aXRsZVwiPnt0aXRsZX08L0RpYWxvZ1RpdGxlPlxuICAgICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgIDxEaWFsb2dDb250ZW50VGV4dCBpZD1cImFsZXJ0LWRpYWxvZy1kZXNjcmlwdGlvblwiPlxuICAgICAgICAgIHtib2R5fVxuICAgICAgICA8L0RpYWxvZ0NvbnRlbnRUZXh0PlxuICAgICAgPC9EaWFsb2dDb250ZW50PlxuICAgICAgPERpYWxvZ0FjdGlvbnM+XG4gICAgICAgIDxCdXR0b24gb25DbGljaz17b25DbG9zZX0+e3QoXCJnZW5lcmFsLmNhbmNlbFwiKX08L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvbiBvbkNsaWNrPXtvbkNvbmZpcm19IGF1dG9Gb2N1cz5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29uZmlybVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgPC9EaWFsb2c+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb25maXJtRGlhbG9nO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IENvbnRlbnRDb3B5SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiO1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgZGVmYXVsdFdpZHRoID0gOTA7XG5cbmNvbnN0IENvcHlUZXh0ID0gKHtcbiAgdGV4dCxcbiAgdG9vbHRpcFRleHQsXG4gIGhpZGVDb3B5ID0gZmFsc2UsXG4gIHRydW5jYXRlZCA9IHRydWUsXG4gIHJldmVyc2VkID0gZmFsc2UsXG4gIHdpZHRoID0gZGVmYXVsdFdpZHRoXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgdG9vbHRpcFRleHRUb1VzZSA9IHRvb2x0aXBUZXh0IHx8IHQoXCJnZW5lcmFsLmNvcHlfdG9fY2xpcGJvYXJkXCIpO1xuICBjb25zdCBbdG9vbHRpcCwgc2V0VG9vbHRpcF0gPSBSZWFjdC51c2VTdGF0ZSh0b29sdGlwVGV4dFRvVXNlKTtcbiAgY29uc3QgY2xhc3NOYW1lcyA9IGAke3RydW5jYXRlZCAmJiBzdHlsZXMudHJ1bmNhdGVkfSAke1xuICAgIHJldmVyc2VkICYmIHN0eWxlcy5yZXZlcnNlZFxuICB9YDtcblxuICBjb25zdCBoYW5kbGVDb3B5ID0gKCkgPT4ge1xuICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0KHRleHQpO1xuICAgIHNldFRvb2x0aXAodChcImdlbmVyYWwuY29waWVkXCIpKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFRvb2x0aXAodG9vbHRpcFRleHRUb1VzZSk7XG4gICAgfSwgTUlMTElTRUNfVE9fU0VDKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzTmFtZXN9IHN0eWxlPXt7IHdpZHRoIH19PlxuICAgICAgICB7dGV4dH1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIHshaGlkZUNvcHkgJiYgKFxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17dG9vbHRpcH0+XG4gICAgICAgICAgPENvbnRlbnRDb3B5SWNvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29weUljb259XG4gICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVDb3B5fVxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJjb3B5LW51bWJlci1idXR0b25cIlxuICAgICAgICAgIC8+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Db3B5VGV4dC5wcm9wVHlwZXMgPSB7XG4gIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHRvb2x0aXBUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBoaWRlQ29weTogUHJvcFR5cGVzLmJvb2wsXG4gIHRydW5jYXRlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHJldmVyc2VkOiBQcm9wVHlwZXMuYm9vbCxcbiAgd2lkdGg6IFByb3BUeXBlcy5udW1iZXJcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvcHlUZXh0O1xuIiwiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0ID0gY3JlYXRlQ29udGV4dChudWxsKTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEFsZXJ0LCBTbmFja2JhciwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5cbmNvbnN0IEN1c3RvbU5vdGlmaWNhdGlvbiA9ICh7IG9wZW4sIG9uQ2xvc2UsIG1lc3NhZ2UsIHNldmVyaXR5IH0pID0+IHtcbiAgaWYgKCFtZXNzYWdlKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxTbmFja2JhclxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBhbmNob3JPcmlnaW49e3sgdmVydGljYWw6IFwidG9wXCIsIGhvcml6b250YWw6IFwiY2VudGVyXCIgfX1cbiAgICAgIGF1dG9IaWRlRHVyYXRpb249ezIwMDB9XG4gICAgPlxuICAgICAgPEFsZXJ0XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIHNldmVyaXR5PXtzZXZlcml0eX1cbiAgICAgICAgdmFyaWFudD1cImZpbGxlZFwiXG4gICAgICAgIHN4PXt7IHdpZHRoOiBcIjEwMCVcIiwgYmFja2dyb3VuZENvbG9yOiBgJHtzZXZlcml0eX0ubGlnaHRgIH19XG4gICAgICAgIGljb25NYXBwaW5nPXt7XG4gICAgICAgICAgc3VjY2VzczogPENoZWNrQ2lyY2xlSWNvbiBmb250U2l6ZT1cImluaGVyaXRcIiAvPixcbiAgICAgICAgICBlcnJvcjogPEVycm9ySWNvbiBmb250U2l6ZT1cImluaGVyaXRcIiAvPlxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIj57bWVzc2FnZX08L1R5cG9ncmFwaHk+XG4gICAgICA8L0FsZXJ0PlxuICAgIDwvU25hY2tiYXI+XG4gICk7XG59O1xuXG5DdXN0b21Ob3RpZmljYXRpb24ucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldmVyaXR5OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21Ob3RpZmljYXRpb247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUaGVtZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmxldCBkYXJrQ29sb3IgPSBcIlwiO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgLy8gR2V0IHRoZSByb290IGVsZW1lbnRcbiAgY29uc3Qgcm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcblxuICAvLyBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiBhIENTUyB2YXJpYWJsZVxuICBkYXJrQ29sb3IgPSBnZXRDb21wdXRlZFN0eWxlKHJvb3QpLmdldFByb3BlcnR5VmFsdWUoXG4gICAgXCItLWNvbG9yX2JhY2tncm91bmRfZGFya1wiXG4gICk7XG59XG5cbmNvbnN0IHRoZW1lID0gY3JlYXRlVGhlbWUoe1xuICBwYWxldHRlOiB7XG4gICAgcHJpbWFyeToge1xuICAgICAgbWFpbjogZGFya0NvbG9yXG4gICAgfSxcbiAgICB0ZXh0OiB7XG4gICAgICBwcmltYXJ5OiBcIiMwMDAwMDBERVwiLFxuICAgICAgc2Vjb25kYXJ5OiBcIiMwMDAwMDA5OVwiLFxuICAgICAgbGluazogXCIjMjE5NmYzXCJcbiAgICB9XG4gIH0sXG4gIHR5cG9ncmFwaHk6IHtcbiAgICBib2R5MToge1xuICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxuICAgICAgZm9udFdlaWdodDogNDAwXG4gICAgfSxcbiAgICBoNToge1xuICAgICAgZm9udFNpemU6IFwiMS42ZW1cIixcbiAgICAgIGZvbnRXZWlnaHQ6IDQwMCxcbiAgICAgIFwiJi5NdWlUeXBvZ3JhcGh5LWd1dHRlckJvdHRvbVwiOiB7XG4gICAgICAgIG1hcmdpbkJvdHRvbTogXCIyMHB4XCJcbiAgICAgIH1cbiAgICB9LFxuICAgIGg2OiB7XG4gICAgICBmb250U2l6ZTogXCIxLjRlbVwiLFxuICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgXCImLk11aVR5cG9ncmFwaHktZ3V0dGVyQm90dG9tXCI6IHtcbiAgICAgICAgbWFyZ2luQm90dG9tOiBcIjIwcHhcIlxuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgY29tcG9uZW50czoge1xuICAgIE11aUZvcm1IZWxwZXJUZXh0OiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiLjhlbVwiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aUJ1dHRvbjoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiLFxuICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgICAgICBsaW5lSGVpZ2h0OiBcIjIycHhcIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlUYWI6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIxNHB4XCIsXG4gICAgICAgICAgY29sb3I6IFwiIzAwMDAwMDk5XCIsXG4gICAgICAgICAgXCImLk11aS1zZWxlY3RlZFwiOiB7XG4gICAgICAgICAgICBjb2xvcjogXCIjMjE5NmYzXCJcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE11aVRhYnM6IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIGluZGljYXRvcjoge1xuICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMjE5NmYzXCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufSk7XG5cbmNvbnN0IEN1c3RvbVRoZW1lID0gKHsgY2hpbGRyZW4gfSkgPT4gKFxuICA8VGhlbWVQcm92aWRlciB0aGVtZT17dGhlbWV9PntjaGlsZHJlbn08L1RoZW1lUHJvdmlkZXI+XG4pO1xuXG5DdXN0b21UaGVtZS5wcm9wVHlwZXMgPSB7XG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZS5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDdXN0b21UaGVtZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIENoZWNrYm94LFxuICBGb3JtQ29udHJvbCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgRm9ybUdyb3VwLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBvbkNoYW5nZSxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcbiAgY29uc3QgcXVlc3Rpb25NYXhWYWx1ZXMgPSBxdWVzdGlvbi5tYXhfc2VsZWN0ZWRfdmFsdWVzO1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgY29uc3QgaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlID0gKGNoZWNrZWQsIHZhbCkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnRBbnMgPSB2YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBtYXhTZWxlY3Rpb25SZWFjaGVkID1cbiAgICAgIHF1ZXN0aW9uTWF4VmFsdWVzICE9PSAwICYmIGN1cnJlbnRBbnMubGVuZ3RoID09PSBxdWVzdGlvbk1heFZhbHVlcztcbiAgICBsZXQgbmV3VmFsdWU7XG5cbiAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgbmV3VmFsdWUgPSBtYXhTZWxlY3Rpb25SZWFjaGVkID8gY3VycmVudEFucyA6IFsuLi5jdXJyZW50QW5zLCB2YWxdO1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXdWYWx1ZSA9IGN1cnJlbnRBbnMuZmlsdGVyKCh2KSA9PiB2ICE9PSB2YWwpO1xuICAgIH1cblxuICAgIHNldEZpZWxkVmFsdWUocXVlc3Rpb25TbHVnLCBuZXdWYWx1ZSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWw+e3F1ZXN0aW9uTGFiZWx9PC9Gb3JtTGFiZWw+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17dmFsdWU/LmluY2x1ZGVzKG9wLnZhbHVlKX1cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZXYpID0+XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZShldi50YXJnZXQuY2hlY2tlZCwgb3AudmFsdWUpXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0Zvcm1Hcm91cD5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmFycmF5LFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgQ2hlY2tib3hRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgdmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggbWFyZ2luPVwibm9ybWFsXCIgZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBzeD17eyBhbGlnbkl0ZW1zOiBcImZsZXgtc3RhcnRcIiB9fVxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAgICAgY2hlY2tlZD17ISF2YWx1ZX1cbiAgICAgICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgICAgIHN4PXt7IG1hcmdpblRvcDogLTEgfX1cbiAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17PFJhd0hUTUw+e3F1ZXN0aW9uTGFiZWx9PC9SYXdIVE1MPn1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgPC9Gb3JtQ29udHJvbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbkNoZWNrYm94UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHZhbHVlOiBQcm9wVHlwZXMuYm9vbCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEZvcm1Db250cm9sLCBJbnB1dExhYmVsLCBNZW51SXRlbSwgU2VsZWN0IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldExhYmVsLCB0b1NsdWcgfSBmcm9tIFwiLi91dGlsc1wiO1xuXG5jb25zdCBEcm9wZG93blF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkXG4gICAgfSkpIHx8IFtdO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8SW5wdXRMYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvSW5wdXRMYWJlbD5cbiAgICAgICAgPFNlbGVjdFxuICAgICAgICAgIGxhYmVsSWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBpZD17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgICAgc3R5bGU9e3sgbWFyZ2luQm90dG9tOiAyMCB9fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXtvcC5sYWJlbH0gdmFsdWU9e29wLnZhbHVlfT5cbiAgICAgICAgICAgICAge29wLmxhYmVsfVxuICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TZWxlY3Q+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5Ecm9wZG93blF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0LFxuICBGb3JtTGFiZWwsXG4gIFJhZGlvLFxuICBSYWRpb0dyb3VwXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgUmFkaW9MaXN0UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgY29uc3QgcXVlc3Rpb25PcHRpb25zID1cbiAgICBxdWVzdGlvbi52YWx1ZXM/Lm1hcCgodmFsKSA9PiAoe1xuICAgICAgbGFiZWw6IHZhbC5sYWJlbCxcbiAgICAgIHZhbHVlOiB2YWwuaWQudG9TdHJpbmcoKVxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPEZvcm1MYWJlbCBpZD17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9PntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8UmFkaW9Hcm91cFxuICAgICAgICAgIGFyaWEtbGFiZWxsZWRieT17YCR7cXVlc3Rpb25TbHVnfV9sYWJlbGB9XG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnJlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7cXVlc3Rpb25PcHRpb25zLm1hcCgob3ApID0+IChcbiAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgIGtleT17b3AubGFiZWx9XG4gICAgICAgICAgICAgIHZhbHVlPXtvcC52YWx1ZX1cbiAgICAgICAgICAgICAgY29udHJvbD17PFJhZGlvIC8+fVxuICAgICAgICAgICAgICBsYWJlbD17b3AubGFiZWx9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkpfVxuICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5SYWRpb0xpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIFRleHRGaWVsZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgVGV4dFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBzZXRGaWVsZFZhbHVlLFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtR3JvdXA+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgbGFiZWw9e3F1ZXN0aW9uTGFiZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAvPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Hcm91cD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cblRleHRRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUZXh0UXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrUnVsZSA9ICh2YWx1ZSwgcnVsZSkgPT4ge1xuICBjb25zdCB2YWx1ZXMgPSBydWxlLmFuc3dlcl92YWx1ZXM7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIGZhbHNlO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIGlmICghdmFsdWUubGVuZ3RoKSByZXR1cm4gZmFsc2U7XG4gICAgbGV0IHJlcyA9IHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIjtcbiAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgaWYgKHJ1bGUuYW5zd2VyX3ZhbHVlc19vcGVyYXRvciA9PT0gXCJBbmRcIikge1xuICAgICAgICByZXMgPSByZXMgJiYgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPclxuICAgICAgICByZXMgPSByZXMgfHwgdmFsdWUuaW5jbHVkZXModik7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICByZXR1cm4gdmFsdWVzLmluY2x1ZGVzKHZhbHVlPy50b1N0cmluZygpKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja1Zpc2liaWxpdHkgPSAocnVsZSwgcnVsZVJlc3VsdCkgPT4ge1xuICBpZiAocnVsZS52aXNpYmlsaXR5ID09PSBcIlZpc2libGVcIikge1xuICAgIGlmIChydWxlLnZpc2liaWxpdHlfY29uZGl0aW9uID09PSBcIkVxdWFsXCIpIHtcbiAgICAgIHJldHVybiAhIXJ1bGVSZXN1bHQ7XG4gICAgfVxuICAgIC8vIE5vbiBFcXVhbFxuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICAvLyBub3QgdmlzaWJsZVxuICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgcmV0dXJuICFydWxlUmVzdWx0O1xuICB9XG4gIHJldHVybiAhIXJ1bGVSZXN1bHQ7XG59O1xuXG5leHBvcnQgY29uc3QgdG9TbHVnID0gKHRleHQsIHF1ZXN0aW9uSWQpID0+IHtcbiAgY29uc3QgdGV4dExDID0gdGV4dC50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gYCR7dGV4dExDLnJlcGxhY2UoL1teYS16QS1aMC05XSsvZywgXCJfXCIpfV8ke3F1ZXN0aW9uSWR9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRMYWJlbCA9IChxKSA9PlxuICAvLyByZXBsYWNlIGxpbmUgYnJlYWtzIGFuZCByZW1vdmUgb3V0ZXIgPHA+XG4gIHE/LmxhYmVsPy5yZXBsYWNlKC9cXG4vZywgXCIgXCIpLnJlcGxhY2UoLzxwPiguKik8XFwvcD4vZ2ksIFwiJDFcIik7XG5cbmV4cG9ydCBjb25zdCBpc0Fuc3dlcmVkID0gKGFuc3dlcikgPT4ge1xuICBpZiAoIWFuc3dlcikgcmV0dXJuIGZhbHNlO1xuICAvLyBjaGVjayB0eXBlXG4gIGlmIChBcnJheS5pc0FycmF5KGFuc3dlcikpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwic3RyaW5nXCIpIHJldHVybiBhbnN3ZXIubGVuZ3RoID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwibnVtYmVyXCIpIHJldHVybiBhbnN3ZXIgPiAwO1xuICBpZiAodHlwZW9mIGFuc3dlciA9PT0gXCJib29sZWFuXCIpIHJldHVybiBhbnN3ZXI7XG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBjb25zdCBjaGVja0lmVmFsdWVNYXRjaCA9IChhbnN3ZXIsIGNvbXBhcmVWYWwpID0+IHtcbiAgY29uc3QgYW5zd2VyQXJyYXkgPSBBcnJheS5pc0FycmF5KGFuc3dlcikgPyBhbnN3ZXIgOiBbYW5zd2VyXTtcblxuICByZXR1cm4gYW5zd2VyQXJyYXkuc29tZSgodikgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KGNvbXBhcmVWYWwpKSB7XG4gICAgICByZXR1cm4gY29tcGFyZVZhbC5pbmNsdWRlcyhgJHt2fWApO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dn1gID09PSBgJHtjb21wYXJlVmFsfWA7XG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVJbml0aWFsVmFsdWUgPSAocSkgPT4ge1xuICBzd2l0Y2ggKHEudHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlVmFsdWUgPSAoYW5zLCB0eXBlKSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OlxuICAgICAgcmV0dXJuIGFucyA9PT0gXCJ0cnVlXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OlxuICAgICAgcmV0dXJuIGFucz8uc3BsaXQoXCIsXCIpIHx8IFtdO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveDpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db21ib0JveDpcbiAgICAgIHJldHVybiBhbnMgfHwgXCJcIjtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gYW5zIHx8IG51bGw7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBhbnM7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgPSAoYW5zd2VycykgPT4ge1xuICBjb25zdCB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIC4uLmV4dHJhX3F1ZXN0aW9uc1xuICB9ID0gYW5zd2VycztcblxuICBjb25zdCBmb3JtYXR0ZWRFUSA9IE9iamVjdC5lbnRyaWVzKGV4dHJhX3F1ZXN0aW9ucykubWFwKChba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgcXVlc3Rpb25faWQ6IHBhcnNlSW50KGtleS5zcGxpdChcIl9cIikucG9wKCksIDEwKSxcbiAgICBhbnN3ZXI6IHZhbHVlPy50b1N0cmluZygpIHx8IG51bGxcbiAgfSkpO1xuXG4gIHJldHVybiB7XG4gICAgYXR0ZW5kZWVfZW1haWwsXG4gICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICBhdHRlbmRlZV9sYXN0X25hbWUsXG4gICAgYXR0ZW5kZWVfY29tcGFueSxcbiAgICBkaXNjbGFpbWVyX2FjY2VwdGVkLFxuICAgIGV4dHJhX3F1ZXN0aW9uczogZm9ybWF0dGVkRVFcbiAgfTtcbn07XG4iLCJleHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHQgPSBcIlRleHRcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfVGV4dEFyZWEgPSBcIlRleHRBcmVhXCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrYm94ID0gXCJDaGVja0JveFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QgPSBcIlJhZGlvQnV0dG9uTGlzdFwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9Db21ib0JveCA9IFwiQ29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0ID0gXCJDaGVja0JveExpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94ID0gXCJDb3VudHJ5Q29tYm9Cb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24gPSBcIlJhZGlvQnV0dG9uXCI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5cbmltcG9ydCB7XG4gIHRvU2x1ZyxcbiAgaXNBbnN3ZXJlZCxcbiAgY2hlY2tWaXNpYmlsaXR5LFxuICBjaGVja1J1bGVcbn0gZnJvbSBcIi4vY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHtcbiAgUXVlc3Rpb25UeXBlX0NoZWNrYm94LFxuICBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0LFxuICBRdWVzdGlvblR5cGVfQ29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3gsXG4gIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QsXG4gIFF1ZXN0aW9uVHlwZV9UZXh0LFxuICBRdWVzdGlvblR5cGVfVGV4dEFyZWFcbn0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgVGV4dFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9SYWRpb0xpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZCBmcm9tIFwiLi9jb21wb25lbnRzL0NoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBEcm9wZG93blF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9Ecm9wZG93blF1ZXN0aW9uRmllbGRcIjtcblxuY29uc3QgZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IChxdWVzdGlvblR5cGUpID0+IHtcbiAgc3dpdGNoIChxdWVzdGlvblR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0QXJlYTpcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9UZXh0OiB7XG4gICAgICByZXR1cm4gVGV4dFF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrYm94OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6IHtcbiAgICAgIHJldHVybiBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6IHtcbiAgICAgIHJldHVybiBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6IHtcbiAgICAgIHJldHVybiBEcm9wZG93blF1ZXN0aW9uRmllbGQ7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBSZWFjdC5GcmFnbWVudDtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IEV4dHJhUXVlc3Rpb25zRmllbGRzID0gKHtcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGNsYXNzTmFtZSA9IFwiZXh0cmFRdWVzdGlvbnNcIixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25cIixcbiAgcmVhZE9ubHkgPSBmYWxzZSxcbiAgYWxsb3dFZGl0ID0gdHJ1ZSxcbiAgZm9ybWlrXG59KSA9PiB7XG4gIGNvbnN0IHJlbmRlclJ1bGUgPSAocnVsZSwgcXVlc3Rpb25TbHVnKSA9PiB7XG4gICAgY29uc3QgcnVsZVJlc3VsdCA9IGNoZWNrUnVsZShmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sIHJ1bGUpO1xuICAgIGNvbnN0IGlzVmlzaWJsZSA9IGNoZWNrVmlzaWJpbGl0eShydWxlLCBydWxlUmVzdWx0KTtcblxuICAgIGlmIChpc1Zpc2libGUpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11c2UtYmVmb3JlLWRlZmluZVxuICAgICAgcmV0dXJuIHJlbmRlclF1ZXN0aW9uKHJ1bGUuc3ViX3F1ZXN0aW9uKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfTtcblxuICBjb25zdCByZW5kZXJRdWVzdGlvbiA9IChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgLy8gZGlzYWJsZSBmaWVsZCBpZiBlZGl0IGlzbid0IGFsbG93ZWQgYW5kIHRoZSBxdWVzdGlvbnMgaXMgYW5zd2VyZWRcbiAgICBjb25zdCBpc0Rpc2FibGVkID1cbiAgICAgICghYWxsb3dFZGl0ICYmIGlzQW5zd2VyZWQoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddKSkgfHwgcmVhZE9ubHk7XG4gICAgY29uc3QgUXVlc3Rpb25GaWVsZENvbXBvbmVudCA9IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQocS50eXBlKTtcblxuICAgIGNvbnN0IGZvcm1pa1Byb3BzID0ge1xuICAgICAgdmFsdWU6IGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIG9uQ2hhbmdlOiBmb3JtaWsuaGFuZGxlQ2hhbmdlLFxuICAgICAgb25CbHVyOiBmb3JtaWsuaGFuZGxlQmx1cixcbiAgICAgIGVycm9yOlxuICAgICAgICBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIEJvb2xlYW4oZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddKSxcbiAgICAgIGhlbHBlclRleHQ6IGZvcm1pay50b3VjaGVkW3F1ZXN0aW9uU2x1Z10gJiYgZm9ybWlrLmVycm9yc1txdWVzdGlvblNsdWddLFxuICAgICAgc2V0RmllbGRWYWx1ZTogZm9ybWlrLnNldEZpZWxkVmFsdWVcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxRdWVzdGlvbkZpZWxkQ29tcG9uZW50XG4gICAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgICBxdWVzdGlvbj17cX1cbiAgICAgICAgcXVlc3Rpb25DbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgICAgICBpc0Rpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICB7Li4uZm9ybWlrUHJvcHN9XG4gICAgICA+XG4gICAgICAgIHtxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubWFwKChydWxlKSA9PiByZW5kZXJSdWxlKHJ1bGUsIHF1ZXN0aW9uU2x1ZykpfVxuICAgICAgPC9RdWVzdGlvbkZpZWxkQ29tcG9uZW50PlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWV9PntleHRyYVF1ZXN0aW9ucy5tYXAocmVuZGVyUXVlc3Rpb24pfTwvZGl2Pjtcbn07XG5cbkV4dHJhUXVlc3Rpb25zRmllbGRzLnByb3BUeXBlcyA9IHtcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBhbGxvd0VkaXQ6IFByb3BUeXBlcy5ib29sLFxuICByZWFkT25seTogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEV4dHJhUXVlc3Rpb25zRmllbGRzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEFzc2lnbmVkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJNZVwiLCBsYWJlbDogXCJNZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJTb21lb25lRWxzZVwiLCBsYWJlbDogXCJTb21lb25lIEVsc2VcIiB9LFxuICAgIHsgdmFsdWU6IFwiTm9ib2R5XCIsIGxhYmVsOiBcIk5vYm9keVwiIH1cbiAgXTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAoZXYsIHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVyID0gdmFsdWU7XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogbmV3RmlsdGVyXG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJBc3NpZ25lZFwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Bc3NpZ25lZEZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduZWRGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDaGVja2JveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgQmFkZ2VGZWF0dXJlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IGJhZGdlX2ZlYXR1cmVzX3R5cGVzIH0sXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJCYWRnZSBGZWF0dXJlXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtiYWRnZV9mZWF0dXJlc190eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkJhZGdlRmVhdHVyZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQmFkZ2VGZWF0dXJlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgRmlsdGVyTGlzdEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRmlsdGVyTGlzdFwiO1xuaW1wb3J0IHtcbiAgQmFkZ2UsXG4gIEJveCxcbiAgQnV0dG9uLFxuICBDYXJkLFxuICBDYXJkSGVhZGVyLFxuICBEaXZpZGVyLFxuICBQYXBlclxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IEJhZGdlRmVhdHVyZUZpbHRlciBmcm9tIFwiLi9CYWRnZUZlYXR1cmVGaWx0ZXJcIjtcbmltcG9ydCB7XG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1BST01PQ09ERSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEVcbn0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBUaWNrZXRUeXBlRmlsdGVyIGZyb20gXCIuL1RpY2tldFR5cGVGaWx0ZXJcIjtcbmltcG9ydCBBc3NpZ25lZEZpbHRlciBmcm9tIFwiLi9Bc3NpZ25lZEZpbHRlclwiO1xuaW1wb3J0IFN0YXR1c0ZpbHRlciBmcm9tIFwiLi9TdGF0dXNGaWx0ZXJcIjtcbmltcG9ydCBGcmVlUGFpZEZpbHRlciBmcm9tIFwiLi9GcmVlUGFpZEZpbHRlclwiO1xuaW1wb3J0IFByb21vQ29kZUZpbHRlciBmcm9tIFwiLi9Qcm9tb0NvZGVGaWx0ZXJcIjtcblxuY29uc3QgRmlsdGVyID0gKHsgb25GaWx0ZXIsIG9uUmVzZXQsIGZpbHRlciwgYWN0aXZlRmlsdGVyc0NvdW50IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbc2hvd0ZpbHRlckxpc3QsIHNldFNob3dGaWx0ZXJMaXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3Nob3dEYXRlcGlja2VyLCBzZXRTaG93RGF0ZXBpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKGZpbHRlclJlZi5jdXJyZW50ICYmICFmaWx0ZXJSZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQpKSB7XG4gICAgICBpZiAoc2hvd0ZpbHRlckxpc3QpIHtcbiAgICAgICAgc2V0U2hvd0ZpbHRlckxpc3QoZmFsc2UpO1xuICAgICAgICBzZXRTaG93RGF0ZXBpY2tlcihmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93RmlsdGVyTGlzdF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93RmlsdGVyTGlzdCghc2hvd0ZpbHRlckxpc3QpO1xuICAgIHNldFNob3dEYXRlcGlja2VyKCFzaG93RGF0ZXBpY2tlcik7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyUmVzZXQgPSAoKSA9PiB7XG4gICAgb25SZXNldCgpO1xuICAgIHRvZ2dsZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJDb250YWluZXJ9IHJlZj17ZmlsdGVyUmVmfT5cbiAgICAgIDxTdGFja1xuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZX1cbiAgICAgID5cbiAgICAgICAgPEJhZGdlIGJhZGdlQ29udGVudD17YWN0aXZlRmlsdGVyc0NvdW50fSBjb2xvcj1cInByaW1hcnlcIiBzeD17eyBtcjogMSB9fT5cbiAgICAgICAgICA8RmlsdGVyTGlzdEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckljb259IC8+XG4gICAgICAgIDwvQmFkZ2U+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckxhYmVsfT57dChcImZpbHRlci5maWx0ZXJcIil9PC9zcGFuPlxuICAgICAgPC9TdGFjaz5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZmlsdGVyTGlzdENvbnRhaW5lcn0gJHtzdHlsZXMuY29udGFpbmVyfSAke1xuICAgICAgICAgIHNob3dGaWx0ZXJMaXN0ID8gc3R5bGVzLnNob3dGaWx0ZXJMaXN0IDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgID5cbiAgICAgICAgPFBhcGVyIGVsZXZhdGlvbj17OH0gY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ2hlY2tib3hDb250YWluZXJ9PlxuICAgICAgICAgIDxDYXJkIHZhcmlhbnQ9XCJvdXRsaW5lZFwiPlxuICAgICAgICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgICAgICAgdGl0bGU9XCJGaWx0ZXJzXCJcbiAgICAgICAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVGaWx0ZXJSZXNldH1cbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsZWFuQnV0dG9ufVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHt0KFwiZmlsdGVyLmNsZWFyXCIpfVxuICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPERpdmlkZXIgLz5cbiAgICAgICAgICAgIDxCYWRnZUZlYXR1cmVGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEFzc2lnbmVkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFN0YXR1c0ZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX09XTkVSX1NUQVRVU119XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxUaWNrZXRUeXBlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8UHJvbW9Db2RlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPEZyZWVQYWlkRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ2FyZD5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlcixcbiAgYWN0aXZlRmlsdGVyc0NvdW50OiB3aWRnZXRTdGF0ZS5hY3RpdmVGaWx0ZXJzQ291bnRcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywge30pKEZpbHRlcik7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgRnJlZVBhaWRGaWx0ZXIgPSAoeyBvbkZpbHRlciB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9GUkVFX1BBSUQ6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzKTtcblxuICBjb25zdCBhc3NpZ25lZFZhbHVlcyA9IFtcbiAgICB7IHZhbHVlOiBcIkZyZWVcIiwgbGFiZWw6IFwiRnJlZVwiIH0sXG4gICAgeyB2YWx1ZTogXCJQYWlkXCIsIGxhYmVsOiBcIlBhaWRcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX0ZSRUVfUEFJRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiRnJlZSAvIFBhaWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuRnJlZVBhaWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZyZWVQYWlkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFRleHRGaWVsZFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgUHJvbW9Db2RlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfUFJPTU9DT0RFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG4gIGNvbnN0IFtwcm9tb0NvZGUsIHNldFByb21vQ29kZV0gPSB1c2VTdGF0ZShmaWx0ZXJWYWx1ZXMgfHwgXCJcIik7XG5cbiAgY29uc3QgZGVib3VuY2VUaW1lciA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgREVCT1VOQ0VfVkFMVUUgPSA1MDA7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRQcm9tb0NvZGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2KSA9PiB7XG4gICAgY29uc3QgbmV3UHJvbW9Db2RlID0gZXYudGFyZ2V0LnZhbHVlO1xuICAgIC8vIHVwZGF0ZSBsb2NhbCBzdGF0ZSBzbyB0aGUgaW5wdXQgcmVmbGVjdHMgY2hhbmdlc1xuICAgIHNldFByb21vQ29kZShuZXdQcm9tb0NvZGUpO1xuXG4gICAgLy8gcmVtb3ZlIGN1cnJlbnQgZGVib3VuY2VcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG5cbiAgICAvLyBkZWJvdW5jZSBzZXQgdG8gNTAwIG1zXG4gICAgZGVib3VuY2VUaW1lci5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBvbkZpbHRlcih7XG4gICAgICAgIFtGSUxURVJfVkFSX1BST01PQ09ERV06IG5ld1Byb21vQ29kZVxuICAgICAgfSk7XG4gICAgfSwgREVCT1VOQ0VfVkFMVUUpO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gcmVtb3ZlIGRlYm91bmNlIG9uIHJlbG9hZFxuICAgIGlmIChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpIHtcbiAgICAgIGNsZWFyVGltZW91dChkZWJvdW5jZVRpbWVyLmN1cnJlbnQpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiUHJvbW8gQ29kZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcHk6IDFcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiRW50ZXIgcHJvbW8gY29kZVwiXG4gICAgICAgICAgICB2YWx1ZT17cHJvbW9Db2RlfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX1cbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUHJvbW9Db2RlRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBQcm9tb0NvZGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCI7XG5pbXBvcnQgU2VhcmNoSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9TZWFyY2hcIjtcbmltcG9ydCBDbG9zZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIjtcbmltcG9ydCBJbnB1dEJhc2UgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBTZWFyY2hDb250YWluZXIgPSBzdHlsZWQoXCJkaXZcIikoKCkgPT4gKHtcbiAgcG9zaXRpb246IFwicmVsYXRpdmVcIixcbiAgbWFyZ2luUmlnaHQ6IFwiMFwiLFxuICBtYXJnaW5MZWZ0OiBcIjBcIixcbiAgd2lkdGg6IFwiMTAwJVwiLFxuICBkaXNwbGF5OiBcImJsb2NrXCJcbn0pKTtcbmNvbnN0IFNlYXJjaEljb25XcmFwcGVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIlxufSkpO1xuY29uc3QgU3R5bGVkSW5wdXRCYXNlID0gc3R5bGVkKElucHV0QmFzZSkoKCkgPT4gKHtcbiAgY29sb3I6IFwiaW5oZXJpdFwiLFxuICBib3JkZXJCb3R0b206IFwiMXB4IHNvbGlkIHJnYmEoMCwgMCwgMCwgMC40MilcIixcbiAgcGFkZGluZ0xlZnQ6IFwiMjVweFwiLFxuICBwYWRkaW5nUmlnaHQ6IFwiMjVweFwiLFxuICBmb250U2l6ZTogXCIxZW1cIlxufSkpO1xuY29uc3QgQ2xvc2VJY29uV3JhcHBlciA9IHN0eWxlZChDbG9zZUljb24pKCgpID0+ICh7XG4gIHBhZGRpbmc6IFwiMnB4XCIsXG4gIGZvbnRTaXplOiBcIjEuNWVtXCIsXG4gIGhlaWdodDogXCIxMDAlXCIsXG4gIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gIHRvcDogXCIwXCIsXG4gIHJpZ2h0OiBcIjBcIixcbiAgZGlzcGxheTogXCJmbGV4XCIsXG4gIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICBjdXJzb3I6IFwicG9pbnRlclwiLFxuICB6SW5kZXg6IFwiMTAwMFwiXG59KSk7XG5cbmNvbnN0IFNlYXJjaCA9ICh7IG9uU2VhcmNoIH0pID0+IHtcbiAgY29uc3QgeyBmaWx0ZXIgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sXG4gICAgc2hhbGxvd0VxdWFsXG4gICk7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3NlYXJjaFZhbHVlLCBzZXRTZWFyY2hWYWx1ZV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qgc2hvd0Nsb3NlQnRuID0gISFmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdO1xuXG4gIGNvbnN0IG9uS2V5RG93biA9IChldmVudCkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIGtleSxcbiAgICAgIG5hdGl2ZUV2ZW50OiB7XG4gICAgICAgIHRhcmdldDogeyB2YWx1ZSB9XG4gICAgICB9XG4gICAgfSA9IGV2ZW50O1xuICAgIGlmIChrZXkgPT09IFwiRW50ZXJcIikge1xuICAgICAgb25TZWFyY2goe1xuICAgICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiB2YWx1ZVxuICAgICAgfSk7XG4gICAgfVxuICB9O1xuICBjb25zdCByZXNldFNlYXJjaCA9ICgpID0+IHtcbiAgICBzZXRTZWFyY2hWYWx1ZShcIlwiKTtcbiAgICBvblNlYXJjaCh7XG4gICAgICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiXG4gICAgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyB3ZSBuZWVkIHRoaXMgd2hlbiBzZWFyY2ggaXMgcmVzZXQgZnJvbSBvdXRzaWRlIHRoaXMgY29tcG9uZW50XG4gICAgc2V0U2VhcmNoVmFsdWUoZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXSk7XG4gIH0sIFtmaWx0ZXJbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPFNlYXJjaENvbnRhaW5lcj5cbiAgICAgICAge3Nob3dDbG9zZUJ0biAmJiAoXG4gICAgICAgICAgPENsb3NlSWNvbldyYXBwZXIgb25DbGljaz17cmVzZXRTZWFyY2h9PlxuICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgIDwvQ2xvc2VJY29uV3JhcHBlcj5cbiAgICAgICAgKX1cbiAgICAgICAgPFNlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICAgIDxTZWFyY2hJY29uIC8+XG4gICAgICAgIDwvU2VhcmNoSWNvbldyYXBwZXI+XG4gICAgICAgIDxTdHlsZWRJbnB1dEJhc2VcbiAgICAgICAgICBwbGFjZWhvbGRlcj17dChcIm9yZGVyX3NlYXJjaC5vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgaW5wdXRQcm9wcz17eyBcImFyaWEtbGFiZWxcIjogXCJzZWFyY2hcIiB9fVxuICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNldFNlYXJjaFZhbHVlKGUudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICBvbktleURvd249e29uS2V5RG93bn1cbiAgICAgICAgLz5cbiAgICAgIDwvU2VhcmNoQ29udGFpbmVyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuU2VhcmNoLnByb3BUeXBlcyA9IHtcbiAgb25TZWFyY2g6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBTZWFyY2g7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBQYXBlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgSW1wb3J0RXhwb3J0SWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU29ydCA9ICh7IG9uU29ydCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dTb3J0LCBzZXRTaG93U29ydF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNvcnRSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVNvcnRDbGlja091dHNpZGUgPSAoZXZlbnQpID0+IHtcbiAgICBpZiAoc29ydFJlZi5jdXJyZW50ICYmICFzb3J0UmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgc2V0U2hvd1NvcnQoZmFsc2UpO1xuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlU29ydENsaWNrT3V0c2lkZSwgZmFsc2UpO1xuICAgIH07XG4gIH0sIFtzaG93U29ydF0pO1xuXG4gIGNvbnN0IHRvZ2dsZSA9ICgpID0+IHtcbiAgICBzZXRTaG93U29ydCghc2hvd1NvcnQpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuc29ydENvbnRhaW5lcn0gb25DbGljaz17dG9nZ2xlfT5cbiAgICAgIDxTdGFja1xuICAgICAgICByZWY9e3NvcnRSZWZ9XG4gICAgICAgIGFsaWduSXRlbXM9XCJjZW50ZXJcIlxuICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICAgID5cbiAgICAgICAgPEltcG9ydEV4cG9ydEljb24gZm9udFNpemU9XCJsYXJnZVwiIGNsYXNzTmFtZT17c3R5bGVzLnNvcnRJY29ufSAvPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0TGFiZWx9Pnt0KFwic29ydC5zb3J0XCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICB7c2hvd1NvcnQgJiYgKFxuICAgICAgICA8UGFwZXJcbiAgICAgICAgICBlbGV2YXRpb249ezh9XG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc29ydExpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn1gfVxuICAgICAgICA+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9XG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvblNvcnQoeyBkaXJlY3Rpb246IFwiZGVzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQubmV3X2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImFzY1wiLCBuYW1lOiBcImNyZWF0ZWRcIiB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInNvcnQub2xkX2ZpcnN0XCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L1BhcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFNvcnQ7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBSYWRpb0dyb3VwLFxuICBSYWRpb1xufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU3RhdHVzRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJJbmNvbXBsZXRlXCIsIGxhYmVsOiBcIkluY29tcGxldGVcIiB9LFxuICAgIHsgdmFsdWU6IFwiQ29tcGxldGVcIiwgbGFiZWw6IFwiQ29tcGxldGVcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX09XTkVSX1NUQVRVU106IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiU3RhdHVzXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblN0YXR1c0ZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3RhdHVzRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfVElDS0VUX1RZUEUgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBUaWNrZXRUeXBlRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgc3VtbWl0OiB7IHRpY2tldF90eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9ICh2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSBmaWx0ZXJWYWx1ZXM/LmluY2x1ZGVzKHZhbHVlKVxuICAgICAgPyBmaWx0ZXJWYWx1ZXMuZmlsdGVyKChmKSA9PiBmICE9PSB2YWx1ZSlcbiAgICAgIDogWy4uLmZpbHRlclZhbHVlcywgdmFsdWVdO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXTogbmV3RmlsdGVyc1xuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0SXNFeHBhbmRlZCghIWZpbHRlclZhbHVlcy5sZW5ndGgpO1xuICB9LCBbZmlsdGVyVmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPENhcmRIZWFkZXJcbiAgICAgICAgdGl0bGU9XCJUaWNrZXQgVHlwZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7dGlja2V0X3R5cGVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgIDxCb3ggc3g9e3sgcHk6IDEgfX0ga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHtiZi5uYW1lfX1gfT5cbiAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KCkgPT4gaGFuZGxlRmlsdGVyQ2hhbmdlKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17ZmlsdGVyVmFsdWVzLmluY2x1ZGVzKGJmLmlkKX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogXCIjMjE5NkYzXCJcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBsYWJlbD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0VHlwZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0VHlwZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEZpbHRlciBmcm9tIFwiLi9GaWx0ZXJcIjtcbmltcG9ydCBTb3J0IGZyb20gXCIuL1NvcnRcIjtcbmltcG9ydCBTZWFyY2ggZnJvbSBcIi4vU2VhcmNoXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZpbHRlcnMgPSAoeyBvbkZpbHRlciwgb25Tb3J0LCBvblNlYXJjaCwgb25SZXNldCB9KSA9PiAoXG4gIDxHcmlkIGNvbnRhaW5lciBqdXN0aWZ5PVwiZmxleC1lbmRcIiBhbGlnbkl0ZW1zPVwiY2VudGVyXCI+XG4gICAgPEdyaWRcbiAgICAgIGl0ZW1cbiAgICAgIHhzPXs2fVxuICAgICAgY29udGFpbmVyXG4gICAgICBwYWRkaW5nPXsxfVxuICAgICAgZ2FwPXsyfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyU29ydENvbnRhaW5lcn1cbiAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgID5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxGaWx0ZXIgb25GaWx0ZXI9e29uRmlsdGVyfSBvblJlc2V0PXtvblJlc2V0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgaXRlbT5cbiAgICAgICAgPFNvcnQgb25Tb3J0PXtvblNvcnR9IC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICAgIDxHcmlkIGl0ZW0geHM9ezZ9IGNvbnRhaW5lciBqdXN0aWZ5Q29udGVudD1cImZsZXgtZW5kXCI+XG4gICAgICA8U2VhcmNoIG9uU2VhcmNoPXtvblNlYXJjaH0gLz5cbiAgICA8L0dyaWQ+XG4gIDwvR3JpZD5cbik7XG5cbkZpbHRlcnMucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU29ydDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25SZXNldDogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZpbHRlcnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgRm9ybUZvb3RlciA9ICh7IHNhdmVMYWJlbCwgY2FuY2VsTGFiZWwsIG9uQ2xvc2UsIGRpc2FibGVkIH0pID0+IChcbiAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5mb290ZXJ9PlxuICAgIDxCdXR0b25cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ0bn1cbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge2NhbmNlbExhYmVsfVxuICAgIDwvQnV0dG9uPlxuICAgIDxCdXR0b25cbiAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuc2F2ZUJ0bn1cbiAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgPlxuICAgICAge3NhdmVMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgPC9Cb3g+XG4pO1xuXG5Gb3JtRm9vdGVyLnByb3BUeXBlcyA9IHtcbiAgc2F2ZUxhYmVsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBjYW5jZWxMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgRm9ybUZvb3RlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBFcnJvckljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXJyb3JcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuZnVuY3Rpb24gRXJyb3JMYWJlbCh7IG1lc3NhZ2UsIGNvbG9yLCBjbGFzc05hbWVzLCBkYXRhVGVzdElkIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8c3BhblxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuZXJyb3JMYWJlbH0gJHtjbGFzc05hbWVzICYmIGNsYXNzTmFtZXN9YH1cbiAgICAgIHN0eWxlPXt7IGNvbG9yIH19XG4gICAgICBkYXRhLXRlc3RpZD17ZGF0YVRlc3RJZH1cbiAgICA+XG4gICAgICA8RXJyb3JJY29uIHN4PXt7IGNvbG9yIH19IC8+XG4gICAgICB7bWVzc2FnZX1cbiAgICA8L3NwYW4+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IEVycm9yTGFiZWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCYWNrZHJvcCwgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmNvbnN0IExvYWRlciA9ICh7IG9wZW4gfSkgPT4gKFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICA8QmFja2Ryb3Agb3Blbj17b3Blbn0gc3g9eyh0aGVtZSkgPT4gKHsgekluZGV4OiB0aGVtZS56SW5kZXguZHJhd2VyICsgMSB9KX0+XG4gICAgPENpcmN1bGFyUHJvZ3Jlc3MgY29sb3I9XCJpbmhlcml0XCIgLz5cbiAgPC9CYWNrZHJvcD5cbik7XG5cbkxvYWRlci5wcm9wVHlwZXMgPSB7XG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBMb2FkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBzaGFsbG93RXF1YWwsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgSW5maW5pdGVTY3JvbGwgZnJvbSBcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIjtcbmltcG9ydCBPcmRlcnNMaXN0IGZyb20gXCIuLi9PcmRlcnNMaXN0XCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBNeU9yZGVyc1RpY2tldHMgPSAoeyBmZXRjaERhdGEgfSkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCwgbWVtYmVyT3JkZXJzLCBvcmRlcnNfY3VycmVudF9wYWdlLCBvcmRlcnNfbGFzdF9wYWdlIH0gPVxuICAgIHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGlkPVwiaW5maW5pdGVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMubXlPcmRlcnNXcmFwcGVyfT5cbiAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICBkYXRhTGVuZ3RoPXttZW1iZXJPcmRlcnM/Lmxlbmd0aH1cbiAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKG9yZGVyc19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgaGFzTW9yZT17b3JkZXJzX2N1cnJlbnRfcGFnZSA8IG9yZGVyc19sYXN0X3BhZ2V9XG4gICAgICAgIHNjcm9sbFRocmVzaG9sZD17MX1cbiAgICAgID5cbiAgICAgICAge21lbWJlck9yZGVycz8ubWFwKChvcmRlcikgPT4gKFxuICAgICAgICAgIDxPcmRlcnNMaXN0XG4gICAgICAgICAgICBrZXk9e29yZGVyLm51bWJlciArIG9yZGVyLmlkfVxuICAgICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0luZmluaXRlU2Nyb2xsPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNUaWNrZXRzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBUaWNrZXRzSWNvbiA9ICgpID0+IChcbiAgPHN2Z1xuICAgIHdpZHRoPVwiMTI5XCJcbiAgICBoZWlnaHQ9XCI4MFwiXG4gICAgdmlld0JveD1cIjAgMCAxMjkgODBcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEyNS4xMjIgMzYuNDc4MUMxMjQuODE0IDM3LjUxMTIgMTIzLjczOCAzOC4wODkxIDEyMi42NjEgMzguMDM3NkMxMTguNTA2IDM3LjgzODYgMTE0LjU5MyA0MC40NzU0IDExMy4zNDkgNDQuNjQxMkMxMTIuMTA1IDQ4LjgwNzMgMTEzLjkzMiA1My4xNTc2IDExNy41MTcgNTUuMjY5N0MxMTguNDQ2IDU1LjgxNjkgMTE5LjAyOCA1Ni44ODk5IDExOC43MiA1Ny45MjMxTDExNi4zNjkgNjUuNzk2N0MxMTYuMDUzIDY2Ljg1NTEgMTE0LjkzOSA2Ny40NTcgMTEzLjg4MSA2Ny4xNDFMMzAuNzY3NSA0Mi4zMjcxQzI5LjcwOTEgNDIuMDExMiAyOS4xMDcyIDQwLjg5NyAyOS40MjMyIDM5LjgzODZMNDAuMzQzOSAzLjI2MDE2QzQwLjY1OTkgMi4yMDE3NiA0MS43NzQgMS41OTk5MSA0Mi44MzI0IDEuOTE1OUwxMjUuOTQ2IDI2LjcyOTdDMTI3LjAwNCAyNy4wNDU3IDEyNy42MDYgMjguMTU5OSAxMjcuMjkgMjkuMjE4M0wxMjUuMTIyIDM2LjQ3ODFaXCJcbiAgICAgIGZpbGw9XCJ3aGl0ZVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUxTDExMi4zOTEgNDQuMzU1MkwxMTMuMzQ5IDQ0LjY0MTJaTTExNy41MTcgNTUuMjY5N0wxMTcuMDA5IDU2LjEzMTJMMTE3LjUxNyA1NS4yNjk3Wk0xMjIuNjYxIDM4LjAzNzZMMTIyLjcwOSAzNy4wMzg3QzExOC4xMDUgMzYuODE4MyAxMTMuNzY5IDM5LjczODEgMTEyLjM5MSA0NC4zNTUxTDExMy4zNDkgNDQuNjQxMkwxMTQuMzA3IDQ0LjkyNzRDMTE1LjQxNiA0MS4yMTI3IDExOC45MDYgMzguODU4OSAxMjIuNjE0IDM5LjAzNjRMMTIyLjY2MSAzOC4wMzc2Wk0xMTMuMzQ5IDQ0LjY0MTJMMTEyLjM5MSA0NC4zNTUyQzExMS4wMTIgNDguOTcyNSAxMTMuMDM4IDUzLjc5MTUgMTE3LjAwOSA1Ni4xMzEyTDExNy41MTcgNTUuMjY5N0wxMTguMDI0IDU0LjQwODFDMTE0LjgyNiA1Mi41MjM4IDExMy4xOTggNDguNjQyMSAxMTQuMzA3IDQ0LjkyNzNMMTEzLjM0OSA0NC42NDEyWk0xMTguNzIgNTcuOTIzMUwxMTcuNzYyIDU3LjYzN0wxMTUuNDExIDY1LjUxMDZMMTE2LjM2OSA2NS43OTY3TDExNy4zMjcgNjYuMDgyOEwxMTkuNjc4IDU4LjIwOTFMMTE4LjcyIDU3LjkyMzFaTTExMy44ODEgNjcuMTQxTDExNC4xNjcgNjYuMTgyOEwzMS4wNTM1IDQxLjM2ODlMMzAuNzY3NSA0Mi4zMjcxTDMwLjQ4MTQgNDMuMjg1NEwxMTMuNTk1IDY4LjA5OTJMMTEzLjg4MSA2Ny4xNDFaTTI5LjQyMzIgMzkuODM4NkwzMC4zODE0IDQwLjEyNDdMNDEuMzAyMSAzLjU0NjI0TDQwLjM0MzkgMy4yNjAxNkwzOS4zODU3IDIuOTc0MDlMMjguNDY1IDM5LjU1MjVMMjkuNDIzMiAzOS44Mzg2Wk00Mi44MzI0IDEuOTE1OUw0Mi41NDY0IDIuODc0MTFMMTI1LjY2IDI3LjY4NzlMMTI1Ljk0NiAyNi43Mjk3TDEyNi4yMzIgMjUuNzcxNUw0My4xMTg1IDAuOTU3Njk3TDQyLjgzMjQgMS45MTU5Wk0xMjcuMjkgMjkuMjE4M0wxMjYuMzMyIDI4LjkzMjJMMTI0LjE2NCAzNi4xOTJMMTI1LjEyMiAzNi40NzgxTDEyNi4wODEgMzYuNzY0MkwxMjguMjQ4IDI5LjUwNDRMMTI3LjI5IDI5LjIxODNaTTEyNS45NDYgMjYuNzI5N0wxMjUuNjYgMjcuNjg3OUMxMjYuMTg5IDI3Ljg0NTkgMTI2LjQ5IDI4LjQwMyAxMjYuMzMyIDI4LjkzMjJMMTI3LjI5IDI5LjIxODNMMTI4LjI0OCAyOS41MDQ0QzEyOC43MjIgMjcuOTE2OCAxMjcuODE5IDI2LjI0NTUgMTI2LjIzMiAyNS43NzE1TDEyNS45NDYgMjYuNzI5N1pNMzAuNzY3NSA0Mi4zMjcxTDMxLjA1MzUgNDEuMzY4OUMzMC41MjQzIDQxLjIxMDkgMzAuMjIzNCA0MC42NTM5IDMwLjM4MTQgNDAuMTI0N0wyOS40MjMyIDM5LjgzODZMMjguNDY1IDM5LjU1MjVDMjcuOTkxIDQxLjE0MDEgMjguODkzOCA0Mi44MTE0IDMwLjQ4MTQgNDMuMjg1NEwzMC43Njc1IDQyLjMyNzFaTTExNi4zNjkgNjUuNzk2N0wxMTUuNDExIDY1LjUxMDZDMTE1LjI1MyA2Ni4wMzk4IDExNC42OTYgNjYuMzQwOCAxMTQuMTY3IDY2LjE4MjhMMTEzLjg4MSA2Ny4xNDFMMTEzLjU5NSA2OC4wOTkyQzExNS4xODIgNjguNTczMiAxMTYuODUzIDY3LjY3MDQgMTE3LjMyNyA2Ni4wODI4TDExNi4zNjkgNjUuNzk2N1pNMTE3LjUxNyA1NS4yNjk3TDExNy4wMDkgNTYuMTMxMkMxMTcuNjUzIDU2LjUxMDUgMTE3LjkwNSA1Ny4xNTcgMTE3Ljc2MiA1Ny42MzdMMTE4LjcyIDU3LjkyMzFMMTE5LjY3OCA1OC4yMDkxQzEyMC4xNTIgNTYuNjIyOCAxMTkuMjM5IDU1LjEyMzQgMTE4LjAyNCA1NC40MDgxTDExNy41MTcgNTUuMjY5N1pNNDAuMzQzOSAzLjI2MDE2TDQxLjMwMjEgMy41NDYyNEM0MS40NjAxIDMuMDE3MDQgNDIuMDE3MSAyLjcxNjExIDQyLjU0NjQgMi44NzQxMUw0Mi44MzI0IDEuOTE1OUw0My4xMTg1IDAuOTU3Njk3QzQxLjUzMDkgMC40ODM3MSAzOS44NTk2IDEuMzg2NDggMzkuMzg1NyAyLjk3NDA5TDQwLjM0MzkgMy4yNjAxNlpNMTIyLjY2MSAzOC4wMzc2TDEyMi42MTQgMzkuMDM2NEMxMjQuMDIxIDM5LjEwMzggMTI1LjYwNyAzOC4zNTA1IDEyNi4wODEgMzYuNzY0MkwxMjUuMTIyIDM2LjQ3ODFMMTI0LjE2NCAzNi4xOTJDMTI0LjAyMSAzNi42NzIgMTIzLjQ1NiAzNy4wNzQ0IDEyMi43MDkgMzcuMDM4N0wxMjIuNjYxIDM4LjAzNzZaXCJcbiAgICAgIGZpbGw9XCIjQkRCREJEXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTEwNy45MDMgMjIuNjc1OEw5Ni41Njk2IDYwLjYzNzlcIlxuICAgICAgc3Ryb2tlPVwiI0JEQkRCRFwiXG4gICAgICBzdHJva2VXaWR0aD1cIjJcIlxuICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgIHN0cm9rZURhc2hhcnJheT1cIjIgNVwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk05MS43NDIgNDUuODk1MkM5MS43NDE5IDQ2Ljk3MzQgOTAuODc2NSA0Ny44MzQ3IDg5LjgyOTcgNDguMDkzM0M4NS43OTA2IDQ5LjA5MTMgODIuNzk1OSA1Mi43Mzc2IDgyLjc5NTMgNTcuMDg1MkM4Mi43OTQ4IDYxLjQzMjkgODUuNzg4NyA2NS4wNzkyIDg5LjgyNzYgNjYuMDc3OUM5MC44NzQyIDY2LjMzNjcgOTEuNzM5NCA2Ny4xOTgzIDkxLjczOTIgNjguMjc2NEw5MS43MzgyIDc2LjQ5MzVDOTEuNzM4MSA3Ny41OTgxIDkwLjg0MjYgNzguNDkzNCA4OS43MzggNzguNDkzM0wyLjk5OTcyIDc4LjQ4MjdDMS44OTUxNSA3OC40ODI1IDAuOTk5ODI1IDc3LjU4NyAwLjk5OTk2IDc2LjQ4MjRMMS4wMDQ2NCAzOC4zMDg2QzEuMDA0NzcgMzcuMjA0IDEuOTAwMzEgMzYuMzA4NyAzLjAwNDg4IDM2LjMwODhMODkuNzQzMiAzNi4zMTk1QzkwLjg0NzcgMzYuMzE5NiA5MS43NDMxIDM3LjIxNTEgOTEuNzQyOSAzOC4zMTk3TDkxLjc0MiA0NS44OTUyWlwiXG4gICAgICBmaWxsPVwid2hpdGVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNODIuNzk1MyA1Ny4wODUyTDgxLjc5NTMgNTcuMDg1MUw4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyWk04OS44Mjk3IDQ4LjA5MzNMOTAuMDY5NiA0OS4wNjQxTDg5LjgyOTcgNDguMDkzM1pNODkuODI5NyA0OC4wOTMzTDg5LjU4OTkgNDcuMTIyNUM4NS4xMTUgNDguMjI4MSA4MS43OTYgNTIuMjY2NyA4MS43OTUzIDU3LjA4NTFMODIuNzk1MyA1Ny4wODUyTDgzLjc5NTMgNTcuMDg1NEM4My43OTU4IDUzLjIwODQgODYuNDY2MyA0OS45NTQ0IDkwLjA2OTYgNDkuMDY0MUw4OS44Mjk3IDQ4LjA5MzNaTTgyLjc5NTMgNTcuMDg1Mkw4MS43OTUzIDU3LjA4NTFDODEuNzk0NyA2MS45MDM2IDg1LjExMjkgNjUuOTQyMiA4OS41ODc1IDY3LjA0ODdMODkuODI3NiA2Ni4wNzc5TDkwLjA2NzYgNjUuMTA3MUM4Ni40NjQ0IDY0LjIxNjIgODMuNzk0OCA2MC45NjIyIDgzLjc5NTMgNTcuMDg1M0w4Mi43OTUzIDU3LjA4NTJaTTkxLjczOTIgNjguMjc2NEw5MC43MzkyIDY4LjI3NjNMOTAuNzM4MiA3Ni40OTM0TDkxLjczODIgNzYuNDkzNUw5Mi43MzgyIDc2LjQ5MzdMOTIuNzM5MiA2OC4yNzY2TDkxLjczOTIgNjguMjc2NFpNODkuNzM4IDc4LjQ5MzNMODkuNzM4MSA3Ny40OTMzTDIuOTk5ODQgNzcuNDgyN0wyLjk5OTcyIDc4LjQ4MjdMMi45OTk2IDc5LjQ4MjdMODkuNzM3OSA3OS40OTMzTDg5LjczOCA3OC40OTMzWk0wLjk5OTk2IDc2LjQ4MjRMMS45OTk5NiA3Ni40ODI1TDIuMDA0NjQgMzguMzA4N0wxLjAwNDY0IDM4LjMwODZMMC4wMDQ2Mzc3NiAzOC4zMDg1TC0zLjk2MDc1ZS0wNSA3Ni40ODIzTDAuOTk5OTYgNzYuNDgyNFpNMy4wMDQ4OCAzNi4zMDg4TDMuMDA0NzYgMzcuMzA4OEw4OS43NDMgMzcuMzE5NUw4OS43NDMyIDM2LjMxOTVMODkuNzQzMyAzNS4zMTk1TDMuMDA1MDEgMzUuMzA4OEwzLjAwNDg4IDM2LjMwODhaTTkxLjc0MjkgMzguMzE5N0w5MC43NDI5IDM4LjMxOTZMOTAuNzQyIDQ1Ljg5NTFMOTEuNzQyIDQ1Ljg5NTJMOTIuNzQyIDQ1Ljg5NTNMOTIuNzQyOSAzOC4zMTk4TDkxLjc0MjkgMzguMzE5N1pNODkuNzQzMiAzNi4zMTk1TDg5Ljc0MyAzNy4zMTk1QzkwLjI5NTMgMzcuMzE5NSA5MC43NDMgMzcuNzY3MyA5MC43NDI5IDM4LjMxOTZMOTEuNzQyOSAzOC4zMTk3TDkyLjc0MjkgMzguMzE5OEM5Mi43NDMxIDM2LjY2MyA5MS40MDAxIDM1LjMxOTcgODkuNzQzMyAzNS4zMTk1TDg5Ljc0MzIgMzYuMzE5NVpNMi45OTk3MiA3OC40ODI3TDIuOTk5ODQgNzcuNDgyN0MyLjQ0NzU1IDc3LjQ4MjYgMS45OTk4OSA3Ny4wMzQ4IDEuOTk5OTYgNzYuNDgyNUwwLjk5OTk2IDc2LjQ4MjRMLTMuOTYwNzVlLTA1IDc2LjQ4MjNDLTAuMDAwMjQyNjE5IDc4LjEzOTIgMS4zNDI3NCA3OS40ODI1IDIuOTk5NiA3OS40ODI3TDIuOTk5NzIgNzguNDgyN1pNOTEuNzM4MiA3Ni40OTM1TDkwLjczODIgNzYuNDkzNEM5MC43MzgyIDc3LjA0NTcgOTAuMjkwNCA3Ny40OTM0IDg5LjczODEgNzcuNDkzM0w4OS43MzggNzguNDkzM0w4OS43Mzc5IDc5LjQ5MzNDOTEuMzk0NyA3OS40OTM1IDkyLjczOCA3OC4xNTA1IDkyLjczODIgNzYuNDkzN0w5MS43MzgyIDc2LjQ5MzVaTTg5LjgyNzYgNjYuMDc3OUw4OS41ODc1IDY3LjA0ODdDOTAuMzEyOCA2Ny4yMjggOTAuNzM5MyA2Ny43NzU0IDkwLjczOTIgNjguMjc2M0w5MS43MzkyIDY4LjI3NjRMOTIuNzM5MiA2OC4yNzY2QzkyLjczOTUgNjYuNjIxMSA5MS40MzU2IDY1LjQ0NTQgOTAuMDY3NiA2NS4xMDcxTDg5LjgyNzYgNjYuMDc3OVpNMS4wMDQ2NCAzOC4zMDg2TDIuMDA0NjQgMzguMzA4N0MyLjAwNDcxIDM3Ljc1NjQgMi40NTI0OCAzNy4zMDg4IDMuMDA0NzYgMzcuMzA4OEwzLjAwNDg4IDM2LjMwODhMMy4wMDUwMSAzNS4zMDg4QzEuMzQ4MTUgMzUuMzA4NiAwLjAwNDg0MDc3IDM2LjY1MTYgMC4wMDQ2Mzc3NiAzOC4zMDg1TDEuMDA0NjQgMzguMzA4NlpNODkuODI5NyA0OC4wOTMzTDkwLjA2OTYgNDkuMDY0MUM5MS40Mzc2IDQ4LjcyNjEgOTIuNzQxOCA0Ny41NTA4IDkyLjc0MiA0NS44OTUzTDkxLjc0MiA0NS44OTUyTDkwLjc0MiA0NS44OTUxQzkwLjc0MTkgNDYuMzk2IDkwLjMxNTMgNDYuOTQzMyA4OS41ODk5IDQ3LjEyMjVMODkuODI5NyA0OC4wOTMzWlwiXG4gICAgICBmaWxsPVwiI0JEQkRCRFwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk03MS4yOTQ5IDM3LjU5NTdMNzEuMjkwMSA3Ny4yMTM2XCJcbiAgICAgIHN0cm9rZT1cIiNCREJEQkRcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VEYXNoYXJyYXk9XCIyIDVcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0c0ljb247XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFRpY2tldHNJY29uIGZyb20gXCIuL1RpY2tldHNJY29uXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBOb1RpY2tldHNGb3VuZCA9ICh7IHBhZ2VWaWV3LCBvbkNsaWNrIH0pID0+IHtcbiAgY29uc3QgeyBzdW1taXQsIGxvYWRpbmcgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30pO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZ2V0Q29udGVudCA9ICgpID0+IHtcbiAgICBjb25zdCBtYWlsdG9UYWcgPSAoXG4gICAgICA8YSBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH0+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5jb250YWN0X3N1cHBvcnRcIil9XG4gICAgICA8L2E+XG4gICAgKTtcblxuICAgIHN3aXRjaCAocGFnZVZpZXcpIHtcbiAgICAgIGNhc2UgVEFCUy5PUkRFUlM6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMub3JkZXJzLnRpdGxlXCIpLFxuICAgICAgICAgIGJvZHk6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIHt0KFwibm9fcmVzdWx0cy5vcmRlcnMuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjYXNlIFRBQlMuVElDS0VUUzoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5hc3NpZ25lZC50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dChcIm5vX3Jlc3VsdHMuYXNzaWduZWQuYm9keVwiKX0ge21haWx0b1RhZ30uXG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApLFxuICAgICAgICAgIGJ1dHRvbkxhYmVsOiB0KFwib3JkZXJzLnRpdGxlXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLmZpbHRlci50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiB0KFwibm9fcmVzdWx0cy5maWx0ZXIuYm9keVwiKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcImZpbHRlci5jbGVhcl9maWx0ZXJzXCIpXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IHsgdGl0bGUsIGJvZHksIGJ1dHRvbkxhYmVsIH0gPSBnZXRDb250ZW50KCk7XG5cbiAgaWYgKGxvYWRpbmcpIHJldHVybiBudWxsO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaWNvbldyYXBwZXJ9PlxuICAgICAgICA8VGlja2V0c0ljb24gLz5cbiAgICAgIDwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGl0bGV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5ib2R5fVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtib2R5fVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPEJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgb25DbGljaz17b25DbGlja31cbiAgICAgID5cbiAgICAgICAge2J1dHRvbkxhYmVsfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBOb1RpY2tldHNGb3VuZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRGl2aWRlciBmcm9tIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVPcmRlclRvdGFscywgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5VGFibGUgPSAoeyBvcmRlciwgc3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGRpc2NvdW50VG90YWwsIHJlZnVuZFRvdGFsLCB0YXhlc1RvdGFsLCBhbW91bnRUb3RhbCwgdGlja2V0U3VtbWFyeSB9ID1cbiAgICBjYWxjdWxhdGVPcmRlclRvdGFscyh7IG9yZGVyLCBzdW1taXQgfSk7XG4gIGNvbnN0IGh1bmRyZWQgPSAxMDA7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVRhYmxlfT5cbiAgICAgIHt0aWNrZXRTdW1tYXJ5Py5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dGlja2V0U3VtbWFyeS5tYXAoKHRpY2tldCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgdGlja2V0VG90YWwgPVxuICAgICAgICAgICAgICAodGlja2V0LnF0eSAqICh0aWNrZXQudGlja2V0X3R5cGUuY29zdCAqIGh1bmRyZWQpKSAvIGh1bmRyZWQ7XG5cbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICAgICAgY29udGFpbmVyXG4gICAgICAgICAgICAgICAga2V5PXtgdGl4b3JkZXJfJHt0aWNrZXQudGlja2V0X3R5cGUuY3JlYXRlZH1gfVxuICAgICAgICAgICAgICAgIHN4PXt7IHBiOiAxIH19XG4gICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1zdW1tYXJ5LWl0ZW1pemVkXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgIHh7dGlja2V0LnF0eX0ge3RpY2tldC50aWNrZXRfdHlwZS5uYW1lfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0VG90YWwsIHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH0pfVxuICAgICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge29yZGVyLmRpc2NvdW50X2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkuZGlzY291bnRzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Rpc2NvdW50VG90YWx9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAge29yZGVyLnRheGVzX2Ftb3VudCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudGF4ZXNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHt0YXhlc1RvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmFtb3VudF9wYWlkXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICAte2Ftb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtyZWZ1bmRUb3RhbCA+IDAgJiYgKFxuICAgICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcGI6IDEgfX0+XG4gICAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kc1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAge3JlZnVuZFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxEaXZpZGVyIC8+XG4gICAgICA8R3JpZCBjb250YWluZXIgc3g9e3sgcHQ6IDEsIHBiOiAxIH19PlxuICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkudG90YWxcIil9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgIHtvcmRlci5zdGF0dXMgPT09IFwiUGFpZFwiID8gXCIkMC4wMFwiIDogYW1vdW50VG90YWx9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvR3JpZD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbk9yZGVyU3VtbWFyeVRhYmxlLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVuY3k6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGlzY291bnRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRheGVzX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5VGFibGU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyB0aWNrZXRzUmVmdW5kYWJsZSB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgdXNlU3VtbWl0RGV0YWlscyB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmRFbWFpbFN1cHBvcnQgPSAoe1xuICBzdW1taXQsXG4gIHRpY2tldHMsXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGlzU3RhcnRlZCB9ID0gdXNlU3VtbWl0RGV0YWlscyh7IHN1bW1pdCB9KTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IGlzSW5SZWZ1bmRhYmxlUGVyaW9kID1cbiAgICBzdW1taXQucmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlID4gbm93O1xuICBjb25zdCBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCA9IHRpY2tldHNSZWZ1bmRhYmxlKHRpY2tldHMpO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSAhIShcbiAgICBpc0luUmVmdW5kYWJsZVBlcmlvZCAmJlxuICAgICFpc1N0YXJ0ZWQgJiZcbiAgICBhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldFxuICApO1xuICBjb25zdCBoYXNSZWZ1bmRSZXF1ZXN0cyA9IHRpY2tldHM/LnNvbWUoKHQpID0+IHQucmVmdW5kX3JlcXVlc3RzLmxlbmd0aCA+IDApO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7aXNSZWZ1bmRhYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgcmVxdWVzdCBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgICAke3N1Ym1pdFJlcXVlc3QgPyBzdHlsZXMucmVmdW5kRGlzYWJsZWQgOiBcIlwifWB9XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgZGlzYWJsZWQ9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIHtoYXNSZWZ1bmRSZXF1ZXN0cyAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIGRldGFpbHMgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cImVtYWlsIHN1cHBvcnQgYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeUJ1dHRvbn1cbiAgICAgICAgdmFyaWFudD1cIm91dGxpbmVkXCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgdGFyZ2V0PVwiX3RvcFwiXG4gICAgICAgIHJlbD1cIm5vb3BlbmVyIG5vcmVmZXJyZXJcIlxuICAgICAgICBocmVmPXtgbWFpbHRvOiR7c3VtbWl0LnN1cHBvcnRfZW1haWx9YH1cbiAgICAgID5cbiAgICAgICAge3QoXCJvcmRlcl9pbmZvLmVtYWlsX3N1cHBvcnRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8Lz5cbiAgKTtcbn07XG5cblJlZnVuZEVtYWlsU3VwcG9ydC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb25SZWZ1bmRDbGljazogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRW1haWxTdXBwb3J0O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBPcmRlclN1bW1hcnlUYWJsZSBmcm9tIFwiLi9PcmRlclN1bW1hcnlUYWJsZVwiO1xuaW1wb3J0IFJlZnVuZEVtYWlsU3VwcG9ydCBmcm9tIFwiLi9SZWZ1bmRFbWFpbFN1cHBvcnRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJTdW1tYXJ5ID0gKHtcbiAgb3JkZXIsXG4gIHN1bW1pdCxcbiAgb25SZWZ1bmRDbGljayxcbiAgc3VibWl0UmVxdWVzdCxcbiAgb25SZWZ1bmREZXRhaWxDbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5V3JhcHBlcn1cbiAgICAgICAgc3g9e3sgcHQ6IDQsIHB4OiA0IH19XG4gICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1jb250YWluZXJcIlxuICAgICAgPlxuICAgICAgICA8aDM+e3QoXCJvcmRlcl9zdW1tYXJ5Lm9yZGVyX3N1bW1hcnlcIil9PC9oMz5cbiAgICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICAgIDxHcmlkXG4gICAgICAgICAgICB4cz17MTJ9XG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvfVxuICAgICAgICAgICAgc3g9e3sgcGI6IDMgfX1cbiAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8T3JkZXJTdW1tYXJ5VGFibGUgb3JkZXI9e29yZGVyfSBzdW1taXQ9e3N1bW1pdH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCB4cz17MTJ9IHN4PXt7IHBiOiAzIH19PlxuICAgICAgICA8UmVmdW5kRW1haWxTdXBwb3J0XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9e29uUmVmdW5kRGV0YWlsQ2xpY2t9XG4gICAgICAgIC8+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcbn07XG5PcmRlclN1bW1hcnkucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBzdWJtaXRSZXF1ZXN0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJTdW1tYXJ5O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJMaXN0VGlja2V0cyBmcm9tIFwiLi9PcmRlckxpc3RUaWNrZXRzXCI7XG5pbXBvcnQgeyBPTkVfUEFHRV9ORVhUIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25Ub01lID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyVGlja2V0cyxcbiAgICB1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlLFxuICAgIHVzZXJfdGlja2V0c19sYXN0X3BhZ2VcbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0Q29udGFpbmVyfT5cbiAgICAgIDxkaXYgaWQ9XCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRUb01lV3JhcHBlcn0+XG4gICAgICAgIDxJbmZpbml0ZVNjcm9sbFxuICAgICAgICAgIGRhdGFMZW5ndGg9e3VzZXJUaWNrZXRzPy5sZW5ndGh9XG4gICAgICAgICAgbmV4dD17KCkgPT4gZmV0Y2hEYXRhKHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UgKyBPTkVfUEFHRV9ORVhUKX1cbiAgICAgICAgICBoYXNNb3JlPXt1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIDwgdXNlcl90aWNrZXRzX2xhc3RfcGFnZX1cbiAgICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9PlxuICAgICAgICAgICAge3VzZXJUaWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICAgICAga2V5PXt0aWNrZXQuaWR9XG4gICAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNTZWxlY3RlZFRvUmVmdW5kPXtbXX1cbiAgICAgICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduVG9NZTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgR3JpZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbmVkVG8gPSAoeyBlbWFpbCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfdG9cIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtYXNzaWduZWRcIj5cbiAgICAgICAge2VtYWlsfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuY29uc3QgRXh0ZXJuYWxBc3NpZ25lZFRvID0gKHsgZmlyc3ROYW1lLCBsYXN0TmFtZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfT57dChcInRpY2tldF9zdGF0dXMuYXNzaWduZWRfYnlcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IE1hbmFnZUZvciA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLm1hbmFnZV9mb3JcIil9OjwvQm94PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+XG4gICAgICAgIHtmaXJzdE5hbWV9IHtsYXN0TmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEF0dGVuZGVlU3RhdHVzID0gKHsgdGlja2V0LCBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9ICF0aWNrZXQub3duZXI/LmVtYWlsICYmIHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gISF0aWNrZXQub3duZXI/Lm1hbmFnZXJfaWQ7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8c3BhblxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRPd25lckVtYWlsfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImF0dGVuZGVlLXN0YXR1cy11bmFzc2lnbmVkXCJcbiAgICAgID5cbiAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLmF0dGVuZGVlX3N0YXR1c191bmFzc2lnbmVkXCIpfVxuICAgICAgPC9zcGFuPlxuICAgICk7XG4gIH1cblxuICBpZiAodGlja2V0Lm93bmVyPy5lbWFpbCkge1xuICAgIHJldHVybiAoXG4gICAgICA8R3JpZCBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgICAgPEFzc2lnbmVkVG8gZW1haWw9e3RpY2tldC5vd25lci5lbWFpbH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7aXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0ICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxFeHRlcm5hbEFzc2lnbmVkVG9cbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2ZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3JkZXI/Lm93bmVyX2xhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICAgIDxHcmlkIGl0ZW0gY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduZWRCeVRleHR9PlxuICAgICAgICAgICAgPE1hbmFnZUZvclxuICAgICAgICAgICAgICBmaXJzdE5hbWU9e3RpY2tldC5vd25lcj8uZmlyc3RfbmFtZX1cbiAgICAgICAgICAgICAgbGFzdE5hbWU9e3RpY2tldC5vd25lcj8ubGFzdF9uYW1lfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuQXR0ZW5kZWVTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBlbWFpbDogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEF0dGVuZGVlU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlckxpc3RJdGVtID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcblxuICBpZiAoIW9yZGVyPy5tZW1iZXJUaWNrZXRzPy5sZW5ndGgpIHJldHVybiBudWxsO1xuICBjb25zdCBzbGljZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LnNsaWNlKDAsIGl0ZW1zVG9EaXNwbGF5KTtcblxuICBjb25zdCBvblZpZXdNb3JlID0gKCkgPT4ge1xuICAgIGlmIChvcmRlcj8udGlja2V0c190b3RhbCA+IG9yZGVyPy5tZW1iZXJUaWNrZXRzLmxlbmd0aCkge1xuICAgICAgb25QYWdpbmF0ZUNsaWNrKCk7XG4gICAgfVxuICAgIHNldEl0ZW1zVG9EaXNwbGF5KGl0ZW1zVG9EaXNwbGF5ICsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcbiAgfTtcblxuICBjb25zdCBvblZpZXdMZXNzID0gKCkgPT4gc2V0SXRlbXNUb0Rpc3BsYXkoUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBpc1JlZnVuZE1vZGFsPXtmYWxzZX1cbiAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9eyEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZCl9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAvPlxuICAgICAgKSl9XG4gICAgICB7b3JkZXI/LnRpY2tldHNfdG90YWwgPiBpdGVtc1RvRGlzcGxheSA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IG1vcmUgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdNb3JlfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbW9yZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgICAge3NsaWNlZFRpY2tldHM/Lmxlbmd0aCA+IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCAmJlxuICAgICAgc2xpY2VkVGlja2V0cz8ubGVuZ3RoID09PSBvcmRlcj8udGlja2V0c190b3RhbCA/IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ2aWV3IGxlc3MgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy52aWV3TW9yZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtvblZpZXdMZXNzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLnZpZXdfbGVzc1wiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApIDogKFxuICAgICAgICBcIlwiXG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJMaXN0SXRlbS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdEl0ZW07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJ1dHRvbiwgQm94LCBUb29sdGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IENoZWNrYm94IGZyb20gXCJAbXVpL21hdGVyaWFsL0NoZWNrYm94XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFRpY2tldFN0YXR1cyBmcm9tIFwiLi4vVGlja2V0U3RhdHVzXCI7XG5pbXBvcnQgeyBnZXRTdW1taXRSZWFzc2lnbkRhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuL0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsIGZyb20gXCIuLi9UaWNrZXREZXRhaWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0IFRpY2tldEFzc2lnbiBmcm9tIFwiLi4vVGlja2V0QXNzaWduXCI7XG5pbXBvcnQgeyByZXNldFRpY2tldCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IG1vZGFsVmlld3MgPSB7XG4gIGRldGFpbDogXCJERVRBSUxcIixcbiAgcmVhc3NpZ246IFwiUkVBU1NJR05cIixcbiAgYXNzaWduOiBcIkFTU0lHTlwiXG59O1xuXG5jb25zdCBUaWNrZXRDVEFzID0gKHtcbiAgaXNJbmNvbXBsZXRlLFxuICBpc1VuYXNzaWduZWQsXG4gIGlzUmVhc3NpZ25hYmxlLFxuICBvbk9wZW5DbGlja1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgaWYgKGlzVW5hc3NpZ25lZCkge1xuICAgIHJldHVybiAoXG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnblRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5hc3NpZ24pfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuYXNzaWduX3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTdGFjayBhbGlnbkl0ZW1zPVwiY2VudGVyXCIgZGlyZWN0aW9uPVwicm93XCI+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdGaW5pc2hUaWNrZXRCdXR0b259XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IG9uT3BlbkNsaWNrKG1vZGFsVmlld3MuZGV0YWlsKX1cbiAgICAgID5cbiAgICAgICAge2lzSW5jb21wbGV0ZVxuICAgICAgICAgID8gdChcInRpY2tldF9zdGF0dXMuZmluaXNoX3RpY2tldFwiKVxuICAgICAgICAgIDogdChcInRpY2tldF9zdGF0dXMudmlld190aWNrZXRcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIHtpc1JlYXNzaWduYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVhc3NpZ24gdGlja2V0IGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMucmVhc3NpZ25CdXR0b259XG4gICAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5yZWFzc2lnbil9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMucmVhc3NpZ25fdGlja2V0XCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9TdGFjaz5cbiAgKTtcbn07XG5cblRpY2tldENUQXMucHJvcFR5cGVzID0ge1xuICBpc0luY29tcGxldGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIGlzVW5hc3NpZ25lZDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNSZWFzc2lnbmFibGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gIG9uT3BlbkNsaWNrOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5jb25zdCBPcmRlckxpc3RUaWNrZXRzID0gKHtcbiAgdGlja2V0LFxuICBzdW1taXQsXG4gIGlzUmVmdW5kTW9kYWwsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG4gIGNvbnN0IHsgaXNSZWZ1bmRhYmxlLCBpc1VuYXNzaWduZWQsIGlzSW5jb21wbGV0ZSwgY2FuUmVhc3NpZ24gfSA9XG4gICAgdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBbbW9kYWxPcGVuLCBzZXRNb2RhbE9wZW5dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBvblJlYXNzaWduYWJsZVBlcmlvZCA9IHJlYXNzaWduRGF0ZSA+IG5vdztcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPVxuICAgIG9uUmVhc3NpZ25hYmxlUGVyaW9kICYmIGNhblJlYXNzaWduICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ7XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4obnVsbCk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKHZpZXcpID0+IHtcbiAgICBkaXNwYXRjaChyZXNldFRpY2tldCgpKTtcbiAgICBzZXRNb2RhbE9wZW4odmlldyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBrZXk9e3RpY2tldC5pZH1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLm9yZGVyV3JhcHBlcn0gJHtcbiAgICAgICAgaXNSZWZ1bmRNb2RhbCA/IHN0eWxlcy5yZWZ1bmRNb2RhbCA6IFwiXCJcbiAgICAgIH0gJHtpc1JlZnVuZE1vZGFsICYmICFpc1JlZnVuZGFibGUgPyBzdHlsZXMuZGlzYWJsZWRSZWZ1bmQgOiBcIlwifSAke1xuICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQgPyBzdHlsZXMuc2VsZWN0ZWQgOiBcIlwiXG4gICAgICB9YH1cbiAgICA+XG4gICAgICB7aXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgIDxHcmlkIGl0ZW0geHM9ezF9IHBhZGRpbmc9ezJ9IGNsYXNzTmFtZT17c3R5bGVzLmNoZWNrYm94fT5cbiAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQgdGlja2V0IGNoZWNrYm94XCJcbiAgICAgICAgICAgIHJvbGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICBjaGVja2VkPXtpc1NlbGVjdGVkVG9SZWZ1bmR9XG4gICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IHNlbGVjdFRvUmVmdW5kKGUsIHRpY2tldCl9XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7XG4gICAgICAgICAgICAgICAgZm9udFNpemU6IDE4XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXNhYmxlZD17IWlzUmVmdW5kYWJsZX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWRcbiAgICAgICAgaXRlbVxuICAgICAgICBjb250YWluZXJcbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJvcmRlci1saXN0LXRpY2tldFwiXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICB4cz17aXNSZWZ1bmRNb2RhbCA/IDExIDogMTJ9XG4gICAgICA+XG4gICAgICAgIDxHcmlkXG4gICAgICAgICAgeHM9ezh9XG4gICAgICAgICAgcHk9ezJ9XG4gICAgICAgICAgcGw9ezR9XG4gICAgICAgICAgaXRlbVxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFRpY2tldFR5cGV9XG4gICAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICA+XG4gICAgICAgICAgPFN0YWNrXG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJmbGV4LXN0YXJ0XCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVXcmFwcGVyfSB4cz17NH0gcHk9ezJ9IHByPXs0fSBpdGVtPlxuICAgICAgICAgIHsvKiBUbyBhZGQgYmFkZ2UgZmVhdHVyZXMgKi99XG4gICAgICAgICAge3RpY2tldC5iYWRnZT8uZmVhdHVyZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2JmLm5hbWV9IGtleT17YmYubmFtZX0+XG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzeD17eyBweDogNCwgcGI6IDIgfX0gaXRlbT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXNcbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0PXshIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldE5vfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy50aWNrZXRfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgICB0ZXh0PXt0aWNrZXQubnVtYmVyfVxuICAgICAgICAgICAgICB0b29sdGlwVGV4dD17dChcInRpY2tldF9zdGF0dXMuY29weV90aWNrZXRfbnVtYmVyXCIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRGb290ZXJ9IHB4PXt7IHhzOiAxIH19IHBiPXt7IHhzOiAyIH19PlxuICAgICAgICAgIDxCb3g+XG4gICAgICAgICAgICA8VGlja2V0U3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0QWN0aW9uQnV0dG9uc30+XG4gICAgICAgICAgICB7dGlja2V0LmlzX2FjdGl2ZSAmJiAhaXNSZWZ1bmRNb2RhbCAmJiAoXG4gICAgICAgICAgICAgIDxUaWNrZXRDVEFzXG4gICAgICAgICAgICAgICAgaXNVbmFzc2lnbmVkPXtpc1VuYXNzaWduZWR9XG4gICAgICAgICAgICAgICAgaXNJbmNvbXBsZXRlPXtpc0luY29tcGxldGV9XG4gICAgICAgICAgICAgICAgaXNSZWFzc2lnbmFibGU9e2lzUmVhc3NpZ25hYmxlICYmICFpc0V4dGVybmFsQXNzaWduZWRUaWNrZXR9XG4gICAgICAgICAgICAgICAgb25PcGVuQ2xpY2s9e2hhbmRsZU9wZW5Nb2RhbH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgIDwvQm94PlxuICAgICAgICA8VGlja2V0RGV0YWlsXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgdGlja2V0SWQ9e3RpY2tldD8uaWR9XG4gICAgICAgICAgb3JkZXJJZD17dGlja2V0Py5vcmRlcl9pZCB8fCB0aWNrZXQ/Lm9yZGVyPy5pZH1cbiAgICAgICAgICBvd25lcklkPXt0aWNrZXQ/Lm93bmVyPy5pZH1cbiAgICAgICAgICBvcGVuPXttb2RhbE9wZW4gPT09IG1vZGFsVmlld3MuZGV0YWlsfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICAgIDxUaWNrZXRBc3NpZ25cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e1ttb2RhbFZpZXdzLnJlYXNzaWduLCBtb2RhbFZpZXdzLmFzc2lnbl0uaW5jbHVkZXMobW9kYWxPcGVuKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cbk9yZGVyTGlzdFRpY2tldHMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3JkZXJfaWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICAgIGVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgbnVtYmVyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHRvdGFsX3JlZnVuZGVkX2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0aWNrZXRfdHlwZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGlzUmVmdW5kTW9kYWw6IFByb3BUeXBlcy5ib29sLFxuICBpc1NlbGVjdGVkVG9SZWZ1bmQ6IFByb3BUeXBlcy5ib29sLFxuICBzZWxlY3RUb1JlZnVuZDogUHJvcFR5cGVzLmZ1bmMsXG4gIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyTGlzdFRpY2tldHM7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgVGFicyBmcm9tIFwiQG11aS9tYXRlcmlhbC9UYWJzXCI7XG5pbXBvcnQgVGFiIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYlwiO1xuaW1wb3J0IE9yZGVyTGlzdEl0ZW0gZnJvbSBcIi4vT3JkZXJMaXN0SXRlbVwiO1xuaW1wb3J0IE9yZGVyU3VtbWFyeSBmcm9tIFwiLi4vT3JkZXJTdW1tYXJ5XCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdHNNb2RhbCBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHNcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IFJlZnVuZERldGFpbHMgZnJvbSBcIi4uL1JlZnVuZFJlcXVlc3RzL1JlZnVuZERldGFpbHNcIjtcblxuY29uc3QgVGFiUGFuZWwgPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBjaGlsZHJlbiwgdmFsdWUsIGluZGV4IH0gPSBwcm9wcztcbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByb2xlPVwidGFicGFuZWxcIlxuICAgICAgaGlkZGVuPXt2YWx1ZSAhPT0gaW5kZXh9XG4gICAgICBpZD17YHRhYnBhbmVsLSR7aW5kZXh9YH1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT17YHRhYi0ke2luZGV4fWB9XG4gICAgPlxuICAgICAge3ZhbHVlID09PSBpbmRleCAmJiBjaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmNvbnN0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlID0gKHtcbiAgaXNNb2JpbGUsXG4gIHN1bW1pdCxcbiAgb3JkZXIsXG4gIGRldGFpbHNSZXF1aXJlZCxcbiAgb25QYWdpbmF0ZUNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgwKTtcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gKF8sIG5ld1ZhbHVlKSA9PiB7XG4gICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9O1xuICBjb25zdCBbdGlja2V0c1RvUmVmdW5kLCBzZXRUaWNrZXRzVG9SZWZ1bmRdID0gdXNlU3RhdGUoW10pO1xuICBjb25zdCBbc3VibWl0UmVxdWVzdCwgc2V0U3VibWl0UmVxdWVzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZ1bmREZXRhaWxzT3Blbiwgc2V0UmVmdW5kRGV0YWlsc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IG9uUmVmdW5kQ2xpY2sgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdCh0cnVlKTtcbiAgfTtcbiAgY29uc3QgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzID0gKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IGZpbHRlclNlbGVjdGVkID0gdGlja2V0c1RvUmVmdW5kLmZpbHRlcigodCkgPT4gdC5pZCAhPT0gdGlja2V0LmlkKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoZmlsdGVyU2VsZWN0ZWQpO1xuICB9O1xuICBjb25zdCBzZWxlY3RUb1JlZnVuZCA9IChlLCB0aWNrZXQpID0+IHtcbiAgICBjb25zdCB7IGNoZWNrZWQgfSA9IGUudGFyZ2V0O1xuICAgIGlmIChjaGVja2VkKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZFRpY2tldCA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICAgICAodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkXG4gICAgICApO1xuICAgICAgc2V0VGlja2V0c1RvUmVmdW5kKFsuLi50aWNrZXRzVG9SZWZ1bmQsIHNlbGVjdGVkVGlja2V0XSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cyh0aWNrZXQpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjbG9zZVN1Ym1pdFJlcXVlc3QgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCByZXNldEFsbFJlZnVuZFN0YXR1c2VzID0gKCkgPT4ge1xuICAgIHNldFN1Ym1pdFJlcXVlc3QoZmFsc2UpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChbXSk7XG4gIH07XG5cbiAgY29uc3QgbW9yZURldGFpbHMgPSAoKSA9PlxuICAgIGRldGFpbHNSZXF1aXJlZCAmJiAoXG4gICAgICA8RXJyb3JMYWJlbFxuICAgICAgICBtZXNzYWdlPXt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfZGV0YWlsc19yZXF1aXJlZFwiKX1cbiAgICAgICAgY29sb3I9XCIjZmY5ODAwXCJcbiAgICAgICAgZGF0YVRlc3RJZD1cIm1vcmUtZGV0YWlscy1sYWJlbFwiXG4gICAgICAvPlxuICAgICk7XG5cbiAgcmV0dXJuIGlzTW9iaWxlID8gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3RDb250YWluZXJ9XG4gICAgICBkYXRhLXRlc3RpZD1cIm1vYmlsZS1vcmRlcnMtbGlzdC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxCb3ggc3g9e3sgYm9yZGVyQ29sb3I6IFwiZGl2aWRlclwiLCBwYjogMiB9fT5cbiAgICAgICAgPFRhYnNcbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICBhcmlhLWxhYmVsPVwiVGlja2V0cyAmIFN1bW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy50aWNrZXRzXCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuc3VtbWFyeVwiKX0gY2xhc3NOYW1lPXtzdHlsZXMudGFiQnV0dG9uc30gLz5cbiAgICAgICAgPC9UYWJzPlxuICAgICAgPC9Cb3g+XG4gICAgICB7bW9yZURldGFpbHMoKX1cbiAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dmFsdWV9IGluZGV4PXswfT5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezF9PlxuICAgICAgICA8T3JkZXJTdW1tYXJ5XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9uUmVmdW5kQ2xpY2s9e29uUmVmdW5kQ2xpY2t9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3Blbih0cnVlKX1cbiAgICAgICAgLz5cbiAgICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgICBvcGVuPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIGN1cnJlbmN5PXtvcmRlci5jdXJyZW5jeX1cbiAgICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAgIC8+XG4gICAgICA8L1RhYlBhbmVsPlxuICAgIDwvQm94PlxuICApIDogKFxuICAgIDw+XG4gICAgICA8R3JpZCBpdGVtIG1kPXsxMn0+XG4gICAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWRcbiAgICAgICAgcGFkZGluZz17MX1cbiAgICAgICAgaXRlbVxuICAgICAgICBtZD17N31cbiAgICAgICAgb3JkZXI9e3sgbWQ6IDEgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJkZXNrdG9wLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgICA+XG4gICAgICAgIDxPcmRlckxpc3RJdGVtXG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb3JkZXI9e29yZGVyfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPEdyaWQgcGFkZGluZz17MX0gaXRlbSBtZD17NX0gb3JkZXI9e3sgbWQ6IDEgfX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgICAgPFJlZnVuZFJlcXVlc3RzTW9kYWxcbiAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHMgfHwgW119XG4gICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlPXsoKSA9PiByZXNldEFsbFJlZnVuZFN0YXR1c2VzKCl9XG4gICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IGNsb3NlU3VibWl0UmVxdWVzdCgpfVxuICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgIC8+XG4gICAgICA8UmVmdW5kRGV0YWlsc1xuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0c31cbiAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICBvcGVuPXtyZWZ1bmREZXRhaWxzT3Blbn1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4oZmFsc2UpfVxuICAgICAgLz5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBpc01vYmlsZTogUHJvcFR5cGVzLmJvb2wsXG4gIGRldGFpbHNSZXF1aXJlZDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUGFnaW5hdGVDbGljazogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGhlbWUgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCB1c2VNZWRpYVF1ZXJ5IGZyb20gXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIjtcbmltcG9ydCB7IGdldFRpY2tldHNCeU9yZGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IGdldEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IE9ORV9QQUdFX05FWFQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgZnJvbSBcIi4vT3JkZXJzTGlzdERlc2t0b3BNb2JpbGVcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vQ29weVRleHRcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgT3JkZXJzTGlzdCA9ICh7IHN1bW1pdCwgb3JkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgeyB0aWNrZXRfcGVyX3BhZ2UsIGZpbHRlciwgc29ydCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcbiAgY29uc3QgW2lzTW9iaWxlVmlld2FibGUsIHNldE1vYmlsZVZpZXdhYmxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgZGV0YWlsc1JlcXVpcmVkID0gb3JkZXIubWVtYmVyVGlja2V0cz8uZmluZChcbiAgICAodGlja2V0KSA9PiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCJcbiAgKTtcblxuICBjb25zdCBvblBhZ2luYXRlQ2xpY2sgPSAoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgcGFnZTogb3JkZXIudGlja2V0c19wYWdlX2N1cnJlbnQgKyBPTkVfUEFHRV9ORVhULFxuICAgICAgICBwZXJQYWdlOiB0aWNrZXRfcGVyX3BhZ2UsXG4gICAgICAgIGZpbHRlcixcbiAgICAgICAgc29ydFxuICAgICAgfSlcbiAgICApO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDEsIGxnOiAwIH0gfX1cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyfVxuICAgICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyVGlja2V0SW5mb31cbiAgICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXRpY2tldC1pbmZvLWNvbnRhaW5lclwiXG4gICAgICAgID5cbiAgICAgICAgICB7dChcIm9yZGVycy5wdXJjaGFzZWRcIil9OiB7Z2V0Rm9ybWF0dGVkRGF0ZShvcmRlci5jcmVhdGVkKX0gfHtcIiBcIn1cbiAgICAgICAgICB7dChcIm9yZGVyX3N1bW1hcnkub3JkZXJfbm9cIil9OntcIiBcIn1cbiAgICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICAgIHRleHQ9e29yZGVyLm51bWJlcn1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIHtpc01vYmlsZSAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgc3g9e3sgcGFkZGluZzogXCI1cHggMTBweFwiIH19XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRNb2JpbGVWaWV3YWJsZSghaXNNb2JpbGVWaWV3YWJsZSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2lzTW9iaWxlVmlld2FibGVcbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5oaWRlX3RpY2tldHNcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldHNcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIDxHcmlkXG4gICAgICAgIGtleT17b3JkZXIuaWR9XG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICByb3dTcGFjaW5nPXsxfVxuICAgICAgICBjb2x1bW5TcGFjaW5nPXt7IHhzOiAxLCBzbTogMiwgbWQ6IDMgfX1cbiAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJUaWNrZXRDb250YWluZXJ9ICR7XG4gICAgICAgICAgaXNNb2JpbGUgJiYgIWlzTW9iaWxlVmlld2FibGUgPyBzdHlsZXMuZGlzcGxheV9ub25lIDogXCJcIlxuICAgICAgICB9YH1cbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiB7XG4gICAgICAgICAgICBtZDogXCJyb3dcIixcbiAgICAgICAgICAgIGxnOiBcInJvd1wiXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWRkaW5nOiB7XG4gICAgICAgICAgICB4czogMixcbiAgICAgICAgICAgIG1kOiA0LFxuICAgICAgICAgICAgbGc6IDBcbiAgICAgICAgICB9XG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIDxPcmRlcnNMaXN0RGVza3RvcE1vYmlsZVxuICAgICAgICAgIGlzTW9iaWxlPXtpc01vYmlsZX1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgZGV0YWlsc1JlcXVpcmVkPXshIWRldGFpbHNSZXF1aXJlZH1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgLz5cbiAgICAgIDwvR3JpZD5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbk9yZGVyc0xpc3QucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMub2JqZWN0XG59O1xuXG5leHBvcnQgZGVmYXVsdCBPcmRlcnNMaXN0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgUmVmdW5kUmVxdWVzdGVkVGlja2V0IGZyb20gXCIuL1JlZnVuZFJlcXVlc3RlZFRpY2tldFwiO1xuaW1wb3J0IHsgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyB9IGZyb20gXCIuLi8uLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBSZWZ1bmREZXRhaWxzID0gKHsgdGlja2V0cywgY3VycmVuY3ksIG9wZW4sIG9uQ2xvc2VTbGlkZXIgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHJlcXVlc3RlZFRpY2tldHMgPSB1c2VNZW1vKFxuICAgICgpID0+IGdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHModGlja2V0cyksXG4gICAgW3RpY2tldHNdXG4gICk7XG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPVwicmVmdW5kLWRldGFpbHNcIlxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgID5cbiAgICAgIDxCb3hcbiAgICAgICAgc3g9e3tcbiAgICAgICAgICBkaXNwbGF5OiBcImZsZXhcIixcbiAgICAgICAgICBmbGV4RGlyZWN0aW9uOiBcImNvbHVtblwiLFxuICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgcGFkZGluZzogXCIwIDVyZW1cIlxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICB7cmVxdWVzdGVkVGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBjdXJyZW5jeT17Y3VycmVuY3l9XG4gICAgICAgICAgICByZWZ1bmREZXRhaWxzXG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuUmVmdW5kRGV0YWlscy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kRGV0YWlscztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEdyaWQsIEljb25CdXR0b24sIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdG9vbHRpcENsYXNzZXMgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCI7XG5pbXBvcnQgeyBzdHlsZWQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbC9zdHlsZXNcIjtcbmltcG9ydCBJbmZvSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCI7XG5pbXBvcnQgU3RhY2sgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIjtcbmltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IEF0dGVuZGVlU3RhdHVzIGZyb20gXCIuLi9PcmRlcnNMaXN0L0F0dGVuZGVlU3RhdHVzXCI7XG5pbXBvcnQgUmVmdW5kU3RhdHVzIGZyb20gXCIuL1JlZnVuZFN0YXR1c1wiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCB7IGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCA9ICh7IHRpY2tldCwgY3VycmVuY3ksIHJlZnVuZERldGFpbHMgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgR1JJRF84ID0gODtcbiAgY29uc3QgR1JJRF8xMiA9IDEyO1xuXG4gIGNvbnN0IFBBRERJTkdfMiA9IDI7XG5cbiAgY29uc3QgYXBwcm92ZWRSZWZ1bmRzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cy5maWx0ZXIoXG4gICAgKHJlZnVuZCkgPT4gcmVmdW5kLnN0YXR1cyA9PT0gXCJBcHByb3ZlZFwiXG4gICk7XG5cbiAgY29uc3QgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeSA9IHt9O1xuXG4gIGFwcHJvdmVkUmVmdW5kcy5mb3JFYWNoKChyZWZ1bmQpID0+IHtcbiAgICByZWZ1bmQucmVmdW5kZWRfdGF4ZXMuZm9yRWFjaCgocnQpID0+IHtcbiAgICAgIGNvbnN0IHRheElkID0gcnQudGF4LmlkO1xuICAgICAgaWYgKCFyZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSkge1xuICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXSA9IHtcbiAgICAgICAgICBuYW1lOiBydC50YXgubmFtZSxcbiAgICAgICAgICB0b3RhbFJlZnVuZGVkVGF4QW1vdW50OiAwXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXS50b3RhbFJlZnVuZGVkVGF4QW1vdW50ICs9XG4gICAgICAgIHJ0LnJlZnVuZGVkX2Ftb3VudDtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgSHRtbFRvb2x0aXAgPSBzdHlsZWQoKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9KSA9PiAoXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgPFRvb2x0aXAgey4uLnByb3BzfSBjbGFzc2VzPXt7IHBvcHBlcjogY2xhc3NOYW1lIH19IC8+XG4gICkpKCgpID0+ICh7XG4gICAgW2AmIC4ke3Rvb2x0aXBDbGFzc2VzLnRvb2x0aXB9YF06IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZjVmNWY5XCIsXG4gICAgICBjb2xvcjogXCJyZ2JhKDAsIDAsIDAsIDAuODcpXCIsXG4gICAgICBtYXhXaWR0aDogMjIwLFxuICAgICAgZm9udFNpemU6IFwiMWVtXCIsXG4gICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICNkYWRkZTlcIlxuICAgIH1cbiAgfSkpO1xuXG4gIHJldHVybiAoXG4gICAgPEdyaWRcbiAgICAgIGNvbnRhaW5lclxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMucmVmdW5kVGlja2V0Qm94Q29udGFpbmVyfSAke1xuICAgICAgICByZWZ1bmREZXRhaWxzID8gc3R5bGVzLnJlZnVuZERldGFpbCA6IFwiXCJcbiAgICAgIH0gYH1cbiAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3RlZC10aWNrZXQtY29udGFpbmVyXCJcbiAgICA+XG4gICAgICA8R3JpZFxuICAgICAgICB4cz17R1JJRF8xMn1cbiAgICAgICAgc209e3JlZnVuZERldGFpbHMgPyBHUklEXzggOiBHUklEXzEyfVxuICAgICAgICBpdGVtXG4gICAgICAgIGp1c3RpZnk9XCJzcGFjZS1iZXR3ZWVuXCJcbiAgICAgICAgcHQ9ezJ9XG4gICAgICAgIHB4PXs0fVxuICAgICAgPlxuICAgICAgICA8U3RhY2tcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IFwic3BhY2UtYmV0d2VlblwiLFxuICAgICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIlxuICAgICAgICAgIH19XG4gICAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgPlxuICAgICAgICAgIDxoND57dGlja2V0LnRpY2tldF90eXBlPy5uYW1lfTwvaDQ+XG4gICAgICAgICAgPEdyaWQgY2xhc3NOYW1lPXtzdHlsZXMuYmFkZ2VGZWF0dXJlV3JhcHBlcn0geHM9ezR9IGl0ZW0+XG4gICAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmV9XG4gICAgICAgICAgICAgICAgc3JjPXtiZi5pbWFnZX1cbiAgICAgICAgICAgICAgICBhbHQ9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAga2V5PXtiZi5uYW1lfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L1N0YWNrPlxuICAgICAgPC9HcmlkPlxuICAgICAge3JlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCBzbT17NH0geHM9ezEyfSBweD17eyBzbTogMiwgeHM6IDQgfX0gcHk9e3sgeHM6IDEsIHNtOiAyIH19IGl0ZW0+XG4gICAgICAgICAgPFJlZnVuZFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbSBweD17NH0gcGI9e3JlZnVuZERldGFpbHMgPyBQQURESU5HXzIgOiAwfSBjb250YWluZXI+XG4gICAgICAgIDxHcmlkIHhzPXsxMn0gc209ezh9IGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFRpY2tldEF0dGVuZGVlfT5cbiAgICAgICAgICA8QXR0ZW5kZWVTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06IDxDb3B5VGV4dCB0ZXh0PXt0aWNrZXQubnVtYmVyfSAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICB7cmVmdW5kRGV0YWlscyAmJiB0aWNrZXQudG90YWxfcmVmdW5kZWRfYW1vdW50ID4gMCAmJiAoXG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBtZD17NH0gcGw9e3sgeHM6IDAsIHNtOiA0IH19PlxuICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgUmVmdW5kZWRcbiAgICAgICAgICAgIHthcHByb3ZlZFJlZnVuZHMuc29tZSgocikgPT4gci5yZWZ1bmRlZF90YXhlcy5sZW5ndGggPiAwKSAmJiAoXG4gICAgICAgICAgICAgIDxIdG1sVG9vbHRpcFxuICAgICAgICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxwPlxuICAgICAgICAgICAgICAgICAgICAgIHtmb3JtYXRDdXJyZW5jeSh0aWNrZXQucmVmdW5kZWRfYW1vdW50LCB7IGN1cnJlbmN5IH0pfXtcIiBcIn1cbiAgICAgICAgICAgICAgICAgICAgICBUaWNrZXQgQW1vdW50XG4gICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgPGI+VGF4ZXM8L2I+XG4gICAgICAgICAgICAgICAgICAgIHtPYmplY3Qua2V5cyhyZWZ1bmRlZFRheGVzU3VtbWF0b3J5KS5tYXAoKHRheElkKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0b3RhbFJlZnVuZGVkVGF4QW1vdW50LCBuYW1lIH0gPVxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmdW5kZWRUYXhlc1N1bW1hdG9yeVt0YXhJZF07XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwIGtleT17dGF4SWR9PntgJHtuYW1lfSAtICR7Zm9ybWF0Q3VycmVuY3koXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsgY3VycmVuY3kgfVxuICAgICAgICAgICAgICAgICAgICAgICAgKX1gfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPEluZm9JY29uIC8+XG4gICAgICAgICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICAgICAgICA8L0h0bWxUb29sdGlwPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDxiciAvPlxuICAgICAgICAgICAge21vbWVudChcbiAgICAgICAgICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0c1swXS5hY3Rpb25fZGF0ZSAqIE1JTExJU0VDX1RPX1NFQ1xuICAgICAgICAgICAgKS5mb3JtYXQoXCJNTU0gREQsIFlZWVlcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICAgeyFyZWZ1bmREZXRhaWxzICYmIChcbiAgICAgICAgPEdyaWQgeHM9ezEyfSBwcj17NH0gcGI9ezJ9PlxuICAgICAgICAgIDxHcmlkIHhzPXsxMn0gaXRlbT5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgIDwvR3JpZD5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RlZFRpY2tldC5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgcmVmdW5kRGV0YWlsczogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RlZFRpY2tldDtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDaGlwIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVmdW5kU3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBzdGF0dXNDb2xvciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IodGlja2V0KSxcbiAgICBbdGlja2V0XVxuICApO1xuICByZXR1cm4gKFxuICAgIDxDaGlwXG4gICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHJlZnVuZCBzdGF0dXMgbGFiZWxcIlxuICAgICAgbGFiZWw9e3QoYHRpY2tldF9zdGF0dXMucmVmdW5kX3JlcXVlc3RfJHtzdGF0dXNDb2xvcn1gKX1cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzW3N0YXR1c0NvbG9yXX1gfVxuICAgIC8+XG4gICk7XG59O1xuXG5SZWZ1bmRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ2hlY2tDaXJjbGVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgRXJyb3JMYWJlbCBmcm9tIFwiLi4vTGFiZWxzL0Vycm9yTGFiZWxcIjtcbmltcG9ydCB7IHJlZnVuZEJ1bGtUaWNrZXRzLCB1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCB7IFNURVBfT05FLCBTVEVQX1RIUkVFLCBTVEVQX1RXTyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBPcmRlckxpc3RUaWNrZXRzIGZyb20gXCIuLi9PcmRlcnNMaXN0L09yZGVyTGlzdFRpY2tldHNcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5cbmNvbnN0IFJlZnVuZFJlcXVlc3RzTW9kYWwgPSAoe1xuICB0aWNrZXRzLFxuICBzdW1taXQsXG4gIG9wZW4sXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlLFxuICBvbkNsb3NlU2xpZGVyLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kLFxuICB1bnNlbGVjdFJlZnVuZFRpY2tldHNcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzdGVwLCBzZXRTdGVwXSA9IHVzZVN0YXRlKFNURVBfT05FKTtcbiAgY29uc3QgW2Vycm9yTXNnLCBzZXRFcnJvck1zZ10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW3JlZnVuZFN1Y2Nlc3MsIHNldFJlZnVuZFN1Y2Nlc3NdID0gdXNlU3RhdGUoZmFsc2UpO1xuXG4gIGNvbnN0IGNsb3NlU2xpZGVyID0gKCkgPT4ge1xuICAgIHNldEVycm9yTXNnKFwiXCIpO1xuICAgIG9uQ2xvc2VTbGlkZXIoKTtcbiAgICBzZXRTdGVwKFNURVBfT05FKTtcbiAgICBpZiAocmVmdW5kU3VjY2Vzcykge1xuICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UoKTsgLy8gaWYgdGhlIHJlZnVuZCBpcyBhIHN1Y2Nlc3MsIHRyaWdnZXIgYW5kIHJlLXJldHJpZXZlIHRpY2tldHMgYnkgb3JkZXJcbiAgICAgIHNldFJlZnVuZFN1Y2Nlc3MoZmFsc2UpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBjb25maXJtUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9UV08pO1xuICB9O1xuXG4gIGNvbnN0IGdvQmFja1RvUmVmdW5kID0gKCkgPT4ge1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICB9O1xuXG4gIGNvbnN0IHJlZnVuZFRpY2tldHMgPSBhc3luYyAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVmdW5kQnVsa1RpY2tldHMoeyB0aWNrZXRzOiB0aWNrZXRzVG9SZWZ1bmQgfSkpLnRoZW4oKHJlcykgPT4ge1xuICAgICAgZGlzcGF0Y2godXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZChyZXMpKTsgLy8gcmV0dXJuaW5nIHdoaWNoIHRpY2tldHMgd2VyZSBzdWNjZXNzZnVsXG4gICAgICBpZiAocmVzPy5sZW5ndGggPT09IHRpY2tldHNUb1JlZnVuZC5sZW5ndGgpIHtcbiAgICAgICAgc2V0U3RlcChTVEVQX1RIUkVFKTsgLy8gc3VjY2VzcywgYWxsIHJlZnVuZHMgd2VyZSByZXF1ZXN0ZWRcbiAgICAgICAgc2V0UmVmdW5kU3VjY2Vzcyh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEVycm9yTXNnKHQoXCJlcnJvcnMucmVmdW5kX3Vuc3VjY2Vzc2Z1bFwiKSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kU3RlcE9uZSA9ICgpID0+IChcbiAgICA8PlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJjb25maXJtX3BvcHVwLnF1ZXN0aW9uX3RleHRfc2VsZWN0X3JlZnVuZFwiKX1cbiAgICAgIDwvaDI+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldExpc3R9PlxuICAgICAgICB7dGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxPcmRlckxpc3RUaWNrZXRzXG4gICAgICAgICAgICBrZXk9e2B0aWNrZXQtJHt0aWNrZXQuaWR9YH1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICBpc1NlbGVjdGVkVG9SZWZ1bmQ9e1xuICAgICAgICAgICAgICAhIXRpY2tldHNUb1JlZnVuZC5maW5kKCh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgICAgIGlzUmVmdW5kTW9kYWxcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY2FuY2VsLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2Nsb3NlU2xpZGVyfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNhbmNlbFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLWNvbnRpbnVlLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY29udGludWVCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y29uZmlybVJlZnVuZH1cbiAgICAgICAgICBkaXNhYmxlZD17dGlja2V0c1RvUmVmdW5kLmxlbmd0aCA9PT0gMH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5jb250aW51ZVwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICA8L0JveD5cbiAgICA8Lz5cbiAgKTtcblxuICBjb25zdCByZWZ1bmRTdGVwVHdvID0gKCkgPT4gKFxuICAgIDxCb3ggZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCI+XG4gICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9jb25maXJtX3JlZnVuZFwiKX1cbiAgICAgIDwvaDM+XG4gICAgICB7ZXJyb3JNc2cgJiYgKFxuICAgICAgICA8RXJyb3JMYWJlbFxuICAgICAgICAgIGNsYXNzTmFtZXM9e3N0eWxlcy5yZWZ1bmRFcnJvck1zZ31cbiAgICAgICAgICBjb2xvcj1cIiNGRjAwMDBcIlxuICAgICAgICAgIGRhdGFUZXN0SWQ9XCJmYWlsZWQtcmVmdW5kLW1lc3NhZ2VcIlxuICAgICAgICAgIG1lc3NhZ2U9e2Vycm9yTXNnfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzVG9SZWZ1bmQubWFwKCh0aWNrZXQpID0+IChcbiAgICAgICAgICA8UmVmdW5kUmVxdWVzdGVkVGlja2V0XG4gICAgICAgICAgICBrZXk9e2ByZWZ1bmRfcmVxXyR7dGlja2V0Py5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKSl9XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuQ1RBQnV0dG9uV3JhcHBlcn0+XG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kLXJldHVybi1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNhbmNlbEJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtnb0JhY2tUb1JlZnVuZH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwiZ2VuZXJhbC5iYWNrXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtyZWZ1bmRUaWNrZXRzfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUaHJlZSA9ICgpID0+IChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWZ1bmRTdWNjZXNzZnVsfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdC1zdWNjZXNzZnVsXCJcbiAgICA+XG4gICAgICA8Q2hlY2tDaXJjbGVJY29uIHN4PXt7IGNvbG9yOiBcIiM0Y2FmNTBcIiB9fSAvPlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc3VjY2Vzc01zZ30+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzFcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnMn0+XG4gICAgICAgIHt0KFwidGlja2V0cy5yZWZ1bmRfcmVxdWVzdF9zdWNjZXNzXzJcIil9XG4gICAgICA8L3NwYW4+XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtZmluaXNoLWJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICA+XG4gICAgICAgIHt0KFwiZ2VuZXJhbC5maW5pc2hcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICA8L0JveD5cbiAgKTtcblxuICBjb25zdCByZW5kZXJTdGVwcyA9ICgpID0+IHtcbiAgICBzd2l0Y2ggKHN0ZXApIHtcbiAgICAgIGNhc2UgU1RFUF9PTkU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgICBjYXNlIFNURVBfVFdPOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFR3bygpO1xuICAgICAgY2FzZSBTVEVQX1RIUkVFOlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcFRocmVlKCk7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gcmVmdW5kU3RlcE9uZSgpO1xuICAgIH1cbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICA8UmlnaHREcmF3ZXJcbiAgICAgICAgaWQ9XCJyZWZ1bmQtcmVxdWVzdHNcIlxuICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICBvbkNsb3NlPXtjbG9zZVNsaWRlcn1cbiAgICAgICAgdGl0bGU9e3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LW1vZGFsXCJcbiAgICAgID5cbiAgICAgICAge3JlbmRlclN0ZXBzKCl9XG4gICAgICA8L1JpZ2h0RHJhd2VyPlxuICAgIDwvU3R5bGVkRW5naW5lUHJvdmlkZXI+XG4gICk7XG59O1xuXG5SZWZ1bmRSZXF1ZXN0c01vZGFsLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uUmVmdW5kU3VjY2Vzc0Nsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgb25DbG9zZVNsaWRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZFJlcXVlc3RzTW9kYWw7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIERyYXdlciwgSWNvbkJ1dHRvbiwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBDbG9zZSBhcyBDbG9zZUljb24gfSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSaWdodERyYXdlciA9ICh7XG4gIGlkLFxuICB0aXRsZSxcbiAgaGVhZGVyQ2hpbGRyZW4gPSBudWxsLFxuICBjaGlsZHJlbixcbiAgb3BlbixcbiAgb25DbG9zZSxcbiAgY2xhc3NOYW1lXG59KSA9PiAoXG4gIDxEcmF3ZXJcbiAgICBpZD17aWR9XG4gICAgb3Blbj17b3Blbn1cbiAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgIGFuY2hvcj1cInJpZ2h0XCJcbiAgICBNb2RhbFByb3BzPXt7IGtlZXBNb3VudGVkOiBmYWxzZSB9fVxuICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLndyYXBwZXJ9ICR7Y2xhc3NOYW1lfWB9XG4gID5cbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8SWNvbkJ1dHRvblxuICAgICAgICBkYXRhLXRlc3RpZD1cImNsb3NlLWRyYXdlclwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNsb3NlQnRufVxuICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICBzeD17eyBmbG9hdDogXCJyaWdodFwiIH19XG4gICAgICAgIGZvbnRTaXplPVwibGFyZ2VcIlxuICAgICAgPlxuICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICA8L0ljb25CdXR0b24+XG4gICAgICB7dGl0bGUgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICAgIHt0aXRsZX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtoZWFkZXJDaGlsZHJlbn1cbiAgICA8L0JveD5cbiAgICB7Y2hpbGRyZW59XG4gIDwvRHJhd2VyPlxuKTtcblxuUmlnaHREcmF3ZXIucHJvcFR5cGVzID0ge1xuICBpZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB0aXRsZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm5vZGVdKSxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBoZWFkZXJDaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYyxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSaWdodERyYXdlcjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5cbmltcG9ydCB7IGdldFN1bW1pdEZvcm1hdHRlZERhdGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgU3VtbWl0SGVhZGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHN1bW1pdCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSxcbiAgICBzaGFsbG93RXF1YWxcbiAgKTtcbiAgcmV0dXJuIChcbiAgICA8Qm94XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy53aWRnZXRIZWFkZXJ9XG4gICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMCwgbGc6IDAgfSB9fVxuICAgICAgZGF0YS10ZXN0aWQ9XCJteS1vcmRlcnMtdGlja2V0LWhlYWRlclwiXG4gICAgPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+e3N1bW1pdD8ubmFtZX08L2gyPlxuICAgICAgPGgyIGNsYXNzTmFtZT17c3R5bGVzLnN1bW1pdFRpdGxlRGF0ZX0+XG4gICAgICAgIHtnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCl9XG4gICAgICA8L2gyPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU3VtbWl0SGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcmVzZXRGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFN1bW1pdEhlYWRlciBmcm9tIFwiLi4vU3VtbWl0SGVhZGVyXCI7XG5pbXBvcnQgTm9UaWNrZXRzRm91bmQgZnJvbSBcIi4uL05vVGlja2V0c0ZvdW5kXCI7XG5pbXBvcnQgeyBUQUJTIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5jb25zdCBUYWJXcmFwcGVyID0gKHsgdGFiLCBjaGlsZHJlbiwgc2V0VGFiIH0pID0+IHtcbiAgY29uc3QgeyBtZW1iZXJPcmRlcnMsIHVzZXJUaWNrZXRzLCBhY3RpdmVGaWx0ZXJzQ291bnQgfSA9IHVzZVNlbGVjdG9yKFxuICAgIChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge31cbiAgKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB0aWNrZXRzID0gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyB1c2VyVGlja2V0cyA6IG1lbWJlck9yZGVycztcbiAgY29uc3QgaGFzVGlja2V0cyA9IHRpY2tldHMubGVuZ3RoID4gMDtcbiAgY29uc3QgaXNGaWx0ZXJlZCA9IGFjdGl2ZUZpbHRlcnNDb3VudCA+IDA7XG5cbiAgY29uc3QgY2xlYXJGaWx0ZXJzID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IGdldFBhZ2VWaWV3ID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gXCJmaWx0ZXJcIjtcbiAgICByZXR1cm4gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyBUQUJTLlRJQ0tFVFMgOiBUQUJTLk9SREVSUztcbiAgfTtcblxuICBjb25zdCBnZXRPbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmIChpc0ZpbHRlcmVkKSByZXR1cm4gY2xlYXJGaWx0ZXJzO1xuICAgIGNvbnN0IHRhYlRvTGluayA9IHRhYiA9PT0gVEFCUy5USUNLRVRTID8gVEFCUy5PUkRFUlMgOiBUQUJTLlRJQ0tFVFM7XG4gICAgcmV0dXJuICgpID0+IHNldFRhYih0YWJUb0xpbmspO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHshaGFzVGlja2V0cyAmJiAoXG4gICAgICAgIDxOb1RpY2tldHNGb3VuZCBwYWdlVmlldz17Z2V0UGFnZVZpZXcoKX0gb25DbGljaz17Z2V0T25DbGljaygpfSAvPlxuICAgICAgKX1cbiAgICAgIHtoYXNUaWNrZXRzICYmIChcbiAgICAgICAgPD5cbiAgICAgICAgICA8Qm94IHN4PXt7IHB0OiA2LCBwYjogMyB9fT5cbiAgICAgICAgICAgIDxTdW1taXRIZWFkZXIgLz5cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICA8Lz5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRhYldyYXBwZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgQ29sbGFwc2UsIERpdmlkZXIsIExpbmsgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFJlYXNzaWduRm9ybSBmcm9tIFwiLi4vUmVhc3NpZ25Gb3JtXCI7XG5pbXBvcnQgRGVsZWdhdGVGb3JtIGZyb20gXCIuLi9EZWxlZ2F0ZUZvcm1cIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IENvbmZpcm1EaWFsb2cgZnJvbSBcIi4uLy4uLy4uL0NvbmZpcm1EaWFsb2dcIjtcblxuY29uc3QgQXNzaWduT3B0aW9ucyA9ICh7XG4gIHRpY2tldCxcbiAgdXNlclByb2ZpbGUsXG4gIGFzc2lnbk9wdGlvbixcbiAgc2V0QXNzaWduT3B0aW9uLFxuICBvbkFzc2lnbixcbiAgb25EZWxlZ2F0ZSxcbiAgb25VbkFzc2lnblxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtvcGVuQ29uZmlybVVuYXNzaWduLCBzZXRPcGVuQ29uZmlybVVuYXNzaWduXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgaXNBc3NpZ25lZFRvTWUgPSB1c2VyUHJvZmlsZT8uZW1haWwgPT09IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3QgaGFuZGxlVW5Bc3NpZ24gPSAoKSA9PiB7XG4gICAgc2V0T3BlbkNvbmZpcm1VbmFzc2lnbihmYWxzZSk7XG4gICAgb25VbkFzc2lnbigpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIGRpc2FibGVkPXtpc0Fzc2lnbmVkVG9NZX1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25Bc3NpZ24odXNlclByb2ZpbGUuZW1haWwsIFwiXCIpfVxuICAgICAgPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX21lXCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgICA8RGl2aWRlciB2YXJpYW50PVwibWlkZGxlXCIgc3g9e3sgbXk6IDMsIHB4OiA0IH19PlxuICAgICAgICBvclxuICAgICAgPC9EaXZpZGVyPlxuICAgICAgPEJveD5cbiAgICAgICAgPENvbGxhcHNlIGluPXthc3NpZ25PcHRpb24gPT09IFwib3RoZXJcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICA8UmVhc3NpZ25Gb3JtXG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICBvbkFzc2lnbih2YWwubmV3X2F0dGVuZGVlX2VtYWlsLCB2YWwucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldEFzc2lnbk9wdGlvbihudWxsKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICB7YXNzaWduT3B0aW9uICE9PSBcIm90aGVyXCIgJiYgKFxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJvdGhlclwiKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uYXNzaWduX3RvX290aGVyXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICApfVxuICAgICAgPC9Cb3g+XG4gICAgICB7YWxsb3dzRGVsZWdhdGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgICAgICBvclxuICAgICAgICAgIDwvRGl2aWRlcj5cbiAgICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJtYW5hZ2VcIn0gdGltZW91dD17NTAwfT5cbiAgICAgICAgICAgIDxEZWxlZ2F0ZUZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIG9uU3VibWl0PXsodmFsKSA9PlxuICAgICAgICAgICAgICAgIG9uRGVsZWdhdGUoXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZmlyc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9sYXN0X25hbWUsXG4gICAgICAgICAgICAgICAgICB2YWwuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwibWFuYWdlXCIgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0QXNzaWduT3B0aW9uKFwibWFuYWdlXCIpfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ubWFuYWdlX3RpY2tldFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHt0aWNrZXQ/Lm93bmVyPy5lbWFpbCAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudW5hc3NpZ25XcmFwcGVyfT5cbiAgICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRPcGVuQ29uZmlybVVuYXNzaWduKHRydWUpfVxuICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgY29sb3I6IFwidGV4dC5saW5rXCIsXG4gICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uOiBcInVuZGVybGluZVwiLFxuICAgICAgICAgICAgICB0ZXh0RGVjb3JhdGlvbkNvbG9yOiBcInRleHQubGlua1wiXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZXZlcnRfdG9fdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICAgIHsvKiBUT0RPOiBpZiB3ZSBuZWVkIHRvIHJldXNlIHRoaXMgdGhlbiB3ZSBzaG91bGQgbW92ZSBpdCB0byBjb250ZXh0ICovfVxuICAgICAgPENvbmZpcm1EaWFsb2dcbiAgICAgICAgb3Blbj17b3BlbkNvbmZpcm1VbmFzc2lnbn1cbiAgICAgICAgdGl0bGU9e3QoXCJ0aWNrZXRfYXNzaWduLmNvbmZpcm1fdW5hc3NpZ24udGl0bGVcIil9XG4gICAgICAgIGJvZHk9e3QoXCJ0aWNrZXRfYXNzaWduLmNvbmZpcm1fdW5hc3NpZ24uYm9keVwiKX1cbiAgICAgICAgb25Db25maXJtPXtoYW5kbGVVbkFzc2lnbn1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0T3BlbkNvbmZpcm1VbmFzc2lnbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduT3B0aW9ucy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyUHJvZmlsZTogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBhc3NpZ25PcHRpb246IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEFzc2lnbk9wdGlvbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25Bc3NpZ246IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uRGVsZWdhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbk9wdGlvbnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgRGVsZWdhdGVGb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiBcIlwiLFxuICAgICAgZGVsZWdhdGVfZW1haWw6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgZGVsZWdhdGVfZmlyc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2xhc3RfbmFtZTogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5yZXF1aXJlZFwiKSksXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9maXJzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmZpcnN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZmlyc3RfbmFtZX1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2ZpcnN0X25hbWUgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZmlyc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2xhc3RfbmFtZVwiXG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5sYXN0X25hbWVcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfbGFzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfbGFzdF9uYW1lKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2xhc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWVcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmVtYWlsXCIpfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMuZGVsZWdhdGVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2VtYWlsKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmIGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWxcbiAgICAgICAgICB9XG4gICAgICAgIC8+XG4gICAgICAgIDxGb3JtRm9vdGVyXG4gICAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLnNhdmVcIil9XG4gICAgICAgICAgY2FuY2VsTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uY2FuY2VsXCIpfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNhbmNlbH1cbiAgICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgICAgLz5cbiAgICAgIDwvZm9ybT5cbiAgICA8Lz5cbiAgKTtcbn07XG5cbkRlbGVnYXRlRm9ybS5wcm9wVHlwZXMgPSB7XG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBEZWxlZ2F0ZUZvcm07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25IZWFkZXIgPSAoeyBpblByb2dyZXNzLCB0aWNrZXQsIHVzZXJFbWFpbCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYXNzaWduZWRUb1lvdSA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyRW1haWw7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB1c2VyID0gYXNzaWduZWRUb1lvdSA/IFwieW91XCIgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGlja2V0LnRpY2tldF90eXBlLm5hbWU7XG4gIH07XG5cbiAgY29uc3QgZ2V0SGVhZGVyTm90ZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcykge1xuICAgICAgY29uc3QgdHJhbnNLZXkgPSBhc3NpZ25lZFRvWW91XG4gICAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX3lvdXJfZXFcIlxuICAgICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmFuc3dlcl9vdGhlcnNfZXFcIjtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPD5cbiAgICAgICAgICB7dCh0cmFuc0tleSl9XG4gICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgICA8L0xpbms+XG4gICAgICAgIDwvPlxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gXCJcIjtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5V3JhcHBlcn0+XG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5wdXJjaGFzZWRCeX0+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24ucHVyY2hhc2VkX2J5XCIpfXtcIiBcIn1cbiAgICAgICAgICB7dGlja2V0Py5vcmRlcj8ub3duZXJfZW1haWx9XG4gICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTm99PlxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICAgIHdpZHRoPXsyNTB9XG4gICAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPC9Cb3g+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5Bc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduSGVhZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBMaW5rLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcbiAgY29uc3QgeyBhbGxvd3NEZWxlZ2F0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIGNvbnN0IGdldFNlY29uZGFyeVRpdGxlID0gKCkgPT4ge1xuICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91XG4gICAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi55b3Vyc2VsZlwiKVxuICAgICAgOiB0aWNrZXQ/Lm93bmVyPy5lbWFpbDtcblxuICAgIGlmIChpblByb2dyZXNzID09PSBcIm1hbmFnZVwiKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmRlbGVnYXRlZFwiKX0gJHtcbiAgICAgICAgdGlja2V0Lm93bmVyLmZpcnN0X25hbWVcbiAgICAgIH0gJHt0aWNrZXQub3duZXIubGFzdF9uYW1lfS5gO1xuICAgIH1cblxuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hc3NpZ25lZF90b1wiKX0gJHt1c2VyfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5yZWFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmICghaW5Qcm9ncmVzcykge1xuICAgICAgcmV0dXJuIGFsbG93c0RlbGVnYXRlXG4gICAgICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmNob29zZV9vcHRpb25cIilcbiAgICAgICAgOiB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvbl9ub19kZWxlZ2F0ZVwiKTtcbiAgICB9XG5cbiAgICBjb25zdCB0cmFuc0tleSA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgID8gXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfeW91cl9lcVwiXG4gICAgICA6IFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uYW5zd2VyX290aGVyc19lcVwiO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDw+XG4gICAgICAgIHt0KHRyYW5zS2V5KX1cbiAgICAgICAgPGJyIC8+XG4gICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICA8TGlua1xuICAgICAgICAgIGNvbXBvbmVudD1cImJ1dHRvblwiXG4gICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgIHN4PXt7IGZvbnRXZWlnaHQ6IDcwMCwgbWFyZ2luOiBcIjIwcHggMCAxMHB4XCIgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY29tcGxldGVfbGF0ZXJcIil9XG4gICAgICAgIDwvTGluaz5cbiAgICAgIDwvPlxuICAgICk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg1XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7Z2V0U2Vjb25kYXJ5VGl0bGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgIGd1dHRlckJvdHRvbVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJOb3RlfVxuICAgICAgICBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICA+XG4gICAgICAgIHtnZXRIZWFkZXJOb3RlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG4vLyBBZGRpbmcgcHJvcC10eXBlcyBmb3IgdHlwZS1jaGVja2luZ1xuUmVhc3NpZ25IZWFkZXIucHJvcFR5cGVzID0ge1xuICBpblByb2dyZXNzOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB1c2VyRW1haWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25IZWFkZXI7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlRm9ybWlrIH0gZnJvbSBcImZvcm1pa1wiO1xuaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcblxuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcblxuY29uc3QgUmVhc3NpZ25Gb3JtID0gKHsgb25TdWJtaXQsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgY29uc3QgZm9ybWlrID0gdXNlRm9ybWlrKHtcbiAgICBpbml0aWFsVmFsdWVzOiB7XG4gICAgICBuZXdfYXR0ZW5kZWVfZW1haWw6IFwiXCIsXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiBcIlwiXG4gICAgfSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiB5dXAub2JqZWN0KHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogeXVwXG4gICAgICAgIC5zdHJpbmcodChcInZhbGlkYXRpb24uZW1haWwuc3RyaW5nXCIpKVxuICAgICAgICAuZW1haWwodChcInZhbGlkYXRpb24uZW1haWwuZm9ybWF0XCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24uZW1haWwucmVxdWlyZWRcIikpLFxuICAgICAgcGVyc29uYWxfbWVzc2FnZTogeXVwLnN0cmluZyh0KFwidmFsaWRhdGlvbi50ZXh0LnN0cmluZ1wiKSlcbiAgICB9KSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcywgeyByZXNldEZvcm0gfSkgPT4ge1xuICAgICAgb25TdWJtaXQodmFsdWVzKTtcbiAgICAgIHJlc2V0Rm9ybSgpO1xuICAgIH1cbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQ2FuY2VsID0gKCkgPT4ge1xuICAgIGZvcm1pay5yZXNldEZvcm0oKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImg2XCIgZ3V0dGVyQm90dG9tPlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS50aXRsZVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGd1dHRlckJvdHRvbSBzeD17eyBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19PlxuICAgICAgICB7dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5ib2R5XCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwibmV3X2F0dGVuZGVlX2VtYWlsXCJcbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5uZXdfYXR0ZW5kZWVfZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5uZXdfYXR0ZW5kZWVfZW1haWx9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5uZXdfYXR0ZW5kZWVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQubmV3X2F0dGVuZGVlX2VtYWlsICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAvPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cInBlcnNvbmFsX21lc3NhZ2VcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnBlcnNvbmFsX21lc3NhZ2VcIil9XG4gICAgICAgICAgdmFsdWU9e2Zvcm1pay52YWx1ZXMucGVyc29uYWxfbWVzc2FnZX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIG11bHRpbGluZVxuICAgICAgICAgIG1pblJvd3M9ezR9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZSlcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5wZXJzb25hbF9tZXNzYWdlICYmIGZvcm1pay5lcnJvcnMucGVyc29uYWxfbWVzc2FnZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuUmVhc3NpZ25Gb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlYXNzaWduRm9ybTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgYXNzaWduQXR0ZW5kZWUsXG4gIGRlbGVnYXRlVGlja2V0LFxuICByZWFzc2lnblRpY2tldCxcbiAgc2F2ZUV4dHJhUXVlc3Rpb25zLFxuICB1bmFzc2lnblRpY2tldFxufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFJpZ2h0RHJhd2VyIGZyb20gXCIuLi9SaWdodERyYXdlclwiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4uL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldEZvcm1cIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IHsgdHJhbnNmb3JtQW53ZXJzRm9ybWF0IH0gZnJvbSBcIi4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB1c2VHZXRUaWNrZXQgZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUdldFRpY2tldFwiO1xuaW1wb3J0IEFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9Bc3NpZ25IZWFkZXJcIjtcbmltcG9ydCBSZWFzc2lnbkhlYWRlciBmcm9tIFwiLi9jb21wb25lbnRzL0hlYWRlci9SZWFzc2lnbkhlYWRlclwiO1xuaW1wb3J0IEFzc2lnbk9wdGlvbnMgZnJvbSBcIi4vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfRFJBV0VSX0lEIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRBc3NpZ24gPSAoeyB0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgb3Blbiwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSA9IHVzZUNvbnRleHQoXG4gICAgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dFxuICApO1xuICBjb25zdCBbYXNzaWduT3B0aW9uLCBzZXRBc3NpZ25PcHRpb25dID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFthc3NpZ25hdGlvbkluUHJvZ3Jlc3MsIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzc10gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIHN1bW1pdCxcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG5cbiAgY29uc3Qgb25DbG9zZUVRRm9ybSA9ICgpID0+IHtcbiAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoXCJcIik7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIGNvbnN0IG9uQXNzaWduID0gKGVtYWlsLCBtZXNzYWdlID0gXCJcIikgPT4ge1xuICAgIGlmIChvd25lcklkKSB7XG4gICAgICBkaXNwYXRjaChyZWFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCwgZW1haWwsIG1lc3NhZ2UpKS50aGVuKCgpID0+IHtcbiAgICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRpc3BhdGNoKGFzc2lnbkF0dGVuZGVlKG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3Qgb25VbkFzc2lnbiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaCh1bmFzc2lnblRpY2tldChvcmRlcklkLCB0aWNrZXRJZCkpLnRoZW4oKCkgPT4ge1xuICAgICAgb25DbG9zZUVRRm9ybSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uRGVsZWdhdGUgPSAoZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+IHtcbiAgICBkaXNwYXRjaChcbiAgICAgIGRlbGVnYXRlVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbClcbiAgICApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0QXNzaWduYXRpb25JblByb2dyZXNzKGAke2Fzc2lnbk9wdGlvbn1gKTtcbiAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvblNhdmVFUSA9ICh2YWwpID0+IHtcbiAgICBjb25zdCBhbnN3ZXJzID0gdHJhbnNmb3JtQW53ZXJzRm9ybWF0KHZhbCk7XG5cbiAgICByZXR1cm4gZGlzcGF0Y2goc2F2ZUV4dHJhUXVlc3Rpb25zKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIG9uQ2xvc2VFUUZvcm0oKTtcbiAgICAgICAgc3VjY2Vzc01lc3NhZ2UodChcInRpY2tldF9hc3NpZ24uc2F2aW5nX3N1Y2Nlc3NcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgZXJyb3JNZXNzYWdlKHQoXCJ0aWNrZXRfYXNzaWduLnNhdmluZ19lcnJvclwiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgY29uc3QgdGl0bGUgPSBvd25lcklkXG4gICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24udGl0bGVcIilcbiAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24udGl0bGVcIik7XG4gIGNvbnN0IEhlYWRlciA9IG93bmVySWQgPyBSZWFzc2lnbkhlYWRlciA6IEFzc2lnbkhlYWRlcjtcblxuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9e1RJQ0tFVF9EUkFXRVJfSUR9XG4gICAgICB0aXRsZT17dGl0bGV9XG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICA+XG4gICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRSZWFzc2lnbkNvbnRhaW5lcn0+XG4gICAgICAgICAgPEhlYWRlclxuICAgICAgICAgICAgaW5Qcm9ncmVzcz17YXNzaWduYXRpb25JblByb2dyZXNzfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICB1c2VyRW1haWw9e3VzZXJQcm9maWxlLmVtYWlsfVxuICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZUVRRm9ybX1cbiAgICAgICAgICAvPlxuXG4gICAgICAgICAge2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcyA/IChcbiAgICAgICAgICAgIDxUaWNrZXRGb3JtXG4gICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZUVRfVxuICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogKFxuICAgICAgICAgICAgPEFzc2lnbk9wdGlvbnNcbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIHVzZXJQcm9maWxlPXt1c2VyUHJvZmlsZX1cbiAgICAgICAgICAgICAgYXNzaWduT3B0aW9uPXthc3NpZ25PcHRpb259XG4gICAgICAgICAgICAgIHNldEFzc2lnbk9wdGlvbj17c2V0QXNzaWduT3B0aW9ufVxuICAgICAgICAgICAgICBvbkFzc2lnbj17b25Bc3NpZ259XG4gICAgICAgICAgICAgIG9uVW5Bc3NpZ249e29uVW5Bc3NpZ259XG4gICAgICAgICAgICAgIG9uRGVsZWdhdGU9e29uRGVsZWdhdGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuVGlja2V0QXNzaWduLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0QXNzaWduO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVGV4dEZpZWxkLCBBdXRvY29tcGxldGUsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuY29uc3QgQ29tcGFueUZpZWxkID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgaXNSZXF1aXJlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2lucHV0VmFsdWUsIHNldElucHV0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IFtvcHRpb25zLCBzZXRPcHRpb25zXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTtcbiAgY29uc3Qge1xuICAgIGVycm9ycyxcbiAgICB2YWx1ZXMsXG4gICAgdG91Y2hlZCxcbiAgICBzZXRGaWVsZFRvdWNoZWQsXG4gICAgc2V0RmllbGRWYWx1ZSxcbiAgICBpbml0aWFsVmFsdWVzXG4gIH0gPSBmb3JtaWs7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55O1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZGlzYWJsZWQgPSAhIWluaXRpYWxWYWx1ZXNbbmFtZV07XG4gIGNvbnN0IGVycm9yID0gdG91Y2hlZFtuYW1lXSAmJiBCb29sZWFuKGVycm9yc1tuYW1lXSk7XG4gIGNvbnN0IGhlbHBlclRleHQgPSB0b3VjaGVkW25hbWVdICYmIGVycm9yc1tuYW1lXTtcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpbnB1dFZhbHVlID09PSBcIlwiKSB7XG4gICAgICBzZXRPcHRpb25zKHZhbHVlID8gW3ZhbHVlXSA6IFtdKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcXVlcnlSZWdpc3RyYXRpb25Db21wYW5pZXMoc3VtbWl0SWQsIGlucHV0VmFsdWUsIChyZXN1bHRzKSA9PiB7XG4gICAgICBsZXQgbmV3T3B0aW9ucyA9IFtdO1xuXG4gICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFt2YWx1ZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXN1bHRzKSB7XG4gICAgICAgIG5ld09wdGlvbnMgPSBbLi4ubmV3T3B0aW9ucywgLi4ucmVzdWx0c107XG4gICAgICB9XG5cbiAgICAgIHNldE9wdGlvbnMobmV3T3B0aW9ucyk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW3ZhbHVlLCBpbnB1dFZhbHVlXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8QXV0b2NvbXBsZXRlXG4gICAgICBuYW1lPXtuYW1lfVxuICAgICAgb3B0aW9ucz17b3B0aW9uc31cbiAgICAgIGF1dG9Db21wbGV0ZVxuICAgICAgZnJlZVNvbG9cbiAgICAgIGluY2x1ZGVJbnB1dEluTGlzdFxuICAgICAgZmlsdGVyU2VsZWN0ZWRPcHRpb25zXG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICBvbkJsdXI9eygpID0+IHNldEZpZWxkVG91Y2hlZChuYW1lLCB0cnVlLCB0cnVlKX1cbiAgICAgIGdldE9wdGlvbkxhYmVsPXsob3B0aW9uKSA9PiB7XG4gICAgICAgIC8vIFZhbHVlIHNlbGVjdGVkIHdpdGggZW50ZXIsIHJpZ2h0IGZyb20gdGhlIGlucHV0XG4gICAgICAgIGlmICh0eXBlb2Ygb3B0aW9uID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICAgICAgfVxuICAgICAgICAvLyBBZGQgXCJ4eHhcIiBvcHRpb24gY3JlYXRlZCBkeW5hbWljYWxseVxuICAgICAgICBpZiAob3B0aW9uLmlucHV0VmFsdWUpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uLmlucHV0VmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmVndWxhciBvcHRpb25cbiAgICAgICAgcmV0dXJuIG9wdGlvbi5uYW1lO1xuICAgICAgfX1cbiAgICAgIG9uQ2hhbmdlPXsoZXZlbnQsIG5ld1ZhbHVlKSA9PiB7XG4gICAgICAgIGNvbnN0IHRtcFZhbHVlID0gbmV3VmFsdWU/LmlucHV0VmFsdWUgfHwgbmV3VmFsdWU7XG5cbiAgICAgICAgc2V0T3B0aW9ucyh0bXBWYWx1ZSA/IFt0bXBWYWx1ZSwgLi4ub3B0aW9uc10gOiBvcHRpb25zKTtcbiAgICAgICAgc2V0RmllbGRWYWx1ZShuYW1lLCB0bXBWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgb25JbnB1dENoYW5nZT17KGV2ZW50LCBuZXdJbnB1dFZhbHVlKSA9PiB7XG4gICAgICAgIHNldElucHV0VmFsdWUobmV3SW5wdXRWYWx1ZSk7XG4gICAgICB9fVxuICAgICAgZmlsdGVyT3B0aW9ucz17KG9wdGlvbnMsIHBhcmFtcykgPT4ge1xuICAgICAgICBjb25zdCB7IGlucHV0VmFsdWUgfSA9IHBhcmFtcztcbiAgICAgICAgY29uc3QgZmlsdGVyZWQgPSBbLi4ub3B0aW9uc107XG4gICAgICAgIC8vIFN1Z2dlc3QgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICAgICAgIGNvbnN0IGlzRXhpc3RpbmcgPSBvcHRpb25zLnNvbWUoKG9wdGlvbikgPT4gaW5wdXRWYWx1ZSA9PT0gb3B0aW9uLm5hbWUpO1xuICAgICAgICBpZiAoaW5wdXRWYWx1ZSAhPT0gXCJcIiAmJiAhaXNFeGlzdGluZykge1xuICAgICAgICAgIGZpbHRlcmVkLnB1c2goe1xuICAgICAgICAgICAgaW5wdXRWYWx1ZSxcbiAgICAgICAgICAgIG5hbWU6IGBTZWxlY3QgXCIke2lucHV0VmFsdWV9XCJgXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmlsdGVyZWQ7XG4gICAgICB9fVxuICAgICAgcmVuZGVySW5wdXQ9eyhwYXJhbXMpID0+IChcbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgey4uLnBhcmFtc31cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfY29tcGFueVwiKX1cbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtoZWxwZXJUZXh0fVxuICAgICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHJlbmRlck9wdGlvbj17KHByb3BzLCBvcHRpb24pID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIC4uLm9wdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZ1xuICAgICAgICAgIDxsaSBrZXk9e2tleX0gey4uLm9wdGlvblByb3BzfT5cbiAgICAgICAgICAgIDxUeXBvZ3JhcGh5XG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MlwiXG4gICAgICAgICAgICAgIHN4PXt7IGZvbnRTaXplOiBcIjFlbVwiLCBjb2xvcjogXCJ0ZXh0LnNlY29uZGFyeVwiIH19XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHtvcHRpb24ubmFtZX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICApO1xuICAgICAgfX1cbiAgICAvPlxuICApO1xufTtcblxuQ29tcGFueUZpZWxkLnByb3BUeXBlcyA9IHtcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHN1bW1pdElkOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IENvbXBhbnlGaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgUmVnaXN0cmF0aW9uRGlzY2xhaW1lciA9ICh7XG4gIGRpc2NsYWltZXIsXG4gIGZvcm1payxcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBpc1JlcXVpcmVkID0gdHJ1ZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IG5hbWUgPSBUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWQ7XG4gIGNvbnN0IHsgZXJyb3JzLCB2YWx1ZXMsIHRvdWNoZWQsIGhhbmRsZUNoYW5nZSwgaGFuZGxlQmx1ciB9ID0gZm9ybWlrO1xuICBjb25zdCB2YWx1ZSA9IHZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxSYXdIVE1MPntkaXNjbGFpbWVyfTwvUmF3SFRNTD5cbiAgICAgIDxGb3JtQ29udHJvbCBmdWxsV2lkdGggZXJyb3I9e2Vycm9yfT5cbiAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgICBjaGVja2VkPXshIXZhbHVlfVxuICAgICAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmV4dHJhX3F1ZXN0aW9uc19mb3JtLmRpc2NsYWltZXJfbGFiZWxcIil9XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtlcnJvciAmJiA8Rm9ybUhlbHBlclRleHQ+e2hlbHBlclRleHQgPz8gXCIgXCJ9PC9Gb3JtSGVscGVyVGV4dD59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuUmVnaXN0cmF0aW9uRGlzY2xhaW1lci5wcm9wVHlwZXMgPSB7XG4gIGRpc2NsYWltZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZm9ybWlrOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVnaXN0cmF0aW9uRGlzY2xhaW1lcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2ggfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBRUkNvZGUgZnJvbSBcInJlYWN0LXFyLWNvZGVcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7XG4gIEVtYWlsT3V0bGluZWQgYXMgRW1haWxJY29uLFxuICBGaWxlRG93bmxvYWRPdXRsaW5lZCBhcyBEb3dubG9hZEljb25cbn0gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIjtcbmltcG9ydCBDb3B5VGV4dCBmcm9tIFwiLi4vLi4vLi4vQ29weVRleHRcIjtcbmltcG9ydCB7IHVzZVRpY2tldERldGFpbHMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlVGlja2V0RGV0YWlsc1wiO1xuaW1wb3J0IHsgZ2V0VGlja2V0UERGLCByZXNlbmROb3RpZmljYXRpb24gfSBmcm9tIFwiLi4vLi4vLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBUV09fSVRFTSB9IGZyb20gXCIuLi8uLi8uLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbEhlYWRlciA9ICh7IHRpY2tldCwgaXNWaXJ0dWFsU3VtbWl0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGlzQ29tcGxldGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbc2VudENvbmZpcm1hdGlvbiwgc2V0U2VudENvbmZpcm1hdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgZG93bmxvYWRUaWNrZXRQZGYgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2goZ2V0VGlja2V0UERGKHRpY2tldCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uU2VuZEVtYWlsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2VuZE5vdGlmaWNhdGlvbih0aWNrZXQpKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFNlbnRDb25maXJtYXRpb24odHJ1ZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc2V0U2VudENvbmZpcm1hdGlvbihmYWxzZSk7XG4gICAgICB9LCBNSUxMSVNFQ19UT19TRUMgKiBUV09fSVRFTSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDRcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMudGl0bGV9PlxuICAgICAgICB7dGlja2V0Py50aWNrZXRfdHlwZT8ubmFtZX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5wdXJjaGFzZWRfYnlcIil9IHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cblxuICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucXJDb2RlfT5cbiAgICAgICAgICAgIDxRUkNvZGVcbiAgICAgICAgICAgICAgc2l6ZT17MjU2fVxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIGhlaWdodDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgICAgbWF4V2lkdGg6IFwiMTAwJVwiLFxuICAgICAgICAgICAgICAgIHdpZHRoOiBcIjEwMCVcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICB2YWx1ZT17dGlja2V0LnFyX2NvZGV9XG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjU2IDI1NlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIDxwIGNsYXNzTmFtZT17c3R5bGVzLnN0YXR1c30+e3QoXCJ0aWNrZXRfZGV0YWlsLnN0YXR1c1wiKX08L3A+XG4gICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnFyTm90ZX0+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwucXJfbm90ZVwiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgIDwvPlxuICAgICAgKX1cblxuICAgICAgeyFpc1ZpcnR1YWxTdW1taXQgJiYgaXNDb21wbGV0ZSAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYWN0aW9uQnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuZG93bmxvYWRCdG59XG4gICAgICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgICAgICBvbkNsaWNrPXtkb3dubG9hZFRpY2tldFBkZn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RG93bmxvYWRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLmRvd25sb2FkXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNlbmRCdG59ICR7c2VudENvbmZpcm1hdGlvbiAmJiBzdHlsZXMuc2VudH1gfVxuICAgICAgICAgICAgb25DbGljaz17b25TZW5kRW1haWx9XG4gICAgICAgICAgICBkaXNhYmxlZD17c2VudENvbmZpcm1hdGlvbn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8RW1haWxJY29uIGZvbnRTaXplPVwibGFyZ2VcIiAvPlxuICAgICAgICAgICAge3NlbnRDb25maXJtYXRpb25cbiAgICAgICAgICAgICAgPyB0KFwidGlja2V0X2RldGFpbC5zZW50XCIpXG4gICAgICAgICAgICAgIDogdChcInRpY2tldF9kZXRhaWwuc2VuZFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyTnVtYmVyfT5cbiAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgdGV4dD17dGlja2V0Py5vcmRlcj8ubnVtYmVyfVxuICAgICAgICAgIHJldmVyc2VkXG4gICAgICAgICAgd2lkdGg9ezE1MH1cbiAgICAgICAgICB0b29sdGlwVGV4dD17dChcIm9yZGVyX3N1bW1hcnkuY29weV9vcmRlcl9udW1iZXJcIil9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldERldGFpbEhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgRXh0cmFRdWVzdGlvbnNGaWVsZHMgZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzXCI7XG5cbmltcG9ydCB7XG4gIGdldFR5cGVWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi8uLi8uLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5cbmltcG9ydCBUaWNrZXRPd25lckZpZWxkcyBmcm9tIFwiLi4vVGlja2V0T3duZXJGaWVsZHNcIjtcbmltcG9ydCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyIGZyb20gXCIuLi9SZWdpc3RyYXRpb25EaXNjbGFpbWVyL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXJcIjtcbmltcG9ydCBGb3JtRm9vdGVyIGZyb20gXCIuLi8uLi8uLi9Gb3JtRm9vdGVyXCI7XG5pbXBvcnQgdXNlU2Nyb2xsVG9FcnJvciBmcm9tIFwiLi4vLi4vLi4vLi4vaG9va3MvdXNlU2Nyb2xsVG9FcnJvclwiO1xuaW1wb3J0IHtcbiAgcGFyc2VBbnN3ZXJzLFxuICBidWlsZFZhbGlkYXRpb25TY2hlbWFcbn0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi4vLi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEZvcm0gPSAoe1xuICB0aWNrZXQsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBzdW1taXQsXG4gIGNhbkVkaXQsXG4gIG9uU3VibWl0LFxuICBvbkNsb3NlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgYW5zd2VycyA9IHRpY2tldD8ub3duZXI/LmV4dHJhX3F1ZXN0aW9ucy5yZWR1Y2UoKHJlcywgYW5zKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKGFucy5xdWVzdGlvbi5uYW1lLCBhbnMucXVlc3Rpb24uaWQpO1xuICAgIHJlc1txdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbHVlKGFucy52YWx1ZSwgYW5zLnF1ZXN0aW9uLnR5cGUpO1xuICAgIHJldHVybiByZXM7XG4gIH0sIHt9KTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHBhcnNlQW5zd2VycyhcbiAgICAgIHRpY2tldC5vd25lcixcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgYW5zd2VycyxcbiAgICAgIHRydWUsXG4gICAgICB0cnVlXG4gICAgKSxcbiAgICB2YWxpZGF0aW9uU2NoZW1hOiBidWlsZFZhbGlkYXRpb25TY2hlbWEoXG4gICAgICBleHRyYVF1ZXN0aW9ucyxcbiAgICAgIHRydWUsXG4gICAgICBzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfbWFuZGF0b3J5XG4gICAgKSxcbiAgICBvblN1Ym1pdDogKHZhbHVlcykgPT4ge1xuICAgICAgY29uc3QgcmVsZXZhbnRBbnN3ZXJzID0gcGFyc2VBbnN3ZXJzKFxuICAgICAgICB0aWNrZXQub3duZXIsXG4gICAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgICB2YWx1ZXMsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWUsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBvblN1Ym1pdChyZWxldmFudEFuc3dlcnMpO1xuICAgIH0sXG4gICAgZW5hYmxlUmVpbml0aWFsaXplOiB0cnVlXG4gIH0pO1xuXG4gIC8vIGNvbnNvbGUubG9nKFwiU1VNTUlUOiBcIiwgc3VtbWl0KTtcbiAgLy8gY29uc29sZS5sb2coXCJUSUNLRVQ6IFwiLCB0aWNrZXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlFVRVNUSVVPTnM6IFwiLCBleHRyYVF1ZXN0aW9ucyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiQU5TV0VSUzogXCIsIGFuc3dlcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIkVSUk9SczogXCIsIGZvcm1pay5lcnJvcnMpO1xuICAvLyBjb25zb2xlLmxvZyhcIlZBTFVFUzogXCIsIGZvcm1pay52YWx1ZXMpO1xuICAvLyBjb25zb2xlLmxvZyhcIklOSVRJQUw6IFwiLCBmb3JtaWsuaW5pdGlhbFZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVE9VQ0hFRDogXCIsIGZvcm1pay50b3VjaGVkKTtcblxuICAvLyBTQ1JPTEwgVE8gRVJST1JcbiAgdXNlU2Nyb2xsVG9FcnJvcihmb3JtaWspO1xuXG4gIHJldHVybiAoXG4gICAgPGZvcm0gb25TdWJtaXQ9e2Zvcm1pay5oYW5kbGVTdWJtaXR9IG5vVmFsaWRhdGU+XG4gICAgICA8VGlja2V0T3duZXJGaWVsZHNcbiAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgIGlzRGVsZWdhdGVkPXshIXRpY2tldC5vd25lcj8ubWFuYWdlcl9pZH1cbiAgICAgICAgc3VtbWl0SWQ9e3N1bW1pdC5pZH1cbiAgICAgICAgZGlzYWJsZWQ9eyFjYW5FZGl0fVxuICAgICAgLz5cblxuICAgICAge2V4dHJhUXVlc3Rpb25zPy5sZW5ndGggPiAwICYmIChcbiAgICAgICAgPEJveD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBjbGFzc05hbWU9e3N0eWxlcy5hZGRpdGlvbmFsRGV0YWlsc30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYWRpdGlvbmFsX2RldGFpbHNcIil9XG4gICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDxFeHRyYVF1ZXN0aW9uc0ZpZWxkc1xuICAgICAgICAgICAgZXh0cmFRdWVzdGlvbnM9e2V4dHJhUXVlc3Rpb25zfVxuICAgICAgICAgICAgYWxsb3dFZGl0PXtjYW5FZGl0fVxuICAgICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgLz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuXG4gICAgICB7c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQgJiYgKFxuICAgICAgICA8UmVnaXN0cmF0aW9uRGlzY2xhaW1lclxuICAgICAgICAgIGZvcm1paz17Zm9ybWlrfVxuICAgICAgICAgIGRpc2NsYWltZXI9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9jb250ZW50fVxuICAgICAgICAgIGlzUmVxdWlyZWQ9e3N1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnl9XG4gICAgICAgICAgaXNEaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgc2F2ZUxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5zYXZlXCIpfVxuICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9kZXRhaWwuY2FuY2VsXCIpfVxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBkaXNhYmxlZD17Zm9ybWlrLmlzU3VibWl0dGluZ31cbiAgICAgIC8+XG4gICAgPC9mb3JtPlxuICApO1xufTtcblxuVGlja2V0Rm9ybS5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgZXh0cmFRdWVzdGlvbnM6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2FuRWRpdDogUHJvcFR5cGVzLmJvb2wsXG4gIG9uU3VibWl0OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRGb3JtO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBUZXh0RmllbGQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcbmltcG9ydCBDb21wYW55RmllbGQgZnJvbSBcIi4uL0NvbXBhbnlGaWVsZFwiO1xuXG5jb25zdCBUaWNrZXRPd25lckZpZWxkcyA9ICh7IGZvcm1paywgc3VtbWl0SWQsIGRpc2FibGVkLCBpc0RlbGVnYXRlZCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyLCBpbml0aWFsVmFsdWVzIH0gPVxuICAgIGZvcm1paztcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VGV4dEZpZWxkXG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBuYW1lPXtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbH1cbiAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLmVtYWlsXCIpfVxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICB2YWx1ZT17dmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXX1cbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgIC8+XG4gICAgICB7aXNEZWxlZ2F0ZWQgJiYgKFxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBzeD17eyBmb250V2VpZ2h0OiA1MDAsIG1hcmdpbjogXCIxMHB4IDBcIiB9fT5cbiAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwubWFuYWdlX2ZvclwiKX1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgKX1cbiAgICAgIHtbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lLCBUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0ubWFwKFxuICAgICAgICAobmFtZSkgPT4gKFxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAga2V5PXtuYW1lfVxuICAgICAgICAgICAgbmFtZT17bmFtZX1cbiAgICAgICAgICAgIGxhYmVsPXt0KGB0aWNrZXRfZGV0YWlsLiR7bmFtZX1gKX1cbiAgICAgICAgICAgIHZhbHVlPXt2YWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWQgfHwgaXNEZWxlZ2F0ZWQgfHwgISFpbml0aWFsVmFsdWVzW25hbWVdfVxuICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgIG9uQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgIGVycm9yPXt0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKX1cbiAgICAgICAgICAgIGhlbHBlclRleHQ9e2Zvcm1pay50b3VjaGVkW25hbWVdICYmIGZvcm1pay5lcnJvcnNbbmFtZV19XG4gICAgICAgICAgICByZXF1aXJlZFxuICAgICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICAvPlxuICAgICAgICApXG4gICAgICApfVxuICAgICAgPENvbXBhbnlGaWVsZCBmb3JtaWs9e2Zvcm1pa30gc3VtbWl0SWQ9e3N1bW1pdElkfSBpc1JlcXVpcmVkIC8+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmluZm9Ob3RlfT57dChcInRpY2tldF9kZXRhaWwuaW5mb19ub3RlXCIpfTwvQm94PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuVGlja2V0T3duZXJGaWVsZHMucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBpc0RlbGVnYXRlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldE93bmVyRmllbGRzO1xuIiwiZXhwb3J0IGNvbnN0IFRJQ0tFVF9BVFRFTkRFRV9LRVlTID0ge1xuICBlbWFpbDogXCJhdHRlbmRlZV9lbWFpbFwiLFxuICBmaXJzdE5hbWU6IFwiYXR0ZW5kZWVfZmlyc3RfbmFtZVwiLFxuICBsYXN0TmFtZTogXCJhdHRlbmRlZV9sYXN0X25hbWVcIixcbiAgY29tcGFueTogXCJhdHRlbmRlZV9jb21wYW55XCIsXG4gIGRpc2NsYWltZXJBY2NlcHRlZDogXCJkaXNjbGFpbWVyX2FjY2VwdGVkXCJcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBUaWNrZXRGb3JtIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgeyBzYXZlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgVGlja2V0RGV0YWlsSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsSGVhZGVyXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldERldGFpbCA9ICh7XG4gIHN1bW1pdCxcbiAgdGlja2V0SWQsXG4gIG9yZGVySWQsXG4gIG93bmVySWQsXG4gIG9wZW4sXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSA9IHVzZUNvbnRleHQoXG4gICAgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dFxuICApO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICB1c2VyOiB7IHVzZXJQcm9maWxlIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUpO1xuICBjb25zdCB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfSA9IHVzZUdldFRpY2tldChcbiAgICB0aWNrZXRJZCxcbiAgICBvcmRlcklkLFxuICAgIG93bmVySWQsXG4gICAgb3BlblxuICApO1xuICBjb25zdCBpc1VzZXJPcmRlck93bmVyID0gdGlja2V0Py5vcmRlcj8ub3duZXJfaWQgPT09IHVzZXJQcm9maWxlPy5pZDtcbiAgY29uc3QgaXNVc2VyVGlja2V0T3duZXIgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlclByb2ZpbGU/LmVtYWlsO1xuICBjb25zdCBjYW5FZGl0VGlja2V0RGF0YSA9XG4gICAgKGlzVXNlclRpY2tldE93bmVyIHx8IGlzVXNlck9yZGVyT3duZXIpICYmXG4gICAgc3VtbWl0LmFsbG93X3VwZGF0ZV9hdHRlbmRlZV9leHRyYV9xdWVzdGlvbnM7XG5cbiAgY29uc3Qgb25TYXZlID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlVGlja2V0RGV0YWlscyh0aWNrZXQsIGFuc3dlcnMpKVxuICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICAgIHN1Y2Nlc3NNZXNzYWdlKHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19zdWNjZXNzXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgIGVycm9yTWVzc2FnZSh0KFwidGlja2V0X2RldGFpbC5zYXZpbmdfZXJyb3JcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD17VElDS0VUX0RSQVdFUl9JRH1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0RGV0YWlsQ29udGFpbmVyfVxuICAgICAgaGVhZGVyQ2hpbGRyZW49e1xuICAgICAgICA8VGlja2V0RGV0YWlsSGVhZGVyXG4gICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgaXNWaXJ0dWFsU3VtbWl0PXtzdW1taXQ/LmlzX3ZpcnR1YWx9XG4gICAgICAgIC8+XG4gICAgICB9XG4gICAgPlxuICAgICAge3RpY2tldCAmJiBleHRyYVF1ZXN0aW9ucyAmJiAoXG4gICAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVDb250YWluZXJ9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImg0XCJcbiAgICAgICAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmF0dGVuZGVlSW5mb1RpdGxlfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuYXR0ZW5kZWVfaW5mb3JtYXRpb25cIil9XG4gICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICB7dGlja2V0ICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgICAgICAgY2FuRWRpdD17Y2FuRWRpdFRpY2tldERhdGF9XG4gICAgICAgICAgICAgICAgb25TdWJtaXQ9e29uU2F2ZX1cbiAgICAgICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICl9XG4gICAgPC9SaWdodERyYXdlcj5cbiAgKTtcbn07XG5cblRpY2tldERldGFpbC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgdGlja2V0SWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9yZGVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG93bmVySWQ6IFByb3BUeXBlcy5udW1iZXIsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQ29udGFpbmVyLCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0U3RhdHVzID0gKHsgdGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmU7XG4gIGNvbnN0IHJlZnVuZFJlcXVlc3RzID0gdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uZmluZChcbiAgICAocikgPT4gci5zdGF0dXMgPT09IFwiUmVxdWVzdGVkXCJcbiAgKTtcbiAgY29uc3QgeyBpc0luY29tcGxldGUsIGlzVW5hc3NpZ25lZCwgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRTdGF0dXNDb250YWluZXJ9PlxuICAgICAge2lzQWN0aXZlID8gKFxuICAgICAgICA8PlxuICAgICAgICAgIHshIXJlZnVuZFJlcXVlc3RzICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHJlZnVuZCByZXF1ZXN0ZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25SZWZ1bmRSZXF1ZXN0ZWR9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19yZWZ1bmRfcmVxdWVzdGVkXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNJbmNvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGluY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25JbmNvbXBsZXRlfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfaW5jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzVW5hc3NpZ25lZCAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPVwidGlja2V0IHN0YXR1cyB1bmFzc2lnbmVkXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uVW5hc3NpZ25lZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3VuYXNzaWduZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0NvbXBsZXRlICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNvbXBsZXRlXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19jb21wbGV0ZVwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvPlxuICAgICAgKSA6IChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIGNhbmNlbGxlZFwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXMuYnV0dG9uQ2FuY2VsbGVkfWB9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NhbmNlbGxlZFwiKX1cbiAgICAgICAgPC9CdXR0b24+XG4gICAgICApfVxuICAgIDwvQ29udGFpbmVyPlxuICApO1xufTtcblxuVGlja2V0U3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gICAgfSksXG4gICAgcmVmdW5kUmVxdWVzdHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSlcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRGl2aWRlcixcbiAgVGFiLFxuICBUYWJzLFxuICB1c2VNZWRpYVF1ZXJ5LFxuICB1c2VUaGVtZVxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgc3RvcExvYWRpbmcgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBGSVJTVF9QQUdFLFxuICBUQUJTXG59IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBNeU9yZGVyc1RpY2tldHMgZnJvbSBcIi4uL015T3JkZXJzVGlja2V0c1wiO1xuaW1wb3J0IEFzc2lnbmVkVG9NZSBmcm9tIFwiLi4vT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWVcIjtcbmltcG9ydCB7XG4gIGdldFRpY2tldHNCeU9yZGVyLFxuICBnZXRVc2VyT3JkZXJzLFxuICBnZXRVc2VyVGlja2V0c1xufSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IFRhYldyYXBwZXIgZnJvbSBcIi4uL1RhYldyYXBwZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgV2lkZ2V0VGFicyA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdGFiLCBzZXRUYWJdID0gdXNlU3RhdGUoVEFCUy5PUkRFUlMpO1xuICBjb25zdCBbdGlja2V0c0Z1bGx5TG9hZGVkLCBzZXRUaWNrZXRzRnVsbHlMb2FkZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHtcbiAgICBmaWx0ZXIsXG4gICAgc29ydCxcbiAgICBvcmRlcnNfcGVyX3BhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgdGlja2V0X3Blcl9wYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgIHVzZXJUaWNrZXRzLFxuICAgIG1lbWJlck9yZGVyc1xuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKTtcbiAgY29uc3QgaXNNb2JpbGUgPSB1c2VNZWRpYVF1ZXJ5KHRoZW1lLmJyZWFrcG9pbnRzLmRvd24oXCJsZ1wiKSk7XG5cbiAgY29uc3QgaGFuZGxlVGFiQ2hhbmdlID0gKGV2LCBuZXdUYWIpID0+IHtcbiAgICBzZXRUYWIobmV3VGFiKTtcbiAgfTtcblxuICBjb25zdCBmZXRjaEFzc2lnbmVkVGlja2V0cyA9IChwYWdlLCBza2lwTG9hZGluZyA9IGZhbHNlKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgZ2V0VXNlclRpY2tldHMoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBlclBhZ2U6IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNvcnRcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcExvYWRpbmdcbiAgICAgIClcbiAgICApO1xuXG4gIGNvbnN0IGZldGNoT3JkZXJUaWNrZXRzID0gKHBhZ2UsIHNraXBMb2FkaW5nID0gZmFsc2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyT3JkZXJzKFxuICAgICAgICB7XG4gICAgICAgICAgcGFnZSxcbiAgICAgICAgICBwZXJQYWdlOiBvcmRlcnNQZXJQYWdlLFxuICAgICAgICAgIGZpbHRlcixcbiAgICAgICAgICBzb3J0XG4gICAgICAgIH0sXG4gICAgICAgIHNraXBMb2FkaW5nXG4gICAgICApXG4gICAgKS50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBvcmRlclRpY2tldHNQcm9taXNlcyA9IGRhdGEubWFwKChvcmRlcikgPT5cbiAgICAgICAgZGlzcGF0Y2goXG4gICAgICAgICAgZ2V0VGlja2V0c0J5T3JkZXIoe1xuICAgICAgICAgICAgb3JkZXJJZDogb3JkZXIuaWQsXG4gICAgICAgICAgICBjdXJyZW50X3BhZ2U6IEZJUlNUX1BBR0UsXG4gICAgICAgICAgICBwZXJQYWdlOiB0aWNrZXRQZXJQYWdlLFxuICAgICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgICAgc29ydFxuICAgICAgICAgIH0pXG4gICAgICAgIClcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBQcm9taXNlLmFsbChvcmRlclRpY2tldHNQcm9taXNlcyk7XG4gICAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmZXRjaFByb21pc2VzID0gW1xuICAgICAgZmV0Y2hBc3NpZ25lZFRpY2tldHMoRklSU1RfUEFHRSwgdHJ1ZSksXG4gICAgICBmZXRjaE9yZGVyVGlja2V0cyhGSVJTVF9QQUdFLCB0cnVlKVxuICAgIF07XG4gICAgUHJvbWlzZS5hbGwoZmV0Y2hQcm9taXNlcylcbiAgICAgIC50aGVuKCgpID0+IHNldFRpY2tldHNGdWxseUxvYWRlZCh0cnVlKSlcbiAgICAgIC5maW5hbGx5KCgpID0+IGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpKTtcbiAgfSwgW2ZpbHRlciwgc29ydF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHRpY2tldHNGdWxseUxvYWRlZCkge1xuICAgICAgaWYgKG1lbWJlck9yZGVycz8ubGVuZ3RoID09PSAwICYmIHVzZXJUaWNrZXRzPy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHNldFRhYihUQUJTLlRJQ0tFVFMpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3RpY2tldHNGdWxseUxvYWRlZF0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50YWJXcmFwcGVyfT5cbiAgICAgIDxUYWJzXG4gICAgICAgIHZhbHVlPXt0YWJ9XG4gICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVUYWJDaGFuZ2V9XG4gICAgICAgIHZhcmlhbnQ9e2lzTW9iaWxlID8gXCJmdWxsV2lkdGhcIiA6IFwic3RhbmRhcmRcIn1cbiAgICAgID5cbiAgICAgICAgPFRhYiBsYWJlbD17dChcIm9yZGVycy50aXRsZVwiKX0gdmFsdWU9e1RBQlMuT1JERVJTfSAvPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLmFzc2lnbmVkX3RvX21lXCIpfSB2YWx1ZT17VEFCUy5USUNLRVRTfSAvPlxuICAgICAgPC9UYWJzPlxuICAgICAgPERpdmlkZXIgLz5cblxuICAgICAge3RhYiA9PT0gVEFCUy5PUkRFUlMgJiYgKFxuICAgICAgICA8VGFiV3JhcHBlciB0YWI9e1RBQlMuT1JERVJTfSBzZXRUYWI9e3NldFRhYn0+XG4gICAgICAgICAgPE15T3JkZXJzVGlja2V0cyBmZXRjaERhdGE9e2ZldGNoT3JkZXJUaWNrZXRzfSAvPlxuICAgICAgICA8L1RhYldyYXBwZXI+XG4gICAgICApfVxuICAgICAge3RhYiA9PT0gVEFCUy5USUNLRVRTICYmIChcbiAgICAgICAgPFRhYldyYXBwZXIgdGFiPXtUQUJTLlRJQ0tFVFN9IHNldFRhYj17c2V0VGFifT5cbiAgICAgICAgICA8QXNzaWduZWRUb01lIGZldGNoRGF0YT17ZmV0Y2hBc3NpZ25lZFRpY2tldHN9IC8+XG4gICAgICAgIDwvVGFiV3JhcHBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRUYWJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwsIGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyByZXNldEZpbHRlciwgY2hhbmdlU29ydCwgY2hhbmdlRmlsdGVyIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBDdXN0b21UaGVtZSBmcm9tIFwiLi4vQ3VzdG9tVGhlbWVcIjtcbmltcG9ydCBMb2FkZXIgZnJvbSBcIi4uL0xvYWRlclwiO1xuaW1wb3J0IEZpbHRlcnMgZnJvbSBcIi4uL0ZpbHRlcnNcIjtcbmltcG9ydCBXaWRnZXRUYWJzIGZyb20gXCIuLi9XaWRnZXRUYWJzXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb24gZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvblwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBXaWRnZXRXcmFwcGVyID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW21zZ0RhdGEsIHNldE1zZ0RhdGFdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nLFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09SREVSX05VTUJFUjogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3Qgc3VjY2Vzc01lc3NhZ2UgPSAobXNnKSA9PlxuICAgIHNldE1zZ0RhdGEoeyBtZXNzYWdlOiBtc2csIHNldmVyaXR5OiBcInN1Y2Nlc3NcIiB9KTtcbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gKG1zZykgPT4gc2V0TXNnRGF0YSh7IG1lc3NhZ2U6IG1zZywgc2V2ZXJpdHk6IFwiZXJyb3JcIiB9KTtcbiAgY29uc3QgbWVzc2FnZUNvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7IHN1Y2Nlc3NNZXNzYWdlLCBlcnJvck1lc3NhZ2UgfSksIFtdKTtcblxuICBjb25zdCBvblJlc2V0ID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0RmlsdGVyKCkpO1xuICB9O1xuXG4gIGNvbnN0IG9uRmlsdGVyID0gKGZpbHRlclZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlRmlsdGVyKGZpbHRlclZhbHVlKSk7XG4gIH07XG5cbiAgY29uc3Qgb25Tb3J0ID0gKHNvcnRWYWx1ZSkgPT4ge1xuICAgIGRpc3BhdGNoKGNoYW5nZVNvcnQoc29ydFZhbHVlKSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Q3VzdG9tVGhlbWU+XG4gICAgICA8TG9hZGVyIG9wZW49e2xvYWRpbmd9IC8+XG4gICAgICA8Q3VzdG9tTm90aWZpY2F0aW9uXG4gICAgICAgIG9wZW49eyEhbXNnRGF0YX1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0TXNnRGF0YShudWxsKX1cbiAgICAgICAgbWVzc2FnZT17bXNnRGF0YT8ubWVzc2FnZX1cbiAgICAgICAgc2V2ZXJpdHk9e21zZ0RhdGE/LnNldmVyaXR5fVxuICAgICAgLz5cbiAgICAgIDxGaWx0ZXJzXG4gICAgICAgIG9uRmlsdGVyPXtvbkZpbHRlcn1cbiAgICAgICAgb25Tb3J0PXtvblNvcnR9XG4gICAgICAgIG9uU2VhcmNoPXtvbkZpbHRlcn1cbiAgICAgICAgb25SZXNldD17b25SZXNldH1cbiAgICAgIC8+XG4gICAgICA8Qm94IHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19PlxuICAgICAgICA8aDMgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0c1RpdGxlVGV4dH0+XG4gICAgICAgICAge2ZpbHRlclZhbHVlc1xuICAgICAgICAgICAgPyB0KFwibGFiZWxzLnNlYXJjaF9yZXN1bHRzXCIsIHsgZmlsdGVyOiBmaWx0ZXJWYWx1ZXMgfSlcbiAgICAgICAgICAgIDogdChcImxhYmVscy50aWNrZXRzXCIpfVxuICAgICAgICA8L2gzPlxuICAgICAgPC9Cb3g+XG4gICAgICA8Q3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17bWVzc2FnZUNvbnRleHR9PlxuICAgICAgICA8V2lkZ2V0VGFicyAvPlxuICAgICAgPC9DdXN0b21Ob3RpZmljYXRpb25Db250ZXh0LlByb3ZpZGVyPlxuICAgIDwvQ3VzdG9tVGhlbWU+XG4gICk7XG59O1xuXG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSAoeyB3aWRnZXRTdGF0ZSB9KSA9PiAoe1xuICBzb3J0OiB3aWRnZXRTdGF0ZS5zb3J0LFxuICBmaWx0ZXI6IHdpZGdldFN0YXRlLmZpbHRlclxufSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QobWFwU3RhdGVUb1Byb3BzLCB7fSkoV2lkZ2V0V3JhcHBlcik7XG4iLCJpbXBvcnQgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgZ2V0RXh0cmFRdWVzdGlvbnMsIGdldFRpY2tldCB9IGZyb20gXCIuLi9hY3Rpb25zXCI7XG5cbmNvbnN0IHVzZUdldFRpY2tldCA9ICh0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChydW4pIHtcbiAgICAgIGlmICh0aWNrZXRJZCAmJiBvcmRlcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldFRpY2tldCh0aWNrZXRJZCwgb3JkZXJJZCkpO1xuICAgICAgfVxuXG4gICAgICBpZiAob3duZXJJZCkge1xuICAgICAgICBkaXNwYXRjaChnZXRFeHRyYVF1ZXN0aW9ucyhvd25lcklkKSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0SWQsIG9yZGVySWQsIG93bmVySWQsIHJ1bl0pO1xuXG4gIGNvbnN0IHsgZXh0cmFRdWVzdGlvbnMsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZVxuICApO1xuXG4gIHJldHVybiB7IHRpY2tldCwgZXh0cmFRdWVzdGlvbnMgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZUdldFRpY2tldDtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVElDS0VUX0RSQVdFUl9JRCB9IGZyb20gXCIuLi91dGlscy9jb25zdGFudHNcIjtcblxuLy8gU21vb3RoIHNjcm9sbGluZyBmdW5jdGlvbiB1c2luZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbmZ1bmN0aW9uIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgdGFyZ2V0U2Nyb2xsVG9wLCBkdXJhdGlvbikge1xuICBjb25zdCBzdGFydFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3A7XG4gIGNvbnN0IGRpc3RhbmNlID0gdGFyZ2V0U2Nyb2xsVG9wIC0gc3RhcnRTY3JvbGxUb3A7XG4gIGxldCBzdGFydFRpbWUgPSBudWxsO1xuXG4gIGZ1bmN0aW9uIGFuaW1hdGlvblN0ZXAodGltZXN0YW1wKSB7XG4gICAgaWYgKCFzdGFydFRpbWUpIHN0YXJ0VGltZSA9IHRpbWVzdGFtcDtcbiAgICBjb25zdCBlbGFwc2VkID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGVsYXBzZWQgLyBkdXJhdGlvbiwgMSk7XG4gICAgY29uc3QgZWFzZUluT3V0UXVhZCA9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgICAgcHJvZ3Jlc3MgPCAwLjUgPyAyICogcHJvZ3Jlc3MgKiogMiA6IDEgLSAoLTIgKiBwcm9ncmVzcyArIDIpICoqIDIgLyAyO1xuXG4gICAgY29udGFpbmVyLnNjcm9sbFRvcCA9IHN0YXJ0U2Nyb2xsVG9wICsgZGlzdGFuY2UgKiBlYXNlSW5PdXRRdWFkO1xuXG4gICAgaWYgKGVsYXBzZWQgPCBkdXJhdGlvbikge1xuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xuICAgIH1cbiAgfVxuXG4gIHJlcXVlc3RBbmltYXRpb25GcmFtZShhbmltYXRpb25TdGVwKTtcbn1cblxuY29uc3QgdXNlU2Nyb2xsVG9FcnJvciA9IChmb3JtaWspID0+IHtcbiAgY29uc3QgeyBlcnJvcnMsIGlzVmFsaWQsIGlzU3VibWl0dGluZyB9ID0gZm9ybWlrO1xuICBjb25zdCBlcnJvckFycmF5ID0gT2JqZWN0LmtleXMoZXJyb3JzKTtcbiAgY29uc3QgZXJyb3JDb3VudCA9IGVycm9yQXJyYXkubGVuZ3RoO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVmFsaWQgfHwgZXJyb3JDb3VudCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gc29ydCBlbGVtZW50cyBieSBwb3NpdGlvblxuICAgIGNvbnN0IGVsZW1lbnRzU29ydGVkID0gZXJyb3JBcnJheVxuICAgICAgLnJlZHVjZSgocmVzdWx0LCBlcnJvcikgPT4ge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgW25hbWU9JyR7ZXJyb3J9J11gKTtcbiAgICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm4gcmVzdWx0O1xuXG4gICAgICAgIGNvbnN0IGVsUmVjdCA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICAgIHJlc3VsdC5wdXNoKHsgZWxlbWVudCwgZXJyb3IsIHRvcDogZWxSZWN0LnRvcCB9KTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSwgW10pXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS50b3AgLSBiLnRvcCk7XG5cbiAgICBpZiAoZWxlbWVudHNTb3J0ZWQubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudFxuICAgICAgLmdldEVsZW1lbnRCeUlkKFRJQ0tFVF9EUkFXRVJfSUQpXG4gICAgICAucXVlcnlTZWxlY3RvcihcIi5NdWlEcmF3ZXItcGFwZXJcIik7XG4gICAgY29uc3QgdGFyZ2V0ID0gZWxlbWVudHNTb3J0ZWRbMF07XG5cbiAgICBpZiAoY29udGFpbmVyPy5jb250YWlucyh0YXJnZXQuZWxlbWVudCkpIHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIC8vIENhbGN1bGF0ZSB0aGUgb2Zmc2V0IG9mIHRoZSB0YXJnZXQgZWxlbWVudCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmVyXG4gICAgICBjb25zdCBlbGVtT2ZmZXN0ID0gMTAwO1xuICAgICAgY29uc3QgYW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7XG4gICAgICBjb25zdCBzY3JvbGxUb3AgPVxuICAgICAgICB0YXJnZXQudG9wIC0gY29udGFpbmVyUmVjdC50b3AgKyBjb250YWluZXIuc2Nyb2xsVG9wIC0gZWxlbU9mZmVzdDtcblxuICAgICAgLy8gU2Nyb2xsIHRoZSBjb250YWluZXIgdG8gdGhlIHRhcmdldCBlbGVtZW50J3MgcG9zaXRpb25cbiAgICAgIHNtb290aFNjcm9sbFRvKGNvbnRhaW5lciwgc2Nyb2xsVG9wLCBhbmltYXRpb25EdXJhdGlvbik7IC8vIDUwMG1zIGR1cmF0aW9uXG4gICAgfVxuICB9LCBbaXNTdWJtaXR0aW5nXSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB1c2VTY3JvbGxUb0Vycm9yO1xuIiwiaW1wb3J0IHsgaXNUaWNrZXRSZWZ1bmRhYmxlIH0gZnJvbSBcIi4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIkNvbXBsZXRlXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0lOQ09NUExFVEUgPSBcIkluY29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJDYW5jZWxsZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiVW5hc3NpZ25lZFwiO1xuXG5leHBvcnQgY29uc3QgdXNlVGlja2V0RGV0YWlscyA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3QgZ2V0U3RhdHVzID0gKCkgPT4ge1xuICAgIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG4gICAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuICAgIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbiAgICByZXR1cm4gdGlja2V0Lm93bmVyLnN0YXR1cztcbiAgfTtcblxuICBpZiAoIXRpY2tldCkgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHN0YXR1cyA9IGdldFN0YXR1cygpO1xuICBjb25zdCBpc0FjdGl2ZSA9IHRpY2tldC5pc19hY3RpdmUgJiYgc3RhdHVzICE9PSBTVEFUVVNfQ0FOQ0VMTEVEO1xuICBjb25zdCBpc1JlZnVuZGFibGUgPSBpc1RpY2tldFJlZnVuZGFibGUodGlja2V0KTtcbiAgY29uc3QgYWxsb3dzRGVsZWdhdGUgPVxuICAgIHRpY2tldD8udGlja2V0X3R5cGU/LmFsbG93c190b19kZWxlZ2F0ZSB8fFxuICAgIHRpY2tldD8ucHJvbW9fY29kZT8uYWxsb3dzX3RvX2RlbGVnYXRlO1xuICBjb25zdCBpc0NvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfQ09NUExFVEU7XG4gIGNvbnN0IGlzVW5hc3NpZ25lZCA9IHN0YXR1cyA9PT0gU1RBVFVTX1VOQVNTSUdORUQ7XG4gIGNvbnN0IGlzSW5jb21wbGV0ZSA9IHN0YXR1cyA9PT0gU1RBVFVTX0lOQ09NUExFVEU7XG4gIGNvbnN0IGNhblJlYXNzaWduID1cbiAgICAhaXNVbmFzc2lnbmVkICYmXG4gICAgdGlja2V0LnRpY2tldF90eXBlPy5hbGxvd3NfdG9fcmVhc3NpZ24gJiZcbiAgICAoIXRpY2tldC5wcm9tb19jb2RlIHx8IHRpY2tldC5wcm9tb19jb2RlPy5hbGxvd3NfdG9fcmVhc3NpZ24pO1xuXG4gIHJldHVybiB7XG4gICAgc3RhdHVzLFxuICAgIGlzQ29tcGxldGUsXG4gICAgaXNVbmFzc2lnbmVkLFxuICAgIGlzSW5jb21wbGV0ZSxcbiAgICBpc0FjdGl2ZSxcbiAgICBpc1JlZnVuZGFibGUsXG4gICAgYWxsb3dzRGVsZWdhdGUsXG4gICAgY2FuUmVhc3NpZ25cbiAgfTtcbn07XG4iLCJpbXBvcnQgaTE4biBmcm9tIFwiaTE4bmV4dFwiO1xuaW1wb3J0IHsgaW5pdFJlYWN0STE4bmV4dCB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgTGFuZ3VhZ2VEZXRlY3RvciBmcm9tIFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIjtcbmltcG9ydCBlbiBmcm9tIFwiLi9sb2NhbGVzL2VuLmpzb25cIjtcbmltcG9ydCBlcyBmcm9tIFwiLi9sb2NhbGVzL2VzLmpzb25cIjtcblxuLy8gaW1wb3J0IEJhY2tlbmQgZnJvbSAnaTE4bmV4dC1odHRwLWJhY2tlbmQnO1xuLy8gZG9uJ3Qgd2FudCB0byB1c2UgdGhpcz9cbi8vIGhhdmUgYSBsb29rIGF0IHRoZSBRdWljayBzdGFydCBndWlkZVxuLy8gZm9yIHBhc3NpbmcgaW4gbG5nIGFuZCB0cmFuc2xhdGlvbnMgb24gaW5pdFxuXG5pMThuXG4gIC8vIGxvYWQgdHJhbnNsYXRpb24gdXNpbmcgaHR0cCAtPiBzZWUgL3B1YmxpYy9sb2NhbGVzIChpLmUuIGh0dHBzOi8vZ2l0aHViLmNvbS9pMThuZXh0L3JlYWN0LWkxOG5leHQvdHJlZS9tYXN0ZXIvZXhhbXBsZS9yZWFjdC9wdWJsaWMvbG9jYWxlcylcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1odHRwLWJhY2tlbmRcbiAgLy8gd2FudCB5b3VyIHRyYW5zbGF0aW9ucyB0byBiZSBsb2FkZWQgZnJvbSBhIHByb2Zlc3Npb25hbCBDRE4/ID0+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb2NpemUvcmVhY3QtdHV0b3JpYWwjc3RlcC0yLS0tdXNlLXRoZS1sb2NpemUtY2RuXG4gIC8vIC51c2UoQmFja2VuZClcbiAgLy8gZGV0ZWN0IHVzZXIgbGFuZ3VhZ2VcbiAgLy8gbGVhcm4gbW9yZTogaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlRGV0ZWN0b3JcbiAgLnVzZShMYW5ndWFnZURldGVjdG9yKVxuICAvLyBwYXNzIHRoZSBpMThuIGluc3RhbmNlIHRvIHJlYWN0LWkxOG5leHQuXG4gIC51c2UoaW5pdFJlYWN0STE4bmV4dClcbiAgLy8gaW5pdCBpMThuZXh0XG4gIC8vIGZvciBhbGwgb3B0aW9ucyByZWFkOiBodHRwczovL3d3dy5pMThuZXh0LmNvbS9vdmVydmlldy9jb25maWd1cmF0aW9uLW9wdGlvbnNcbiAgLmluaXQoe1xuICAgIGZhbGxiYWNrTG5nOiBcImVuXCIsXG4gICAgZGVidWc6IGZhbHNlLFxuICAgIHJlc291cmNlczoge1xuICAgICAgZW46IHsgdHJhbnNsYXRpb246IGVuIH0sXG4gICAgICBlczogeyB0cmFuc2xhdGlvbjogZXMgfVxuICAgIH0sXG4gICAgaW50ZXJwb2xhdGlvbjoge1xuICAgICAgZXNjYXBlVmFsdWU6IGZhbHNlIC8vIG5vdCBuZWVkZWQgZm9yIHJlYWN0IGFzIGl0IGVzY2FwZXMgYnkgZGVmYXVsdFxuICAgIH1cbiAgfSk7XG5cbmV4cG9ydCBkZWZhdWx0IGkxOG47XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IHsgTE9HT1VUX1VTRVIgfSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBTVEFSVF9MT0FESU5HLFxuICBTVE9QX0xPQURJTkcsXG4gIFJFU0VUX0xPQURJTkdcbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiO1xuaW1wb3J0IHtcbiAgUkVTRVRfU1RBVEUsXG4gIFJFU0VUX0ZJTFRFUixcbiAgU0VUX1NUQVRFLFxuICBTRVRfVVNFUixcbiAgR0VUX1VTRVJfT1JERVJTLFxuICBHRVRfTVlfQVNTSUdORURfVElDS0VUUyxcbiAgR0VUX1RJQ0tFVFNfQllfT1JERVIsXG4gIFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQsXG4gIFJFQ0VJVkVfVElDS0VULFxuICBSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyxcbiAgVVBEQVRFX1RJQ0tFVCxcbiAgQVNTSUdOX1RJQ0tFVCxcbiAgUkVTRVRfQVBJX0VSUk9SLFxuICBTRVRfQVBJX0VSUk9SLFxuICBSRVNFVF9USUNLRVQsXG4gIENIQU5HRV9GSUxURVIsXG4gIENIQU5HRV9TT1JULFxuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSLFxuICBGSUxURVJfVkFSX0RBVEUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX1RZUEUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQsXG4gIEZJTFRFUl9WQVJfUFJPTU9DT0RFLFxuICBERUxFR0FURV9USUNLRVQsXG4gIFJFTU9WRV9USUNLRVRfQVRURU5ERUVcbn0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgRklSU1RfUEFHRSwgVEFCUyB9IGZyb20gXCIuL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgY2FsY3VsYXRlQWN0aXZlRmlsdGVycywgaGFzTG9hZGVkQWxsRGF0YSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIH0gZnJvbSBcIi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuY29uc3QgREVGQVVMVF9GSUxURVJfU1RBVEUgPSB7XG4gIFtGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX1RZUEVdOiBbXSxcbiAgW0ZJTFRFUl9WQVJfRlJFRV9QQUlEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfUFJPTU9DT0RFXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIixcbiAgW0ZJTFRFUl9WQVJfREFURV06IG51bGxcbn07XG5cbmNvbnN0IERFRkFVTFRfU1RBVEUgPSB7XG4gIHN1bW1pdDogbnVsbCxcbiAgdXNlcjoge30sXG4gIHdpZGdldExvYWRpbmc6IGZhbHNlLFxuICBtZW1iZXJPcmRlcnM6IFtdLFxuICB1c2VyVGlja2V0czogW10sXG4gIGV4dHJhUXVlc3Rpb25zOiBbXSxcbiAgY3VycmVudFRpY2tldDogbnVsbCxcbiAgZXJyb3JzOiB7fSxcbiAgbG9hZGluZzogZmFsc2UsXG4gIGN1cnJlbnRfdGFiOiBUQUJTLk9SREVSUyxcbiAgc29ydDoge30sXG4gIGZpbHRlcjogREVGQVVMVF9GSUxURVJfU1RBVEUsXG4gIGFjdGl2ZUZpbHRlcnNDb3VudDogMCxcbiAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMCxcbiAgb3JkZXJzX2xhc3RfcGFnZTogMCxcbiAgb3JkZXJzX3Blcl9wYWdlOiA1LFxuICBvcmRlcnNfdG90YWw6IDAsXG4gIHRpY2tldF9jdXJyZW50X3BhZ2U6IDAsXG4gIHRpY2tldF9sYXN0X3BhZ2U6IDAsXG4gIHRpY2tldF9wZXJfcGFnZTogNSxcbiAgdGlja2V0X3RvdGFsOiAwLFxuICB1c2VyX3RpY2tldHNfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IDAsXG4gIHVzZXJfdGlja2V0c19sYXN0X3BhZ2U6IDAsXG4gIGFwaUVycm9yOiBudWxsXG59O1xuXG5jb25zdCBXaWRnZXRSZWR1Y2VyID0gKHN0YXRlID0gREVGQVVMVF9TVEFURSwgeyB0eXBlLCBwYXlsb2FkIH0gPSB7fSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIExPR09VVF9VU0VSOlxuICAgIGNhc2UgUkVTRVRfU1RBVEU6XG4gICAgICByZXR1cm4gREVGQVVMVF9TVEFURTtcbiAgICBjYXNlIFNUQVJUX0xPQURJTkc6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgbG9hZGluZzogdHJ1ZSB9O1xuICAgIGNhc2UgU1RPUF9MT0FESU5HOlxuICAgIGNhc2UgUkVTRVRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiBmYWxzZSB9O1xuICAgIGNhc2UgUkVTRVRfQVBJX0VSUk9SOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiBudWxsIH07XG4gICAgY2FzZSBSRVNFVF9GSUxURVI6XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgICAgICAgYWN0aXZlRmlsdGVyc0NvdW50OiAwLFxuICAgICAgICBzb3J0OiB7fSxcbiAgICAgICAgb3JkZXJzX2N1cnJlbnRfcGFnZTogMSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogMSxcbiAgICAgICAgbG9hZGluZzogdHJ1ZVxuICAgICAgfTtcbiAgICBjYXNlIFNFVF9TVEFURTpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCAuLi5wYXlsb2FkIH07XG4gICAgY2FzZSBTRVRfQVBJX0VSUk9SOiB7XG4gICAgICBjb25zdCB7IHRpdGxlLCBodG1sOiBib2R5IH0gPSBwYXlsb2FkO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGFwaUVycm9yOiB7IHRpdGxlLCBib2R5IH0gfTtcbiAgICB9XG4gICAgY2FzZSBTRVRfVVNFUjpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCB1c2VyOiBwYXlsb2FkIH07XG4gICAgY2FzZSBDSEFOR0VfRklMVEVSOiB7XG4gICAgICBjb25zdCBuZXdGaWx0ZXJzID0geyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfTtcbiAgICAgIGNvbnN0IG5ld0FjdGl2ZUNvdW50ID0gY2FsY3VsYXRlQWN0aXZlRmlsdGVycyhuZXdGaWx0ZXJzKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IHsgLi4uc3RhdGUuZmlsdGVyLCAuLi5wYXlsb2FkIH0sXG4gICAgICAgIGFjdGl2ZUZpbHRlcnNDb3VudDogbmV3QWN0aXZlQ291bnRcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgQ0hBTkdFX1NPUlQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBzb3J0OiB7IC4uLnBheWxvYWQgfSB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9VU0VSX09SREVSUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUubWVtYmVyT3JkZXJzLCB0b3RhbCkpXG4gICAgICAgIHJldHVybiBzdGF0ZTtcblxuICAgICAgY29uc3QgbWVtYmVyT3JkZXJzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS5tZW1iZXJPcmRlcnMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzLFxuICAgICAgICBvcmRlcnNfdG90YWw6IHRvdGFsLFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiBjdXJyZW50X3BhZ2UsXG4gICAgICAgIG9yZGVyc19sYXN0X3BhZ2U6IGxhc3RfcGFnZVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBHRVRfTVlfQVNTSUdORURfVElDS0VUUzoge1xuICAgICAgY29uc3QgeyBkYXRhLCB0b3RhbCwgY3VycmVudF9wYWdlLCBsYXN0X3BhZ2UgfSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGlmIChoYXNMb2FkZWRBbGxEYXRhKGN1cnJlbnRfcGFnZSwgc3RhdGUudXNlclRpY2tldHMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCB1c2VyVGlja2V0cyA9XG4gICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRSA/IGRhdGEgOiBbLi4uc3RhdGUudXNlclRpY2tldHMsIC4uLmRhdGFdO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgdXNlclRpY2tldHMsXG4gICAgICAgIHVzZXJfdGlja2V0c190b3RhbDogdG90YWwsXG4gICAgICAgIHVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9USUNLRVRTX0JZX09SREVSOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IGZvcm1lck9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoKG8pID0+IG8uaWQgPT09IGRhdGFbMF0/Lm9yZGVyX2lkKTtcblxuICAgICAgY29uc3QgbmV3T3JkZXJzID0gbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+IHtcbiAgICAgICAgaWYgKG1vLmlkICE9PSBkYXRhWzBdPy5vcmRlcl9pZCkgcmV0dXJuIG1vO1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID1cbiAgICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0VcbiAgICAgICAgICAgID8gZGF0YVxuICAgICAgICAgICAgOiBbLi4uZm9ybWVyT3JkZXIubWVtYmVyVGlja2V0cywgLi4uZGF0YV07XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4ubW8sXG4gICAgICAgICAgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyxcbiAgICAgICAgICB0aWNrZXRzX3BhZ2VfY3VycmVudDogY3VycmVudF9wYWdlLFxuICAgICAgICAgIHRpY2tldHNfcGFnZV9sYXN0OiBsYXN0X3BhZ2UsXG4gICAgICAgICAgdGlja2V0c190b3RhbDogdG90YWxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnNcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRDoge1xuICAgICAgY29uc3QgeyBtZW1iZXJPcmRlcnMgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgdGlja2V0c1JlZnVuZFJlcXVlc3RlZCA9IHBheWxvYWQ7XG4gICAgICBjb25zdCBvcmRlciA9IG1lbWJlck9yZGVycy5maW5kKFxuICAgICAgICAobykgPT4gby5pZCA9PT0gdGlja2V0c1JlZnVuZFJlcXVlc3RlZFswXT8ub3JkZXJfaWRcbiAgICAgICk7XG4gICAgICBjb25zdCB1cGRhdGVkVGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzLm1hcChcbiAgICAgICAgKHRpY2tldCkgPT5cbiAgICAgICAgICB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkLmZpbmQoKHRycikgPT4gdHJyLmlkID09PSB0aWNrZXQuaWQpIHx8IHRpY2tldFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRPcmRlciA9IHtcbiAgICAgICAgLi4ub3JkZXIsXG4gICAgICAgIG1lbWJlclRpY2tldHM6IHVwZGF0ZWRUaWNrZXRzXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG1lbWJlck9yZGVyczogbWVtYmVyT3JkZXJzLm1hcCgobW8pID0+XG4gICAgICAgICAgbW8uaWQgPT09IHVwZGF0ZWRPcmRlci5pZCA/IHVwZGF0ZWRPcmRlciA6IG1vXG4gICAgICAgIClcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgUkVTRVRfVElDS0VUOiB7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogbnVsbCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXQgPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGN1cnJlbnRUaWNrZXQ6IHRpY2tldCB9O1xuICAgIH1cbiAgICBjYXNlIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TOiB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgZXh0cmFRdWVzdGlvbnM6IGRhdGEgfTtcbiAgICB9XG4gICAgY2FzZSBSRU1PVkVfVElDS0VUX0FUVEVOREVFOlxuICAgIGNhc2UgVVBEQVRFX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG5cbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICAgIG9yZGVyLm1lbWJlclRpY2tldHMsXG4gICAgICAgICAgdGlja2V0RGF0YVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5ld1VzZXJUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgc3RhdGUudXNlclRpY2tldHMsXG4gICAgICAgIHRpY2tldERhdGFcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBtZW1iZXJPcmRlcnM6IG5ld09yZGVycywgdXNlclRpY2tldHM6IG5ld1VzZXJUaWNrZXRzIH07XG4gICAgfVxuICAgIGNhc2UgREVMRUdBVEVfVElDS0VUOlxuICAgIGNhc2UgQVNTSUdOX1RJQ0tFVDoge1xuICAgICAgY29uc3QgdGlja2V0RGF0YSA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBzdGF0ZS5tZW1iZXJPcmRlcnMubWFwKChvcmRlcikgPT4ge1xuICAgICAgICBjb25zdCBuZXdUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgICBvcmRlci5tZW1iZXJUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldERhdGFcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHsgLi4ub3JkZXIsIG1lbWJlclRpY2tldHM6IG5ld1RpY2tldHMgfTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBuZXdVc2VyVGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgIHN0YXRlLnVzZXJUaWNrZXRzLFxuICAgICAgICB0aWNrZXREYXRhXG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgY3VycmVudFRpY2tldDogdGlja2V0RGF0YSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBuZXdPcmRlcnMsXG4gICAgICAgIHVzZXJUaWNrZXRzOiBuZXdVc2VyVGlja2V0c1xuICAgICAgfTtcbiAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgV2lkZ2V0UmVkdWNlcjtcbiIsImltcG9ydCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IGNvbmZpZ3VyZVN0b3JlIH0gZnJvbSBcIkByZWR1eGpzL3Rvb2xraXRcIjtcbmltcG9ydCB7XG4gIHBlcnNpc3RTdG9yZSxcbiAgcGVyc2lzdFJlZHVjZXIsXG4gIEZMVVNILFxuICBSRUhZRFJBVEUsXG4gIFBBVVNFLFxuICBQRVJTSVNULFxuICBQVVJHRSxcbiAgUkVHSVNURVJcbn0gZnJvbSBcInJlZHV4LXBlcnNpc3RcIjtcbmltcG9ydCBzdG9yYWdlIGZyb20gXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCI7XG5pbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tIFwicmVkdXhcIjtcbmltcG9ydCBXaWRnZXRSZWR1Y2VyIGZyb20gXCIuL3JlZHVjZXJcIjtcblxuZXhwb3J0IGNvbnN0IGdldFN0b3JlID0gKHtcbiAgY2xpZW50SWQsXG4gIGxvZ2luVXJsLFxuICBzdW1taXQsXG4gIGFwaUJhc2VVcmwsXG4gIHVwZGF0ZVByb2ZpbGVcbn0pID0+IHtcbiAgLy8gdG8gYWRkIG90aGVyIHJlZHVjZXJzIGxhdGVyXG4gIGNvbnN0IHJlZHVjZXJzID0gY29tYmluZVJlZHVjZXJzKHtcbiAgICB3aWRnZXRTdGF0ZTogV2lkZ2V0UmVkdWNlclxuICB9KTtcblxuICBjb25zdCBzdG9yZSA9IGNvbmZpZ3VyZVN0b3JlKHtcbiAgICByZWR1Y2VyOiBwZXJzaXN0UmVkdWNlcihcbiAgICAgIHtcbiAgICAgICAga2V5OiBgcm9vdF9teV9vcmRlcnNfdGlja2V0c18ke2NsaWVudElkfWAsXG4gICAgICAgIHN0b3JhZ2VcbiAgICAgIH0sXG4gICAgICByZWR1Y2Vyc1xuICAgICksXG4gICAgbWlkZGxld2FyZTogKGdldERlZmF1bHRNaWRkbGV3YXJlKSA9PlxuICAgICAgZ2V0RGVmYXVsdE1pZGRsZXdhcmUoe1xuICAgICAgICB0aHVuazoge1xuICAgICAgICAgIGV4dHJhQXJndW1lbnQ6IHtcbiAgICAgICAgICAgIGNsaWVudElkLFxuICAgICAgICAgICAgYXBpQmFzZVVybCxcbiAgICAgICAgICAgIHN1bW1pdCxcbiAgICAgICAgICAgIGxvZ2luVXJsLFxuICAgICAgICAgICAgdXBkYXRlUHJvZmlsZVxuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgaW1tdXRhYmxlQ2hlY2s6IGZhbHNlLFxuICAgICAgICBzZXJpYWxpemFibGVDaGVjazoge1xuICAgICAgICAgIGlnbm9yZWRBY3Rpb25zOiBbRkxVU0gsIFJFSFlEUkFURSwgUEFVU0UsIFBFUlNJU1QsIFBVUkdFLCBSRUdJU1RFUl1cbiAgICAgICAgfVxuICAgICAgfSlcbiAgfSk7XG5cbiAgcmV0dXJuIHN0b3JlO1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUluaXRTdG9yZSA9IChjb25maWcpID0+IHtcbiAgY29uc3Qgc3RvcmUgPSB1c2VNZW1vKCgpID0+IGdldFN0b3JlKGNvbmZpZyksIFtdKTtcbiAgY29uc3QgcGVyc2lzdG9yID0gdXNlTWVtbygoKSA9PiBwZXJzaXN0U3RvcmUoc3RvcmUpLCBbc3RvcmVdKTtcblxuICByZXR1cm4ge1xuICAgIHN0b3JlLFxuICAgIHBlcnNpc3RvclxuICB9O1xufTtcbiIsImltcG9ydCB7XG4gIGluaXRMb2dPdXQsXG4gIGdldEFjY2Vzc1Rva2VuXG59IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIjtcbmltcG9ydCAqIGFzIFNlbnRyeSBmcm9tIFwiQHNlbnRyeS9yZWFjdFwiO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW51c2VkLXZhcnNcbmNvbnN0IGdldEFjY2Vzc1Rva2VuTW9jayA9ICgpID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFwiQWNjZXNzIHRva2VuIGVycm9yXCIpO1xuICAvLyByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRBY2Nlc3NUb2tlblNhZmVseSA9IGFzeW5jICgpID0+IHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QWNjZXNzVG9rZW4oKS5jYXRjaCgoZSkgPT4ge1xuICAgICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICAgIGluaXRMb2dPdXQoKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5sb2coXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXQ6OmdldEFjY2Vzc1Rva2VuU2FmZWx5IGVycm9yOiBcIiwgZSk7XG4gICAgU2VudHJ5LmNhcHR1cmVFeGNlcHRpb24oZSk7XG4gICAgaW5pdExvZ091dCgpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYXV0aFByb21pc2VSZWplY3QgPSBhc3luYyAoKSA9PlxuICBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoXCJBdXRoIFRva2VuIGVycm9yXCIpKTtcbiIsImV4cG9ydCBjb25zdCBMQVNUX0hPVVJfT0ZfMjRfSE9VUiA9IDIzO1xuZXhwb3J0IGNvbnN0IExBU1RfTUlOVVRFX09GX0hPVVIgPSA1OTtcbmV4cG9ydCBjb25zdCBPTkVfUEFHRV9ORVhUID0gMTtcbmV4cG9ydCBjb25zdCBNSUxMSVNFQ19UT19TRUMgPSAxMDAwO1xuZXhwb3J0IGNvbnN0IE9ORV9EQVkgPSAxO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UgPSA1O1xuZXhwb3J0IGNvbnN0IEZJUlNUX1BBR0UgPSAxO1xuZXhwb3J0IGNvbnN0IFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCA9IDU7XG5leHBvcnQgY29uc3QgU1RFUF9PTkUgPSAxO1xuZXhwb3J0IGNvbnN0IFNURVBfVFdPID0gMjtcbmV4cG9ydCBjb25zdCBTVEVQX1RIUkVFID0gMztcbmV4cG9ydCBjb25zdCBNSU5fUkVRVUlSRUQgPSAxO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX0NPTVBMRVRFID0gXCJTVEFUVVNfQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiU1RBVFVTX0lOQ09NUExFVEVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUEVORElORyA9IFwiU1RBVFVTX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfQ0FOQ0VMTEVEID0gXCJTVEFUVVNfQ0FOQ0VMTEVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX0VSUk9SID0gXCJTVEFUVVNfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUFJPQ0VTU0lORyA9IFwiU1RBVFVTX1BST0NFU1NJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfVU5BU1NJR05FRCA9IFwiU1RBVFVTX1VOQVNTSUdORURcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElORyA9IFwiU1RBVFVTX1JFRlVORF9QRU5ESU5HXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCA9IFwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUkVKRUNURUQgPSBcIlNUQVRVU19SRUZVTkRfUkVKRUNURURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMgPSBcIlJlcXVlc3RlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMgPSBcIkFwcHJvdmVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyA9IFwiUmVqZWN0ZWRcIjtcblxuZXhwb3J0IGNvbnN0IEpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyA9IDEwMDAwO1xuXG5leHBvcnQgY29uc3QgT05FX0lURU0gPSAxO1xuZXhwb3J0IGNvbnN0IFRXT19JVEVNID0gMjtcbmV4cG9ydCBjb25zdCBGSVZFX0lURU0gPSA1O1xuZXhwb3J0IGNvbnN0IFNJWF9JVEVNID0gNjtcblxuZXhwb3J0IGNvbnN0IFBST01JU0VfQkFUQ0hfTElNSVQgPSAxMDtcbmV4cG9ydCBjb25zdCBGSUZUWV9QRVJfUEFHRSA9IDUwO1xuXG5leHBvcnQgY29uc3QgRVJST1JfQ09ERVMgPSB7XG4gIDQwMTogNDAxLFxuICA0MDM6IDQwMSxcbiAgNDEyOiA0MDEsXG4gIDUwMDogNTAwXG59O1xuXG5leHBvcnQgY29uc3QgVEFCUyA9IHtcbiAgT1JERVJTOiBcIk9SREVSU1wiLFxuICBUSUNLRVRTOiBcIlRJQ0tFVFNcIlxufTtcblxuZXhwb3J0IGNvbnN0IFRJQ0tFVF9EUkFXRVJfSUQgPSBcInRpY2tldERyYXdlclwiO1xuIiwiaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgTEFTVF9IT1VSX09GXzI0X0hPVVIsXG4gIExBU1RfTUlOVVRFX09GX0hPVVIsXG4gIE1JTExJU0VDX1RPX1NFQyxcbiAgRklSU1RfUEFHRVxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IGZvcm1hdEN1cnJlbmN5ID0gKHZhbHVlLCB7IGxvY2FsZSA9IFwiZW4tVVNcIiwgLi4ub3B0aW9ucyB9KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0ge1xuICAgIGN1cnJlbmN5OiBcIlVTRFwiLFxuICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IDJcbiAgfTtcblxuICBjb25zdCBmb3JtYXR0ZXIgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQobG9jYWxlLCB7XG4gICAgc3R5bGU6IFwiY3VycmVuY3lcIixcbiAgICAuLi5kZWZhdWx0T3B0aW9ucyxcbiAgICAuLi5vcHRpb25zXG4gIH0pO1xuXG4gIHJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KHZhbHVlKTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRGb3JtYXR0ZWREYXRlID0gKGRhdGV0aW1lLCB0aW1lWm9uZSkgPT4ge1xuICBpZiAodGltZVpvbmUpXG4gICAgcmV0dXJuIG1vbWVudFxuICAgICAgLnR6KGRhdGV0aW1lICogTUlMTElTRUNfVE9fU0VDLCB0aW1lWm9uZSlcbiAgICAgIC5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xuXG4gIHJldHVybiBtb21lbnQudW5peChkYXRldGltZSkuZm9ybWF0KFwiTU1NTSBERCwgWVlZWVwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBjYWxjdWxhdGVPcmRlclRvdGFscyA9ICh7IG9yZGVyLCBzdW1taXQgfSkgPT4ge1xuICBpZiAoIW9yZGVyIHx8ICFzdW1taXQpIHJldHVybiB7fTtcbiAgY29uc3QgdGlja2V0cyA9IG9yZGVyPy5tZW1iZXJUaWNrZXRzO1xuICBpZiAoIXRpY2tldHMpIHJldHVybiB7fTtcblxuICBjb25zdCB7IHJlZnVuZGVkX2Ftb3VudCwgZGlzY291bnRfYW1vdW50LCB0YXhlc19hbW91bnQsIGFtb3VudCB9ID0gb3JkZXI7XG4gIGNvbnN0IHsgdGlja2V0X3R5cGVzIH0gPSBzdW1taXQ7XG5cbiAgY29uc3QgdGlja2V0U3VtbWFyeSA9IFtdO1xuICBsZXQgcHVyY2hhc2VUaWNrZXRUb3RhbCA9IDA7XG5cbiAgY29uc3QgY3VycmVuY3lPYmplY3QgPSB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9O1xuXG4gIE9iamVjdC5rZXlzKG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZSkubWFwKCh0aWNrZXQpID0+IHtcbiAgICBjb25zdCB0aWNrZXRUeXBlID0gdGlja2V0X3R5cGVzPy5maW5kKCh0dCkgPT4gdHQubmFtZSA9PT0gdGlja2V0KTtcbiAgICBpZiAoIXRpY2tldFR5cGUpIHJldHVybiBudWxsO1xuICAgIHRpY2tldFN1bW1hcnkucHVzaCh7XG4gICAgICB0aWNrZXRfdHlwZV9pZDogdGlja2V0VHlwZS5pZCxcbiAgICAgIHRpY2tldF90eXBlOiB0aWNrZXRUeXBlLFxuICAgICAgbmFtZTogdGlja2V0LFxuICAgICAgcXR5OiBvcmRlci50aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGVbdGlja2V0XVxuICAgIH0pO1xuICAgIHB1cmNoYXNlVGlja2V0VG90YWwgKz1cbiAgICAgIHRpY2tldFR5cGUuY29zdCAqIG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdO1xuXG4gICAgcmV0dXJuIHRpY2tldFN1bW1hcnk7XG4gIH0pO1xuXG4gIGNvbnN0IHB1cmNoYXNlVG90YWwgPSBmb3JtYXRDdXJyZW5jeShwdXJjaGFzZVRpY2tldFRvdGFsLCBjdXJyZW5jeU9iamVjdCk7XG5cbiAgY29uc3QgZGlzY291bnRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KGRpc2NvdW50X2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCByZWZ1bmRUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHJlZnVuZGVkX2Ftb3VudCwgY3VycmVuY3lPYmplY3QpO1xuICBjb25zdCB0YXhlc1RvdGFsID0gZm9ybWF0Q3VycmVuY3kodGF4ZXNfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IGFtb3VudFRvdGFsID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9yZGVyLCBcImFtb3VudFwiKVxuICAgID8gZm9ybWF0Q3VycmVuY3koYW1vdW50LCBjdXJyZW5jeU9iamVjdClcbiAgICA6IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICByZXR1cm4ge1xuICAgIGRpc2NvdW50VG90YWwsXG4gICAgcmVmdW5kVG90YWwsXG4gICAgdGF4ZXNUb3RhbCxcbiAgICBhbW91bnRUb3RhbCxcbiAgICB0aWNrZXRTdW1tYXJ5XG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0T3JkZXJUaWNrZXRzID0gKG1lbWJlck9yZGVycywgb3JkZXJJZCkgPT4ge1xuICBjb25zdCBvcmRlcnMgPSBtZW1iZXJPcmRlcnMuZmlsdGVyKChvKSA9PiBvLmlkID09PSBvcmRlcklkKTtcbiAgcmV0dXJuIG9yZGVyc1swXT8ubWVtYmVyVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMgPSAodHMpID0+IHtcbiAgY29uc3QgbG93ZXIgPSB0cy5zZXRIb3VycygwLCAwLCAwLCAwKSAvIE1JTExJU0VDX1RPX1NFQztcbiAgY29uc3QgdXBwZXIgPVxuICAgIHRzLnNldEhvdXJzKExBU1RfSE9VUl9PRl8yNF9IT1VSLCBMQVNUX01JTlVURV9PRl9IT1VSLCAwLCAwKSAvXG4gICAgTUlMTElTRUNfVE9fU0VDO1xuICByZXR1cm4ge1xuICAgIGxvd2VyLFxuICAgIHVwcGVyXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdEN1cnJlbnRUaW1lID0gKCkgPT5cbiAgTWF0aC5yb3VuZCgrbmV3IERhdGUoKSAvIE1JTExJU0VDX1RPX1NFQyk7XG5cbmV4cG9ydCBjb25zdCBnZXROb3cgPSAoKSA9PiAoZGlzcGF0Y2gsIGdldFN0YXRlKSA9PiB7XG4gIGNvbnN0IHsgdGltZXJTdGF0ZSB9ID0gZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIHRpbWVyU3RhdGU/Lm5vd1V0YyA9PSBudWxsID8gZGVmYXVsdEN1cnJlbnRUaW1lKCkgOiB0aW1lclN0YXRlPy5ub3dVdGM7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlTm93ID0gKCkgPT4ge1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG5cbiAgcmV0dXJuIGRpc3BhdGNoKGdldE5vdygpKTtcbn07XG5cbi8qKlxuICogQHBhcmFtIGN1cnJlbnRQYWdlXG4gKiBAcGFyYW0gZGF0YVxuICogQHBhcmFtIHRvdGFsXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAqL1xuZXhwb3J0IGNvbnN0IGhhc0xvYWRlZEFsbERhdGEgPSAoY3VycmVudFBhZ2UsIGRhdGEsIHRvdGFsKSA9PiB7XG4gIGxldCByZXMgPSBmYWxzZTtcbiAgY29uc3QgZGF0YUxlbmd0aCA9IEFycmF5LmlzQXJyYXkoZGF0YSkgPyBkYXRhLmxlbmd0aCA6IDA7XG4gIC8vIHdlIGFscmVhZHkgbG9hZGVkIGFsbCAgZGF0YSAoIGZpcnN0IHBhZ2UgaXMgYWx3YXlzIHJlbG9hZGVkIGl0IClcbiAgaWYgKGN1cnJlbnRQYWdlID4gRklSU1RfUEFHRSAmJiBkYXRhTGVuZ3RoID4gMCAmJiBkYXRhTGVuZ3RoID09PSB0b3RhbClcbiAgICByZXMgPSB0cnVlO1xuICByZXR1cm4gcmVzO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMgPSAoZmlsdGVycykgPT4ge1xuICBsZXQgY291bnQgPSAwO1xuICBPYmplY3QuZW50cmllcyhmaWx0ZXJzKS5mb3JFYWNoKChbLCB2YWx1ZV0pID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIGNvdW50ICs9IHZhbHVlLmxlbmd0aDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAmJiB2YWx1ZS50cmltKCkgIT09IFwiXCIpIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09IFwibnVtYmVyXCIgJiYgdmFsdWUgPiAwKSB7XG4gICAgICBjb3VudCsrO1xuICAgIH1cbiAgfSk7XG4gIHJldHVybiBjb3VudDtcbn07XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IE1JTExJU0VDX1RPX1NFQywgT05FX0RBWSB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi5cIjtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0UGFzdCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgcmVhc3NpZ25fZGF0ZSA9XG4gICAgc3VtbWl0Py5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICAgIDogc3VtbWl0LmVuZF9kYXRlO1xuXG4gIHJldHVybiBub3cgPiByZWFzc2lnbl9kYXRlO1xufTtcblxuZXhwb3J0IGNvbnN0IGNoZWNrU3VtbWl0U3RhcnRlZCA9IChzdW1taXQsIG5vdykgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5zdGFydF9kYXRlIDwgbm93O1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFN1bW1pdERheXNEaWZmID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHN0YXJ0RGF5ID0gbW9tZW50KHN1bW1pdC5zdGFydF9kYXRlICogTUlMTElTRUNfVE9fU0VDKS50eihcbiAgICBzdW1taXQudGltZV96b25lX2lkXG4gICk7XG4gIGNvbnN0IGVuZERheSA9IG1vbWVudChzdW1taXQuZW5kX2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5cyA9IGVuZERheT8uZGlmZihzdGFydERheSwgXCJkYXlzXCIpO1xuICByZXR1cm4ge1xuICAgIHN0YXJ0RGF5LFxuICAgIGVuZERheSxcbiAgICBkYXlzXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuICBjb25zdCB7IHN0YXJ0RGF5LCBlbmREYXksIGRheXMgfSA9IGdldFN1bW1pdERheXNEaWZmKHN1bW1pdCk7XG4gIGlmICghc3RhcnREYXkgfHwgIWVuZERheSkgcmV0dXJuIG51bGw7XG4gIGxldCBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgbGV0IGZvcm1hdEVuZERhdGUgPSBcIk1NTU0gREQsIFlZWVlcIjtcbiAgaWYgKHN0YXJ0RGF5LnllYXIoKSA9PT0gZW5kRGF5LnllYXIoKSkgZm9ybWF0U3RhcnREYXRlID0gXCJNTU1NIEREXCI7XG4gIGlmIChzdGFydERheS5tb250aCgpID09PSBlbmREYXkubW9udGgoKSkgZm9ybWF0RW5kRGF0ZSA9IFwiREQsIFlZWVlcIjtcblxuICBjb25zdCBzdGFydERhdGUgPSBzdGFydERheS5mb3JtYXQoZm9ybWF0U3RhcnREYXRlKTtcbiAgY29uc3QgZW5kRGF0ZSA9IGVuZERheS5mb3JtYXQoZm9ybWF0RW5kRGF0ZSk7XG5cbiAgaWYgKGRheXMgPiBPTkVfREFZKSByZXR1cm4gYCR7c3RhcnREYXRlfSAtICR7ZW5kRGF0ZX1gO1xuXG4gIHJldHVybiBzdGFydERhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0TG9jYXRpb24gPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBsb2NhdGlvbiA9IHN1bW1pdC5sb2NhdGlvbnM/LmZpbmQoXG4gICAgKGwpID0+IGwuY2xhc3NfbmFtZSA9PT0gXCJTdW1taXRWZW51ZVwiICYmIGwuaXNfbWFpbiA9PT0gdHJ1ZVxuICApO1xuXG4gIGlmICghbG9jYXRpb24pIHJldHVybiBudWxsO1xuXG4gIHJldHVybiBgJHtsb2NhdGlvbi5jaXR5fSwgJHtsb2NhdGlvbi5jb3VudHJ5fWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0UmVhc3NpZ25EYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlICYmXG4gICAgc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgPCBzdW1taXQuZW5kX2RhdGVcbiAgICA/IHN1bW1pdC5yZWFzc2lnbl90aWNrZXRfdGlsbF9kYXRlXG4gICAgOiBzdW1taXQuZW5kX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlU3VtbWl0RGV0YWlscyA9ICh7IHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuXG4gIGlmICghc3VtbWl0KSByZXR1cm4ge307XG5cbiAgY29uc3QgbG9jYXRpb24gPSBnZXRTdW1taXRMb2NhdGlvbihzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWREYXRlID0gZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZShzdW1taXQpO1xuICBjb25zdCByZWFzc2lnbkRhdGUgPSBnZXRTdW1taXRSZWFzc2lnbkRhdGUoc3VtbWl0KTtcbiAgY29uc3QgZm9ybWF0dGVkUmVhc3NpZ25EYXRlID0gbW9tZW50LnR6KFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSA9IGdldFN1bW1pdERheXNEaWZmKFxuICAgIG5vdyxcbiAgICByZWFzc2lnbkRhdGUsXG4gICAgc3VtbWl0LnRpbWVfem9uZT8ubmFtZVxuICApO1xuXG4gIGNvbnN0IGlzUGFzdCA9IGNoZWNrU3VtbWl0UGFzdChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzU3RhcnRlZCA9IGNoZWNrU3VtbWl0U3RhcnRlZChzdW1taXQsIG5vdyk7XG4gIGNvbnN0IGlzUmVhc3NpZ25hYmxlID0gcmVhc3NpZ25EYXRlID4gbm93O1xuXG4gIHJldHVybiB7XG4gICAgbmFtZTogc3VtbWl0Py5uYW1lLFxuICAgIG5vdyxcbiAgICBsb2NhdGlvbixcbiAgICBmb3JtYXR0ZWREYXRlLFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUsXG4gICAgZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSxcbiAgICBpc1Bhc3QsXG4gICAgaXNTdGFydGVkLFxuICAgIGlzUmVhc3NpZ25hYmxlXG4gIH07XG59O1xuIiwiaW1wb3J0ICogYXMgeXVwIGZyb20gXCJ5dXBcIjtcbmltcG9ydCBpMThuIGZyb20gXCIuLi9pMThuXCI7XG5pbXBvcnQge1xuICBNSU5fUkVRVUlSRUQsXG4gIFNUQVRVU19DQU5DRUxMRUQsXG4gIFNUQVRVU19DT01QTEVURSxcbiAgU1RBVFVTX0lOQ09NUExFVEUsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQsXG4gIFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMsXG4gIFNUQVRVU19SRUZVTkRfUEVORElORyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDLFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVELFxuICBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDLFxuICBTVEFUVVNfVU5BU1NJR05FRFxufSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY2hlY2tJZlZhbHVlTWF0Y2gsXG4gIGdldFR5cGVJbml0aWFsVmFsdWUsXG4gIHRvU2x1Z1xufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb25zdGFudHNcIjtcblxuZXhwb3J0IGNvbnN0IHN0YXR1c0RhdGEgPSB7XG4gIFtTVEFUVVNfVU5BU1NJR05FRF06IHtcbiAgICB0eXBlOiBTVEFUVVNfVU5BU1NJR05FRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLnVuYXNzaWduZWRcIilcbiAgfSxcbiAgW1NUQVRVU19JTkNPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19JTkNPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuaW5jb21wbGV0ZVwiKVxuICB9LFxuICBbU1RBVFVTX0NPTVBMRVRFXToge1xuICAgIHR5cGU6IFNUQVRVU19DT01QTEVURSxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ0FOQ0VMTEVEXToge1xuICAgIHR5cGU6IFNUQVRVU19DQU5DRUxMRUQsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5jYW5jZWxsZWRcIilcbiAgfVxufTtcbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNLZXkgPSAodGlja2V0KSA9PiB7XG4gIGlmICghdGlja2V0LmlzX2FjdGl2ZSkgcmV0dXJuIFNUQVRVU19DQU5DRUxMRUQ7XG5cbiAgaWYgKHRpY2tldC5vd25lcl9pZCA9PT0gMCkgcmV0dXJuIFNUQVRVU19VTkFTU0lHTkVEO1xuXG4gIGlmICghdGlja2V0Lm93bmVyPy5maXJzdF9uYW1lIHx8ICF0aWNrZXQub3duZXI/Lmxhc3RfbmFtZSlcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJJbmNvbXBsZXRlXCIpXG4gICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuXG4gIGlmICh0aWNrZXQub3duZXIgJiYgdGlja2V0Lm93bmVyPy5zdGF0dXMgPT09IFwiQ29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0NPTVBMRVRFO1xuXG4gIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRTdGF0dXNEYXRhID0gKHRpY2tldCwgaXNTdW1taXRQYXN0KSA9PlxuICBzdGF0dXNEYXRhW2dldFRpY2tldFN0YXR1c0tleSh0aWNrZXQsIGlzU3VtbWl0UGFzdCldO1xuXG5leHBvcnQgY29uc3QgZ2V0VGlja2V0Um9sZSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuYmFkZ2UpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IHsgZmVhdHVyZXMgfSA9IHRpY2tldC5iYWRnZTtcblxuICBpZiAoZmVhdHVyZXMubGVuZ3RoID4gMClcbiAgICByZXR1cm4gZmVhdHVyZXMubWFwKChmZWF0dXJlKSA9PiBmZWF0dXJlLm5hbWUpLmpvaW4oXCIsIFwiKTtcblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRUeXBlID0gKHRpY2tldCwgc3VtbWl0KSA9PlxuICBzdW1taXQudGlja2V0X3R5cGVzLmZpbmQoKHR5cGUpID0+IHR5cGUuaWQgPT09IHRpY2tldC50aWNrZXRfdHlwZV9pZCk7XG5cbmV4cG9ydCBjb25zdCBpc1RpY2tldFJlZnVuZGFibGUgPSAodGlja2V0KSA9PlxuICB0aWNrZXQ/LmZpbmFsX2Ftb3VudCA+IDAgJiZcbiAgdGlja2V0Py5uZXRfc2VsbGluZ19jb3N0ID4gdGlja2V0LnJlZnVuZGVkX2Ftb3VudCAmJlxuICAhdGlja2V0Py5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQ1xuICApO1xuXG5leHBvcnQgY29uc3QgdGlja2V0c1JlZnVuZGFibGUgPSAodGlja2V0cykgPT5cbiAgdGlja2V0cz8uZmlsdGVyKCh0aWNrZXQpID0+IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpKS5sZW5ndGggfHwgMDtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZGVkUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT5cbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gICk7XG5leHBvcnQgY29uc3QgZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyA9ICh0aWNrZXRzKSA9PiB7XG4gIGNvbnN0IGFsbFRpY2tldHMgPSBbXTtcbiAgdGlja2V0cz8ubWFwKCh0aWNrZXQpID0+IHtcbiAgICBpZiAoXG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQ1xuICAgICAgKSB8fFxuICAgICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICAgIClcbiAgICApIHtcbiAgICAgIGFsbFRpY2tldHMucHVzaCh0aWNrZXQpO1xuICAgIH1cbiAgICByZXR1cm4gdGlja2V0O1xuICB9KTtcbiAgcmV0dXJuIGFsbFRpY2tldHM7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXMgPSAodGlja2V0KSA9PiB7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMpXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xuICBpZiAoXG4gICAgdGlja2V0LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgKVxuICApXG4gICAgcmV0dXJuIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUkVKRUNURURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDtcbiAgcmV0dXJuIFNUQVRVU19SRUZVTkRfUEVORElORztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciA9ICh0aWNrZXQpID0+IHtcbiAgY29uc3Qgc3RhdHVzID0gZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRTdGF0dXModGlja2V0KTtcbiAgbGV0IHN0YXR1c0NvbG9yID0gXCJcIjtcbiAgc3dpdGNoIChzdGF0dXMpIHtcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfUEVORElORzpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFNUQVRVU19SRUZVTkRfQVBQUk9WRUQ6XG4gICAgICBzdGF0dXNDb2xvciA9IFwiYXBwcm92ZWRcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJyZWplY3RlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJwZW5kaW5nXCI7XG4gIH1cbiAgcmV0dXJuIHN0YXR1c0NvbG9yO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFR5cGVWYWxpZGF0aW9uID0gKHR5cGUsIG5hbWUsIGlzUmVxdWlyZWQpID0+IHtcbiAgbGV0IHNjaGVtYTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tib3g6XG4gICAgICBzY2hlbWEgPSB5dXAuYm9vbCgpLm9uZU9mKFt0cnVlXSwgaTE4bi50KFwidmFsaWRhdGlvbi5jaGVja2JveC5yZXF1aXJlZFwiKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICBzY2hlbWEgPSB5dXAuYXJyYXkoKS5vZih5dXAuc3RyaW5nKCkpO1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHNjaGVtYSA9IHNjaGVtYS5taW4oTUlOX1JFUVVJUkVELCBgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICB9XG5cbiAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICBzY2hlbWEgPSBzY2hlbWEucmVxdWlyZWQoYCR7bmFtZX0gaXMgcmVxdWlyZWRgKTtcbiAgfVxuXG4gIHJldHVybiBzY2hlbWE7XG59O1xuXG5jb25zdCBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyID0gKFxuICBxLFxuICBhbnN3ZXJzLFxuICBhbnN3ZXIsXG4gIGluaXRpYWxWYWx1ZXMsXG4gIG9ubHlSZWxldmFudFxuKSA9PiB7XG4gIGlmIChxLnN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgIHEuc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgIGNvbnN0IHsgc3ViX3F1ZXN0aW9uLCBhbnN3ZXJfdmFsdWVzIH0gPSBydWxlO1xuICAgICAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1Yl9xdWVzdGlvbi5uYW1lLCBzdWJfcXVlc3Rpb24uaWQpO1xuICAgICAgY29uc3Qgc3ViQW5zd2VyID0gYW5zd2Vyc1tzdWJRdWVzdGlvblNsdWddO1xuICAgICAgY29uc3QgbWF0Y2ggPSBjaGVja0lmVmFsdWVNYXRjaChhbnN3ZXIsIGFuc3dlcl92YWx1ZXMpO1xuXG4gICAgICBpZiAoIW9ubHlSZWxldmFudCB8fCBtYXRjaCkge1xuICAgICAgICBpbml0aWFsVmFsdWVzW3N1YlF1ZXN0aW9uU2x1Z10gPVxuICAgICAgICAgIHN1YkFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHN1Yl9xdWVzdGlvbik7XG4gICAgICB9XG5cbiAgICAgIHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIoXG4gICAgICAgIHN1Yl9xdWVzdGlvbixcbiAgICAgICAgYW5zd2VycyxcbiAgICAgICAgc3ViQW5zd2VyLFxuICAgICAgICBpbml0aWFsVmFsdWVzLFxuICAgICAgICBvbmx5UmVsZXZhbnRcbiAgICAgICk7XG4gICAgfSk7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBwYXJzZUFuc3dlcnMgPSAoXG4gIG93bmVyLFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgYW5zd2VycyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgaW5jbHVkZURpc2NsYWltZXIsXG4gIG9ubHlSZWxldmFudCA9IGZhbHNlXG4pID0+IHtcbiAgY29uc3QgaW5pdGlhbFZhbHVlcyA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gfHwgb3duZXIuZW1haWwgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWVdIHx8IG93bmVyLmZpcnN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSB8fCBvd25lci5sYXN0X25hbWUgfHwgXCJcIjtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnldID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gfHwgb3duZXIuY29tcGFueTtcbiAgfVxuXG4gIGlmIChpbmNsdWRlRGlzY2xhaW1lcikge1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gfHxcbiAgICAgIG93bmVyLmRpc2NsYWltZXJfYWNjZXB0ZWQ7XG4gIH1cblxuICBleHRyYVF1ZXN0aW9ucy5mb3JFYWNoKChxKSA9PiB7XG4gICAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHEubmFtZSwgcS5pZCk7XG4gICAgY29uc3QgYW5zd2VyID0gYW5zd2Vyc1txdWVzdGlvblNsdWddO1xuICAgIGluaXRpYWxWYWx1ZXNbcXVlc3Rpb25TbHVnXSA9IGFuc3dlciB8fCBnZXRUeXBlSW5pdGlhbFZhbHVlKHEpO1xuXG4gICAgcGFyc2VTdWJRdWVzdGlvbkFuc3dlcihxLCBhbnN3ZXJzLCBhbnN3ZXIsIGluaXRpYWxWYWx1ZXMsIG9ubHlSZWxldmFudCk7XG4gIH0pO1xuXG4gIHJldHVybiBpbml0aWFsVmFsdWVzO1xufTtcblxuY29uc3QgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEgPSAocXVlc3Rpb25TbHVnLCBydWxlLCBzY2hlbWEpID0+IHtcbiAgY29uc3Qgc3ViUXVlc3Rpb24gPSBydWxlLnN1Yl9xdWVzdGlvbjtcbiAgY29uc3Qgc3ViUXVlc3Rpb25TbHVnID0gdG9TbHVnKHN1YlF1ZXN0aW9uLm5hbWUsIHN1YlF1ZXN0aW9uLmlkKTtcblxuICBzY2hlbWFbc3ViUXVlc3Rpb25TbHVnXSA9IGdldFR5cGVWYWxpZGF0aW9uKFxuICAgIHN1YlF1ZXN0aW9uLnR5cGUsXG4gICAgc3ViUXVlc3Rpb24ubmFtZSxcbiAgICBmYWxzZVxuICApXG4gICAgLm51bGxhYmxlKClcbiAgICAud2hlbihxdWVzdGlvblNsdWcsIHtcbiAgICAgIGlzOiAocXVlc3Rpb25BbnMpID0+IHtcbiAgICAgICAgY29uc3QgYW5zVmFsdWVNYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKFxuICAgICAgICAgIHF1ZXN0aW9uQW5zLFxuICAgICAgICAgIHJ1bGUuYW5zd2VyX3ZhbHVlc1xuICAgICAgICApO1xuICAgICAgICAvLyBjaGVjayBpZiBxdWVzdGlvbiBpcyB2aXNpYmxlIHRvIGFkZCB2YWxpZGF0aW9uXG4gICAgICAgIGNvbnN0IGlzVmlzaWJsZSA9ICEhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoXG4gICAgICAgICAgYCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBhbnNWYWx1ZU1hdGNoICYmIGlzVmlzaWJsZTtcbiAgICAgIH0sXG4gICAgICB0aGVuOiAoc2NoKSA9PiB7XG4gICAgICAgIGlmIChzdWJRdWVzdGlvbi50eXBlID09PSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0KSB7XG4gICAgICAgICAgcmV0dXJuIHNjaFxuICAgICAgICAgICAgLm1pbihNSU5fUkVRVUlSRUQsIGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHNjaC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICBpZiAoc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgc3ViUXVlc3Rpb24uc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHN1YlJ1bGUpID0+IHtcbiAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHN1YlF1ZXN0aW9uU2x1Zywgc3ViUnVsZSwgc2NoZW1hKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IGJ1aWxkVmFsaWRhdGlvblNjaGVtYSA9IChcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIGluY2x1ZGVBdHRlbmRlZUluZm8sXG4gIGRpc2NsYWltZXJNYW5kYXRvcnlcbikgPT4ge1xuICBjb25zdCBzY2hlbWEgPSB7fTtcblxuICBpZiAoaW5jbHVkZUF0dGVuZGVlSW5mbykge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5lbWFpbF0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAuZW1haWwoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5sYXN0TmFtZV0gPSB5dXBcbiAgICAgIC5zdHJpbmcoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPSB5dXAubGF6eSgodmFsdWUpID0+XG4gICAgICB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCJcbiAgICAgICAgPyB5dXBcbiAgICAgICAgICAgIC5vYmplY3QoKVxuICAgICAgICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uY29tcGFueS5yZXF1aXJlZFwiKSlcbiAgICAgICAgICAgIC50eXBlRXJyb3IoaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9maWVsZFwiKSlcbiAgICAgICAgOiB5dXAuc3RyaW5nKCkucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICk7XG4gIH1cblxuICBpZiAoZGlzY2xhaW1lck1hbmRhdG9yeSkge1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID0geXVwXG4gICAgICAuYm9vbCgpXG4gICAgICAub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCB7IGlkLCBuYW1lLCB0eXBlLCBtYW5kYXRvcnksIHN1Yl9xdWVzdGlvbl9ydWxlcyB9ID0gcTtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcobmFtZSwgaWQpO1xuICAgIHNjaGVtYVtxdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24odHlwZSwgbmFtZSwgbWFuZGF0b3J5KTtcblxuICAgIGlmIChzdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgIHN1Yl9xdWVzdGlvbl9ydWxlcy5mb3JFYWNoKChydWxlKSA9PiB7XG4gICAgICAgIGJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hKHF1ZXN0aW9uU2x1ZywgcnVsZSwgc2NoZW1hKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHl1cC5vYmplY3Qoc2NoZW1hKTtcbn07XG5cbmV4cG9ydCBjb25zdCB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uID0gKHRpY2tldHMsIHRpY2tldCkgPT5cbiAgdGlja2V0cy5tYXAoKHQpID0+IHtcbiAgICBjb25zdCB0bXBUaWNrZXQgPSB7IC4uLnQgfTtcbiAgICAvLyB1cGRhdGUgYXR0ZW5kZWVcbiAgICBpZiAoXG4gICAgICB0Lm93bmVyPy5pZCA9PT0gdGlja2V0Lm93bmVyPy5pZCAmJlxuICAgICAgdC5vd25lcj8uc3RhdHVzICE9PSB0aWNrZXQub3duZXI/LnN0YXR1c1xuICAgICkge1xuICAgICAgdG1wVGlja2V0Lm93bmVyID0gdGlja2V0Lm93bmVyO1xuICAgIH1cbiAgICByZXR1cm4gdC5pZCA9PT0gdGlja2V0LmlkID8gdGlja2V0IDogdG1wVGlja2V0O1xuICB9KTtcbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjb3B5SWNvbl9fX2xJM2VRXCI7XG52YXIgXzIgPSBcInJldmVyc2VkX19fekp6bURcIjtcbnZhciBfMyA9IFwidHJ1bmNhdGVkX19faldTblVcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX21WUGlSXCI7XG5leHBvcnQgeyBfMSBhcyBcImNvcHlJY29uXCIsIF8yIGFzIFwicmV2ZXJzZWRcIiwgXzMgYXMgXCJ0cnVuY2F0ZWRcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVfX19teEVLV1wiO1xudmFyIF8yID0gXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJfX19PNHNTc1wiO1xudmFyIF8zID0gXCJjYWxlbmRhckRpc3BsYXlfX19GM251S1wiO1xudmFyIF80ID0gXCJjbGVhbkJ1dHRvbl9fX3FxRHZVXCI7XG52YXIgXzUgPSBcImNvbnRhaW5lcl9fX1FlUVlfXCI7XG52YXIgXzYgPSBcImRhdGVQaWNrZXJDb250YWluZXJfX19aNDJtd1wiO1xudmFyIF83ID0gXCJkYXRlcGlja2VyQ2xvc2VfX19UWjdrSlwiO1xudmFyIF84ID0gXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lcl9fX2tVblc5XCI7XG52YXIgXzkgPSBcImZpbHRlckNvbnRhaW5lcl9fX3JycXA5XCI7XG52YXIgX2EgPSBcImZpbHRlckRhdGVMYWJlbF9fX0pnYmNzXCI7XG52YXIgX2IgPSBcImZpbHRlckljb25fX19paU96b1wiO1xudmFyIF9jID0gXCJmaWx0ZXJMYWJlbF9fX3NrWlA3XCI7XG52YXIgX2QgPSBcImZpbHRlckxpc3RDb250YWluZXJfX19JRHJsU1wiO1xudmFyIF9lID0gXCJmaWx0ZXJOdW1BY3RpdmVfX19rbUVFS1wiO1xudmFyIF9mID0gXCJmaWx0ZXJTb3J0Q29udGFpbmVyX19fbmhOSnNcIjtcbnZhciBfMTAgPSBcImxhYmVsX19fTEFtZV9cIjtcbnZhciBfMTEgPSBcInNob3dGaWx0ZXJMaXN0X19fSVc0eEdcIjtcbnZhciBfMTIgPSBcInNvcnRDb250YWluZXJfX19zYjVCZFwiO1xudmFyIF8xMyA9IFwic29ydEljb25fX19jX1haaVwiO1xudmFyIF8xNCA9IFwic29ydExhYmVsX19fZFhpTXlcIjtcbnZhciBfMTUgPSBcInNvcnRMaXN0Q29udGFpbmVyX19fUHAyWGdcIjtcbnZhciBfMTYgPSBcInRpdGxlV3JhcHBlcl9fX1A2bVB1XCI7XG5leHBvcnQgeyBfMSBhcyBcIk11aU91dGxpbmVkSW5wdXQtbm90Y2hlZE91dGxpbmVcIiwgXzIgYXMgXCJNdWlQaWNrZXJzQ2FsZW5kYXJIZWFkZXItbGFiZWxDb250YWluZXJcIiwgXzMgYXMgXCJjYWxlbmRhckRpc3BsYXlcIiwgXzQgYXMgXCJjbGVhbkJ1dHRvblwiLCBfNSBhcyBcImNvbnRhaW5lclwiLCBfNiBhcyBcImRhdGVQaWNrZXJDb250YWluZXJcIiwgXzcgYXMgXCJkYXRlcGlja2VyQ2xvc2VcIiwgXzggYXMgXCJmaWx0ZXJDaGVja2JveENvbnRhaW5lclwiLCBfOSBhcyBcImZpbHRlckNvbnRhaW5lclwiLCBfYSBhcyBcImZpbHRlckRhdGVMYWJlbFwiLCBfYiBhcyBcImZpbHRlckljb25cIiwgX2MgYXMgXCJmaWx0ZXJMYWJlbFwiLCBfZCBhcyBcImZpbHRlckxpc3RDb250YWluZXJcIiwgX2UgYXMgXCJmaWx0ZXJOdW1BY3RpdmVcIiwgX2YgYXMgXCJmaWx0ZXJTb3J0Q29udGFpbmVyXCIsIF8xMCBhcyBcImxhYmVsXCIsIF8xMSBhcyBcInNob3dGaWx0ZXJMaXN0XCIsIF8xMiBhcyBcInNvcnRDb250YWluZXJcIiwgXzEzIGFzIFwic29ydEljb25cIiwgXzE0IGFzIFwic29ydExhYmVsXCIsIF8xNSBhcyBcInNvcnRMaXN0Q29udGFpbmVyXCIsIF8xNiBhcyBcInRpdGxlV3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjYW5jZWxCdG5fX19xRGV4aFwiO1xudmFyIF8yID0gXCJmb290ZXJfX19TTjcweVwiO1xudmFyIF8zID0gXCJzYXZlQnRuX19fbmJVNmNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2FuY2VsQnRuXCIsIF8yIGFzIFwiZm9vdGVyXCIsIF8zIGFzIFwic2F2ZUJ0blwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJlcnJvckxhYmVsX19fbm9jeVhcIjtcbmV4cG9ydCB7IF8xIGFzIFwiZXJyb3JMYWJlbFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJteU9yZGVyc1dyYXBwZXJfX19ISm15c1wiO1xudmFyIF8yID0gXCJub09yZGVyc0ZvdW5kX19fRFJ3Z29cIjtcbnZhciBfMyA9IFwibm9PcmRlcnNJY29uV3JhcHBlcl9fX3RQVG1ZXCI7XG5leHBvcnQgeyBfMSBhcyBcIm15T3JkZXJzV3JhcHBlclwiLCBfMiBhcyBcIm5vT3JkZXJzRm91bmRcIiwgXzMgYXMgXCJub09yZGVyc0ljb25XcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJvZHlfX19BV2RpTFwiO1xudmFyIF8yID0gXCJpY29uV3JhcHBlcl9fX216ZXZLXCI7XG52YXIgXzMgPSBcInRpdGxlX19fTTI0Mm1cIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1Fzd0NQXCI7XG5leHBvcnQgeyBfMSBhcyBcImJvZHlcIiwgXzIgYXMgXCJpY29uV3JhcHBlclwiLCBfMyBhcyBcInRpdGxlXCIsIF80IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJvcmRlckRldGFpbHNNbW91bnRfX19yM2tSQVwiO1xudmFyIF8yID0gXCJvcmRlckRldGFpbHNUaWNrZXRzX19fbTRJaktcIjtcbnZhciBfMyA9IFwib3JkZXJTdW1tYXJ5QnV0dG9uX19fdXhqaHRcIjtcbnZhciBfNCA9IFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb19fX19SQlhFXCI7XG52YXIgXzUgPSBcIm9yZGVyU3VtbWFyeVRhYmxlX19fWURueFZcIjtcbnZhciBfNiA9IFwib3JkZXJTdW1tYXJ5V3JhcHBlcl9fX1J3SUVSXCI7XG52YXIgXzcgPSBcInJlZnVuZERpc2FibGVkX19fanZyazNcIjtcbmV4cG9ydCB7IF8xIGFzIFwib3JkZXJEZXRhaWxzTW1vdW50XCIsIF8yIGFzIFwib3JkZXJEZXRhaWxzVGlja2V0c1wiLCBfMyBhcyBcIm9yZGVyU3VtbWFyeUJ1dHRvblwiLCBfNCBhcyBcIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm9cIiwgXzUgYXMgXCJvcmRlclN1bW1hcnlUYWJsZVwiLCBfNiBhcyBcIm9yZGVyU3VtbWFyeVdyYXBwZXJcIiwgXzcgYXMgXCJyZWZ1bmREaXNhYmxlZFwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhc3NpZ25UaWNrZXRCdXR0b25fX196ekxzY1wiO1xudmFyIF8yID0gXCJhc3NpZ25Ub01lVGV4dF9fX1pQYWV4XCI7XG52YXIgXzMgPSBcImFzc2lnbmVkQnlUZXh0X19fYk5aN3pcIjtcbnZhciBfNCA9IFwiYXNzaWduZWRUb01lRGVzX19fR2pGa1ZcIjtcbnZhciBfNSA9IFwiYXNzaWduZWRUb01lV3JhcHBlcl9fX1V4YzJ5XCI7XG52YXIgXzYgPSBcImJhZGdlRmVhdHVyZV9fX0EyTE1WXCI7XG52YXIgXzcgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19JUUxOUFwiO1xudmFyIF84ID0gXCJjaGVja2JveF9fX1haSnBiXCI7XG52YXIgXzkgPSBcImRpc2FibGVkUmVmdW5kX19fU2ZmbDdcIjtcbnZhciBfYSA9IFwiZGlzcGxheV9ub25lX19fQ3FwTDNcIjtcbnZhciBfYiA9IFwibGFiZWxfX196WERXelwiO1xudmFyIF9jID0gXCJvcmRlclRpY2tldENvbnRhaW5lcl9fX1pKTHprXCI7XG52YXIgX2QgPSBcIm9yZGVyVGlja2V0SW5mb19fX2dlbXFCXCI7XG52YXIgX2UgPSBcIm9yZGVyVGlja2V0SW5mb0NvbnRhaW5lcl9fX19wNjZWXCI7XG52YXIgX2YgPSBcIm9yZGVyV3JhcHBlcl9fX3lEQkFvXCI7XG52YXIgXzEwID0gXCJyZWFzc2lnbkJ1dHRvbl9fX1Jvak01XCI7XG52YXIgXzExID0gXCJyZWZ1bmRCdXR0b25zX19fakRsNEhcIjtcbnZhciBfMTIgPSBcInJlZnVuZE1vZGFsX19fRXFnUEZcIjtcbnZhciBfMTMgPSBcInNlbGVjdGVkX19fSFdHTmNcIjtcbnZhciBfMTQgPSBcInRhYkJ1dHRvbnNfX194VHlKQVwiO1xudmFyIF8xNSA9IFwidGlja2V0QWN0aW9uQnV0dG9uc19fX3JwU01RXCI7XG52YXIgXzE2ID0gXCJ0aWNrZXRGb290ZXJfX19qM2JkaVwiO1xudmFyIF8xNyA9IFwidGlja2V0TGlzdENvbnRhaW5lcl9fX2NmbXJyXCI7XG52YXIgXzE4ID0gXCJ0aWNrZXROb19fX2EyaU05XCI7XG52YXIgXzE5ID0gXCJ0aWNrZXRPd25lckVtYWlsX19fWnQ0T0VcIjtcbnZhciBfMWEgPSBcInRpY2tldFRpY2tldFR5cGVfX19acV9mMFwiO1xudmFyIF8xYiA9IFwidmlld0ZpbmlzaFRpY2tldEJ1dHRvbl9fX0hGNkltXCI7XG52YXIgXzFjID0gXCJ2aWV3TW9yZUJ1dHRvbl9fX0tfMXpUXCI7XG5leHBvcnQgeyBfMSBhcyBcImFzc2lnblRpY2tldEJ1dHRvblwiLCBfMiBhcyBcImFzc2lnblRvTWVUZXh0XCIsIF8zIGFzIFwiYXNzaWduZWRCeVRleHRcIiwgXzQgYXMgXCJhc3NpZ25lZFRvTWVEZXNcIiwgXzUgYXMgXCJhc3NpZ25lZFRvTWVXcmFwcGVyXCIsIF82IGFzIFwiYmFkZ2VGZWF0dXJlXCIsIF83IGFzIFwiYmFkZ2VGZWF0dXJlV3JhcHBlclwiLCBfOCBhcyBcImNoZWNrYm94XCIsIF85IGFzIFwiZGlzYWJsZWRSZWZ1bmRcIiwgX2EgYXMgXCJkaXNwbGF5X25vbmVcIiwgX2IgYXMgXCJsYWJlbFwiLCBfYyBhcyBcIm9yZGVyVGlja2V0Q29udGFpbmVyXCIsIF9kIGFzIFwib3JkZXJUaWNrZXRJbmZvXCIsIF9lIGFzIFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyXCIsIF9mIGFzIFwib3JkZXJXcmFwcGVyXCIsIF8xMCBhcyBcInJlYXNzaWduQnV0dG9uXCIsIF8xMSBhcyBcInJlZnVuZEJ1dHRvbnNcIiwgXzEyIGFzIFwicmVmdW5kTW9kYWxcIiwgXzEzIGFzIFwic2VsZWN0ZWRcIiwgXzE0IGFzIFwidGFiQnV0dG9uc1wiLCBfMTUgYXMgXCJ0aWNrZXRBY3Rpb25CdXR0b25zXCIsIF8xNiBhcyBcInRpY2tldEZvb3RlclwiLCBfMTcgYXMgXCJ0aWNrZXRMaXN0Q29udGFpbmVyXCIsIF8xOCBhcyBcInRpY2tldE5vXCIsIF8xOSBhcyBcInRpY2tldE93bmVyRW1haWxcIiwgXzFhIGFzIFwidGlja2V0VGlja2V0VHlwZVwiLCBfMWIgYXMgXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uXCIsIF8xYyBhcyBcInZpZXdNb3JlQnV0dG9uXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIkNUQUJ1dHRvbldyYXBwZXJfX19LZ3E2Z1wiO1xudmFyIF8yID0gXCJhY3Rpb25CdXR0b25zX19fdTdtUFNcIjtcbnZhciBfMyA9IFwiYXBwcm92ZWRfX19zeEVKV1wiO1xudmFyIF80ID0gXCJiYWRnZUZlYXR1cmVfX190TGhFcFwiO1xudmFyIF81ID0gXCJiYWRnZUZlYXR1cmVXcmFwcGVyX19fXzlHYkRcIjtcbnZhciBfNiA9IFwiYnV0dG9uUGlsbF9fX0xlc2F6XCI7XG52YXIgXzcgPSBcImNhbmNlbEJ1dHRvbl9fX3lmaFliXCI7XG52YXIgXzggPSBcImNvbnRpbnVlQnV0dG9uX19fTnlYM3NcIjtcbnZhciBfOSA9IFwiZGVsZXRlSWNvbl9fX0ZTd3llXCI7XG52YXIgX2EgPSBcInBlbmRpbmdfX19hRWJXd1wiO1xudmFyIF9iID0gXCJyZWZ1bmREZXRhaWxfX19jUTI4VlwiO1xudmFyIF9jID0gXCJyZWZ1bmRFcnJvck1zZ19fX0FhaHpyXCI7XG52YXIgX2QgPSBcInJlZnVuZFN1Y2Nlc3NmdWxfX196ckRRWVwiO1xudmFyIF9lID0gXCJyZWZ1bmRUZXh0X19fYUVuTDlcIjtcbnZhciBfZiA9IFwicmVmdW5kVGlja2V0QXR0ZW5kZWVfX19RWENqTVwiO1xudmFyIF8xMCA9IFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyX19feWE2MTNcIjtcbnZhciBfMTEgPSBcInJlamVjdGVkX19fTkpFNFpcIjtcbnZhciBfMTIgPSBcInN1YnRpdGxlX19fUHREZTJcIjtcbnZhciBfMTMgPSBcInN1Y2Nlc3NNc2dfX19IdE1zZVwiO1xudmFyIF8xNCA9IFwic3VjY2Vzc01zZzJfX19RNnpuYVwiO1xudmFyIF8xNSA9IFwidGlja2V0TGlzdF9fX2VEUVIzXCI7XG52YXIgXzE2ID0gXCJ0aWNrZXROb19fX19FQUQ0XCI7XG5leHBvcnQgeyBfMSBhcyBcIkNUQUJ1dHRvbldyYXBwZXJcIiwgXzIgYXMgXCJhY3Rpb25CdXR0b25zXCIsIF8zIGFzIFwiYXBwcm92ZWRcIiwgXzQgYXMgXCJiYWRnZUZlYXR1cmVcIiwgXzUgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF82IGFzIFwiYnV0dG9uUGlsbFwiLCBfNyBhcyBcImNhbmNlbEJ1dHRvblwiLCBfOCBhcyBcImNvbnRpbnVlQnV0dG9uXCIsIF85IGFzIFwiZGVsZXRlSWNvblwiLCBfYSBhcyBcInBlbmRpbmdcIiwgX2IgYXMgXCJyZWZ1bmREZXRhaWxcIiwgX2MgYXMgXCJyZWZ1bmRFcnJvck1zZ1wiLCBfZCBhcyBcInJlZnVuZFN1Y2Nlc3NmdWxcIiwgX2UgYXMgXCJyZWZ1bmRUZXh0XCIsIF9mIGFzIFwicmVmdW5kVGlja2V0QXR0ZW5kZWVcIiwgXzEwIGFzIFwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyXCIsIF8xMSBhcyBcInJlamVjdGVkXCIsIF8xMiBhcyBcInN1YnRpdGxlXCIsIF8xMyBhcyBcInN1Y2Nlc3NNc2dcIiwgXzE0IGFzIFwic3VjY2Vzc01zZzJcIiwgXzE1IGFzIFwidGlja2V0TGlzdFwiLCBfMTYgYXMgXCJ0aWNrZXROb1wiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJjbG9zZUJ0bl9fX3lTUUNPXCI7XG52YXIgXzIgPSBcImhlYWRlcl9fX2ZCWEc5XCI7XG52YXIgXzMgPSBcInRpdGxlX19fdHlaZVFcIjtcbnZhciBfNCA9IFwid3JhcHBlcl9fX1JPSkdzXCI7XG5leHBvcnQgeyBfMSBhcyBcImNsb3NlQnRuXCIsIF8yIGFzIFwiaGVhZGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInN1bW1pdFRpdGxlRGF0ZV9fX1hucnBGXCI7XG52YXIgXzIgPSBcIndpZGdldEhlYWRlcl9fX2dnTHRNXCI7XG5leHBvcnQgeyBfMSBhcyBcInN1bW1pdFRpdGxlRGF0ZVwiLCBfMiBhcyBcIndpZGdldEhlYWRlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ1bmFzc2lnbkJ0bl9fX2k3bWd5XCI7XG52YXIgXzIgPSBcInVuYXNzaWduV3JhcHBlcl9fX2czZTJ1XCI7XG52YXIgXzMgPSBcIndyYXBwZXJfX19XOTRTTFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ1bmFzc2lnbkJ0blwiLCBfMiBhcyBcInVuYXNzaWduV3JhcHBlclwiLCBfMyBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaGVhZGVyTm90ZV9fX0FlNUVBXCI7XG52YXIgXzIgPSBcIm9yZGVyTm9fX19WT1BSd1wiO1xudmFyIF8zID0gXCJwdXJjaGFzZWRCeV9fX01OaUhUXCI7XG52YXIgXzQgPSBcInB1cmNoYXNlZEJ5V3JhcHBlcl9fX0RoNkhVXCI7XG52YXIgXzUgPSBcIndyYXBwZXJfX19tVnVpWlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJoZWFkZXJOb3RlXCIsIF8yIGFzIFwib3JkZXJOb1wiLCBfMyBhcyBcInB1cmNoYXNlZEJ5XCIsIF80IGFzIFwicHVyY2hhc2VkQnlXcmFwcGVyXCIsIF81IGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lcl9fX2dPdGFKXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIndyYXBwZXJfX19Fd09SelwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImluZm9Ob3RlX19faTFYWTlcIjtcbnZhciBfMiA9IFwid3JhcHBlcl9fX01BdU5TXCI7XG5leHBvcnQgeyBfMSBhcyBcImluZm9Ob3RlXCIsIF8yIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyX19fQXV2cm5cIjtcbnZhciBfMiA9IFwiYWRkaXRpb25hbERldGFpbHNfX19tUDFpSlwiO1xudmFyIF8zID0gXCJhdHRlbmRlZUNvbnRhaW5lcl9fX1EwVlV6XCI7XG52YXIgXzQgPSBcImF0dGVuZGVlSW5mb1RpdGxlX19fTG1ybTRcIjtcbnZhciBfNSA9IFwiY2xvc2VCdG5fX19XTkpsRVwiO1xudmFyIF82ID0gXCJjb3B5QnRuX19fX3V0QTZcIjtcbnZhciBfNyA9IFwiZGVsZWdhdGVkVG9fX19TR1ZRSVwiO1xudmFyIF84ID0gXCJkb3dubG9hZEJ0bl9fX3FqWWh6XCI7XG52YXIgXzkgPSBcImhlYWRlcl9fX0F1Z256XCI7XG52YXIgX2EgPSBcIm9yZGVyTnVtYmVyX19fTDVRNWFcIjtcbnZhciBfYiA9IFwicXJDb2RlX19fZndxWnFcIjtcbnZhciBfYyA9IFwicXJOb3RlX19fR2M3S25cIjtcbnZhciBfZCA9IFwic2VuZEJ0bl9fX2tvV00yXCI7XG52YXIgX2UgPSBcInNlbnRfX19rNldLeFwiO1xudmFyIF9mID0gXCJzdGF0dXNfX19rd0M4eVwiO1xudmFyIF8xMCA9IFwic3VidGl0bGVfX195X051T1wiO1xudmFyIF8xMSA9IFwidGlja2V0RGV0YWlsQ29udGFpbmVyX19fYjJUTFJcIjtcbnZhciBfMTIgPSBcInRpdGxlX19fd1F6VU5cIjtcbmV4cG9ydCB7IF8xIGFzIFwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lclwiLCBfMiBhcyBcImFkZGl0aW9uYWxEZXRhaWxzXCIsIF8zIGFzIFwiYXR0ZW5kZWVDb250YWluZXJcIiwgXzQgYXMgXCJhdHRlbmRlZUluZm9UaXRsZVwiLCBfNSBhcyBcImNsb3NlQnRuXCIsIF82IGFzIFwiY29weUJ0blwiLCBfNyBhcyBcImRlbGVnYXRlZFRvXCIsIF84IGFzIFwiZG93bmxvYWRCdG5cIiwgXzkgYXMgXCJoZWFkZXJcIiwgX2EgYXMgXCJvcmRlck51bWJlclwiLCBfYiBhcyBcInFyQ29kZVwiLCBfYyBhcyBcInFyTm90ZVwiLCBfZCBhcyBcInNlbmRCdG5cIiwgX2UgYXMgXCJzZW50XCIsIF9mIGFzIFwic3RhdHVzXCIsIF8xMCBhcyBcInN1YnRpdGxlXCIsIF8xMSBhcyBcInRpY2tldERldGFpbENvbnRhaW5lclwiLCBfMTIgYXMgXCJ0aXRsZVwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJidXR0b25DYW5jZWxsZWRfX19FcmxEWlwiO1xudmFyIF8yID0gXCJidXR0b25Db21wbGV0ZV9fX2xsV2taXCI7XG52YXIgXzMgPSBcImJ1dHRvbkluY29tcGxldGVfX19Ub2xIZ1wiO1xudmFyIF80ID0gXCJidXR0b25QaWxsX19fenEydGNcIjtcbnZhciBfNSA9IFwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkX19fcFd0MzBcIjtcbnZhciBfNiA9IFwiYnV0dG9uVW5hc3NpZ25lZF9fX1lEZDhYXCI7XG52YXIgXzcgPSBcInRpY2tldFN0YXR1c0NvbnRhaW5lcl9fX3FqNmZiXCI7XG5leHBvcnQgeyBfMSBhcyBcImJ1dHRvbkNhbmNlbGxlZFwiLCBfMiBhcyBcImJ1dHRvbkNvbXBsZXRlXCIsIF8zIGFzIFwiYnV0dG9uSW5jb21wbGV0ZVwiLCBfNCBhcyBcImJ1dHRvblBpbGxcIiwgXzUgYXMgXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRcIiwgXzYgYXMgXCJidXR0b25VbmFzc2lnbmVkXCIsIF83IGFzIFwidGlja2V0U3RhdHVzQ29udGFpbmVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGl2ZV9fX3RMeVdaXCI7XG52YXIgXzIgPSBcInRhYk9wdGlvbl9fX0g0SDF1XCI7XG52YXIgXzMgPSBcInRhYldyYXBwZXJfX191MjFzR1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3RpdmVcIiwgXzIgYXMgXCJ0YWJPcHRpb25cIiwgXzMgYXMgXCJ0YWJXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldHNUaXRsZVRleHRfX19URFBtcFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJ0aWNrZXRzVGl0bGVUZXh0XCIgfVxuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW5mb1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dBY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRUZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvSW5wdXRCYXNlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvU3RhY2tcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9UYWJzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvVG9vbHRpcFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL3VzZU1lZGlhUXVlcnlcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQHJlZHV4anMvdG9vbGtpdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAc2VudHJ5L3JlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImZvcm1pa1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJpMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImlkdG9rZW4tdmVyaWZpZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwibW9tZW50LXRpbWV6b25lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9zZWN1cml0eS9tZXRob2RzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9xdWVyeS1hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInAtbGltaXRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicHJvcC10eXBlc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1pMThuZXh0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWluZmluaXRlLXNjcm9sbC1jb21wb25lbnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtcXItY29kZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1yZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC9qc3gtcnVudGltZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3QvaW50ZWdyYXRpb24vcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9saWIvc3RvcmFnZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJ5dXBcIik7IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSAobW9kdWxlKSA9PiB7XG5cdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuXHRcdCgpID0+IChtb2R1bGVbJ2RlZmF1bHQnXSkgOlxuXHRcdCgpID0+IChtb2R1bGUpO1xuXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCB7IGE6IGdldHRlciB9KTtcblx0cmV0dXJuIGdldHRlcjtcbn07IiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBQcm92aWRlciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgUGVyc2lzdEdhdGUgfSBmcm9tIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiO1xuaW1wb3J0IHsgU3R5bGVkRW5naW5lUHJvdmlkZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlSW5pdFN0b3JlIH0gZnJvbSBcIi4vc3RvcmVcIjtcbmltcG9ydCB7IFJFU0VUX1NUQVRFLCBzZXRSZWR1Y2VyU3RhdGUgfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5cbmltcG9ydCBXaWRnZXRXcmFwcGVyIGZyb20gXCIuL2NvbXBvbmVudHMvV2lkZ2V0V3JhcHBlclwiO1xuXG5jb25zdCBNeU9yZGVyc015VGlja2V0c1dpZGdldCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICBhcGlCYXNlVXJsLFxuICAgIHVzZXIsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9ID0gcHJvcHM7XG5cbiAgY29uc3QgeyBzdG9yZSwgcGVyc2lzdG9yIH0gPSB1c2VJbml0U3RvcmUoe1xuICAgIGxvZ2luVXJsLFxuICAgIHN1cHBvcnRFbWFpbCxcbiAgICBzdW1taXQsXG4gICAgdXNlcixcbiAgICBhcGlCYXNlVXJsLFxuICAgIGNsaWVudElkLFxuICAgIHVwZGF0ZVByb2ZpbGVcbiAgfSk7XG5cbiAgY29uc3QgaGFuZGxlQmVmb3JlTGlmdCA9ICgpID0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIGNvbnN0IGZsdXNoID0gcGFyYW1zLmhhcyhcImZsdXNoU3RhdGVcIik7XG4gICAgaWYgKGZsdXNoKSBzdG9yZS5kaXNwYXRjaCh7IHR5cGU6IFJFU0VUX1NUQVRFLCBwYXlsb2FkOiBudWxsIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc3RvcmUuZGlzcGF0Y2goc2V0UmVkdWNlclN0YXRlKHN1bW1pdCwgdXNlcikpO1xuICB9LCBbc3VtbWl0LCB1c2VyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8UHJvdmlkZXIgc3RvcmU9e3N0b3JlfT5cbiAgICAgIDxQZXJzaXN0R2F0ZVxuICAgICAgICBvbkJlZm9yZUxpZnQ9e2hhbmRsZUJlZm9yZUxpZnR9XG4gICAgICAgIGxvYWRpbmc9e251bGx9XG4gICAgICAgIHBlcnNpc3Rvcj17cGVyc2lzdG9yfVxuICAgICAgPlxuICAgICAgICA8U3R5bGVkRW5naW5lUHJvdmlkZXIgaW5qZWN0Rmlyc3Q+XG4gICAgICAgICAgPFdpZGdldFdyYXBwZXIgLz5cbiAgICAgICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgICAgIDwvUGVyc2lzdEdhdGU+XG4gICAgPC9Qcm92aWRlcj5cbiAgKTtcbn07XG5cbk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0LnByb3BUeXBlcyA9IHtcbiAgbG9naW5Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHN1cHBvcnRFbWFpbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBhcGlCYXNlVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1c2VyOiBQcm9wVHlwZXMub2JqZWN0LFxuICBjbGllbnRJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgdXBkYXRlUHJvZmlsZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0O1xuIl0sIm5hbWVzIjpbImF1dGhFcnJvckhhbmRsZXIiLCJjcmVhdGVBY3Rpb24iLCJkZWxldGVSZXF1ZXN0IiwiZ2V0UmVxdWVzdCIsInB1dFJlcXVlc3QiLCJzdGFydExvYWRpbmciLCJzdG9wTG9hZGluZyIsInBMaW1pdCIsImdldElkVG9rZW4iLCJvYmplY3RUb1F1ZXJ5U3RyaW5nIiwiSWRUb2tlblZlcmlmaWVyIiwiaTE4biIsImF1dGhQcm9taXNlUmVqZWN0IiwiZ2V0QWNjZXNzVG9rZW5TYWZlbHkiLCJERUZBVUxUX0lURU1TX1BFUl9QQUdFIiwiRVJST1JfQ09ERVMiLCJGSUZUWV9QRVJfUEFHRSIsIkZJUlNUX1BBR0UiLCJQUk9NSVNFX0JBVENIX0xJTUlUIiwiVEFCUyIsIlJFU0VUX1NUQVRFIiwiUkVTRVRfRklMVEVSIiwiUkVTRVRfQVBJX0VSUk9SIiwiU0VUX1NUQVRFIiwiU0VUX0FQSV9FUlJPUiIsIkNIQU5HRV9GSUxURVIiLCJDSEFOR0VfU09SVCIsIkdFVF9VU0VSX09SREVSUyIsIlJFRlVORF9PUkRFUiIsIlNFVF9BQ1RJVkVfT1JERVJfSUQiLCJGSUxURVJfVVNFUl9PUkRFUlMiLCJHRVRfTVlfQVNTSUdORURfVElDS0VUUyIsIlVQREFURV9USUNLRVQiLCJSRVNFVF9USUNLRVQiLCJSRUNFSVZFX1RJQ0tFVCIsIlJFTU9WRV9USUNLRVRfQVRURU5ERUUiLCJBU1NJR05fVElDS0VUIiwiREVMRUdBVEVfVElDS0VUIiwiUkVGVU5EX1RJQ0tFVCIsIlJFU0VORF9OT1RJRklDQVRJT04iLCJHRVRfVElDS0VUU19CWV9PUkRFUiIsIkdFVF9USUNLRVRTX0JZX09SREVSX0VSUk9SIiwiR0VUX09SREVSX1RJQ0tFVF9ERVRBSUxTIiwiR0VUX1RJQ0tFVF9ERVRBSUxTIiwiUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMiLCJUSUNLRVRfQVRURU5ERUVfS0VZUyIsImVtYWlsIiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJjb21wYW55IiwiZGlzY2xhaW1lckFjY2VwdGVkIiwiZXh0cmFRdWVzdGlvbnMiLCJVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEIiwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSIsIlNUT1BfTE9BRElOR19JRFBfUFJPRklMRSIsIlVQREFURV9JRFBfUFJPRklMRSIsIlNFVF9VU0VSIiwiU0VUX1NVTU1JVCIsIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OUyIsIlJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTIiwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTIiwicmVzZXRUaWNrZXQiLCJkaXNwYXRjaCIsInJlc2V0U3RhdGUiLCJyZXNldEZpbHRlciIsInJlc2V0RXJyb3IiLCJzZXRSZWR1Y2VyU3RhdGUiLCJzdW1taXQiLCJ1c2VyIiwiRklMVEVSX1ZBUl9EQVRFIiwiRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFIiwiRklMVEVSX1ZBUl9USUNLRVRfVFlQRSIsIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEIiwiRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMiLCJGSUxURVJfVkFSX1BST01PQ09ERSIsIkZJTFRFUl9WQVJfRlJFRV9QQUlEIiwiRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIiLCJjaGFuZ2VGaWx0ZXIiLCJmaWx0ZXIiLCJjaGFuZ2VTb3J0Iiwic29ydCIsInBhcnNlRmlsdGVyIiwiZmlsdGVyT2JqIiwiY3VycmVudFRhYiIsInB1c2giLCJjb25jYXQiLCJsb3dlciIsInVwcGVyIiwibGVuZ3RoIiwiZmlsdGVyTmFtZSIsIk9SREVSUyIsImpvaW4iLCJnZXRTb3J0RGlyZWN0aW9uIiwiZGlyZWN0aW9uIiwiZXJyb3JIYW5kbGVyTm90aWZ5IiwicGF5bG9hZCIsImNhbGxiYWNrIiwiY3VzdG9tQXV0aEVycm9ySGFuZGxlciIsImVyciIsInJlcyIsImN1c3RvbUZldGNoRXJyb3JIYW5kbGVyIiwicmVzcG9uc2UiLCJjb2RlIiwic3RhdHVzIiwibXNnIiwidCIsIk9iamVjdCIsImVudHJpZXMiLCJlcnJvcnMiLCJmb3JFYWNoIiwiX3JlZiIsImtleSIsInZhbHVlIiwiTnVtYmVyIiwiaXNOYU4iLCJzdGF0dXNUZXh0IiwidGl0bGUiLCJodG1sIiwiZ2V0VXNlck9yZGVycyIsIl9yZWYyIiwic2tpcExvYWRpbmciLCJwYWdlIiwicGVyUGFnZSIsImdldFN0YXRlIiwiX3JlZjMiLCJhcGlCYXNlVXJsIiwid2lkZ2V0U3RhdGUiLCJhY2Nlc3NUb2tlbiIsInBhcmFtcyIsImFjY2Vzc190b2tlbiIsIm9yZGVyIiwicmVsYXRpb25zIiwicGVyX3BhZ2UiLCJrZXlzIiwiZmlsdGVycyIsIm5hbWUiLCJpZCIsInRoZW4iLCJjYXRjaCIsImUiLCJmaW5hbGx5Iiwic2V0QWN0aXZlT3JkZXJJZCIsIm9yZGVySWQiLCJzZXRVc2VyIiwiZ2V0VXNlclRpY2tldHMiLCJfcmVmNCIsIl9yZWY1IiwidXNlclByb2ZpbGUiLCJQcm9taXNlIiwicmVqZWN0IiwiZmllbGRzIiwiZXhwYW5kIiwiVElDS0VUUyIsImdldFRpY2tldHNCeU9yZGVyIiwiX3JlZjYiLCJfcmVmNyIsInJlc2VuZE5vdGlmaWNhdGlvbiIsInRpY2tldCIsIl9yZWY4IiwibWVzc2FnZSIsIm9yZGVyX2lkIiwicmVmdW5kVGlja2V0IiwiX3JlZjkiLCJfcmVmMTAiLCJyZWZ1bmRCdWxrVGlja2V0cyIsIl9yZWYxMSIsInRpY2tldHMiLCJsaW1pdCIsImFsbFJlZnVuZFRpY2tldENhbGxzIiwibWFwIiwiYWxsIiwic3VjY2Vzc2Z1bGx5UmVxdWVzdGVkIiwiciIsIl9yJHJlc3BvbnNlIiwicmVmdW5kX3JlcXVlc3RzIiwidXBkYXRlVGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsInRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQiLCJnZXRFeHRyYVF1ZXN0aW9ucyIsImF0dGVuZGVlSWQiLCJfcmVmMTIiLCJlbmRwb2ludCIsImdldFRpY2tldCIsInRpY2tldElkIiwiX3JlZjEzIiwibm9ybWFsaXplVGlja2V0IiwiZW50aXR5Iiwibm9ybWFsaXplZEVudGl0eSIsIl9vYmplY3RTcHJlYWQiLCJhdHRlbmRlZV9jb21wYW55IiwiYXR0ZW5kZWVfY29tcGFueV9pZCIsInJlZnJlc2hQcm9maWxlIiwiZGF0YSIsInRpY2tldE93bmVyIiwiX3JlZjE0IiwiX3RpY2tldE93bmVyJG1hbmFnZXIiLCJ1cGRhdGVQcm9maWxlIiwiYXR0ZW5kZWVfZW1haWwiLCJhdHRlbmRlZV9maXJzdF9uYW1lIiwiYXR0ZW5kZWVfbGFzdF9uYW1lIiwiaGFzTWFuYWdlciIsIm1hbmFnZXIiLCJtYW5hZ2VyX2lkIiwiaXRzTWUiLCJwcm9maWxlQ2hhbmdlZCIsImZpcnN0X25hbWUiLCJsYXN0X25hbWUiLCJuZXdQcm9maWxlIiwic2F2ZVRpY2tldERldGFpbHMiLCJhbnN3ZXJzIiwiX3JlZjE1IiwiaWRUb2tlbiIsInZlcmlmaWVyIiwiand0IiwiZGVjb2RlIiwiY29uc29sZSIsImxvZyIsIm93bmVyIiwiYXNzaWduQXR0ZW5kZWUiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMTYiLCJyZW1vdmVUaWNrZXQiLCJfcmVmMTciLCJyZWFzc2lnblRpY2tldCIsInVuYXNzaWduVGlja2V0IiwiZGVsZWdhdGVUaWNrZXQiLCJfcmVmMTgiLCJzYXZlRXh0cmFRdWVzdGlvbnMiLCJfcmVmMTkiLCJnZXRUaWNrZXRQREYiLCJfcmVmMjAiLCJxdWVyeVN0cmluZyIsImFwaVVybCIsImZldGNoIiwicmVzcG9uc2VUeXBlIiwiaGVhZGVycyIsIm9rIiwiYmxvYiIsInBkZiIsImxpbmsiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJ1cmwiLCJ3aW5kb3ciLCJVUkwiLCJjcmVhdGVPYmplY3RVUkwiLCJocmVmIiwiZG93bmxvYWQiLCJkaXNwYXRjaEV2ZW50IiwiTW91c2VFdmVudCIsIlJlYWN0IiwiQnV0dG9uIiwiRGlhbG9nIiwiRGlhbG9nQWN0aW9ucyIsIkRpYWxvZ0NvbnRlbnQiLCJEaWFsb2dDb250ZW50VGV4dCIsIkRpYWxvZ1RpdGxlIiwidXNlVHJhbnNsYXRpb24iLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiQ29uZmlybURpYWxvZyIsIm9wZW4iLCJib2R5Iiwib25DbG9zZSIsIm9uQ29uZmlybSIsImNoaWxkcmVuIiwib25DbGljayIsImF1dG9Gb2N1cyIsIlByb3BUeXBlcyIsIkNvbnRlbnRDb3B5SWNvbiIsIlRvb2x0aXAiLCJNSUxMSVNFQ19UT19TRUMiLCJzdHlsZXMiLCJkZWZhdWx0V2lkdGgiLCJDb3B5VGV4dCIsInRleHQiLCJ0b29sdGlwVGV4dCIsImhpZGVDb3B5IiwidHJ1bmNhdGVkIiwicmV2ZXJzZWQiLCJ3aWR0aCIsInRvb2x0aXBUZXh0VG9Vc2UiLCJ0b29sdGlwIiwic2V0VG9vbHRpcCIsInVzZVN0YXRlIiwiY2xhc3NOYW1lcyIsImhhbmRsZUNvcHkiLCJuYXZpZ2F0b3IiLCJjbGlwYm9hcmQiLCJ3cml0ZVRleHQiLCJzZXRUaW1lb3V0IiwiY2xhc3NOYW1lIiwid3JhcHBlciIsInN0eWxlIiwiY29weUljb24iLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJib29sIiwibnVtYmVyIiwiY3JlYXRlQ29udGV4dCIsIkN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQiLCJBbGVydCIsIlNuYWNrYmFyIiwiVHlwb2dyYXBoeSIsIkNoZWNrQ2lyY2xlSWNvbiIsIkVycm9ySWNvbiIsIkN1c3RvbU5vdGlmaWNhdGlvbiIsInNldmVyaXR5IiwiYW5jaG9yT3JpZ2luIiwidmVydGljYWwiLCJob3Jpem9udGFsIiwiYXV0b0hpZGVEdXJhdGlvbiIsInZhcmlhbnQiLCJzeCIsImJhY2tncm91bmRDb2xvciIsImljb25NYXBwaW5nIiwic3VjY2VzcyIsImZvbnRTaXplIiwiZXJyb3IiLCJmdW5jIiwiVGhlbWVQcm92aWRlciIsImNyZWF0ZVRoZW1lIiwiZGFya0NvbG9yIiwicm9vdCIsImRvY3VtZW50RWxlbWVudCIsImdldENvbXB1dGVkU3R5bGUiLCJnZXRQcm9wZXJ0eVZhbHVlIiwidGhlbWUiLCJwYWxldHRlIiwicHJpbWFyeSIsIm1haW4iLCJzZWNvbmRhcnkiLCJ0eXBvZ3JhcGh5IiwiYm9keTEiLCJmb250V2VpZ2h0IiwiaDUiLCJtYXJnaW5Cb3R0b20iLCJoNiIsImNvbXBvbmVudHMiLCJNdWlGb3JtSGVscGVyVGV4dCIsInN0eWxlT3ZlcnJpZGVzIiwiTXVpQnV0dG9uIiwibGluZUhlaWdodCIsIk11aVRhYiIsImNvbG9yIiwiTXVpVGFicyIsImluZGljYXRvciIsIkN1c3RvbVRoZW1lIiwibm9kZSIsImlzUmVxdWlyZWQiLCJDaGVja2JveCIsIkZvcm1Db250cm9sIiwiRm9ybUNvbnRyb2xMYWJlbCIsIkZvcm1Hcm91cCIsIkZvcm1IZWxwZXJUZXh0IiwiRm9ybUxhYmVsIiwiZ2V0TGFiZWwiLCJ0b1NsdWciLCJDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkIiwiX3F1ZXN0aW9uJHZhbHVlcyIsInF1ZXN0aW9uIiwicXVlc3Rpb25DbGFzc05hbWUiLCJpc0Rpc2FibGVkIiwib25DaGFuZ2UiLCJzZXRGaWVsZFZhbHVlIiwiaGVscGVyVGV4dCIsInJlc3QiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJxdWVzdGlvblNsdWciLCJxdWVzdGlvbkxhYmVsIiwibWFuZGF0b3J5IiwicXVlc3Rpb25NYXhWYWx1ZXMiLCJtYXhfc2VsZWN0ZWRfdmFsdWVzIiwicXVlc3Rpb25PcHRpb25zIiwidmFsdWVzIiwidmFsIiwibGFiZWwiLCJ0b1N0cmluZyIsImhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSIsImNoZWNrZWQiLCJjdXJyZW50QW5zIiwibWF4U2VsZWN0aW9uUmVhY2hlZCIsIm5ld1ZhbHVlIiwidiIsImRpc2FibGVkIiwicmVxdWlyZWQiLCJmdWxsV2lkdGgiLCJtYXJnaW4iLCJvcCIsImNvbnRyb2wiLCJpbmNsdWRlcyIsImV2IiwidGFyZ2V0Iiwib2JqZWN0IiwiYXJyYXkiLCJSYXdIVE1MIiwiQ2hlY2tib3hRdWVzdGlvbkZpZWxkIiwiYWxpZ25JdGVtcyIsIm1hcmdpblRvcCIsIklucHV0TGFiZWwiLCJNZW51SXRlbSIsIlNlbGVjdCIsIkRyb3Bkb3duUXVlc3Rpb25GaWVsZCIsImxhYmVsSWQiLCJSYWRpbyIsIlJhZGlvR3JvdXAiLCJSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIiwiVGV4dEZpZWxkIiwiVGV4dFF1ZXN0aW9uRmllbGQiLCJRdWVzdGlvblR5cGVfQ2hlY2tib3giLCJRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0IiwiUXVlc3Rpb25UeXBlX0NvbWJvQm94IiwiUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCIsIlF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3QiLCJjaGVja1J1bGUiLCJydWxlIiwiYW5zd2VyX3ZhbHVlcyIsIkFycmF5IiwiaXNBcnJheSIsImFuc3dlcl92YWx1ZXNfb3BlcmF0b3IiLCJjaGVja1Zpc2liaWxpdHkiLCJydWxlUmVzdWx0IiwidmlzaWJpbGl0eSIsInZpc2liaWxpdHlfY29uZGl0aW9uIiwicXVlc3Rpb25JZCIsInRleHRMQyIsInRvTG93ZXJDYXNlIiwicmVwbGFjZSIsInEiLCJfcSRsYWJlbCIsImlzQW5zd2VyZWQiLCJhbnN3ZXIiLCJjaGVja0lmVmFsdWVNYXRjaCIsImNvbXBhcmVWYWwiLCJhbnN3ZXJBcnJheSIsInNvbWUiLCJnZXRUeXBlSW5pdGlhbFZhbHVlIiwidHlwZSIsImdldFR5cGVWYWx1ZSIsImFucyIsInNwbGl0IiwidHJhbnNmb3JtQW53ZXJzRm9ybWF0IiwiZGlzY2xhaW1lcl9hY2NlcHRlZCIsImV4dHJhX3F1ZXN0aW9ucyIsImZvcm1hdHRlZEVRIiwicXVlc3Rpb25faWQiLCJwYXJzZUludCIsInBvcCIsIlF1ZXN0aW9uVHlwZV9UZXh0IiwiUXVlc3Rpb25UeXBlX1RleHRBcmVhIiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uIiwiZ2V0UXVlc3Rpb25GaWVsZENvbXBvbmVudCIsInF1ZXN0aW9uVHlwZSIsIkZyYWdtZW50IiwiRXh0cmFRdWVzdGlvbnNGaWVsZHMiLCJyZWFkT25seSIsImFsbG93RWRpdCIsImZvcm1payIsInJlbmRlclJ1bGUiLCJpc1Zpc2libGUiLCJyZW5kZXJRdWVzdGlvbiIsInN1Yl9xdWVzdGlvbiIsIl9xJHN1Yl9xdWVzdGlvbl9ydWxlcyIsIlF1ZXN0aW9uRmllbGRDb21wb25lbnQiLCJmb3JtaWtQcm9wcyIsImhhbmRsZUNoYW5nZSIsIm9uQmx1ciIsImhhbmRsZUJsdXIiLCJ0b3VjaGVkIiwiQm9vbGVhbiIsInN1Yl9xdWVzdGlvbl9ydWxlcyIsInVzZVNlbGVjdG9yIiwic2hhbGxvd0VxdWFsIiwiQm94IiwiQ2FyZEhlYWRlciIsIkljb25CdXR0b24iLCJDb2xsYXBzZSIsIkNhcmRDb250ZW50IiwiRXhwYW5kTW9yZUljb24iLCJBc3NpZ25lZEZpbHRlciIsIm9uRmlsdGVyIiwiZmlsdGVyVmFsdWVzIiwic3RhdGUiLCJpc0V4cGFuZGVkIiwic2V0SXNFeHBhbmRlZCIsImFzc2lnbmVkVmFsdWVzIiwiaGFuZGxlRmlsdGVyQ2hhbmdlIiwibmV3RmlsdGVyIiwidGl0bGVXcmFwcGVyIiwiYWN0aW9uIiwiZGlzYWJsZVJpcHBsZSIsInRyYW5zZm9ybSIsInRyYW5zaXRpb24iLCJpbiIsInRpbWVvdXQiLCJ1bm1vdW50T25FeGl0IiwicHkiLCJwYiIsImFzc2lnbmVkIiwidXNlRWZmZWN0IiwiQmFkZ2VGZWF0dXJlRmlsdGVyIiwiYmFkZ2VfZmVhdHVyZXNfdHlwZXMiLCJuZXdGaWx0ZXJzIiwiZiIsImJmIiwidXNlUmVmIiwiU3RhY2siLCJGaWx0ZXJMaXN0SWNvbiIsIkJhZGdlIiwiQ2FyZCIsIkRpdmlkZXIiLCJQYXBlciIsImNvbm5lY3QiLCJUaWNrZXRUeXBlRmlsdGVyIiwiU3RhdHVzRmlsdGVyIiwiRnJlZVBhaWRGaWx0ZXIiLCJQcm9tb0NvZGVGaWx0ZXIiLCJGaWx0ZXIiLCJvblJlc2V0IiwiYWN0aXZlRmlsdGVyc0NvdW50Iiwic2hvd0ZpbHRlckxpc3QiLCJzZXRTaG93RmlsdGVyTGlzdCIsInNob3dEYXRlcGlja2VyIiwic2V0U2hvd0RhdGVwaWNrZXIiLCJmaWx0ZXJSZWYiLCJoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUiLCJldmVudCIsImN1cnJlbnQiLCJjb250YWlucyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidG9nZ2xlIiwiaGFuZGxlRmlsdGVyUmVzZXQiLCJmaWx0ZXJDb250YWluZXIiLCJyZWYiLCJwdCIsImJhZGdlQ29udGVudCIsIm1yIiwiZmlsdGVySWNvbiIsImZpbHRlckxhYmVsIiwiZmlsdGVyTGlzdENvbnRhaW5lciIsImNvbnRhaW5lciIsImVsZXZhdGlvbiIsImZpbHRlckNoZWNrYm94Q29udGFpbmVyIiwiY2xlYW5CdXR0b24iLCJtYXBTdGF0ZVRvUHJvcHMiLCJwcm9tb0NvZGUiLCJzZXRQcm9tb0NvZGUiLCJkZWJvdW5jZVRpbWVyIiwiREVCT1VOQ0VfVkFMVUUiLCJuZXdQcm9tb0NvZGUiLCJjbGVhclRpbWVvdXQiLCJwbGFjZWhvbGRlciIsInN0eWxlZCIsIlNlYXJjaEljb24iLCJDbG9zZUljb24iLCJJbnB1dEJhc2UiLCJTZWFyY2hDb250YWluZXIiLCJwb3NpdGlvbiIsIm1hcmdpblJpZ2h0IiwibWFyZ2luTGVmdCIsImRpc3BsYXkiLCJTZWFyY2hJY29uV3JhcHBlciIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiU3R5bGVkSW5wdXRCYXNlIiwiYm9yZGVyQm90dG9tIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiLCJDbG9zZUljb25XcmFwcGVyIiwicGFkZGluZyIsInRvcCIsInJpZ2h0IiwiY3Vyc29yIiwiekluZGV4IiwiU2VhcmNoIiwib25TZWFyY2giLCJzZWFyY2hWYWx1ZSIsInNldFNlYXJjaFZhbHVlIiwic2hvd0Nsb3NlQnRuIiwib25LZXlEb3duIiwibmF0aXZlRXZlbnQiLCJyZXNldFNlYXJjaCIsImlucHV0UHJvcHMiLCJJbXBvcnRFeHBvcnRJY29uIiwiU29ydCIsIm9uU29ydCIsInNob3dTb3J0Iiwic2V0U2hvd1NvcnQiLCJzb3J0UmVmIiwiaGFuZGxlU29ydENsaWNrT3V0c2lkZSIsInNvcnRDb250YWluZXIiLCJzb3J0SWNvbiIsInNvcnRMYWJlbCIsInNvcnRMaXN0Q29udGFpbmVyIiwidGlja2V0X3R5cGVzIiwiR3JpZCIsIkZpbHRlcnMiLCJqdXN0aWZ5IiwiaXRlbSIsInhzIiwiZ2FwIiwiZmlsdGVyU29ydENvbnRhaW5lciIsIkZvcm1Gb290ZXIiLCJzYXZlTGFiZWwiLCJjYW5jZWxMYWJlbCIsImZvb3RlciIsImNhbmNlbEJ0biIsInNpemUiLCJzYXZlQnRuIiwiRXJyb3JMYWJlbCIsImRhdGFUZXN0SWQiLCJlcnJvckxhYmVsIiwiQmFja2Ryb3AiLCJDaXJjdWxhclByb2dyZXNzIiwiTG9hZGVyIiwiZHJhd2VyIiwiSW5maW5pdGVTY3JvbGwiLCJPcmRlcnNMaXN0IiwiT05FX1BBR0VfTkVYVCIsIk15T3JkZXJzVGlja2V0cyIsImZldGNoRGF0YSIsIm1lbWJlck9yZGVycyIsIm9yZGVyc19jdXJyZW50X3BhZ2UiLCJvcmRlcnNfbGFzdF9wYWdlIiwibXlPcmRlcnNXcmFwcGVyIiwiZGF0YUxlbmd0aCIsIm5leHQiLCJoYXNNb3JlIiwic2Nyb2xsVGhyZXNob2xkIiwiVGlja2V0c0ljb24iLCJ2aWV3Qm94IiwiZmlsbCIsInhtbG5zIiwiZCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZURhc2hhcnJheSIsIl9GcmFnbWVudCIsIk5vVGlja2V0c0ZvdW5kIiwicGFnZVZpZXciLCJsb2FkaW5nIiwiZ2V0Q29udGVudCIsIm1haWx0b1RhZyIsInN1cHBvcnRfZW1haWwiLCJidXR0b25MYWJlbCIsImljb25XcmFwcGVyIiwiY2FsY3VsYXRlT3JkZXJUb3RhbHMiLCJmb3JtYXRDdXJyZW5jeSIsIk9yZGVyU3VtbWFyeVRhYmxlIiwiZGlzY291bnRUb3RhbCIsInJlZnVuZFRvdGFsIiwidGF4ZXNUb3RhbCIsImFtb3VudFRvdGFsIiwidGlja2V0U3VtbWFyeSIsImh1bmRyZWQiLCJvcmRlclN1bW1hcnlUYWJsZSIsInRpY2tldFRvdGFsIiwicXR5IiwidGlja2V0X3R5cGUiLCJjb3N0IiwiYWxpZ24iLCJjdXJyZW5jeSIsImNyZWF0ZWQiLCJkaXNjb3VudF9hbW91bnQiLCJ0YXhlc19hbW91bnQiLCJzaGFwZSIsInVzZU5vdyIsInRpY2tldHNSZWZ1bmRhYmxlIiwidXNlU3VtbWl0RGV0YWlscyIsIlJlZnVuZEVtYWlsU3VwcG9ydCIsInN1Ym1pdFJlcXVlc3QiLCJvblJlZnVuZENsaWNrIiwib25SZWZ1bmREZXRhaWxDbGljayIsImlzU3RhcnRlZCIsIm5vdyIsImlzSW5SZWZ1bmRhYmxlUGVyaW9kIiwicmVnaXN0cmF0aW9uX2FsbG93ZWRfcmVmdW5kX3JlcXVlc3RfdGlsbF9kYXRlIiwiYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQiLCJpc1JlZnVuZGFibGUiLCJoYXNSZWZ1bmRSZXF1ZXN0cyIsInJvbGUiLCJvcmRlclN1bW1hcnlCdXR0b24iLCJyZWZ1bmREaXNhYmxlZCIsInJlbCIsImFycmF5T2YiLCJPcmRlclN1bW1hcnkiLCJvcmRlclN1bW1hcnlXcmFwcGVyIiwicHgiLCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvIiwibWVtYmVyVGlja2V0cyIsIk9yZGVyTGlzdFRpY2tldHMiLCJBc3NpZ25Ub01lIiwidXNlclRpY2tldHMiLCJ1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlIiwidXNlcl90aWNrZXRzX2xhc3RfcGFnZSIsIm9yZGVyVGlja2V0Q29udGFpbmVyIiwiYXNzaWduZWRUb01lV3JhcHBlciIsInRpY2tldExpc3RDb250YWluZXIiLCJpc1JlZnVuZE1vZGFsIiwiaXNTZWxlY3RlZFRvUmVmdW5kIiwic2VsZWN0VG9SZWZ1bmQiLCJpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQiLCJBc3NpZ25lZFRvIiwiRXh0ZXJuYWxBc3NpZ25lZFRvIiwiTWFuYWdlRm9yIiwiQXR0ZW5kZWVTdGF0dXMiLCJfdGlja2V0JG93bmVyIiwiX3RpY2tldCRvd25lcjIiLCJfdGlja2V0JG93bmVyMyIsImlzVW5hc3NpZ25lZCIsImlzX2FjdGl2ZSIsImlzRGVsZWdhdGVkIiwidGlja2V0T3duZXJFbWFpbCIsIl90aWNrZXQkb3JkZXIiLCJfdGlja2V0JG9yZGVyMiIsIl90aWNrZXQkb3duZXI0IiwiX3RpY2tldCRvd25lcjUiLCJhc3NpZ25lZEJ5VGV4dCIsIm93bmVyX2ZpcnN0X25hbWUiLCJvd25lcl9sYXN0X25hbWUiLCJQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQiLCJPcmRlckxpc3RJdGVtIiwiX29yZGVyJG1lbWJlclRpY2tldHMiLCJfb3JkZXIkbWVtYmVyVGlja2V0czIiLCJvblBhZ2luYXRlQ2xpY2siLCJ0aWNrZXRzVG9SZWZ1bmQiLCJpdGVtc1RvRGlzcGxheSIsInNldEl0ZW1zVG9EaXNwbGF5Iiwic2xpY2VkVGlja2V0cyIsInNsaWNlIiwib25WaWV3TW9yZSIsInRpY2tldHNfdG90YWwiLCJvblZpZXdMZXNzIiwiZmluZCIsInZpZXdNb3JlQnV0dG9uIiwidXNlRGlzcGF0Y2giLCJUaWNrZXRTdGF0dXMiLCJnZXRTdW1taXRSZWFzc2lnbkRhdGUiLCJUaWNrZXREZXRhaWwiLCJ1c2VUaWNrZXREZXRhaWxzIiwiVGlja2V0QXNzaWduIiwibW9kYWxWaWV3cyIsImRldGFpbCIsInJlYXNzaWduIiwiYXNzaWduIiwiVGlja2V0Q1RBcyIsImlzSW5jb21wbGV0ZSIsImlzUmVhc3NpZ25hYmxlIiwib25PcGVuQ2xpY2siLCJhc3NpZ25UaWNrZXRCdXR0b24iLCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uIiwicmVhc3NpZ25CdXR0b24iLCJfdGlja2V0JHRpY2tldF90eXBlIiwiX3RpY2tldCRiYWRnZSIsImNhblJlYXNzaWduIiwibW9kYWxPcGVuIiwic2V0TW9kYWxPcGVuIiwicmVhc3NpZ25EYXRlIiwib25SZWFzc2lnbmFibGVQZXJpb2QiLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlT3Blbk1vZGFsIiwidmlldyIsIm9yZGVyV3JhcHBlciIsInJlZnVuZE1vZGFsIiwiZGlzYWJsZWRSZWZ1bmQiLCJzZWxlY3RlZCIsImNoZWNrYm94IiwicGwiLCJ0aWNrZXRUaWNrZXRUeXBlIiwiYmFkZ2VGZWF0dXJlV3JhcHBlciIsInByIiwiYmFkZ2UiLCJmZWF0dXJlcyIsImJhZGdlRmVhdHVyZSIsInNyYyIsImltYWdlIiwiYWx0IiwidGlja2V0Tm8iLCJ0aWNrZXRGb290ZXIiLCJ0aWNrZXRBY3Rpb25CdXR0b25zIiwib3duZXJJZCIsInRvdGFsX3JlZnVuZGVkX2Ftb3VudCIsIlRhYnMiLCJUYWIiLCJSZWZ1bmRSZXF1ZXN0c01vZGFsIiwiUmVmdW5kRGV0YWlscyIsIlRhYlBhbmVsIiwicHJvcHMiLCJpbmRleCIsImhpZGRlbiIsIk9yZGVyc0xpc3REZXNrdG9wTW9iaWxlIiwiaXNNb2JpbGUiLCJkZXRhaWxzUmVxdWlyZWQiLCJzZXRWYWx1ZSIsIl8iLCJzZXRUaWNrZXRzVG9SZWZ1bmQiLCJzZXRTdWJtaXRSZXF1ZXN0IiwicmVmdW5kRGV0YWlsc09wZW4iLCJzZXRSZWZ1bmREZXRhaWxzT3BlbiIsInVuc2VsZWN0UmVmdW5kVGlja2V0cyIsImZpbHRlclNlbGVjdGVkIiwic2VsZWN0ZWRUaWNrZXQiLCJjbG9zZVN1Ym1pdFJlcXVlc3QiLCJyZXNldEFsbFJlZnVuZFN0YXR1c2VzIiwibW9yZURldGFpbHMiLCJib3JkZXJDb2xvciIsInRhYkJ1dHRvbnMiLCJvblJlZnVuZFN1Y2Nlc3NDbG9zZSIsIm9uQ2xvc2VTbGlkZXIiLCJtZCIsInVzZVRoZW1lIiwidXNlTWVkaWFRdWVyeSIsImdldEZvcm1hdHRlZERhdGUiLCJ0aWNrZXRfcGVyX3BhZ2UiLCJicmVha3BvaW50cyIsImRvd24iLCJpc01vYmlsZVZpZXdhYmxlIiwic2V0TW9iaWxlVmlld2FibGUiLCJ0aWNrZXRzX3BhZ2VfY3VycmVudCIsImxnIiwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyIiwib3JkZXJUaWNrZXRJbmZvIiwicm93U3BhY2luZyIsImNvbHVtblNwYWNpbmciLCJzbSIsImRpc3BsYXlfbm9uZSIsImZsZXhEaXJlY3Rpb24iLCJ1c2VNZW1vIiwiUmlnaHREcmF3ZXIiLCJSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQiLCJnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIiwicmVxdWVzdGVkVGlja2V0cyIsImNsb3NlU2xpZGVyIiwicmVmdW5kRGV0YWlscyIsInRvb2x0aXBDbGFzc2VzIiwiSW5mb0ljb24iLCJtb21lbnQiLCJSZWZ1bmRTdGF0dXMiLCJHUklEXzgiLCJHUklEXzEyIiwiUEFERElOR18yIiwiYXBwcm92ZWRSZWZ1bmRzIiwicmVmdW5kIiwicmVmdW5kZWRUYXhlc1N1bW1hdG9yeSIsInJlZnVuZGVkX3RheGVzIiwicnQiLCJ0YXhJZCIsInRheCIsInRvdGFsUmVmdW5kZWRUYXhBbW91bnQiLCJyZWZ1bmRlZF9hbW91bnQiLCJIdG1sVG9vbHRpcCIsImNsYXNzZXMiLCJwb3BwZXIiLCJtYXhXaWR0aCIsImJvcmRlciIsInJlZnVuZFRpY2tldEJveENvbnRhaW5lciIsInJlZnVuZERldGFpbCIsInJlZnVuZFRpY2tldEF0dGVuZGVlIiwiYWN0aW9uX2RhdGUiLCJmb3JtYXQiLCJDaGlwIiwiZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IiLCJzdGF0dXNDb2xvciIsImJ1dHRvblBpbGwiLCJTdHlsZWRFbmdpbmVQcm92aWRlciIsIlNURVBfT05FIiwiU1RFUF9USFJFRSIsIlNURVBfVFdPIiwic3RlcCIsInNldFN0ZXAiLCJlcnJvck1zZyIsInNldEVycm9yTXNnIiwicmVmdW5kU3VjY2VzcyIsInNldFJlZnVuZFN1Y2Nlc3MiLCJjb25maXJtUmVmdW5kIiwiZ29CYWNrVG9SZWZ1bmQiLCJyZWZ1bmRUaWNrZXRzIiwicmVmdW5kU3RlcE9uZSIsInN1YnRpdGxlIiwidGlja2V0TGlzdCIsImFjdGlvbkJ1dHRvbnMiLCJjYW5jZWxCdXR0b24iLCJjb250aW51ZUJ1dHRvbiIsInJlZnVuZFN0ZXBUd28iLCJyZWZ1bmRFcnJvck1zZyIsIkNUQUJ1dHRvbldyYXBwZXIiLCJyZWZ1bmRTdGVwVGhyZWUiLCJyZWZ1bmRTdWNjZXNzZnVsIiwic3VjY2Vzc01zZyIsInN1Y2Nlc3NNc2cyIiwicmVuZGVyU3RlcHMiLCJpbmplY3RGaXJzdCIsIkRyYXdlciIsIkNsb3NlIiwiaGVhZGVyQ2hpbGRyZW4iLCJhbmNob3IiLCJNb2RhbFByb3BzIiwia2VlcE1vdW50ZWQiLCJoZWFkZXIiLCJjbG9zZUJ0biIsImZsb2F0IiwiZ3V0dGVyQm90dG9tIiwib25lT2ZUeXBlIiwiZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSIsIlN1bW1pdEhlYWRlciIsIndpZGdldEhlYWRlciIsInN1bW1pdFRpdGxlRGF0ZSIsIlRhYldyYXBwZXIiLCJ0YWIiLCJzZXRUYWIiLCJoYXNUaWNrZXRzIiwiaXNGaWx0ZXJlZCIsImNsZWFyRmlsdGVycyIsImdldFBhZ2VWaWV3IiwiZ2V0T25DbGljayIsInRhYlRvTGluayIsIkxpbmsiLCJSZWFzc2lnbkZvcm0iLCJEZWxlZ2F0ZUZvcm0iLCJBc3NpZ25PcHRpb25zIiwiYXNzaWduT3B0aW9uIiwic2V0QXNzaWduT3B0aW9uIiwib25Bc3NpZ24iLCJvbkRlbGVnYXRlIiwib25VbkFzc2lnbiIsIm9wZW5Db25maXJtVW5hc3NpZ24iLCJzZXRPcGVuQ29uZmlybVVuYXNzaWduIiwiaXNBc3NpZ25lZFRvTWUiLCJhbGxvd3NEZWxlZ2F0ZSIsImhhbmRsZVVuQXNzaWduIiwibXkiLCJvblN1Ym1pdCIsIm5ld19hdHRlbmRlZV9lbWFpbCIsInBlcnNvbmFsX21lc3NhZ2UiLCJkZWxlZ2F0ZV9maXJzdF9uYW1lIiwiZGVsZWdhdGVfbGFzdF9uYW1lIiwiZGVsZWdhdGVfZW1haWwiLCJ1bmFzc2lnbldyYXBwZXIiLCJjb21wb25lbnQiLCJ0ZXh0RGVjb3JhdGlvbiIsInRleHREZWNvcmF0aW9uQ29sb3IiLCJ1c2VGb3JtaWsiLCJ5dXAiLCJpbml0aWFsVmFsdWVzIiwidmFsaWRhdGlvblNjaGVtYSIsInJlc2V0Rm9ybSIsImhhbmRsZUNhbmNlbCIsImhhbmRsZVN1Ym1pdCIsIm5vVmFsaWRhdGUiLCJpc1N1Ym1pdHRpbmciLCJBc3NpZ25IZWFkZXIiLCJpblByb2dyZXNzIiwidXNlckVtYWlsIiwiYXNzaWduZWRUb1lvdSIsImdldFNlY29uZGFyeVRpdGxlIiwiZ2V0SGVhZGVyTm90ZSIsInRyYW5zS2V5IiwicHVyY2hhc2VkQnlXcmFwcGVyIiwicHVyY2hhc2VkQnkiLCJvd25lcl9lbWFpbCIsIm9yZGVyTm8iLCJoZWFkZXJOb3RlIiwiUmVhc3NpZ25IZWFkZXIiLCJtdWx0aWxpbmUiLCJtaW5Sb3dzIiwidXNlQ29udGV4dCIsIlRpY2tldEZvcm0iLCJ1c2VHZXRUaWNrZXQiLCJUSUNLRVRfRFJBV0VSX0lEIiwic3VjY2Vzc01lc3NhZ2UiLCJlcnJvck1lc3NhZ2UiLCJhc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MiLCJpc1VzZXJPcmRlck93bmVyIiwib3duZXJfaWQiLCJpc1VzZXJUaWNrZXRPd25lciIsImNhbkVkaXRUaWNrZXREYXRhIiwiYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucyIsIm9uQ2xvc2VFUUZvcm0iLCJvblNhdmVFUSIsInJlc29sdmUiLCJIZWFkZXIiLCJ0aWNrZXRSZWFzc2lnbkNvbnRhaW5lciIsImNhbkVkaXQiLCJBdXRvY29tcGxldGUiLCJxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyIsIkNvbXBhbnlGaWVsZCIsInN1bW1pdElkIiwiaW5wdXRWYWx1ZSIsInNldElucHV0VmFsdWUiLCJvcHRpb25zIiwic2V0T3B0aW9ucyIsInNldEZpZWxkVG91Y2hlZCIsInJlc3VsdHMiLCJuZXdPcHRpb25zIiwiYXV0b0NvbXBsZXRlIiwiZnJlZVNvbG8iLCJpbmNsdWRlSW5wdXRJbkxpc3QiLCJmaWx0ZXJTZWxlY3RlZE9wdGlvbnMiLCJnZXRPcHRpb25MYWJlbCIsIm9wdGlvbiIsInRtcFZhbHVlIiwib25JbnB1dENoYW5nZSIsIm5ld0lucHV0VmFsdWUiLCJmaWx0ZXJPcHRpb25zIiwiZmlsdGVyZWQiLCJpc0V4aXN0aW5nIiwicmVuZGVySW5wdXQiLCJyZW5kZXJPcHRpb24iLCJvcHRpb25Qcm9wcyIsIlJlZ2lzdHJhdGlvbkRpc2NsYWltZXIiLCJkaXNjbGFpbWVyIiwiUVJDb2RlIiwiRW1haWxPdXRsaW5lZCIsIkVtYWlsSWNvbiIsIkZpbGVEb3dubG9hZE91dGxpbmVkIiwiRG93bmxvYWRJY29uIiwiVFdPX0lURU0iLCJUaWNrZXREZXRhaWxIZWFkZXIiLCJpc1ZpcnR1YWxTdW1taXQiLCJpc0NvbXBsZXRlIiwic2VudENvbmZpcm1hdGlvbiIsInNldFNlbnRDb25maXJtYXRpb24iLCJkb3dubG9hZFRpY2tldFBkZiIsIm9uU2VuZEVtYWlsIiwicXJDb2RlIiwicXJfY29kZSIsInFyTm90ZSIsImFjdGlvbkJ1dHRvbnNDb250YWluZXIiLCJkb3dubG9hZEJ0biIsInNlbmRCdG4iLCJzZW50Iiwib3JkZXJOdW1iZXIiLCJUaWNrZXRPd25lckZpZWxkcyIsInVzZVNjcm9sbFRvRXJyb3IiLCJwYXJzZUFuc3dlcnMiLCJidWlsZFZhbGlkYXRpb25TY2hlbWEiLCJyZWR1Y2UiLCJyZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnkiLCJyZWxldmFudEFuc3dlcnMiLCJlbmFibGVSZWluaXRpYWxpemUiLCJhZGRpdGlvbmFsRGV0YWlscyIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnQiLCJpbmZvTm90ZSIsIm9uU2F2ZSIsInRpY2tldERldGFpbENvbnRhaW5lciIsImlzX3ZpcnR1YWwiLCJhdHRlbmRlZUNvbnRhaW5lciIsImF0dGVuZGVlSW5mb1RpdGxlIiwiQ29udGFpbmVyIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzIiwiaXNBY3RpdmUiLCJyZWZ1bmRSZXF1ZXN0cyIsInRpY2tldFN0YXR1c0NvbnRhaW5lciIsImJ1dHRvblJlZnVuZFJlcXVlc3RlZCIsImJ1dHRvbkluY29tcGxldGUiLCJidXR0b25VbmFzc2lnbmVkIiwiYnV0dG9uQ29tcGxldGUiLCJidXR0b25DYW5jZWxsZWQiLCJBc3NpZ25lZFRvTWUiLCJXaWRnZXRUYWJzIiwidGlja2V0c0Z1bGx5TG9hZGVkIiwic2V0VGlja2V0c0Z1bGx5TG9hZGVkIiwib3JkZXJzX3Blcl9wYWdlIiwib3JkZXJzUGVyUGFnZSIsInRpY2tldFBlclBhZ2UiLCJoYW5kbGVUYWJDaGFuZ2UiLCJuZXdUYWIiLCJmZXRjaEFzc2lnbmVkVGlja2V0cyIsImZldGNoT3JkZXJUaWNrZXRzIiwib3JkZXJUaWNrZXRzUHJvbWlzZXMiLCJjdXJyZW50X3BhZ2UiLCJmZXRjaFByb21pc2VzIiwidGFiV3JhcHBlciIsIldpZGdldFdyYXBwZXIiLCJtc2dEYXRhIiwic2V0TXNnRGF0YSIsIm1lc3NhZ2VDb250ZXh0IiwiZmlsdGVyVmFsdWUiLCJzb3J0VmFsdWUiLCJ0aWNrZXRzVGl0bGVUZXh0IiwiUHJvdmlkZXIiLCJydW4iLCJjdXJyZW50VGlja2V0Iiwic21vb3RoU2Nyb2xsVG8iLCJ0YXJnZXRTY3JvbGxUb3AiLCJkdXJhdGlvbiIsInN0YXJ0U2Nyb2xsVG9wIiwic2Nyb2xsVG9wIiwiZGlzdGFuY2UiLCJzdGFydFRpbWUiLCJhbmltYXRpb25TdGVwIiwidGltZXN0YW1wIiwiZWxhcHNlZCIsInByb2dyZXNzIiwiTWF0aCIsIm1pbiIsImVhc2VJbk91dFF1YWQiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJpc1ZhbGlkIiwiZXJyb3JBcnJheSIsImVycm9yQ291bnQiLCJlbGVtZW50c1NvcnRlZCIsInJlc3VsdCIsImVsZW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwiZWxSZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiYSIsImIiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lclJlY3QiLCJlbGVtT2ZmZXN0IiwiYW5pbWF0aW9uRHVyYXRpb24iLCJpc1RpY2tldFJlZnVuZGFibGUiLCJTVEFUVVNfQ09NUExFVEUiLCJTVEFUVVNfSU5DT01QTEVURSIsIlNUQVRVU19DQU5DRUxMRUQiLCJTVEFUVVNfVU5BU1NJR05FRCIsIl90aWNrZXQkcHJvbW9fY29kZSIsIl90aWNrZXQkdGlja2V0X3R5cGUyIiwiX3RpY2tldCRwcm9tb19jb2RlMiIsImdldFN0YXR1cyIsImFsbG93c190b19kZWxlZ2F0ZSIsInByb21vX2NvZGUiLCJhbGxvd3NfdG9fcmVhc3NpZ24iLCJpbml0UmVhY3RJMThuZXh0IiwiTGFuZ3VhZ2VEZXRlY3RvciIsImVuIiwiZXMiLCJ1c2UiLCJpbml0IiwiZmFsbGJhY2tMbmciLCJkZWJ1ZyIsInJlc291cmNlcyIsInRyYW5zbGF0aW9uIiwiaW50ZXJwb2xhdGlvbiIsImVzY2FwZVZhbHVlIiwiTE9HT1VUX1VTRVIiLCJTVEFSVF9MT0FESU5HIiwiU1RPUF9MT0FESU5HIiwiUkVTRVRfTE9BRElORyIsImNhbGN1bGF0ZUFjdGl2ZUZpbHRlcnMiLCJoYXNMb2FkZWRBbGxEYXRhIiwidXBkYXRlVGlja2V0Q29sbGVjdGlvbiIsIkRFRkFVTFRfRklMVEVSX1NUQVRFIiwiREVGQVVMVF9TVEFURSIsIndpZGdldExvYWRpbmciLCJjdXJyZW50X3RhYiIsIm9yZGVyc190b3RhbCIsInRpY2tldF9jdXJyZW50X3BhZ2UiLCJ0aWNrZXRfbGFzdF9wYWdlIiwidGlja2V0X3RvdGFsIiwidXNlcl90aWNrZXRzX3RvdGFsIiwiYXBpRXJyb3IiLCJXaWRnZXRSZWR1Y2VyIiwibmV3QWN0aXZlQ291bnQiLCJ0b3RhbCIsImxhc3RfcGFnZSIsImZvcm1lck9yZGVyIiwibyIsIl9kYXRhJCIsIm5ld09yZGVycyIsIm1vIiwiX2RhdGEkMiIsIm5ld1RpY2tldHMiLCJ0aWNrZXRzX3BhZ2VfbGFzdCIsIl90aWNrZXRzUmVmdW5kUmVxdWVzdCIsInVwZGF0ZWRUaWNrZXRzIiwidHJyIiwidXBkYXRlZE9yZGVyIiwidGlja2V0RGF0YSIsIm5ld1VzZXJUaWNrZXRzIiwiY29uZmlndXJlU3RvcmUiLCJwZXJzaXN0U3RvcmUiLCJwZXJzaXN0UmVkdWNlciIsIkZMVVNIIiwiUkVIWURSQVRFIiwiUEFVU0UiLCJQRVJTSVNUIiwiUFVSR0UiLCJSRUdJU1RFUiIsInN0b3JhZ2UiLCJjb21iaW5lUmVkdWNlcnMiLCJnZXRTdG9yZSIsImNsaWVudElkIiwibG9naW5VcmwiLCJyZWR1Y2VycyIsInN0b3JlIiwicmVkdWNlciIsIm1pZGRsZXdhcmUiLCJnZXREZWZhdWx0TWlkZGxld2FyZSIsInRodW5rIiwiZXh0cmFBcmd1bWVudCIsImltbXV0YWJsZUNoZWNrIiwic2VyaWFsaXphYmxlQ2hlY2siLCJpZ25vcmVkQWN0aW9ucyIsInVzZUluaXRTdG9yZSIsImNvbmZpZyIsInBlcnNpc3RvciIsImluaXRMb2dPdXQiLCJnZXRBY2Nlc3NUb2tlbiIsIlNlbnRyeSIsImdldEFjY2Vzc1Rva2VuTW9jayIsIkVycm9yIiwiY2FwdHVyZUV4Y2VwdGlvbiIsIkxBU1RfSE9VUl9PRl8yNF9IT1VSIiwiTEFTVF9NSU5VVEVfT0ZfSE9VUiIsIk9ORV9EQVkiLCJNSU5fUkVRVUlSRUQiLCJTVEFUVVNfUEVORElORyIsIlNUQVRVU19FUlJPUiIsIlNUQVRVU19QUk9DRVNTSU5HIiwiU1RBVFVTX1JFRlVORF9QRU5ESU5HIiwiU1RBVFVTX1JFRlVORF9BUFBST1ZFRCIsIlNUQVRVU19SRUZVTkRfUkVKRUNURUQiLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMiLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQyIsIkpFU1RfVElNRU9VVF9JTl9NSUxMSVNFQyIsIk9ORV9JVEVNIiwiRklWRV9JVEVNIiwiU0lYX0lURU0iLCJsb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1pbmltdW1GcmFjdGlvbkRpZ2l0cyIsIm1heGltdW1GcmFjdGlvbkRpZ2l0cyIsImZvcm1hdHRlciIsIkludGwiLCJOdW1iZXJGb3JtYXQiLCJkYXRldGltZSIsInRpbWVab25lIiwidHoiLCJ1bml4IiwiYW1vdW50IiwicHVyY2hhc2VUaWNrZXRUb3RhbCIsImN1cnJlbmN5T2JqZWN0IiwidGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlIiwidGlja2V0VHlwZSIsInR0IiwidGlja2V0X3R5cGVfaWQiLCJwdXJjaGFzZVRvdGFsIiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZ2V0T3JkZXJUaWNrZXRzIiwiX29yZGVycyQiLCJvcmRlcnMiLCJnZXRFcG9jaExvd2VyVXBwZXJJblNlY29uZHMiLCJ0cyIsInNldEhvdXJzIiwiZGVmYXVsdEN1cnJlbnRUaW1lIiwicm91bmQiLCJEYXRlIiwiZ2V0Tm93IiwidGltZXJTdGF0ZSIsIm5vd1V0YyIsImN1cnJlbnRQYWdlIiwiY291bnQiLCJ0cmltIiwiY2hlY2tTdW1taXRQYXN0IiwicmVhc3NpZ25fZGF0ZSIsInJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUiLCJlbmRfZGF0ZSIsImNoZWNrU3VtbWl0U3RhcnRlZCIsInN0YXJ0X2RhdGUiLCJnZXRTdW1taXREYXlzRGlmZiIsInN0YXJ0RGF5IiwidGltZV96b25lX2lkIiwiZW5kRGF5IiwiZGF5cyIsImRpZmYiLCJmb3JtYXRTdGFydERhdGUiLCJmb3JtYXRFbmREYXRlIiwieWVhciIsIm1vbnRoIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImdldFN1bW1pdExvY2F0aW9uIiwiX3N1bW1pdCRsb2NhdGlvbnMiLCJsb2NhdGlvbiIsImxvY2F0aW9ucyIsImwiLCJjbGFzc19uYW1lIiwiaXNfbWFpbiIsImNpdHkiLCJjb3VudHJ5IiwiX3N1bW1pdCR0aW1lX3pvbmUiLCJfc3VtbWl0JHRpbWVfem9uZTIiLCJmb3JtYXR0ZWREYXRlIiwiZm9ybWF0dGVkUmVhc3NpZ25EYXRlIiwidGltZV96b25lIiwiZGF5c1VudGlsUmVhc3NpZ25EZWFkbGluZSIsImlzUGFzdCIsInN0YXR1c0RhdGEiLCJnZXRUaWNrZXRTdGF0dXNLZXkiLCJnZXRUaWNrZXRTdGF0dXNEYXRhIiwiaXNTdW1taXRQYXN0IiwiZ2V0VGlja2V0Um9sZSIsImZlYXR1cmUiLCJnZXRUaWNrZXRUeXBlIiwiZmluYWxfYW1vdW50IiwibmV0X3NlbGxpbmdfY29zdCIsInJyIiwiZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzMiIsImFsbFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNCIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczUiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczYiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM3IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzOCIsImdldFR5cGVWYWxpZGF0aW9uIiwic2NoZW1hIiwib25lT2YiLCJvZiIsInBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIiLCJvbmx5UmVsZXZhbnQiLCJzdWJRdWVzdGlvblNsdWciLCJzdWJBbnN3ZXIiLCJtYXRjaCIsImluY2x1ZGVBdHRlbmRlZUluZm8iLCJpbmNsdWRlRGlzY2xhaW1lciIsImJ1aWxkU3ViUXVlc3Rpb25WYWxpZGF0aW9uU2NoZW1hIiwiX3N1YlF1ZXN0aW9uJHN1Yl9xdWVzIiwic3ViUXVlc3Rpb24iLCJudWxsYWJsZSIsIndoZW4iLCJpcyIsInF1ZXN0aW9uQW5zIiwiYW5zVmFsdWVNYXRjaCIsInNjaCIsInN1YlJ1bGUiLCJkaXNjbGFpbWVyTWFuZGF0b3J5IiwibGF6eSIsInR5cGVFcnJvciIsIl90JG93bmVyIiwiX3Qkb3duZXIyIiwiX3RpY2tldCRvd25lcjYiLCJ0bXBUaWNrZXQiLCJQZXJzaXN0R2F0ZSIsIk15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0Iiwic3VwcG9ydEVtYWlsIiwiaGFuZGxlQmVmb3JlTGlmdCIsIlVSTFNlYXJjaFBhcmFtcyIsInNlYXJjaCIsImZsdXNoIiwiaGFzIiwib25CZWZvcmVMaWZ0Il0sInNvdXJjZVJvb3QiOiIifQ==
|
|
10090
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDaU47Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1JqTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2lzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDN0Jqc0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUM0Zjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkI1ZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzJFOzs7Ozs7Ozs7Ozs7Ozs7O0FDTDNFO0FBQ0E7QUFDQTtBQUN3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNIeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDd0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNKeEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dIOzs7Ozs7Ozs7Ozs7Ozs7QUNOaEg7QUFDQTtBQUMwQzs7Ozs7Ozs7Ozs7Ozs7O0FDRjFDO0FBQ0E7QUFDMEI7Ozs7Ozs7Ozs7Ozs7Ozs7QUNGMUI7QUFDQTtBQUNBO0FBQzRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0g1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUM4WDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbkI5WDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2dNOzs7Ozs7Ozs7Ozs7Ozs7OztBQ1JoTTtBQUNBO0FBQ0E7QUFDQTtBQUNnRTs7Ozs7Ozs7Ozs7Ozs7O0FDSmhFO0FBQ0E7QUFDbUM7Ozs7Ozs7Ozs7O0FDRm5DOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7OztBQ0FBOzs7Ozs7Ozs7O0FDQUE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7VUNBQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOztVQUVBO1VBQ0E7O1VBRUE7VUFDQTtVQUNBOzs7OztXQ3RCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7QUFDTjtBQUNJO0FBQ3VCO0FBQ1Q7QUFDZDtBQUNrQjtBQUVGO0FBQUE7QUFFdkQsTUFBTUUsdUJBQXVCLEdBQUk1aUIsS0FBSyxJQUFLO0VBQ3pDLE1BQU07SUFDSitZLFFBQVE7SUFDUjhKLFlBQVk7SUFDWmx3QyxNQUFNO0lBQ04wRCxVQUFVO0lBQ1Z6RCxJQUFJO0lBQ0prbUMsUUFBUTtJQUNSbitCO0VBQ0YsQ0FBQyxHQUFHcWxCLEtBQUs7RUFFVCxNQUFNO0lBQUVpWixLQUFLO0lBQUVXO0VBQVUsQ0FBQyxHQUFHRixvREFBWSxDQUFDO0lBQ3hDWCxRQUFRO0lBQ1I4SixZQUFZO0lBQ1psd0MsTUFBTTtJQUNOQyxJQUFJO0lBQ0p5RCxVQUFVO0lBQ1Z5aUMsUUFBUTtJQUNSbitCO0VBQ0YsQ0FBQyxDQUFDO0VBRUYsTUFBTW1vQyxnQkFBZ0IsR0FBR0EsQ0FBQSxLQUFNO0lBQzdCLE1BQU10c0MsTUFBTSxHQUFHLElBQUl1c0MsZUFBZSxDQUFDcGxDLE1BQU0sQ0FBQ2toQyxRQUFRLENBQUNtRSxNQUFNLENBQUM7SUFDMUQsTUFBTUMsS0FBSyxHQUFHenNDLE1BQU0sQ0FBQzBzQyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3RDLElBQUlELEtBQUssRUFBRWhLLEtBQUssQ0FBQzNtQyxRQUFRLENBQUM7TUFBRTBYLElBQUksRUFBRXBhLGlEQUFXO01BQUUyRSxPQUFPLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDakUsQ0FBQztFQUVEdVosZ0RBQVMsQ0FBQyxNQUFNO0lBQ2RtckIsS0FBSyxDQUFDM21DLFFBQVEsQ0FBQ0kseURBQWUsQ0FBQ0MsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUMvQyxDQUFDLEVBQUUsQ0FBQ0QsTUFBTSxFQUFFQyxJQUFJLENBQUMsQ0FBQztFQUVsQixvQkFDRStMLHNEQUFBLENBQUMyekIsaURBQVE7SUFBQzJHLEtBQUssRUFBRUEsS0FBTTtJQUFBOTVCLFFBQUEsZUFDckJSLHNEQUFBLENBQUNna0Msd0VBQVc7TUFDVlEsWUFBWSxFQUFFTCxnQkFBaUI7TUFDL0Jqc0IsT0FBTyxFQUFFLElBQUs7TUFDZCtpQixTQUFTLEVBQUVBLFNBQVU7TUFBQXo2QixRQUFBLGVBRXJCUixzREFBQSxDQUFDa21CLCtEQUFvQjtRQUFDMkIsV0FBVztRQUFBcm5CLFFBQUEsZUFDL0JSLHNEQUFBLENBQUNvekIsaUVBQWEsSUFBRTtNQUFDLENBQ0c7SUFBQyxDQUNaO0VBQUMsQ0FDTixDQUFDO0FBRWYsQ0FBQztBQUVENlEsdUJBQXVCLENBQUMzaEMsU0FBUyxHQUFHO0VBQ2xDODNCLFFBQVEsRUFBRXo1QiwwREFBZ0I7RUFDMUJ1akMsWUFBWSxFQUFFdmpDLDBEQUFnQjtFQUM5QjNNLE1BQU0sRUFBRTJNLDBEQUFnQjtFQUN4QmpKLFVBQVUsRUFBRWlKLDBEQUFnQjtFQUM1QjFNLElBQUksRUFBRTBNLDBEQUFnQjtFQUN0Qnc1QixRQUFRLEVBQUV4NUIsMERBQWdCO0VBQzFCM0UsYUFBYSxFQUFFMkUsd0RBQWNtRDtBQUMvQixDQUFDO0FBRUQsaUVBQWVtZ0MsdUJBQXVCLEUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay91bml2ZXJzYWxNb2R1bGVEZWZpbml0aW9uIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9hY3Rpb25zLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0NvbmZpcm1EaWFsb2cvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ29weVRleHQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvQ3VzdG9tTm90aWZpY2F0aW9uL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0N1c3RvbVRoZW1lLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0NoZWNrYm94UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL0Ryb3Bkb3duUXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL1JhZGlvTGlzdFF1ZXN0aW9uRmllbGQuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy9UZXh0UXVlc3Rpb25GaWVsZC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL0Fzc2lnbmVkRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvQmFkZ2VGZWF0dXJlRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvRnJlZVBhaWRGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Qcm9tb0NvZGVGaWx0ZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9TZWFyY2guanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9Tb3J0LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvU3RhdHVzRmlsdGVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0ZpbHRlcnMvVGlja2V0VHlwZUZpbHRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9GaWx0ZXJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL0Zvcm1Gb290ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL0Vycm9yTGFiZWwuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTG9hZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL015T3JkZXJzVGlja2V0cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Ob1RpY2tldHNGb3VuZC9UaWNrZXRzSWNvbi5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Ob1RpY2tldHNGb3VuZC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvT3JkZXJTdW1tYXJ5VGFibGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJTdW1tYXJ5L1JlZnVuZEVtYWlsU3VwcG9ydC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9Bc3NpZ25lZFRvTWUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9BdHRlbmRlZVN0YXR1cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlcnNMaXN0L09yZGVyTGlzdEl0ZW0uanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9PcmRlckxpc3RUaWNrZXRzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3QvT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvT3JkZXJzTGlzdC9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmREZXRhaWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL1JlZnVuZFJlcXVlc3RlZFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SZWZ1bmRSZXF1ZXN0cy9SZWZ1bmRTdGF0dXMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmVmdW5kUmVxdWVzdHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvUmlnaHREcmF3ZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RhYldyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvQXNzaWduT3B0aW9ucy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9EZWxlZ2F0ZUZvcm0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvUmVhc3NpZ25IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0QXNzaWduL2NvbXBvbmVudHMvUmVhc3NpZ25Gb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9Db21wYW55RmllbGQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9SZWdpc3RyYXRpb25EaXNjbGFpbWVyLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldERldGFpbEhlYWRlci9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29tcG9uZW50cy9UaWNrZXRGb3JtL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb21wb25lbnRzL1RpY2tldE93bmVyRmllbGRzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldFN0YXR1cy9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL2luZGV4LmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1dpZGdldFdyYXBwZXIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2hvb2tzL3VzZUdldFRpY2tldC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlU2Nyb2xsVG9FcnJvci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaG9va3MvdXNlVGlja2V0RGV0YWlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvaTE4bi9pbmRleC5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvcmVkdWNlci5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvc3RvcmUuanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2F1dGguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL2NvbnN0YW50cy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvdXRpbHMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL3V0aWxzL3N1bW1pdFV0aWxzLmpzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy91dGlscy90aWNrZXRVdGlscy5qcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9Db3B5VGV4dC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRmlsdGVycy9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvRm9ybUZvb3Rlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvTGFiZWxzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9NeU9yZGVyc1RpY2tldHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL05vVGlja2V0c0ZvdW5kL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9PcmRlclN1bW1hcnkvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL09yZGVyc0xpc3Qvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1JlZnVuZFJlcXVlc3RzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9SaWdodERyYXdlci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvU3VtbWl0SGVhZGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9Bc3NpZ25PcHRpb25zL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9UaWNrZXRBc3NpZ24vY29tcG9uZW50cy9IZWFkZXIvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldEFzc2lnbi9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvUmVnaXN0cmF0aW9uRGlzY2xhaW1lci9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0T3duZXJGaWVsZHMvc3R5bGVzLm1vZHVsZS5zY3NzIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC8uL3NyYy9jb21wb25lbnRzL1RpY2tldERldGFpbC9zdHlsZXMubW9kdWxlLnNjc3MiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL2NvbXBvbmVudHMvVGlja2V0U3RhdHVzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRUYWJzL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvLi9zcmMvY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyL3N0eWxlcy5tb2R1bGUuc2NzcyIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9vYmplY3RXaXRob3V0UHJvcGVydGllc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DbG9zZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9GaWx0ZXJMaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL2ljb25zLW1hdGVyaWFsL1NlYXJjaFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWxcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0J1dHRvblwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1RpdGxlXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9EaXZpZGVyXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1N0YWNrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiQG11aS9tYXRlcmlhbC9UYWJcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1RhYnNcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIkByZWR1eGpzL3Rvb2xraXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJAc2VudHJ5L3JlYWN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiZm9ybWlrXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaTE4bmV4dFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcImkxOG5leHQtYnJvd3Nlci1sYW5ndWFnZWRldGVjdG9yXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwiaWR0b2tlbi12ZXJpZmllclwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm1vbWVudC10aW1lem9uZVwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvcXVlcnktYWN0aW9uc1wiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInAtbGltaXRcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJwcm9wLXR5cGVzXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3RcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1pMThuZXh0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0LXFyLWNvZGVcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWFjdC1yZWR1eFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlYWN0L2pzeC1ydW50aW1lXCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXhcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJyZWR1eC1wZXJzaXN0XCIiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L2V4dGVybmFsIGNvbW1vbmpzIFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiIiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC9leHRlcm5hbCBjb21tb25qcyBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvZXh0ZXJuYWwgY29tbW9uanMgXCJ5dXBcIiIsIndlYnBhY2s6Ly9teS1vcmRlcnMtdGlja2V0cy13aWRnZXQvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL215LW9yZGVycy10aWNrZXRzLXdpZGdldC93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vbXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0Ly4vc3JjL215LW9yZGVycy10aWNrZXRzLXdpZGdldC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24gd2VicGFja1VuaXZlcnNhbE1vZHVsZURlZmluaXRpb24ocm9vdCwgZmFjdG9yeSkge1xuXHRpZih0eXBlb2YgZXhwb3J0cyA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcpXG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KCk7XG5cdGVsc2UgaWYodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiBkZWZpbmUuYW1kKVxuXHRcdGRlZmluZShcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldFwiLCBbXSwgZmFjdG9yeSk7XG5cdGVsc2UgaWYodHlwZW9mIGV4cG9ydHMgPT09ICdvYmplY3QnKVxuXHRcdGV4cG9ydHNbXCJteS1vcmRlcnMtdGlja2V0cy13aWRnZXRcIl0gPSBmYWN0b3J5KCk7XG5cdGVsc2Vcblx0XHRyb290W1wibXktb3JkZXJzLXRpY2tldHMtd2lkZ2V0XCJdID0gZmFjdG9yeSgpO1xufSkodGhpcywgKCkgPT4ge1xucmV0dXJuICIsImltcG9ydCB7XG4gIGF1dGhFcnJvckhhbmRsZXIsXG4gIGNyZWF0ZUFjdGlvbixcbiAgZGVsZXRlUmVxdWVzdCxcbiAgZ2V0UmVxdWVzdCxcbiAgcHV0UmVxdWVzdCxcbiAgc3RhcnRMb2FkaW5nLFxuICBzdG9wTG9hZGluZ1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQgcExpbWl0IGZyb20gXCJwLWxpbWl0XCI7XG5pbXBvcnQgeyBnZXRJZFRva2VuIH0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0IHsgb2JqZWN0VG9RdWVyeVN0cmluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL21ldGhvZHNcIjtcbmltcG9ydCBJZFRva2VuVmVyaWZpZXIgZnJvbSBcImlkdG9rZW4tdmVyaWZpZXJcIjtcbmltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBhdXRoUHJvbWlzZVJlamVjdCwgZ2V0QWNjZXNzVG9rZW5TYWZlbHkgfSBmcm9tIFwiLi91dGlscy9hdXRoXCI7XG5pbXBvcnQge1xuICBERUZBVUxUX0lURU1TX1BFUl9QQUdFLFxuICBFUlJPUl9DT0RFUyxcbiAgRklGVFlfUEVSX1BBR0UsXG4gIEZJUlNUX1BBR0UsXG4gIFBST01JU0VfQkFUQ0hfTElNSVQsXG4gIFRBQlNcbn0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBSRVNFVF9TVEFURSA9IFwiUkVTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBSRVNFVF9GSUxURVIgPSBcIlJFU0VUX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IFJFU0VUX0FQSV9FUlJPUiA9IFwiUkVTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgU0VUX1NUQVRFID0gXCJTRVRfU1RBVEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfQVBJX0VSUk9SID0gXCJTRVRfQVBJX0VSUk9SXCI7XG5leHBvcnQgY29uc3QgQ0hBTkdFX0ZJTFRFUiA9IFwiQ0hBTkdFX0ZJTFRFUlwiO1xuZXhwb3J0IGNvbnN0IENIQU5HRV9TT1JUID0gXCJDSEFOR0VfU09SVFwiO1xuXG4vLyBPUkRFUlMgQ09OU1RTXG5leHBvcnQgY29uc3QgR0VUX1VTRVJfT1JERVJTID0gXCJHRVRfT1JERVJTXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX09SREVSID0gXCJSRUZVTkRfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBTRVRfQUNUSVZFX09SREVSX0lEID0gXCJTRVRfQUNUSVZFX09SREVSX0lEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1VTRVJfT1JERVJTID0gXCJGSUxURVJfVVNFUl9PUkRFUlNcIjtcblxuLy8gVElDS0VUUyBDT05TVFNcbmV4cG9ydCBjb25zdCBHRVRfTVlfQVNTSUdORURfVElDS0VUUyA9IFwiR0VUX01ZX0FTU0lHTkVEX1RJQ0tFVFNcIjtcbmV4cG9ydCBjb25zdCBVUERBVEVfVElDS0VUID0gXCJVUERBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVTRVRfVElDS0VUID0gXCJSRVNFVF9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRUNFSVZFX1RJQ0tFVCA9IFwiUkVDRUlWRV9USUNLRVRcIjtcbmV4cG9ydCBjb25zdCBSRU1PVkVfVElDS0VUX0FUVEVOREVFID0gXCJSRU1PVkVfVElDS0VUX0FUVEVOREVFXCI7XG5leHBvcnQgY29uc3QgQVNTSUdOX1RJQ0tFVCA9IFwiQVNTSUdOX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IERFTEVHQVRFX1RJQ0tFVCA9IFwiREVMRUdBVEVfVElDS0VUXCI7XG5leHBvcnQgY29uc3QgUkVGVU5EX1RJQ0tFVCA9IFwiUkVGVU5EX1RJQ0tFVFwiO1xuZXhwb3J0IGNvbnN0IFJFU0VORF9OT1RJRklDQVRJT04gPSBcIlJFU0VORF9OT1RJRklDQVRJT05cIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJcIjtcbmV4cG9ydCBjb25zdCBHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUiA9IFwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1JcIjtcbmV4cG9ydCBjb25zdCBHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMgPSBcIkdFVF9PUkRFUl9USUNLRVRfREVUQUlMU1wiO1xuZXhwb3J0IGNvbnN0IEdFVF9USUNLRVRfREVUQUlMUyA9IFwiR0VUX1RJQ0tFVF9ERVRBSUxTXCI7XG5leHBvcnQgY29uc3QgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlMgPSBcIlJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TXCI7XG5leHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIixcbiAgZXh0cmFRdWVzdGlvbnM6IFwiZXh0cmFfcXVlc3Rpb25zXCJcbn07XG5leHBvcnQgY29uc3QgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCA9XG4gIFwiVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRFwiO1xuXG4vLyBVU0VSIENPTlRTXG5leHBvcnQgY29uc3QgU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RBUlRfTE9BRElOR19JRFBfUFJPRklMRVwiO1xuZXhwb3J0IGNvbnN0IFNUT1BfTE9BRElOR19JRFBfUFJPRklMRSA9IFwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFXCI7XG5leHBvcnQgY29uc3QgVVBEQVRFX0lEUF9QUk9GSUxFID0gXCJVUERBVEVfSURQX1BST0ZJTEVcIjtcbmV4cG9ydCBjb25zdCBTRVRfVVNFUiA9IFwiU0VUX1VTRVJcIjtcblxuLy8gU1VNTUlUIENPTlNUU1xuZXhwb3J0IGNvbnN0IFNFVF9TVU1NSVQgPSBcIlNFVF9TVU1NSVRcIjtcbmV4cG9ydCBjb25zdCBHRVRfTUFJTl9FWFRSQV9RVUVTVElPTlMgPSBcIkdFVF9NQUlOX0VYVFJBX1FVRVNUSU9OU1wiO1xuZXhwb3J0IGNvbnN0IFJFQ0VJVkVfTUFSS0VUSU5HX1NFVFRJTkdTID0gXCJSRUNFSVZFX01BUktFVElOR19TRVRUSU5HU1wiO1xuZXhwb3J0IGNvbnN0IENMRUFSX01BUktFVElOR19TRVRUSU5HUyA9IFwiQ0xFQVJfTUFSS0VUSU5HX1NFVFRJTkdTXCI7XG5cbmV4cG9ydCBjb25zdCByZXNldFRpY2tldCA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfVElDS0VUKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0U3RhdGUgPSAoKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFJFU0VUX1NUQVRFKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHJlc2V0RmlsdGVyID0gKCkgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihSRVNFVF9GSUxURVIpKHt9KSk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVzZXRFcnJvciA9ICgpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oUkVTRVRfQVBJX0VSUk9SKSh7fSkpO1xufTtcblxuZXhwb3J0IGNvbnN0IHNldFJlZHVjZXJTdGF0ZSA9IChzdW1taXQsIHVzZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1NUQVRFKSh7IHN1bW1pdCwgdXNlciB9KSk7XG59O1xuXG4vLyBGSUxURVIgLyBTT1JUIENPTlNUQU5UU1xuZXhwb3J0IGNvbnN0IEZJTFRFUl9WQVJfREFURSA9IFwiRklMVEVSX1ZBUl9EQVRFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFID0gXCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkVcIjtcbmV4cG9ydCBjb25zdCBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFID0gXCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgPSBcIkZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PV05FUl9TVEFUVVMgPSBcIkZJTFRFUl9WQVJfT1dORVJfU1RBVFVTXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9QUk9NT0NPREUgPSBcIkZJTFRFUl9WQVJfUFJPTU9DT0RFXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9GUkVFX1BBSUQgPSBcIkZJTFRFUl9WQVJfRlJFRV9QQUlEXCI7XG5leHBvcnQgY29uc3QgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIgPSBcIkZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXCI7XG5cbi8vIEZJTFRFUiAvIFNPUlQgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IGNoYW5nZUZpbHRlciA9IChmaWx0ZXIpID0+IChkaXNwYXRjaCkgPT4ge1xuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oQ0hBTkdFX0ZJTFRFUikoZmlsdGVyKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hhbmdlU29ydCA9IChzb3J0KSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKENIQU5HRV9TT1JUKShzb3J0KSk7XG59O1xuXG4vLyBGSUxURVIvU09SVCBQQVJTRVxuY29uc3QgcGFyc2VGaWx0ZXIgPSAoZmlsdGVyT2JqLCBjdXJyZW50VGFiKSA9PiB7XG4gIGNvbnN0IGZpbHRlciA9IFtdO1xuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfREFURSkge1xuICAgIGZpbHRlci5wdXNoKGBjcmVhdGVkW10ke2ZpbHRlck9iai5sb3dlcn0mJiR7ZmlsdGVyT2JqLnVwcGVyfWApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9CQURHRV9GRUFUVVJFICYmXG4gICAgZmlsdGVyT2JqLkZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRS5sZW5ndGggPiAwXG4gICkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlNcbiAgICAgICAgPyBcInRpY2tldHNfYmFkZ2VfZmVhdHVyZXNfaWRcIlxuICAgICAgICA6IFwiYmFkZ2VfZmVhdHVyZXNfaWRcIjtcbiAgICBmaWx0ZXIucHVzaChcbiAgICAgIGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUuam9pbihcInx8XCIpfWBcbiAgICApO1xuICB9XG4gIGlmIChcbiAgICBmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRSAmJlxuICAgIGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9UWVBFLmxlbmd0aCA+IDBcbiAgKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9XG4gICAgICBjdXJyZW50VGFiID09PSBUQUJTLk9SREVSUyA/IFwidGlja2V0c190eXBlX2lkXCIgOiBcInRpY2tldF90eXBlX2lkXCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfVFlQRS5qb2luKFwifHxcIil9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfYXNzaWduZWRfdG9cIiA6IFwiYXNzaWduZWRfdG9cIjtcbiAgICBmaWx0ZXIucHVzaChgJHtmaWx0ZXJOYW1lfT09JHtmaWx0ZXJPYmouRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUR9YCk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVUykge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfb3duZXJfc3RhdHVzXCIgOiBcIm93bmVyX3N0YXR1c1wiO1xuICAgIGZpbHRlci5wdXNoKGAke2ZpbHRlck5hbWV9PT0ke2ZpbHRlck9iai5GSUxURVJfVkFSX09XTkVSX1NUQVRVU31gKTtcbiAgfVxuICBpZiAoZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEKSB7XG4gICAgY29uc3QgZmlsdGVyTmFtZSA9IGN1cnJlbnRUYWIgPT09IFRBQlMuT1JERVJTID8gXCJhbW91bnRcIiA6IFwiZmluYWxfYW1vdW50XCI7XG4gICAgZmlsdGVyLnB1c2goXG4gICAgICBgJHtmaWx0ZXJOYW1lfSR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfRlJFRV9QQUlEID09PSBcIkZyZWVcIiA/IFwiPT0wXCIgOiBcIj4wXCJ9YFxuICAgICk7XG4gIH1cbiAgaWYgKGZpbHRlck9iai5GSUxURVJfVkFSX1BST01PQ09ERSkge1xuICAgIGNvbnN0IGZpbHRlck5hbWUgPVxuICAgICAgY3VycmVudFRhYiA9PT0gVEFCUy5PUkRFUlMgPyBcInRpY2tldHNfcHJvbW9fY29kZVwiIDogXCJwcm9tb19jb2RlXCI7XG4gICAgZmlsdGVyLnB1c2goYCR7ZmlsdGVyTmFtZX09QCR7ZmlsdGVyT2JqLkZJTFRFUl9WQVJfUFJPTU9DT0RFfWApO1xuICB9XG4gIGlmIChmaWx0ZXJPYmouRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIpIHtcbiAgICBmaWx0ZXIucHVzaChgbnVtYmVyPUAke2ZpbHRlck9iai5GSUxURVJfVkFSX09SREVSX05VTUJFUn1gKTtcbiAgfVxuICByZXR1cm4gZmlsdGVyO1xufTtcblxuY29uc3QgZ2V0U29ydERpcmVjdGlvbiA9IChkaXJlY3Rpb24pID0+IChkaXJlY3Rpb24gPT09IFwiYXNjXCIgPyBcIitcIiA6IFwiLVwiKTtcblxuLy8gcGF5bG9hZDogeyBodHRwQ29kZSwgdGl0bGUsIGh0bWw6IGNvbnRlbnQsIHR5cGUgfVxuY29uc3QgZXJyb3JIYW5kbGVyTm90aWZ5ID0gKHBheWxvYWQsIGNhbGxiYWNrKSA9PiAoZGlzcGF0Y2gpID0+IHtcbiAgZGlzcGF0Y2goY3JlYXRlQWN0aW9uKFNFVF9BUElfRVJST1IpKHBheWxvYWQpKTtcbiAgaWYgKGNhbGxiYWNrKSBjYWxsYmFjaygpO1xufTtcblxuY29uc3QgY3VzdG9tQXV0aEVycm9ySGFuZGxlciA9IChlcnIsIHJlcykgPT4gKGRpc3BhdGNoKSA9PiB7XG4gIGRpc3BhdGNoKGF1dGhFcnJvckhhbmRsZXIoZXJyLCByZXMsIGVycm9ySGFuZGxlck5vdGlmeSkpO1xufTtcblxuY29uc3QgY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIgPSAocmVzcG9uc2UpID0+IChkaXNwYXRjaCkgPT4ge1xuICBjb25zdCBjb2RlID0gcmVzcG9uc2Uuc3RhdHVzO1xuICBsZXQgbXNnO1xuICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgc3dpdGNoIChjb2RlKSB7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQwM1wiXTpcbiAgICAgIG1zZyA9IGkxOG4udChcImVycm9ycy51c2VyX25vdF9hdXRoelwiKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI0MDFcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2Vzc2lvbl9leHBpcmVkXCIpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBFUlJPUl9DT0RFU1tcIjQxMlwiXTpcbiAgICAgIG1zZyA9IFwiXCI7XG4gICAgICBPYmplY3QuZW50cmllcyhyZXNwb25zZS5lcnJvcnMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICBpZiAoTnVtYmVyLmlzTmFOKGtleSkpIHtcbiAgICAgICAgICBtc2cgPSBgJHttc2d9ICR7a2V5fTogYDtcbiAgICAgICAgfVxuXG4gICAgICAgIG1zZyA9IGAke21zZ30gJHt2YWx1ZX0gPGJyPmA7XG4gICAgICB9KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgRVJST1JfQ09ERVNbXCI1MDBcIl06XG4gICAgICBtc2cgPSBpMThuLnQoXCJlcnJvcnMuc2VydmVyX2Vycm9yXCIpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIG1zZyA9IHJlc3BvbnNlLnN0YXR1c1RleHQ7XG4gIH1cblxuICBkaXNwYXRjaChlcnJvckhhbmRsZXJOb3RpZnkoeyB0aXRsZTogaTE4bi50KFwiZXJyb3JzLmVycm9yXCIpLCBodG1sOiBtc2cgfSkpO1xufTtcblxuLy8gT1JERVJTIEFDVElPTlNcbmV4cG9ydCBjb25zdCBnZXRVc2VyT3JkZXJzID1cbiAgKFxuICAgIHtcbiAgICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICBmaWx0ZXIgPSB7fSxcbiAgICAgIHNvcnQgPSB7fVxuICAgIH0sXG4gICAgc2tpcExvYWRpbmdcbiAgKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG5cbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgb3JkZXI6IFwiLWNyZWF0ZWRcIixcbiAgICAgIFwiZmlsdGVyW11cIjogW1wic3RhdHVzPT1QYWlkXCJdLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmVcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG5cbiAgICBpZiAoT2JqZWN0LmtleXMoZmlsdGVyKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBmaWx0ZXJzID0gcGFyc2VGaWx0ZXIoZmlsdGVyLCBUQUJTLk9SREVSUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfVVNFUl9PUkRFUlMpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy9tZWAsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyLFxuICAgICAgeyBmaWx0ZXIsIHNvcnQgfVxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiBwYXlsb2FkKVxuICAgICAgLmNhdGNoKChlKSA9PiBlKVxuICAgICAgLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgICBpZiAoIXNraXBMb2FkaW5nKSBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3Qgc2V0QWN0aXZlT3JkZXJJZCA9IChvcmRlcklkKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihTRVRfQUNUSVZFX09SREVSX0lEKShvcmRlcklkKSk7XG5cbi8vIFVTRVIgQUNUSU9OU1xuZXhwb3J0IGNvbnN0IHNldFVzZXIgPSAodXNlcikgPT4gKGRpc3BhdGNoKSA9PlxuICBkaXNwYXRjaChjcmVhdGVBY3Rpb24oU0VUX1VTRVIpKHVzZXIpKTtcblxuLy8gVElDS0VUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldFVzZXJUaWNrZXRzID1cbiAgKFxuICAgIHtcbiAgICAgIHBhZ2UgPSBGSVJTVF9QQUdFLFxuICAgICAgcGVyUGFnZSA9IERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gICAgICBmaWx0ZXIgPSB7fSxcbiAgICAgIHNvcnQgPSB7fVxuICAgIH0sXG4gICAgc2tpcExvYWRpbmdcbiAgKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCwgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcbiAgICBpZiAoIXN1bW1pdCkgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBjb25zdCBmaWVsZHMgPSBbXG4gICAgICBcIm9yZGVyLmlkXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2ZpcnN0X25hbWVcIixcbiAgICAgIFwib3JkZXIub3duZXJfbGFzdF9uYW1lXCIsXG4gICAgICBcIm9yZGVyLm93bmVyX2VtYWlsXCIsXG4gICAgICBcIm93bmVyLmlkXCIsXG4gICAgICBcIm93bmVyLmVtYWlsXCIsXG4gICAgICBcIm93bmVyLmZpcnN0X25hbWVcIixcbiAgICAgIFwib3duZXIubGFzdF9uYW1lXCIsXG4gICAgICBcIm93bmVyLnN0YXR1c1wiLFxuICAgICAgXCJiYWRnZS5ub25lXCJcbiAgICBdO1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgXCJmaWx0ZXJbXVwiOiBbXCJzdGF0dXM9PVBhaWRcIiwgYG9yZGVyX293bmVyX2lkPD4ke3VzZXJQcm9maWxlLmlkfWBdLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLG93bmVyLHRpY2tldF90eXBlLGJhZGdlLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBvcmRlcjogXCItaWRcIixcbiAgICAgIGZpZWxkczogZmllbGRzLmpvaW4oXCIsXCIpLFxuICAgICAgcmVsYXRpb25zOiBcIm5vbmUsYmFkZ2UuZmVhdHVyZXNcIixcbiAgICAgIHBhZ2UsXG4gICAgICBwZXJfcGFnZTogcGVyUGFnZVxuICAgIH07XG4gICAgaWYgKE9iamVjdC5rZXlzKGZpbHRlcikubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZmlsdGVycyA9IHBhcnNlRmlsdGVyKGZpbHRlciwgVEFCUy5USUNLRVRTKTtcbiAgICAgIHBhcmFtc1tcImZpbHRlcltdXCJdID0gWy4uLnBhcmFtc1tcImZpbHRlcltdXCJdLCAuLi5maWx0ZXJzXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5rZXlzKHNvcnQpLmxlbmd0aCA+IDApIHtcbiAgICAgIHBhcmFtcy5vcmRlciA9IGAke2dldFNvcnREaXJlY3Rpb24oc29ydC5kaXJlY3Rpb24pfSR7c29ydC5uYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihHRVRfTVlfQVNTSUdORURfVElDS0VUUyksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vb3JkZXJzL2FsbC90aWNrZXRzL21lYCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAuY2F0Y2goKGUpID0+IGUpXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlmICghc2tpcExvYWRpbmcpIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRzQnlPcmRlciA9XG4gICh7XG4gICAgb3JkZXJJZCxcbiAgICBwYWdlID0gRklSU1RfUEFHRSxcbiAgICBwZXJQYWdlID0gREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICBmaWx0ZXIsXG4gICAgc29ydFxuICB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBcImZpbHRlcltdXCI6IFtdLFxuICAgICAgZmllbGRzOiBcImJhZGdlLm5vbmVcIixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMscmVmdW5kX3JlcXVlc3RzLnJlZnVuZGVkX3RheGVzLHJlZnVuZF9yZXF1ZXN0cy5yZWZ1bmRlZF90YXhlcy50YXgsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLGJhZGdlLGJhZGdlLmZlYXR1cmVzLHRpY2tldF90eXBlXCIsXG4gICAgICBvcmRlcjogXCIraWRcIixcbiAgICAgIHJlbGF0aW9uczogXCJub25lLGJhZGdlLmZlYXR1cmVzXCIsXG4gICAgICBwYWdlLFxuICAgICAgcGVyX3BhZ2U6IHBlclBhZ2VcbiAgICB9O1xuICAgIGlmIChPYmplY3Qua2V5cyhmaWx0ZXIpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpbHRlcnMgPSBwYXJzZUZpbHRlcihmaWx0ZXIsIFRBQlMuVElDS0VUUyk7XG4gICAgICBwYXJhbXNbXCJmaWx0ZXJbXVwiXSA9IFsuLi5wYXJhbXNbXCJmaWx0ZXJbXVwiXSwgLi4uZmlsdGVyc107XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyhzb3J0KS5sZW5ndGggPiAwKSB7XG4gICAgICBwYXJhbXMub3JkZXIgPSBgJHtnZXRTb3J0RGlyZWN0aW9uKHNvcnQuZGlyZWN0aW9uKX0ke3NvcnQubmFtZX1gO1xuICAgIH1cbiAgICByZXR1cm4gZ2V0UmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oR0VUX1RJQ0tFVFNfQllfT1JERVIpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHNgLFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKChwYXlsb2FkKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gcGF5bG9hZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIGRpc3BhdGNoKGNyZWF0ZUFjdGlvbihHRVRfVElDS0VUU19CWV9PUkRFUl9FUlJPUikpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVzZW5kTm90aWZpY2F0aW9uID1cbiAgKHRpY2tldCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGNvbnN0IHsgbWVzc2FnZSB9ID0gdGlja2V0O1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW5cbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VORF9OT1RJRklDQVRJT04pLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXQuaWR9L2F0dGVuZGVlL3JlaW52aXRlYCxcbiAgICAgIHsgbWVzc2FnZSB9LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaClcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICByZXR1cm4gZTtcbiAgICAgIH0pO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVmdW5kVGlja2V0ID1cbiAgKHsgdGlja2V0IH0pID0+XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3Qgb3JkZXJJZCA9IHRpY2tldC5vcmRlciA/IHRpY2tldC5vcmRlci5pZCA6IHRpY2tldC5vcmRlcl9pZDtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6IFwicmVmdW5kX3JlcXVlc3RzLHRpY2tldF90eXBlXCIsXG4gICAgICBmaWVsZHM6IFwicmVmdW5kX3JlcXVlc3RzLnN0YXR1c1wiXG4gICAgfTtcblxuICAgIHJldHVybiBkZWxldGVSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihSRUZVTkRfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0LmlkfS9yZWZ1bmRgLFxuICAgICAge30sXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgICAgIHJldHVybiBwYXlsb2FkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IHJlZnVuZEJ1bGtUaWNrZXRzID1cbiAgKHsgdGlja2V0cyB9KSA9PlxuICBhc3luYyAoZGlzcGF0Y2gpID0+IHtcbiAgICBjb25zdCBsaW1pdCA9IHBMaW1pdChQUk9NSVNFX0JBVENIX0xJTUlUKTtcbiAgICBjb25zdCBhbGxSZWZ1bmRUaWNrZXRDYWxscyA9IHRpY2tldHMubWFwKCh0aWNrZXQpID0+XG4gICAgICBsaW1pdCgoKSA9PiBkaXNwYXRjaChyZWZ1bmRUaWNrZXQoeyB0aWNrZXQgfSkpKVxuICAgICk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFsuLi5hbGxSZWZ1bmRUaWNrZXRDYWxsc10pXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWxseVJlcXVlc3RlZCA9IHJlc1xuICAgICAgICAgIC5maWx0ZXIoKHIpID0+IHIucmVzcG9uc2U/LnJlZnVuZF9yZXF1ZXN0cz8ubGVuZ3RoKVxuICAgICAgICAgIC5tYXAoKHIpID0+IHIucmVzcG9uc2UpO1xuICAgICAgICByZXR1cm4gc3VjY2Vzc2Z1bGx5UmVxdWVzdGVkO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4gZSk7XG4gIH07XG5cbi8vIHVwZGF0ZSB0aGUgdGlja2V0cyB0aGF0IGhhdmUgYmVlbiBzdWNlc3NmdWxseSByZWZ1bmRlZFxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgPVxuICAodGlja2V0c1JlZnVuZFJlcXVlc3RlZCkgPT4gKGRpc3BhdGNoKSA9PlxuICAgIGRpc3BhdGNoKFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQpKHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQpXG4gICAgKTtcblxuLy8gU1VNTUlUIEFDVElPTlNcblxuZXhwb3J0IGNvbnN0IGdldEV4dHJhUXVlc3Rpb25zID1cbiAgKGF0dGVuZGVlSWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgc3VtbWl0IH1cbiAgICB9ID0gZ2V0U3RhdGUoKTtcblxuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgcGFnZTogMSxcbiAgICAgIHBlcl9wYWdlOiBGSUZUWV9QRVJfUEFHRSxcbiAgICAgIGV4cGFuZDogXCIqc3ViX3F1ZXN0aW9uX3J1bGVzLCpzdWJfcXVlc3Rpb24sKnZhbHVlc1wiLFxuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIFwiZmlsdGVyW11cIjogXCJ0aWNrZXRzX2V4Y2x1ZGVfaW5hY3RpdmVzPT10cnVlXCJcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kcG9pbnQgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy8ke3N1bW1pdC5pZH0vYXR0ZW5kZWVzLyR7YXR0ZW5kZWVJZH0vYWxsb3dlZC1leHRyYS1xdWVzdGlvbnNgO1xuXG4gICAgcmV0dXJuIGdldFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TKSxcbiAgICAgIGVuZHBvaW50LFxuICAgICAgY3VzdG9tQXV0aEVycm9ySGFuZGxlclxuICAgICkocGFyYW1zKShkaXNwYXRjaCkudGhlbigoKSA9PiB7XG4gICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldCA9XG4gICh0aWNrZXRJZCwgb3JkZXJJZCkgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlcixwcm9tb19jb2RlXCIsXG4gICAgICByZWxhdGlvbnM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lLHByb21vX2NvZGUubm9uZSx0aWNrZXRfdHlwZS5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlLHByb21vX2NvZGUuaWQscHJvbW9fY29kZS5jb2RlLHByb21vX2NvZGUuYWxsb3dzX3RvX2RlbGVnYXRlLHByb21vX2NvZGUuYWxsb3dzX3RvX3JlYXNzaWduLHRpY2tldF90eXBlLmlkLHRpY2tldF90eXBlLm5hbWUsdGlja2V0X3R5cGUuYWxsb3dzX3RvX2RlbGVnYXRlLHRpY2tldF90eXBlLmFsbG93c190b19yZWFzc2lnbix0aWNrZXRfdHlwZS5jb3N0LHRpY2tldF90eXBlLmNyZWF0ZWRcIlxuICAgIH07XG5cbiAgICBjb25zdCBlbmRwb2ludCA9IGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvJHtvcmRlcklkfS90aWNrZXRzLyR7dGlja2V0SWR9YDtcblxuICAgIHJldHVybiBnZXRSZXF1ZXN0KFxuICAgICAgY3JlYXRlQWN0aW9uKFJFU0VUX1RJQ0tFVCksXG4gICAgICBjcmVhdGVBY3Rpb24oUkVDRUlWRV9USUNLRVQpLFxuICAgICAgZW5kcG9pbnQsXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKS5maW5hbGx5KCgpID0+IHtcbiAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgIH0pO1xuICB9O1xuXG5jb25zdCBub3JtYWxpemVUaWNrZXQgPSAoZW50aXR5KSA9PiB7XG4gIGNvbnN0IG5vcm1hbGl6ZWRFbnRpdHkgPSB7IC4uLmVudGl0eSB9O1xuXG4gIGlmICghZW50aXR5LmF0dGVuZGVlX2NvbXBhbnkuaWQpIHtcbiAgICBub3JtYWxpemVkRW50aXR5LmF0dGVuZGVlX2NvbXBhbnkgPSBlbnRpdHkuYXR0ZW5kZWVfY29tcGFueTtcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgbm9ybWFsaXplZEVudGl0eS5hdHRlbmRlZV9jb21wYW55O1xuICAgIG5vcm1hbGl6ZWRFbnRpdHkuYXR0ZW5kZWVfY29tcGFueV9pZCA9IGVudGl0eS5hdHRlbmRlZV9jb21wYW55LmlkO1xuICB9XG5cbiAgcmV0dXJuIG5vcm1hbGl6ZWRFbnRpdHk7XG59O1xuXG5leHBvcnQgY29uc3QgcmVmcmVzaFByb2ZpbGUgPVxuICAoZGF0YSwgY29tcGFueSwgdGlja2V0T3duZXIpID0+XG4gIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgdXBkYXRlUHJvZmlsZSB9KSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgd2lkZ2V0U3RhdGU6IHsgdXNlciB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgeyB1c2VyUHJvZmlsZSB9ID0gdXNlcjtcblxuICAgIC8vIGVtYWlsIHNob3VsZCBtYXRjaCAoIG9ubHkgdXBkYXRlIG15IHByb2ZpbGUgaXMgdGlja2V0IGJlbG9uZ3MgdG8gbWUhKVxuICAgIC8vIGFuZCBpZiB0aGUgdGlja2V0IGRvZXNuJ3QgaGF2ZSBhIG1hbmFnZXJcbiAgICAvLyBDaGVjayBpZiB0aGVyZSdzIGNoYW5nZXMgaW4gdGhlIHRpY2tldCBkYXRhIHRvIHVwZGF0ZSB0aGUgcHJvZmlsZVxuICAgIGNvbnN0IHtcbiAgICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZSxcbiAgICAgIGF0dGVuZGVlX2NvbXBhbnlcbiAgICB9ID0gZGF0YTtcbiAgICBjb25zdCBoYXNNYW5hZ2VyID0gdGlja2V0T3duZXI/Lm1hbmFnZXI/LmlkIHx8IHRpY2tldE93bmVyPy5tYW5hZ2VyX2lkO1xuICAgIGNvbnN0IGl0c01lID0gdXNlclByb2ZpbGUuZW1haWwgPT09IGF0dGVuZGVlX2VtYWlsO1xuICAgIGNvbnN0IHByb2ZpbGVDaGFuZ2VkID1cbiAgICAgIGF0dGVuZGVlX2NvbXBhbnkubmFtZSAhPT0gY29tcGFueSB8fFxuICAgICAgYXR0ZW5kZWVfZmlyc3RfbmFtZSAhPT0gdXNlclByb2ZpbGUuZmlyc3RfbmFtZSB8fFxuICAgICAgYXR0ZW5kZWVfbGFzdF9uYW1lICE9PSB1c2VyUHJvZmlsZS5sYXN0X25hbWU7XG5cbiAgICBpZiAoaXRzTWUgJiYgIWhhc01hbmFnZXIgJiYgcHJvZmlsZUNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IG5ld1Byb2ZpbGUgPSB7XG4gICAgICAgIGZpcnN0X25hbWU6IGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgICAgIGxhc3RfbmFtZTogYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgICAgICBjb21wYW55OiBhdHRlbmRlZV9jb21wYW55Lm5hbWUgfHwgYXR0ZW5kZWVfY29tcGFueVxuICAgICAgfTtcblxuICAgICAgLy8gdGhpcyBpcyBhIGNhbGxiYWNrIG1ldGhvZCB0aGF0IHVwZGF0ZXMgdXNlclByb2ZpbGUgaW4gQVBJIGFuZCBldmVudC1zaXRlXG4gICAgICB1cGRhdGVQcm9maWxlKG5ld1Byb2ZpbGUpO1xuICAgIH1cbiAgfTtcblxuZXhwb3J0IGNvbnN0IHNhdmVUaWNrZXREZXRhaWxzID1cbiAgKHRpY2tldCwgYW5zd2VycykgPT5cbiAgYXN5bmMgKGRpc3BhdGNoLCBnZXRTdGF0ZSwgeyBhcGlCYXNlVXJsIH0pID0+IHtcbiAgICBjb25zdCBhY2Nlc3NUb2tlbiA9IGF3YWl0IGdldEFjY2Vzc1Rva2VuU2FmZWx5KCk7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwicmVmdW5kX3JlcXVlc3RzLG93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZVwiXG4gICAgfTtcblxuICAgIGNvbnN0IGlkVG9rZW4gPSBnZXRJZFRva2VuKCk7XG4gICAgbGV0IGNvbXBhbnkgPSBcIlwiO1xuICAgIGlmIChpZFRva2VuKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB2ZXJpZmllciA9IG5ldyBJZFRva2VuVmVyaWZpZXIoKTtcbiAgICAgICAgY29uc3Qgand0ID0gdmVyaWZpZXIuZGVjb2RlKGlkVG9rZW4pO1xuICAgICAgICBjb21wYW55ID0gand0LnBheWxvYWQuY29tcGFueTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgbm9ybWFsaXplZEVudGl0eSA9IG5vcm1hbGl6ZVRpY2tldChhbnN3ZXJzKTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihVUERBVEVfVElDS0VUKSxcbiAgICAgIGAke2FwaUJhc2VVcmx9L2FwaS92MS9zdW1taXRzL2FsbC9vcmRlcnMvYWxsL3RpY2tldHMvJHt0aWNrZXQuaWR9YCxcbiAgICAgIG5vcm1hbGl6ZWRFbnRpdHksXG4gICAgICBjdXN0b21BdXRoRXJyb3JIYW5kbGVyXG4gICAgKShwYXJhbXMpKGRpc3BhdGNoKVxuICAgICAgLnRoZW4oYXN5bmMgKCkgPT4ge1xuICAgICAgICBkaXNwYXRjaChyZWZyZXNoUHJvZmlsZShhbnN3ZXJzLCBjb21wYW55LCB0aWNrZXQub3duZXIpKTtcbiAgICAgIH0pXG4gICAgICAuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBhc3NpZ25BdHRlbmRlZSA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgYXR0ZW5kZWVfZW1haWwsIG1lc3NhZ2UgPSBudWxsKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGNvbnN0IHBheWxvYWQgPSB7IGF0dGVuZGVlX2VtYWlsIH07XG4gICAgaWYgKG1lc3NhZ2UpIHBheWxvYWQubWVzc2FnZSA9IG1lc3NhZ2U7XG5cbiAgICBpZiAoIWFjY2Vzc1Rva2VuKSByZXR1cm4gYXV0aFByb21pc2VSZWplY3QoKTtcblxuICAgIGRpc3BhdGNoKHN0YXJ0TG9hZGluZygpKTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgIGFjY2Vzc190b2tlbjogYWNjZXNzVG9rZW4sXG4gICAgICBleHBhbmQ6XG4gICAgICAgIFwib3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbix0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKEFTU0lHTl9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vYXR0ZW5kZWVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCByZW1vdmVUaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOiBcIm9yZGVyLCBvd25lciwgb3duZXIuZXh0cmFfcXVlc3Rpb25zLCBvcmRlci5zdW1taXRcIlxuICAgIH07XG5cbiAgICByZXR1cm4gZGVsZXRlUmVxdWVzdChcbiAgICAgIG51bGwsXG4gICAgICBjcmVhdGVBY3Rpb24oUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSksXG4gICAgICBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldElkfS9hdHRlbmRlZWAsXG4gICAgICB7fSxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpO1xuICB9O1xuXG5leHBvcnQgY29uc3QgcmVhc3NpZ25UaWNrZXQgPVxuICAob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSA9PiBhc3luYyAoZGlzcGF0Y2gpID0+XG4gICAgZGlzcGF0Y2gocmVtb3ZlVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PlxuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsLCBtZXNzYWdlKSlcbiAgICApO1xuXG5leHBvcnQgY29uc3QgdW5hc3NpZ25UaWNrZXQgPSAob3JkZXJJZCwgdGlja2V0SWQpID0+IGFzeW5jIChkaXNwYXRjaCkgPT5cbiAgZGlzcGF0Y2gocmVtb3ZlVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PiBkaXNwYXRjaChzdG9wTG9hZGluZygpKSk7XG5cbmV4cG9ydCBjb25zdCBkZWxlZ2F0ZVRpY2tldCA9XG4gIChvcmRlcklkLCB0aWNrZXRJZCwgZmlyc3ROYW1lLCBsYXN0TmFtZSwgZW1haWwpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuICAgIGNvbnN0IHtcbiAgICAgIHdpZGdldFN0YXRlOiB7IHN1bW1pdCB9XG4gICAgfSA9IGdldFN0YXRlKCk7XG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGF0dGVuZGVlX2ZpcnN0X25hbWU6IGZpcnN0TmFtZSxcbiAgICAgIGF0dGVuZGVlX2xhc3RfbmFtZTogbGFzdE5hbWUsXG4gICAgICBhdHRlbmRlZV9lbWFpbDogZW1haWxcbiAgICB9O1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuLFxuICAgICAgZXhwYW5kOlxuICAgICAgICBcIm93bmVyLG93bmVyLmV4dHJhX3F1ZXN0aW9ucyxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24sdGlja2V0X3R5cGUsb3JkZXJcIixcbiAgICAgIHJlbGF0aW9uczogXCJvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubm9uZVwiLFxuICAgICAgZmllbGRzOlxuICAgICAgICBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5pZCxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24ubmFtZSxvd25lci5leHRyYV9xdWVzdGlvbnMucXVlc3Rpb24udHlwZVwiXG4gICAgfTtcblxuICAgIHJldHVybiBwdXRSZXF1ZXN0KFxuICAgICAgbnVsbCxcbiAgICAgIGNyZWF0ZUFjdGlvbihERUxFR0FURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvJHtzdW1taXQuaWR9L29yZGVycy8ke29yZGVySWR9L3RpY2tldHMvJHt0aWNrZXRJZH0vZGVsZWdhdGVgLFxuICAgICAgcGF5bG9hZCxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgZGlzcGF0Y2goc3RvcExvYWRpbmcoKSk7XG4gICAgfSk7XG4gIH07XG5cbmV4cG9ydCBjb25zdCBzYXZlRXh0cmFRdWVzdGlvbnMgPVxuICAodGlja2V0LCBhbnN3ZXJzKSA9PlxuICBhc3luYyAoZGlzcGF0Y2gsIGdldFN0YXRlLCB7IGFwaUJhc2VVcmwgfSkgPT4ge1xuICAgIGNvbnN0IGFjY2Vzc1Rva2VuID0gYXdhaXQgZ2V0QWNjZXNzVG9rZW5TYWZlbHkoKTtcblxuICAgIGlmICghYWNjZXNzVG9rZW4pIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xuXG4gICAgZGlzcGF0Y2goc3RhcnRMb2FkaW5nKCkpO1xuXG4gICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgYWNjZXNzX3Rva2VuOiBhY2Nlc3NUb2tlbixcbiAgICAgIGV4cGFuZDpcbiAgICAgICAgXCJyZWZ1bmRfcmVxdWVzdHMsb3duZXIsb3duZXIuZXh0cmFfcXVlc3Rpb25zLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbixiYWRnZSxiYWRnZS5mZWF0dXJlcyx0aWNrZXRfdHlwZSxvcmRlclwiLFxuICAgICAgcmVsYXRpb25zOiBcIm93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5ub25lXCIsXG4gICAgICBmaWVsZHM6XG4gICAgICAgIFwib3duZXIuZXh0cmFfcXVlc3Rpb25zLnF1ZXN0aW9uLmlkLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi5uYW1lLG93bmVyLmV4dHJhX3F1ZXN0aW9ucy5xdWVzdGlvbi50eXBlXCJcbiAgICB9O1xuXG4gICAgcmV0dXJuIHB1dFJlcXVlc3QoXG4gICAgICBudWxsLFxuICAgICAgY3JlYXRlQWN0aW9uKFVQREFURV9USUNLRVQpLFxuICAgICAgYCR7YXBpQmFzZVVybH0vYXBpL3YxL3N1bW1pdHMvYWxsL29yZGVycy9hbGwvdGlja2V0cy8ke3RpY2tldC5pZH1gLFxuICAgICAgYW5zd2VycyxcbiAgICAgIGN1c3RvbUF1dGhFcnJvckhhbmRsZXJcbiAgICApKHBhcmFtcykoZGlzcGF0Y2gpXG4gICAgICAudGhlbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZSkgPT4ge1xuICAgICAgICBkaXNwYXRjaChzdG9wTG9hZGluZygpKTtcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB9KTtcbiAgfTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFBERiA9XG4gICh0aWNrZXQpID0+XG4gIGFzeW5jIChkaXNwYXRjaCwgZ2V0U3RhdGUsIHsgYXBpQmFzZVVybCB9KSA9PiB7XG4gICAgY29uc3QgYWNjZXNzVG9rZW4gPSBhd2FpdCBnZXRBY2Nlc3NUb2tlblNhZmVseSgpO1xuXG4gICAgaWYgKCFhY2Nlc3NUb2tlbikgcmV0dXJuIGF1dGhQcm9taXNlUmVqZWN0KCk7XG5cbiAgICBkaXNwYXRjaChzdGFydExvYWRpbmcoKSk7XG5cbiAgICBjb25zdCBwYXJhbXMgPSB7XG4gICAgICBhY2Nlc3NfdG9rZW46IGFjY2Vzc1Rva2VuXG4gICAgfTtcblxuICAgIGNvbnN0IG9yZGVySWQgPSB0aWNrZXQub3JkZXIgPyB0aWNrZXQub3JkZXIuaWQgOiB0aWNrZXQub3JkZXJfaWQ7XG5cbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IG9iamVjdFRvUXVlcnlTdHJpbmcocGFyYW1zKTtcbiAgICBjb25zdCBhcGlVcmwgPSBgJHthcGlCYXNlVXJsfS9hcGkvdjEvc3VtbWl0cy9hbGwvb3JkZXJzLyR7b3JkZXJJZH0vdGlja2V0cy8ke3RpY2tldC5pZH0vcGRmPyR7cXVlcnlTdHJpbmd9YDtcblxuICAgIHJldHVybiBmZXRjaChhcGlVcmwsIHtcbiAgICAgIHJlc3BvbnNlVHlwZTogXCJCbG9iXCIsXG4gICAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vcGRmXCIgfVxuICAgIH0pXG4gICAgICAudGhlbigocmVzcG9uc2UpID0+IHtcbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICAgIHRocm93IHJlc3BvbnNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiByZXNwb25zZS5ibG9iKCk7XG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgICAudGhlbigocGRmKSA9PiB7XG4gICAgICAgIGRpc3BhdGNoKHN0b3BMb2FkaW5nKCkpO1xuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImFcIik7XG4gICAgICAgIGNvbnN0IHVybCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKHBkZik7XG4gICAgICAgIGxpbmsuaHJlZiA9IHVybDtcbiAgICAgICAgbGluay5kb3dubG9hZCA9IFwidGlja2V0LnBkZlwiO1xuICAgICAgICBsaW5rLmRpc3BhdGNoRXZlbnQobmV3IE1vdXNlRXZlbnQoXCJjbGlja1wiKSk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGN1c3RvbUZldGNoRXJyb3JIYW5kbGVyKTtcbiAgfTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBCdXR0b24gZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQnV0dG9uXCI7XG5pbXBvcnQgRGlhbG9nIGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiO1xuaW1wb3J0IERpYWxvZ0FjdGlvbnMgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQWN0aW9uc1wiO1xuaW1wb3J0IERpYWxvZ0NvbnRlbnQgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFwiO1xuaW1wb3J0IERpYWxvZ0NvbnRlbnRUZXh0IGZyb20gXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0NvbnRlbnRUZXh0XCI7XG5pbXBvcnQgRGlhbG9nVGl0bGUgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nVGl0bGVcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcblxuY29uc3QgQ29uZmlybURpYWxvZyA9ICh7IG9wZW4sIHRpdGxlLCBib2R5LCBvbkNsb3NlLCBvbkNvbmZpcm0gfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8RGlhbG9nXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cImFsZXJ0LWRpYWxvZy10aXRsZVwiXG4gICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwiYWxlcnQtZGlhbG9nLWRlc2NyaXB0aW9uXCJcbiAgICA+XG4gICAgICA8RGlhbG9nVGl0bGUgaWQ9XCJhbGVydC1kaWFsb2ctdGl0bGVcIj57dGl0bGV9PC9EaWFsb2dUaXRsZT5cbiAgICAgIDxEaWFsb2dDb250ZW50PlxuICAgICAgICA8RGlhbG9nQ29udGVudFRleHQgaWQ9XCJhbGVydC1kaWFsb2ctZGVzY3JpcHRpb25cIj5cbiAgICAgICAgICB7Ym9keX1cbiAgICAgICAgPC9EaWFsb2dDb250ZW50VGV4dD5cbiAgICAgIDwvRGlhbG9nQ29udGVudD5cbiAgICAgIDxEaWFsb2dBY3Rpb25zPlxuICAgICAgICA8QnV0dG9uIG9uQ2xpY2s9e29uQ2xvc2V9Pnt0KFwiZ2VuZXJhbC5jYW5jZWxcIil9PC9CdXR0b24+XG4gICAgICAgIDxCdXR0b24gb25DbGljaz17b25Db25maXJtfSBhdXRvRm9jdXM+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbmZpcm1cIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9EaWFsb2dBY3Rpb25zPlxuICAgIDwvRGlhbG9nPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29uZmlybURpYWxvZztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBDb250ZW50Q29weUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ29udGVudENvcHlcIjtcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IGRlZmF1bHRXaWR0aCA9IDkwO1xuXG5jb25zdCBDb3B5VGV4dCA9ICh7XG4gIHRleHQsXG4gIHRvb2x0aXBUZXh0LFxuICBoaWRlQ29weSA9IGZhbHNlLFxuICB0cnVuY2F0ZWQgPSB0cnVlLFxuICByZXZlcnNlZCA9IGZhbHNlLFxuICB3aWR0aCA9IGRlZmF1bHRXaWR0aFxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHRvb2x0aXBUZXh0VG9Vc2UgPSB0b29sdGlwVGV4dCB8fCB0KFwiZ2VuZXJhbC5jb3B5X3RvX2NsaXBib2FyZFwiKTtcbiAgY29uc3QgW3Rvb2x0aXAsIHNldFRvb2x0aXBdID0gUmVhY3QudXNlU3RhdGUodG9vbHRpcFRleHRUb1VzZSk7XG4gIGNvbnN0IGNsYXNzTmFtZXMgPSBgJHt0cnVuY2F0ZWQgJiYgc3R5bGVzLnRydW5jYXRlZH0gJHtcbiAgICByZXZlcnNlZCAmJiBzdHlsZXMucmV2ZXJzZWRcbiAgfWA7XG5cbiAgY29uc3QgaGFuZGxlQ29weSA9ICgpID0+IHtcbiAgICBuYXZpZ2F0b3IuY2xpcGJvYXJkLndyaXRlVGV4dCh0ZXh0KTtcbiAgICBzZXRUb29sdGlwKHQoXCJnZW5lcmFsLmNvcGllZFwiKSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRUb29sdGlwKHRvb2x0aXBUZXh0VG9Vc2UpO1xuICAgIH0sIE1JTExJU0VDX1RPX1NFQyk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPHNwYW4gY2xhc3NOYW1lPXtjbGFzc05hbWVzfSBzdHlsZT17eyB3aWR0aCB9fT5cbiAgICAgICAge3RleHR9XG4gICAgICA8L3NwYW4+XG4gICAgICB7IWhpZGVDb3B5ICYmIChcbiAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Rvb2x0aXB9PlxuICAgICAgICAgIDxDb250ZW50Q29weUljb25cbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvcHlJY29ufVxuICAgICAgICAgICAgb25DbGljaz17aGFuZGxlQ29weX1cbiAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwiY29weS1udW1iZXItYnV0dG9uXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuQ29weVRleHQucHJvcFR5cGVzID0ge1xuICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICB0b29sdGlwVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgaGlkZUNvcHk6IFByb3BUeXBlcy5ib29sLFxuICB0cnVuY2F0ZWQ6IFByb3BUeXBlcy5ib29sLFxuICByZXZlcnNlZDogUHJvcFR5cGVzLmJvb2wsXG4gIHdpZHRoOiBQcm9wVHlwZXMubnVtYmVyXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDb3B5VGV4dDtcbiIsImltcG9ydCB7IGNyZWF0ZUNvbnRleHQgfSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQobnVsbCk7XG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBBbGVydCwgU25hY2tiYXIsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IENoZWNrQ2lyY2xlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9DaGVja0NpcmNsZVwiO1xuaW1wb3J0IEVycm9ySWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FcnJvclwiO1xuXG5jb25zdCBDdXN0b21Ob3RpZmljYXRpb24gPSAoeyBvcGVuLCBvbkNsb3NlLCBtZXNzYWdlLCBzZXZlcml0eSB9KSA9PiB7XG4gIGlmICghbWVzc2FnZSkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8U25hY2tiYXJcbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgYW5jaG9yT3JpZ2luPXt7IHZlcnRpY2FsOiBcInRvcFwiLCBob3Jpem9udGFsOiBcImNlbnRlclwiIH19XG4gICAgICBhdXRvSGlkZUR1cmF0aW9uPXsyMDAwfVxuICAgID5cbiAgICAgIDxBbGVydFxuICAgICAgICBvbkNsb3NlPXtvbkNsb3NlfVxuICAgICAgICBzZXZlcml0eT17c2V2ZXJpdHl9XG4gICAgICAgIHZhcmlhbnQ9XCJmaWxsZWRcIlxuICAgICAgICBzeD17eyB3aWR0aDogXCIxMDAlXCIsIGJhY2tncm91bmRDb2xvcjogYCR7c2V2ZXJpdHl9LmxpZ2h0YCB9fVxuICAgICAgICBpY29uTWFwcGluZz17e1xuICAgICAgICAgIHN1Y2Nlc3M6IDxDaGVja0NpcmNsZUljb24gZm9udFNpemU9XCJpbmhlcml0XCIgLz4sXG4gICAgICAgICAgZXJyb3I6IDxFcnJvckljb24gZm9udFNpemU9XCJpbmhlcml0XCIgLz5cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCI+e21lc3NhZ2V9PC9UeXBvZ3JhcGh5PlxuICAgICAgPC9BbGVydD5cbiAgICA8L1NuYWNrYmFyPlxuICApO1xufTtcblxuQ3VzdG9tTm90aWZpY2F0aW9uLnByb3BUeXBlcyA9IHtcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBtZXNzYWdlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzZXZlcml0eTogUHJvcFR5cGVzLnN0cmluZ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tTm90aWZpY2F0aW9uO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgVGhlbWVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBjcmVhdGVUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5sZXQgZGFya0NvbG9yID0gXCJcIjtcbmlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gIC8vIEdldCB0aGUgcm9vdCBlbGVtZW50XG4gIGNvbnN0IHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG5cbiAgLy8gUmV0cmlldmUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgYSBDU1MgdmFyaWFibGVcbiAgZGFya0NvbG9yID0gZ2V0Q29tcHV0ZWRTdHlsZShyb290KS5nZXRQcm9wZXJ0eVZhbHVlKFxuICAgIFwiLS1jb2xvcl9iYWNrZ3JvdW5kX2RhcmtcIlxuICApO1xufVxuXG5jb25zdCB0aGVtZSA9IGNyZWF0ZVRoZW1lKHtcbiAgcGFsZXR0ZToge1xuICAgIHByaW1hcnk6IHtcbiAgICAgIG1haW46IGRhcmtDb2xvclxuICAgIH0sXG4gICAgdGV4dDoge1xuICAgICAgcHJpbWFyeTogXCIjMDAwMDAwREVcIixcbiAgICAgIHNlY29uZGFyeTogXCIjMDAwMDAwOTlcIixcbiAgICAgIGxpbms6IFwiIzIxOTZmM1wiXG4gICAgfVxuICB9LFxuICB0eXBvZ3JhcGh5OiB7XG4gICAgYm9keTE6IHtcbiAgICAgIGZvbnRTaXplOiBcIjE0cHhcIixcbiAgICAgIGZvbnRXZWlnaHQ6IDQwMFxuICAgIH0sXG4gICAgaDU6IHtcbiAgICAgIGZvbnRTaXplOiBcIjEuNmVtXCIsXG4gICAgICBmb250V2VpZ2h0OiA0MDAsXG4gICAgICBcIiYuTXVpVHlwb2dyYXBoeS1ndXR0ZXJCb3R0b21cIjoge1xuICAgICAgICBtYXJnaW5Cb3R0b206IFwiMjBweFwiXG4gICAgICB9XG4gICAgfSxcbiAgICBoNjoge1xuICAgICAgZm9udFNpemU6IFwiMS40ZW1cIixcbiAgICAgIGZvbnRXZWlnaHQ6IDUwMCxcbiAgICAgIFwiJi5NdWlUeXBvZ3JhcGh5LWd1dHRlckJvdHRvbVwiOiB7XG4gICAgICAgIG1hcmdpbkJvdHRvbTogXCIyMHB4XCJcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIGNvbXBvbmVudHM6IHtcbiAgICBNdWlGb3JtSGVscGVyVGV4dDoge1xuICAgICAgc3R5bGVPdmVycmlkZXM6IHtcbiAgICAgICAgcm9vdDoge1xuICAgICAgICAgIGZvbnRTaXplOiBcIi44ZW1cIlxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlCdXR0b246IHtcbiAgICAgIHN0eWxlT3ZlcnJpZGVzOiB7XG4gICAgICAgIHJvb3Q6IHtcbiAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIixcbiAgICAgICAgICBmb250V2VpZ2h0OiA1MDAsXG4gICAgICAgICAgbGluZUhlaWdodDogXCIyMnB4XCJcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTXVpVGFiOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICByb290OiB7XG4gICAgICAgICAgZm9udFNpemU6IFwiMTRweFwiLFxuICAgICAgICAgIGNvbG9yOiBcIiMwMDAwMDA5OVwiLFxuICAgICAgICAgIFwiJi5NdWktc2VsZWN0ZWRcIjoge1xuICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBNdWlUYWJzOiB7XG4gICAgICBzdHlsZU92ZXJyaWRlczoge1xuICAgICAgICBpbmRpY2F0b3I6IHtcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzIxOTZmM1wiXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn0pO1xuXG5jb25zdCBDdXN0b21UaGVtZSA9ICh7IGNoaWxkcmVuIH0pID0+IChcbiAgPFRoZW1lUHJvdmlkZXIgdGhlbWU9e3RoZW1lfT57Y2hpbGRyZW59PC9UaGVtZVByb3ZpZGVyPlxuKTtcblxuQ3VzdG9tVGhlbWUucHJvcFR5cGVzID0ge1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ3VzdG9tVGhlbWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1Hcm91cCxcbiAgRm9ybUhlbHBlclRleHQsXG4gIEZvcm1MYWJlbFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICB2YWx1ZSxcbiAgb25DaGFuZ2UsXG4gIHNldEZpZWxkVmFsdWUsXG4gIGVycm9yLFxuICBoZWxwZXJUZXh0LFxuICAuLi5yZXN0XG59KSA9PiB7XG4gIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxdWVzdGlvbi5uYW1lLCBxdWVzdGlvbi5pZCk7XG4gIGNvbnN0IHF1ZXN0aW9uTGFiZWwgPSBnZXRMYWJlbChxdWVzdGlvbik7XG4gIGNvbnN0IGlzUmVxdWlyZWQgPSBxdWVzdGlvbi5tYW5kYXRvcnk7XG4gIGNvbnN0IHF1ZXN0aW9uTWF4VmFsdWVzID0gcXVlc3Rpb24ubWF4X3NlbGVjdGVkX3ZhbHVlcztcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZC50b1N0cmluZygpXG4gICAgfSkpIHx8IFtdO1xuXG4gIGNvbnN0IGhhbmRsZUNoZWNrYm94TGlzdENoYW5nZSA9IChjaGVja2VkLCB2YWwpID0+IHtcbiAgICBjb25zdCBjdXJyZW50QW5zID0gdmFsdWUgfHwgW107XG4gICAgY29uc3QgbWF4U2VsZWN0aW9uUmVhY2hlZCA9XG4gICAgICBxdWVzdGlvbk1heFZhbHVlcyAhPT0gMCAmJiBjdXJyZW50QW5zLmxlbmd0aCA9PT0gcXVlc3Rpb25NYXhWYWx1ZXM7XG4gICAgbGV0IG5ld1ZhbHVlO1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld1ZhbHVlID0gbWF4U2VsZWN0aW9uUmVhY2hlZCA/IGN1cnJlbnRBbnMgOiBbLi4uY3VycmVudEFucywgdmFsXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3VmFsdWUgPSBjdXJyZW50QW5zLmZpbHRlcigodikgPT4gdiAhPT0gdmFsKTtcbiAgICB9XG5cbiAgICBzZXRGaWVsZFZhbHVlKHF1ZXN0aW9uU2x1ZywgbmV3VmFsdWUpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgPlxuICAgICAgICA8Rm9ybUxhYmVsPntxdWVzdGlvbkxhYmVsfTwvRm9ybUxhYmVsPlxuICAgICAgICB7ZXJyb3IgJiYgPEZvcm1IZWxwZXJUZXh0PntoZWxwZXJUZXh0ID8/IFwiIFwifTwvRm9ybUhlbHBlclRleHQ+fVxuICAgICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAga2V5PXtvcC5sYWJlbH1cbiAgICAgICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3ZhbHVlPy5pbmNsdWRlcyhvcC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGV2KSA9PlxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGVja2JveExpc3RDaGFuZ2UoZXYudGFyZ2V0LmNoZWNrZWQsIG9wLnZhbHVlKVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgdmFsdWU6IFByb3BUeXBlcy5hcnJheSxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveExpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQ2hlY2tib3gsXG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFJhd0hUTUwgZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvY29tcG9uZW50cy9yYXctaHRtbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IENoZWNrYm94UXVlc3Rpb25GaWVsZCA9ICh7XG4gIHF1ZXN0aW9uLFxuICBxdWVzdGlvbkNsYXNzTmFtZSA9IFwiXCIsXG4gIGlzRGlzYWJsZWQgPSBmYWxzZSxcbiAgY2hpbGRyZW4sXG4gIHZhbHVlLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUNvbnRyb2wgZnVsbFdpZHRoIG1hcmdpbj1cIm5vcm1hbFwiIGVycm9yPXtlcnJvcn0+XG4gICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgc3g9e3sgYWxpZ25JdGVtczogXCJmbGV4LXN0YXJ0XCIgfX1cbiAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXs8UmF3SFRNTD57cXVlc3Rpb25MYWJlbH08L1Jhd0hUTUw+fVxuICAgICAgICAgICAgICBzeD17eyBtYXJnaW5Ub3A6IC0xIH19XG4gICAgICAgICAgICAgIC8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nICovXG4gICAgICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICB9XG4gICAgICAgICAgbGFiZWw9ezxSYXdIVE1MPntxdWVzdGlvbkxhYmVsfTwvUmF3SFRNTD59XG4gICAgICAgICAgZGlzYWJsZWQ9e2lzRGlzYWJsZWR9XG4gICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIC8+XG4gICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5DaGVja2JveFF1ZXN0aW9uRmllbGQucHJvcFR5cGVzID0ge1xuICBxdWVzdGlvbjogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICB2YWx1ZTogUHJvcFR5cGVzLmJvb2wsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgZXJyb3I6IFByb3BUeXBlcy5ib29sLFxuICBoZWxwZXJUZXh0OiBQcm9wVHlwZXMuc3RyaW5nXG59O1xuXG5leHBvcnQgZGVmYXVsdCBDaGVja2JveFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgSW5wdXRMYWJlbCwgTWVudUl0ZW0sIFNlbGVjdCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBnZXRMYWJlbCwgdG9TbHVnIH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuY29uc3QgRHJvcGRvd25RdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBzZXRGaWVsZFZhbHVlLFxuICBjaGlsZHJlbixcbiAgZXJyb3IsXG4gIGhlbHBlclRleHQsXG4gIC4uLnJlc3Rcbn0pID0+IHtcbiAgY29uc3QgcXVlc3Rpb25TbHVnID0gdG9TbHVnKHF1ZXN0aW9uLm5hbWUsIHF1ZXN0aW9uLmlkKTtcbiAgY29uc3QgcXVlc3Rpb25MYWJlbCA9IGdldExhYmVsKHF1ZXN0aW9uKTtcbiAgY29uc3QgaXNSZXF1aXJlZCA9IHF1ZXN0aW9uLm1hbmRhdG9yeTtcblxuICBjb25zdCBxdWVzdGlvbk9wdGlvbnMgPVxuICAgIHF1ZXN0aW9uLnZhbHVlcz8ubWFwKCh2YWwpID0+ICh7XG4gICAgICBsYWJlbDogdmFsLmxhYmVsLFxuICAgICAgdmFsdWU6IHZhbC5pZFxuICAgIH0pKSB8fCBbXTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGtleT17cXVlc3Rpb25TbHVnfVxuICAgICAgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fY29udGFpbmVyYH1cbiAgICAgIGNsYXNzTmFtZT17cXVlc3Rpb25DbGFzc05hbWV9XG4gICAgPlxuICAgICAgPEZvcm1Db250cm9sXG4gICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIGVycm9yPXtlcnJvcn1cbiAgICAgID5cbiAgICAgICAgPElucHV0TGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0lucHV0TGFiZWw+XG4gICAgICAgIDxTZWxlY3RcbiAgICAgICAgICBsYWJlbElkPXtgJHtxdWVzdGlvblNsdWd9X2xhYmVsYH1cbiAgICAgICAgICBuYW1lPXtxdWVzdGlvblNsdWd9XG4gICAgICAgICAgaWQ9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICBsYWJlbD17cXVlc3Rpb25MYWJlbH1cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkJvdHRvbTogMjAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHtxdWVzdGlvbk9wdGlvbnMubWFwKChvcCkgPT4gKFxuICAgICAgICAgICAgPE1lbnVJdGVtIGtleT17b3AubGFiZWx9IHZhbHVlPXtvcC52YWx1ZX0+XG4gICAgICAgICAgICAgIHtvcC5sYWJlbH1cbiAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU2VsZWN0PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuRHJvcGRvd25RdWVzdGlvbkZpZWxkLnByb3BUeXBlcyA9IHtcbiAgcXVlc3Rpb246IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgcXVlc3Rpb25DbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gIGlzRGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGVycm9yOiBQcm9wVHlwZXMuYm9vbCxcbiAgaGVscGVyVGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0RmllbGRWYWx1ZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duUXVlc3Rpb25GaWVsZDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEZvcm1Db250cm9sLFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBGb3JtSGVscGVyVGV4dCxcbiAgRm9ybUxhYmVsLFxuICBSYWRpbyxcbiAgUmFkaW9Hcm91cFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFJhZGlvTGlzdFF1ZXN0aW9uRmllbGQgPSAoe1xuICBxdWVzdGlvbixcbiAgcXVlc3Rpb25DbGFzc05hbWUgPSBcIlwiLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGNoaWxkcmVuLFxuICBlcnJvcixcbiAgaGVscGVyVGV4dCxcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIGNvbnN0IHF1ZXN0aW9uT3B0aW9ucyA9XG4gICAgcXVlc3Rpb24udmFsdWVzPy5tYXAoKHZhbCkgPT4gKHtcbiAgICAgIGxhYmVsOiB2YWwubGFiZWwsXG4gICAgICB2YWx1ZTogdmFsLmlkLnRvU3RyaW5nKClcbiAgICB9KSkgfHwgW107XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgIGlkPXtgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmB9XG4gICAgICBjbGFzc05hbWU9e3F1ZXN0aW9uQ2xhc3NOYW1lfVxuICAgID5cbiAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XG4gICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICBlcnJvcj17ZXJyb3J9XG4gICAgICA+XG4gICAgICAgIDxGb3JtTGFiZWwgaWQ9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfT57cXVlc3Rpb25MYWJlbH08L0Zvcm1MYWJlbD5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgICAgPFJhZGlvR3JvdXBcbiAgICAgICAgICBhcmlhLWxhYmVsbGVkYnk9e2Ake3F1ZXN0aW9uU2x1Z31fbGFiZWxgfVxuICAgICAgICAgIG5hbWU9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgICAvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvanN4LXByb3BzLW5vLXNwcmVhZGluZyAqL1xuICAgICAgICAgIHsuLi5yZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3F1ZXN0aW9uT3B0aW9ucy5tYXAoKG9wKSA9PiAoXG4gICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICBrZXk9e29wLmxhYmVsfVxuICAgICAgICAgICAgICB2YWx1ZT17b3AudmFsdWV9XG4gICAgICAgICAgICAgIGNvbnRyb2w9ezxSYWRpbyAvPn1cbiAgICAgICAgICAgICAgbGFiZWw9e29wLmxhYmVsfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICA8L0Zvcm1Db250cm9sPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuUmFkaW9MaXN0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBlcnJvcjogUHJvcFR5cGVzLmJvb2wsXG4gIGhlbHBlclRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHNldEZpZWxkVmFsdWU6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgRm9ybUdyb3VwLCBUZXh0RmllbGQgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0TGFiZWwsIHRvU2x1ZyB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmNvbnN0IFRleHRRdWVzdGlvbkZpZWxkID0gKHtcbiAgcXVlc3Rpb24sXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJcIixcbiAgaXNEaXNhYmxlZCA9IGZhbHNlLFxuICBjaGlsZHJlbixcbiAgc2V0RmllbGRWYWx1ZSxcbiAgLi4ucmVzdFxufSkgPT4ge1xuICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocXVlc3Rpb24ubmFtZSwgcXVlc3Rpb24uaWQpO1xuICBjb25zdCBxdWVzdGlvbkxhYmVsID0gZ2V0TGFiZWwocXVlc3Rpb24pO1xuICBjb25zdCBpc1JlcXVpcmVkID0gcXVlc3Rpb24ubWFuZGF0b3J5O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAga2V5PXtxdWVzdGlvblNsdWd9XG4gICAgICBpZD17YCR7cXVlc3Rpb25TbHVnfV9jb250YWluZXJgfVxuICAgICAgY2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICA+XG4gICAgICA8Rm9ybUdyb3VwPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgbmFtZT17cXVlc3Rpb25TbHVnfVxuICAgICAgICAgIGxhYmVsPXtxdWVzdGlvbkxhYmVsfVxuICAgICAgICAgIGRpc2FibGVkPXtpc0Rpc2FibGVkfVxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucmVzdH1cbiAgICAgICAgLz5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9Gb3JtR3JvdXA+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuXG5UZXh0UXVlc3Rpb25GaWVsZC5wcm9wVHlwZXMgPSB7XG4gIHF1ZXN0aW9uOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBpc0Rpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICBzZXRGaWVsZFZhbHVlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGV4dFF1ZXN0aW9uRmllbGQ7XG4iLCJpbXBvcnQge1xuICBRdWVzdGlvblR5cGVfQ2hlY2tib3gsXG4gIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QsXG4gIFF1ZXN0aW9uVHlwZV9Db21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCxcbiAgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdFxufSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmV4cG9ydCBjb25zdCBjaGVja1J1bGUgPSAodmFsdWUsIHJ1bGUpID0+IHtcbiAgY29uc3QgdmFsdWVzID0gcnVsZS5hbnN3ZXJfdmFsdWVzO1xuXG4gIGlmICghdmFsdWUpIHJldHVybiBmYWxzZTtcblxuICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICBpZiAoIXZhbHVlLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgIGxldCByZXMgPSBydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCI7XG4gICAgdmFsdWVzLmZvckVhY2goKHYpID0+IHtcbiAgICAgIGlmIChydWxlLmFuc3dlcl92YWx1ZXNfb3BlcmF0b3IgPT09IFwiQW5kXCIpIHtcbiAgICAgICAgcmVzID0gcmVzICYmIHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3JcbiAgICAgICAgcmVzID0gcmVzIHx8IHZhbHVlLmluY2x1ZGVzKHYpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiByZXM7XG4gIH1cbiAgcmV0dXJuIHZhbHVlcy5pbmNsdWRlcyh2YWx1ZT8udG9TdHJpbmcoKSk7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tWaXNpYmlsaXR5ID0gKHJ1bGUsIHJ1bGVSZXN1bHQpID0+IHtcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eSA9PT0gXCJWaXNpYmxlXCIpIHtcbiAgICBpZiAocnVsZS52aXNpYmlsaXR5X2NvbmRpdGlvbiA9PT0gXCJFcXVhbFwiKSB7XG4gICAgICByZXR1cm4gISFydWxlUmVzdWx0O1xuICAgIH1cbiAgICAvLyBOb24gRXF1YWxcbiAgICByZXR1cm4gIXJ1bGVSZXN1bHQ7XG4gIH1cbiAgLy8gbm90IHZpc2libGVcbiAgaWYgKHJ1bGUudmlzaWJpbGl0eV9jb25kaXRpb24gPT09IFwiRXF1YWxcIikge1xuICAgIHJldHVybiAhcnVsZVJlc3VsdDtcbiAgfVxuICByZXR1cm4gISFydWxlUmVzdWx0O1xufTtcblxuZXhwb3J0IGNvbnN0IHRvU2x1ZyA9ICh0ZXh0LCBxdWVzdGlvbklkKSA9PiB7XG4gIGNvbnN0IHRleHRMQyA9IHRleHQudG9Mb3dlckNhc2UoKTtcbiAgcmV0dXJuIGAke3RleHRMQy5yZXBsYWNlKC9bXmEtekEtWjAtOV0rL2csIFwiX1wiKX1fJHtxdWVzdGlvbklkfWA7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0TGFiZWwgPSAocSkgPT5cbiAgLy8gcmVwbGFjZSBsaW5lIGJyZWFrcyBhbmQgcmVtb3ZlIG91dGVyIDxwPlxuICBxPy5sYWJlbD8ucmVwbGFjZSgvXFxuL2csIFwiIFwiKS5yZXBsYWNlKC88cD4oLiopPFxcL3A+L2dpLCBcIiQxXCIpO1xuXG5leHBvcnQgY29uc3QgaXNBbnN3ZXJlZCA9IChhbnN3ZXIpID0+IHtcbiAgaWYgKCFhbnN3ZXIpIHJldHVybiBmYWxzZTtcbiAgLy8gY2hlY2sgdHlwZVxuICBpZiAoQXJyYXkuaXNBcnJheShhbnN3ZXIpKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcInN0cmluZ1wiKSByZXR1cm4gYW5zd2VyLmxlbmd0aCA+IDA7XG4gIGlmICh0eXBlb2YgYW5zd2VyID09PSBcIm51bWJlclwiKSByZXR1cm4gYW5zd2VyID4gMDtcbiAgaWYgKHR5cGVvZiBhbnN3ZXIgPT09IFwiYm9vbGVhblwiKSByZXR1cm4gYW5zd2VyO1xuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tJZlZhbHVlTWF0Y2ggPSAoYW5zd2VyLCBjb21wYXJlVmFsKSA9PiB7XG4gIGNvbnN0IGFuc3dlckFycmF5ID0gQXJyYXkuaXNBcnJheShhbnN3ZXIpID8gYW5zd2VyIDogW2Fuc3dlcl07XG5cbiAgcmV0dXJuIGFuc3dlckFycmF5LnNvbWUoKHYpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjb21wYXJlVmFsKSkge1xuICAgICAgcmV0dXJuIGNvbXBhcmVWYWwuaW5jbHVkZXMoYCR7dn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke3Z9YCA9PT0gYCR7Y29tcGFyZVZhbH1gO1xuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRUeXBlSW5pdGlhbFZhbHVlID0gKHEpID0+IHtcbiAgc3dpdGNoIChxLnR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9SYWRpb0J1dHRvbkxpc3Q6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3Q6XG4gICAgICByZXR1cm4gW107XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBcIlwiO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbHVlID0gKGFucywgdHlwZSkgPT4ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHJldHVybiBhbnMgPT09IFwidHJ1ZVwiO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHJldHVybiBhbnM/LnNwbGl0KFwiLFwiKSB8fCBbXTtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICByZXR1cm4gYW5zIHx8IFwiXCI7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OlxuICAgICAgcmV0dXJuIGFucyB8fCBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gYW5zO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgdHJhbnNmb3JtQW53ZXJzRm9ybWF0ID0gKGFuc3dlcnMpID0+IHtcbiAgY29uc3Qge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICAuLi5leHRyYV9xdWVzdGlvbnNcbiAgfSA9IGFuc3dlcnM7XG5cbiAgY29uc3QgZm9ybWF0dGVkRVEgPSBPYmplY3QuZW50cmllcyhleHRyYV9xdWVzdGlvbnMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgIHF1ZXN0aW9uX2lkOiBwYXJzZUludChrZXkuc3BsaXQoXCJfXCIpLnBvcCgpLCAxMCksXG4gICAgYW5zd2VyOiB2YWx1ZT8udG9TdHJpbmcoKSB8fCBudWxsXG4gIH0pKTtcblxuICByZXR1cm4ge1xuICAgIGF0dGVuZGVlX2VtYWlsLFxuICAgIGF0dGVuZGVlX2ZpcnN0X25hbWUsXG4gICAgYXR0ZW5kZWVfbGFzdF9uYW1lLFxuICAgIGF0dGVuZGVlX2NvbXBhbnksXG4gICAgZGlzY2xhaW1lcl9hY2NlcHRlZCxcbiAgICBleHRyYV9xdWVzdGlvbnM6IGZvcm1hdHRlZEVRXG4gIH07XG59O1xuIiwiZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9UZXh0ID0gXCJUZXh0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1RleHRBcmVhID0gXCJUZXh0QXJlYVwiO1xuZXhwb3J0IGNvbnN0IFF1ZXN0aW9uVHlwZV9DaGVja2JveCA9IFwiQ2hlY2tCb3hcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0ID0gXCJSYWRpb0J1dHRvbkxpc3RcIjtcbmV4cG9ydCBjb25zdCBRdWVzdGlvblR5cGVfQ29tYm9Cb3ggPSBcIkNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCA9IFwiQ2hlY2tCb3hMaXN0XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX0NvdW50cnlDb21ib0JveCA9IFwiQ291bnRyeUNvbWJvQm94XCI7XG5leHBvcnQgY29uc3QgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uID0gXCJSYWRpb0J1dHRvblwiO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuXG5pbXBvcnQge1xuICB0b1NsdWcsXG4gIGlzQW5zd2VyZWQsXG4gIGNoZWNrVmlzaWJpbGl0eSxcbiAgY2hlY2tSdWxlXG59IGZyb20gXCIuL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0LFxuICBRdWVzdGlvblR5cGVfVGV4dCxcbiAgUXVlc3Rpb25UeXBlX1RleHRBcmVhXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRleHRRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvVGV4dFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBDaGVja2JveFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveFF1ZXN0aW9uRmllbGRcIjtcbmltcG9ydCBSYWRpb0xpc3RRdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvUmFkaW9MaXN0UXVlc3Rpb25GaWVsZFwiO1xuaW1wb3J0IENoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQgZnJvbSBcIi4vY29tcG9uZW50cy9DaGVja2JveExpc3RRdWVzdGlvbkZpZWxkXCI7XG5pbXBvcnQgRHJvcGRvd25RdWVzdGlvbkZpZWxkIGZyb20gXCIuL2NvbXBvbmVudHMvRHJvcGRvd25RdWVzdGlvbkZpZWxkXCI7XG5cbmNvbnN0IGdldFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSAocXVlc3Rpb25UeXBlKSA9PiB7XG4gIHN3aXRjaCAocXVlc3Rpb25UeXBlKSB7XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dEFyZWE6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfVGV4dDoge1xuICAgICAgcmV0dXJuIFRleHRRdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDoge1xuICAgICAgcmV0dXJuIENoZWNrYm94UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0OiB7XG4gICAgICByZXR1cm4gUmFkaW9MaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ2hlY2tCb3hMaXN0OiB7XG4gICAgICByZXR1cm4gQ2hlY2tib3hMaXN0UXVlc3Rpb25GaWVsZDtcbiAgICB9XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94OlxuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NvbWJvQm94OiB7XG4gICAgICByZXR1cm4gRHJvcGRvd25RdWVzdGlvbkZpZWxkO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gUmVhY3QuRnJhZ21lbnQ7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyA9ICh7XG4gIGV4dHJhUXVlc3Rpb25zLFxuICBjbGFzc05hbWUgPSBcImV4dHJhUXVlc3Rpb25zXCIsXG4gIHF1ZXN0aW9uQ2xhc3NOYW1lID0gXCJleHRyYVF1ZXN0aW9uXCIsXG4gIHJlYWRPbmx5ID0gZmFsc2UsXG4gIGFsbG93RWRpdCA9IHRydWUsXG4gIGZvcm1pa1xufSkgPT4ge1xuICBjb25zdCByZW5kZXJSdWxlID0gKHJ1bGUsIHF1ZXN0aW9uU2x1ZykgPT4ge1xuICAgIGNvbnN0IHJ1bGVSZXN1bHQgPSBjaGVja1J1bGUoZm9ybWlrLnZhbHVlc1txdWVzdGlvblNsdWddLCBydWxlKTtcbiAgICBjb25zdCBpc1Zpc2libGUgPSBjaGVja1Zpc2liaWxpdHkocnVsZSwgcnVsZVJlc3VsdCk7XG5cbiAgICBpZiAoaXNWaXNpYmxlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdXNlLWJlZm9yZS1kZWZpbmVcbiAgICAgIHJldHVybiByZW5kZXJRdWVzdGlvbihydWxlLnN1Yl9xdWVzdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5cbiAgY29uc3QgcmVuZGVyUXVlc3Rpb24gPSAocSkgPT4ge1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhxLm5hbWUsIHEuaWQpO1xuICAgIC8vIGRpc2FibGUgZmllbGQgaWYgZWRpdCBpc24ndCBhbGxvd2VkIGFuZCB0aGUgcXVlc3Rpb25zIGlzIGFuc3dlcmVkXG4gICAgY29uc3QgaXNEaXNhYmxlZCA9XG4gICAgICAoIWFsbG93RWRpdCAmJiBpc0Fuc3dlcmVkKGZvcm1pay52YWx1ZXNbcXVlc3Rpb25TbHVnXSkpIHx8IHJlYWRPbmx5O1xuICAgIGNvbnN0IFF1ZXN0aW9uRmllbGRDb21wb25lbnQgPSBnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50KHEudHlwZSk7XG5cbiAgICBjb25zdCBmb3JtaWtQcm9wcyA9IHtcbiAgICAgIHZhbHVlOiBmb3JtaWsudmFsdWVzW3F1ZXN0aW9uU2x1Z10sXG4gICAgICBvbkNoYW5nZTogZm9ybWlrLmhhbmRsZUNoYW5nZSxcbiAgICAgIG9uQmx1cjogZm9ybWlrLmhhbmRsZUJsdXIsXG4gICAgICBlcnJvcjpcbiAgICAgICAgZm9ybWlrLnRvdWNoZWRbcXVlc3Rpb25TbHVnXSAmJiBCb29sZWFuKGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSksXG4gICAgICBoZWxwZXJUZXh0OiBmb3JtaWsudG91Y2hlZFtxdWVzdGlvblNsdWddICYmIGZvcm1pay5lcnJvcnNbcXVlc3Rpb25TbHVnXSxcbiAgICAgIHNldEZpZWxkVmFsdWU6IGZvcm1pay5zZXRGaWVsZFZhbHVlXG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UXVlc3Rpb25GaWVsZENvbXBvbmVudFxuICAgICAgICBrZXk9e3F1ZXN0aW9uU2x1Z31cbiAgICAgICAgcXVlc3Rpb249e3F9XG4gICAgICAgIHF1ZXN0aW9uQ2xhc3NOYW1lPXtxdWVzdGlvbkNsYXNzTmFtZX1cbiAgICAgICAgaXNEaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgey4uLmZvcm1pa1Byb3BzfVxuICAgICAgPlxuICAgICAgICB7cS5zdWJfcXVlc3Rpb25fcnVsZXM/Lm1hcCgocnVsZSkgPT4gcmVuZGVyUnVsZShydWxlLCBxdWVzdGlvblNsdWcpKX1cbiAgICAgIDwvUXVlc3Rpb25GaWVsZENvbXBvbmVudD5cbiAgICApO1xuICB9O1xuXG4gIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT57ZXh0cmFRdWVzdGlvbnMubWFwKHJlbmRlclF1ZXN0aW9uKX08L2Rpdj47XG59O1xuXG5FeHRyYVF1ZXN0aW9uc0ZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGV4dHJhUXVlc3Rpb25zOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBxdWVzdGlvbkNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgYWxsb3dFZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgcmVhZE9ubHk6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBGb3JtQ29udHJvbExhYmVsLFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnQsXG4gIFJhZGlvR3JvdXAsXG4gIFJhZGlvXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgRXhwYW5kTW9yZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IHsgRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuXG5jb25zdCBBc3NpZ25lZEZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRDogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiTWVcIiwgbGFiZWw6IFwiTWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiU29tZW9uZUVsc2VcIiwgbGFiZWw6IFwiU29tZW9uZSBFbHNlXCIgfSxcbiAgICB7IHZhbHVlOiBcIk5vYm9keVwiLCBsYWJlbDogXCJOb2JvZHlcIiB9XG4gIF07XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKGV2LCB2YWx1ZSkgPT4ge1xuICAgIGNvbnN0IG5ld0ZpbHRlciA9IHZhbHVlO1xuICAgIG9uRmlsdGVyKHtcbiAgICAgIFtGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF06IG5ld0ZpbHRlclxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQXNzaWduZWRcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAgPFJhZGlvR3JvdXAgdmFsdWU9e2ZpbHRlclZhbHVlc30gb25DaGFuZ2U9e2hhbmRsZUZpbHRlckNoYW5nZX0+XG4gICAgICAgICAgICB7YXNzaWduZWRWYWx1ZXMubWFwKChhc3NpZ25lZCkgPT4gKFxuICAgICAgICAgICAgICA8Qm94XG4gICAgICAgICAgICAgICAgc3g9e3sgcHk6IDEgfX1cbiAgICAgICAgICAgICAgICBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2Fzc2lnbmVkLmxhYmVsfX1gfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEZvcm1Db250cm9sTGFiZWxcbiAgICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgICA8UmFkaW9cbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17YXNzaWduZWQudmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjogeyBjb2xvcjogXCIjMjE5NkYzXCIgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBsYWJlbD17YXNzaWduZWQubGFiZWx9XG4gICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L1JhZGlvR3JvdXA+XG4gICAgICAgIDwvQ2FyZENvbnRlbnQ+XG4gICAgICA8L0NvbGxhcHNlPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuQXNzaWduZWRGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnbmVkRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgRm9ybUNvbnRyb2xMYWJlbCxcbiAgQ2hlY2tib3gsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudFxufSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEV4cGFuZE1vcmVJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0V4cGFuZE1vcmVcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEJhZGdlRmVhdHVyZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyBiYWRnZV9mZWF0dXJlc190eXBlcyB9LFxuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkU6IGZpbHRlclZhbHVlcyB9XG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIGNvbnN0IFtpc0V4cGFuZGVkLCBzZXRJc0V4cGFuZGVkXSA9IHVzZVN0YXRlKCEhZmlsdGVyVmFsdWVzLmxlbmd0aCk7XG5cbiAgY29uc3QgaGFuZGxlRmlsdGVyQ2hhbmdlID0gKHZhbHVlKSA9PiB7XG4gICAgY29uc3QgbmV3RmlsdGVycyA9IGZpbHRlclZhbHVlcz8uaW5jbHVkZXModmFsdWUpXG4gICAgICA/IGZpbHRlclZhbHVlcy5maWx0ZXIoKGYpID0+IGYgIT09IHZhbHVlKVxuICAgICAgOiBbLi4uZmlsdGVyVmFsdWVzLCB2YWx1ZV07XG4gICAgb25GaWx0ZXIoe1xuICAgICAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiQmFkZ2UgRmVhdHVyZVwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YmFkZ2VfZmVhdHVyZXNfdHlwZXMubWFwKChiZikgPT4gKFxuICAgICAgICAgICAgPEJveCBzeD17eyBweTogMSB9fSBrZXk9e2BmaWx0ZXItYmFkZ2UtZmVhdHVyZS0ke2JmLm5hbWV9fWB9PlxuICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBoYW5kbGVGaWx0ZXJDaGFuZ2UoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtmaWx0ZXJWYWx1ZXMuaW5jbHVkZXMoYmYuaWQpfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHsgZm9udFNpemU6IDE4IH0sXG4gICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiBcIiMyMTk2RjNcIlxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGxhYmVsPXtiZi5uYW1lfVxuICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICBcIiYgLk11aUZvcm1Db250cm9sTGFiZWwtbGFiZWxcIjoge1xuICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5CYWRnZUZlYXR1cmVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEJhZGdlRmVhdHVyZUZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IEZpbHRlckxpc3RJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIjtcbmltcG9ydCB7XG4gIEJhZGdlLFxuICBCb3gsXG4gIEJ1dHRvbixcbiAgQ2FyZCxcbiAgQ2FyZEhlYWRlcixcbiAgRGl2aWRlcixcbiAgUGFwZXJcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IGNvbm5lY3QgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBCYWRnZUZlYXR1cmVGaWx0ZXIgZnJvbSBcIi4vQmFkZ2VGZWF0dXJlRmlsdGVyXCI7XG5pbXBvcnQge1xuICBGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUsXG4gIEZJTFRFUl9WQVJfRlJFRV9QQUlELFxuICBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIEZJTFRFUl9WQVJfVElDS0VUX0FTU0lHTkVELFxuICBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGlja2V0VHlwZUZpbHRlciBmcm9tIFwiLi9UaWNrZXRUeXBlRmlsdGVyXCI7XG5pbXBvcnQgQXNzaWduZWRGaWx0ZXIgZnJvbSBcIi4vQXNzaWduZWRGaWx0ZXJcIjtcbmltcG9ydCBTdGF0dXNGaWx0ZXIgZnJvbSBcIi4vU3RhdHVzRmlsdGVyXCI7XG5pbXBvcnQgRnJlZVBhaWRGaWx0ZXIgZnJvbSBcIi4vRnJlZVBhaWRGaWx0ZXJcIjtcbmltcG9ydCBQcm9tb0NvZGVGaWx0ZXIgZnJvbSBcIi4vUHJvbW9Db2RlRmlsdGVyXCI7XG5cbmNvbnN0IEZpbHRlciA9ICh7IG9uRmlsdGVyLCBvblJlc2V0LCBmaWx0ZXIsIGFjdGl2ZUZpbHRlcnNDb3VudCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW3Nob3dGaWx0ZXJMaXN0LCBzZXRTaG93RmlsdGVyTGlzdF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtzaG93RGF0ZXBpY2tlciwgc2V0U2hvd0RhdGVwaWNrZXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBmaWx0ZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSA9IChldmVudCkgPT4ge1xuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCAmJiAhZmlsdGVyUmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgaWYgKHNob3dGaWx0ZXJMaXN0KSB7XG4gICAgICAgIHNldFNob3dGaWx0ZXJMaXN0KGZhbHNlKTtcbiAgICAgICAgc2V0U2hvd0RhdGVwaWNrZXIoZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgaGFuZGxlRmlsdGVyQ2xpY2tPdXRzaWRlLCBmYWxzZSk7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJjbGlja1wiLCBoYW5kbGVGaWx0ZXJDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd0ZpbHRlckxpc3RdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd0ZpbHRlckxpc3QoIXNob3dGaWx0ZXJMaXN0KTtcbiAgICBzZXRTaG93RGF0ZXBpY2tlcighc2hvd0RhdGVwaWNrZXIpO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlclJlc2V0ID0gKCkgPT4ge1xuICAgIG9uUmVzZXQoKTtcbiAgICB0b2dnbGUoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZmlsdGVyQ29udGFpbmVyfSByZWY9e2ZpbHRlclJlZn0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgYWxpZ25JdGVtcz1cImNlbnRlclwiXG4gICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgIHN4PXt7IHB0OiAyLCBwYjogMiB9fVxuICAgICAgICBvbkNsaWNrPXt0b2dnbGV9XG4gICAgICA+XG4gICAgICAgIDxCYWRnZSBiYWRnZUNvbnRlbnQ9e2FjdGl2ZUZpbHRlcnNDb3VudH0gY29sb3I9XCJwcmltYXJ5XCIgc3g9e3sgbXI6IDEgfX0+XG4gICAgICAgICAgPEZpbHRlckxpc3RJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJJY29ufSAvPlxuICAgICAgICA8L0JhZGdlPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5maWx0ZXJMYWJlbH0+e3QoXCJmaWx0ZXIuZmlsdGVyXCIpfTwvc3Bhbj5cbiAgICAgIDwvU3RhY2s+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmZpbHRlckxpc3RDb250YWluZXJ9ICR7c3R5bGVzLmNvbnRhaW5lcn0gJHtcbiAgICAgICAgICBzaG93RmlsdGVyTGlzdCA/IHN0eWxlcy5zaG93RmlsdGVyTGlzdCA6IFwiXCJcbiAgICAgICAgfWB9XG4gICAgICA+XG4gICAgICAgIDxQYXBlciBlbGV2YXRpb249ezh9IGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlckNoZWNrYm94Q29udGFpbmVyfT5cbiAgICAgICAgICA8Q2FyZCB2YXJpYW50PVwib3V0bGluZWRcIj5cbiAgICAgICAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgICAgICAgIHRpdGxlPVwiRmlsdGVyc1wiXG4gICAgICAgICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgZGlzYWJsZVJpcHBsZVxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlRmlsdGVyUmVzZXR9XG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jbGVhbkJ1dHRvbn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7dChcImZpbHRlci5jbGVhclwiKX1cbiAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxEaXZpZGVyIC8+XG4gICAgICAgICAgICA8QmFkZ2VGZWF0dXJlRmlsdGVyXG4gICAgICAgICAgICAgIHZhbHVlcz17ZmlsdGVyW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxBc3NpZ25lZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxTdGF0dXNGaWx0ZXJcbiAgICAgICAgICAgICAgdmFsdWVzPXtmaWx0ZXJbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdfVxuICAgICAgICAgICAgICBvbkZpbHRlcj17KG5ld0ZpbHRlcikgPT4gb25GaWx0ZXIobmV3RmlsdGVyKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8VGlja2V0VHlwZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1RJQ0tFVF9UWVBFXX1cbiAgICAgICAgICAgICAgb25GaWx0ZXI9eyhuZXdGaWx0ZXIpID0+IG9uRmlsdGVyKG5ld0ZpbHRlcil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPFByb21vQ29kZUZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX1BST01PQ09ERV19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxGcmVlUGFpZEZpbHRlclxuICAgICAgICAgICAgICB2YWx1ZXM9e2ZpbHRlcltGSUxURVJfVkFSX0ZSRUVfUEFJRF19XG4gICAgICAgICAgICAgIG9uRmlsdGVyPXsobmV3RmlsdGVyKSA9PiBvbkZpbHRlcihuZXdGaWx0ZXIpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIDwvUGFwZXI+XG4gICAgICA8L0JveD5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gKHsgd2lkZ2V0U3RhdGUgfSkgPT4gKHtcbiAgc29ydDogd2lkZ2V0U3RhdGUuc29ydCxcbiAgZmlsdGVyOiB3aWRnZXRTdGF0ZS5maWx0ZXIsXG4gIGFjdGl2ZUZpbHRlcnNDb3VudDogd2lkZ2V0U3RhdGUuYWN0aXZlRmlsdGVyc0NvdW50XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShGaWx0ZXIpO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX0ZSRUVfUEFJRCB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IEZyZWVQYWlkRmlsdGVyID0gKHsgb25GaWx0ZXIgfSkgPT4ge1xuICBjb25zdCB7XG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfRlJFRV9QQUlEOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBbaXNFeHBhbmRlZCwgc2V0SXNFeHBhbmRlZF0gPSB1c2VTdGF0ZSghIWZpbHRlclZhbHVlcyk7XG5cbiAgY29uc3QgYXNzaWduZWRWYWx1ZXMgPSBbXG4gICAgeyB2YWx1ZTogXCJGcmVlXCIsIGxhYmVsOiBcIkZyZWVcIiB9LFxuICAgIHsgdmFsdWU6IFwiUGFpZFwiLCBsYWJlbDogXCJQYWlkXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIkZyZWUgLyBQYWlkXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGl0bGVXcmFwcGVyfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRJc0V4cGFuZGVkKCFpc0V4cGFuZGVkKX1cbiAgICAgICAgYWN0aW9uPXtcbiAgICAgICAgICA8SWNvbkJ1dHRvbiBhcmlhLWxhYmVsPVwiZXhwYW5kXCIgZGlzYWJsZVJpcHBsZT5cbiAgICAgICAgICAgIDxFeHBhbmRNb3JlSWNvblxuICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgIHRyYW5zZm9ybTogaXNFeHBhbmRlZCA/IFwicm90YXRlKDE4MGRlZylcIiA6IFwicm90YXRlKDBkZWcpXCIsXG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogXCJ0cmFuc2Zvcm0gMC4zc1wiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgICAgfVxuICAgICAgLz5cbiAgICAgIDxDb2xsYXBzZSBpbj17aXNFeHBhbmRlZH0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0PlxuICAgICAgICA8Q2FyZENvbnRlbnRcbiAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgcHk6IDAsXG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHBiOiAwXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxSYWRpb0dyb3VwIHZhbHVlPXtmaWx0ZXJWYWx1ZXN9IG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9PlxuICAgICAgICAgICAge2Fzc2lnbmVkVmFsdWVzLm1hcCgoYXNzaWduZWQpID0+IChcbiAgICAgICAgICAgICAgPEJveFxuICAgICAgICAgICAgICAgIHN4PXt7IHB5OiAxIH19XG4gICAgICAgICAgICAgICAga2V5PXtgZmlsdGVyLWJhZGdlLWZlYXR1cmUtJHthc3NpZ25lZC5sYWJlbH19YH1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgICBjb250cm9sPXtcbiAgICAgICAgICAgICAgICAgICAgPFJhZGlvXG4gICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2Fzc2lnbmVkLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBcIiYgLk11aVN2Z0ljb24tcm9vdFwiOiB7IGZvbnRTaXplOiAxOCB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgXCImLk11aS1jaGVja2VkXCI6IHsgY29sb3I6IFwiIzIxOTZGM1wiIH1cbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2Fzc2lnbmVkLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlGb3JtQ29udHJvbExhYmVsLWxhYmVsXCI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBmb250U2l6ZTogXCIxZW1cIlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9SYWRpb0dyb3VwPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbkZyZWVQYWlkRmlsdGVyLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGcmVlUGFpZEZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7XG4gIEJveCxcbiAgQ2FyZEhlYWRlcixcbiAgSWNvbkJ1dHRvbixcbiAgQ29sbGFwc2UsXG4gIENhcmRDb250ZW50LFxuICBUZXh0RmllbGRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1BST01PQ09ERSB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFByb21vQ29kZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX1BST01PQ09ERTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuICBjb25zdCBbcHJvbW9Db2RlLCBzZXRQcm9tb0NvZGVdID0gdXNlU3RhdGUoZmlsdGVyVmFsdWVzIHx8IFwiXCIpO1xuXG4gIGNvbnN0IGRlYm91bmNlVGltZXIgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IERFQk9VTkNFX1ZBTFVFID0gNTAwO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0UHJvbW9Db2RlKGZpbHRlclZhbHVlcyB8fCBcIlwiKTtcbiAgICBzZXRJc0V4cGFuZGVkKCEhZmlsdGVyVmFsdWVzKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldikgPT4ge1xuICAgIGNvbnN0IG5ld1Byb21vQ29kZSA9IGV2LnRhcmdldC52YWx1ZTtcbiAgICAvLyB1cGRhdGUgbG9jYWwgc3RhdGUgc28gdGhlIGlucHV0IHJlZmxlY3RzIGNoYW5nZXNcbiAgICBzZXRQcm9tb0NvZGUobmV3UHJvbW9Db2RlKTtcblxuICAgIC8vIHJlbW92ZSBjdXJyZW50IGRlYm91bmNlXG4gICAgaWYgKGRlYm91bmNlVGltZXIuY3VycmVudCkge1xuICAgICAgY2xlYXJUaW1lb3V0KGRlYm91bmNlVGltZXIuY3VycmVudCk7XG4gICAgfVxuXG4gICAgLy8gZGVib3VuY2Ugc2V0IHRvIDUwMCBtc1xuICAgIGRlYm91bmNlVGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgb25GaWx0ZXIoe1xuICAgICAgICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBuZXdQcm9tb0NvZGVcbiAgICAgIH0pO1xuICAgIH0sIERFQk9VTkNFX1ZBTFVFKTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIHJlbW92ZSBkZWJvdW5jZSBvbiByZWxvYWRcbiAgICBpZiAoZGVib3VuY2VUaW1lci5jdXJyZW50KSB7XG4gICAgICBjbGVhclRpbWVvdXQoZGVib3VuY2VUaW1lci5jdXJyZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlByb21vIENvZGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiIzAwMDAwMDBBXCIsXG4gICAgICAgICAgICBcIiY6bGFzdC1jaGlsZFwiOiB7XG4gICAgICAgICAgICAgIHB5OiAxXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVudGVyIHByb21vIGNvZGVcIlxuICAgICAgICAgICAgdmFsdWU9e3Byb21vQ29kZX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWx0ZXJDaGFuZ2V9XG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAvPlxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblByb21vQ29kZUZpbHRlci5wcm9wVHlwZXMgPSB7XG4gIG9uRmlsdGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUHJvbW9Db2RlRmlsdGVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHNoYWxsb3dFcXVhbCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IFNlYXJjaEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCI7XG5pbXBvcnQgQ2xvc2VJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Nsb3NlXCI7XG5pbXBvcnQgSW5wdXRCYXNlIGZyb20gXCJAbXVpL21hdGVyaWFsL0lucHV0QmFzZVwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgU2VhcmNoQ29udGFpbmVyID0gc3R5bGVkKFwiZGl2XCIpKCgpID0+ICh7XG4gIHBvc2l0aW9uOiBcInJlbGF0aXZlXCIsXG4gIG1hcmdpblJpZ2h0OiBcIjBcIixcbiAgbWFyZ2luTGVmdDogXCIwXCIsXG4gIHdpZHRoOiBcIjEwMCVcIixcbiAgZGlzcGxheTogXCJibG9ja1wiXG59KSk7XG5jb25zdCBTZWFyY2hJY29uV3JhcHBlciA9IHN0eWxlZChcImRpdlwiKSgoKSA9PiAoe1xuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICBkaXNwbGF5OiBcImZsZXhcIixcbiAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCJcbn0pKTtcbmNvbnN0IFN0eWxlZElucHV0QmFzZSA9IHN0eWxlZChJbnB1dEJhc2UpKCgpID0+ICh7XG4gIGNvbG9yOiBcImluaGVyaXRcIixcbiAgYm9yZGVyQm90dG9tOiBcIjFweCBzb2xpZCByZ2JhKDAsIDAsIDAsIDAuNDIpXCIsXG4gIHBhZGRpbmdMZWZ0OiBcIjI1cHhcIixcbiAgcGFkZGluZ1JpZ2h0OiBcIjI1cHhcIixcbiAgZm9udFNpemU6IFwiMWVtXCJcbn0pKTtcbmNvbnN0IENsb3NlSWNvbldyYXBwZXIgPSBzdHlsZWQoQ2xvc2VJY29uKSgoKSA9PiAoe1xuICBwYWRkaW5nOiBcIjJweFwiLFxuICBmb250U2l6ZTogXCIxLjVlbVwiLFxuICBoZWlnaHQ6IFwiMTAwJVwiLFxuICBwb3NpdGlvbjogXCJhYnNvbHV0ZVwiLFxuICB0b3A6IFwiMFwiLFxuICByaWdodDogXCIwXCIsXG4gIGRpc3BsYXk6IFwiZmxleFwiLFxuICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgekluZGV4OiBcIjEwMDBcIlxufSkpO1xuXG5jb25zdCBTZWFyY2ggPSAoeyBvblNlYXJjaCB9KSA9PiB7XG4gIGNvbnN0IHsgZmlsdGVyIH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gIGNvbnN0IHNob3dDbG9zZUJ0biA9ICEhZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTtcblxuICBjb25zdCBvbktleURvd24gPSAoZXZlbnQpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBrZXksXG4gICAgICBuYXRpdmVFdmVudDoge1xuICAgICAgICB0YXJnZXQ6IHsgdmFsdWUgfVxuICAgICAgfVxuICAgIH0gPSBldmVudDtcbiAgICBpZiAoa2V5ID09PSBcIkVudGVyXCIpIHtcbiAgICAgIG9uU2VhcmNoKHtcbiAgICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogdmFsdWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgcmVzZXRTZWFyY2ggPSAoKSA9PiB7XG4gICAgc2V0U2VhcmNoVmFsdWUoXCJcIik7XG4gICAgb25TZWFyY2goe1xuICAgICAgW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXTogXCJcIlxuICAgIH0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gd2UgbmVlZCB0aGlzIHdoZW4gc2VhcmNoIGlzIHJlc2V0IGZyb20gb3V0c2lkZSB0aGlzIGNvbXBvbmVudFxuICAgIHNldFNlYXJjaFZhbHVlKGZpbHRlcltGSUxURVJfVkFSX09SREVSX05VTUJFUl0pO1xuICB9LCBbZmlsdGVyW0ZJTFRFUl9WQVJfT1JERVJfTlVNQkVSXV0pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxTZWFyY2hDb250YWluZXI+XG4gICAgICAgIHtzaG93Q2xvc2VCdG4gJiYgKFxuICAgICAgICAgIDxDbG9zZUljb25XcmFwcGVyIG9uQ2xpY2s9e3Jlc2V0U2VhcmNofT5cbiAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICA8L0Nsb3NlSWNvbldyYXBwZXI+XG4gICAgICAgICl9XG4gICAgICAgIDxTZWFyY2hJY29uV3JhcHBlcj5cbiAgICAgICAgICA8U2VhcmNoSWNvbiAvPlxuICAgICAgICA8L1NlYXJjaEljb25XcmFwcGVyPlxuICAgICAgICA8U3R5bGVkSW5wdXRCYXNlXG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoXCJvcmRlcl9zZWFyY2gub3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIGlucHV0UHJvcHM9e3sgXCJhcmlhLWxhYmVsXCI6IFwic2VhcmNoXCIgfX1cbiAgICAgICAgICB2YWx1ZT17c2VhcmNoVmFsdWV9XG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRTZWFyY2hWYWx1ZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgb25LZXlEb3duPXtvbktleURvd259XG4gICAgICAgIC8+XG4gICAgICA8L1NlYXJjaENvbnRhaW5lcj5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblNlYXJjaC5wcm9wVHlwZXMgPSB7XG4gIG9uU2VhcmNoOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2VhcmNoO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlLCB1c2VSZWYsIHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgeyBCb3gsIEJ1dHRvbiwgUGFwZXIgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IEltcG9ydEV4cG9ydEljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvSW1wb3J0RXhwb3J0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFNvcnQgPSAoeyBvblNvcnQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFtzaG93U29ydCwgc2V0U2hvd1NvcnRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBzb3J0UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlID0gKGV2ZW50KSA9PiB7XG4gICAgaWYgKHNvcnRSZWYuY3VycmVudCAmJiAhc29ydFJlZi5jdXJyZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkpIHtcbiAgICAgIHNldFNob3dTb3J0KGZhbHNlKTtcbiAgICB9XG4gIH07XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImNsaWNrXCIsIGhhbmRsZVNvcnRDbGlja091dHNpZGUsIGZhbHNlKTtcbiAgICB9O1xuICB9LCBbc2hvd1NvcnRdKTtcblxuICBjb25zdCB0b2dnbGUgPSAoKSA9PiB7XG4gICAgc2V0U2hvd1NvcnQoIXNob3dTb3J0KTtcbiAgfTtcbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnNvcnRDb250YWluZXJ9IG9uQ2xpY2s9e3RvZ2dsZX0+XG4gICAgICA8U3RhY2tcbiAgICAgICAgcmVmPXtzb3J0UmVmfVxuICAgICAgICBhbGlnbkl0ZW1zPVwiY2VudGVyXCJcbiAgICAgICAgZGlyZWN0aW9uPVwicm93XCJcbiAgICAgICAgc3g9e3sgcHQ6IDIsIHBiOiAyIH19XG4gICAgICA+XG4gICAgICAgIDxJbXBvcnRFeHBvcnRJY29uIGZvbnRTaXplPVwibGFyZ2VcIiBjbGFzc05hbWU9e3N0eWxlcy5zb3J0SWNvbn0gLz5cbiAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMuc29ydExhYmVsfT57dChcInNvcnQuc29ydFwiKX08L3NwYW4+XG4gICAgICA8L1N0YWNrPlxuICAgICAge3Nob3dTb3J0ICYmIChcbiAgICAgICAgPFBhcGVyXG4gICAgICAgICAgZWxldmF0aW9uPXs4fVxuICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLnNvcnRMaXN0Q29udGFpbmVyfSAke3N0eWxlcy5jb250YWluZXJ9YH1cbiAgICAgICAgPlxuICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgIGRpc2FibGVSaXBwbGVcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmxhYmVsfVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gb25Tb3J0KHsgZGlyZWN0aW9uOiBcImRlc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm5ld19maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBkaXNhYmxlUmlwcGxlXG4gICAgICAgICAgICB2YXJpYW50PVwidGV4dFwiXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH1cbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU29ydCh7IGRpcmVjdGlvbjogXCJhc2NcIiwgbmFtZTogXCJjcmVhdGVkXCIgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJzb3J0Lm9sZF9maXJzdFwiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPC9QYXBlcj5cbiAgICAgICl9XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTb3J0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENhcmRIZWFkZXIsXG4gIEljb25CdXR0b24sXG4gIENvbGxhcHNlLFxuICBDYXJkQ29udGVudCxcbiAgUmFkaW9Hcm91cCxcbiAgUmFkaW9cbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUyB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5cbmNvbnN0IFN0YXR1c0ZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIGZpbHRlcjogeyBGSUxURVJfVkFSX09XTkVSX1NUQVRVUzogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMpO1xuXG4gIGNvbnN0IGFzc2lnbmVkVmFsdWVzID0gW1xuICAgIHsgdmFsdWU6IFwiSW5jb21wbGV0ZVwiLCBsYWJlbDogXCJJbmNvbXBsZXRlXCIgfSxcbiAgICB7IHZhbHVlOiBcIkNvbXBsZXRlXCIsIGxhYmVsOiBcIkNvbXBsZXRlXCIgfVxuICBdO1xuXG4gIGNvbnN0IGhhbmRsZUZpbHRlckNoYW5nZSA9IChldiwgdmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXIgPSB2YWx1ZTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBuZXdGaWx0ZXJcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3g+XG4gICAgICA8Q2FyZEhlYWRlclxuICAgICAgICB0aXRsZT1cIlN0YXR1c1wiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlV3JhcHBlcn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gc2V0SXNFeHBhbmRlZCghaXNFeHBhbmRlZCl9XG4gICAgICAgIGFjdGlvbj17XG4gICAgICAgICAgPEljb25CdXR0b24gYXJpYS1sYWJlbD1cImV4cGFuZFwiIGRpc2FibGVSaXBwbGU+XG4gICAgICAgICAgICA8RXhwYW5kTW9yZUljb25cbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICB0cmFuc2Zvcm06IGlzRXhwYW5kZWQgPyBcInJvdGF0ZSgxODBkZWcpXCIgOiBcInJvdGF0ZSgwZGVnKVwiLFxuICAgICAgICAgICAgICAgIHRyYW5zaXRpb246IFwidHJhbnNmb3JtIDAuM3NcIlxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgIH1cbiAgICAgIC8+XG4gICAgICA8Q29sbGFwc2UgaW49e2lzRXhwYW5kZWR9IHRpbWVvdXQ9XCJhdXRvXCIgdW5tb3VudE9uRXhpdD5cbiAgICAgICAgPENhcmRDb250ZW50XG4gICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgIHB5OiAwLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiMwMDAwMDAwQVwiLFxuICAgICAgICAgICAgXCImOmxhc3QtY2hpbGRcIjoge1xuICAgICAgICAgICAgICBwYjogMFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8UmFkaW9Hcm91cCB2YWx1ZT17ZmlsdGVyVmFsdWVzfSBvbkNoYW5nZT17aGFuZGxlRmlsdGVyQ2hhbmdlfT5cbiAgICAgICAgICAgIHthc3NpZ25lZFZhbHVlcy5tYXAoKGFzc2lnbmVkKSA9PiAoXG4gICAgICAgICAgICAgIDxCb3hcbiAgICAgICAgICAgICAgICBzeD17eyBweTogMSB9fVxuICAgICAgICAgICAgICAgIGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YXNzaWduZWQubGFiZWx9fWB9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICAgIDxSYWRpb1xuICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXthc3NpZ25lZC52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJi5NdWktY2hlY2tlZFwiOiB7IGNvbG9yOiBcIiMyMTk2RjNcIiB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXthc3NpZ25lZC5sYWJlbH1cbiAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZm9udFNpemU6IFwiMWVtXCJcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICA8L0JveD5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvUmFkaW9Hcm91cD5cbiAgICAgICAgPC9DYXJkQ29udGVudD5cbiAgICAgIDwvQ29sbGFwc2U+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5TdGF0dXNGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFN0YXR1c0ZpbHRlcjtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQge1xuICBCb3gsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIENoZWNrYm94LFxuICBDYXJkSGVhZGVyLFxuICBJY29uQnV0dG9uLFxuICBDb2xsYXBzZSxcbiAgQ2FyZENvbnRlbnRcbn0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBFeHBhbmRNb3JlSWNvbiBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbC9FeHBhbmRNb3JlXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgeyBGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcblxuY29uc3QgVGlja2V0VHlwZUZpbHRlciA9ICh7IG9uRmlsdGVyIH0pID0+IHtcbiAgY29uc3Qge1xuICAgIHN1bW1pdDogeyB0aWNrZXRfdHlwZXMgfSxcbiAgICBmaWx0ZXI6IHsgRklMVEVSX1ZBUl9USUNLRVRfVFlQRTogZmlsdGVyVmFsdWVzIH1cbiAgfSA9IHVzZVNlbGVjdG9yKChzdGF0ZSkgPT4gc3RhdGUud2lkZ2V0U3RhdGUgfHwge30sIHNoYWxsb3dFcXVhbCk7XG5cbiAgY29uc3QgW2lzRXhwYW5kZWQsIHNldElzRXhwYW5kZWRdID0gdXNlU3RhdGUoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcblxuICBjb25zdCBoYW5kbGVGaWx0ZXJDaGFuZ2UgPSAodmFsdWUpID0+IHtcbiAgICBjb25zdCBuZXdGaWx0ZXJzID0gZmlsdGVyVmFsdWVzPy5pbmNsdWRlcyh2YWx1ZSlcbiAgICAgID8gZmlsdGVyVmFsdWVzLmZpbHRlcigoZikgPT4gZiAhPT0gdmFsdWUpXG4gICAgICA6IFsuLi5maWx0ZXJWYWx1ZXMsIHZhbHVlXTtcbiAgICBvbkZpbHRlcih7XG4gICAgICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IG5ld0ZpbHRlcnNcbiAgICB9KTtcbiAgfTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldElzRXhwYW5kZWQoISFmaWx0ZXJWYWx1ZXMubGVuZ3RoKTtcbiAgfSwgW2ZpbHRlclZhbHVlc10pO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxDYXJkSGVhZGVyXG4gICAgICAgIHRpdGxlPVwiVGlja2V0IFR5cGVcIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aXRsZVdyYXBwZXJ9XG4gICAgICAgIG9uQ2xpY2s9eygpID0+IHNldElzRXhwYW5kZWQoIWlzRXhwYW5kZWQpfVxuICAgICAgICBhY3Rpb249e1xuICAgICAgICAgIDxJY29uQnV0dG9uIGFyaWEtbGFiZWw9XCJleHBhbmRcIiBkaXNhYmxlUmlwcGxlPlxuICAgICAgICAgICAgPEV4cGFuZE1vcmVJY29uXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgdHJhbnNmb3JtOiBpc0V4cGFuZGVkID8gXCJyb3RhdGUoMTgwZGVnKVwiIDogXCJyb3RhdGUoMGRlZylcIixcbiAgICAgICAgICAgICAgICB0cmFuc2l0aW9uOiBcInRyYW5zZm9ybSAwLjNzXCJcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgICB9XG4gICAgICAvPlxuICAgICAgPENvbGxhcHNlIGluPXtpc0V4cGFuZGVkfSB0aW1lb3V0PVwiYXV0b1wiIHVubW91bnRPbkV4aXQ+XG4gICAgICAgIDxDYXJkQ29udGVudFxuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBweTogMCxcbiAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjMDAwMDAwMEFcIixcbiAgICAgICAgICAgIFwiJjpsYXN0LWNoaWxkXCI6IHtcbiAgICAgICAgICAgICAgcGI6IDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICA+XG4gICAgICAgICAge3RpY2tldF90eXBlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8Qm94IHN4PXt7IHB5OiAxIH19IGtleT17YGZpbHRlci1iYWRnZS1mZWF0dXJlLSR7YmYubmFtZX19YH0+XG4gICAgICAgICAgICAgIDxGb3JtQ29udHJvbExhYmVsXG4gICAgICAgICAgICAgICAgY29udHJvbD17XG4gICAgICAgICAgICAgICAgICA8Q2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eygpID0+IGhhbmRsZUZpbHRlckNoYW5nZShiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2ZpbHRlclZhbHVlcy5pbmNsdWRlcyhiZi5pZCl9XG4gICAgICAgICAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgXCImIC5NdWlTdmdJY29uLXJvb3RcIjogeyBmb250U2l6ZTogMTggfSxcbiAgICAgICAgICAgICAgICAgICAgICBcIiYuTXVpLWNoZWNrZWRcIjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IFwiIzIxOTZGM1wiXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbGFiZWw9e2JmLm5hbWV9XG4gICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgIFwiJiAuTXVpRm9ybUNvbnRyb2xMYWJlbC1sYWJlbFwiOiB7XG4gICAgICAgICAgICAgICAgICAgIGZvbnRTaXplOiBcIjFlbVwiXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICkpfVxuICAgICAgICA8L0NhcmRDb250ZW50PlxuICAgICAgPC9Db2xsYXBzZT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cblRpY2tldFR5cGVGaWx0ZXIucHJvcFR5cGVzID0ge1xuICBvbkZpbHRlcjogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldFR5cGVGaWx0ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBHcmlkIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBGaWx0ZXIgZnJvbSBcIi4vRmlsdGVyXCI7XG5pbXBvcnQgU29ydCBmcm9tIFwiLi9Tb3J0XCI7XG5pbXBvcnQgU2VhcmNoIGZyb20gXCIuL1NlYXJjaFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBGaWx0ZXJzID0gKHsgb25GaWx0ZXIsIG9uU29ydCwgb25TZWFyY2gsIG9uUmVzZXQgfSkgPT4gKFxuICA8R3JpZCBjb250YWluZXIganVzdGlmeT1cImZsZXgtZW5kXCIgYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgIDxHcmlkXG4gICAgICBpdGVtXG4gICAgICB4cz17Nn1cbiAgICAgIGNvbnRhaW5lclxuICAgICAgcGFkZGluZz17MX1cbiAgICAgIGdhcD17Mn1cbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmZpbHRlclNvcnRDb250YWluZXJ9XG4gICAgICBzeD17eyBwdDogMiwgcGI6IDIgfX1cbiAgICA+XG4gICAgICA8R3JpZCBpdGVtPlxuICAgICAgICA8RmlsdGVyIG9uRmlsdGVyPXtvbkZpbHRlcn0gb25SZXNldD17b25SZXNldH0gLz5cbiAgICAgIDwvR3JpZD5cbiAgICAgIDxHcmlkIGl0ZW0+XG4gICAgICAgIDxTb3J0IG9uU29ydD17b25Tb3J0fSAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvR3JpZD5cbiAgICA8R3JpZCBpdGVtIHhzPXs2fSBjb250YWluZXIganVzdGlmeUNvbnRlbnQ9XCJmbGV4LWVuZFwiPlxuICAgICAgPFNlYXJjaCBvblNlYXJjaD17b25TZWFyY2h9IC8+XG4gICAgPC9HcmlkPlxuICA8L0dyaWQ+XG4pO1xuXG5GaWx0ZXJzLnByb3BUeXBlcyA9IHtcbiAgb25GaWx0ZXI6IFByb3BUeXBlcy5mdW5jLFxuICBvblNvcnQ6IFByb3BUeXBlcy5mdW5jLFxuICBvblNlYXJjaDogUHJvcFR5cGVzLmZ1bmMsXG4gIG9uUmVzZXQ6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGaWx0ZXJzO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEZvcm1Gb290ZXIgPSAoeyBzYXZlTGFiZWwsIGNhbmNlbExhYmVsLCBvbkNsb3NlLCBkaXNhYmxlZCB9KSA9PiAoXG4gIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuZm9vdGVyfT5cbiAgICA8QnV0dG9uXG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdG59XG4gICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtjYW5jZWxMYWJlbH1cbiAgICA8L0J1dHRvbj5cbiAgICA8QnV0dG9uXG4gICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnNhdmVCdG59XG4gICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgID5cbiAgICAgIHtzYXZlTGFiZWx9XG4gICAgPC9CdXR0b24+XG4gIDwvQm94PlxuKTtcblxuRm9ybUZvb3Rlci5wcm9wVHlwZXMgPSB7XG4gIHNhdmVMYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgY2FuY2VsTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEZvcm1Gb290ZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgRXJyb3JJY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmZ1bmN0aW9uIEVycm9yTGFiZWwoeyBtZXNzYWdlLCBjb2xvciwgY2xhc3NOYW1lcywgZGF0YVRlc3RJZCB9KSB7XG4gIHJldHVybiAoXG4gICAgPHNwYW5cbiAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmVycm9yTGFiZWx9ICR7Y2xhc3NOYW1lcyAmJiBjbGFzc05hbWVzfWB9XG4gICAgICBzdHlsZT17eyBjb2xvciB9fVxuICAgICAgZGF0YS10ZXN0aWQ9e2RhdGFUZXN0SWR9XG4gICAgPlxuICAgICAgPEVycm9ySWNvbiBzeD17eyBjb2xvciB9fSAvPlxuICAgICAge21lc3NhZ2V9XG4gICAgPC9zcGFuPlxuICApO1xufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckxhYmVsO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgQmFja2Ryb3AsIENpcmN1bGFyUHJvZ3Jlc3MgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuXG5jb25zdCBMb2FkZXIgPSAoeyBvcGVuIH0pID0+IChcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW1hZ2ljLW51bWJlcnNcbiAgPEJhY2tkcm9wIG9wZW49e29wZW59IHN4PXsodGhlbWUpID0+ICh7IHpJbmRleDogdGhlbWUuekluZGV4LmRyYXdlciArIDEgfSl9PlxuICAgIDxDaXJjdWxhclByb2dyZXNzIGNvbG9yPVwiaW5oZXJpdFwiIC8+XG4gIDwvQmFja2Ryb3A+XG4pO1xuXG5Mb2FkZXIucHJvcFR5cGVzID0ge1xuICBvcGVuOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgTG9hZGVyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IEluZmluaXRlU2Nyb2xsIGZyb20gXCJyZWFjdC1pbmZpbml0ZS1zY3JvbGwtY29tcG9uZW50XCI7XG5pbXBvcnQgT3JkZXJzTGlzdCBmcm9tIFwiLi4vT3JkZXJzTGlzdFwiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTXlPcmRlcnNUaWNrZXRzID0gKHsgZmV0Y2hEYXRhIH0pID0+IHtcbiAgY29uc3QgeyBzdW1taXQsIG1lbWJlck9yZGVycywgb3JkZXJzX2N1cnJlbnRfcGFnZSwgb3JkZXJzX2xhc3RfcGFnZSB9ID1cbiAgICB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBpZD1cImluZmluaXRlV3JhcHBlclwiIGNsYXNzTmFtZT17c3R5bGVzLm15T3JkZXJzV3JhcHBlcn0+XG4gICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgZGF0YUxlbmd0aD17bWVtYmVyT3JkZXJzPy5sZW5ndGh9XG4gICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YShvcmRlcnNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgIGhhc01vcmU9e29yZGVyc19jdXJyZW50X3BhZ2UgPCBvcmRlcnNfbGFzdF9wYWdlfVxuICAgICAgICBzY3JvbGxUaHJlc2hvbGQ9ezF9XG4gICAgICA+XG4gICAgICAgIHttZW1iZXJPcmRlcnM/Lm1hcCgob3JkZXIpID0+IChcbiAgICAgICAgICA8T3JkZXJzTGlzdFxuICAgICAgICAgICAga2V5PXtvcmRlci5udW1iZXIgKyBvcmRlci5pZH1cbiAgICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9JbmZpbml0ZVNjcm9sbD5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE15T3JkZXJzVGlja2V0cztcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgVGlja2V0c0ljb24gPSAoKSA9PiAoXG4gIDxzdmdcbiAgICB3aWR0aD1cIjEyOVwiXG4gICAgaGVpZ2h0PVwiODBcIlxuICAgIHZpZXdCb3g9XCIwIDAgMTI5IDgwXCJcbiAgICBmaWxsPVwibm9uZVwiXG4gICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gID5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMjUuMTIyIDM2LjQ3ODFDMTI0LjgxNCAzNy41MTEyIDEyMy43MzggMzguMDg5MSAxMjIuNjYxIDM4LjAzNzZDMTE4LjUwNiAzNy44Mzg2IDExNC41OTMgNDAuNDc1NCAxMTMuMzQ5IDQ0LjY0MTJDMTEyLjEwNSA0OC44MDczIDExMy45MzIgNTMuMTU3NiAxMTcuNTE3IDU1LjI2OTdDMTE4LjQ0NiA1NS44MTY5IDExOS4wMjggNTYuODg5OSAxMTguNzIgNTcuOTIzMUwxMTYuMzY5IDY1Ljc5NjdDMTE2LjA1MyA2Ni44NTUxIDExNC45MzkgNjcuNDU3IDExMy44ODEgNjcuMTQxTDMwLjc2NzUgNDIuMzI3MUMyOS43MDkxIDQyLjAxMTIgMjkuMTA3MiA0MC44OTcgMjkuNDIzMiAzOS44Mzg2TDQwLjM0MzkgMy4yNjAxNkM0MC42NTk5IDIuMjAxNzYgNDEuNzc0IDEuNTk5OTEgNDIuODMyNCAxLjkxNTlMMTI1Ljk0NiAyNi43Mjk3QzEyNy4wMDQgMjcuMDQ1NyAxMjcuNjA2IDI4LjE1OTkgMTI3LjI5IDI5LjIxODNMMTI1LjEyMiAzNi40NzgxWlwiXG4gICAgICBmaWxsPVwid2hpdGVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMTEzLjM0OSA0NC42NDEyTDExMi4zOTEgNDQuMzU1MUwxMTIuMzkxIDQ0LjM1NTJMMTEzLjM0OSA0NC42NDEyWk0xMTcuNTE3IDU1LjI2OTdMMTE3LjAwOSA1Ni4xMzEyTDExNy41MTcgNTUuMjY5N1pNMTIyLjY2MSAzOC4wMzc2TDEyMi43MDkgMzcuMDM4N0MxMTguMTA1IDM2LjgxODMgMTEzLjc2OSAzOS43MzgxIDExMi4zOTEgNDQuMzU1MUwxMTMuMzQ5IDQ0LjY0MTJMMTE0LjMwNyA0NC45Mjc0QzExNS40MTYgNDEuMjEyNyAxMTguOTA2IDM4Ljg1ODkgMTIyLjYxNCAzOS4wMzY0TDEyMi42NjEgMzguMDM3NlpNMTEzLjM0OSA0NC42NDEyTDExMi4zOTEgNDQuMzU1MkMxMTEuMDEyIDQ4Ljk3MjUgMTEzLjAzOCA1My43OTE1IDExNy4wMDkgNTYuMTMxMkwxMTcuNTE3IDU1LjI2OTdMMTE4LjAyNCA1NC40MDgxQzExNC44MjYgNTIuNTIzOCAxMTMuMTk4IDQ4LjY0MjEgMTE0LjMwNyA0NC45MjczTDExMy4zNDkgNDQuNjQxMlpNMTE4LjcyIDU3LjkyMzFMMTE3Ljc2MiA1Ny42MzdMMTE1LjQxMSA2NS41MTA2TDExNi4zNjkgNjUuNzk2N0wxMTcuMzI3IDY2LjA4MjhMMTE5LjY3OCA1OC4yMDkxTDExOC43MiA1Ny45MjMxWk0xMTMuODgxIDY3LjE0MUwxMTQuMTY3IDY2LjE4MjhMMzEuMDUzNSA0MS4zNjg5TDMwLjc2NzUgNDIuMzI3MUwzMC40ODE0IDQzLjI4NTRMMTEzLjU5NSA2OC4wOTkyTDExMy44ODEgNjcuMTQxWk0yOS40MjMyIDM5LjgzODZMMzAuMzgxNCA0MC4xMjQ3TDQxLjMwMjEgMy41NDYyNEw0MC4zNDM5IDMuMjYwMTZMMzkuMzg1NyAyLjk3NDA5TDI4LjQ2NSAzOS41NTI1TDI5LjQyMzIgMzkuODM4NlpNNDIuODMyNCAxLjkxNTlMNDIuNTQ2NCAyLjg3NDExTDEyNS42NiAyNy42ODc5TDEyNS45NDYgMjYuNzI5N0wxMjYuMjMyIDI1Ljc3MTVMNDMuMTE4NSAwLjk1NzY5N0w0Mi44MzI0IDEuOTE1OVpNMTI3LjI5IDI5LjIxODNMMTI2LjMzMiAyOC45MzIyTDEyNC4xNjQgMzYuMTkyTDEyNS4xMjIgMzYuNDc4MUwxMjYuMDgxIDM2Ljc2NDJMMTI4LjI0OCAyOS41MDQ0TDEyNy4yOSAyOS4yMTgzWk0xMjUuOTQ2IDI2LjcyOTdMMTI1LjY2IDI3LjY4NzlDMTI2LjE4OSAyNy44NDU5IDEyNi40OSAyOC40MDMgMTI2LjMzMiAyOC45MzIyTDEyNy4yOSAyOS4yMTgzTDEyOC4yNDggMjkuNTA0NEMxMjguNzIyIDI3LjkxNjggMTI3LjgxOSAyNi4yNDU1IDEyNi4yMzIgMjUuNzcxNUwxMjUuOTQ2IDI2LjcyOTdaTTMwLjc2NzUgNDIuMzI3MUwzMS4wNTM1IDQxLjM2ODlDMzAuNTI0MyA0MS4yMTA5IDMwLjIyMzQgNDAuNjUzOSAzMC4zODE0IDQwLjEyNDdMMjkuNDIzMiAzOS44Mzg2TDI4LjQ2NSAzOS41NTI1QzI3Ljk5MSA0MS4xNDAxIDI4Ljg5MzggNDIuODExNCAzMC40ODE0IDQzLjI4NTRMMzAuNzY3NSA0Mi4zMjcxWk0xMTYuMzY5IDY1Ljc5NjdMMTE1LjQxMSA2NS41MTA2QzExNS4yNTMgNjYuMDM5OCAxMTQuNjk2IDY2LjM0MDggMTE0LjE2NyA2Ni4xODI4TDExMy44ODEgNjcuMTQxTDExMy41OTUgNjguMDk5MkMxMTUuMTgyIDY4LjU3MzIgMTE2Ljg1MyA2Ny42NzA0IDExNy4zMjcgNjYuMDgyOEwxMTYuMzY5IDY1Ljc5NjdaTTExNy41MTcgNTUuMjY5N0wxMTcuMDA5IDU2LjEzMTJDMTE3LjY1MyA1Ni41MTA1IDExNy45MDUgNTcuMTU3IDExNy43NjIgNTcuNjM3TDExOC43MiA1Ny45MjMxTDExOS42NzggNTguMjA5MUMxMjAuMTUyIDU2LjYyMjggMTE5LjIzOSA1NS4xMjM0IDExOC4wMjQgNTQuNDA4MUwxMTcuNTE3IDU1LjI2OTdaTTQwLjM0MzkgMy4yNjAxNkw0MS4zMDIxIDMuNTQ2MjRDNDEuNDYwMSAzLjAxNzA0IDQyLjAxNzEgMi43MTYxMSA0Mi41NDY0IDIuODc0MTFMNDIuODMyNCAxLjkxNTlMNDMuMTE4NSAwLjk1NzY5N0M0MS41MzA5IDAuNDgzNzEgMzkuODU5NiAxLjM4NjQ4IDM5LjM4NTcgMi45NzQwOUw0MC4zNDM5IDMuMjYwMTZaTTEyMi42NjEgMzguMDM3NkwxMjIuNjE0IDM5LjAzNjRDMTI0LjAyMSAzOS4xMDM4IDEyNS42MDcgMzguMzUwNSAxMjYuMDgxIDM2Ljc2NDJMMTI1LjEyMiAzNi40NzgxTDEyNC4xNjQgMzYuMTkyQzEyNC4wMjEgMzYuNjcyIDEyMy40NTYgMzcuMDc0NCAxMjIuNzA5IDM3LjAzODdMMTIyLjY2MSAzOC4wMzc2WlwiXG4gICAgICBmaWxsPVwiI0JEQkRCRFwiXG4gICAgLz5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0xMDcuOTAzIDIyLjY3NThMOTYuNTY5NiA2MC42Mzc5XCJcbiAgICAgIHN0cm9rZT1cIiNCREJEQkRcIlxuICAgICAgc3Ryb2tlV2lkdGg9XCIyXCJcbiAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICBzdHJva2VEYXNoYXJyYXk9XCIyIDVcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNOTEuNzQyIDQ1Ljg5NTJDOTEuNzQxOSA0Ni45NzM0IDkwLjg3NjUgNDcuODM0NyA4OS44Mjk3IDQ4LjA5MzNDODUuNzkwNiA0OS4wOTEzIDgyLjc5NTkgNTIuNzM3NiA4Mi43OTUzIDU3LjA4NTJDODIuNzk0OCA2MS40MzI5IDg1Ljc4ODcgNjUuMDc5MiA4OS44Mjc2IDY2LjA3NzlDOTAuODc0MiA2Ni4zMzY3IDkxLjczOTQgNjcuMTk4MyA5MS43MzkyIDY4LjI3NjRMOTEuNzM4MiA3Ni40OTM1QzkxLjczODEgNzcuNTk4MSA5MC44NDI2IDc4LjQ5MzQgODkuNzM4IDc4LjQ5MzNMMi45OTk3MiA3OC40ODI3QzEuODk1MTUgNzguNDgyNSAwLjk5OTgyNSA3Ny41ODcgMC45OTk5NiA3Ni40ODI0TDEuMDA0NjQgMzguMzA4NkMxLjAwNDc3IDM3LjIwNCAxLjkwMDMxIDM2LjMwODcgMy4wMDQ4OCAzNi4zMDg4TDg5Ljc0MzIgMzYuMzE5NUM5MC44NDc3IDM2LjMxOTYgOTEuNzQzMSAzNy4yMTUxIDkxLjc0MjkgMzguMzE5N0w5MS43NDIgNDUuODk1MlpcIlxuICAgICAgZmlsbD1cIndoaXRlXCJcbiAgICAvPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTgyLjc5NTMgNTcuMDg1Mkw4MS43OTUzIDU3LjA4NTFMODEuNzk1MyA1Ny4wODUxTDgyLjc5NTMgNTcuMDg1MlpNODkuODI5NyA0OC4wOTMzTDkwLjA2OTYgNDkuMDY0MUw4OS44Mjk3IDQ4LjA5MzNaTTg5LjgyOTcgNDguMDkzM0w4OS41ODk5IDQ3LjEyMjVDODUuMTE1IDQ4LjIyODEgODEuNzk2IDUyLjI2NjcgODEuNzk1MyA1Ny4wODUxTDgyLjc5NTMgNTcuMDg1Mkw4My43OTUzIDU3LjA4NTRDODMuNzk1OCA1My4yMDg0IDg2LjQ2NjMgNDkuOTU0NCA5MC4wNjk2IDQ5LjA2NDFMODkuODI5NyA0OC4wOTMzWk04Mi43OTUzIDU3LjA4NTJMODEuNzk1MyA1Ny4wODUxQzgxLjc5NDcgNjEuOTAzNiA4NS4xMTI5IDY1Ljk0MjIgODkuNTg3NSA2Ny4wNDg3TDg5LjgyNzYgNjYuMDc3OUw5MC4wNjc2IDY1LjEwNzFDODYuNDY0NCA2NC4yMTYyIDgzLjc5NDggNjAuOTYyMiA4My43OTUzIDU3LjA4NTNMODIuNzk1MyA1Ny4wODUyWk05MS43MzkyIDY4LjI3NjRMOTAuNzM5MiA2OC4yNzYzTDkwLjczODIgNzYuNDkzNEw5MS43MzgyIDc2LjQ5MzVMOTIuNzM4MiA3Ni40OTM3TDkyLjczOTIgNjguMjc2Nkw5MS43MzkyIDY4LjI3NjRaTTg5LjczOCA3OC40OTMzTDg5LjczODEgNzcuNDkzM0wyLjk5OTg0IDc3LjQ4MjdMMi45OTk3MiA3OC40ODI3TDIuOTk5NiA3OS40ODI3TDg5LjczNzkgNzkuNDkzM0w4OS43MzggNzguNDkzM1pNMC45OTk5NiA3Ni40ODI0TDEuOTk5OTYgNzYuNDgyNUwyLjAwNDY0IDM4LjMwODdMMS4wMDQ2NCAzOC4zMDg2TDAuMDA0NjM3NzYgMzguMzA4NUwtMy45NjA3NWUtMDUgNzYuNDgyM0wwLjk5OTk2IDc2LjQ4MjRaTTMuMDA0ODggMzYuMzA4OEwzLjAwNDc2IDM3LjMwODhMODkuNzQzIDM3LjMxOTVMODkuNzQzMiAzNi4zMTk1TDg5Ljc0MzMgMzUuMzE5NUwzLjAwNTAxIDM1LjMwODhMMy4wMDQ4OCAzNi4zMDg4Wk05MS43NDI5IDM4LjMxOTdMOTAuNzQyOSAzOC4zMTk2TDkwLjc0MiA0NS44OTUxTDkxLjc0MiA0NS44OTUyTDkyLjc0MiA0NS44OTUzTDkyLjc0MjkgMzguMzE5OEw5MS43NDI5IDM4LjMxOTdaTTg5Ljc0MzIgMzYuMzE5NUw4OS43NDMgMzcuMzE5NUM5MC4yOTUzIDM3LjMxOTUgOTAuNzQzIDM3Ljc2NzMgOTAuNzQyOSAzOC4zMTk2TDkxLjc0MjkgMzguMzE5N0w5Mi43NDI5IDM4LjMxOThDOTIuNzQzMSAzNi42NjMgOTEuNDAwMSAzNS4zMTk3IDg5Ljc0MzMgMzUuMzE5NUw4OS43NDMyIDM2LjMxOTVaTTIuOTk5NzIgNzguNDgyN0wyLjk5OTg0IDc3LjQ4MjdDMi40NDc1NSA3Ny40ODI2IDEuOTk5ODkgNzcuMDM0OCAxLjk5OTk2IDc2LjQ4MjVMMC45OTk5NiA3Ni40ODI0TC0zLjk2MDc1ZS0wNSA3Ni40ODIzQy0wLjAwMDI0MjYxOSA3OC4xMzkyIDEuMzQyNzQgNzkuNDgyNSAyLjk5OTYgNzkuNDgyN0wyLjk5OTcyIDc4LjQ4MjdaTTkxLjczODIgNzYuNDkzNUw5MC43MzgyIDc2LjQ5MzRDOTAuNzM4MiA3Ny4wNDU3IDkwLjI5MDQgNzcuNDkzNCA4OS43MzgxIDc3LjQ5MzNMODkuNzM4IDc4LjQ5MzNMODkuNzM3OSA3OS40OTMzQzkxLjM5NDcgNzkuNDkzNSA5Mi43MzggNzguMTUwNSA5Mi43MzgyIDc2LjQ5MzdMOTEuNzM4MiA3Ni40OTM1Wk04OS44Mjc2IDY2LjA3NzlMODkuNTg3NSA2Ny4wNDg3QzkwLjMxMjggNjcuMjI4IDkwLjczOTMgNjcuNzc1NCA5MC43MzkyIDY4LjI3NjNMOTEuNzM5MiA2OC4yNzY0TDkyLjczOTIgNjguMjc2NkM5Mi43Mzk1IDY2LjYyMTEgOTEuNDM1NiA2NS40NDU0IDkwLjA2NzYgNjUuMTA3MUw4OS44Mjc2IDY2LjA3NzlaTTEuMDA0NjQgMzguMzA4NkwyLjAwNDY0IDM4LjMwODdDMi4wMDQ3MSAzNy43NTY0IDIuNDUyNDggMzcuMzA4OCAzLjAwNDc2IDM3LjMwODhMMy4wMDQ4OCAzNi4zMDg4TDMuMDA1MDEgMzUuMzA4OEMxLjM0ODE1IDM1LjMwODYgMC4wMDQ4NDA3NyAzNi42NTE2IDAuMDA0NjM3NzYgMzguMzA4NUwxLjAwNDY0IDM4LjMwODZaTTg5LjgyOTcgNDguMDkzM0w5MC4wNjk2IDQ5LjA2NDFDOTEuNDM3NiA0OC43MjYxIDkyLjc0MTggNDcuNTUwOCA5Mi43NDIgNDUuODk1M0w5MS43NDIgNDUuODk1Mkw5MC43NDIgNDUuODk1MUM5MC43NDE5IDQ2LjM5NiA5MC4zMTUzIDQ2Ljk0MzMgODkuNTg5OSA0Ny4xMjI1TDg5LjgyOTcgNDguMDkzM1pcIlxuICAgICAgZmlsbD1cIiNCREJEQkRcIlxuICAgIC8+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNNzEuMjk0OSAzNy41OTU3TDcxLjI5MDEgNzcuMjEzNlwiXG4gICAgICBzdHJva2U9XCIjQkRCREJEXCJcbiAgICAgIHN0cm9rZVdpZHRoPVwiMlwiXG4gICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgc3Ryb2tlRGFzaGFycmF5PVwiMiA1XCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldHNJY29uO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBUaWNrZXRzSWNvbiBmcm9tIFwiLi9UaWNrZXRzSWNvblwiO1xuaW1wb3J0IHsgVEFCUyB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgTm9UaWNrZXRzRm91bmQgPSAoeyBwYWdlVmlldywgb25DbGljayB9KSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0LCBsb2FkaW5nIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9KTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIGNvbnN0IGdldENvbnRlbnQgPSAoKSA9PiB7XG4gICAgY29uc3QgbWFpbHRvVGFnID0gKFxuICAgICAgPGEgaHJlZj17YG1haWx0bzoke3N1bW1pdC5zdXBwb3J0X2VtYWlsfWB9PlxuICAgICAgICB7dChcImdlbmVyYWwuY29udGFjdF9zdXBwb3J0XCIpfVxuICAgICAgPC9hPlxuICAgICk7XG5cbiAgICBzd2l0Y2ggKHBhZ2VWaWV3KSB7XG4gICAgICBjYXNlIFRBQlMuT1JERVJTOiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdGl0bGU6IHQoXCJub19yZXN1bHRzLm9yZGVycy50aXRsZVwiKSxcbiAgICAgICAgICBib2R5OiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICB7dChcIm5vX3Jlc3VsdHMub3JkZXJzLmJvZHlcIil9IHttYWlsdG9UYWd9LlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcImxhYmVscy5hc3NpZ25lZF90b19tZVwiKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgY2FzZSBUQUJTLlRJQ0tFVFM6IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0aXRsZTogdChcIm5vX3Jlc3VsdHMuYXNzaWduZWQudGl0bGVcIiksXG4gICAgICAgICAgYm9keTogKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3QoXCJub19yZXN1bHRzLmFzc2lnbmVkLmJvZHlcIil9IHttYWlsdG9UYWd9LlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSxcbiAgICAgICAgICBidXR0b25MYWJlbDogdChcIm9yZGVycy50aXRsZVwiKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHRpdGxlOiB0KFwibm9fcmVzdWx0cy5maWx0ZXIudGl0bGVcIiksXG4gICAgICAgICAgYm9keTogdChcIm5vX3Jlc3VsdHMuZmlsdGVyLmJvZHlcIiksXG4gICAgICAgICAgYnV0dG9uTGFiZWw6IHQoXCJmaWx0ZXIuY2xlYXJfZmlsdGVyc1wiKVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBjb25zdCB7IHRpdGxlLCBib2R5LCBidXR0b25MYWJlbCB9ID0gZ2V0Q29udGVudCgpO1xuXG4gIGlmIChsb2FkaW5nKSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmljb25XcmFwcGVyfT5cbiAgICAgICAgPFRpY2tldHNJY29uIC8+XG4gICAgICA8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGNsYXNzTmFtZT17c3R5bGVzLnRpdGxlfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYm9keX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Ym9keX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIG9uQ2xpY2s9e29uQ2xpY2t9XG4gICAgICA+XG4gICAgICAgIHtidXR0b25MYWJlbH1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTm9UaWNrZXRzRm91bmQ7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3ggfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IERpdmlkZXIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvRGl2aWRlclwiO1xuaW1wb3J0IHsgY2FsY3VsYXRlT3JkZXJUb3RhbHMsIGZvcm1hdEN1cnJlbmN5IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeVRhYmxlID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBkaXNjb3VudFRvdGFsLCByZWZ1bmRUb3RhbCwgdGF4ZXNUb3RhbCwgYW1vdW50VG90YWwsIHRpY2tldFN1bW1hcnkgfSA9XG4gICAgY2FsY3VsYXRlT3JkZXJUb3RhbHMoeyBvcmRlciwgc3VtbWl0IH0pO1xuICBjb25zdCBodW5kcmVkID0gMTAwO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlUYWJsZX0+XG4gICAgICB7dGlja2V0U3VtbWFyeT8ubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3RpY2tldFN1bW1hcnkubWFwKCh0aWNrZXQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHRpY2tldFRvdGFsID1cbiAgICAgICAgICAgICAgKHRpY2tldC5xdHkgKiAodGlja2V0LnRpY2tldF90eXBlLmNvc3QgKiBodW5kcmVkKSkgLyBodW5kcmVkO1xuXG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclxuICAgICAgICAgICAgICAgIGtleT17YHRpeG9yZGVyXyR7dGlja2V0LnRpY2tldF90eXBlLmNyZWF0ZWR9YH1cbiAgICAgICAgICAgICAgICBzeD17eyBwYjogMSB9fVxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItc3VtbWFyeS1pdGVtaXplZFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICB4e3RpY2tldC5xdHl9IHt0aWNrZXQudGlja2V0X3R5cGUubmFtZX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldFRvdGFsLCB7IGN1cnJlbmN5OiBvcmRlci5jdXJyZW5jeSB9KX1cbiAgICAgICAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci5kaXNjb3VudF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LmRpc2NvdW50c1wiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXtkaXNjb3VudFRvdGFsfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgKX1cbiAgICAgIHtvcmRlci50YXhlc19hbW91bnQgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRheGVzXCIpfVxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgICA8R3JpZCB4cz17NH0gaXRlbSBhbGlnbj1cInJpZ2h0XCI+XG4gICAgICAgICAgICB7dGF4ZXNUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiAmJiAoXG4gICAgICAgIDxHcmlkIGNvbnRhaW5lciBzeD17eyBwYjogMSB9fT5cbiAgICAgICAgICA8R3JpZCB4cz17OH0gaXRlbT5cbiAgICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5hbW91bnRfcGFpZFwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICAgPEdyaWQgeHM9ezR9IGl0ZW0gYWxpZ249XCJyaWdodFwiPlxuICAgICAgICAgICAgLXthbW91bnRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICB7cmVmdW5kVG90YWwgPiAwICYmIChcbiAgICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHBiOiAxIH19PlxuICAgICAgICAgIDxHcmlkIHhzPXs4fSBpdGVtPlxuICAgICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZHNcIil9XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICAgIHtyZWZ1bmRUb3RhbH1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8RGl2aWRlciAvPlxuICAgICAgPEdyaWQgY29udGFpbmVyIHN4PXt7IHB0OiAxLCBwYjogMSB9fT5cbiAgICAgICAgPEdyaWQgeHM9ezh9IGl0ZW0+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnRvdGFsXCIpfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIHhzPXs0fSBpdGVtIGFsaWduPVwicmlnaHRcIj5cbiAgICAgICAgICB7b3JkZXIuc3RhdHVzID09PSBcIlBhaWRcIiA/IFwiJDAuMDBcIiA6IGFtb3VudFRvdGFsfVxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5PcmRlclN1bW1hcnlUYWJsZS5wcm9wVHlwZXMgPSB7XG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIGN1cnJlbmN5OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRpc2NvdW50X2Ftb3VudDogUHJvcFR5cGVzLm51bWJlcixcbiAgICB0YXhlc19hbW91bnQ6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgc3RhdHVzOiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeVRhYmxlO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQnV0dG9uIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZU5vdyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgdGlja2V0c1JlZnVuZGFibGUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IHVzZVN1bW1pdERldGFpbHMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3VtbWl0VXRpbHNcIjtcblxuY29uc3QgUmVmdW5kRW1haWxTdXBwb3J0ID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRzLFxuICBzdWJtaXRSZXF1ZXN0LFxuICBvblJlZnVuZENsaWNrLFxuICBvblJlZnVuZERldGFpbENsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgeyBpc1N0YXJ0ZWQgfSA9IHVzZVN1bW1pdERldGFpbHMoeyBzdW1taXQgfSk7XG4gIGNvbnN0IG5vdyA9IHVzZU5vdygpO1xuICBjb25zdCBpc0luUmVmdW5kYWJsZVBlcmlvZCA9XG4gICAgc3VtbWl0LnJlZ2lzdHJhdGlvbl9hbGxvd2VkX3JlZnVuZF9yZXF1ZXN0X3RpbGxfZGF0ZSA+IG5vdztcbiAgY29uc3QgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXQgPSB0aWNrZXRzUmVmdW5kYWJsZSh0aWNrZXRzKTtcbiAgY29uc3QgaXNSZWZ1bmRhYmxlID0gISEoXG4gICAgaXNJblJlZnVuZGFibGVQZXJpb2QgJiZcbiAgICAhaXNTdGFydGVkICYmXG4gICAgYXRMZWFzdE9uZVJlZnVuZGFibGVUaWNrZXRcbiAgKTtcbiAgY29uc3QgaGFzUmVmdW5kUmVxdWVzdHMgPSB0aWNrZXRzPy5zb21lKCh0KSA9PiB0LnJlZnVuZF9yZXF1ZXN0cy5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAge2lzUmVmdW5kYWJsZSAmJiAoXG4gICAgICAgIDxCdXR0b25cbiAgICAgICAgICBhcmlhLWxhYmVsPVwicmVmdW5kIHJlcXVlc3QgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgICAgJHtzdWJtaXRSZXF1ZXN0ID8gc3R5bGVzLnJlZnVuZERpc2FibGVkIDogXCJcIn1gfVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIGRpc2FibGVkPXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlcXVlc3RfcmVmdW5kXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICB7aGFzUmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCBkZXRhaWxzIGJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5QnV0dG9ufVxuICAgICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBvbkNsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJvcmRlcl9zdW1tYXJ5LnJlZnVuZF9kZXRhaWxzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgICA8QnV0dG9uXG4gICAgICAgIGFyaWEtbGFiZWw9XCJlbWFpbCBzdXBwb3J0IGJ1dHRvblwiXG4gICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclN1bW1hcnlCdXR0b259XG4gICAgICAgIHZhcmlhbnQ9XCJvdXRsaW5lZFwiXG4gICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgIHRhcmdldD1cIl90b3BcIlxuICAgICAgICByZWw9XCJub29wZW5lciBub3JlZmVycmVyXCJcbiAgICAgICAgaHJlZj17YG1haWx0bzoke3N1bW1pdC5zdXBwb3J0X2VtYWlsfWB9XG4gICAgICA+XG4gICAgICAgIHt0KFwib3JkZXJfaW5mby5lbWFpbF9zdXBwb3J0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWZ1bmRFbWFpbFN1cHBvcnQucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIHRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdCksXG4gIG9uUmVmdW5kQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICBvblJlZnVuZERldGFpbENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJlZnVuZEVtYWlsU3VwcG9ydDtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEdyaWQsIEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5VGFibGUgZnJvbSBcIi4vT3JkZXJTdW1tYXJ5VGFibGVcIjtcbmltcG9ydCBSZWZ1bmRFbWFpbFN1cHBvcnQgZnJvbSBcIi4vUmVmdW5kRW1haWxTdXBwb3J0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IE9yZGVyU3VtbWFyeSA9ICh7XG4gIG9yZGVyLFxuICBzdW1taXQsXG4gIG9uUmVmdW5kQ2xpY2ssXG4gIHN1Ym1pdFJlcXVlc3QsXG4gIG9uUmVmdW5kRGV0YWlsQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8Qm94XG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLm9yZGVyU3VtbWFyeVdyYXBwZXJ9XG4gICAgICAgIHN4PXt7IHB0OiA0LCBweDogNCB9fVxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLXN1bW1hcnktY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPGgzPnt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9zdW1tYXJ5XCIpfTwvaDM+XG4gICAgICAgIDxHcmlkIGNvbnRhaW5lcj5cbiAgICAgICAgICA8R3JpZFxuICAgICAgICAgICAgeHM9ezEyfVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb31cbiAgICAgICAgICAgIHN4PXt7IHBiOiAzIH19XG4gICAgICAgICAgICBpdGVtXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9yZGVyU3VtbWFyeVRhYmxlIG9yZGVyPXtvcmRlcn0gc3VtbWl0PXtzdW1taXR9IC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICA8L0JveD5cbiAgICAgIDxCb3ggeHM9ezEyfSBzeD17eyBwYjogMyB9fT5cbiAgICAgICAgPFJlZnVuZEVtYWlsU3VwcG9ydFxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBvblJlZnVuZERldGFpbENsaWNrPXtvblJlZnVuZERldGFpbENsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9Cb3g+XG4gICAgPC8+XG4gICk7XG59O1xuT3JkZXJTdW1tYXJ5LnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBvcmRlcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBtZW1iZXJUaWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpXG4gIH0pLFxuICBvblJlZnVuZENsaWNrOiBQcm9wVHlwZXMuZnVuYyxcbiAgc3VibWl0UmVxdWVzdDogUHJvcFR5cGVzLmJvb2xcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyU3VtbWFyeTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVNlbGVjdG9yLCBzaGFsbG93RXF1YWwgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCBJbmZpbml0ZVNjcm9sbCBmcm9tIFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgQXNzaWduVG9NZSA9ICh7IGZldGNoRGF0YSB9KSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzdW1taXQsXG4gICAgdXNlclRpY2tldHMsXG4gICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSxcbiAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LCBzaGFsbG93RXF1YWwpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0+XG4gICAgICA8ZGl2IGlkPVwiYXNzaWduZWRUb01lV3JhcHBlclwiIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkVG9NZVdyYXBwZXJ9PlxuICAgICAgICA8SW5maW5pdGVTY3JvbGxcbiAgICAgICAgICBkYXRhTGVuZ3RoPXt1c2VyVGlja2V0cz8ubGVuZ3RofVxuICAgICAgICAgIG5leHQ9eygpID0+IGZldGNoRGF0YSh1c2VyX3RpY2tldHNfY3VycmVudF9wYWdlICsgT05FX1BBR0VfTkVYVCl9XG4gICAgICAgICAgaGFzTW9yZT17dXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZSA8IHVzZXJfdGlja2V0c19sYXN0X3BhZ2V9XG4gICAgICAgICAgc2Nyb2xsVGhyZXNob2xkPXsxfVxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfT5cbiAgICAgICAgICAgIHt1c2VyVGlja2V0cy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICAgIGlzUmVmdW5kTW9kYWw9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17W119XG4gICAgICAgICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgIGlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldFxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvSW5maW5pdGVTY3JvbGw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEFzc2lnblRvTWU7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIEdyaWQsIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBBc3NpZ25lZFRvID0gKHsgZW1haWwgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX3RvXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIGRhdGEtdGVzdGlkPVwiYXR0ZW5kZWUtc3RhdHVzLWFzc2lnbmVkXCI+XG4gICAgICAgIHtlbWFpbH1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmNvbnN0IEV4dGVybmFsQXNzaWduZWRUbyA9ICh7IGZpcnN0TmFtZSwgbGFzdE5hbWUgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5sYWJlbH0+e3QoXCJ0aWNrZXRfc3RhdHVzLmFzc2lnbmVkX2J5XCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBNYW5hZ2VGb3IgPSAoeyBmaXJzdE5hbWUsIGxhc3ROYW1lIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHJldHVybiAoXG4gICAgPEJveD5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMubGFiZWx9Pnt0KFwidGlja2V0X3N0YXR1cy5tYW5hZ2VfZm9yXCIpfTo8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiPlxuICAgICAgICB7Zmlyc3ROYW1lfSB7bGFzdE5hbWV9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5jb25zdCBBdHRlbmRlZVN0YXR1cyA9ICh7IHRpY2tldCwgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0IH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBpc1VuYXNzaWduZWQgPSAhdGlja2V0Lm93bmVyPy5lbWFpbCAmJiB0aWNrZXQuaXNfYWN0aXZlO1xuICBjb25zdCBpc0RlbGVnYXRlZCA9ICEhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkO1xuXG4gIGlmIChpc1VuYXNzaWduZWQpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPHNwYW5cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0T3duZXJFbWFpbH1cbiAgICAgICAgZGF0YS10ZXN0aWQ9XCJhdHRlbmRlZS1zdGF0dXMtdW5hc3NpZ25lZFwiXG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hdHRlbmRlZV9zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICApO1xuICB9XG5cbiAgaWYgKHRpY2tldC5vd25lcj8uZW1haWwpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPEdyaWQgY29udGFpbmVyPlxuICAgICAgICA8R3JpZCBpdGVtPlxuICAgICAgICAgIDxBc3NpZ25lZFRvIGVtYWlsPXt0aWNrZXQub3duZXIuZW1haWx9IC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICAge2lzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCAmJiAoXG4gICAgICAgICAgPEdyaWQgaXRlbSBjbGFzc05hbWU9e3N0eWxlcy5hc3NpZ25lZEJ5VGV4dH0+XG4gICAgICAgICAgICA8RXh0ZXJuYWxBc3NpZ25lZFRvXG4gICAgICAgICAgICAgIGZpcnN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9maXJzdF9uYW1lfVxuICAgICAgICAgICAgICBsYXN0TmFtZT17dGlja2V0Lm9yZGVyPy5vd25lcl9sYXN0X25hbWV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvR3JpZD5cbiAgICAgICAgKX1cbiAgICAgICAge2lzRGVsZWdhdGVkICYmIChcbiAgICAgICAgICA8R3JpZCBpdGVtIGNsYXNzTmFtZT17c3R5bGVzLmFzc2lnbmVkQnlUZXh0fT5cbiAgICAgICAgICAgIDxNYW5hZ2VGb3JcbiAgICAgICAgICAgICAgZmlyc3ROYW1lPXt0aWNrZXQub3duZXI/LmZpcnN0X25hbWV9XG4gICAgICAgICAgICAgIGxhc3ROYW1lPXt0aWNrZXQub3duZXI/Lmxhc3RfbmFtZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9HcmlkPlxuICAgICAgICApfVxuICAgICAgPC9HcmlkPlxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbkF0dGVuZGVlU3RhdHVzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBpc19hY3RpdmU6IFByb3BUeXBlcy5ib29sXG4gIH0pLFxuICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBdHRlbmRlZVN0YXR1cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCdXR0b24gfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4vT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IHsgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlckxpc3RJdGVtID0gKHtcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgb25QYWdpbmF0ZUNsaWNrLFxuICB0aWNrZXRzVG9SZWZ1bmQsXG4gIHNlbGVjdFRvUmVmdW5kXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW2l0ZW1zVG9EaXNwbGF5LCBzZXRJdGVtc1RvRGlzcGxheV0gPSB1c2VTdGF0ZShcbiAgICBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlRcbiAgKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldEl0ZW1zVG9EaXNwbGF5KFBBR0lOQVRJT05fRElTUExBWV9DT1VOVCk7XG4gIH0sIFtvcmRlcj8udGlja2V0c190b3RhbF0pO1xuXG4gIGlmICghb3JkZXI/Lm1lbWJlclRpY2tldHM/Lmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHNsaWNlZFRpY2tldHMgPSBvcmRlcj8ubWVtYmVyVGlja2V0cz8uc2xpY2UoMCwgaXRlbXNUb0Rpc3BsYXkpO1xuXG4gIGNvbnN0IG9uVmlld01vcmUgPSAoKSA9PiB7XG4gICAgaWYgKG9yZGVyPy50aWNrZXRzX3RvdGFsID4gb3JkZXI/Lm1lbWJlclRpY2tldHMubGVuZ3RoKSB7XG4gICAgICBvblBhZ2luYXRlQ2xpY2soKTtcbiAgICB9XG4gICAgc2V0SXRlbXNUb0Rpc3BsYXkoaXRlbXNUb0Rpc3BsYXkgKyBQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuICB9O1xuXG4gIGNvbnN0IG9uVmlld0xlc3MgPSAoKSA9PiBzZXRJdGVtc1RvRGlzcGxheShQQUdJTkFUSU9OX0RJU1BMQVlfQ09VTlQpO1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIHtzbGljZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICA8T3JkZXJMaXN0VGlja2V0c1xuICAgICAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIGlzUmVmdW5kTW9kYWw9e2ZhbHNlfVxuICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17ISF0aWNrZXRzVG9SZWZ1bmQuZmluZCgodCkgPT4gdC5pZCA9PT0gdGlja2V0LmlkKX1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIC8+XG4gICAgICApKX1cbiAgICAgIHtvcmRlcj8udGlja2V0c190b3RhbCA+IGl0ZW1zVG9EaXNwbGF5ID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbW9yZSBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld01vcmV9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwudmlld19tb3JlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgICB7c2xpY2VkVGlja2V0cz8ubGVuZ3RoID4gUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UICYmXG4gICAgICBzbGljZWRUaWNrZXRzPy5sZW5ndGggPT09IG9yZGVyPy50aWNrZXRzX3RvdGFsID8gKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInZpZXcgbGVzcyBidXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnZpZXdNb3JlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e29uVmlld0xlc3N9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwudmlld19sZXNzXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICkgOiAoXG4gICAgICAgIFwiXCJcbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59O1xuXG5PcmRlckxpc3RJdGVtLnByb3BUeXBlcyA9IHtcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0SXRlbTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQnV0dG9uLCBCb3gsIFRvb2x0aXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IFN0YWNrIGZyb20gXCJAbXVpL21hdGVyaWFsL1N0YWNrXCI7XG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIkBtdWkvbWF0ZXJpYWwvQ2hlY2tib3hcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgVGlja2V0U3RhdHVzIGZyb20gXCIuLi9UaWNrZXRTdGF0dXNcIjtcbmltcG9ydCB7IGdldFN1bW1pdFJlYXNzaWduRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0IHsgdXNlTm93IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4vQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBUaWNrZXREZXRhaWwgZnJvbSBcIi4uL1RpY2tldERldGFpbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgVGlja2V0QXNzaWduIGZyb20gXCIuLi9UaWNrZXRBc3NpZ25cIjtcbmltcG9ydCB7IHJlc2V0VGlja2V0IH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgbW9kYWxWaWV3cyA9IHtcbiAgZGV0YWlsOiBcIkRFVEFJTFwiLFxuICByZWFzc2lnbjogXCJSRUFTU0lHTlwiLFxuICBhc3NpZ246IFwiQVNTSUdOXCJcbn07XG5cbmNvbnN0IFRpY2tldENUQXMgPSAoe1xuICBpc0luY29tcGxldGUsXG4gIGlzVW5hc3NpZ25lZCxcbiAgaXNSZWFzc2lnbmFibGUsXG4gIG9uT3BlbkNsaWNrXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBpZiAoaXNVbmFzc2lnbmVkKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXNzaWduVGlja2V0QnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLmFzc2lnbil9XG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5hc3NpZ25fdGlja2V0XCIpfVxuICAgICAgPC9CdXR0b24+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFN0YWNrIGFsaWduSXRlbXM9XCJjZW50ZXJcIiBkaXJlY3Rpb249XCJyb3dcIj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudmlld0ZpbmlzaFRpY2tldEJ1dHRvbn1cbiAgICAgICAgb25DbGljaz17KCkgPT4gb25PcGVuQ2xpY2sobW9kYWxWaWV3cy5kZXRhaWwpfVxuICAgICAgPlxuICAgICAgICB7aXNJbmNvbXBsZXRlXG4gICAgICAgICAgPyB0KFwidGlja2V0X3N0YXR1cy5maW5pc2hfdGlja2V0XCIpXG4gICAgICAgICAgOiB0KFwidGlja2V0X3N0YXR1cy52aWV3X3RpY2tldFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgICAge2lzUmVhc3NpZ25hYmxlICYmIChcbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWFzc2lnbiB0aWNrZXQgYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5yZWFzc2lnbkJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbk9wZW5DbGljayhtb2RhbFZpZXdzLnJlYXNzaWduKX1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5yZWFzc2lnbl90aWNrZXRcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgKX1cbiAgICA8L1N0YWNrPlxuICApO1xufTtcblxuVGlja2V0Q1RBcy5wcm9wVHlwZXMgPSB7XG4gIGlzSW5jb21wbGV0ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgaXNVbmFzc2lnbmVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICBpc1JlYXNzaWduYWJsZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgb25PcGVuQ2xpY2s6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmNvbnN0IE9yZGVyTGlzdFRpY2tldHMgPSAoe1xuICB0aWNrZXQsXG4gIHN1bW1pdCxcbiAgaXNSZWZ1bmRNb2RhbCxcbiAgaXNTZWxlY3RlZFRvUmVmdW5kLFxuICBzZWxlY3RUb1JlZnVuZCxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0XG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBub3cgPSB1c2VOb3coKTtcbiAgY29uc3QgeyBpc1JlZnVuZGFibGUsIGlzVW5hc3NpZ25lZCwgaXNJbmNvbXBsZXRlLCBjYW5SZWFzc2lnbiB9ID1cbiAgICB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG4gIGNvbnN0IFttb2RhbE9wZW4sIHNldE1vZGFsT3Blbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgcmVhc3NpZ25EYXRlID0gZ2V0U3VtbWl0UmVhc3NpZ25EYXRlKHN1bW1pdCk7XG4gIGNvbnN0IG9uUmVhc3NpZ25hYmxlUGVyaW9kID0gcmVhc3NpZ25EYXRlID4gbm93O1xuICBjb25zdCBpc1JlYXNzaWduYWJsZSA9XG4gICAgb25SZWFzc2lnbmFibGVQZXJpb2QgJiYgY2FuUmVhc3NpZ24gJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldDtcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3BlbihudWxsKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWwgPSAodmlldykgPT4ge1xuICAgIGRpc3BhdGNoKHJlc2V0VGlja2V0KCkpO1xuICAgIHNldE1vZGFsT3Blbih2aWV3KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxHcmlkXG4gICAgICBjb250YWluZXJcbiAgICAgIGtleT17dGlja2V0LmlkfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMub3JkZXJXcmFwcGVyfSAke1xuICAgICAgICBpc1JlZnVuZE1vZGFsID8gc3R5bGVzLnJlZnVuZE1vZGFsIDogXCJcIlxuICAgICAgfSAke2lzUmVmdW5kTW9kYWwgJiYgIWlzUmVmdW5kYWJsZSA/IHN0eWxlcy5kaXNhYmxlZFJlZnVuZCA6IFwiXCJ9ICR7XG4gICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZCA/IHN0eWxlcy5zZWxlY3RlZCA6IFwiXCJcbiAgICAgIH1gfVxuICAgID5cbiAgICAgIHtpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgPEdyaWQgaXRlbSB4cz17MX0gcGFkZGluZz17Mn0gY2xhc3NOYW1lPXtzdHlsZXMuY2hlY2tib3h9PlxuICAgICAgICAgIDxDaGVja2JveFxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZCB0aWNrZXQgY2hlY2tib3hcIlxuICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgIGNoZWNrZWQ9e2lzU2VsZWN0ZWRUb1JlZnVuZH1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2VsZWN0VG9SZWZ1bmQoZSwgdGlja2V0KX1cbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIFwiJiAuTXVpU3ZnSWNvbi1yb290XCI6IHtcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogMThcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpc2FibGVkPXshaXNSZWZ1bmRhYmxlfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgICA8R3JpZFxuICAgICAgICBpdGVtXG4gICAgICAgIGNvbnRhaW5lclxuICAgICAgICBkYXRhLXRlc3RpZD1cIm9yZGVyLWxpc3QtdGlja2V0XCJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHhzPXtpc1JlZnVuZE1vZGFsID8gMTEgOiAxMn1cbiAgICAgID5cbiAgICAgICAgPEdyaWRcbiAgICAgICAgICB4cz17OH1cbiAgICAgICAgICBweT17Mn1cbiAgICAgICAgICBwbD17NH1cbiAgICAgICAgICBpdGVtXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0VGlja2V0VHlwZX1cbiAgICAgICAgICBqdXN0aWZ5PVwic3BhY2UtYmV0d2VlblwiXG4gICAgICAgID5cbiAgICAgICAgICA8U3RhY2tcbiAgICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImZsZXgtc3RhcnRcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGRpcmVjdGlvbj1cInJvd1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDxHcmlkIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZVdyYXBwZXJ9IHhzPXs0fSBweT17Mn0gcHI9ezR9IGl0ZW0+XG4gICAgICAgICAgey8qIFRvIGFkZCBiYWRnZSBmZWF0dXJlcyAqL31cbiAgICAgICAgICB7dGlja2V0LmJhZGdlPy5mZWF0dXJlcy5tYXAoKGJmKSA9PiAoXG4gICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YmYubmFtZX0ga2V5PXtiZi5uYW1lfT5cbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICAgIGFsdD17YmYubmFtZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8R3JpZCB4cz17MTJ9IHN4PXt7IHB4OiA0LCBwYjogMiB9fSBpdGVtPlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1c1xuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBpc0V4dGVybmFsQXNzaWduZWRUaWNrZXQ9eyEhaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0fVxuICAgICAgICAgIC8+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0Tm99PlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnRpY2tldF9ub1wiKX06e1wiIFwifVxuICAgICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICAgIHRleHQ9e3RpY2tldC5udW1iZXJ9XG4gICAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwidGlja2V0X3N0YXR1cy5jb3B5X3RpY2tldF9udW1iZXJcIil9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9HcmlkPlxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldEZvb3Rlcn0gcHg9e3sgeHM6IDEgfX0gcGI9e3sgeHM6IDIgfX0+XG4gICAgICAgICAgPEJveD5cbiAgICAgICAgICAgIDxUaWNrZXRTdGF0dXMgdGlja2V0PXt0aWNrZXR9IC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRBY3Rpb25CdXR0b25zfT5cbiAgICAgICAgICAgIHt0aWNrZXQuaXNfYWN0aXZlICYmICFpc1JlZnVuZE1vZGFsICYmIChcbiAgICAgICAgICAgICAgPFRpY2tldENUQXNcbiAgICAgICAgICAgICAgICBpc1VuYXNzaWduZWQ9e2lzVW5hc3NpZ25lZH1cbiAgICAgICAgICAgICAgICBpc0luY29tcGxldGU9e2lzSW5jb21wbGV0ZX1cbiAgICAgICAgICAgICAgICBpc1JlYXNzaWduYWJsZT17aXNSZWFzc2lnbmFibGUgJiYgIWlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldH1cbiAgICAgICAgICAgICAgICBvbk9wZW5DbGljaz17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L0JveD5cbiAgICAgICAgPC9Cb3g+XG4gICAgICAgIDxUaWNrZXREZXRhaWxcbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICB0aWNrZXRJZD17dGlja2V0Py5pZH1cbiAgICAgICAgICBvcmRlcklkPXt0aWNrZXQ/Lm9yZGVyX2lkIHx8IHRpY2tldD8ub3JkZXI/LmlkfVxuICAgICAgICAgIG93bmVySWQ9e3RpY2tldD8ub3duZXI/LmlkfVxuICAgICAgICAgIG9wZW49e21vZGFsT3BlbiA9PT0gbW9kYWxWaWV3cy5kZXRhaWx9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VNb2RhbH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRpY2tldEFzc2lnblxuICAgICAgICAgIHRpY2tldElkPXt0aWNrZXQ/LmlkfVxuICAgICAgICAgIG9yZGVySWQ9e3RpY2tldD8ub3JkZXJfaWQgfHwgdGlja2V0Py5vcmRlcj8uaWR9XG4gICAgICAgICAgb3duZXJJZD17dGlja2V0Py5vd25lcj8uaWR9XG4gICAgICAgICAgb3Blbj17W21vZGFsVmlld3MucmVhc3NpZ24sIG1vZGFsVmlld3MuYXNzaWduXS5pbmNsdWRlcyhtb2RhbE9wZW4pfVxuICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuT3JkZXJMaXN0VGlja2V0cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBpZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvcmRlcl9pZDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBvd25lcjogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIGlkOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgICAgZW1haWw6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICBudW1iZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgdG90YWxfcmVmdW5kZWRfYW1vdW50OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHRpY2tldF90eXBlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZ1xuICAgIH0pLFxuICAgIGlzX2FjdGl2ZTogUHJvcFR5cGVzLmJvb2xcbiAgfSksXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgaXNSZWZ1bmRNb2RhbDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzU2VsZWN0ZWRUb1JlZnVuZDogUHJvcFR5cGVzLmJvb2wsXG4gIHNlbGVjdFRvUmVmdW5kOiBQcm9wVHlwZXMuZnVuYyxcbiAgaXNFeHRlcm5hbEFzc2lnbmVkVGlja2V0OiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJMaXN0VGlja2V0cztcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBUYWJzIGZyb20gXCJAbXVpL21hdGVyaWFsL1RhYnNcIjtcbmltcG9ydCBUYWIgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvVGFiXCI7XG5pbXBvcnQgT3JkZXJMaXN0SXRlbSBmcm9tIFwiLi9PcmRlckxpc3RJdGVtXCI7XG5pbXBvcnQgT3JkZXJTdW1tYXJ5IGZyb20gXCIuLi9PcmRlclN1bW1hcnlcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0c01vZGFsIGZyb20gXCIuLi9SZWZ1bmRSZXF1ZXN0c1wiO1xuaW1wb3J0IEVycm9yTGFiZWwgZnJvbSBcIi4uL0xhYmVscy9FcnJvckxhYmVsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgUmVmdW5kRGV0YWlscyBmcm9tIFwiLi4vUmVmdW5kUmVxdWVzdHMvUmVmdW5kRGV0YWlsc1wiO1xuXG5jb25zdCBUYWJQYW5lbCA9IChwcm9wcykgPT4ge1xuICBjb25zdCB7IGNoaWxkcmVuLCB2YWx1ZSwgaW5kZXggfSA9IHByb3BzO1xuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIHJvbGU9XCJ0YWJwYW5lbFwiXG4gICAgICBoaWRkZW49e3ZhbHVlICE9PSBpbmRleH1cbiAgICAgIGlkPXtgdGFicGFuZWwtJHtpbmRleH1gfVxuICAgICAgYXJpYS1sYWJlbGxlZGJ5PXtgdGFiLSR7aW5kZXh9YH1cbiAgICA+XG4gICAgICB7dmFsdWUgPT09IGluZGV4ICYmIGNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufTtcblxuY29uc3QgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUgPSAoe1xuICBpc01vYmlsZSxcbiAgc3VtbWl0LFxuICBvcmRlcixcbiAgZGV0YWlsc1JlcXVpcmVkLFxuICBvblBhZ2luYXRlQ2xpY2tcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKDApO1xuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAoXywgbmV3VmFsdWUpID0+IHtcbiAgICBzZXRWYWx1ZShuZXdWYWx1ZSk7XG4gIH07XG4gIGNvbnN0IFt0aWNrZXRzVG9SZWZ1bmQsIHNldFRpY2tldHNUb1JlZnVuZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFtzdWJtaXRSZXF1ZXN0LCBzZXRTdWJtaXRSZXF1ZXN0XSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW3JlZnVuZERldGFpbHNPcGVuLCBzZXRSZWZ1bmREZXRhaWxzT3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3Qgb25SZWZ1bmRDbGljayA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KHRydWUpO1xuICB9O1xuICBjb25zdCB1bnNlbGVjdFJlZnVuZFRpY2tldHMgPSAodGlja2V0KSA9PiB7XG4gICAgY29uc3QgZmlsdGVyU2VsZWN0ZWQgPSB0aWNrZXRzVG9SZWZ1bmQuZmlsdGVyKCh0KSA9PiB0LmlkICE9PSB0aWNrZXQuaWQpO1xuICAgIHNldFRpY2tldHNUb1JlZnVuZChmaWx0ZXJTZWxlY3RlZCk7XG4gIH07XG4gIGNvbnN0IHNlbGVjdFRvUmVmdW5kID0gKGUsIHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHsgY2hlY2tlZCB9ID0gZS50YXJnZXQ7XG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkVGlja2V0ID0gb3JkZXI/Lm1lbWJlclRpY2tldHM/LmZpbmQoXG4gICAgICAgICh0KSA9PiB0LmlkID09PSB0aWNrZXQuaWRcbiAgICAgICk7XG4gICAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoWy4uLnRpY2tldHNUb1JlZnVuZCwgc2VsZWN0ZWRUaWNrZXRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzKHRpY2tldCk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNsb3NlU3VibWl0UmVxdWVzdCA9ICgpID0+IHtcbiAgICBzZXRTdWJtaXRSZXF1ZXN0KGZhbHNlKTtcbiAgICBzZXRUaWNrZXRzVG9SZWZ1bmQoW10pO1xuICB9O1xuXG4gIGNvbnN0IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMgPSAoKSA9PiB7XG4gICAgc2V0U3VibWl0UmVxdWVzdChmYWxzZSk7XG4gICAgc2V0VGlja2V0c1RvUmVmdW5kKFtdKTtcbiAgfTtcblxuICBjb25zdCBtb3JlRGV0YWlscyA9ICgpID0+XG4gICAgZGV0YWlsc1JlcXVpcmVkICYmIChcbiAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgIG1lc3NhZ2U9e3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19kZXRhaWxzX3JlcXVpcmVkXCIpfVxuICAgICAgICBjb2xvcj1cIiNmZjk4MDBcIlxuICAgICAgICBkYXRhVGVzdElkPVwibW9yZS1kZXRhaWxzLWxhYmVsXCJcbiAgICAgIC8+XG4gICAgKTtcblxuICByZXR1cm4gaXNNb2JpbGUgPyAoXG4gICAgPEJveFxuICAgICAgY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdENvbnRhaW5lcn1cbiAgICAgIGRhdGEtdGVzdGlkPVwibW9iaWxlLW9yZGVycy1saXN0LWNvbnRhaW5lclwiXG4gICAgPlxuICAgICAgPEJveCBzeD17eyBib3JkZXJDb2xvcjogXCJkaXZpZGVyXCIsIHBiOiAyIH19PlxuICAgICAgICA8VGFic1xuICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJUaWNrZXRzICYgU3VtbWFyeVwiXG4gICAgICAgID5cbiAgICAgICAgICA8VGFiIGxhYmVsPXt0KFwibGFiZWxzLnRpY2tldHNcIil9IGNsYXNzTmFtZT17c3R5bGVzLnRhYkJ1dHRvbnN9IC8+XG4gICAgICAgICAgPFRhYiBsYWJlbD17dChcImxhYmVscy5zdW1tYXJ5XCIpfSBjbGFzc05hbWU9e3N0eWxlcy50YWJCdXR0b25zfSAvPlxuICAgICAgICA8L1RhYnM+XG4gICAgICA8L0JveD5cbiAgICAgIHttb3JlRGV0YWlscygpfVxuICAgICAgPFRhYlBhbmVsIHZhbHVlPXt2YWx1ZX0gaW5kZXg9ezB9PlxuICAgICAgICA8T3JkZXJMaXN0SXRlbVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblBhZ2luYXRlQ2xpY2s9e29uUGFnaW5hdGVDbGlja31cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgc3VibWl0UmVxdWVzdD17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgICB1bnNlbGVjdFJlZnVuZFRpY2tldHM9e3Vuc2VsZWN0UmVmdW5kVGlja2V0c31cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgICA8VGFiUGFuZWwgdmFsdWU9e3ZhbHVlfSBpbmRleD17MX0+XG4gICAgICAgIDxPcmRlclN1bW1hcnlcbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgc3VtbWl0PXtzdW1taXR9XG4gICAgICAgICAgb25SZWZ1bmRDbGljaz17b25SZWZ1bmRDbGlja31cbiAgICAgICAgICBzdWJtaXRSZXF1ZXN0PXtzdWJtaXRSZXF1ZXN0fVxuICAgICAgICAgIG9uUmVmdW5kRGV0YWlsQ2xpY2s9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKHRydWUpfVxuICAgICAgICAvPlxuICAgICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzIHx8IFtdfVxuICAgICAgICAgIG9wZW49e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBjbG9zZVN1Ym1pdFJlcXVlc3QoKX1cbiAgICAgICAgICB0aWNrZXRzVG9SZWZ1bmQ9e3RpY2tldHNUb1JlZnVuZH1cbiAgICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgICAgdGlja2V0cz17b3JkZXI/Lm1lbWJlclRpY2tldHN9XG4gICAgICAgICAgY3VycmVuY3k9e29yZGVyLmN1cnJlbmN5fVxuICAgICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICAgIG9uQ2xvc2VTbGlkZXI9eygpID0+IHNldFJlZnVuZERldGFpbHNPcGVuKGZhbHNlKX1cbiAgICAgICAgLz5cbiAgICAgIDwvVGFiUGFuZWw+XG4gICAgPC9Cb3g+XG4gICkgOiAoXG4gICAgPD5cbiAgICAgIDxHcmlkIGl0ZW0gbWQ9ezEyfT5cbiAgICAgICAge21vcmVEZXRhaWxzKCl9XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZFxuICAgICAgICBwYWRkaW5nPXsxfVxuICAgICAgICBpdGVtXG4gICAgICAgIG1kPXs3fVxuICAgICAgICBvcmRlcj17eyBtZDogMSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0Q29udGFpbmVyfVxuICAgICAgICBkYXRhLXRlc3RpZD1cImRlc2t0b3Atb3JkZXJzLWxpc3QtY29udGFpbmVyXCJcbiAgICAgID5cbiAgICAgICAgPE9yZGVyTGlzdEl0ZW1cbiAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICBvcmRlcj17b3JkZXJ9XG4gICAgICAgICAgb25QYWdpbmF0ZUNsaWNrPXtvblBhZ2luYXRlQ2xpY2t9XG4gICAgICAgICAgdGlja2V0c1RvUmVmdW5kPXt0aWNrZXRzVG9SZWZ1bmR9XG4gICAgICAgICAgc2VsZWN0VG9SZWZ1bmQ9e3NlbGVjdFRvUmVmdW5kfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgdW5zZWxlY3RSZWZ1bmRUaWNrZXRzPXt1bnNlbGVjdFJlZnVuZFRpY2tldHN9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8R3JpZCBwYWRkaW5nPXsxfSBpdGVtIG1kPXs1fSBvcmRlcj17eyBtZDogMSB9fT5cbiAgICAgICAgPE9yZGVyU3VtbWFyeVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBvblJlZnVuZENsaWNrPXtvblJlZnVuZENsaWNrfVxuICAgICAgICAgIHN1Ym1pdFJlcXVlc3Q9e3N1Ym1pdFJlcXVlc3R9XG4gICAgICAgICAgb25SZWZ1bmREZXRhaWxDbGljaz17KCkgPT4gc2V0UmVmdW5kRGV0YWlsc09wZW4odHJ1ZSl9XG4gICAgICAgIC8+XG4gICAgICA8L0dyaWQ+XG4gICAgICA8UmVmdW5kUmVxdWVzdHNNb2RhbFxuICAgICAgICB0aWNrZXRzPXtvcmRlcj8ubWVtYmVyVGlja2V0cyB8fCBbXX1cbiAgICAgICAgb3Blbj17c3VibWl0UmVxdWVzdH1cbiAgICAgICAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U9eygpID0+IHJlc2V0QWxsUmVmdW5kU3RhdHVzZXMoKX1cbiAgICAgICAgb25DbG9zZVNsaWRlcj17KCkgPT4gY2xvc2VTdWJtaXRSZXF1ZXN0KCl9XG4gICAgICAgIHRpY2tldHNUb1JlZnVuZD17dGlja2V0c1RvUmVmdW5kfVxuICAgICAgICBzZWxlY3RUb1JlZnVuZD17c2VsZWN0VG9SZWZ1bmR9XG4gICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgLz5cbiAgICAgIDxSZWZ1bmREZXRhaWxzXG4gICAgICAgIHRpY2tldHM9e29yZGVyPy5tZW1iZXJUaWNrZXRzfVxuICAgICAgICBjdXJyZW5jeT17b3JkZXIuY3VycmVuY3l9XG4gICAgICAgIG9wZW49e3JlZnVuZERldGFpbHNPcGVufVxuICAgICAgICBvbkNsb3NlU2xpZGVyPXsoKSA9PiBzZXRSZWZ1bmREZXRhaWxzT3BlbihmYWxzZSl9XG4gICAgICAvPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUucHJvcFR5cGVzID0ge1xuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIG9yZGVyOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIG1lbWJlclRpY2tldHM6IFByb3BUeXBlcy5hcnJheU9mKE9iamVjdClcbiAgfSksXG4gIGlzTW9iaWxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgZGV0YWlsc1JlcXVpcmVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25QYWdpbmF0ZUNsaWNrOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgT3JkZXJzTGlzdERlc2t0b3BNb2JpbGU7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3Rvciwgc2hhbGxvd0VxdWFsIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBHcmlkLCBCb3gsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IHVzZU1lZGlhUXVlcnkgZnJvbSBcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiO1xuaW1wb3J0IHsgZ2V0VGlja2V0c0J5T3JkZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgZ2V0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IHsgT05FX1BBR0VfTkVYVCB9IGZyb20gXCIuLi8uLi91dGlscy9jb25zdGFudHNcIjtcbmltcG9ydCBPcmRlcnNMaXN0RGVza3RvcE1vYmlsZSBmcm9tIFwiLi9PcmRlcnNMaXN0RGVza3RvcE1vYmlsZVwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi9Db3B5VGV4dFwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBPcmRlcnNMaXN0ID0gKHsgc3VtbWl0LCBvcmRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCB7IHRpY2tldF9wZXJfcGFnZSwgZmlsdGVyLCBzb3J0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7XG4gIGNvbnN0IGlzTW9iaWxlID0gdXNlTWVkaWFRdWVyeSh0aGVtZS5icmVha3BvaW50cy5kb3duKFwibGdcIikpO1xuICBjb25zdCBbaXNNb2JpbGVWaWV3YWJsZSwgc2V0TW9iaWxlVmlld2FibGVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBkZXRhaWxzUmVxdWlyZWQgPSBvcmRlci5tZW1iZXJUaWNrZXRzPy5maW5kKFxuICAgICh0aWNrZXQpID0+IHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIlxuICApO1xuXG4gIGNvbnN0IG9uUGFnaW5hdGVDbGljayA9ICgpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgIG9yZGVySWQ6IG9yZGVyLmlkLFxuICAgICAgICBwYWdlOiBvcmRlci50aWNrZXRzX3BhZ2VfY3VycmVudCArIE9ORV9QQUdFX05FWFQsXG4gICAgICAgIHBlclBhZ2U6IHRpY2tldF9wZXJfcGFnZSxcbiAgICAgICAgZmlsdGVyLFxuICAgICAgICBzb3J0XG4gICAgICB9KVxuICAgICk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPEJveFxuICAgICAgICBzeD17eyBwYWRkaW5nOiB7IHhzOiAyLCBtZDogMSwgbGc6IDAgfSB9fVxuICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5vcmRlclRpY2tldEluZm9Db250YWluZXJ9XG4gICAgICA+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJUaWNrZXRJbmZvfVxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwib3JkZXItdGlja2V0LWluZm8tY29udGFpbmVyXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwib3JkZXJzLnB1cmNoYXNlZFwiKX06IHtnZXRGb3JtYXR0ZWREYXRlKG9yZGVyLmNyZWF0ZWQpfSB8e1wiIFwifVxuICAgICAgICAgIHt0KFwib3JkZXJfc3VtbWFyeS5vcmRlcl9ub1wiKX06e1wiIFwifVxuICAgICAgICAgIDxDb3B5VGV4dFxuICAgICAgICAgICAgdGV4dD17b3JkZXIubnVtYmVyfVxuICAgICAgICAgICAgdG9vbHRpcFRleHQ9e3QoXCJvcmRlcl9zdW1tYXJ5LmNvcHlfb3JkZXJfbnVtYmVyXCIpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAge2lzTW9iaWxlICYmIChcbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBzeD17eyBwYWRkaW5nOiBcIjVweCAxMHB4XCIgfX1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE1vYmlsZVZpZXdhYmxlKCFpc01vYmlsZVZpZXdhYmxlKX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7aXNNb2JpbGVWaWV3YWJsZVxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfc3RhdHVzLmhpZGVfdGlja2V0c1wiKVxuICAgICAgICAgICAgICA6IHQoXCJ0aWNrZXRfc3RhdHVzLnZpZXdfdGlja2V0c1wiKX1cbiAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEdyaWRcbiAgICAgICAga2V5PXtvcmRlci5pZH1cbiAgICAgICAgY29udGFpbmVyXG4gICAgICAgIHJvd1NwYWNpbmc9ezF9XG4gICAgICAgIGNvbHVtblNwYWNpbmc9e3sgeHM6IDEsIHNtOiAyLCBtZDogMyB9fVxuICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5vcmRlclRpY2tldENvbnRhaW5lcn0gJHtcbiAgICAgICAgICBpc01vYmlsZSAmJiAhaXNNb2JpbGVWaWV3YWJsZSA/IHN0eWxlcy5kaXNwbGF5X25vbmUgOiBcIlwiXG4gICAgICAgIH1gfVxuICAgICAgICBzeD17e1xuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IHtcbiAgICAgICAgICAgIG1kOiBcInJvd1wiLFxuICAgICAgICAgICAgbGc6IFwicm93XCJcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBhZGRpbmc6IHtcbiAgICAgICAgICAgIHhzOiAyLFxuICAgICAgICAgICAgbWQ6IDQsXG4gICAgICAgICAgICBsZzogMFxuICAgICAgICAgIH1cbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPE9yZGVyc0xpc3REZXNrdG9wTW9iaWxlXG4gICAgICAgICAgaXNNb2JpbGU9e2lzTW9iaWxlfVxuICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgIG9yZGVyPXtvcmRlcn1cbiAgICAgICAgICBkZXRhaWxzUmVxdWlyZWQ9eyEhZGV0YWlsc1JlcXVpcmVkfVxuICAgICAgICAgIG9uUGFnaW5hdGVDbGljaz17b25QYWdpbmF0ZUNsaWNrfVxuICAgICAgICAvPlxuICAgICAgPC9HcmlkPlxuICAgIDwvPlxuICApO1xufTtcblxuT3JkZXJzTGlzdC5wcm9wVHlwZXMgPSB7XG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdCxcbiAgb3JkZXI6IFByb3BUeXBlcy5vYmplY3Rcbn07XG5cbmV4cG9ydCBkZWZhdWx0IE9yZGVyc0xpc3Q7XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXQgZnJvbSBcIi4vUmVmdW5kUmVxdWVzdGVkVGlja2V0XCI7XG5pbXBvcnQgeyBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3RpY2tldFV0aWxzXCI7XG5cbmNvbnN0IFJlZnVuZERldGFpbHMgPSAoeyB0aWNrZXRzLCBjdXJyZW5jeSwgb3Blbiwgb25DbG9zZVNsaWRlciB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgcmVxdWVzdGVkVGlja2V0cyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gZ2V0QWxsUmVmdW5kUmVxdWVzdGVkVGlja2V0cyh0aWNrZXRzKSxcbiAgICBbdGlja2V0c11cbiAgKTtcbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICB9O1xuICByZXR1cm4gKFxuICAgIDxSaWdodERyYXdlclxuICAgICAgaWQ9XCJyZWZ1bmQtZGV0YWlsc1wiXG4gICAgICBvcGVuPXtvcGVufVxuICAgICAgb25DbG9zZT17Y2xvc2VTbGlkZXJ9XG4gICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVmdW5kX2RldGFpbHNcIil9XG4gICAgPlxuICAgICAgPEJveFxuICAgICAgICBzeD17e1xuICAgICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICAgIGZsZXhEaXJlY3Rpb246IFwiY29sdW1uXCIsXG4gICAgICAgICAgYWxpZ25JdGVtczogXCJjZW50ZXJcIixcbiAgICAgICAgICBwYWRkaW5nOiBcIjAgNXJlbVwiXG4gICAgICAgIH19XG4gICAgICA+XG4gICAgICAgIHtyZXF1ZXN0ZWRUaWNrZXRzPy5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIGN1cnJlbmN5PXtjdXJyZW5jeX1cbiAgICAgICAgICAgIHJlZnVuZERldGFpbHNcbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5SZWZ1bmREZXRhaWxzLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2VTbGlkZXI6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWZ1bmREZXRhaWxzO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgR3JpZCwgSWNvbkJ1dHRvbiwgVG9vbHRpcCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB0b29sdGlwQ2xhc3NlcyB9IGZyb20gXCJAbXVpL21hdGVyaWFsL1Rvb2x0aXBcIjtcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gXCJAbXVpL21hdGVyaWFsL3N0eWxlc1wiO1xuaW1wb3J0IEluZm9JY29uIGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsL0luZm9cIjtcbmltcG9ydCBTdGFjayBmcm9tIFwiQG11aS9tYXRlcmlhbC9TdGFja1wiO1xuaW1wb3J0IG1vbWVudCBmcm9tIFwibW9tZW50LXRpbWV6b25lXCI7XG5pbXBvcnQgQXR0ZW5kZWVTdGF0dXMgZnJvbSBcIi4uL09yZGVyc0xpc3QvQXR0ZW5kZWVTdGF0dXNcIjtcbmltcG9ydCBSZWZ1bmRTdGF0dXMgZnJvbSBcIi4vUmVmdW5kU3RhdHVzXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uL0NvcHlUZXh0XCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCBUaWNrZXRTdGF0dXMgZnJvbSBcIi4uL1RpY2tldFN0YXR1c1wiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgZm9ybWF0Q3VycmVuY3kgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdGVkVGlja2V0ID0gKHsgdGlja2V0LCBjdXJyZW5jeSwgcmVmdW5kRGV0YWlscyB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBHUklEXzggPSA4O1xuICBjb25zdCBHUklEXzEyID0gMTI7XG5cbiAgY29uc3QgUEFERElOR18yID0gMjtcblxuICBjb25zdCBhcHByb3ZlZFJlZnVuZHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzLmZpbHRlcihcbiAgICAocmVmdW5kKSA9PiByZWZ1bmQuc3RhdHVzID09PSBcIkFwcHJvdmVkXCJcbiAgKTtcblxuICBjb25zdCByZWZ1bmRlZFRheGVzU3VtbWF0b3J5ID0ge307XG5cbiAgYXBwcm92ZWRSZWZ1bmRzLmZvckVhY2goKHJlZnVuZCkgPT4ge1xuICAgIHJlZnVuZC5yZWZ1bmRlZF90YXhlcy5mb3JFYWNoKChydCkgPT4ge1xuICAgICAgY29uc3QgdGF4SWQgPSBydC50YXguaWQ7XG4gICAgICBpZiAoIXJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdKSB7XG4gICAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdID0ge1xuICAgICAgICAgIG5hbWU6IHJ0LnRheC5uYW1lLFxuICAgICAgICAgIHRvdGFsUmVmdW5kZWRUYXhBbW91bnQ6IDBcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnlbdGF4SWRdLnRvdGFsUmVmdW5kZWRUYXhBbW91bnQgKz1cbiAgICAgICAgcnQucmVmdW5kZWRfYW1vdW50O1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBIdG1sVG9vbHRpcCA9IHN0eWxlZCgoeyBjbGFzc05hbWUsIC4uLnByb3BzIH0pID0+IChcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICA8VG9vbHRpcCB7Li4ucHJvcHN9IGNsYXNzZXM9e3sgcG9wcGVyOiBjbGFzc05hbWUgfX0gLz5cbiAgKSkoKCkgPT4gKHtcbiAgICBbYCYgLiR7dG9vbHRpcENsYXNzZXMudG9vbHRpcH1gXToge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiBcIiNmNWY1ZjlcIixcbiAgICAgIGNvbG9yOiBcInJnYmEoMCwgMCwgMCwgMC44NylcIixcbiAgICAgIG1heFdpZHRoOiAyMjAsXG4gICAgICBmb250U2l6ZTogXCIxZW1cIixcbiAgICAgIGJvcmRlcjogXCIxcHggc29saWQgI2RhZGRlOVwiXG4gICAgfVxuICB9KSk7XG5cbiAgcmV0dXJuIChcbiAgICA8R3JpZFxuICAgICAgY29udGFpbmVyXG4gICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5yZWZ1bmRUaWNrZXRCb3hDb250YWluZXJ9ICR7XG4gICAgICAgIHJlZnVuZERldGFpbHMgPyBzdHlsZXMucmVmdW5kRGV0YWlsIDogXCJcIlxuICAgICAgfSBgfVxuICAgICAgZGF0YS10ZXN0aWQ9XCJyZWZ1bmQtcmVxdWVzdGVkLXRpY2tldC1jb250YWluZXJcIlxuICAgID5cbiAgICAgIDxHcmlkXG4gICAgICAgIHhzPXtHUklEXzEyfVxuICAgICAgICBzbT17cmVmdW5kRGV0YWlscyA/IEdSSURfOCA6IEdSSURfMTJ9XG4gICAgICAgIGl0ZW1cbiAgICAgICAganVzdGlmeT1cInNwYWNlLWJldHdlZW5cIlxuICAgICAgICBwdD17Mn1cbiAgICAgICAgcHg9ezR9XG4gICAgICA+XG4gICAgICAgIDxTdGFja1xuICAgICAgICAgIHN4PXt7XG4gICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJzcGFjZS1iZXR3ZWVuXCIsXG4gICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiXG4gICAgICAgICAgfX1cbiAgICAgICAgICBkaXJlY3Rpb249XCJyb3dcIlxuICAgICAgICA+XG4gICAgICAgICAgPGg0Pnt0aWNrZXQudGlja2V0X3R5cGU/Lm5hbWV9PC9oND5cbiAgICAgICAgICA8R3JpZCBjbGFzc05hbWU9e3N0eWxlcy5iYWRnZUZlYXR1cmVXcmFwcGVyfSB4cz17NH0gaXRlbT5cbiAgICAgICAgICAgIHt0aWNrZXQuYmFkZ2U/LmZlYXR1cmVzLm1hcCgoYmYpID0+IChcbiAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmJhZGdlRmVhdHVyZX1cbiAgICAgICAgICAgICAgICBzcmM9e2JmLmltYWdlfVxuICAgICAgICAgICAgICAgIGFsdD17YmYubmFtZX1cbiAgICAgICAgICAgICAgICBrZXk9e2JmLm5hbWV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICA8L0dyaWQ+XG4gICAgICB7cmVmdW5kRGV0YWlscyAmJiAoXG4gICAgICAgIDxHcmlkIHNtPXs0fSB4cz17MTJ9IHB4PXt7IHNtOiAyLCB4czogNCB9fSBweT17eyB4czogMSwgc206IDIgfX0gaXRlbT5cbiAgICAgICAgICA8UmVmdW5kU3RhdHVzIHRpY2tldD17dGlja2V0fSAvPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICApfVxuICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtIHB4PXs0fSBwYj17cmVmdW5kRGV0YWlscyA/IFBBRERJTkdfMiA6IDB9IGNvbnRhaW5lcj5cbiAgICAgICAgPEdyaWQgeHM9ezEyfSBzbT17OH0gY2xhc3NOYW1lPXtzdHlsZXMucmVmdW5kVGlja2V0QXR0ZW5kZWV9PlxuICAgICAgICAgIDxBdHRlbmRlZVN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXROb30+XG4gICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMudGlja2V0X25vXCIpfTogPENvcHlUZXh0IHRleHQ9e3RpY2tldC5udW1iZXJ9IC8+XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0dyaWQ+XG4gICAgICAgIHtyZWZ1bmREZXRhaWxzICYmIHRpY2tldC50b3RhbF9yZWZ1bmRlZF9hbW91bnQgPiAwICYmIChcbiAgICAgICAgICA8R3JpZCB4cz17MTJ9IG1kPXs0fSBwbD17eyB4czogMCwgc206IDQgfX0+XG4gICAgICAgICAgICB7Zm9ybWF0Q3VycmVuY3kodGlja2V0LnRvdGFsX3JlZnVuZGVkX2Ftb3VudCwgeyBjdXJyZW5jeSB9KX17XCIgXCJ9XG4gICAgICAgICAgICBSZWZ1bmRlZFxuICAgICAgICAgICAge2FwcHJvdmVkUmVmdW5kcy5zb21lKChyKSA9PiByLnJlZnVuZGVkX3RheGVzLmxlbmd0aCA+IDApICYmIChcbiAgICAgICAgICAgICAgPEh0bWxUb29sdGlwXG4gICAgICAgICAgICAgICAgdGl0bGU9e1xuICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgICAgICAge2Zvcm1hdEN1cnJlbmN5KHRpY2tldC5yZWZ1bmRlZF9hbW91bnQsIHsgY3VycmVuY3kgfSl9e1wiIFwifVxuICAgICAgICAgICAgICAgICAgICAgIFRpY2tldCBBbW91bnRcbiAgICAgICAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgICAgICAgICA8Yj5UYXhlczwvYj5cbiAgICAgICAgICAgICAgICAgICAge09iamVjdC5rZXlzKHJlZnVuZGVkVGF4ZXNTdW1tYXRvcnkpLm1hcCgodGF4SWQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRvdGFsUmVmdW5kZWRUYXhBbW91bnQsIG5hbWUgfSA9XG4gICAgICAgICAgICAgICAgICAgICAgICByZWZ1bmRlZFRheGVzU3VtbWF0b3J5W3RheElkXTtcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPHAga2V5PXt0YXhJZH0+e2Ake25hbWV9IC0gJHtmb3JtYXRDdXJyZW5jeShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxSZWZ1bmRlZFRheEFtb3VudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeyBjdXJyZW5jeSB9XG4gICAgICAgICAgICAgICAgICAgICAgICApfWB9PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICA8SW5mb0ljb24gLz5cbiAgICAgICAgICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICAgICAgICAgIDwvSHRtbFRvb2x0aXA+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICB7bW9tZW50KFxuICAgICAgICAgICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzWzBdLmFjdGlvbl9kYXRlICogTUlMTElTRUNfVE9fU0VDXG4gICAgICAgICAgICApLmZvcm1hdChcIk1NTSBERCwgWVlZWVwiKX1cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgICl9XG4gICAgICA8L0dyaWQ+XG4gICAgICB7IXJlZnVuZERldGFpbHMgJiYgKFxuICAgICAgICA8R3JpZCB4cz17MTJ9IHByPXs0fSBwYj17Mn0+XG4gICAgICAgICAgPEdyaWQgeHM9ezEyfSBpdGVtPlxuICAgICAgICAgICAgPFRpY2tldFN0YXR1cyB0aWNrZXQ9e3RpY2tldH0gLz5cbiAgICAgICAgICA8L0dyaWQ+XG4gICAgICAgIDwvR3JpZD5cbiAgICAgICl9XG4gICAgPC9HcmlkPlxuICApO1xufTtcblxuUmVmdW5kUmVxdWVzdGVkVGlja2V0LnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZ1bmREZXRhaWxzOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdGVkVGlja2V0O1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8gfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IENoaXAgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgZ2V0UmVmdW5kUmVxdWVzdGVkU3RhdHVzQ29sb3IgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWZ1bmRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHN0YXR1c0NvbG9yID0gdXNlTWVtbyhcbiAgICAoKSA9PiBnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvcih0aWNrZXQpLFxuICAgIFt0aWNrZXRdXG4gICk7XG4gIHJldHVybiAoXG4gICAgPENoaXBcbiAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgcmVmdW5kIHN0YXR1cyBsYWJlbFwiXG4gICAgICBsYWJlbD17dChgdGlja2V0X3N0YXR1cy5yZWZ1bmRfcmVxdWVzdF8ke3N0YXR1c0NvbG9yfWApfVxuICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuYnV0dG9uUGlsbH0gJHtzdHlsZXNbc3RhdHVzQ29sb3JdfWB9XG4gICAgLz5cbiAgKTtcbn07XG5cblJlZnVuZFN0YXR1cy5wcm9wVHlwZXMgPSB7XG4gIHRpY2tldDogUHJvcFR5cGVzLm9iamVjdFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kU3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFN0eWxlZEVuZ2luZVByb3ZpZGVyIH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCBDaGVja0NpcmNsZUljb24gZnJvbSBcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2hlY2tDaXJjbGVcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBFcnJvckxhYmVsIGZyb20gXCIuLi9MYWJlbHMvRXJyb3JMYWJlbFwiO1xuaW1wb3J0IHsgcmVmdW5kQnVsa1RpY2tldHMsIHVwZGF0ZVRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgU1RFUF9PTkUsIFNURVBfVEhSRUUsIFNURVBfVFdPIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuaW1wb3J0IE9yZGVyTGlzdFRpY2tldHMgZnJvbSBcIi4uL09yZGVyc0xpc3QvT3JkZXJMaXN0VGlja2V0c1wiO1xuaW1wb3J0IFJlZnVuZFJlcXVlc3RlZFRpY2tldCBmcm9tIFwiLi9SZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcIjtcblxuY29uc3QgUmVmdW5kUmVxdWVzdHNNb2RhbCA9ICh7XG4gIHRpY2tldHMsXG4gIHN1bW1pdCxcbiAgb3BlbixcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2UsXG4gIG9uQ2xvc2VTbGlkZXIsXG4gIHRpY2tldHNUb1JlZnVuZCxcbiAgc2VsZWN0VG9SZWZ1bmQsXG4gIHVuc2VsZWN0UmVmdW5kVGlja2V0c1xufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3QgW3N0ZXAsIHNldFN0ZXBdID0gdXNlU3RhdGUoU1RFUF9PTkUpO1xuICBjb25zdCBbZXJyb3JNc2csIHNldEVycm9yTXNnXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCBbcmVmdW5kU3VjY2Vzcywgc2V0UmVmdW5kU3VjY2Vzc10gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgY2xvc2VTbGlkZXIgPSAoKSA9PiB7XG4gICAgc2V0RXJyb3JNc2coXCJcIik7XG4gICAgb25DbG9zZVNsaWRlcigpO1xuICAgIHNldFN0ZXAoU1RFUF9PTkUpO1xuICAgIGlmIChyZWZ1bmRTdWNjZXNzKSB7XG4gICAgICBvblJlZnVuZFN1Y2Nlc3NDbG9zZSgpOyAvLyBpZiB0aGUgcmVmdW5kIGlzIGEgc3VjY2VzcywgdHJpZ2dlciBhbmQgcmUtcmV0cmlldmUgdGlja2V0cyBieSBvcmRlclxuICAgICAgc2V0UmVmdW5kU3VjY2VzcyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGNvbmZpcm1SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX1RXTyk7XG4gIH07XG5cbiAgY29uc3QgZ29CYWNrVG9SZWZ1bmQgPSAoKSA9PiB7XG4gICAgc2V0U3RlcChTVEVQX09ORSk7XG4gIH07XG5cbiAgY29uc3QgcmVmdW5kVGlja2V0cyA9IGFzeW5jICgpID0+IHtcbiAgICBkaXNwYXRjaChyZWZ1bmRCdWxrVGlja2V0cyh7IHRpY2tldHM6IHRpY2tldHNUb1JlZnVuZCB9KSkudGhlbigocmVzKSA9PiB7XG4gICAgICBkaXNwYXRjaCh1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkKHJlcykpOyAvLyByZXR1cm5pbmcgd2hpY2ggdGlja2V0cyB3ZXJlIHN1Y2Nlc3NmdWxcbiAgICAgIGlmIChyZXM/Lmxlbmd0aCA9PT0gdGlja2V0c1RvUmVmdW5kLmxlbmd0aCkge1xuICAgICAgICBzZXRTdGVwKFNURVBfVEhSRUUpOyAvLyBzdWNjZXNzLCBhbGwgcmVmdW5kcyB3ZXJlIHJlcXVlc3RlZFxuICAgICAgICBzZXRSZWZ1bmRTdWNjZXNzKHRydWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RXJyb3JNc2codChcImVycm9ycy5yZWZ1bmRfdW5zdWNjZXNzZnVsXCIpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBzZXRFcnJvck1zZyhcIlwiKTtcbiAgfTtcblxuICBjb25zdCByZWZ1bmRTdGVwT25lID0gKCkgPT4gKFxuICAgIDw+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VidGl0bGV9PlxuICAgICAgICB7dChcImNvbmZpcm1fcG9wdXAucXVlc3Rpb25fdGV4dF9zZWxlY3RfcmVmdW5kXCIpfVxuICAgICAgPC9oMj5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMudGlja2V0TGlzdH0+XG4gICAgICAgIHt0aWNrZXRzLm1hcCgodGlja2V0KSA9PiAoXG4gICAgICAgICAgPE9yZGVyTGlzdFRpY2tldHNcbiAgICAgICAgICAgIGtleT17YHRpY2tldC0ke3RpY2tldC5pZH1gfVxuICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgIGlzU2VsZWN0ZWRUb1JlZnVuZD17XG4gICAgICAgICAgICAgICEhdGlja2V0c1RvUmVmdW5kLmZpbmQoKHQpID0+IHQuaWQgPT09IHRpY2tldC5pZClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNlbGVjdFRvUmVmdW5kPXtzZWxlY3RUb1JlZnVuZH1cbiAgICAgICAgICAgIHVuc2VsZWN0UmVmdW5kVGlja2V0cz17dW5zZWxlY3RSZWZ1bmRUaWNrZXRzfVxuICAgICAgICAgICAgaXNSZWZ1bmRNb2RhbFxuICAgICAgICAgIC8+XG4gICAgICAgICkpfVxuICAgICAgPC9Cb3g+XG4gICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLmFjdGlvbkJ1dHRvbnN9PlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jYW5jZWwtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jYW5jZWxCdXR0b259XG4gICAgICAgICAgb25DbGljaz17Y2xvc2VTbGlkZXJ9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY2FuY2VsXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtY29udGludWUtYnV0dG9uXCJcbiAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5jb250aW51ZUJ1dHRvbn1cbiAgICAgICAgICBvbkNsaWNrPXtjb25maXJtUmVmdW5kfVxuICAgICAgICAgIGRpc2FibGVkPXt0aWNrZXRzVG9SZWZ1bmQubGVuZ3RoID09PSAwfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmNvbnRpbnVlXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgIDwvQm94PlxuICAgIDwvPlxuICApO1xuXG4gIGNvbnN0IHJlZnVuZFN0ZXBUd28gPSAoKSA9PiAoXG4gICAgPEJveCBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIj5cbiAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy5zdWJ0aXRsZX0+XG4gICAgICAgIHt0KFwiY29uZmlybV9wb3B1cC5xdWVzdGlvbl90ZXh0X2NvbmZpcm1fcmVmdW5kXCIpfVxuICAgICAgPC9oMz5cbiAgICAgIHtlcnJvck1zZyAmJiAoXG4gICAgICAgIDxFcnJvckxhYmVsXG4gICAgICAgICAgY2xhc3NOYW1lcz17c3R5bGVzLnJlZnVuZEVycm9yTXNnfVxuICAgICAgICAgIGNvbG9yPVwiI0ZGMDAwMFwiXG4gICAgICAgICAgZGF0YVRlc3RJZD1cImZhaWxlZC1yZWZ1bmQtbWVzc2FnZVwiXG4gICAgICAgICAgbWVzc2FnZT17ZXJyb3JNc2d9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRMaXN0fT5cbiAgICAgICAge3RpY2tldHNUb1JlZnVuZC5tYXAoKHRpY2tldCkgPT4gKFxuICAgICAgICAgIDxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRcbiAgICAgICAgICAgIGtleT17YHJlZnVuZF9yZXFfJHt0aWNrZXQ/LmlkfWB9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAvPlxuICAgICAgICApKX1cbiAgICAgIDwvQm94PlxuICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5DVEFCdXR0b25XcmFwcGVyfT5cbiAgICAgICAgPEJ1dHRvblxuICAgICAgICAgIGFyaWEtbGFiZWw9XCJyZWZ1bmQtcmV0dXJuLWJ1dHRvblwiXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2FuY2VsQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e2dvQmFja1RvUmVmdW5kfVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJnZW5lcmFsLmJhY2tcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1jb250aW51ZS1idXR0b25cIlxuICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICAgIG9uQ2xpY2s9e3JlZnVuZFRpY2tldHN9XG4gICAgICAgID5cbiAgICAgICAgICB7dChcImdlbmVyYWwuY29udGludWVcIil9XG4gICAgICAgIDwvQnV0dG9uPlxuICAgICAgPC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG5cbiAgY29uc3QgcmVmdW5kU3RlcFRocmVlID0gKCkgPT4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLnJlZnVuZFN1Y2Nlc3NmdWx9XG4gICAgICBkYXRhLXRlc3RpZD1cInJlZnVuZC1yZXF1ZXN0LXN1Y2Nlc3NmdWxcIlxuICAgID5cbiAgICAgIDxDaGVja0NpcmNsZUljb24gc3g9e3sgY29sb3I6IFwiIzRjYWY1MFwiIH19IC8+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9e3N0eWxlcy5zdWNjZXNzTXNnfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMVwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17c3R5bGVzLnN1Y2Nlc3NNc2cyfT5cbiAgICAgICAge3QoXCJ0aWNrZXRzLnJlZnVuZF9yZXF1ZXN0X3N1Y2Nlc3NfMlwiKX1cbiAgICAgIDwvc3Bhbj5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgYXJpYS1sYWJlbD1cInJlZnVuZC1maW5pc2gtYnV0dG9uXCJcbiAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmNvbnRpbnVlQnV0dG9ufVxuICAgICAgICBvbkNsaWNrPXtjbG9zZVNsaWRlcn1cbiAgICAgID5cbiAgICAgICAge3QoXCJnZW5lcmFsLmZpbmlzaFwiKX1cbiAgICAgIDwvQnV0dG9uPlxuICAgIDwvQm94PlxuICApO1xuXG4gIGNvbnN0IHJlbmRlclN0ZXBzID0gKCkgPT4ge1xuICAgIHN3aXRjaCAoc3RlcCkge1xuICAgICAgY2FzZSBTVEVQX09ORTpcbiAgICAgICAgcmV0dXJuIHJlZnVuZFN0ZXBPbmUoKTtcbiAgICAgIGNhc2UgU1RFUF9UV086XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVHdvKCk7XG4gICAgICBjYXNlIFNURVBfVEhSRUU6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwVGhyZWUoKTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiByZWZ1bmRTdGVwT25lKCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gKFxuICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgIDxSaWdodERyYXdlclxuICAgICAgICBpZD1cInJlZnVuZC1yZXF1ZXN0c1wiXG4gICAgICAgIG9wZW49e29wZW59XG4gICAgICAgIG9uQ2xvc2U9e2Nsb3NlU2xpZGVyfVxuICAgICAgICB0aXRsZT17dChcIm9yZGVyX3N1bW1hcnkucmVxdWVzdF9yZWZ1bmRcIil9XG4gICAgICAgIGRhdGEtdGVzdGlkPVwicmVmdW5kLXJlcXVlc3QtbW9kYWxcIlxuICAgICAgPlxuICAgICAgICB7cmVuZGVyU3RlcHMoKX1cbiAgICAgIDwvUmlnaHREcmF3ZXI+XG4gICAgPC9TdHlsZWRFbmdpbmVQcm92aWRlcj5cbiAgKTtcbn07XG5cblJlZnVuZFJlcXVlc3RzTW9kYWwucHJvcFR5cGVzID0ge1xuICB0aWNrZXRzOiBQcm9wVHlwZXMuYXJyYXlPZihPYmplY3QpLFxuICBvcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgb25SZWZ1bmRTdWNjZXNzQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBvbkNsb3NlU2xpZGVyOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVmdW5kUmVxdWVzdHNNb2RhbDtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgRHJhd2VyLCBJY29uQnV0dG9uLCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IENsb3NlIGFzIENsb3NlSWNvbiB9IGZyb20gXCJAbXVpL2ljb25zLW1hdGVyaWFsXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJpZ2h0RHJhd2VyID0gKHtcbiAgaWQsXG4gIHRpdGxlLFxuICBoZWFkZXJDaGlsZHJlbiA9IG51bGwsXG4gIGNoaWxkcmVuLFxuICBvcGVuLFxuICBvbkNsb3NlLFxuICBjbGFzc05hbWVcbn0pID0+IChcbiAgPERyYXdlclxuICAgIGlkPXtpZH1cbiAgICBvcGVuPXtvcGVufVxuICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgYW5jaG9yPVwicmlnaHRcIlxuICAgIE1vZGFsUHJvcHM9e3sga2VlcE1vdW50ZWQ6IGZhbHNlIH19XG4gICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMud3JhcHBlcn0gJHtjbGFzc05hbWV9YH1cbiAgPlxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgIGRhdGEtdGVzdGlkPVwiY2xvc2UtZHJhd2VyXCJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuY2xvc2VCdG59XG4gICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgIHN4PXt7IGZsb2F0OiBcInJpZ2h0XCIgfX1cbiAgICAgICAgZm9udFNpemU9XCJsYXJnZVwiXG4gICAgICA+XG4gICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIHt0aXRsZSAmJiAoXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgICAge3RpdGxlfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICApfVxuICAgICAge2hlYWRlckNoaWxkcmVufVxuICAgIDwvQm94PlxuICAgIHtjaGlsZHJlbn1cbiAgPC9EcmF3ZXI+XG4pO1xuXG5SaWdodERyYXdlci5wcm9wVHlwZXMgPSB7XG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMubm9kZV0pLFxuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIGhlYWRlckNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLFxuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmdcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFJpZ2h0RHJhd2VyO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgc2hhbGxvd0VxdWFsLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcblxuaW1wb3J0IHsgZ2V0U3VtbWl0Rm9ybWF0dGVkRGF0ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdW1taXRVdGlsc1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBTdW1taXRIZWFkZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgc3VtbWl0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlIHx8IHt9LFxuICAgIHNoYWxsb3dFcXVhbFxuICApO1xuICByZXR1cm4gKFxuICAgIDxCb3hcbiAgICAgIGNsYXNzTmFtZT17c3R5bGVzLndpZGdldEhlYWRlcn1cbiAgICAgIHN4PXt7IHBhZGRpbmc6IHsgeHM6IDIsIG1kOiAwLCBsZzogMCB9IH19XG4gICAgICBkYXRhLXRlc3RpZD1cIm15LW9yZGVycy10aWNrZXQtaGVhZGVyXCJcbiAgICA+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT57c3VtbWl0Py5uYW1lfTwvaDI+XG4gICAgICA8aDIgY2xhc3NOYW1lPXtzdHlsZXMuc3VtbWl0VGl0bGVEYXRlfT5cbiAgICAgICAge2dldFN1bW1pdEZvcm1hdHRlZERhdGUoc3VtbWl0KX1cbiAgICAgIDwvaDI+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBTdW1taXRIZWFkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyByZXNldEZpbHRlciB9IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgU3VtbWl0SGVhZGVyIGZyb20gXCIuLi9TdW1taXRIZWFkZXJcIjtcbmltcG9ydCBOb1RpY2tldHNGb3VuZCBmcm9tIFwiLi4vTm9UaWNrZXRzRm91bmRcIjtcbmltcG9ydCB7IFRBQlMgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5cbmNvbnN0IFRhYldyYXBwZXIgPSAoeyB0YWIsIGNoaWxkcmVuLCBzZXRUYWIgfSkgPT4ge1xuICBjb25zdCB7IG1lbWJlck9yZGVycywgdXNlclRpY2tldHMsIGFjdGl2ZUZpbHRlcnNDb3VudCB9ID0gdXNlU2VsZWN0b3IoXG4gICAgKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fVxuICApO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHRpY2tldHMgPSB0YWIgPT09IFRBQlMuVElDS0VUUyA/IHVzZXJUaWNrZXRzIDogbWVtYmVyT3JkZXJzO1xuICBjb25zdCBoYXNUaWNrZXRzID0gdGlja2V0cy5sZW5ndGggPiAwO1xuICBjb25zdCBpc0ZpbHRlcmVkID0gYWN0aXZlRmlsdGVyc0NvdW50ID4gMDtcblxuICBjb25zdCBjbGVhckZpbHRlcnMgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3QgZ2V0UGFnZVZpZXcgPSAoKSA9PiB7XG4gICAgaWYgKGlzRmlsdGVyZWQpIHJldHVybiBcImZpbHRlclwiO1xuICAgIHJldHVybiB0YWIgPT09IFRBQlMuVElDS0VUUyA/IFRBQlMuVElDS0VUUyA6IFRBQlMuT1JERVJTO1xuICB9O1xuXG4gIGNvbnN0IGdldE9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKGlzRmlsdGVyZWQpIHJldHVybiBjbGVhckZpbHRlcnM7XG4gICAgY29uc3QgdGFiVG9MaW5rID0gdGFiID09PSBUQUJTLlRJQ0tFVFMgPyBUQUJTLk9SREVSUyA6IFRBQlMuVElDS0VUUztcbiAgICByZXR1cm4gKCkgPT4gc2V0VGFiKHRhYlRvTGluayk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgeyFoYXNUaWNrZXRzICYmIChcbiAgICAgICAgPE5vVGlja2V0c0ZvdW5kIHBhZ2VWaWV3PXtnZXRQYWdlVmlldygpfSBvbkNsaWNrPXtnZXRPbkNsaWNrKCl9IC8+XG4gICAgICApfVxuICAgICAge2hhc1RpY2tldHMgJiYgKFxuICAgICAgICA8PlxuICAgICAgICAgIDxCb3ggc3g9e3sgcHQ6IDYsIHBiOiAzIH19PlxuICAgICAgICAgICAgPFN1bW1pdEhlYWRlciAvPlxuICAgICAgICAgIDwvQm94PlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgIDwvPlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGFiV3JhcHBlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IEJveCwgQnV0dG9uLCBDb2xsYXBzZSwgRGl2aWRlciwgTGluayB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgUmVhc3NpZ25Gb3JtIGZyb20gXCIuLi9SZWFzc2lnbkZvcm1cIjtcbmltcG9ydCBEZWxlZ2F0ZUZvcm0gZnJvbSBcIi4uL0RlbGVnYXRlRm9ybVwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5pbXBvcnQgQ29uZmlybURpYWxvZyBmcm9tIFwiLi4vLi4vLi4vQ29uZmlybURpYWxvZ1wiO1xuXG5jb25zdCBBc3NpZ25PcHRpb25zID0gKHtcbiAgdGlja2V0LFxuICB1c2VyUHJvZmlsZSxcbiAgYXNzaWduT3B0aW9uLFxuICBzZXRBc3NpZ25PcHRpb24sXG4gIG9uQXNzaWduLFxuICBvbkRlbGVnYXRlLFxuICBvblVuQXNzaWduXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgW29wZW5Db25maXJtVW5hc3NpZ24sIHNldE9wZW5Db25maXJtVW5hc3NpZ25dID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBpc0Fzc2lnbmVkVG9NZSA9IHVzZXJQcm9maWxlPy5lbWFpbCA9PT0gdGlja2V0Py5vd25lcj8uZW1haWw7XG4gIGNvbnN0IHsgYWxsb3dzRGVsZWdhdGUgfSA9IHVzZVRpY2tldERldGFpbHModGlja2V0KTtcblxuICBjb25zdCBoYW5kbGVVbkFzc2lnbiA9ICgpID0+IHtcbiAgICBzZXRPcGVuQ29uZmlybVVuYXNzaWduKGZhbHNlKTtcbiAgICBvblVuQXNzaWduKCk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPEJ1dHRvblxuICAgICAgICB2YXJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgZGlzYWJsZWQ9e2lzQXNzaWduZWRUb01lfVxuICAgICAgICBvbkNsaWNrPXsoKSA9PiBvbkFzc2lnbih1c2VyUHJvZmlsZS5lbWFpbCwgXCJcIil9XG4gICAgICA+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fbWVcIil9XG4gICAgICA8L0J1dHRvbj5cbiAgICAgIDxEaXZpZGVyIHZhcmlhbnQ9XCJtaWRkbGVcIiBzeD17eyBteTogMywgcHg6IDQgfX0+XG4gICAgICAgIG9yXG4gICAgICA8L0RpdmlkZXI+XG4gICAgICA8Qm94PlxuICAgICAgICA8Q29sbGFwc2UgaW49e2Fzc2lnbk9wdGlvbiA9PT0gXCJvdGhlclwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgIDxSZWFzc2lnbkZvcm1cbiAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgIG9uQXNzaWduKHZhbC5uZXdfYXR0ZW5kZWVfZW1haWwsIHZhbC5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0QXNzaWduT3B0aW9uKG51bGwpfVxuICAgICAgICAgIC8+XG4gICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgIHthc3NpZ25PcHRpb24gIT09IFwib3RoZXJcIiAmJiAoXG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgdmFyaWFudD1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldEFzc2lnbk9wdGlvbihcIm90aGVyXCIpfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5hc3NpZ25fdG9fb3RoZXJcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICl9XG4gICAgICA8L0JveD5cbiAgICAgIHthbGxvd3NEZWxlZ2F0ZSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPERpdmlkZXIgdmFyaWFudD1cIm1pZGRsZVwiIHN4PXt7IG15OiAzLCBweDogNCB9fT5cbiAgICAgICAgICAgIG9yXG4gICAgICAgICAgPC9EaXZpZGVyPlxuICAgICAgICAgIDxDb2xsYXBzZSBpbj17YXNzaWduT3B0aW9uID09PSBcIm1hbmFnZVwifSB0aW1lb3V0PXs1MDB9PlxuICAgICAgICAgICAgPERlbGVnYXRlRm9ybVxuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgb25TdWJtaXQ9eyh2YWwpID0+XG4gICAgICAgICAgICAgICAgb25EZWxlZ2F0ZShcbiAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9maXJzdF9uYW1lLFxuICAgICAgICAgICAgICAgICAgdmFsLmRlbGVnYXRlX2xhc3RfbmFtZSxcbiAgICAgICAgICAgICAgICAgIHZhbC5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24obnVsbCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvQ29sbGFwc2U+XG4gICAgICAgICAge2Fzc2lnbk9wdGlvbiAhPT0gXCJtYW5hZ2VcIiAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgICBjb2xvcj1cInByaW1hcnlcIlxuICAgICAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRBc3NpZ25PcHRpb24oXCJtYW5hZ2VcIil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5tYW5hZ2VfdGlja2V0XCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge3RpY2tldD8ub3duZXI/LmVtYWlsICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy51bmFzc2lnbldyYXBwZXJ9PlxuICAgICAgICAgIHsvKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvYW5jaG9yLWlzLXZhbGlkICovfVxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBjb21wb25lbnQ9XCJidXR0b25cIlxuICAgICAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHNldE9wZW5Db25maXJtVW5hc3NpZ24odHJ1ZSl9XG4gICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICBjb2xvcjogXCJ0ZXh0LmxpbmtcIixcbiAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246IFwidW5kZXJsaW5lXCIsXG4gICAgICAgICAgICAgIHRleHREZWNvcmF0aW9uQ29sb3I6IFwidGV4dC5saW5rXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLnJldmVydF90b191bmFzc2lnbmVkXCIpfVxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgICAgey8qIFRPRE86IGlmIHdlIG5lZWQgdG8gcmV1c2UgdGhpcyB0aGVuIHdlIHNob3VsZCBtb3ZlIGl0IHRvIGNvbnRleHQgKi99XG4gICAgICA8Q29uZmlybURpYWxvZ1xuICAgICAgICBvcGVuPXtvcGVuQ29uZmlybVVuYXNzaWdufVxuICAgICAgICB0aXRsZT17dChcInRpY2tldF9hc3NpZ24uY29uZmlybV91bmFzc2lnbi50aXRsZVwiKX1cbiAgICAgICAgYm9keT17dChcInRpY2tldF9hc3NpZ24uY29uZmlybV91bmFzc2lnbi5ib2R5XCIpfVxuICAgICAgICBvbkNvbmZpcm09e2hhbmRsZVVuQXNzaWdufVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRPcGVuQ29uZmlybVVuYXNzaWduKGZhbHNlKX1cbiAgICAgIC8+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5Bc3NpZ25PcHRpb25zLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJQcm9maWxlOiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIGFzc2lnbk9wdGlvbjogUHJvcFR5cGVzLnN0cmluZyxcbiAgc2V0QXNzaWduT3B0aW9uOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBvbkFzc2lnbjogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25EZWxlZ2F0ZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQXNzaWduT3B0aW9ucztcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBEZWxlZ2F0ZUZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIGRlbGVnYXRlX2ZpcnN0X25hbWU6IFwiXCIsXG4gICAgICBkZWxlZ2F0ZV9sYXN0X25hbWU6IFwiXCIsXG4gICAgICBkZWxlZ2F0ZV9lbWFpbDogXCJcIlxuICAgIH0sXG4gICAgdmFsaWRhdGlvblNjaGVtYTogeXVwLm9iamVjdCh7XG4gICAgICBkZWxlZ2F0ZV9maXJzdF9uYW1lOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5maXJzdF9uYW1lLnN0cmluZ1wiKSlcbiAgICAgICAgLnJlcXVpcmVkKHQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUucmVxdWlyZWRcIikpLFxuICAgICAgZGVsZWdhdGVfbGFzdF9uYW1lOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5sYXN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgICAucmVxdWlyZWQodChcInZhbGlkYXRpb24ubGFzdF9uYW1lLnJlcXVpcmVkXCIpKSxcbiAgICAgIGRlbGVnYXRlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgfSksXG4gICAgb25TdWJtaXQ6ICh2YWx1ZXMsIHsgcmVzZXRGb3JtIH0pID0+IHtcbiAgICAgIG9uU3VibWl0KHZhbHVlcyk7XG4gICAgICByZXNldEZvcm0oKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICgpID0+IHtcbiAgICBmb3JtaWsucmVzZXRGb3JtKCk7XG4gICAgb25DbG9zZSgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNlwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0udGl0bGVcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fT5cbiAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uYm9keVwiKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgIDxmb3JtIG9uU3VibWl0PXtmb3JtaWsuaGFuZGxlU3VibWl0fSBub1ZhbGlkYXRlPlxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgbmFtZT1cImRlbGVnYXRlX2ZpcnN0X25hbWVcIlxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uZmlyc3RfbmFtZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9maXJzdF9uYW1lfVxuICAgICAgICAgIG9uQ2hhbmdlPXtmb3JtaWsuaGFuZGxlQ2hhbmdlfVxuICAgICAgICAgIG9uQmx1cj17Zm9ybWlrLmhhbmRsZUJsdXJ9XG4gICAgICAgICAgZXJyb3I9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2ZpcnN0X25hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZmlyc3RfbmFtZSAmJlxuICAgICAgICAgICAgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9maXJzdF9uYW1lXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwiZGVsZWdhdGVfbGFzdF9uYW1lXCJcbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5kZWxlZ2F0ZV9mb3JtLmxhc3RfbmFtZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9sYXN0X25hbWV9XG4gICAgICAgICAgb25DaGFuZ2U9e2Zvcm1pay5oYW5kbGVDaGFuZ2V9XG4gICAgICAgICAgb25CbHVyPXtmb3JtaWsuaGFuZGxlQmx1cn1cbiAgICAgICAgICBlcnJvcj17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5kZWxlZ2F0ZV9sYXN0X25hbWUgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9sYXN0X25hbWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfbGFzdF9uYW1lICYmXG4gICAgICAgICAgICBmb3JtaWsuZXJyb3JzLmRlbGVnYXRlX2xhc3RfbmFtZVxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJkZWxlZ2F0ZV9lbWFpbFwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uZW1haWxcIil9XG4gICAgICAgICAgbWFyZ2luPVwibm9ybWFsXCJcbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5kZWxlZ2F0ZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLmRlbGVnYXRlX2VtYWlsICYmXG4gICAgICAgICAgICBCb29sZWFuKGZvcm1pay5lcnJvcnMuZGVsZWdhdGVfZW1haWwpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhlbHBlclRleHQ9e1xuICAgICAgICAgICAgZm9ybWlrLnRvdWNoZWQuZGVsZWdhdGVfZW1haWwgJiYgZm9ybWlrLmVycm9ycy5kZWxlZ2F0ZV9lbWFpbFxuICAgICAgICAgIH1cbiAgICAgICAgLz5cbiAgICAgICAgPEZvcm1Gb290ZXJcbiAgICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLmRlbGVnYXRlX2Zvcm0uc2F2ZVwiKX1cbiAgICAgICAgICBjYW5jZWxMYWJlbD17dChcInRpY2tldF9hc3NpZ24uZGVsZWdhdGVfZm9ybS5jYW5jZWxcIil9XG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2FuY2VsfVxuICAgICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgICAvPlxuICAgICAgPC9mb3JtPlxuICAgIDwvPlxuICApO1xufTtcblxuRGVsZWdhdGVGb3JtLnByb3BUeXBlcyA9IHtcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IERlbGVnYXRlRm9ybTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgTGluaywgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgQ29weVRleHQgZnJvbSBcIi4uLy4uLy4uL0NvcHlUZXh0XCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IEFzc2lnbkhlYWRlciA9ICh7IGluUHJvZ3Jlc3MsIHRpY2tldCwgdXNlckVtYWlsLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhc3NpZ25lZFRvWW91ID0gdGlja2V0Py5vd25lcj8uZW1haWwgPT09IHVzZXJFbWFpbDtcblxuICBjb25zdCBnZXRTZWNvbmRhcnlUaXRsZSA9ICgpID0+IHtcbiAgICBpZiAoaW5Qcm9ncmVzcyA9PT0gXCJtYW5hZ2VcIikge1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKGluUHJvZ3Jlc3MpIHtcbiAgICAgIGNvbnN0IHVzZXIgPSBhc3NpZ25lZFRvWW91ID8gXCJ5b3VcIiA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuICAgICAgcmV0dXJuIGAke3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICAgIH1cblxuICAgIHJldHVybiB0aWNrZXQudGlja2V0X3R5cGUubmFtZTtcbiAgfTtcblxuICBjb25zdCBnZXRIZWFkZXJOb3RlID0gKCkgPT4ge1xuICAgIGlmIChpblByb2dyZXNzKSB7XG4gICAgICBjb25zdCB0cmFuc0tleSA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgICAgPyBcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5hbnN3ZXJfeW91cl9lcVwiXG4gICAgICAgIDogXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9hc3NpZ24uYW5zd2VyX290aGVyc19lcVwiO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8PlxuICAgICAgICAgIHt0KHRyYW5zS2V5KX1cbiAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICB7LyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2FuY2hvci1pcy12YWxpZCAqL31cbiAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5MVwiXG4gICAgICAgICAgICBvbkNsaWNrPXtvbkNsb3NlfVxuICAgICAgICAgICAgc3g9e3sgZm9udFdlaWdodDogNzAwLCBtYXJnaW46IFwiMjBweCAwIDEwcHhcIiB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfYXNzaWduLmNvbXBsZXRlX2xhdGVyXCIpfVxuICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgPC8+XG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBcIlwiO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMucHVyY2hhc2VkQnlXcmFwcGVyfT5cbiAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnB1cmNoYXNlZEJ5fT5cbiAgICAgICAgICB7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi5wdXJjaGFzZWRfYnlcIil9e1wiIFwifVxuICAgICAgICAgIHt0aWNrZXQ/Lm9yZGVyPy5vd25lcl9lbWFpbH1cbiAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTFcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOb30+XG4gICAgICAgICAgPENvcHlUZXh0XG4gICAgICAgICAgICB0ZXh0PXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgICByZXZlcnNlZFxuICAgICAgICAgICAgd2lkdGg9ezI1MH1cbiAgICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8L0JveD5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNVwiIGd1dHRlckJvdHRvbT5cbiAgICAgICAge2dldFNlY29uZGFyeVRpdGxlKCl9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8VHlwb2dyYXBoeVxuICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyTm90ZX1cbiAgICAgICAgc3g9e3sgY29sb3I6IFwidGV4dC5zZWNvbmRhcnlcIiB9fVxuICAgICAgPlxuICAgICAgICB7Z2V0SGVhZGVyTm90ZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuLy8gQWRkaW5nIHByb3AtdHlwZXMgZm9yIHR5cGUtY2hlY2tpbmdcbkFzc2lnbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGluUHJvZ3Jlc3M6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJFbWFpbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBBc3NpZ25IZWFkZXI7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBCb3gsIExpbmssIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFJlYXNzaWduSGVhZGVyID0gKHsgaW5Qcm9ncmVzcywgdGlja2V0LCB1c2VyRW1haWwsIG9uQ2xvc2UgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGFzc2lnbmVkVG9Zb3UgPSB0aWNrZXQ/Lm93bmVyPy5lbWFpbCA9PT0gdXNlckVtYWlsO1xuICBjb25zdCB7IGFsbG93c0RlbGVnYXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgY29uc3QgZ2V0U2Vjb25kYXJ5VGl0bGUgPSAoKSA9PiB7XG4gICAgY29uc3QgdXNlciA9IGFzc2lnbmVkVG9Zb3VcbiAgICAgID8gdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnlvdXJzZWxmXCIpXG4gICAgICA6IHRpY2tldD8ub3duZXI/LmVtYWlsO1xuXG4gICAgaWYgKGluUHJvZ3Jlc3MgPT09IFwibWFuYWdlXCIpIHtcbiAgICAgIHJldHVybiBgJHt0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uZGVsZWdhdGVkXCIpfSAke1xuICAgICAgICB0aWNrZXQub3duZXIuZmlyc3RfbmFtZVxuICAgICAgfSAke3RpY2tldC5vd25lci5sYXN0X25hbWV9LmA7XG4gICAgfVxuXG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFzc2lnbmVkX3RvXCIpfSAke3VzZXJ9YDtcbiAgICB9XG5cbiAgICByZXR1cm4gYCR7dChcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLnJlYXNzaWduZWRfdG9cIil9ICR7dXNlcn1gO1xuICB9O1xuXG4gIGNvbnN0IGdldEhlYWRlck5vdGUgPSAoKSA9PiB7XG4gICAgaWYgKCFpblByb2dyZXNzKSB7XG4gICAgICByZXR1cm4gYWxsb3dzRGVsZWdhdGVcbiAgICAgICAgPyB0KFwidGlja2V0X2Fzc2lnbi5oZWFkZXJfcmVhc3NpZ24uY2hvb3NlX29wdGlvblwiKVxuICAgICAgICA6IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jaG9vc2Vfb3B0aW9uX25vX2RlbGVnYXRlXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IHRyYW5zS2V5ID0gYXNzaWduZWRUb1lvdVxuICAgICAgPyBcInRpY2tldF9hc3NpZ24uaGVhZGVyX3JlYXNzaWduLmFuc3dlcl95b3VyX2VxXCJcbiAgICAgIDogXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5hbnN3ZXJfb3RoZXJzX2VxXCI7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPD5cbiAgICAgICAge3QodHJhbnNLZXkpfVxuICAgICAgICA8YnIgLz5cbiAgICAgICAgey8qIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBqc3gtYTExeS9hbmNob3ItaXMtdmFsaWQgKi99XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgY29tcG9uZW50PVwiYnV0dG9uXCJcbiAgICAgICAgICB2YXJpYW50PVwiYm9keTFcIlxuICAgICAgICAgIG9uQ2xpY2s9e29uQ2xvc2V9XG4gICAgICAgICAgc3g9e3sgZm9udFdlaWdodDogNzAwLCBtYXJnaW46IFwiMjBweCAwIDEwcHhcIiB9fVxuICAgICAgICA+XG4gICAgICAgICAge3QoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi5jb21wbGV0ZV9sYXRlclwiKX1cbiAgICAgICAgPC9MaW5rPlxuICAgICAgPC8+XG4gICAgKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMud3JhcHBlcn0+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDVcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHtnZXRTZWNvbmRhcnlUaXRsZSgpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgdmFyaWFudD1cImJvZHkxXCJcbiAgICAgICAgZ3V0dGVyQm90dG9tXG4gICAgICAgIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlck5vdGV9XG4gICAgICAgIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgID5cbiAgICAgICAge2dldEhlYWRlck5vdGUoKX1cbiAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbi8vIEFkZGluZyBwcm9wLXR5cGVzIGZvciB0eXBlLWNoZWNraW5nXG5SZWFzc2lnbkhlYWRlci5wcm9wVHlwZXMgPSB7XG4gIGluUHJvZ3Jlc3M6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gIHVzZXJFbWFpbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWFzc2lnbkhlYWRlcjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTcgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5cbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VGb3JtaWsgfSBmcm9tIFwiZm9ybWlrXCI7XG5pbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuXG5pbXBvcnQgRm9ybUZvb3RlciBmcm9tIFwiLi4vLi4vLi4vRm9ybUZvb3RlclwiO1xuXG5jb25zdCBSZWFzc2lnbkZvcm0gPSAoeyBvblN1Ym1pdCwgb25DbG9zZSB9KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcblxuICBjb25zdCBmb3JtaWsgPSB1c2VGb3JtaWsoe1xuICAgIGluaXRpYWxWYWx1ZXM6IHtcbiAgICAgIG5ld19hdHRlbmRlZV9lbWFpbDogXCJcIixcbiAgICAgIHBlcnNvbmFsX21lc3NhZ2U6IFwiXCJcbiAgICB9LFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IHl1cC5vYmplY3Qoe1xuICAgICAgbmV3X2F0dGVuZGVlX2VtYWlsOiB5dXBcbiAgICAgICAgLnN0cmluZyh0KFwidmFsaWRhdGlvbi5lbWFpbC5zdHJpbmdcIikpXG4gICAgICAgIC5lbWFpbCh0KFwidmFsaWRhdGlvbi5lbWFpbC5mb3JtYXRcIikpXG4gICAgICAgIC5yZXF1aXJlZCh0KFwidmFsaWRhdGlvbi5lbWFpbC5yZXF1aXJlZFwiKSksXG4gICAgICBwZXJzb25hbF9tZXNzYWdlOiB5dXAuc3RyaW5nKHQoXCJ2YWxpZGF0aW9uLnRleHQuc3RyaW5nXCIpKVxuICAgIH0pLFxuICAgIG9uU3VibWl0OiAodmFsdWVzLCB7IHJlc2V0Rm9ybSB9KSA9PiB7XG4gICAgICBvblN1Ym1pdCh2YWx1ZXMpO1xuICAgICAgcmVzZXRGb3JtKCk7XG4gICAgfVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVDYW5jZWwgPSAoKSA9PiB7XG4gICAgZm9ybWlrLnJlc2V0Rm9ybSgpO1xuICAgIG9uQ2xvc2UoKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiaDZcIiBndXR0ZXJCb3R0b20+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLnRpdGxlXCIpfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkxXCIgZ3V0dGVyQm90dG9tIHN4PXt7IGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX0+XG4gICAgICAgIHt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmJvZHlcIil9XG4gICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIG5hbWU9XCJuZXdfYXR0ZW5kZWVfZW1haWxcIlxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLm5ld19hdHRlbmRlZV9lbWFpbFwiKX1cbiAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIHZhbHVlPXtmb3JtaWsudmFsdWVzLm5ld19hdHRlbmRlZV9lbWFpbH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLm5ld19hdHRlbmRlZV9lbWFpbCAmJlxuICAgICAgICAgICAgQm9vbGVhbihmb3JtaWsuZXJyb3JzLm5ld19hdHRlbmRlZV9lbWFpbClcbiAgICAgICAgICB9XG4gICAgICAgICAgaGVscGVyVGV4dD17XG4gICAgICAgICAgICBmb3JtaWsudG91Y2hlZC5uZXdfYXR0ZW5kZWVfZW1haWwgJiZcbiAgICAgICAgICAgIGZvcm1pay5lcnJvcnMubmV3X2F0dGVuZGVlX2VtYWlsXG4gICAgICAgICAgfVxuICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgIC8+XG4gICAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICBuYW1lPVwicGVyc29uYWxfbWVzc2FnZVwiXG4gICAgICAgICAgbGFiZWw9e3QoXCJ0aWNrZXRfYXNzaWduLnJlYXNzaWduX2Zvcm0ucGVyc29uYWxfbWVzc2FnZVwiKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybWlrLnZhbHVlcy5wZXJzb25hbF9tZXNzYWdlfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgICAgbXVsdGlsaW5lXG4gICAgICAgICAgbWluUm93cz17NH1cbiAgICAgICAgICBvbkNoYW5nZT17Zm9ybWlrLmhhbmRsZUNoYW5nZX1cbiAgICAgICAgICBvbkJsdXI9e2Zvcm1pay5oYW5kbGVCbHVyfVxuICAgICAgICAgIGVycm9yPXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiZcbiAgICAgICAgICAgIEJvb2xlYW4oZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlKVxuICAgICAgICAgIH1cbiAgICAgICAgICBoZWxwZXJUZXh0PXtcbiAgICAgICAgICAgIGZvcm1pay50b3VjaGVkLnBlcnNvbmFsX21lc3NhZ2UgJiYgZm9ybWlrLmVycm9ycy5wZXJzb25hbF9tZXNzYWdlXG4gICAgICAgICAgfVxuICAgICAgICAvPlxuICAgICAgICA8Rm9ybUZvb3RlclxuICAgICAgICAgIHNhdmVMYWJlbD17dChcInRpY2tldF9hc3NpZ24ucmVhc3NpZ25fZm9ybS5zYXZlXCIpfVxuICAgICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5yZWFzc2lnbl9mb3JtLmNhbmNlbFwiKX1cbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDYW5jZWx9XG4gICAgICAgICAgZGlzYWJsZWQ9e2Zvcm1pay5pc1N1Ym1pdHRpbmd9XG4gICAgICAgIC8+XG4gICAgICA8L2Zvcm0+XG4gICAgPC8+XG4gICk7XG59O1xuXG5SZWFzc2lnbkZvcm0ucHJvcFR5cGVzID0ge1xuICBvblN1Ym1pdDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgUmVhc3NpZ25Gb3JtO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUNvbnRleHQsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQge1xuICBhc3NpZ25BdHRlbmRlZSxcbiAgZGVsZWdhdGVUaWNrZXQsXG4gIHJlYXNzaWduVGlja2V0LFxuICBzYXZlRXh0cmFRdWVzdGlvbnMsXG4gIHVuYXNzaWduVGlja2V0XG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgUmlnaHREcmF3ZXIgZnJvbSBcIi4uL1JpZ2h0RHJhd2VyXCI7XG5pbXBvcnQgVGlja2V0Rm9ybSBmcm9tIFwiLi4vVGlja2V0RGV0YWlsL2NvbXBvbmVudHMvVGlja2V0Rm9ybVwiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQgZnJvbSBcIi4uL0N1c3RvbU5vdGlmaWNhdGlvbi9Db250ZXh0XCI7XG5pbXBvcnQgeyB0cmFuc2Zvcm1BbndlcnNGb3JtYXQgfSBmcm9tIFwiLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHMvY29tcG9uZW50cy91dGlsc1wiO1xuaW1wb3J0IHVzZUdldFRpY2tldCBmcm9tIFwiLi4vLi4vaG9va3MvdXNlR2V0VGlja2V0XCI7XG5pbXBvcnQgQXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL0Fzc2lnbkhlYWRlclwiO1xuaW1wb3J0IFJlYXNzaWduSGVhZGVyIGZyb20gXCIuL2NvbXBvbmVudHMvSGVhZGVyL1JlYXNzaWduSGVhZGVyXCI7XG5pbXBvcnQgQXNzaWduT3B0aW9ucyBmcm9tIFwiLi9jb21wb25lbnRzL0Fzc2lnbk9wdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9EUkFXRVJfSUQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFRpY2tldEFzc2lnbiA9ICh7IHRpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBvcGVuLCBvbkNsb3NlIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IHsgc3VjY2Vzc01lc3NhZ2UsIGVycm9yTWVzc2FnZSB9ID0gdXNlQ29udGV4dChcbiAgICBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0XG4gICk7XG4gIGNvbnN0IFthc3NpZ25PcHRpb24sIHNldEFzc2lnbk9wdGlvbl0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW2Fzc2lnbmF0aW9uSW5Qcm9ncmVzcywgc2V0QXNzaWduYXRpb25JblByb2dyZXNzXSA9IHVzZVN0YXRlKFwiXCIpO1xuICBjb25zdCB7XG4gICAgc3VtbWl0LFxuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IGlzVXNlck9yZGVyT3duZXIgPSB0aWNrZXQ/Lm9yZGVyPy5vd25lcl9pZCA9PT0gdXNlclByb2ZpbGU/LmlkO1xuICBjb25zdCBpc1VzZXJUaWNrZXRPd25lciA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyUHJvZmlsZT8uZW1haWw7XG4gIGNvbnN0IGNhbkVkaXRUaWNrZXREYXRhID1cbiAgICAoaXNVc2VyVGlja2V0T3duZXIgfHwgaXNVc2VyT3JkZXJPd25lcikgJiZcbiAgICBzdW1taXQuYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucztcblxuICBjb25zdCBvbkNsb3NlRVFGb3JtID0gKCkgPT4ge1xuICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhcIlwiKTtcbiAgICBvbkNsb3NlKCk7XG4gIH07XG5cbiAgY29uc3Qgb25Bc3NpZ24gPSAoZW1haWwsIG1lc3NhZ2UgPSBcIlwiKSA9PiB7XG4gICAgaWYgKG93bmVySWQpIHtcbiAgICAgIGRpc3BhdGNoKHJlYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkLCBlbWFpbCwgbWVzc2FnZSkpLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgICBzZXRBc3NpZ25PcHRpb24obnVsbCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlzcGF0Y2goYXNzaWduQXR0ZW5kZWUob3JkZXJJZCwgdGlja2V0SWQsIGVtYWlsKSkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyhgJHthc3NpZ25PcHRpb259YCk7XG4gICAgICAgIHNldEFzc2lnbk9wdGlvbihudWxsKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBvblVuQXNzaWduID0gKCkgPT4ge1xuICAgIGRpc3BhdGNoKHVuYXNzaWduVGlja2V0KG9yZGVySWQsIHRpY2tldElkKSkudGhlbigoKSA9PiB7XG4gICAgICBvbkNsb3NlRVFGb3JtKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgb25EZWxlZ2F0ZSA9IChmaXJzdE5hbWUsIGxhc3ROYW1lLCBlbWFpbCkgPT4ge1xuICAgIGRpc3BhdGNoKFxuICAgICAgZGVsZWdhdGVUaWNrZXQob3JkZXJJZCwgdGlja2V0SWQsIGZpcnN0TmFtZSwgbGFzdE5hbWUsIGVtYWlsKVxuICAgICkudGhlbigoKSA9PiB7XG4gICAgICBzZXRBc3NpZ25hdGlvbkluUHJvZ3Jlc3MoYCR7YXNzaWduT3B0aW9ufWApO1xuICAgICAgc2V0QXNzaWduT3B0aW9uKG51bGwpO1xuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9uU2F2ZUVRID0gKHZhbCkgPT4ge1xuICAgIGNvbnN0IGFuc3dlcnMgPSB0cmFuc2Zvcm1BbndlcnNGb3JtYXQodmFsKTtcblxuICAgIHJldHVybiBkaXNwYXRjaChzYXZlRXh0cmFRdWVzdGlvbnModGlja2V0LCBhbnN3ZXJzKSlcbiAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgb25DbG9zZUVRRm9ybSgpO1xuICAgICAgICBzdWNjZXNzTWVzc2FnZSh0KFwidGlja2V0X2Fzc2lnbi5zYXZpbmdfc3VjY2Vzc1wiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICBlcnJvck1lc3NhZ2UodChcInRpY2tldF9hc3NpZ24uc2F2aW5nX2Vycm9yXCIpKTtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCk7XG4gICAgICB9KTtcbiAgfTtcblxuICBjb25zdCB0aXRsZSA9IG93bmVySWRcbiAgICA/IHQoXCJ0aWNrZXRfYXNzaWduLmhlYWRlcl9yZWFzc2lnbi50aXRsZVwiKVxuICAgIDogdChcInRpY2tldF9hc3NpZ24uaGVhZGVyX2Fzc2lnbi50aXRsZVwiKTtcbiAgY29uc3QgSGVhZGVyID0gb3duZXJJZCA/IFJlYXNzaWduSGVhZGVyIDogQXNzaWduSGVhZGVyO1xuXG4gIHJldHVybiAoXG4gICAgPFJpZ2h0RHJhd2VyXG4gICAgICBpZD17VElDS0VUX0RSQVdFUl9JRH1cbiAgICAgIHRpdGxlPXt0aXRsZX1cbiAgICAgIG9wZW49e29wZW59XG4gICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgID5cbiAgICAgIHt0aWNrZXQgJiYgZXh0cmFRdWVzdGlvbnMgJiYgKFxuICAgICAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFJlYXNzaWduQ29udGFpbmVyfT5cbiAgICAgICAgICA8SGVhZGVyXG4gICAgICAgICAgICBpblByb2dyZXNzPXthc3NpZ25hdGlvbkluUHJvZ3Jlc3N9XG4gICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgIHVzZXJFbWFpbD17dXNlclByb2ZpbGUuZW1haWx9XG4gICAgICAgICAgICBvbkNsb3NlPXtvbkNsb3NlRVFGb3JtfVxuICAgICAgICAgIC8+XG5cbiAgICAgICAgICB7YXNzaWduYXRpb25JblByb2dyZXNzID8gKFxuICAgICAgICAgICAgPFRpY2tldEZvcm1cbiAgICAgICAgICAgICAgdGlja2V0PXt0aWNrZXR9XG4gICAgICAgICAgICAgIHN1bW1pdD17c3VtbWl0fVxuICAgICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICAgIGNhbkVkaXQ9e2NhbkVkaXRUaWNrZXREYXRhfVxuICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlRVF9XG4gICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2VFUUZvcm19XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8QXNzaWduT3B0aW9uc1xuICAgICAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICAgICAgdXNlclByb2ZpbGU9e3VzZXJQcm9maWxlfVxuICAgICAgICAgICAgICBhc3NpZ25PcHRpb249e2Fzc2lnbk9wdGlvbn1cbiAgICAgICAgICAgICAgc2V0QXNzaWduT3B0aW9uPXtzZXRBc3NpZ25PcHRpb259XG4gICAgICAgICAgICAgIG9uQXNzaWduPXtvbkFzc2lnbn1cbiAgICAgICAgICAgICAgb25VbkFzc2lnbj17b25VbkFzc2lnbn1cbiAgICAgICAgICAgICAgb25EZWxlZ2F0ZT17b25EZWxlZ2F0ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9Cb3g+XG4gICAgICApfVxuICAgIDwvUmlnaHREcmF3ZXI+XG4gICk7XG59O1xuXG5UaWNrZXRBc3NpZ24ucHJvcFR5cGVzID0ge1xuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3BlbjogUHJvcFR5cGVzLmJvb2wsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXRBc3NpZ247XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUZXh0RmllbGQsIEF1dG9jb21wbGV0ZSwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuXG5jb25zdCBDb21wYW55RmllbGQgPSAoeyBmb3JtaWssIHN1bW1pdElkLCBpc1JlcXVpcmVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBbaW5wdXRWYWx1ZSwgc2V0SW5wdXRWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZShcIlwiKTtcbiAgY29uc3QgW29wdGlvbnMsIHNldE9wdGlvbnNdID0gUmVhY3QudXNlU3RhdGUoW10pO1xuICBjb25zdCB7XG4gICAgZXJyb3JzLFxuICAgIHZhbHVlcyxcbiAgICB0b3VjaGVkLFxuICAgIHNldEZpZWxkVG91Y2hlZCxcbiAgICBzZXRGaWVsZFZhbHVlLFxuICAgIGluaXRpYWxWYWx1ZXNcbiAgfSA9IGZvcm1paztcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmNvbXBhbnk7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBkaXNhYmxlZCA9ICEhaW5pdGlhbFZhbHVlc1tuYW1lXTtcbiAgY29uc3QgZXJyb3IgPSB0b3VjaGVkW25hbWVdICYmIEJvb2xlYW4oZXJyb3JzW25hbWVdKTtcbiAgY29uc3QgaGVscGVyVGV4dCA9IHRvdWNoZWRbbmFtZV0gJiYgZXJyb3JzW25hbWVdO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlucHV0VmFsdWUgPT09IFwiXCIpIHtcbiAgICAgIHNldE9wdGlvbnModmFsdWUgPyBbdmFsdWVdIDogW10pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBxdWVyeVJlZ2lzdHJhdGlvbkNvbXBhbmllcyhzdW1taXRJZCwgaW5wdXRWYWx1ZSwgKHJlc3VsdHMpID0+IHtcbiAgICAgIGxldCBuZXdPcHRpb25zID0gW107XG5cbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBuZXdPcHRpb25zID0gW3ZhbHVlXTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdHMpIHtcbiAgICAgICAgbmV3T3B0aW9ucyA9IFsuLi5uZXdPcHRpb25zLCAuLi5yZXN1bHRzXTtcbiAgICAgIH1cblxuICAgICAgc2V0T3B0aW9ucyhuZXdPcHRpb25zKTtcbiAgICB9KTtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9LCBbdmFsdWUsIGlucHV0VmFsdWVdKTtcblxuICByZXR1cm4gKFxuICAgIDxBdXRvY29tcGxldGVcbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgYXV0b0NvbXBsZXRlXG4gICAgICBmcmVlU29sb1xuICAgICAgaW5jbHVkZUlucHV0SW5MaXN0XG4gICAgICBmaWx0ZXJTZWxlY3RlZE9wdGlvbnNcbiAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgIG9uQmx1cj17KCkgPT4gc2V0RmllbGRUb3VjaGVkKG5hbWUsIHRydWUsIHRydWUpfVxuICAgICAgZ2V0T3B0aW9uTGFiZWw9eyhvcHRpb24pID0+IHtcbiAgICAgICAgLy8gVmFsdWUgc2VsZWN0ZWQgd2l0aCBlbnRlciwgcmlnaHQgZnJvbSB0aGUgaW5wdXRcbiAgICAgICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgICAgICB9XG4gICAgICAgIC8vIEFkZCBcInh4eFwiIG9wdGlvbiBjcmVhdGVkIGR5bmFtaWNhbGx5XG4gICAgICAgIGlmIChvcHRpb24uaW5wdXRWYWx1ZSkge1xuICAgICAgICAgIHJldHVybiBvcHRpb24uaW5wdXRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBSZWd1bGFyIG9wdGlvblxuICAgICAgICByZXR1cm4gb3B0aW9uLm5hbWU7XG4gICAgICB9fVxuICAgICAgb25DaGFuZ2U9eyhldmVudCwgbmV3VmFsdWUpID0+IHtcbiAgICAgICAgY29uc3QgdG1wVmFsdWUgPSBuZXdWYWx1ZT8uaW5wdXRWYWx1ZSB8fCBuZXdWYWx1ZTtcblxuICAgICAgICBzZXRPcHRpb25zKHRtcFZhbHVlID8gW3RtcFZhbHVlLCAuLi5vcHRpb25zXSA6IG9wdGlvbnMpO1xuICAgICAgICBzZXRGaWVsZFZhbHVlKG5hbWUsIHRtcFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBvbklucHV0Q2hhbmdlPXsoZXZlbnQsIG5ld0lucHV0VmFsdWUpID0+IHtcbiAgICAgICAgc2V0SW5wdXRWYWx1ZShuZXdJbnB1dFZhbHVlKTtcbiAgICAgIH19XG4gICAgICBmaWx0ZXJPcHRpb25zPXsob3B0aW9ucywgcGFyYW1zKSA9PiB7XG4gICAgICAgIGNvbnN0IHsgaW5wdXRWYWx1ZSB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZCA9IFsuLi5vcHRpb25zXTtcbiAgICAgICAgLy8gU3VnZ2VzdCB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmFsdWVcbiAgICAgICAgY29uc3QgaXNFeGlzdGluZyA9IG9wdGlvbnMuc29tZSgob3B0aW9uKSA9PiBpbnB1dFZhbHVlID09PSBvcHRpb24ubmFtZSk7XG4gICAgICAgIGlmIChpbnB1dFZhbHVlICE9PSBcIlwiICYmICFpc0V4aXN0aW5nKSB7XG4gICAgICAgICAgZmlsdGVyZWQucHVzaCh7XG4gICAgICAgICAgICBpbnB1dFZhbHVlLFxuICAgICAgICAgICAgbmFtZTogYFNlbGVjdCBcIiR7aW5wdXRWYWx1ZX1cImBcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaWx0ZXJlZDtcbiAgICAgIH19XG4gICAgICByZW5kZXJJbnB1dD17KHBhcmFtcykgPT4gKFxuICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0L2pzeC1wcm9wcy1uby1zcHJlYWRpbmcgKi9cbiAgICAgICAgICB7Li4ucGFyYW1zfVxuICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9jb21wYW55XCIpfVxuICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgIHJlcXVpcmVkPXtpc1JlcXVpcmVkfVxuICAgICAgICAgIGhlbHBlclRleHQ9e2hlbHBlclRleHR9XG4gICAgICAgICAgZXJyb3I9e2Vycm9yfVxuICAgICAgICAgIG1hcmdpbj1cIm5vcm1hbFwiXG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAgcmVuZGVyT3B0aW9uPXsocHJvcHMsIG9wdGlvbikgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgLi4ub3B0aW9uUHJvcHMgfSA9IHByb3BzO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9qc3gtcHJvcHMtbm8tc3ByZWFkaW5nXG4gICAgICAgICAgPGxpIGtleT17a2V5fSB7Li4ub3B0aW9uUHJvcHN9PlxuICAgICAgICAgICAgPFR5cG9ncmFwaHlcbiAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHkyXCJcbiAgICAgICAgICAgICAgc3g9e3sgZm9udFNpemU6IFwiMWVtXCIsIGNvbG9yOiBcInRleHQuc2Vjb25kYXJ5XCIgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge29wdGlvbi5uYW1lfVxuICAgICAgICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgICk7XG4gICAgICB9fVxuICAgIC8+XG4gICk7XG59O1xuXG5Db21wYW55RmllbGQucHJvcFR5cGVzID0ge1xuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgc3VtbWl0SWQ6IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZFxufTtcblxuZXhwb3J0IGRlZmF1bHQgQ29tcGFueUZpZWxkO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBDaGVja2JveCxcbiAgRm9ybUNvbnRyb2wsXG4gIEZvcm1Db250cm9sTGFiZWwsXG4gIEZvcm1IZWxwZXJUZXh0XG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgUmF3SFRNTCBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBUSUNLRVRfQVRURU5ERUVfS0VZUyB9IGZyb20gXCIuLi8uLi9jb25zdGFudHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyID0gKHtcbiAgZGlzY2xhaW1lcixcbiAgZm9ybWlrLFxuICBpc0Rpc2FibGVkID0gZmFsc2UsXG4gIGlzUmVxdWlyZWQgPSB0cnVlXG59KSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgbmFtZSA9IFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZDtcbiAgY29uc3QgeyBlcnJvcnMsIHZhbHVlcywgdG91Y2hlZCwgaGFuZGxlQ2hhbmdlLCBoYW5kbGVCbHVyIH0gPSBmb3JtaWs7XG4gIGNvbnN0IHZhbHVlID0gdmFsdWVzW25hbWVdO1xuICBjb25zdCBlcnJvciA9IHRvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pO1xuICBjb25zdCBoZWxwZXJUZXh0ID0gdG91Y2hlZFtuYW1lXSAmJiBlcnJvcnNbbmFtZV07XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLndyYXBwZXJ9PlxuICAgICAgPFJhd0hUTUw+e2Rpc2NsYWltZXJ9PC9SYXdIVE1MPlxuICAgICAgPEZvcm1Db250cm9sIGZ1bGxXaWR0aCBlcnJvcj17ZXJyb3J9PlxuICAgICAgICA8Rm9ybUNvbnRyb2xMYWJlbFxuICAgICAgICAgIGNvbnRyb2w9e1xuICAgICAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgICAgIG5hbWU9e25hbWV9XG4gICAgICAgICAgICAgIGNoZWNrZWQ9eyEhdmFsdWV9XG4gICAgICAgICAgICAgIGxhYmVsPXt0KFwidGlja2V0X2Fzc2lnbi5leHRyYV9xdWVzdGlvbnNfZm9ybS5kaXNjbGFpbWVyX2xhYmVsXCIpfVxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIH1cbiAgICAgICAgICBsYWJlbD17dChcInRpY2tldF9hc3NpZ24uZXh0cmFfcXVlc3Rpb25zX2Zvcm0uZGlzY2xhaW1lcl9sYWJlbFwiKX1cbiAgICAgICAgICBkaXNhYmxlZD17aXNEaXNhYmxlZH1cbiAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cbiAgICAgICAgLz5cbiAgICAgICAge2Vycm9yICYmIDxGb3JtSGVscGVyVGV4dD57aGVscGVyVGV4dCA/PyBcIiBcIn08L0Zvcm1IZWxwZXJUZXh0Pn1cbiAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5SZWdpc3RyYXRpb25EaXNjbGFpbWVyLnByb3BUeXBlcyA9IHtcbiAgZGlzY2xhaW1lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICBmb3JtaWs6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgaXNEaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzUmVxdWlyZWQ6IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBSZWdpc3RyYXRpb25EaXNjbGFpbWVyO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IFFSQ29kZSBmcm9tIFwicmVhY3QtcXItY29kZVwiO1xuaW1wb3J0IHsgQm94LCBCdXR0b24sIFR5cG9ncmFwaHkgfSBmcm9tIFwiQG11aS9tYXRlcmlhbFwiO1xuaW1wb3J0IHtcbiAgRW1haWxPdXRsaW5lZCBhcyBFbWFpbEljb24sXG4gIEZpbGVEb3dubG9hZE91dGxpbmVkIGFzIERvd25sb2FkSWNvblxufSBmcm9tIFwiQG11aS9pY29ucy1tYXRlcmlhbFwiO1xuaW1wb3J0IENvcHlUZXh0IGZyb20gXCIuLi8uLi8uLi9Db3B5VGV4dFwiO1xuaW1wb3J0IHsgdXNlVGlja2V0RGV0YWlscyB9IGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VUaWNrZXREZXRhaWxzXCI7XG5pbXBvcnQgeyBnZXRUaWNrZXRQREYsIHJlc2VuZE5vdGlmaWNhdGlvbiB9IGZyb20gXCIuLi8uLi8uLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBNSUxMSVNFQ19UT19TRUMsIFRXT19JVEVNIH0gZnJvbSBcIi4uLy4uLy4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsSGVhZGVyID0gKHsgdGlja2V0LCBpc1ZpcnR1YWxTdW1taXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgaXNDb21wbGV0ZSB9ID0gdXNlVGlja2V0RGV0YWlscyh0aWNrZXQpO1xuICBjb25zdCBkaXNwYXRjaCA9IHVzZURpc3BhdGNoKCk7XG4gIGNvbnN0IFtzZW50Q29uZmlybWF0aW9uLCBzZXRTZW50Q29uZmlybWF0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICBjb25zdCBkb3dubG9hZFRpY2tldFBkZiA9ICgpID0+IHtcbiAgICBkaXNwYXRjaChnZXRUaWNrZXRQREYodGlja2V0KSk7XG4gIH07XG5cbiAgY29uc3Qgb25TZW5kRW1haWwgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZW5kTm90aWZpY2F0aW9uKHRpY2tldCkpLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U2VudENvbmZpcm1hdGlvbih0cnVlKTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBzZXRTZW50Q29uZmlybWF0aW9uKGZhbHNlKTtcbiAgICAgIH0sIE1JTExJU0VDX1RPX1NFQyAqIFRXT19JVEVNKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJoNFwiIGd1dHRlckJvdHRvbSBjbGFzc05hbWU9e3N0eWxlcy50aXRsZX0+XG4gICAgICAgIHt0aWNrZXQ/LnRpY2tldF90eXBlPy5uYW1lfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgZ3V0dGVyQm90dG9tIGNsYXNzTmFtZT17c3R5bGVzLnN1YnRpdGxlfT5cbiAgICAgICAge3QoXCJ0aWNrZXRfZGV0YWlsLnB1cmNoYXNlZF9ieVwiKX0ge3RpY2tldD8ub3JkZXI/Lm93bmVyX2VtYWlsfVxuICAgICAgPC9UeXBvZ3JhcGh5PlxuXG4gICAgICB7aXNDb21wbGV0ZSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5xckNvZGV9PlxuICAgICAgICAgICAgPFFSQ29kZVxuICAgICAgICAgICAgICBzaXplPXsyNTZ9XG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgaGVpZ2h0OiBcImF1dG9cIixcbiAgICAgICAgICAgICAgICBtYXhXaWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgd2lkdGg6IFwiMTAwJVwiXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIHZhbHVlPXt0aWNrZXQucXJfY29kZX1cbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNTYgMjU2XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9Cb3g+XG4gICAgICAgICAgPHAgY2xhc3NOYW1lPXtzdHlsZXMuc3RhdHVzfT57dChcInRpY2tldF9kZXRhaWwuc3RhdHVzXCIpfTwvcD5cbiAgICAgICAgICA8VHlwb2dyYXBoeSB2YXJpYW50PVwiYm9keTJcIiBndXR0ZXJCb3R0b20gY2xhc3NOYW1lPXtzdHlsZXMucXJOb3RlfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5xcl9ub3RlXCIpfVxuICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgPC8+XG4gICAgICApfVxuXG4gICAgICB7IWlzVmlydHVhbFN1bW1pdCAmJiBpc0NvbXBsZXRlICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hY3Rpb25CdXR0b25zQ29udGFpbmVyfT5cbiAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlcy5kb3dubG9hZEJ0bn1cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJjb250YWluZWRcIlxuICAgICAgICAgICAgY29sb3I9XCJwcmltYXJ5XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2Rvd25sb2FkVGlja2V0UGRmfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxEb3dubG9hZEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICB7dChcInRpY2tldF9kZXRhaWwuZG93bmxvYWRcIil9XG4gICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgJHtzdHlsZXMuc2VuZEJ0bn0gJHtzZW50Q29uZmlybWF0aW9uICYmIHN0eWxlcy5zZW50fWB9XG4gICAgICAgICAgICBvbkNsaWNrPXtvblNlbmRFbWFpbH1cbiAgICAgICAgICAgIGRpc2FibGVkPXtzZW50Q29uZmlybWF0aW9ufVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxFbWFpbEljb24gZm9udFNpemU9XCJsYXJnZVwiIC8+XG4gICAgICAgICAgICB7c2VudENvbmZpcm1hdGlvblxuICAgICAgICAgICAgICA/IHQoXCJ0aWNrZXRfZGV0YWlsLnNlbnRcIilcbiAgICAgICAgICAgICAgOiB0KFwidGlja2V0X2RldGFpbC5zZW5kXCIpfVxuICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3JkZXJOdW1iZXJ9PlxuICAgICAgICA8Q29weVRleHRcbiAgICAgICAgICB0ZXh0PXt0aWNrZXQ/Lm9yZGVyPy5udW1iZXJ9XG4gICAgICAgICAgcmV2ZXJzZWRcbiAgICAgICAgICB3aWR0aD17MTUwfVxuICAgICAgICAgIHRvb2x0aXBUZXh0PXt0KFwib3JkZXJfc3VtbWFyeS5jb3B5X29yZGVyX251bWJlclwiKX1cbiAgICAgICAgLz5cbiAgICAgIDwvZGl2PlxuICAgIDwvQm94PlxuICApO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0RGV0YWlsSGVhZGVyO1xuIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNyBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiO1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tIFwicmVhY3QtaTE4bmV4dFwiO1xuaW1wb3J0IHsgQm94LCBUeXBvZ3JhcGh5IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHVzZUZvcm1payB9IGZyb20gXCJmb3JtaWtcIjtcbmltcG9ydCBFeHRyYVF1ZXN0aW9uc0ZpZWxkcyBmcm9tIFwiLi4vLi4vLi4vRXh0cmFRdWVzdGlvbnNGaWVsZHNcIjtcblxuaW1wb3J0IHtcbiAgZ2V0VHlwZVZhbHVlLFxuICB0b1NsdWdcbn0gZnJvbSBcIi4uLy4uLy4uL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcblxuaW1wb3J0IFRpY2tldE93bmVyRmllbGRzIGZyb20gXCIuLi9UaWNrZXRPd25lckZpZWxkc1wiO1xuaW1wb3J0IFJlZ2lzdHJhdGlvbkRpc2NsYWltZXIgZnJvbSBcIi4uL1JlZ2lzdHJhdGlvbkRpc2NsYWltZXIvUmVnaXN0cmF0aW9uRGlzY2xhaW1lclwiO1xuaW1wb3J0IEZvcm1Gb290ZXIgZnJvbSBcIi4uLy4uLy4uL0Zvcm1Gb290ZXJcIjtcbmltcG9ydCB1c2VTY3JvbGxUb0Vycm9yIGZyb20gXCIuLi8uLi8uLi8uLi9ob29rcy91c2VTY3JvbGxUb0Vycm9yXCI7XG5pbXBvcnQge1xuICBwYXJzZUFuc3dlcnMsXG4gIGJ1aWxkVmFsaWRhdGlvblNjaGVtYVxufSBmcm9tIFwiLi4vLi4vLi4vLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuLi8uLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0Rm9ybSA9ICh7XG4gIHRpY2tldCxcbiAgZXh0cmFRdWVzdGlvbnMsXG4gIHN1bW1pdCxcbiAgY2FuRWRpdCxcbiAgb25TdWJtaXQsXG4gIG9uQ2xvc2Vcbn0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBhbnN3ZXJzID0gdGlja2V0Py5vd25lcj8uZXh0cmFfcXVlc3Rpb25zLnJlZHVjZSgocmVzLCBhbnMpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcoYW5zLnF1ZXN0aW9uLm5hbWUsIGFucy5xdWVzdGlvbi5pZCk7XG4gICAgcmVzW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsdWUoYW5zLnZhbHVlLCBhbnMucXVlc3Rpb24udHlwZSk7XG4gICAgcmV0dXJuIHJlcztcbiAgfSwge30pO1xuXG4gIGNvbnN0IGZvcm1payA9IHVzZUZvcm1payh7XG4gICAgaW5pdGlhbFZhbHVlczogcGFyc2VBbnN3ZXJzKFxuICAgICAgdGlja2V0Lm93bmVyLFxuICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICBhbnN3ZXJzLFxuICAgICAgdHJ1ZSxcbiAgICAgIHRydWVcbiAgICApLFxuICAgIHZhbGlkYXRpb25TY2hlbWE6IGJ1aWxkVmFsaWRhdGlvblNjaGVtYShcbiAgICAgIGV4dHJhUXVlc3Rpb25zLFxuICAgICAgdHJ1ZSxcbiAgICAgIHN1bW1pdC5yZWdpc3RyYXRpb25fZGlzY2xhaW1lcl9tYW5kYXRvcnlcbiAgICApLFxuICAgIG9uU3VibWl0OiAodmFsdWVzKSA9PiB7XG4gICAgICBjb25zdCByZWxldmFudEFuc3dlcnMgPSBwYXJzZUFuc3dlcnMoXG4gICAgICAgIHRpY2tldC5vd25lcixcbiAgICAgICAgZXh0cmFRdWVzdGlvbnMsXG4gICAgICAgIHZhbHVlcyxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIG9uU3VibWl0KHJlbGV2YW50QW5zd2Vycyk7XG4gICAgfSxcbiAgICBlbmFibGVSZWluaXRpYWxpemU6IHRydWVcbiAgfSk7XG5cbiAgLy8gY29uc29sZS5sb2coXCJTVU1NSVQ6IFwiLCBzdW1taXQpO1xuICAvLyBjb25zb2xlLmxvZyhcIlRJQ0tFVDogXCIsIHRpY2tldCk7XG4gIC8vIGNvbnNvbGUubG9nKFwiUVVFU1RJVU9OczogXCIsIGV4dHJhUXVlc3Rpb25zKTtcbiAgLy8gY29uc29sZS5sb2coXCJBTlNXRVJTOiBcIiwgYW5zd2Vycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiRVJST1JzOiBcIiwgZm9ybWlrLmVycm9ycyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiVkFMVUVTOiBcIiwgZm9ybWlrLnZhbHVlcyk7XG4gIC8vIGNvbnNvbGUubG9nKFwiSU5JVElBTDogXCIsIGZvcm1pay5pbml0aWFsVmFsdWVzKTtcbiAgLy8gY29uc29sZS5sb2coXCJUT1VDSEVEOiBcIiwgZm9ybWlrLnRvdWNoZWQpO1xuXG4gIC8vIFNDUk9MTCBUTyBFUlJPUlxuICB1c2VTY3JvbGxUb0Vycm9yKGZvcm1payk7XG5cbiAgcmV0dXJuIChcbiAgICA8Zm9ybSBvblN1Ym1pdD17Zm9ybWlrLmhhbmRsZVN1Ym1pdH0gbm9WYWxpZGF0ZT5cbiAgICAgIDxUaWNrZXRPd25lckZpZWxkc1xuICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgaXNEZWxlZ2F0ZWQ9eyEhdGlja2V0Lm93bmVyPy5tYW5hZ2VyX2lkfVxuICAgICAgICBzdW1taXRJZD17c3VtbWl0LmlkfVxuICAgICAgICBkaXNhYmxlZD17IWNhbkVkaXR9XG4gICAgICAvPlxuXG4gICAgICB7ZXh0cmFRdWVzdGlvbnM/Lmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICA8Qm94PlxuICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MlwiIGNsYXNzTmFtZT17c3R5bGVzLmFkZGl0aW9uYWxEZXRhaWxzfT5cbiAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hZGl0aW9uYWxfZGV0YWlsc1wiKX1cbiAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgPEV4dHJhUXVlc3Rpb25zRmllbGRzXG4gICAgICAgICAgICBleHRyYVF1ZXN0aW9ucz17ZXh0cmFRdWVzdGlvbnN9XG4gICAgICAgICAgICBhbGxvd0VkaXQ9e2NhbkVkaXR9XG4gICAgICAgICAgICBmb3JtaWs9e2Zvcm1pa31cbiAgICAgICAgICAvPlxuICAgICAgICA8L0JveD5cbiAgICAgICl9XG5cbiAgICAgIHtzdW1taXQucmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCAmJiAoXG4gICAgICAgIDxSZWdpc3RyYXRpb25EaXNjbGFpbWVyXG4gICAgICAgICAgZm9ybWlrPXtmb3JtaWt9XG4gICAgICAgICAgZGlzY2xhaW1lcj17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX2NvbnRlbnR9XG4gICAgICAgICAgaXNSZXF1aXJlZD17c3VtbWl0LnJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeX1cbiAgICAgICAgICBpc0Rpc2FibGVkPXshY2FuRWRpdH1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICA8Rm9ybUZvb3RlclxuICAgICAgICBzYXZlTGFiZWw9e3QoXCJ0aWNrZXRfZGV0YWlsLnNhdmVcIil9XG4gICAgICAgIGNhbmNlbExhYmVsPXt0KFwidGlja2V0X2RldGFpbC5jYW5jZWxcIil9XG4gICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgIGRpc2FibGVkPXtmb3JtaWsuaXNTdWJtaXR0aW5nfVxuICAgICAgLz5cbiAgICA8L2Zvcm0+XG4gICk7XG59O1xuXG5UaWNrZXRGb3JtLnByb3BUeXBlcyA9IHtcbiAgdGlja2V0OiBQcm9wVHlwZXMub2JqZWN0LFxuICBleHRyYVF1ZXN0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gIHN1bW1pdDogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBjYW5FZGl0OiBQcm9wVHlwZXMuYm9vbCxcbiAgb25TdWJtaXQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRpY2tldEZvcm07XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDE3IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyBCb3gsIFRleHRGaWVsZCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5cbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcbmltcG9ydCB7IFRJQ0tFVF9BVFRFTkRFRV9LRVlTIH0gZnJvbSBcIi4uLy4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IENvbXBhbnlGaWVsZCBmcm9tIFwiLi4vQ29tcGFueUZpZWxkXCI7XG5cbmNvbnN0IFRpY2tldE93bmVyRmllbGRzID0gKHsgZm9ybWlrLCBzdW1taXRJZCwgZGlzYWJsZWQsIGlzRGVsZWdhdGVkIH0pID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCB7IGVycm9ycywgdmFsdWVzLCB0b3VjaGVkLCBoYW5kbGVDaGFuZ2UsIGhhbmRsZUJsdXIsIGluaXRpYWxWYWx1ZXMgfSA9XG4gICAgZm9ybWlrO1xuXG4gIHJldHVybiAoXG4gICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy53cmFwcGVyfT5cbiAgICAgIDxUZXh0RmllbGRcbiAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgIG5hbWU9e1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsfVxuICAgICAgICBsYWJlbD17dChcInRpY2tldF9kZXRhaWwuZW1haWxcIil9XG4gICAgICAgIGRpc2FibGVkXG4gICAgICAgIHZhbHVlPXt2YWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZW1haWxdfVxuICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgLz5cbiAgICAgIHtpc0RlbGVnYXRlZCAmJiAoXG4gICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJib2R5MVwiIHN4PXt7IGZvbnRXZWlnaHQ6IDUwMCwgbWFyZ2luOiBcIjEwcHggMFwiIH19PlxuICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5tYW5hZ2VfZm9yXCIpfVxuICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICApfVxuICAgICAge1tUSUNLRVRfQVRURU5ERUVfS0VZUy5maXJzdE5hbWUsIFRJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXS5tYXAoXG4gICAgICAgIChuYW1lKSA9PiAoXG4gICAgICAgICAgPFRleHRGaWVsZFxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBrZXk9e25hbWV9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfVxuICAgICAgICAgICAgbGFiZWw9e3QoYHRpY2tldF9kZXRhaWwuJHtuYW1lfWApfVxuICAgICAgICAgICAgdmFsdWU9e3ZhbHVlc1tuYW1lXX1cbiAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZCB8fCBpc0RlbGVnYXRlZCB8fCAhIWluaXRpYWxWYWx1ZXNbbmFtZV19XG4gICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgb25CbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgICAgZXJyb3I9e3RvdWNoZWRbbmFtZV0gJiYgQm9vbGVhbihlcnJvcnNbbmFtZV0pfVxuICAgICAgICAgICAgaGVscGVyVGV4dD17Zm9ybWlrLnRvdWNoZWRbbmFtZV0gJiYgZm9ybWlrLmVycm9yc1tuYW1lXX1cbiAgICAgICAgICAgIHJlcXVpcmVkXG4gICAgICAgICAgICBtYXJnaW49XCJub3JtYWxcIlxuICAgICAgICAgIC8+XG4gICAgICAgIClcbiAgICAgICl9XG4gICAgICA8Q29tcGFueUZpZWxkIGZvcm1paz17Zm9ybWlrfSBzdW1taXRJZD17c3VtbWl0SWR9IGlzUmVxdWlyZWQgLz5cbiAgICAgIDxCb3ggY2xhc3NOYW1lPXtzdHlsZXMuaW5mb05vdGV9Pnt0KFwidGlja2V0X2RldGFpbC5pbmZvX25vdGVcIil9PC9Cb3g+XG4gICAgPC9Cb3g+XG4gICk7XG59O1xuXG5UaWNrZXRPd25lckZpZWxkcy5wcm9wVHlwZXMgPSB7XG4gIGZvcm1pazogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICBzdW1taXRJZDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIGlzRGVsZWdhdGVkOiBQcm9wVHlwZXMuYm9vbFxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0T3duZXJGaWVsZHM7XG4iLCJleHBvcnQgY29uc3QgVElDS0VUX0FUVEVOREVFX0tFWVMgPSB7XG4gIGVtYWlsOiBcImF0dGVuZGVlX2VtYWlsXCIsXG4gIGZpcnN0TmFtZTogXCJhdHRlbmRlZV9maXJzdF9uYW1lXCIsXG4gIGxhc3ROYW1lOiBcImF0dGVuZGVlX2xhc3RfbmFtZVwiLFxuICBjb21wYW55OiBcImF0dGVuZGVlX2NvbXBhbnlcIixcbiAgZGlzY2xhaW1lckFjY2VwdGVkOiBcImRpc2NsYWltZXJfYWNjZXB0ZWRcIlxufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IgfSBmcm9tIFwicmVhY3QtcmVkdXhcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IEJveCwgVHlwb2dyYXBoeSB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgdXNlR2V0VGlja2V0IGZyb20gXCIuLi8uLi9ob29rcy91c2VHZXRUaWNrZXRcIjtcbmltcG9ydCB7IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCB9IGZyb20gXCIuLi9FeHRyYVF1ZXN0aW9uc0ZpZWxkcy9jb21wb25lbnRzL3V0aWxzXCI7XG5pbXBvcnQgeyBUSUNLRVRfRFJBV0VSX0lEIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IFRpY2tldEZvcm0gZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXRGb3JtXCI7XG5pbXBvcnQgQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uL0NvbnRleHRcIjtcbmltcG9ydCB7IHNhdmVUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2FjdGlvbnNcIjtcbmltcG9ydCBSaWdodERyYXdlciBmcm9tIFwiLi4vUmlnaHREcmF3ZXJcIjtcbmltcG9ydCBUaWNrZXREZXRhaWxIZWFkZXIgZnJvbSBcIi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWxIZWFkZXJcIjtcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tIFwiLi9zdHlsZXMubW9kdWxlLnNjc3NcIjtcblxuY29uc3QgVGlja2V0RGV0YWlsID0gKHtcbiAgc3VtbWl0LFxuICB0aWNrZXRJZCxcbiAgb3JkZXJJZCxcbiAgb3duZXJJZCxcbiAgb3BlbixcbiAgb25DbG9zZVxufSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHsgc3VjY2Vzc01lc3NhZ2UsIGVycm9yTWVzc2FnZSB9ID0gdXNlQ29udGV4dChcbiAgICBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0XG4gICk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIHVzZXI6IHsgdXNlclByb2ZpbGUgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSk7XG4gIGNvbnN0IHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9ID0gdXNlR2V0VGlja2V0KFxuICAgIHRpY2tldElkLFxuICAgIG9yZGVySWQsXG4gICAgb3duZXJJZCxcbiAgICBvcGVuXG4gICk7XG4gIGNvbnN0IGlzVXNlck9yZGVyT3duZXIgPSB0aWNrZXQ/Lm9yZGVyPy5vd25lcl9pZCA9PT0gdXNlclByb2ZpbGU/LmlkO1xuICBjb25zdCBpc1VzZXJUaWNrZXRPd25lciA9IHRpY2tldD8ub3duZXI/LmVtYWlsID09PSB1c2VyUHJvZmlsZT8uZW1haWw7XG4gIGNvbnN0IGNhbkVkaXRUaWNrZXREYXRhID1cbiAgICAoaXNVc2VyVGlja2V0T3duZXIgfHwgaXNVc2VyT3JkZXJPd25lcikgJiZcbiAgICBzdW1taXQuYWxsb3dfdXBkYXRlX2F0dGVuZGVlX2V4dHJhX3F1ZXN0aW9ucztcblxuICBjb25zdCBvblNhdmUgPSAodmFsKSA9PiB7XG4gICAgY29uc3QgYW5zd2VycyA9IHRyYW5zZm9ybUFud2Vyc0Zvcm1hdCh2YWwpO1xuXG4gICAgcmV0dXJuIGRpc3BhdGNoKHNhdmVUaWNrZXREZXRhaWxzKHRpY2tldCwgYW5zd2VycykpXG4gICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgICAgc3VjY2Vzc01lc3NhZ2UodChcInRpY2tldF9kZXRhaWwuc2F2aW5nX3N1Y2Nlc3NcIikpO1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7XG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgZXJyb3JNZXNzYWdlKHQoXCJ0aWNrZXRfZGV0YWlsLnNhdmluZ19lcnJvclwiKSk7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8UmlnaHREcmF3ZXJcbiAgICAgIGlkPXtUSUNLRVRfRFJBV0VSX0lEfVxuICAgICAgb3Blbj17b3Blbn1cbiAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXREZXRhaWxDb250YWluZXJ9XG4gICAgICBoZWFkZXJDaGlsZHJlbj17XG4gICAgICAgIDxUaWNrZXREZXRhaWxIZWFkZXJcbiAgICAgICAgICB0aWNrZXQ9e3RpY2tldH1cbiAgICAgICAgICBpc1ZpcnR1YWxTdW1taXQ9e3N1bW1pdD8uaXNfdmlydHVhbH1cbiAgICAgICAgLz5cbiAgICAgIH1cbiAgICA+XG4gICAgICB7dGlja2V0ICYmIGV4dHJhUXVlc3Rpb25zICYmIChcbiAgICAgICAgPEJveCBjbGFzc05hbWU9e3N0eWxlcy5hdHRlbmRlZUNvbnRhaW5lcn0+XG4gICAgICAgICAgICA8VHlwb2dyYXBoeVxuICAgICAgICAgICAgICB2YXJpYW50PVwiaDRcIlxuICAgICAgICAgICAgICBndXR0ZXJCb3R0b21cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXMuYXR0ZW5kZWVJbmZvVGl0bGV9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X2RldGFpbC5hdHRlbmRlZV9pbmZvcm1hdGlvblwiKX1cbiAgICAgICAgICAgIDwvVHlwb2dyYXBoeT5cbiAgICAgICAgICAgIHt0aWNrZXQgJiYgKFxuICAgICAgICAgICAgICA8VGlja2V0Rm9ybVxuICAgICAgICAgICAgICAgIHRpY2tldD17dGlja2V0fVxuICAgICAgICAgICAgICAgIGV4dHJhUXVlc3Rpb25zPXtleHRyYVF1ZXN0aW9uc31cbiAgICAgICAgICAgICAgICBzdW1taXQ9e3N1bW1pdH1cbiAgICAgICAgICAgICAgICBjYW5FZGl0PXtjYW5FZGl0VGlja2V0RGF0YX1cbiAgICAgICAgICAgICAgICBvblN1Ym1pdD17b25TYXZlfVxuICAgICAgICAgICAgICAgIG9uQ2xvc2U9e29uQ2xvc2V9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvQm94PlxuICAgICAgKX1cbiAgICA8L1JpZ2h0RHJhd2VyPlxuICApO1xufTtcblxuVGlja2V0RGV0YWlsLnByb3BUeXBlcyA9IHtcbiAgc3VtbWl0OiBQcm9wVHlwZXMub2JqZWN0LFxuICB0aWNrZXRJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3JkZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb3duZXJJZDogUHJvcFR5cGVzLm51bWJlcixcbiAgb25DbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gIG9wZW46IFByb3BUeXBlcy5ib29sXG59O1xuXG5leHBvcnQgZGVmYXVsdCBUaWNrZXREZXRhaWw7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyBDb250YWluZXIsIEJ1dHRvbiB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VUaWNrZXREZXRhaWxzIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVRpY2tldERldGFpbHNcIjtcblxuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBUaWNrZXRTdGF0dXMgPSAoeyB0aWNrZXQgfSkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZTtcbiAgY29uc3QgcmVmdW5kUmVxdWVzdHMgPSB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5maW5kKFxuICAgIChyKSA9PiByLnN0YXR1cyA9PT0gXCJSZXF1ZXN0ZWRcIlxuICApO1xuICBjb25zdCB7IGlzSW5jb21wbGV0ZSwgaXNVbmFzc2lnbmVkLCBpc0NvbXBsZXRlIH0gPSB1c2VUaWNrZXREZXRhaWxzKHRpY2tldCk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIGNsYXNzTmFtZT17c3R5bGVzLnRpY2tldFN0YXR1c0NvbnRhaW5lcn0+XG4gICAgICB7aXNBY3RpdmUgPyAoXG4gICAgICAgIDw+XG4gICAgICAgICAgeyEhcmVmdW5kUmVxdWVzdHMgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgcmVmdW5kIHJlcXVlc3RlZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvblJlZnVuZFJlcXVlc3RlZH1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX3JlZnVuZF9yZXF1ZXN0ZWRcIil9XG4gICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICApfVxuICAgICAgICAgIHtpc0luY29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgaW5jb21wbGV0ZVwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17YCR7c3R5bGVzLmJ1dHRvblBpbGx9ICR7c3R5bGVzLmJ1dHRvbkluY29tcGxldGV9YH1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3QoXCJ0aWNrZXRfc3RhdHVzLnN0YXR1c19pbmNvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7aXNVbmFzc2lnbmVkICYmIChcbiAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJ0aWNrZXQgc3RhdHVzIHVuYXNzaWduZWRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25VbmFzc2lnbmVkfWB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfdW5hc3NpZ25lZFwiKX1cbiAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICl9XG4gICAgICAgICAge2lzQ29tcGxldGUgJiYgKFxuICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY29tcGxldGVcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25Db21wbGV0ZX1gfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7dChcInRpY2tldF9zdGF0dXMuc3RhdHVzX2NvbXBsZXRlXCIpfVxuICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC8+XG4gICAgICApIDogKFxuICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgYXJpYS1sYWJlbD1cInRpY2tldCBzdGF0dXMgY2FuY2VsbGVkXCJcbiAgICAgICAgICBjbGFzc05hbWU9e2Ake3N0eWxlcy5idXR0b25QaWxsfSAke3N0eWxlcy5idXR0b25DYW5jZWxsZWR9YH1cbiAgICAgICAgPlxuICAgICAgICAgIHt0KFwidGlja2V0X3N0YXR1cy5zdGF0dXNfY2FuY2VsbGVkXCIpfVxuICAgICAgICA8L0J1dHRvbj5cbiAgICAgICl9XG4gICAgPC9Db250YWluZXI+XG4gICk7XG59O1xuXG5UaWNrZXRTdGF0dXMucHJvcFR5cGVzID0ge1xuICB0aWNrZXQ6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgb3duZXI6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBzdGF0dXM6IFByb3BUeXBlcy5zdHJpbmdcbiAgICB9KSxcbiAgICByZWZ1bmRSZXF1ZXN0czogUHJvcFR5cGVzLmFycmF5T2YoT2JqZWN0KVxuICB9KVxufTtcblxuZXhwb3J0IGRlZmF1bHQgVGlja2V0U3RhdHVzO1xuIiwiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoLCB1c2VTZWxlY3RvciB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHtcbiAgQm94LFxuICBEaXZpZGVyLFxuICBUYWIsXG4gIFRhYnMsXG4gIHVzZU1lZGlhUXVlcnksXG4gIHVzZVRoZW1lXG59IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyBzdG9wTG9hZGluZyB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIERFRkFVTFRfSVRFTVNfUEVSX1BBR0UsXG4gIEZJUlNUX1BBR0UsXG4gIFRBQlNcbn0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IE15T3JkZXJzVGlja2V0cyBmcm9tIFwiLi4vTXlPcmRlcnNUaWNrZXRzXCI7XG5pbXBvcnQgQXNzaWduZWRUb01lIGZyb20gXCIuLi9PcmRlcnNMaXN0L0Fzc2lnbmVkVG9NZVwiO1xuaW1wb3J0IHtcbiAgZ2V0VGlja2V0c0J5T3JkZXIsXG4gIGdldFVzZXJPcmRlcnMsXG4gIGdldFVzZXJUaWNrZXRzXG59IGZyb20gXCIuLi8uLi9hY3Rpb25zXCI7XG5pbXBvcnQgVGFiV3JhcHBlciBmcm9tIFwiLi4vVGFiV3JhcHBlclwiO1xuaW1wb3J0ICogYXMgc3R5bGVzIGZyb20gXCIuL3N0eWxlcy5tb2R1bGUuc2Nzc1wiO1xuXG5jb25zdCBXaWRnZXRUYWJzID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IFt0YWIsIHNldFRhYl0gPSB1c2VTdGF0ZShUQUJTLk9SREVSUyk7XG4gIGNvbnN0IFt0aWNrZXRzRnVsbHlMb2FkZWQsIHNldFRpY2tldHNGdWxseUxvYWRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcbiAgY29uc3Qge1xuICAgIGZpbHRlcixcbiAgICBzb3J0LFxuICAgIG9yZGVyc19wZXJfcGFnZTogb3JkZXJzUGVyUGFnZSxcbiAgICB0aWNrZXRfcGVyX3BhZ2U6IHRpY2tldFBlclBhZ2UsXG4gICAgdXNlclRpY2tldHMsXG4gICAgbWVtYmVyT3JkZXJzXG4gIH0gPSB1c2VTZWxlY3Rvcigoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlKTtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBpc01vYmlsZSA9IHVzZU1lZGlhUXVlcnkodGhlbWUuYnJlYWtwb2ludHMuZG93bihcImxnXCIpKTtcblxuICBjb25zdCBoYW5kbGVUYWJDaGFuZ2UgPSAoZXYsIG5ld1RhYikgPT4ge1xuICAgIHNldFRhYihuZXdUYWIpO1xuICB9O1xuXG4gIGNvbnN0IGZldGNoQXNzaWduZWRUaWNrZXRzID0gKHBhZ2UsIHNraXBMb2FkaW5nID0gZmFsc2UpID0+XG4gICAgZGlzcGF0Y2goXG4gICAgICBnZXRVc2VyVGlja2V0cyhcbiAgICAgICAge1xuICAgICAgICAgIHBhZ2UsXG4gICAgICAgICAgcGVyUGFnZTogREVGQVVMVF9JVEVNU19QRVJfUEFHRSxcbiAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgc29ydFxuICAgICAgICB9LFxuICAgICAgICBza2lwTG9hZGluZ1xuICAgICAgKVxuICAgICk7XG5cbiAgY29uc3QgZmV0Y2hPcmRlclRpY2tldHMgPSAocGFnZSwgc2tpcExvYWRpbmcgPSBmYWxzZSkgPT5cbiAgICBkaXNwYXRjaChcbiAgICAgIGdldFVzZXJPcmRlcnMoXG4gICAgICAgIHtcbiAgICAgICAgICBwYWdlLFxuICAgICAgICAgIHBlclBhZ2U6IG9yZGVyc1BlclBhZ2UsXG4gICAgICAgICAgZmlsdGVyLFxuICAgICAgICAgIHNvcnRcbiAgICAgICAgfSxcbiAgICAgICAgc2tpcExvYWRpbmdcbiAgICAgIClcbiAgICApLnRoZW4oKHBheWxvYWQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG9yZGVyVGlja2V0c1Byb21pc2VzID0gZGF0YS5tYXAoKG9yZGVyKSA9PlxuICAgICAgICBkaXNwYXRjaChcbiAgICAgICAgICBnZXRUaWNrZXRzQnlPcmRlcih7XG4gICAgICAgICAgICBvcmRlcklkOiBvcmRlci5pZCxcbiAgICAgICAgICAgIGN1cnJlbnRfcGFnZTogRklSU1RfUEFHRSxcbiAgICAgICAgICAgIHBlclBhZ2U6IHRpY2tldFBlclBhZ2UsXG4gICAgICAgICAgICBmaWx0ZXIsXG4gICAgICAgICAgICBzb3J0XG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIFByb21pc2UuYWxsKG9yZGVyVGlja2V0c1Byb21pc2VzKTtcbiAgICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGZldGNoUHJvbWlzZXMgPSBbXG4gICAgICBmZXRjaEFzc2lnbmVkVGlja2V0cyhGSVJTVF9QQUdFLCB0cnVlKSxcbiAgICAgIGZldGNoT3JkZXJUaWNrZXRzKEZJUlNUX1BBR0UsIHRydWUpXG4gICAgXTtcbiAgICBQcm9taXNlLmFsbChmZXRjaFByb21pc2VzKVxuICAgICAgLnRoZW4oKCkgPT4gc2V0VGlja2V0c0Z1bGx5TG9hZGVkKHRydWUpKVxuICAgICAgLmZpbmFsbHkoKCkgPT4gZGlzcGF0Y2goc3RvcExvYWRpbmcoKSkpO1xuICB9LCBbZmlsdGVyLCBzb3J0XSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodGlja2V0c0Z1bGx5TG9hZGVkKSB7XG4gICAgICBpZiAobWVtYmVyT3JkZXJzPy5sZW5ndGggPT09IDAgJiYgdXNlclRpY2tldHM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgc2V0VGFiKFRBQlMuVElDS0VUUyk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbdGlja2V0c0Z1bGx5TG9hZGVkXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Qm94IGNsYXNzTmFtZT17c3R5bGVzLnRhYldyYXBwZXJ9PlxuICAgICAgPFRhYnNcbiAgICAgICAgdmFsdWU9e3RhYn1cbiAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVRhYkNoYW5nZX1cbiAgICAgICAgdmFyaWFudD17aXNNb2JpbGUgPyBcImZ1bGxXaWR0aFwiIDogXCJzdGFuZGFyZFwifVxuICAgICAgPlxuICAgICAgICA8VGFiIGxhYmVsPXt0KFwib3JkZXJzLnRpdGxlXCIpfSB2YWx1ZT17VEFCUy5PUkRFUlN9IC8+XG4gICAgICAgIDxUYWIgbGFiZWw9e3QoXCJsYWJlbHMuYXNzaWduZWRfdG9fbWVcIil9IHZhbHVlPXtUQUJTLlRJQ0tFVFN9IC8+XG4gICAgICA8L1RhYnM+XG4gICAgICA8RGl2aWRlciAvPlxuXG4gICAgICB7dGFiID09PSBUQUJTLk9SREVSUyAmJiAoXG4gICAgICAgIDxUYWJXcmFwcGVyIHRhYj17VEFCUy5PUkRFUlN9IHNldFRhYj17c2V0VGFifT5cbiAgICAgICAgICA8TXlPcmRlcnNUaWNrZXRzIGZldGNoRGF0YT17ZmV0Y2hPcmRlclRpY2tldHN9IC8+XG4gICAgICAgIDwvVGFiV3JhcHBlcj5cbiAgICAgICl9XG4gICAgICB7dGFiID09PSBUQUJTLlRJQ0tFVFMgJiYgKFxuICAgICAgICA8VGFiV3JhcHBlciB0YWI9e1RBQlMuVElDS0VUU30gc2V0VGFiPXtzZXRUYWJ9PlxuICAgICAgICAgIDxBc3NpZ25lZFRvTWUgZmV0Y2hEYXRhPXtmZXRjaEFzc2lnbmVkVGlja2V0c30gLz5cbiAgICAgICAgPC9UYWJXcmFwcGVyPlxuICAgICAgKX1cbiAgICA8L0JveD5cbiAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFdpZGdldFRhYnM7XG4iLCIvKipcbiAqIENvcHlyaWdodCAyMDI0IE9wZW5TdGFjayBGb3VuZGF0aW9uXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKiAqL1xuaW1wb3J0IFJlYWN0LCB7IHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gXCJyZWFjdC1pMThuZXh0XCI7XG5pbXBvcnQgeyB1c2VEaXNwYXRjaCwgdXNlU2VsZWN0b3IsIHNoYWxsb3dFcXVhbCwgY29ubmVjdCB9IGZyb20gXCJyZWFjdC1yZWR1eFwiO1xuaW1wb3J0IHsgQm94IH0gZnJvbSBcIkBtdWkvbWF0ZXJpYWxcIjtcbmltcG9ydCB7IHJlc2V0RmlsdGVyLCBjaGFuZ2VTb3J0LCBjaGFuZ2VGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vYWN0aW9uc1wiO1xuaW1wb3J0IEN1c3RvbVRoZW1lIGZyb20gXCIuLi9DdXN0b21UaGVtZVwiO1xuaW1wb3J0IExvYWRlciBmcm9tIFwiLi4vTG9hZGVyXCI7XG5pbXBvcnQgRmlsdGVycyBmcm9tIFwiLi4vRmlsdGVyc1wiO1xuaW1wb3J0IFdpZGdldFRhYnMgZnJvbSBcIi4uL1dpZGdldFRhYnNcIjtcbmltcG9ydCBDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0IGZyb20gXCIuLi9DdXN0b21Ob3RpZmljYXRpb24vQ29udGV4dFwiO1xuaW1wb3J0IEN1c3RvbU5vdGlmaWNhdGlvbiBmcm9tIFwiLi4vQ3VzdG9tTm90aWZpY2F0aW9uXCI7XG5pbXBvcnQgKiBhcyBzdHlsZXMgZnJvbSBcIi4vc3R5bGVzLm1vZHVsZS5zY3NzXCI7XG5cbmNvbnN0IFdpZGdldFdyYXBwZXIgPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKTtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuICBjb25zdCBbbXNnRGF0YSwgc2V0TXNnRGF0YV0gPSB1c2VTdGF0ZShcIlwiKTtcbiAgY29uc3Qge1xuICAgIGxvYWRpbmcsXG4gICAgZmlsdGVyOiB7IEZJTFRFUl9WQVJfT1JERVJfTlVNQkVSOiBmaWx0ZXJWYWx1ZXMgfVxuICB9ID0gdXNlU2VsZWN0b3IoKHN0YXRlKSA9PiBzdGF0ZS53aWRnZXRTdGF0ZSB8fCB7fSwgc2hhbGxvd0VxdWFsKTtcblxuICBjb25zdCBzdWNjZXNzTWVzc2FnZSA9IChtc2cpID0+XG4gICAgc2V0TXNnRGF0YSh7IG1lc3NhZ2U6IG1zZywgc2V2ZXJpdHk6IFwic3VjY2Vzc1wiIH0pO1xuICBjb25zdCBlcnJvck1lc3NhZ2UgPSAobXNnKSA9PiBzZXRNc2dEYXRhKHsgbWVzc2FnZTogbXNnLCBzZXZlcml0eTogXCJlcnJvclwiIH0pO1xuICBjb25zdCBtZXNzYWdlQ29udGV4dCA9IHVzZU1lbW8oKCkgPT4gKHsgc3VjY2Vzc01lc3NhZ2UsIGVycm9yTWVzc2FnZSB9KSwgW10pO1xuXG4gIGNvbnN0IG9uUmVzZXQgPSAoKSA9PiB7XG4gICAgZGlzcGF0Y2gocmVzZXRGaWx0ZXIoKSk7XG4gIH07XG5cbiAgY29uc3Qgb25GaWx0ZXIgPSAoZmlsdGVyVmFsdWUpID0+IHtcbiAgICBkaXNwYXRjaChjaGFuZ2VGaWx0ZXIoZmlsdGVyVmFsdWUpKTtcbiAgfTtcblxuICBjb25zdCBvblNvcnQgPSAoc29ydFZhbHVlKSA9PiB7XG4gICAgZGlzcGF0Y2goY2hhbmdlU29ydChzb3J0VmFsdWUpKTtcbiAgfTtcblxuICByZXR1cm4gKFxuICAgIDxDdXN0b21UaGVtZT5cbiAgICAgIDxMb2FkZXIgb3Blbj17bG9hZGluZ30gLz5cbiAgICAgIDxDdXN0b21Ob3RpZmljYXRpb25cbiAgICAgICAgb3Blbj17ISFtc2dEYXRhfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRNc2dEYXRhKG51bGwpfVxuICAgICAgICBtZXNzYWdlPXttc2dEYXRhPy5tZXNzYWdlfVxuICAgICAgICBzZXZlcml0eT17bXNnRGF0YT8uc2V2ZXJpdHl9XG4gICAgICAvPlxuICAgICAgPEZpbHRlcnNcbiAgICAgICAgb25GaWx0ZXI9e29uRmlsdGVyfVxuICAgICAgICBvblNvcnQ9e29uU29ydH1cbiAgICAgICAgb25TZWFyY2g9e29uRmlsdGVyfVxuICAgICAgICBvblJlc2V0PXtvblJlc2V0fVxuICAgICAgLz5cbiAgICAgIDxCb3ggc3g9e3sgcGFkZGluZzogeyB4czogMiwgbWQ6IDAsIGxnOiAwIH0gfX0+XG4gICAgICAgIDxoMyBjbGFzc05hbWU9e3N0eWxlcy50aWNrZXRzVGl0bGVUZXh0fT5cbiAgICAgICAgICB7ZmlsdGVyVmFsdWVzXG4gICAgICAgICAgICA/IHQoXCJsYWJlbHMuc2VhcmNoX3Jlc3VsdHNcIiwgeyBmaWx0ZXI6IGZpbHRlclZhbHVlcyB9KVxuICAgICAgICAgICAgOiB0KFwibGFiZWxzLnRpY2tldHNcIil9XG4gICAgICAgIDwvaDM+XG4gICAgICA8L0JveD5cbiAgICAgIDxDdXN0b21Ob3RpZmljYXRpb25Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXttZXNzYWdlQ29udGV4dH0+XG4gICAgICAgIDxXaWRnZXRUYWJzIC8+XG4gICAgICA8L0N1c3RvbU5vdGlmaWNhdGlvbkNvbnRleHQuUHJvdmlkZXI+XG4gICAgPC9DdXN0b21UaGVtZT5cbiAgKTtcbn07XG5cbmNvbnN0IG1hcFN0YXRlVG9Qcm9wcyA9ICh7IHdpZGdldFN0YXRlIH0pID0+ICh7XG4gIHNvcnQ6IHdpZGdldFN0YXRlLnNvcnQsXG4gIGZpbHRlcjogd2lkZ2V0U3RhdGUuZmlsdGVyXG59KTtcblxuZXhwb3J0IGRlZmF1bHQgY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIHt9KShXaWRnZXRXcmFwcGVyKTtcbiIsImltcG9ydCB7IHVzZUVmZmVjdCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgdXNlRGlzcGF0Y2gsIHVzZVNlbGVjdG9yIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBnZXRFeHRyYVF1ZXN0aW9ucywgZ2V0VGlja2V0IH0gZnJvbSBcIi4uL2FjdGlvbnNcIjtcblxuY29uc3QgdXNlR2V0VGlja2V0ID0gKHRpY2tldElkLCBvcmRlcklkLCBvd25lcklkLCBydW4pID0+IHtcbiAgY29uc3QgZGlzcGF0Y2ggPSB1c2VEaXNwYXRjaCgpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJ1bikge1xuICAgICAgaWYgKHRpY2tldElkICYmIG9yZGVySWQpIHtcbiAgICAgICAgZGlzcGF0Y2goZ2V0VGlja2V0KHRpY2tldElkLCBvcmRlcklkKSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvd25lcklkKSB7XG4gICAgICAgIGRpc3BhdGNoKGdldEV4dHJhUXVlc3Rpb25zKG93bmVySWQpKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt0aWNrZXRJZCwgb3JkZXJJZCwgb3duZXJJZCwgcnVuXSk7XG5cbiAgY29uc3QgeyBleHRyYVF1ZXN0aW9ucywgY3VycmVudFRpY2tldDogdGlja2V0IH0gPSB1c2VTZWxlY3RvcihcbiAgICAoc3RhdGUpID0+IHN0YXRlLndpZGdldFN0YXRlXG4gICk7XG5cbiAgcmV0dXJuIHsgdGlja2V0LCBleHRyYVF1ZXN0aW9ucyB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdXNlR2V0VGlja2V0O1xuIiwiaW1wb3J0IHsgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBUSUNLRVRfRFJBV0VSX0lEIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnN0YW50c1wiO1xuXG4vLyBTbW9vdGggc2Nyb2xsaW5nIGZ1bmN0aW9uIHVzaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZVxuZnVuY3Rpb24gc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCB0YXJnZXRTY3JvbGxUb3AsIGR1cmF0aW9uKSB7XG4gIGNvbnN0IHN0YXJ0U2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcDtcbiAgY29uc3QgZGlzdGFuY2UgPSB0YXJnZXRTY3JvbGxUb3AgLSBzdGFydFNjcm9sbFRvcDtcbiAgbGV0IHN0YXJ0VGltZSA9IG51bGw7XG5cbiAgZnVuY3Rpb24gYW5pbWF0aW9uU3RlcCh0aW1lc3RhbXApIHtcbiAgICBpZiAoIXN0YXJ0VGltZSkgc3RhcnRUaW1lID0gdGltZXN0YW1wO1xuICAgIGNvbnN0IGVsYXBzZWQgPSB0aW1lc3RhbXAgLSBzdGFydFRpbWU7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbWFnaWMtbnVtYmVyc1xuICAgIGNvbnN0IHByb2dyZXNzID0gTWF0aC5taW4oZWxhcHNlZCAvIGR1cmF0aW9uLCAxKTtcbiAgICBjb25zdCBlYXNlSW5PdXRRdWFkID1cbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1tYWdpYy1udW1iZXJzXG4gICAgICBwcm9ncmVzcyA8IDAuNSA/IDIgKiBwcm9ncmVzcyAqKiAyIDogMSAtICgtMiAqIHByb2dyZXNzICsgMikgKiogMiAvIDI7XG5cbiAgICBjb250YWluZXIuc2Nyb2xsVG9wID0gc3RhcnRTY3JvbGxUb3AgKyBkaXN0YW5jZSAqIGVhc2VJbk91dFF1YWQ7XG5cbiAgICBpZiAoZWxhcHNlZCA8IGR1cmF0aW9uKSB7XG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoYW5pbWF0aW9uU3RlcCk7XG4gICAgfVxuICB9XG5cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGFuaW1hdGlvblN0ZXApO1xufVxuXG5jb25zdCB1c2VTY3JvbGxUb0Vycm9yID0gKGZvcm1paykgPT4ge1xuICBjb25zdCB7IGVycm9ycywgaXNWYWxpZCwgaXNTdWJtaXR0aW5nIH0gPSBmb3JtaWs7XG4gIGNvbnN0IGVycm9yQXJyYXkgPSBPYmplY3Qua2V5cyhlcnJvcnMpO1xuICBjb25zdCBlcnJvckNvdW50ID0gZXJyb3JBcnJheS5sZW5ndGg7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNWYWxpZCB8fCBlcnJvckNvdW50ID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBzb3J0IGVsZW1lbnRzIGJ5IHBvc2l0aW9uXG4gICAgY29uc3QgZWxlbWVudHNTb3J0ZWQgPSBlcnJvckFycmF5XG4gICAgICAucmVkdWNlKChyZXN1bHQsIGVycm9yKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGBbbmFtZT0nJHtlcnJvcn0nXWApO1xuICAgICAgICBpZiAoIWVsZW1lbnQpIHJldHVybiByZXN1bHQ7XG5cbiAgICAgICAgY29uc3QgZWxSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgcmVzdWx0LnB1c2goeyBlbGVtZW50LCBlcnJvciwgdG9wOiBlbFJlY3QudG9wIH0pO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LCBbXSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLnRvcCAtIGIudG9wKTtcblxuICAgIGlmIChlbGVtZW50c1NvcnRlZC5sZW5ndGggPT09IDApIHJldHVybjtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50XG4gICAgICAuZ2V0RWxlbWVudEJ5SWQoVElDS0VUX0RSQVdFUl9JRClcbiAgICAgIC5xdWVyeVNlbGVjdG9yKFwiLk11aURyYXdlci1wYXBlclwiKTtcbiAgICBjb25zdCB0YXJnZXQgPSBlbGVtZW50c1NvcnRlZFswXTtcblxuICAgIGlmIChjb250YWluZXI/LmNvbnRhaW5zKHRhcmdldC5lbGVtZW50KSkge1xuICAgICAgY29uc3QgY29udGFpbmVyUmVjdCA9IGNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvZmZzZXQgb2YgdGhlIHRhcmdldCBlbGVtZW50IHJlbGF0aXZlIHRvIHRoZSBjb250YWluZXJcbiAgICAgIGNvbnN0IGVsZW1PZmZlc3QgPSAxMDA7XG4gICAgICBjb25zdCBhbmltYXRpb25EdXJhdGlvbiA9IDUwMDtcbiAgICAgIGNvbnN0IHNjcm9sbFRvcCA9XG4gICAgICAgIHRhcmdldC50b3AgLSBjb250YWluZXJSZWN0LnRvcCArIGNvbnRhaW5lci5zY3JvbGxUb3AgLSBlbGVtT2ZmZXN0O1xuXG4gICAgICAvLyBTY3JvbGwgdGhlIGNvbnRhaW5lciB0byB0aGUgdGFyZ2V0IGVsZW1lbnQncyBwb3NpdGlvblxuICAgICAgc21vb3RoU2Nyb2xsVG8oY29udGFpbmVyLCBzY3JvbGxUb3AsIGFuaW1hdGlvbkR1cmF0aW9uKTsgLy8gNTAwbXMgZHVyYXRpb25cbiAgICB9XG4gIH0sIFtpc1N1Ym1pdHRpbmddKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHVzZVNjcm9sbFRvRXJyb3I7XG4iLCJpbXBvcnQgeyBpc1RpY2tldFJlZnVuZGFibGUgfSBmcm9tIFwiLi4vdXRpbHMvdGlja2V0VXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IFNUQVRVU19DT01QTEVURSA9IFwiQ29tcGxldGVcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfSU5DT01QTEVURSA9IFwiSW5jb21wbGV0ZVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIkNhbmNlbGxlZFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJVbmFzc2lnbmVkXCI7XG5cbmV4cG9ydCBjb25zdCB1c2VUaWNrZXREZXRhaWxzID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBnZXRTdGF0dXMgPSAoKSA9PiB7XG4gICAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcbiAgICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG4gICAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgICAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xuICAgIHJldHVybiB0aWNrZXQub3duZXIuc3RhdHVzO1xuICB9O1xuXG4gIGlmICghdGlja2V0KSByZXR1cm4ge307XG5cbiAgY29uc3Qgc3RhdHVzID0gZ2V0U3RhdHVzKCk7XG4gIGNvbnN0IGlzQWN0aXZlID0gdGlja2V0LmlzX2FjdGl2ZSAmJiBzdGF0dXMgIT09IFNUQVRVU19DQU5DRUxMRUQ7XG4gIGNvbnN0IGlzUmVmdW5kYWJsZSA9IGlzVGlja2V0UmVmdW5kYWJsZSh0aWNrZXQpO1xuICBjb25zdCBhbGxvd3NEZWxlZ2F0ZSA9XG4gICAgdGlja2V0Py50aWNrZXRfdHlwZT8uYWxsb3dzX3RvX2RlbGVnYXRlIHx8XG4gICAgdGlja2V0Py5wcm9tb19jb2RlPy5hbGxvd3NfdG9fZGVsZWdhdGU7XG4gIGNvbnN0IGlzQ29tcGxldGUgPSBzdGF0dXMgPT09IFNUQVRVU19DT01QTEVURTtcbiAgY29uc3QgaXNVbmFzc2lnbmVkID0gc3RhdHVzID09PSBTVEFUVVNfVU5BU1NJR05FRDtcbiAgY29uc3QgaXNJbmNvbXBsZXRlID0gc3RhdHVzID09PSBTVEFUVVNfSU5DT01QTEVURTtcbiAgY29uc3QgY2FuUmVhc3NpZ24gPVxuICAgICFpc1VuYXNzaWduZWQgJiZcbiAgICB0aWNrZXQudGlja2V0X3R5cGU/LmFsbG93c190b19yZWFzc2lnbiAmJlxuICAgICghdGlja2V0LnByb21vX2NvZGUgfHwgdGlja2V0LnByb21vX2NvZGU/LmFsbG93c190b19yZWFzc2lnbik7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGF0dXMsXG4gICAgaXNDb21wbGV0ZSxcbiAgICBpc1VuYXNzaWduZWQsXG4gICAgaXNJbmNvbXBsZXRlLFxuICAgIGlzQWN0aXZlLFxuICAgIGlzUmVmdW5kYWJsZSxcbiAgICBhbGxvd3NEZWxlZ2F0ZSxcbiAgICBjYW5SZWFzc2lnblxuICB9O1xufTtcbiIsImltcG9ydCBpMThuIGZyb20gXCJpMThuZXh0XCI7XG5pbXBvcnQgeyBpbml0UmVhY3RJMThuZXh0IH0gZnJvbSBcInJlYWN0LWkxOG5leHRcIjtcbmltcG9ydCBMYW5ndWFnZURldGVjdG9yIGZyb20gXCJpMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VkZXRlY3RvclwiO1xuaW1wb3J0IGVuIGZyb20gXCIuL2xvY2FsZXMvZW4uanNvblwiO1xuaW1wb3J0IGVzIGZyb20gXCIuL2xvY2FsZXMvZXMuanNvblwiO1xuXG4vLyBpbXBvcnQgQmFja2VuZCBmcm9tICdpMThuZXh0LWh0dHAtYmFja2VuZCc7XG4vLyBkb24ndCB3YW50IHRvIHVzZSB0aGlzP1xuLy8gaGF2ZSBhIGxvb2sgYXQgdGhlIFF1aWNrIHN0YXJ0IGd1aWRlXG4vLyBmb3IgcGFzc2luZyBpbiBsbmcgYW5kIHRyYW5zbGF0aW9ucyBvbiBpbml0XG5cbmkxOG5cbiAgLy8gbG9hZCB0cmFuc2xhdGlvbiB1c2luZyBodHRwIC0+IHNlZSAvcHVibGljL2xvY2FsZXMgKGkuZS4gaHR0cHM6Ly9naXRodWIuY29tL2kxOG5leHQvcmVhY3QtaTE4bmV4dC90cmVlL21hc3Rlci9leGFtcGxlL3JlYWN0L3B1YmxpYy9sb2NhbGVzKVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWh0dHAtYmFja2VuZFxuICAvLyB3YW50IHlvdXIgdHJhbnNsYXRpb25zIHRvIGJlIGxvYWRlZCBmcm9tIGEgcHJvZmVzc2lvbmFsIENETj8gPT4gaHR0cHM6Ly9naXRodWIuY29tL2xvY2l6ZS9yZWFjdC10dXRvcmlhbCNzdGVwLTItLS11c2UtdGhlLWxvY2l6ZS1jZG5cbiAgLy8gLnVzZShCYWNrZW5kKVxuICAvLyBkZXRlY3QgdXNlciBsYW5ndWFnZVxuICAvLyBsZWFybiBtb3JlOiBodHRwczovL2dpdGh1Yi5jb20vaTE4bmV4dC9pMThuZXh0LWJyb3dzZXItbGFuZ3VhZ2VEZXRlY3RvclxuICAudXNlKExhbmd1YWdlRGV0ZWN0b3IpXG4gIC8vIHBhc3MgdGhlIGkxOG4gaW5zdGFuY2UgdG8gcmVhY3QtaTE4bmV4dC5cbiAgLnVzZShpbml0UmVhY3RJMThuZXh0KVxuICAvLyBpbml0IGkxOG5leHRcbiAgLy8gZm9yIGFsbCBvcHRpb25zIHJlYWQ6IGh0dHBzOi8vd3d3LmkxOG5leHQuY29tL292ZXJ2aWV3L2NvbmZpZ3VyYXRpb24tb3B0aW9uc1xuICAuaW5pdCh7XG4gICAgZmFsbGJhY2tMbmc6IFwiZW5cIixcbiAgICBkZWJ1ZzogZmFsc2UsXG4gICAgcmVzb3VyY2VzOiB7XG4gICAgICBlbjogeyB0cmFuc2xhdGlvbjogZW4gfSxcbiAgICAgIGVzOiB7IHRyYW5zbGF0aW9uOiBlcyB9XG4gICAgfSxcbiAgICBpbnRlcnBvbGF0aW9uOiB7XG4gICAgICBlc2NhcGVWYWx1ZTogZmFsc2UgLy8gbm90IG5lZWRlZCBmb3IgcmVhY3QgYXMgaXQgZXNjYXBlcyBieSBkZWZhdWx0XG4gICAgfVxuICB9KTtcblxuZXhwb3J0IGRlZmF1bHQgaTE4bjtcbiIsIi8qKlxuICogQ29weXJpZ2h0IDIwMjQgT3BlblN0YWNrIEZvdW5kYXRpb25cbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqICovXG5pbXBvcnQgeyBMT0dPVVRfVVNFUiB9IGZyb20gXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L2FjdGlvbnNcIjtcbmltcG9ydCB7XG4gIFNUQVJUX0xPQURJTkcsXG4gIFNUT1BfTE9BRElORyxcbiAgUkVTRVRfTE9BRElOR1xufSBmcm9tIFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCI7XG5pbXBvcnQge1xuICBSRVNFVF9TVEFURSxcbiAgUkVTRVRfRklMVEVSLFxuICBTRVRfU1RBVEUsXG4gIFNFVF9VU0VSLFxuICBHRVRfVVNFUl9PUkRFUlMsXG4gIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTLFxuICBHRVRfVElDS0VUU19CWV9PUkRFUixcbiAgVVBEQVRFX1RJQ0tFVFNfUkVGVU5EX1JFUVVFU1RFRCxcbiAgUkVDRUlWRV9USUNLRVQsXG4gIFJFQ0VJVkVfRVhUUkFfUVVFU1RJT05TLFxuICBVUERBVEVfVElDS0VULFxuICBBU1NJR05fVElDS0VULFxuICBSRVNFVF9BUElfRVJST1IsXG4gIFNFVF9BUElfRVJST1IsXG4gIFJFU0VUX1RJQ0tFVCxcbiAgQ0hBTkdFX0ZJTFRFUixcbiAgQ0hBTkdFX1NPUlQsXG4gIEZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRSxcbiAgRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVIsXG4gIEZJTFRFUl9WQVJfREFURSxcbiAgRklMVEVSX1ZBUl9USUNLRVRfVFlQRSxcbiAgRklMVEVSX1ZBUl9GUkVFX1BBSUQsXG4gIEZJTFRFUl9WQVJfT1dORVJfU1RBVFVTLFxuICBGSUxURVJfVkFSX1RJQ0tFVF9BU1NJR05FRCxcbiAgRklMVEVSX1ZBUl9QUk9NT0NPREUsXG4gIERFTEVHQVRFX1RJQ0tFVCxcbiAgUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRVxufSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBGSVJTVF9QQUdFLCBUQUJTIH0gZnJvbSBcIi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzLCBoYXNMb2FkZWRBbGxEYXRhIH0gZnJvbSBcIi4vdXRpbHNcIjtcbmltcG9ydCB7IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24gfSBmcm9tIFwiLi91dGlscy90aWNrZXRVdGlsc1wiO1xuXG5jb25zdCBERUZBVUxUX0ZJTFRFUl9TVEFURSA9IHtcbiAgW0ZJTFRFUl9WQVJfQkFER0VfRkVBVFVSRV06IFtdLFxuICBbRklMVEVSX1ZBUl9USUNLRVRfVFlQRV06IFtdLFxuICBbRklMVEVSX1ZBUl9GUkVFX1BBSURdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9PV05FUl9TVEFUVVNdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORURdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9QUk9NT0NPREVdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9PUkRFUl9OVU1CRVJdOiBcIlwiLFxuICBbRklMVEVSX1ZBUl9EQVRFXTogbnVsbFxufTtcblxuY29uc3QgREVGQVVMVF9TVEFURSA9IHtcbiAgc3VtbWl0OiBudWxsLFxuICB1c2VyOiB7fSxcbiAgd2lkZ2V0TG9hZGluZzogZmFsc2UsXG4gIG1lbWJlck9yZGVyczogW10sXG4gIHVzZXJUaWNrZXRzOiBbXSxcbiAgZXh0cmFRdWVzdGlvbnM6IFtdLFxuICBjdXJyZW50VGlja2V0OiBudWxsLFxuICBlcnJvcnM6IHt9LFxuICBsb2FkaW5nOiBmYWxzZSxcbiAgY3VycmVudF90YWI6IFRBQlMuT1JERVJTLFxuICBzb3J0OiB7fSxcbiAgZmlsdGVyOiBERUZBVUxUX0ZJTFRFUl9TVEFURSxcbiAgYWN0aXZlRmlsdGVyc0NvdW50OiAwLFxuICBvcmRlcnNfY3VycmVudF9wYWdlOiAwLFxuICBvcmRlcnNfbGFzdF9wYWdlOiAwLFxuICBvcmRlcnNfcGVyX3BhZ2U6IDUsXG4gIG9yZGVyc190b3RhbDogMCxcbiAgdGlja2V0X2N1cnJlbnRfcGFnZTogMCxcbiAgdGlja2V0X2xhc3RfcGFnZTogMCxcbiAgdGlja2V0X3Blcl9wYWdlOiA1LFxuICB0aWNrZXRfdG90YWw6IDAsXG4gIHVzZXJfdGlja2V0c190b3RhbDogMCxcbiAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogMCxcbiAgdXNlcl90aWNrZXRzX2xhc3RfcGFnZTogMCxcbiAgYXBpRXJyb3I6IG51bGxcbn07XG5cbmNvbnN0IFdpZGdldFJlZHVjZXIgPSAoc3RhdGUgPSBERUZBVUxUX1NUQVRFLCB7IHR5cGUsIHBheWxvYWQgfSA9IHt9KSA9PiB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgTE9HT1VUX1VTRVI6XG4gICAgY2FzZSBSRVNFVF9TVEFURTpcbiAgICAgIHJldHVybiBERUZBVUxUX1NUQVRFO1xuICAgIGNhc2UgU1RBUlRfTE9BRElORzpcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBsb2FkaW5nOiB0cnVlIH07XG4gICAgY2FzZSBTVE9QX0xPQURJTkc6XG4gICAgY2FzZSBSRVNFVF9MT0FESU5HOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIGxvYWRpbmc6IGZhbHNlIH07XG4gICAgY2FzZSBSRVNFVF9BUElfRVJST1I6XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IG51bGwgfTtcbiAgICBjYXNlIFJFU0VUX0ZJTFRFUjpcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBmaWx0ZXI6IERFRkFVTFRfRklMVEVSX1NUQVRFLFxuICAgICAgICBhY3RpdmVGaWx0ZXJzQ291bnQ6IDAsXG4gICAgICAgIHNvcnQ6IHt9LFxuICAgICAgICBvcmRlcnNfY3VycmVudF9wYWdlOiAxLFxuICAgICAgICBvcmRlcnNfbGFzdF9wYWdlOiAxLFxuICAgICAgICBsb2FkaW5nOiB0cnVlXG4gICAgICB9O1xuICAgIGNhc2UgU0VUX1NUQVRFOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIC4uLnBheWxvYWQgfTtcbiAgICBjYXNlIFNFVF9BUElfRVJST1I6IHtcbiAgICAgIGNvbnN0IHsgdGl0bGUsIGh0bWw6IGJvZHkgfSA9IHBheWxvYWQ7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgYXBpRXJyb3I6IHsgdGl0bGUsIGJvZHkgfSB9O1xuICAgIH1cbiAgICBjYXNlIFNFVF9VU0VSOlxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHVzZXI6IHBheWxvYWQgfTtcbiAgICBjYXNlIENIQU5HRV9GSUxURVI6IHtcbiAgICAgIGNvbnN0IG5ld0ZpbHRlcnMgPSB7IC4uLnN0YXRlLmZpbHRlciwgLi4ucGF5bG9hZCB9O1xuICAgICAgY29uc3QgbmV3QWN0aXZlQ291bnQgPSBjYWxjdWxhdGVBY3RpdmVGaWx0ZXJzKG5ld0ZpbHRlcnMpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGZpbHRlcjogeyAuLi5zdGF0ZS5maWx0ZXIsIC4uLnBheWxvYWQgfSxcbiAgICAgICAgYWN0aXZlRmlsdGVyc0NvdW50OiBuZXdBY3RpdmVDb3VudFxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBDSEFOR0VfU09SVDoge1xuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIHNvcnQ6IHsgLi4ucGF5bG9hZCB9IH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1VTRVJfT1JERVJTOiB7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBzdGF0ZS5tZW1iZXJPcmRlcnMsIHRvdGFsKSlcbiAgICAgICAgcmV0dXJuIHN0YXRlO1xuXG4gICAgICBjb25zdCBtZW1iZXJPcmRlcnMgPVxuICAgICAgICBjdXJyZW50X3BhZ2UgPT09IEZJUlNUX1BBR0UgPyBkYXRhIDogWy4uLnN0YXRlLm1lbWJlck9yZGVycywgLi4uZGF0YV07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnMsXG4gICAgICAgIG9yZGVyc190b3RhbDogdG90YWwsXG4gICAgICAgIG9yZGVyc19jdXJyZW50X3BhZ2U6IGN1cnJlbnRfcGFnZSxcbiAgICAgICAgb3JkZXJzX2xhc3RfcGFnZTogbGFzdF9wYWdlXG4gICAgICB9O1xuICAgIH1cbiAgICBjYXNlIEdFVF9NWV9BU1NJR05FRF9USUNLRVRTOiB7XG4gICAgICBjb25zdCB7IGRhdGEsIHRvdGFsLCBjdXJyZW50X3BhZ2UsIGxhc3RfcGFnZSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgaWYgKGhhc0xvYWRlZEFsbERhdGEoY3VycmVudF9wYWdlLCBzdGF0ZS51c2VyVGlja2V0cywgdG90YWwpKVxuICAgICAgICByZXR1cm4gc3RhdGU7XG5cbiAgICAgIGNvbnN0IHVzZXJUaWNrZXRzID1cbiAgICAgICAgY3VycmVudF9wYWdlID09PSBGSVJTVF9QQUdFID8gZGF0YSA6IFsuLi5zdGF0ZS51c2VyVGlja2V0cywgLi4uZGF0YV07XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICB1c2VyVGlja2V0cyxcbiAgICAgICAgdXNlcl90aWNrZXRzX3RvdGFsOiB0b3RhbCxcbiAgICAgICAgdXNlcl90aWNrZXRzX2N1cnJlbnRfcGFnZTogY3VycmVudF9wYWdlLFxuICAgICAgICB1c2VyX3RpY2tldHNfbGFzdF9wYWdlOiBsYXN0X3BhZ2VcbiAgICAgIH07XG4gICAgfVxuICAgIGNhc2UgR0VUX1RJQ0tFVFNfQllfT1JERVI6IHtcbiAgICAgIGNvbnN0IHsgbWVtYmVyT3JkZXJzIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHsgZGF0YSwgdG90YWwsIGN1cnJlbnRfcGFnZSwgbGFzdF9wYWdlIH0gPSBwYXlsb2FkLnJlc3BvbnNlO1xuICAgICAgY29uc3QgZm9ybWVyT3JkZXIgPSBtZW1iZXJPcmRlcnMuZmluZCgobykgPT4gby5pZCA9PT0gZGF0YVswXT8ub3JkZXJfaWQpO1xuXG4gICAgICBjb25zdCBuZXdPcmRlcnMgPSBtZW1iZXJPcmRlcnMubWFwKChtbykgPT4ge1xuICAgICAgICBpZiAobW8uaWQgIT09IGRhdGFbMF0/Lm9yZGVyX2lkKSByZXR1cm4gbW87XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPVxuICAgICAgICAgIGN1cnJlbnRfcGFnZSA9PT0gRklSU1RfUEFHRVxuICAgICAgICAgICAgPyBkYXRhXG4gICAgICAgICAgICA6IFsuLi5mb3JtZXJPcmRlci5tZW1iZXJUaWNrZXRzLCAuLi5kYXRhXTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5tbyxcbiAgICAgICAgICBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzLFxuICAgICAgICAgIHRpY2tldHNfcGFnZV9jdXJyZW50OiBjdXJyZW50X3BhZ2UsXG4gICAgICAgICAgdGlja2V0c19wYWdlX2xhc3Q6IGxhc3RfcGFnZSxcbiAgICAgICAgICB0aWNrZXRzX3RvdGFsOiB0b3RhbFxuICAgICAgICB9O1xuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG5ld09yZGVyc1xuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBVUERBVEVfVElDS0VUU19SRUZVTkRfUkVRVUVTVEVEOiB7XG4gICAgICBjb25zdCB7IG1lbWJlck9yZGVycyB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkID0gcGF5bG9hZDtcbiAgICAgIGNvbnN0IG9yZGVyID0gbWVtYmVyT3JkZXJzLmZpbmQoXG4gICAgICAgIChvKSA9PiBvLmlkID09PSB0aWNrZXRzUmVmdW5kUmVxdWVzdGVkWzBdPy5vcmRlcl9pZFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHVwZGF0ZWRUaWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHMubWFwKFxuICAgICAgICAodGlja2V0KSA9PlxuICAgICAgICAgIHRpY2tldHNSZWZ1bmRSZXF1ZXN0ZWQuZmluZCgodHJyKSA9PiB0cnIuaWQgPT09IHRpY2tldC5pZCkgfHwgdGlja2V0XG4gICAgICApO1xuICAgICAgY29uc3QgdXBkYXRlZE9yZGVyID0ge1xuICAgICAgICAuLi5vcmRlcixcbiAgICAgICAgbWVtYmVyVGlja2V0czogdXBkYXRlZFRpY2tldHNcbiAgICAgIH07XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgbWVtYmVyT3JkZXJzOiBtZW1iZXJPcmRlcnMubWFwKChtbykgPT5cbiAgICAgICAgICBtby5pZCA9PT0gdXBkYXRlZE9yZGVyLmlkID8gdXBkYXRlZE9yZGVyIDogbW9cbiAgICAgICAgKVxuICAgICAgfTtcbiAgICB9XG4gICAgY2FzZSBSRVNFVF9USUNLRVQ6IHtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBjdXJyZW50VGlja2V0OiBudWxsIH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9USUNLRVQ6IHtcbiAgICAgIGNvbnN0IHRpY2tldCA9IHBheWxvYWQucmVzcG9uc2U7XG4gICAgICByZXR1cm4geyAuLi5zdGF0ZSwgY3VycmVudFRpY2tldDogdGlja2V0IH07XG4gICAgfVxuICAgIGNhc2UgUkVDRUlWRV9FWFRSQV9RVUVTVElPTlM6IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIHJldHVybiB7IC4uLnN0YXRlLCBleHRyYVF1ZXN0aW9uczogZGF0YSB9O1xuICAgIH1cbiAgICBjYXNlIFJFTU9WRV9USUNLRVRfQVRURU5ERUU6XG4gICAgY2FzZSBVUERBVEVfVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcblxuICAgICAgY29uc3QgbmV3T3JkZXJzID0gc3RhdGUubWVtYmVyT3JkZXJzLm1hcCgob3JkZXIpID0+IHtcbiAgICAgICAgY29uc3QgbmV3VGlja2V0cyA9IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24oXG4gICAgICAgICAgb3JkZXIubWVtYmVyVGlja2V0cyxcbiAgICAgICAgICB0aWNrZXREYXRhXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiB7IC4uLm9yZGVyLCBtZW1iZXJUaWNrZXRzOiBuZXdUaWNrZXRzIH07XG4gICAgICB9KTtcblxuICAgICAgY29uc3QgbmV3VXNlclRpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICBzdGF0ZS51c2VyVGlja2V0cyxcbiAgICAgICAgdGlja2V0RGF0YVxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHsgLi4uc3RhdGUsIG1lbWJlck9yZGVyczogbmV3T3JkZXJzLCB1c2VyVGlja2V0czogbmV3VXNlclRpY2tldHMgfTtcbiAgICB9XG4gICAgY2FzZSBERUxFR0FURV9USUNLRVQ6XG4gICAgY2FzZSBBU1NJR05fVElDS0VUOiB7XG4gICAgICBjb25zdCB0aWNrZXREYXRhID0gcGF5bG9hZC5yZXNwb25zZTtcbiAgICAgIGNvbnN0IG5ld09yZGVycyA9IHN0YXRlLm1lbWJlck9yZGVycy5tYXAoKG9yZGVyKSA9PiB7XG4gICAgICAgIGNvbnN0IG5ld1RpY2tldHMgPSB1cGRhdGVUaWNrZXRDb2xsZWN0aW9uKFxuICAgICAgICAgIG9yZGVyLm1lbWJlclRpY2tldHMsXG4gICAgICAgICAgdGlja2V0RGF0YVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4geyAuLi5vcmRlciwgbWVtYmVyVGlja2V0czogbmV3VGlja2V0cyB9O1xuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IG5ld1VzZXJUaWNrZXRzID0gdXBkYXRlVGlja2V0Q29sbGVjdGlvbihcbiAgICAgICAgc3RhdGUudXNlclRpY2tldHMsXG4gICAgICAgIHRpY2tldERhdGFcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBjdXJyZW50VGlja2V0OiB0aWNrZXREYXRhLFxuICAgICAgICBtZW1iZXJPcmRlcnM6IG5ld09yZGVycyxcbiAgICAgICAgdXNlclRpY2tldHM6IG5ld1VzZXJUaWNrZXRzXG4gICAgICB9O1xuICAgIH1cbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHN0YXRlO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBXaWRnZXRSZWR1Y2VyO1xuIiwiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY29uZmlndXJlU3RvcmUgfSBmcm9tIFwiQHJlZHV4anMvdG9vbGtpdFwiO1xuaW1wb3J0IHtcbiAgcGVyc2lzdFN0b3JlLFxuICBwZXJzaXN0UmVkdWNlcixcbiAgRkxVU0gsXG4gIFJFSFlEUkFURSxcbiAgUEFVU0UsXG4gIFBFUlNJU1QsXG4gIFBVUkdFLFxuICBSRUdJU1RFUlxufSBmcm9tIFwicmVkdXgtcGVyc2lzdFwiO1xuaW1wb3J0IHN0b3JhZ2UgZnJvbSBcInJlZHV4LXBlcnNpc3QvbGliL3N0b3JhZ2VcIjtcbmltcG9ydCB7IGNvbWJpbmVSZWR1Y2VycyB9IGZyb20gXCJyZWR1eFwiO1xuaW1wb3J0IFdpZGdldFJlZHVjZXIgZnJvbSBcIi4vcmVkdWNlclwiO1xuXG5leHBvcnQgY29uc3QgZ2V0U3RvcmUgPSAoe1xuICBjbGllbnRJZCxcbiAgbG9naW5VcmwsXG4gIHN1bW1pdCxcbiAgYXBpQmFzZVVybCxcbiAgdXBkYXRlUHJvZmlsZVxufSkgPT4ge1xuICAvLyB0byBhZGQgb3RoZXIgcmVkdWNlcnMgbGF0ZXJcbiAgY29uc3QgcmVkdWNlcnMgPSBjb21iaW5lUmVkdWNlcnMoe1xuICAgIHdpZGdldFN0YXRlOiBXaWRnZXRSZWR1Y2VyXG4gIH0pO1xuXG4gIGNvbnN0IHN0b3JlID0gY29uZmlndXJlU3RvcmUoe1xuICAgIHJlZHVjZXI6IHBlcnNpc3RSZWR1Y2VyKFxuICAgICAge1xuICAgICAgICBrZXk6IGByb290X215X29yZGVyc190aWNrZXRzXyR7Y2xpZW50SWR9YCxcbiAgICAgICAgc3RvcmFnZVxuICAgICAgfSxcbiAgICAgIHJlZHVjZXJzXG4gICAgKSxcbiAgICBtaWRkbGV3YXJlOiAoZ2V0RGVmYXVsdE1pZGRsZXdhcmUpID0+XG4gICAgICBnZXREZWZhdWx0TWlkZGxld2FyZSh7XG4gICAgICAgIHRodW5rOiB7XG4gICAgICAgICAgZXh0cmFBcmd1bWVudDoge1xuICAgICAgICAgICAgY2xpZW50SWQsXG4gICAgICAgICAgICBhcGlCYXNlVXJsLFxuICAgICAgICAgICAgc3VtbWl0LFxuICAgICAgICAgICAgbG9naW5VcmwsXG4gICAgICAgICAgICB1cGRhdGVQcm9maWxlXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBpbW11dGFibGVDaGVjazogZmFsc2UsXG4gICAgICAgIHNlcmlhbGl6YWJsZUNoZWNrOiB7XG4gICAgICAgICAgaWdub3JlZEFjdGlvbnM6IFtGTFVTSCwgUkVIWURSQVRFLCBQQVVTRSwgUEVSU0lTVCwgUFVSR0UsIFJFR0lTVEVSXVxuICAgICAgICB9XG4gICAgICB9KVxuICB9KTtcblxuICByZXR1cm4gc3RvcmU7XG59O1xuXG5leHBvcnQgY29uc3QgdXNlSW5pdFN0b3JlID0gKGNvbmZpZykgPT4ge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oKCkgPT4gZ2V0U3RvcmUoY29uZmlnKSwgW10pO1xuICBjb25zdCBwZXJzaXN0b3IgPSB1c2VNZW1vKCgpID0+IHBlcnNpc3RTdG9yZShzdG9yZSksIFtzdG9yZV0pO1xuXG4gIHJldHVybiB7XG4gICAgc3RvcmUsXG4gICAgcGVyc2lzdG9yXG4gIH07XG59O1xuIiwiaW1wb3J0IHtcbiAgaW5pdExvZ091dCxcbiAgZ2V0QWNjZXNzVG9rZW5cbn0gZnJvbSBcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvbWV0aG9kc1wiO1xuaW1wb3J0ICogYXMgU2VudHJ5IGZyb20gXCJAc2VudHJ5L3JlYWN0XCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bnVzZWQtdmFyc1xuY29uc3QgZ2V0QWNjZXNzVG9rZW5Nb2NrID0gKCkgPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXCJBY2Nlc3MgdG9rZW4gZXJyb3JcIik7XG4gIC8vIHJldHVybiBhdXRoUHJvbWlzZVJlamVjdCgpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFjY2Vzc1Rva2VuU2FmZWx5ID0gYXN5bmMgKCkgPT4ge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBY2Nlc3NUb2tlbigpLmNhdGNoKChlKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICAgIFNlbnRyeS5jYXB0dXJlRXhjZXB0aW9uKGUpO1xuICAgICAgaW5pdExvZ091dCgpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmxvZyhcIm15LW9yZGVycy10aWNrZXRzLXdpZGdldDo6Z2V0QWNjZXNzVG9rZW5TYWZlbHkgZXJyb3I6IFwiLCBlKTtcbiAgICBTZW50cnkuY2FwdHVyZUV4Y2VwdGlvbihlKTtcbiAgICBpbml0TG9nT3V0KCk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cbmV4cG9ydCBjb25zdCBhdXRoUHJvbWlzZVJlamVjdCA9IGFzeW5jICgpID0+XG4gIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcihcIkF1dGggVG9rZW4gZXJyb3JcIikpO1xuIiwiZXhwb3J0IGNvbnN0IExBU1RfSE9VUl9PRl8yNF9IT1VSID0gMjM7XG5leHBvcnQgY29uc3QgTEFTVF9NSU5VVEVfT0ZfSE9VUiA9IDU5O1xuZXhwb3J0IGNvbnN0IE9ORV9QQUdFX05FWFQgPSAxO1xuZXhwb3J0IGNvbnN0IE1JTExJU0VDX1RPX1NFQyA9IDEwMDA7XG5leHBvcnQgY29uc3QgT05FX0RBWSA9IDE7XG5leHBvcnQgY29uc3QgREVGQVVMVF9JVEVNU19QRVJfUEFHRSA9IDU7XG5leHBvcnQgY29uc3QgRklSU1RfUEFHRSA9IDE7XG5leHBvcnQgY29uc3QgUEFHSU5BVElPTl9ESVNQTEFZX0NPVU5UID0gNTtcbmV4cG9ydCBjb25zdCBTVEVQX09ORSA9IDE7XG5leHBvcnQgY29uc3QgU1RFUF9UV08gPSAyO1xuZXhwb3J0IGNvbnN0IFNURVBfVEhSRUUgPSAzO1xuZXhwb3J0IGNvbnN0IE1JTl9SRVFVSVJFRCA9IDE7XG5cbmV4cG9ydCBjb25zdCBTVEFUVVNfQ09NUExFVEUgPSBcIlNUQVRVU19DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19JTkNPTVBMRVRFID0gXCJTVEFUVVNfSU5DT01QTEVURVwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QRU5ESU5HID0gXCJTVEFUVVNfUEVORElOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19DQU5DRUxMRUQgPSBcIlNUQVRVU19DQU5DRUxMRURcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfRVJST1IgPSBcIlNUQVRVU19FUlJPUlwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19QUk9DRVNTSU5HID0gXCJTVEFUVVNfUFJPQ0VTU0lOR1wiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19VTkFTU0lHTkVEID0gXCJTVEFUVVNfVU5BU1NJR05FRFwiO1xuXG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9QRU5ESU5HID0gXCJTVEFUVVNfUkVGVU5EX1BFTkRJTkdcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEID0gXCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCA9IFwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRFwiO1xuZXhwb3J0IGNvbnN0IFNUQVRVU19SRUZVTkRfUEVORElOR19MQyA9IFwiUmVxdWVzdGVkXCI7XG5leHBvcnQgY29uc3QgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyA9IFwiQXBwcm92ZWRcIjtcbmV4cG9ydCBjb25zdCBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDID0gXCJSZWplY3RlZFwiO1xuXG5leHBvcnQgY29uc3QgSkVTVF9USU1FT1VUX0lOX01JTExJU0VDID0gMTAwMDA7XG5cbmV4cG9ydCBjb25zdCBPTkVfSVRFTSA9IDE7XG5leHBvcnQgY29uc3QgVFdPX0lURU0gPSAyO1xuZXhwb3J0IGNvbnN0IEZJVkVfSVRFTSA9IDU7XG5leHBvcnQgY29uc3QgU0lYX0lURU0gPSA2O1xuXG5leHBvcnQgY29uc3QgUFJPTUlTRV9CQVRDSF9MSU1JVCA9IDEwO1xuZXhwb3J0IGNvbnN0IEZJRlRZX1BFUl9QQUdFID0gNTA7XG5cbmV4cG9ydCBjb25zdCBFUlJPUl9DT0RFUyA9IHtcbiAgNDAxOiA0MDEsXG4gIDQwMzogNDAxLFxuICA0MTI6IDQwMSxcbiAgNTAwOiA1MDBcbn07XG5cbmV4cG9ydCBjb25zdCBUQUJTID0ge1xuICBPUkRFUlM6IFwiT1JERVJTXCIsXG4gIFRJQ0tFVFM6IFwiVElDS0VUU1wiXG59O1xuXG5leHBvcnQgY29uc3QgVElDS0VUX0RSQVdFUl9JRCA9IFwidGlja2V0RHJhd2VyXCI7XG4iLCJpbXBvcnQgbW9tZW50IGZyb20gXCJtb21lbnQtdGltZXpvbmVcIjtcbmltcG9ydCB7IHVzZURpc3BhdGNoIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQge1xuICBMQVNUX0hPVVJfT0ZfMjRfSE9VUixcbiAgTEFTVF9NSU5VVEVfT0ZfSE9VUixcbiAgTUlMTElTRUNfVE9fU0VDLFxuICBGSVJTVF9QQUdFXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3QgZm9ybWF0Q3VycmVuY3kgPSAodmFsdWUsIHsgbG9jYWxlID0gXCJlbi1VU1wiLCAuLi5vcHRpb25zIH0pID0+IHtcbiAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgY3VycmVuY3k6IFwiVVNEXCIsXG4gICAgbWluaW11bUZyYWN0aW9uRGlnaXRzOiAyLFxuICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMlxuICB9O1xuXG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLk51bWJlckZvcm1hdChsb2NhbGUsIHtcbiAgICBzdHlsZTogXCJjdXJyZW5jeVwiLFxuICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG5cbiAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQodmFsdWUpO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEZvcm1hdHRlZERhdGUgPSAoZGF0ZXRpbWUsIHRpbWVab25lKSA9PiB7XG4gIGlmICh0aW1lWm9uZSlcbiAgICByZXR1cm4gbW9tZW50XG4gICAgICAudHooZGF0ZXRpbWUgKiBNSUxMSVNFQ19UT19TRUMsIHRpbWVab25lKVxuICAgICAgLmZvcm1hdChcIk1NTU0gREQsIFlZWVlcIik7XG5cbiAgcmV0dXJuIG1vbWVudC51bml4KGRhdGV0aW1lKS5mb3JtYXQoXCJNTU1NIERELCBZWVlZXCIpO1xufTtcblxuZXhwb3J0IGNvbnN0IGNhbGN1bGF0ZU9yZGVyVG90YWxzID0gKHsgb3JkZXIsIHN1bW1pdCB9KSA9PiB7XG4gIGlmICghb3JkZXIgfHwgIXN1bW1pdCkgcmV0dXJuIHt9O1xuICBjb25zdCB0aWNrZXRzID0gb3JkZXI/Lm1lbWJlclRpY2tldHM7XG4gIGlmICghdGlja2V0cykgcmV0dXJuIHt9O1xuXG4gIGNvbnN0IHsgcmVmdW5kZWRfYW1vdW50LCBkaXNjb3VudF9hbW91bnQsIHRheGVzX2Ftb3VudCwgYW1vdW50IH0gPSBvcmRlcjtcbiAgY29uc3QgeyB0aWNrZXRfdHlwZXMgfSA9IHN1bW1pdDtcblxuICBjb25zdCB0aWNrZXRTdW1tYXJ5ID0gW107XG4gIGxldCBwdXJjaGFzZVRpY2tldFRvdGFsID0gMDtcblxuICBjb25zdCBjdXJyZW5jeU9iamVjdCA9IHsgY3VycmVuY3k6IG9yZGVyLmN1cnJlbmN5IH07XG5cbiAgT2JqZWN0LmtleXMob3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlKS5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGNvbnN0IHRpY2tldFR5cGUgPSB0aWNrZXRfdHlwZXM/LmZpbmQoKHR0KSA9PiB0dC5uYW1lID09PSB0aWNrZXQpO1xuICAgIGlmICghdGlja2V0VHlwZSkgcmV0dXJuIG51bGw7XG4gICAgdGlja2V0U3VtbWFyeS5wdXNoKHtcbiAgICAgIHRpY2tldF90eXBlX2lkOiB0aWNrZXRUeXBlLmlkLFxuICAgICAgdGlja2V0X3R5cGU6IHRpY2tldFR5cGUsXG4gICAgICBuYW1lOiB0aWNrZXQsXG4gICAgICBxdHk6IG9yZGVyLnRpY2tldHNfZXhjZXJwdF9ieV90aWNrZXRfdHlwZVt0aWNrZXRdXG4gICAgfSk7XG4gICAgcHVyY2hhc2VUaWNrZXRUb3RhbCArPVxuICAgICAgdGlja2V0VHlwZS5jb3N0ICogb3JkZXIudGlja2V0c19leGNlcnB0X2J5X3RpY2tldF90eXBlW3RpY2tldF07XG5cbiAgICByZXR1cm4gdGlja2V0U3VtbWFyeTtcbiAgfSk7XG5cbiAgY29uc3QgcHVyY2hhc2VUb3RhbCA9IGZvcm1hdEN1cnJlbmN5KHB1cmNoYXNlVGlja2V0VG90YWwsIGN1cnJlbmN5T2JqZWN0KTtcblxuICBjb25zdCBkaXNjb3VudFRvdGFsID0gZm9ybWF0Q3VycmVuY3koZGlzY291bnRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHJlZnVuZFRvdGFsID0gZm9ybWF0Q3VycmVuY3kocmVmdW5kZWRfYW1vdW50LCBjdXJyZW5jeU9iamVjdCk7XG4gIGNvbnN0IHRheGVzVG90YWwgPSBmb3JtYXRDdXJyZW5jeSh0YXhlc19hbW91bnQsIGN1cnJlbmN5T2JqZWN0KTtcbiAgY29uc3QgYW1vdW50VG90YWwgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3JkZXIsIFwiYW1vdW50XCIpXG4gICAgPyBmb3JtYXRDdXJyZW5jeShhbW91bnQsIGN1cnJlbmN5T2JqZWN0KVxuICAgIDogZm9ybWF0Q3VycmVuY3kocHVyY2hhc2VUb3RhbCwgY3VycmVuY3lPYmplY3QpO1xuXG4gIHJldHVybiB7XG4gICAgZGlzY291bnRUb3RhbCxcbiAgICByZWZ1bmRUb3RhbCxcbiAgICB0YXhlc1RvdGFsLFxuICAgIGFtb3VudFRvdGFsLFxuICAgIHRpY2tldFN1bW1hcnlcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRPcmRlclRpY2tldHMgPSAobWVtYmVyT3JkZXJzLCBvcmRlcklkKSA9PiB7XG4gIGNvbnN0IG9yZGVycyA9IG1lbWJlck9yZGVycy5maWx0ZXIoKG8pID0+IG8uaWQgPT09IG9yZGVySWQpO1xuICByZXR1cm4gb3JkZXJzWzBdPy5tZW1iZXJUaWNrZXRzO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyA9ICh0cykgPT4ge1xuICBjb25zdCBsb3dlciA9IHRzLnNldEhvdXJzKDAsIDAsIDAsIDApIC8gTUlMTElTRUNfVE9fU0VDO1xuICBjb25zdCB1cHBlciA9XG4gICAgdHMuc2V0SG91cnMoTEFTVF9IT1VSX09GXzI0X0hPVVIsIExBU1RfTUlOVVRFX09GX0hPVVIsIDAsIDApIC9cbiAgICBNSUxMSVNFQ19UT19TRUM7XG4gIHJldHVybiB7XG4gICAgbG93ZXIsXG4gICAgdXBwZXJcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q3VycmVudFRpbWUgPSAoKSA9PlxuICBNYXRoLnJvdW5kKCtuZXcgRGF0ZSgpIC8gTUlMTElTRUNfVE9fU0VDKTtcblxuZXhwb3J0IGNvbnN0IGdldE5vdyA9ICgpID0+IChkaXNwYXRjaCwgZ2V0U3RhdGUpID0+IHtcbiAgY29uc3QgeyB0aW1lclN0YXRlIH0gPSBnZXRTdGF0ZSgpO1xuICByZXR1cm4gdGltZXJTdGF0ZT8ubm93VXRjID09IG51bGwgPyBkZWZhdWx0Q3VycmVudFRpbWUoKSA6IHRpbWVyU3RhdGU/Lm5vd1V0Yztcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VOb3cgPSAoKSA9PiB7XG4gIGNvbnN0IGRpc3BhdGNoID0gdXNlRGlzcGF0Y2goKTtcblxuICByZXR1cm4gZGlzcGF0Y2goZ2V0Tm93KCkpO1xufTtcblxuLyoqXG4gKiBAcGFyYW0gY3VycmVudFBhZ2VcbiAqIEBwYXJhbSBkYXRhXG4gKiBAcGFyYW0gdG90YWxcbiAqIEByZXR1cm5zIHtib29sZWFufVxuICovXG5leHBvcnQgY29uc3QgaGFzTG9hZGVkQWxsRGF0YSA9IChjdXJyZW50UGFnZSwgZGF0YSwgdG90YWwpID0+IHtcbiAgbGV0IHJlcyA9IGZhbHNlO1xuICBjb25zdCBkYXRhTGVuZ3RoID0gQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEubGVuZ3RoIDogMDtcbiAgLy8gd2UgYWxyZWFkeSBsb2FkZWQgYWxsICBkYXRhICggZmlyc3QgcGFnZSBpcyBhbHdheXMgcmVsb2FkZWQgaXQgKVxuICBpZiAoY3VycmVudFBhZ2UgPiBGSVJTVF9QQUdFICYmIGRhdGFMZW5ndGggPiAwICYmIGRhdGFMZW5ndGggPT09IHRvdGFsKVxuICAgIHJlcyA9IHRydWU7XG4gIHJldHVybiByZXM7XG59O1xuXG5leHBvcnQgY29uc3QgY2FsY3VsYXRlQWN0aXZlRmlsdGVycyA9IChmaWx0ZXJzKSA9PiB7XG4gIGxldCBjb3VudCA9IDA7XG4gIE9iamVjdC5lbnRyaWVzKGZpbHRlcnMpLmZvckVhY2goKFssIHZhbHVlXSkgPT4ge1xuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgY291bnQgKz0gdmFsdWUubGVuZ3RoO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiICYmIHZhbHVlLnRyaW0oKSAhPT0gXCJcIikge1xuICAgICAgY291bnQrKztcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIiAmJiB2YWx1ZSA+IDApIHtcbiAgICAgIGNvdW50Kys7XG4gICAgfVxuICB9KTtcbiAgcmV0dXJuIGNvdW50O1xufTtcbiIsImltcG9ydCBtb21lbnQgZnJvbSBcIm1vbWVudC10aW1lem9uZVwiO1xuaW1wb3J0IHsgTUlMTElTRUNfVE9fU0VDLCBPTkVfREFZIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyB1c2VOb3cgfSBmcm9tIFwiLlwiO1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRQYXN0ID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICBjb25zdCByZWFzc2lnbl9kYXRlID1cbiAgICBzdW1taXQ/LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgICAgPyBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZVxuICAgICAgOiBzdW1taXQuZW5kX2RhdGU7XG5cbiAgcmV0dXJuIG5vdyA+IHJlYXNzaWduX2RhdGU7XG59O1xuXG5leHBvcnQgY29uc3QgY2hlY2tTdW1taXRTdGFydGVkID0gKHN1bW1pdCwgbm93KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnN0YXJ0X2RhdGUgPCBub3c7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U3VtbWl0RGF5c0RpZmYgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcbiAgY29uc3Qgc3RhcnREYXkgPSBtb21lbnQoc3VtbWl0LnN0YXJ0X2RhdGUgKiBNSUxMSVNFQ19UT19TRUMpLnR6KFxuICAgIHN1bW1pdC50aW1lX3pvbmVfaWRcbiAgKTtcbiAgY29uc3QgZW5kRGF5ID0gbW9tZW50KHN1bW1pdC5lbmRfZGF0ZSAqIE1JTExJU0VDX1RPX1NFQykudHooXG4gICAgc3VtbWl0LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzID0gZW5kRGF5Py5kaWZmKHN0YXJ0RGF5LCBcImRheXNcIik7XG4gIHJldHVybiB7XG4gICAgc3RhcnREYXksXG4gICAgZW5kRGF5LFxuICAgIGRheXNcbiAgfTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRGb3JtYXR0ZWREYXRlID0gKHN1bW1pdCkgPT4ge1xuICBpZiAoIXN1bW1pdCkgcmV0dXJuIG51bGw7XG4gIGNvbnN0IHsgc3RhcnREYXksIGVuZERheSwgZGF5cyB9ID0gZ2V0U3VtbWl0RGF5c0RpZmYoc3VtbWl0KTtcbiAgaWYgKCFzdGFydERheSB8fCAhZW5kRGF5KSByZXR1cm4gbnVsbDtcbiAgbGV0IGZvcm1hdFN0YXJ0RGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBsZXQgZm9ybWF0RW5kRGF0ZSA9IFwiTU1NTSBERCwgWVlZWVwiO1xuICBpZiAoc3RhcnREYXkueWVhcigpID09PSBlbmREYXkueWVhcigpKSBmb3JtYXRTdGFydERhdGUgPSBcIk1NTU0gRERcIjtcbiAgaWYgKHN0YXJ0RGF5Lm1vbnRoKCkgPT09IGVuZERheS5tb250aCgpKSBmb3JtYXRFbmREYXRlID0gXCJERCwgWVlZWVwiO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IHN0YXJ0RGF5LmZvcm1hdChmb3JtYXRTdGFydERhdGUpO1xuICBjb25zdCBlbmREYXRlID0gZW5kRGF5LmZvcm1hdChmb3JtYXRFbmREYXRlKTtcblxuICBpZiAoZGF5cyA+IE9ORV9EQVkpIHJldHVybiBgJHtzdGFydERhdGV9IC0gJHtlbmREYXRlfWA7XG5cbiAgcmV0dXJuIHN0YXJ0RGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRMb2NhdGlvbiA9IChzdW1taXQpID0+IHtcbiAgaWYgKCFzdW1taXQpIHJldHVybiBudWxsO1xuXG4gIGNvbnN0IGxvY2F0aW9uID0gc3VtbWl0LmxvY2F0aW9ucz8uZmluZChcbiAgICAobCkgPT4gbC5jbGFzc19uYW1lID09PSBcIlN1bW1pdFZlbnVlXCIgJiYgbC5pc19tYWluID09PSB0cnVlXG4gICk7XG5cbiAgaWYgKCFsb2NhdGlvbikgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIGAke2xvY2F0aW9uLmNpdHl9LCAke2xvY2F0aW9uLmNvdW50cnl9YDtcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRTdW1taXRSZWFzc2lnbkRhdGUgPSAoc3VtbWl0KSA9PiB7XG4gIGlmICghc3VtbWl0KSByZXR1cm4gbnVsbDtcblxuICByZXR1cm4gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGUgJiZcbiAgICBzdW1taXQucmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSA8IHN1bW1pdC5lbmRfZGF0ZVxuICAgID8gc3VtbWl0LnJlYXNzaWduX3RpY2tldF90aWxsX2RhdGVcbiAgICA6IHN1bW1pdC5lbmRfZGF0ZTtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTdW1taXREZXRhaWxzID0gKHsgc3VtbWl0IH0pID0+IHtcbiAgY29uc3Qgbm93ID0gdXNlTm93KCk7XG5cbiAgaWYgKCFzdW1taXQpIHJldHVybiB7fTtcblxuICBjb25zdCBsb2NhdGlvbiA9IGdldFN1bW1pdExvY2F0aW9uKHN1bW1pdCk7XG4gIGNvbnN0IGZvcm1hdHRlZERhdGUgPSBnZXRTdW1taXRGb3JtYXR0ZWREYXRlKHN1bW1pdCk7XG4gIGNvbnN0IHJlYXNzaWduRGF0ZSA9IGdldFN1bW1pdFJlYXNzaWduRGF0ZShzdW1taXQpO1xuICBjb25zdCBmb3JtYXR0ZWRSZWFzc2lnbkRhdGUgPSBtb21lbnQudHooXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIHN1bW1pdC50aW1lX3pvbmU/LnRpbWVfem9uZV9pZFxuICApO1xuICBjb25zdCBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lID0gZ2V0U3VtbWl0RGF5c0RpZmYoXG4gICAgbm93LFxuICAgIHJlYXNzaWduRGF0ZSxcbiAgICBzdW1taXQudGltZV96b25lPy5uYW1lXG4gICk7XG5cbiAgY29uc3QgaXNQYXN0ID0gY2hlY2tTdW1taXRQYXN0KHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNTdGFydGVkID0gY2hlY2tTdW1taXRTdGFydGVkKHN1bW1pdCwgbm93KTtcbiAgY29uc3QgaXNSZWFzc2lnbmFibGUgPSByZWFzc2lnbkRhdGUgPiBub3c7XG5cbiAgcmV0dXJuIHtcbiAgICBuYW1lOiBzdW1taXQ/Lm5hbWUsXG4gICAgbm93LFxuICAgIGxvY2F0aW9uLFxuICAgIGZvcm1hdHRlZERhdGUsXG4gICAgcmVhc3NpZ25EYXRlLFxuICAgIGZvcm1hdHRlZFJlYXNzaWduRGF0ZSxcbiAgICBkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lLFxuICAgIGlzUGFzdCxcbiAgICBpc1N0YXJ0ZWQsXG4gICAgaXNSZWFzc2lnbmFibGVcbiAgfTtcbn07XG4iLCJpbXBvcnQgKiBhcyB5dXAgZnJvbSBcInl1cFwiO1xuaW1wb3J0IGkxOG4gZnJvbSBcIi4uL2kxOG5cIjtcbmltcG9ydCB7XG4gIE1JTl9SRVFVSVJFRCxcbiAgU1RBVFVTX0NBTkNFTExFRCxcbiAgU1RBVFVTX0NPTVBMRVRFLFxuICBTVEFUVVNfSU5DT01QTEVURSxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRCxcbiAgU1RBVFVTX1JFRlVORF9BUFBST1ZFRF9MQyxcbiAgU1RBVFVTX1JFRlVORF9QRU5ESU5HLFxuICBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTEMsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURUQsXG4gIFNUQVRVU19SRUZVTkRfUkVKRUNURURfTEMsXG4gIFNUQVRVU19VTkFTU0lHTkVEXG59IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVElDS0VUX0FUVEVOREVFX0tFWVMgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9UaWNrZXREZXRhaWwvY29uc3RhbnRzXCI7XG5pbXBvcnQge1xuICBjaGVja0lmVmFsdWVNYXRjaCxcbiAgZ2V0VHlwZUluaXRpYWxWYWx1ZSxcbiAgdG9TbHVnXG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbXBvbmVudHMvdXRpbHNcIjtcbmltcG9ydCB7XG4gIFF1ZXN0aW9uVHlwZV9DaGVja2JveCxcbiAgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdCxcbiAgUXVlc3Rpb25UeXBlX0NvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94LFxuICBRdWVzdGlvblR5cGVfUmFkaW9CdXR0b25MaXN0XG59IGZyb20gXCIuLi9jb21wb25lbnRzL0V4dHJhUXVlc3Rpb25zRmllbGRzL2NvbnN0YW50c1wiO1xuXG5leHBvcnQgY29uc3Qgc3RhdHVzRGF0YSA9IHtcbiAgW1NUQVRVU19VTkFTU0lHTkVEXToge1xuICAgIHR5cGU6IFNUQVRVU19VTkFTU0lHTkVELFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMudW5hc3NpZ25lZFwiKVxuICB9LFxuICBbU1RBVFVTX0lOQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0lOQ09NUExFVEUsXG4gICAgdGV4dDogaTE4bi50KFwidGlja2V0X3N0YXR1cy5pbmNvbXBsZXRlXCIpXG4gIH0sXG4gIFtTVEFUVVNfQ09NUExFVEVdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NPTVBMRVRFLFxuICAgIHRleHQ6IGkxOG4udChcInRpY2tldF9zdGF0dXMuY29tcGxldGVcIilcbiAgfSxcbiAgW1NUQVRVU19DQU5DRUxMRURdOiB7XG4gICAgdHlwZTogU1RBVFVTX0NBTkNFTExFRCxcbiAgICB0ZXh0OiBpMThuLnQoXCJ0aWNrZXRfc3RhdHVzLmNhbmNlbGxlZFwiKVxuICB9XG59O1xuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0tleSA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKCF0aWNrZXQuaXNfYWN0aXZlKSByZXR1cm4gU1RBVFVTX0NBTkNFTExFRDtcblxuICBpZiAodGlja2V0Lm93bmVyX2lkID09PSAwKSByZXR1cm4gU1RBVFVTX1VOQVNTSUdORUQ7XG5cbiAgaWYgKCF0aWNrZXQub3duZXI/LmZpcnN0X25hbWUgfHwgIXRpY2tldC5vd25lcj8ubGFzdF9uYW1lKVxuICAgIHJldHVybiBTVEFUVVNfSU5DT01QTEVURTtcblxuICBpZiAodGlja2V0Lm93bmVyICYmIHRpY2tldC5vd25lcj8uc3RhdHVzID09PSBcIkluY29tcGxldGVcIilcbiAgICByZXR1cm4gU1RBVFVTX0lOQ09NUExFVEU7XG5cbiAgaWYgKHRpY2tldC5vd25lciAmJiB0aWNrZXQub3duZXI/LnN0YXR1cyA9PT0gXCJDb21wbGV0ZVwiKVxuICAgIHJldHVybiBTVEFUVVNfQ09NUExFVEU7XG5cbiAgcmV0dXJuIFNUQVRVU19JTkNPTVBMRVRFO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFN0YXR1c0RhdGEgPSAodGlja2V0LCBpc1N1bW1pdFBhc3QpID0+XG4gIHN0YXR1c0RhdGFbZ2V0VGlja2V0U3RhdHVzS2V5KHRpY2tldCwgaXNTdW1taXRQYXN0KV07XG5cbmV4cG9ydCBjb25zdCBnZXRUaWNrZXRSb2xlID0gKHRpY2tldCkgPT4ge1xuICBpZiAoIXRpY2tldC5iYWRnZSkgcmV0dXJuIG51bGw7XG5cbiAgY29uc3QgeyBmZWF0dXJlcyB9ID0gdGlja2V0LmJhZGdlO1xuXG4gIGlmIChmZWF0dXJlcy5sZW5ndGggPiAwKVxuICAgIHJldHVybiBmZWF0dXJlcy5tYXAoKGZlYXR1cmUpID0+IGZlYXR1cmUubmFtZSkuam9pbihcIiwgXCIpO1xuXG4gIHJldHVybiBudWxsO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFRpY2tldFR5cGUgPSAodGlja2V0LCBzdW1taXQpID0+XG4gIHN1bW1pdC50aWNrZXRfdHlwZXMuZmluZCgodHlwZSkgPT4gdHlwZS5pZCA9PT0gdGlja2V0LnRpY2tldF90eXBlX2lkKTtcblxuZXhwb3J0IGNvbnN0IGlzVGlja2V0UmVmdW5kYWJsZSA9ICh0aWNrZXQpID0+XG4gIHRpY2tldD8uZmluYWxfYW1vdW50ID4gMCAmJlxuICB0aWNrZXQ/Lm5ldF9zZWxsaW5nX2Nvc3QgPiB0aWNrZXQucmVmdW5kZWRfYW1vdW50ICYmXG4gICF0aWNrZXQ/LnJlZnVuZF9yZXF1ZXN0cz8uc29tZShcbiAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9QRU5ESU5HX0xDXG4gICk7XG5cbmV4cG9ydCBjb25zdCB0aWNrZXRzUmVmdW5kYWJsZSA9ICh0aWNrZXRzKSA9PlxuICB0aWNrZXRzPy5maWx0ZXIoKHRpY2tldCkgPT4gaXNUaWNrZXRSZWZ1bmRhYmxlKHRpY2tldCkpLmxlbmd0aCB8fCAwO1xuXG5leHBvcnQgY29uc3QgZ2V0UmVmdW5kZWRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+XG4gIHRpY2tldHM/LmZpbHRlcigodGlja2V0KSA9PlxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKTtcbmV4cG9ydCBjb25zdCBnZXRBbGxSZWZ1bmRSZXF1ZXN0ZWRUaWNrZXRzID0gKHRpY2tldHMpID0+IHtcbiAgY29uc3QgYWxsVGlja2V0cyA9IFtdO1xuICB0aWNrZXRzPy5tYXAoKHRpY2tldCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX1BFTkRJTkdfTENcbiAgICAgICkgfHxcbiAgICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAgIChycikgPT4gcnIuc3RhdHVzID09PSBTVEFUVVNfUkVGVU5EX0FQUFJPVkVEX0xDXG4gICAgICApIHx8XG4gICAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgICAgKVxuICAgICkge1xuICAgICAgYWxsVGlja2V0cy5wdXNoKHRpY2tldCk7XG4gICAgfVxuICAgIHJldHVybiB0aWNrZXQ7XG4gIH0pO1xuICByZXR1cm4gYWxsVGlja2V0cztcbn07XG5cbmV4cG9ydCBjb25zdCBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyA9ICh0aWNrZXQpID0+IHtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfUEVORElOR19MQylcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1BFTkRJTkc7XG4gIGlmIChcbiAgICB0aWNrZXQucmVmdW5kX3JlcXVlc3RzPy5zb21lKFxuICAgICAgKHJyKSA9PiByci5zdGF0dXMgPT09IFNUQVRVU19SRUZVTkRfQVBQUk9WRURfTENcbiAgICApXG4gIClcbiAgICByZXR1cm4gU1RBVFVTX1JFRlVORF9BUFBST1ZFRDtcbiAgaWYgKFxuICAgIHRpY2tldC5yZWZ1bmRfcmVxdWVzdHM/LnNvbWUoXG4gICAgICAocnIpID0+IHJyLnN0YXR1cyA9PT0gU1RBVFVTX1JFRlVORF9SRUpFQ1RFRF9MQ1xuICAgIClcbiAgKVxuICAgIHJldHVybiBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEO1xuICByZXR1cm4gU1RBVFVTX1JFRlVORF9QRU5ESU5HO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFJlZnVuZFJlcXVlc3RlZFN0YXR1c0NvbG9yID0gKHRpY2tldCkgPT4ge1xuICBjb25zdCBzdGF0dXMgPSBnZXRSZWZ1bmRlZFJlcXVlc3RlZFN0YXR1cyh0aWNrZXQpO1xuICBsZXQgc3RhdHVzQ29sb3IgPSBcIlwiO1xuICBzd2l0Y2ggKHN0YXR1cykge1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9QRU5ESU5HOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgU1RBVFVTX1JFRlVORF9BUFBST1ZFRDpcbiAgICAgIHN0YXR1c0NvbG9yID0gXCJhcHByb3ZlZFwiO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBTVEFUVVNfUkVGVU5EX1JFSkVDVEVEOlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInJlamVjdGVkXCI7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc3RhdHVzQ29sb3IgPSBcInBlbmRpbmdcIjtcbiAgfVxuICByZXR1cm4gc3RhdHVzQ29sb3I7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0VHlwZVZhbGlkYXRpb24gPSAodHlwZSwgbmFtZSwgaXNSZXF1aXJlZCkgPT4ge1xuICBsZXQgc2NoZW1hO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9DaGVja2JveDpcbiAgICAgIHNjaGVtYSA9IHl1cC5ib29sKCkub25lT2YoW3RydWVdLCBpMThuLnQoXCJ2YWxpZGF0aW9uLmNoZWNrYm94LnJlcXVpcmVkXCIpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5zdHJpbmcoYEVudGVyICR7bmFtZX1gKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUXVlc3Rpb25UeXBlX0NoZWNrQm94TGlzdDpcbiAgICAgIHNjaGVtYSA9IHl1cC5hcnJheSgpLm9mKHl1cC5zdHJpbmcoKSk7XG4gICAgICBpZiAoaXNSZXF1aXJlZCkgc2NoZW1hID0gc2NoZW1hLm1pbihNSU5fUkVRVUlSRUQsIGAke25hbWV9IGlzIHJlcXVpcmVkYCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFF1ZXN0aW9uVHlwZV9Db3VudHJ5Q29tYm9Cb3g6XG4gICAgY2FzZSBRdWVzdGlvblR5cGVfQ29tYm9Cb3g6XG4gICAgICBzY2hlbWEgPSB5dXAuc3RyaW5nKGBFbnRlciAke25hbWV9YCk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgc2NoZW1hID0geXVwLnN0cmluZyhgRW50ZXIgJHtuYW1lfWApO1xuICAgICAgYnJlYWs7XG4gIH1cblxuICBpZiAoaXNSZXF1aXJlZCkge1xuICAgIHNjaGVtYSA9IHNjaGVtYS5yZXF1aXJlZChgJHtuYW1lfSBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgcmV0dXJuIHNjaGVtYTtcbn07XG5cbmNvbnN0IHBhcnNlU3ViUXVlc3Rpb25BbnN3ZXIgPSAoXG4gIHEsXG4gIGFuc3dlcnMsXG4gIGFuc3dlcixcbiAgaW5pdGlhbFZhbHVlcyxcbiAgb25seVJlbGV2YW50XG4pID0+IHtcbiAgaWYgKHEuc3ViX3F1ZXN0aW9uX3J1bGVzPy5sZW5ndGggPiAwKSB7XG4gICAgcS5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgocnVsZSkgPT4ge1xuICAgICAgY29uc3QgeyBzdWJfcXVlc3Rpb24sIGFuc3dlcl92YWx1ZXMgfSA9IHJ1bGU7XG4gICAgICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViX3F1ZXN0aW9uLm5hbWUsIHN1Yl9xdWVzdGlvbi5pZCk7XG4gICAgICBjb25zdCBzdWJBbnN3ZXIgPSBhbnN3ZXJzW3N1YlF1ZXN0aW9uU2x1Z107XG4gICAgICBjb25zdCBtYXRjaCA9IGNoZWNrSWZWYWx1ZU1hdGNoKGFuc3dlciwgYW5zd2VyX3ZhbHVlcyk7XG5cbiAgICAgIGlmICghb25seVJlbGV2YW50IHx8IG1hdGNoKSB7XG4gICAgICAgIGluaXRpYWxWYWx1ZXNbc3ViUXVlc3Rpb25TbHVnXSA9XG4gICAgICAgICAgc3ViQW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUoc3ViX3F1ZXN0aW9uKTtcbiAgICAgIH1cblxuICAgICAgcGFyc2VTdWJRdWVzdGlvbkFuc3dlcihcbiAgICAgICAgc3ViX3F1ZXN0aW9uLFxuICAgICAgICBhbnN3ZXJzLFxuICAgICAgICBzdWJBbnN3ZXIsXG4gICAgICAgIGluaXRpYWxWYWx1ZXMsXG4gICAgICAgIG9ubHlSZWxldmFudFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlQW5zd2VycyA9IChcbiAgb3duZXIsXG4gIGV4dHJhUXVlc3Rpb25zLFxuICBhbnN3ZXJzLFxuICBpbmNsdWRlQXR0ZW5kZWVJbmZvLFxuICBpbmNsdWRlRGlzY2xhaW1lcixcbiAgb25seVJlbGV2YW50ID0gZmFsc2VcbikgPT4ge1xuICBjb25zdCBpbml0aWFsVmFsdWVzID0ge307XG5cbiAgaWYgKGluY2x1ZGVBdHRlbmRlZUluZm8pIHtcbiAgICBpbml0aWFsVmFsdWVzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSB8fCBvd25lci5lbWFpbCB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9XG4gICAgICBhbnN3ZXJzW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmZpcnN0TmFtZV0gfHwgb3duZXIuZmlyc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMubGFzdE5hbWVdIHx8IG93bmVyLmxhc3RfbmFtZSB8fCBcIlwiO1xuICAgIGluaXRpYWxWYWx1ZXNbVElDS0VUX0FUVEVOREVFX0tFWVMuY29tcGFueV0gPVxuICAgICAgYW5zd2Vyc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSB8fCBvd25lci5jb21wYW55O1xuICB9XG5cbiAgaWYgKGluY2x1ZGVEaXNjbGFpbWVyKSB7XG4gICAgaW5pdGlhbFZhbHVlc1tUSUNLRVRfQVRURU5ERUVfS0VZUy5kaXNjbGFpbWVyQWNjZXB0ZWRdID1cbiAgICAgIGFuc3dlcnNbVElDS0VUX0FUVEVOREVFX0tFWVMuZGlzY2xhaW1lckFjY2VwdGVkXSB8fFxuICAgICAgb3duZXIuZGlzY2xhaW1lcl9hY2NlcHRlZDtcbiAgfVxuXG4gIGV4dHJhUXVlc3Rpb25zLmZvckVhY2goKHEpID0+IHtcbiAgICBjb25zdCBxdWVzdGlvblNsdWcgPSB0b1NsdWcocS5uYW1lLCBxLmlkKTtcbiAgICBjb25zdCBhbnN3ZXIgPSBhbnN3ZXJzW3F1ZXN0aW9uU2x1Z107XG4gICAgaW5pdGlhbFZhbHVlc1txdWVzdGlvblNsdWddID0gYW5zd2VyIHx8IGdldFR5cGVJbml0aWFsVmFsdWUocSk7XG5cbiAgICBwYXJzZVN1YlF1ZXN0aW9uQW5zd2VyKHEsIGFuc3dlcnMsIGFuc3dlciwgaW5pdGlhbFZhbHVlcywgb25seVJlbGV2YW50KTtcbiAgfSk7XG5cbiAgcmV0dXJuIGluaXRpYWxWYWx1ZXM7XG59O1xuXG5jb25zdCBidWlsZFN1YlF1ZXN0aW9uVmFsaWRhdGlvblNjaGVtYSA9IChxdWVzdGlvblNsdWcsIHJ1bGUsIHNjaGVtYSkgPT4ge1xuICBjb25zdCBzdWJRdWVzdGlvbiA9IHJ1bGUuc3ViX3F1ZXN0aW9uO1xuICBjb25zdCBzdWJRdWVzdGlvblNsdWcgPSB0b1NsdWcoc3ViUXVlc3Rpb24ubmFtZSwgc3ViUXVlc3Rpb24uaWQpO1xuXG4gIHNjaGVtYVtzdWJRdWVzdGlvblNsdWddID0gZ2V0VHlwZVZhbGlkYXRpb24oXG4gICAgc3ViUXVlc3Rpb24udHlwZSxcbiAgICBzdWJRdWVzdGlvbi5uYW1lLFxuICAgIGZhbHNlXG4gIClcbiAgICAubnVsbGFibGUoKVxuICAgIC53aGVuKHF1ZXN0aW9uU2x1Zywge1xuICAgICAgaXM6IChxdWVzdGlvbkFucykgPT4ge1xuICAgICAgICBjb25zdCBhbnNWYWx1ZU1hdGNoID0gY2hlY2tJZlZhbHVlTWF0Y2goXG4gICAgICAgICAgcXVlc3Rpb25BbnMsXG4gICAgICAgICAgcnVsZS5hbnN3ZXJfdmFsdWVzXG4gICAgICAgICk7XG4gICAgICAgIC8vIGNoZWNrIGlmIHF1ZXN0aW9uIGlzIHZpc2libGUgdG8gYWRkIHZhbGlkYXRpb25cbiAgICAgICAgY29uc3QgaXNWaXNpYmxlID0gISFkb2N1bWVudC5nZXRFbGVtZW50QnlJZChcbiAgICAgICAgICBgJHtxdWVzdGlvblNsdWd9X2NvbnRhaW5lcmBcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIGFuc1ZhbHVlTWF0Y2ggJiYgaXNWaXNpYmxlO1xuICAgICAgfSxcbiAgICAgIHRoZW46IChzY2gpID0+IHtcbiAgICAgICAgaWYgKHN1YlF1ZXN0aW9uLnR5cGUgPT09IFF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QpIHtcbiAgICAgICAgICByZXR1cm4gc2NoXG4gICAgICAgICAgICAubWluKE1JTl9SRVFVSVJFRCwgaTE4bi50KFwidmFsaWRhdGlvbi5yZXF1aXJlZF9xdWVzdGlvblwiKSlcbiAgICAgICAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX3F1ZXN0aW9uXCIpKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2NoLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24ucmVxdWlyZWRfcXVlc3Rpb25cIikpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIGlmIChzdWJRdWVzdGlvbi5zdWJfcXVlc3Rpb25fcnVsZXM/Lmxlbmd0aCA+IDApIHtcbiAgICBzdWJRdWVzdGlvbi5zdWJfcXVlc3Rpb25fcnVsZXMuZm9yRWFjaCgoc3ViUnVsZSkgPT4ge1xuICAgICAgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEoc3ViUXVlc3Rpb25TbHVnLCBzdWJSdWxlLCBzY2hlbWEpO1xuICAgIH0pO1xuICB9XG59O1xuXG5leHBvcnQgY29uc3QgYnVpbGRWYWxpZGF0aW9uU2NoZW1hID0gKFxuICBleHRyYVF1ZXN0aW9ucyxcbiAgaW5jbHVkZUF0dGVuZGVlSW5mbyxcbiAgZGlzY2xhaW1lck1hbmRhdG9yeVxuKSA9PiB7XG4gIGNvbnN0IHNjaGVtYSA9IHt9O1xuXG4gIGlmIChpbmNsdWRlQXR0ZW5kZWVJbmZvKSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmVtYWlsXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnN0cmluZ1wiKSlcbiAgICAgIC5lbWFpbChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLmZvcm1hdFwiKSlcbiAgICAgIC5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmVtYWlsLnJlcXVpcmVkXCIpKTtcbiAgICBzY2hlbWFbVElDS0VUX0FUVEVOREVFX0tFWVMuZmlyc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmZpcnN0X25hbWUuc3RyaW5nXCIpKVxuICAgICAgLnJlcXVpcmVkKGkxOG4udChcInZhbGlkYXRpb24uZmlyc3RfbmFtZS5yZXF1aXJlZFwiKSk7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmxhc3ROYW1lXSA9IHl1cFxuICAgICAgLnN0cmluZyhpMThuLnQoXCJ2YWxpZGF0aW9uLmxhc3RfbmFtZS5zdHJpbmdcIikpXG4gICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5sYXN0X25hbWUucmVxdWlyZWRcIikpO1xuICAgIHNjaGVtYVtUSUNLRVRfQVRURU5ERUVfS0VZUy5jb21wYW55XSA9IHl1cC5sYXp5KCh2YWx1ZSkgPT5cbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIlxuICAgICAgICA/IHl1cFxuICAgICAgICAgICAgLm9iamVjdCgpXG4gICAgICAgICAgICAucmVxdWlyZWQoaTE4bi50KFwidmFsaWRhdGlvbi5jb21wYW55LnJlcXVpcmVkXCIpKVxuICAgICAgICAgICAgLnR5cGVFcnJvcihpMThuLnQoXCJ2YWxpZGF0aW9uLnJlcXVpcmVkX2ZpZWxkXCIpKVxuICAgICAgICA6IHl1cC5zdHJpbmcoKS5yZXF1aXJlZChpMThuLnQoXCJ2YWxpZGF0aW9uLmNvbXBhbnkucmVxdWlyZWRcIikpXG4gICAgKTtcbiAgfVxuXG4gIGlmIChkaXNjbGFpbWVyTWFuZGF0b3J5KSB7XG4gICAgc2NoZW1hW1RJQ0tFVF9BVFRFTkRFRV9LRVlTLmRpc2NsYWltZXJBY2NlcHRlZF0gPSB5dXBcbiAgICAgIC5ib29sKClcbiAgICAgIC5vbmVPZihbdHJ1ZV0sIGkxOG4udChcInZhbGlkYXRpb24uY2hlY2tib3gucmVxdWlyZWRcIikpO1xuICB9XG5cbiAgZXh0cmFRdWVzdGlvbnMuZm9yRWFjaCgocSkgPT4ge1xuICAgIGNvbnN0IHsgaWQsIG5hbWUsIHR5cGUsIG1hbmRhdG9yeSwgc3ViX3F1ZXN0aW9uX3J1bGVzIH0gPSBxO1xuICAgIGNvbnN0IHF1ZXN0aW9uU2x1ZyA9IHRvU2x1ZyhuYW1lLCBpZCk7XG4gICAgc2NoZW1hW3F1ZXN0aW9uU2x1Z10gPSBnZXRUeXBlVmFsaWRhdGlvbih0eXBlLCBuYW1lLCBtYW5kYXRvcnkpO1xuXG4gICAgaWYgKHN1Yl9xdWVzdGlvbl9ydWxlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgc3ViX3F1ZXN0aW9uX3J1bGVzLmZvckVhY2goKHJ1bGUpID0+IHtcbiAgICAgICAgYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEocXVlc3Rpb25TbHVnLCBydWxlLCBzY2hlbWEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4geXVwLm9iamVjdChzY2hlbWEpO1xufTtcblxuZXhwb3J0IGNvbnN0IHVwZGF0ZVRpY2tldENvbGxlY3Rpb24gPSAodGlja2V0cywgdGlja2V0KSA9PlxuICB0aWNrZXRzLm1hcCgodCkgPT4ge1xuICAgIGNvbnN0IHRtcFRpY2tldCA9IHsgLi4udCB9O1xuICAgIC8vIHVwZGF0ZSBhdHRlbmRlZVxuICAgIGlmIChcbiAgICAgIHQub3duZXI/LmlkID09PSB0aWNrZXQub3duZXI/LmlkICYmXG4gICAgICB0Lm93bmVyPy5zdGF0dXMgIT09IHRpY2tldC5vd25lcj8uc3RhdHVzXG4gICAgKSB7XG4gICAgICB0bXBUaWNrZXQub3duZXIgPSB0aWNrZXQub3duZXI7XG4gICAgfVxuICAgIHJldHVybiB0LmlkID09PSB0aWNrZXQuaWQgPyB0aWNrZXQgOiB0bXBUaWNrZXQ7XG4gIH0pO1xuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNvcHlJY29uX19fbEkzZVFcIjtcbnZhciBfMiA9IFwicmV2ZXJzZWRfX196SnptRFwiO1xudmFyIF8zID0gXCJ0cnVuY2F0ZWRfX19qV1NuVVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fbVZQaVJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY29weUljb25cIiwgXzIgYXMgXCJyZXZlcnNlZFwiLCBfMyBhcyBcInRydW5jYXRlZFwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZV9fX214RUtXXCI7XG52YXIgXzIgPSBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lcl9fX080c1NzXCI7XG52YXIgXzMgPSBcImNhbGVuZGFyRGlzcGxheV9fX0YzbnVLXCI7XG52YXIgXzQgPSBcImNsZWFuQnV0dG9uX19fcXFEdlVcIjtcbnZhciBfNSA9IFwiY29udGFpbmVyX19fUWVRWV9cIjtcbnZhciBfNiA9IFwiZGF0ZVBpY2tlckNvbnRhaW5lcl9fX1o0Mm13XCI7XG52YXIgXzcgPSBcImRhdGVwaWNrZXJDbG9zZV9fX1RaN2tKXCI7XG52YXIgXzggPSBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyX19fa1VuVzlcIjtcbnZhciBfOSA9IFwiZmlsdGVyQ29udGFpbmVyX19fcnJxcDlcIjtcbnZhciBfYSA9IFwiZmlsdGVyRGF0ZUxhYmVsX19fSmdiY3NcIjtcbnZhciBfYiA9IFwiZmlsdGVySWNvbl9fX2lpT3pvXCI7XG52YXIgX2MgPSBcImZpbHRlckxhYmVsX19fc2taUDdcIjtcbnZhciBfZCA9IFwiZmlsdGVyTGlzdENvbnRhaW5lcl9fX0lEcmxTXCI7XG52YXIgX2UgPSBcImZpbHRlck51bUFjdGl2ZV9fX2ttRUVLXCI7XG52YXIgX2YgPSBcImZpbHRlclNvcnRDb250YWluZXJfX19uaE5Kc1wiO1xudmFyIF8xMCA9IFwibGFiZWxfX19MQW1lX1wiO1xudmFyIF8xMSA9IFwic2hvd0ZpbHRlckxpc3RfX19JVzR4R1wiO1xudmFyIF8xMiA9IFwic29ydENvbnRhaW5lcl9fX3NiNUJkXCI7XG52YXIgXzEzID0gXCJzb3J0SWNvbl9fX2NfWFppXCI7XG52YXIgXzE0ID0gXCJzb3J0TGFiZWxfX19kWGlNeVwiO1xudmFyIF8xNSA9IFwic29ydExpc3RDb250YWluZXJfX19QcDJYZ1wiO1xudmFyIF8xNiA9IFwidGl0bGVXcmFwcGVyX19fUDZtUHVcIjtcbmV4cG9ydCB7IF8xIGFzIFwiTXVpT3V0bGluZWRJbnB1dC1ub3RjaGVkT3V0bGluZVwiLCBfMiBhcyBcIk11aVBpY2tlcnNDYWxlbmRhckhlYWRlci1sYWJlbENvbnRhaW5lclwiLCBfMyBhcyBcImNhbGVuZGFyRGlzcGxheVwiLCBfNCBhcyBcImNsZWFuQnV0dG9uXCIsIF81IGFzIFwiY29udGFpbmVyXCIsIF82IGFzIFwiZGF0ZVBpY2tlckNvbnRhaW5lclwiLCBfNyBhcyBcImRhdGVwaWNrZXJDbG9zZVwiLCBfOCBhcyBcImZpbHRlckNoZWNrYm94Q29udGFpbmVyXCIsIF85IGFzIFwiZmlsdGVyQ29udGFpbmVyXCIsIF9hIGFzIFwiZmlsdGVyRGF0ZUxhYmVsXCIsIF9iIGFzIFwiZmlsdGVySWNvblwiLCBfYyBhcyBcImZpbHRlckxhYmVsXCIsIF9kIGFzIFwiZmlsdGVyTGlzdENvbnRhaW5lclwiLCBfZSBhcyBcImZpbHRlck51bUFjdGl2ZVwiLCBfZiBhcyBcImZpbHRlclNvcnRDb250YWluZXJcIiwgXzEwIGFzIFwibGFiZWxcIiwgXzExIGFzIFwic2hvd0ZpbHRlckxpc3RcIiwgXzEyIGFzIFwic29ydENvbnRhaW5lclwiLCBfMTMgYXMgXCJzb3J0SWNvblwiLCBfMTQgYXMgXCJzb3J0TGFiZWxcIiwgXzE1IGFzIFwic29ydExpc3RDb250YWluZXJcIiwgXzE2IGFzIFwidGl0bGVXcmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNhbmNlbEJ0bl9fX3FEZXhoXCI7XG52YXIgXzIgPSBcImZvb3Rlcl9fX1NONzB5XCI7XG52YXIgXzMgPSBcInNhdmVCdG5fX19uYlU2Y1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJjYW5jZWxCdG5cIiwgXzIgYXMgXCJmb290ZXJcIiwgXzMgYXMgXCJzYXZlQnRuXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImVycm9yTGFiZWxfX19ub2N5WFwiO1xuZXhwb3J0IHsgXzEgYXMgXCJlcnJvckxhYmVsXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm15T3JkZXJzV3JhcHBlcl9fX0hKbXlzXCI7XG52YXIgXzIgPSBcIm5vT3JkZXJzRm91bmRfX19EUndnb1wiO1xudmFyIF8zID0gXCJub09yZGVyc0ljb25XcmFwcGVyX19fdFBUbVlcIjtcbmV4cG9ydCB7IF8xIGFzIFwibXlPcmRlcnNXcmFwcGVyXCIsIF8yIGFzIFwibm9PcmRlcnNGb3VuZFwiLCBfMyBhcyBcIm5vT3JkZXJzSWNvbldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYm9keV9fX0FXZGlMXCI7XG52YXIgXzIgPSBcImljb25XcmFwcGVyX19fbXpldktcIjtcbnZhciBfMyA9IFwidGl0bGVfX19NMjQybVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUXN3Q1BcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYm9keVwiLCBfMiBhcyBcImljb25XcmFwcGVyXCIsIF8zIGFzIFwidGl0bGVcIiwgXzQgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcIm9yZGVyRGV0YWlsc01tb3VudF9fX3Iza1JBXCI7XG52YXIgXzIgPSBcIm9yZGVyRGV0YWlsc1RpY2tldHNfX19tNElqS1wiO1xudmFyIF8zID0gXCJvcmRlclN1bW1hcnlCdXR0b25fX191eGpodFwiO1xudmFyIF80ID0gXCJvcmRlclN1bW1hcnlQdXJjaGFzZWRJbmZvX19fX1JCWEVcIjtcbnZhciBfNSA9IFwib3JkZXJTdW1tYXJ5VGFibGVfX19ZRG54VlwiO1xudmFyIF82ID0gXCJvcmRlclN1bW1hcnlXcmFwcGVyX19fUndJRVJcIjtcbnZhciBfNyA9IFwicmVmdW5kRGlzYWJsZWRfX19qdnJrM1wiO1xuZXhwb3J0IHsgXzEgYXMgXCJvcmRlckRldGFpbHNNbW91bnRcIiwgXzIgYXMgXCJvcmRlckRldGFpbHNUaWNrZXRzXCIsIF8zIGFzIFwib3JkZXJTdW1tYXJ5QnV0dG9uXCIsIF80IGFzIFwib3JkZXJTdW1tYXJ5UHVyY2hhc2VkSW5mb1wiLCBfNSBhcyBcIm9yZGVyU3VtbWFyeVRhYmxlXCIsIF82IGFzIFwib3JkZXJTdW1tYXJ5V3JhcHBlclwiLCBfNyBhcyBcInJlZnVuZERpc2FibGVkXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFzc2lnblRpY2tldEJ1dHRvbl9fX3p6THNjXCI7XG52YXIgXzIgPSBcImFzc2lnblRvTWVUZXh0X19fWlBhZXhcIjtcbnZhciBfMyA9IFwiYXNzaWduZWRCeVRleHRfX19iTlo3elwiO1xudmFyIF80ID0gXCJhc3NpZ25lZFRvTWVEZXNfX19HakZrVlwiO1xudmFyIF81ID0gXCJhc3NpZ25lZFRvTWVXcmFwcGVyX19fVXhjMnlcIjtcbnZhciBfNiA9IFwiYmFkZ2VGZWF0dXJlX19fQTJMTVZcIjtcbnZhciBfNyA9IFwiYmFkZ2VGZWF0dXJlV3JhcHBlcl9fX0lRTE5QXCI7XG52YXIgXzggPSBcImNoZWNrYm94X19fWFpKcGJcIjtcbnZhciBfOSA9IFwiZGlzYWJsZWRSZWZ1bmRfX19TZmZsN1wiO1xudmFyIF9hID0gXCJkaXNwbGF5X25vbmVfX19DcXBMM1wiO1xudmFyIF9iID0gXCJsYWJlbF9fX3pYRFd6XCI7XG52YXIgX2MgPSBcIm9yZGVyVGlja2V0Q29udGFpbmVyX19fWkpMemtcIjtcbnZhciBfZCA9IFwib3JkZXJUaWNrZXRJbmZvX19fZ2VtcUJcIjtcbnZhciBfZSA9IFwib3JkZXJUaWNrZXRJbmZvQ29udGFpbmVyX19fX3A2NlZcIjtcbnZhciBfZiA9IFwib3JkZXJXcmFwcGVyX19feURCQW9cIjtcbnZhciBfMTAgPSBcInJlYXNzaWduQnV0dG9uX19fUm9qTTVcIjtcbnZhciBfMTEgPSBcInJlZnVuZEJ1dHRvbnNfX19qRGw0SFwiO1xudmFyIF8xMiA9IFwicmVmdW5kTW9kYWxfX19FcWdQRlwiO1xudmFyIF8xMyA9IFwic2VsZWN0ZWRfX19IV0dOY1wiO1xudmFyIF8xNCA9IFwidGFiQnV0dG9uc19fX3hUeUpBXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXRBY3Rpb25CdXR0b25zX19fcnBTTVFcIjtcbnZhciBfMTYgPSBcInRpY2tldEZvb3Rlcl9fX2ozYmRpXCI7XG52YXIgXzE3ID0gXCJ0aWNrZXRMaXN0Q29udGFpbmVyX19fY2ZtcnJcIjtcbnZhciBfMTggPSBcInRpY2tldE5vX19fYTJpTTlcIjtcbnZhciBfMTkgPSBcInRpY2tldE93bmVyRW1haWxfX19adDRPRVwiO1xudmFyIF8xYSA9IFwidGlja2V0VGlja2V0VHlwZV9fX1pxX2YwXCI7XG52YXIgXzFiID0gXCJ2aWV3RmluaXNoVGlja2V0QnV0dG9uX19fSEY2SW1cIjtcbnZhciBfMWMgPSBcInZpZXdNb3JlQnV0dG9uX19fS18xelRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYXNzaWduVGlja2V0QnV0dG9uXCIsIF8yIGFzIFwiYXNzaWduVG9NZVRleHRcIiwgXzMgYXMgXCJhc3NpZ25lZEJ5VGV4dFwiLCBfNCBhcyBcImFzc2lnbmVkVG9NZURlc1wiLCBfNSBhcyBcImFzc2lnbmVkVG9NZVdyYXBwZXJcIiwgXzYgYXMgXCJiYWRnZUZlYXR1cmVcIiwgXzcgYXMgXCJiYWRnZUZlYXR1cmVXcmFwcGVyXCIsIF84IGFzIFwiY2hlY2tib3hcIiwgXzkgYXMgXCJkaXNhYmxlZFJlZnVuZFwiLCBfYSBhcyBcImRpc3BsYXlfbm9uZVwiLCBfYiBhcyBcImxhYmVsXCIsIF9jIGFzIFwib3JkZXJUaWNrZXRDb250YWluZXJcIiwgX2QgYXMgXCJvcmRlclRpY2tldEluZm9cIiwgX2UgYXMgXCJvcmRlclRpY2tldEluZm9Db250YWluZXJcIiwgX2YgYXMgXCJvcmRlcldyYXBwZXJcIiwgXzEwIGFzIFwicmVhc3NpZ25CdXR0b25cIiwgXzExIGFzIFwicmVmdW5kQnV0dG9uc1wiLCBfMTIgYXMgXCJyZWZ1bmRNb2RhbFwiLCBfMTMgYXMgXCJzZWxlY3RlZFwiLCBfMTQgYXMgXCJ0YWJCdXR0b25zXCIsIF8xNSBhcyBcInRpY2tldEFjdGlvbkJ1dHRvbnNcIiwgXzE2IGFzIFwidGlja2V0Rm9vdGVyXCIsIF8xNyBhcyBcInRpY2tldExpc3RDb250YWluZXJcIiwgXzE4IGFzIFwidGlja2V0Tm9cIiwgXzE5IGFzIFwidGlja2V0T3duZXJFbWFpbFwiLCBfMWEgYXMgXCJ0aWNrZXRUaWNrZXRUeXBlXCIsIF8xYiBhcyBcInZpZXdGaW5pc2hUaWNrZXRCdXR0b25cIiwgXzFjIGFzIFwidmlld01vcmVCdXR0b25cIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiQ1RBQnV0dG9uV3JhcHBlcl9fX0tncTZnXCI7XG52YXIgXzIgPSBcImFjdGlvbkJ1dHRvbnNfX191N21QU1wiO1xudmFyIF8zID0gXCJhcHByb3ZlZF9fX3N4RUpXXCI7XG52YXIgXzQgPSBcImJhZGdlRmVhdHVyZV9fX3RMaEVwXCI7XG52YXIgXzUgPSBcImJhZGdlRmVhdHVyZVdyYXBwZXJfX19fOUdiRFwiO1xudmFyIF82ID0gXCJidXR0b25QaWxsX19fTGVzYXpcIjtcbnZhciBfNyA9IFwiY2FuY2VsQnV0dG9uX19feWZoWWJcIjtcbnZhciBfOCA9IFwiY29udGludWVCdXR0b25fX19OeVgzc1wiO1xudmFyIF85ID0gXCJkZWxldGVJY29uX19fRlN3eWVcIjtcbnZhciBfYSA9IFwicGVuZGluZ19fX2FFYld3XCI7XG52YXIgX2IgPSBcInJlZnVuZERldGFpbF9fX2NRMjhWXCI7XG52YXIgX2MgPSBcInJlZnVuZEVycm9yTXNnX19fQWFoenJcIjtcbnZhciBfZCA9IFwicmVmdW5kU3VjY2Vzc2Z1bF9fX3pyRFFZXCI7XG52YXIgX2UgPSBcInJlZnVuZFRleHRfX19hRW5MOVwiO1xudmFyIF9mID0gXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZV9fX1FYQ2pNXCI7XG52YXIgXzEwID0gXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJfX195YTYxM1wiO1xudmFyIF8xMSA9IFwicmVqZWN0ZWRfX19OSkU0WlwiO1xudmFyIF8xMiA9IFwic3VidGl0bGVfX19QdERlMlwiO1xudmFyIF8xMyA9IFwic3VjY2Vzc01zZ19fX0h0TXNlXCI7XG52YXIgXzE0ID0gXCJzdWNjZXNzTXNnMl9fX1E2em5hXCI7XG52YXIgXzE1ID0gXCJ0aWNrZXRMaXN0X19fZURRUjNcIjtcbnZhciBfMTYgPSBcInRpY2tldE5vX19fX0VBRDRcIjtcbmV4cG9ydCB7IF8xIGFzIFwiQ1RBQnV0dG9uV3JhcHBlclwiLCBfMiBhcyBcImFjdGlvbkJ1dHRvbnNcIiwgXzMgYXMgXCJhcHByb3ZlZFwiLCBfNCBhcyBcImJhZGdlRmVhdHVyZVwiLCBfNSBhcyBcImJhZGdlRmVhdHVyZVdyYXBwZXJcIiwgXzYgYXMgXCJidXR0b25QaWxsXCIsIF83IGFzIFwiY2FuY2VsQnV0dG9uXCIsIF84IGFzIFwiY29udGludWVCdXR0b25cIiwgXzkgYXMgXCJkZWxldGVJY29uXCIsIF9hIGFzIFwicGVuZGluZ1wiLCBfYiBhcyBcInJlZnVuZERldGFpbFwiLCBfYyBhcyBcInJlZnVuZEVycm9yTXNnXCIsIF9kIGFzIFwicmVmdW5kU3VjY2Vzc2Z1bFwiLCBfZSBhcyBcInJlZnVuZFRleHRcIiwgX2YgYXMgXCJyZWZ1bmRUaWNrZXRBdHRlbmRlZVwiLCBfMTAgYXMgXCJyZWZ1bmRUaWNrZXRCb3hDb250YWluZXJcIiwgXzExIGFzIFwicmVqZWN0ZWRcIiwgXzEyIGFzIFwic3VidGl0bGVcIiwgXzEzIGFzIFwic3VjY2Vzc01zZ1wiLCBfMTQgYXMgXCJzdWNjZXNzTXNnMlwiLCBfMTUgYXMgXCJ0aWNrZXRMaXN0XCIsIF8xNiBhcyBcInRpY2tldE5vXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImNsb3NlQnRuX19feVNRQ09cIjtcbnZhciBfMiA9IFwiaGVhZGVyX19fZkJYRzlcIjtcbnZhciBfMyA9IFwidGl0bGVfX190eVplUVwiO1xudmFyIF80ID0gXCJ3cmFwcGVyX19fUk9KR3NcIjtcbmV4cG9ydCB7IF8xIGFzIFwiY2xvc2VCdG5cIiwgXzIgYXMgXCJoZWFkZXJcIiwgXzMgYXMgXCJ0aXRsZVwiLCBfNCBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwic3VtbWl0VGl0bGVEYXRlX19fWG5ycEZcIjtcbnZhciBfMiA9IFwid2lkZ2V0SGVhZGVyX19fZ2dMdE1cIjtcbmV4cG9ydCB7IF8xIGFzIFwic3VtbWl0VGl0bGVEYXRlXCIsIF8yIGFzIFwid2lkZ2V0SGVhZGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInVuYXNzaWduQnRuX19faTdtZ3lcIjtcbnZhciBfMiA9IFwidW5hc3NpZ25XcmFwcGVyX19fZzNlMnVcIjtcbnZhciBfMyA9IFwid3JhcHBlcl9fX1c5NFNMXCI7XG5leHBvcnQgeyBfMSBhcyBcInVuYXNzaWduQnRuXCIsIF8yIGFzIFwidW5hc3NpZ25XcmFwcGVyXCIsIF8zIGFzIFwid3JhcHBlclwiIH1cbiIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxudmFyIF8xID0gXCJoZWFkZXJOb3RlX19fQWU1RUFcIjtcbnZhciBfMiA9IFwib3JkZXJOb19fX1ZPUFJ3XCI7XG52YXIgXzMgPSBcInB1cmNoYXNlZEJ5X19fTU5pSFRcIjtcbnZhciBfNCA9IFwicHVyY2hhc2VkQnlXcmFwcGVyX19fRGg2SFVcIjtcbnZhciBfNSA9IFwid3JhcHBlcl9fX21WdWlaXCI7XG5leHBvcnQgeyBfMSBhcyBcImhlYWRlck5vdGVcIiwgXzIgYXMgXCJvcmRlck5vXCIsIF8zIGFzIFwicHVyY2hhc2VkQnlcIiwgXzQgYXMgXCJwdXJjaGFzZWRCeVdyYXBwZXJcIiwgXzUgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcInRpY2tldFJlYXNzaWduQ29udGFpbmVyX19fZ090YUpcIjtcbmV4cG9ydCB7IF8xIGFzIFwidGlja2V0UmVhc3NpZ25Db250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwid3JhcHBlcl9fX0V3T1J6XCI7XG5leHBvcnQgeyBfMSBhcyBcIndyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiaW5mb05vdGVfX19pMVhZOVwiO1xudmFyIF8yID0gXCJ3cmFwcGVyX19fTUF1TlNcIjtcbmV4cG9ydCB7IF8xIGFzIFwiaW5mb05vdGVcIiwgXzIgYXMgXCJ3cmFwcGVyXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImFjdGlvbkJ1dHRvbnNDb250YWluZXJfX19BdXZyblwiO1xudmFyIF8yID0gXCJhZGRpdGlvbmFsRGV0YWlsc19fX21QMWlKXCI7XG52YXIgXzMgPSBcImF0dGVuZGVlQ29udGFpbmVyX19fUTBWVXpcIjtcbnZhciBfNCA9IFwiYXR0ZW5kZWVJbmZvVGl0bGVfX19MbXJtNFwiO1xudmFyIF81ID0gXCJjbG9zZUJ0bl9fX1dOSmxFXCI7XG52YXIgXzYgPSBcImNvcHlCdG5fX19fdXRBNlwiO1xudmFyIF83ID0gXCJkZWxlZ2F0ZWRUb19fX1NHVlFJXCI7XG52YXIgXzggPSBcImRvd25sb2FkQnRuX19fcWpZaHpcIjtcbnZhciBfOSA9IFwiaGVhZGVyX19fQXVnbnpcIjtcbnZhciBfYSA9IFwib3JkZXJOdW1iZXJfX19MNVE1YVwiO1xudmFyIF9iID0gXCJxckNvZGVfX19md3FacVwiO1xudmFyIF9jID0gXCJxck5vdGVfX19HYzdLblwiO1xudmFyIF9kID0gXCJzZW5kQnRuX19fa29XTTJcIjtcbnZhciBfZSA9IFwic2VudF9fX2s2V0t4XCI7XG52YXIgX2YgPSBcInN0YXR1c19fX2t3Qzh5XCI7XG52YXIgXzEwID0gXCJzdWJ0aXRsZV9fX3lfTnVPXCI7XG52YXIgXzExID0gXCJ0aWNrZXREZXRhaWxDb250YWluZXJfX19iMlRMUlwiO1xudmFyIF8xMiA9IFwidGl0bGVfX193UXpVTlwiO1xuZXhwb3J0IHsgXzEgYXMgXCJhY3Rpb25CdXR0b25zQ29udGFpbmVyXCIsIF8yIGFzIFwiYWRkaXRpb25hbERldGFpbHNcIiwgXzMgYXMgXCJhdHRlbmRlZUNvbnRhaW5lclwiLCBfNCBhcyBcImF0dGVuZGVlSW5mb1RpdGxlXCIsIF81IGFzIFwiY2xvc2VCdG5cIiwgXzYgYXMgXCJjb3B5QnRuXCIsIF83IGFzIFwiZGVsZWdhdGVkVG9cIiwgXzggYXMgXCJkb3dubG9hZEJ0blwiLCBfOSBhcyBcImhlYWRlclwiLCBfYSBhcyBcIm9yZGVyTnVtYmVyXCIsIF9iIGFzIFwicXJDb2RlXCIsIF9jIGFzIFwicXJOb3RlXCIsIF9kIGFzIFwic2VuZEJ0blwiLCBfZSBhcyBcInNlbnRcIiwgX2YgYXMgXCJzdGF0dXNcIiwgXzEwIGFzIFwic3VidGl0bGVcIiwgXzExIGFzIFwidGlja2V0RGV0YWlsQ29udGFpbmVyXCIsIF8xMiBhcyBcInRpdGxlXCIgfVxuIiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG52YXIgXzEgPSBcImJ1dHRvbkNhbmNlbGxlZF9fX0VybERaXCI7XG52YXIgXzIgPSBcImJ1dHRvbkNvbXBsZXRlX19fbGxXa1pcIjtcbnZhciBfMyA9IFwiYnV0dG9uSW5jb21wbGV0ZV9fX1RvbEhnXCI7XG52YXIgXzQgPSBcImJ1dHRvblBpbGxfX196cTJ0Y1wiO1xudmFyIF81ID0gXCJidXR0b25SZWZ1bmRSZXF1ZXN0ZWRfX19wV3QzMFwiO1xudmFyIF82ID0gXCJidXR0b25VbmFzc2lnbmVkX19fWURkOFhcIjtcbnZhciBfNyA9IFwidGlja2V0U3RhdHVzQ29udGFpbmVyX19fcWo2ZmJcIjtcbmV4cG9ydCB7IF8xIGFzIFwiYnV0dG9uQ2FuY2VsbGVkXCIsIF8yIGFzIFwiYnV0dG9uQ29tcGxldGVcIiwgXzMgYXMgXCJidXR0b25JbmNvbXBsZXRlXCIsIF80IGFzIFwiYnV0dG9uUGlsbFwiLCBfNSBhcyBcImJ1dHRvblJlZnVuZFJlcXVlc3RlZFwiLCBfNiBhcyBcImJ1dHRvblVuYXNzaWduZWRcIiwgXzcgYXMgXCJ0aWNrZXRTdGF0dXNDb250YWluZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwiYWN0aXZlX19fdEx5V1pcIjtcbnZhciBfMiA9IFwidGFiT3B0aW9uX19fSDRIMXVcIjtcbnZhciBfMyA9IFwidGFiV3JhcHBlcl9fX3UyMXNHXCI7XG5leHBvcnQgeyBfMSBhcyBcImFjdGl2ZVwiLCBfMiBhcyBcInRhYk9wdGlvblwiLCBfMyBhcyBcInRhYldyYXBwZXJcIiB9XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbnZhciBfMSA9IFwidGlja2V0c1RpdGxlVGV4dF9fX1REUG1wXCI7XG5leHBvcnQgeyBfMSBhcyBcInRpY2tldHNUaXRsZVRleHRcIiB9XG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvb2JqZWN0V2l0aG91dFByb3BlcnRpZXNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0NoZWNrQ2lyY2xlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvQ2xvc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9Db250ZW50Q29weVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0Vycm9yXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvRXhwYW5kTW9yZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL2ljb25zLW1hdGVyaWFsL0ZpbHRlckxpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbXBvcnRFeHBvcnRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9pY29ucy1tYXRlcmlhbC9JbmZvXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvaWNvbnMtbWF0ZXJpYWwvU2VhcmNoXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWxcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9CdXR0b25cIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9DaGVja2JveFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpYWxvZ0FjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dDb250ZW50XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvRGlhbG9nQ29udGVudFRleHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9EaWFsb2dUaXRsZVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL0RpdmlkZXJcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9JbnB1dEJhc2VcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9TdGFja1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYlwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAbXVpL21hdGVyaWFsL1RhYnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiQG11aS9tYXRlcmlhbC9Ub29sdGlwXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvc3R5bGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBtdWkvbWF0ZXJpYWwvdXNlTWVkaWFRdWVyeVwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJAcmVkdXhqcy90b29sa2l0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIkBzZW50cnkvcmVhY3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiZm9ybWlrXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcImkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaTE4bmV4dC1icm93c2VyLWxhbmd1YWdlZGV0ZWN0b3JcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwiaWR0b2tlbi12ZXJpZmllclwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJtb21lbnQtdGltZXpvbmVcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi9jb21wb25lbnRzL3Jhdy1odG1sXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvc2VjdXJpdHkvYWN0aW9uc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3NlY3VyaXR5L21ldGhvZHNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwib3BlbnN0YWNrLXVpY29yZS1mb3VuZGF0aW9uL2xpYi91dGlscy9hY3Rpb25zXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcIm9wZW5zdGFjay11aWNvcmUtZm91bmRhdGlvbi9saWIvdXRpbHMvbWV0aG9kc1wiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJvcGVuc3RhY2stdWljb3JlLWZvdW5kYXRpb24vbGliL3V0aWxzL3F1ZXJ5LWFjdGlvbnNcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicC1saW1pdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJwcm9wLXR5cGVzXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LWkxOG5leHRcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVhY3QtaW5maW5pdGUtc2Nyb2xsLWNvbXBvbmVudFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWFjdC1xci1jb2RlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0LXJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlYWN0L2pzeC1ydW50aW1lXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4XCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZHV4LXBlcnNpc3RcIik7IiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKFwicmVkdXgtcGVyc2lzdC9pbnRlZ3JhdGlvbi9yZWFjdFwiKTsiLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoXCJyZWR1eC1wZXJzaXN0L2xpYi9zdG9yYWdlXCIpOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInl1cFwiKTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAyNCBPcGVuU3RhY2sgRm91bmRhdGlvblxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICogaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICogKi9cbmltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIjtcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LXJlZHV4XCI7XG5pbXBvcnQgeyBQZXJzaXN0R2F0ZSB9IGZyb20gXCJyZWR1eC1wZXJzaXN0L2ludGVncmF0aW9uL3JlYWN0XCI7XG5pbXBvcnQgeyBTdHlsZWRFbmdpbmVQcm92aWRlciB9IGZyb20gXCJAbXVpL21hdGVyaWFsXCI7XG5pbXBvcnQgeyB1c2VJbml0U3RvcmUgfSBmcm9tIFwiLi9zdG9yZVwiO1xuaW1wb3J0IHsgUkVTRVRfU1RBVEUsIHNldFJlZHVjZXJTdGF0ZSB9IGZyb20gXCIuL2FjdGlvbnNcIjtcblxuaW1wb3J0IFdpZGdldFdyYXBwZXIgZnJvbSBcIi4vY29tcG9uZW50cy9XaWRnZXRXcmFwcGVyXCI7XG5cbmNvbnN0IE15T3JkZXJzTXlUaWNrZXRzV2lkZ2V0ID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBsb2dpblVybCxcbiAgICBzdXBwb3J0RW1haWwsXG4gICAgc3VtbWl0LFxuICAgIGFwaUJhc2VVcmwsXG4gICAgdXNlcixcbiAgICBjbGllbnRJZCxcbiAgICB1cGRhdGVQcm9maWxlXG4gIH0gPSBwcm9wcztcblxuICBjb25zdCB7IHN0b3JlLCBwZXJzaXN0b3IgfSA9IHVzZUluaXRTdG9yZSh7XG4gICAgbG9naW5VcmwsXG4gICAgc3VwcG9ydEVtYWlsLFxuICAgIHN1bW1pdCxcbiAgICB1c2VyLFxuICAgIGFwaUJhc2VVcmwsXG4gICAgY2xpZW50SWQsXG4gICAgdXBkYXRlUHJvZmlsZVxuICB9KTtcblxuICBjb25zdCBoYW5kbGVCZWZvcmVMaWZ0ID0gKCkgPT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG4gICAgY29uc3QgZmx1c2ggPSBwYXJhbXMuaGFzKFwiZmx1c2hTdGF0ZVwiKTtcbiAgICBpZiAoZmx1c2gpIHN0b3JlLmRpc3BhdGNoKHsgdHlwZTogUkVTRVRfU1RBVEUsIHBheWxvYWQ6IG51bGwgfSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzdG9yZS5kaXNwYXRjaChzZXRSZWR1Y2VyU3RhdGUoc3VtbWl0LCB1c2VyKSk7XG4gIH0sIFtzdW1taXQsIHVzZXJdKTtcblxuICByZXR1cm4gKFxuICAgIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgICAgPFBlcnNpc3RHYXRlXG4gICAgICAgIG9uQmVmb3JlTGlmdD17aGFuZGxlQmVmb3JlTGlmdH1cbiAgICAgICAgbG9hZGluZz17bnVsbH1cbiAgICAgICAgcGVyc2lzdG9yPXtwZXJzaXN0b3J9XG4gICAgICA+XG4gICAgICAgIDxTdHlsZWRFbmdpbmVQcm92aWRlciBpbmplY3RGaXJzdD5cbiAgICAgICAgICA8V2lkZ2V0V3JhcHBlciAvPlxuICAgICAgICA8L1N0eWxlZEVuZ2luZVByb3ZpZGVyPlxuICAgICAgPC9QZXJzaXN0R2F0ZT5cbiAgICA8L1Byb3ZpZGVyPlxuICApO1xufTtcblxuTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQucHJvcFR5cGVzID0ge1xuICBsb2dpblVybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgc3VwcG9ydEVtYWlsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBzdW1taXQ6IFByb3BUeXBlcy5vYmplY3QsXG4gIGFwaUJhc2VVcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIHVzZXI6IFByb3BUeXBlcy5vYmplY3QsXG4gIGNsaWVudElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICB1cGRhdGVQcm9maWxlOiBQcm9wVHlwZXMuZnVuY1xufTtcblxuZXhwb3J0IGRlZmF1bHQgTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQ7XG4iXSwibmFtZXMiOlsiYXV0aEVycm9ySGFuZGxlciIsImNyZWF0ZUFjdGlvbiIsImRlbGV0ZVJlcXVlc3QiLCJnZXRSZXF1ZXN0IiwicHV0UmVxdWVzdCIsInN0YXJ0TG9hZGluZyIsInN0b3BMb2FkaW5nIiwicExpbWl0IiwiZ2V0SWRUb2tlbiIsIm9iamVjdFRvUXVlcnlTdHJpbmciLCJJZFRva2VuVmVyaWZpZXIiLCJpMThuIiwiYXV0aFByb21pc2VSZWplY3QiLCJnZXRBY2Nlc3NUb2tlblNhZmVseSIsIkRFRkFVTFRfSVRFTVNfUEVSX1BBR0UiLCJFUlJPUl9DT0RFUyIsIkZJRlRZX1BFUl9QQUdFIiwiRklSU1RfUEFHRSIsIlBST01JU0VfQkFUQ0hfTElNSVQiLCJUQUJTIiwiUkVTRVRfU1RBVEUiLCJSRVNFVF9GSUxURVIiLCJSRVNFVF9BUElfRVJST1IiLCJTRVRfU1RBVEUiLCJTRVRfQVBJX0VSUk9SIiwiQ0hBTkdFX0ZJTFRFUiIsIkNIQU5HRV9TT1JUIiwiR0VUX1VTRVJfT1JERVJTIiwiUkVGVU5EX09SREVSIiwiU0VUX0FDVElWRV9PUkRFUl9JRCIsIkZJTFRFUl9VU0VSX09SREVSUyIsIkdFVF9NWV9BU1NJR05FRF9USUNLRVRTIiwiVVBEQVRFX1RJQ0tFVCIsIlJFU0VUX1RJQ0tFVCIsIlJFQ0VJVkVfVElDS0VUIiwiUkVNT1ZFX1RJQ0tFVF9BVFRFTkRFRSIsIkFTU0lHTl9USUNLRVQiLCJERUxFR0FURV9USUNLRVQiLCJSRUZVTkRfVElDS0VUIiwiUkVTRU5EX05PVElGSUNBVElPTiIsIkdFVF9USUNLRVRTX0JZX09SREVSIiwiR0VUX1RJQ0tFVFNfQllfT1JERVJfRVJST1IiLCJHRVRfT1JERVJfVElDS0VUX0RFVEFJTFMiLCJHRVRfVElDS0VUX0RFVEFJTFMiLCJSRUNFSVZFX0VYVFJBX1FVRVNUSU9OUyIsIlRJQ0tFVF9BVFRFTkRFRV9LRVlTIiwiZW1haWwiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImNvbXBhbnkiLCJkaXNjbGFpbWVyQWNjZXB0ZWQiLCJleHRyYVF1ZXN0aW9ucyIsIlVQREFURV9USUNLRVRTX1JFRlVORF9SRVFVRVNURUQiLCJTVEFSVF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiU1RPUF9MT0FESU5HX0lEUF9QUk9GSUxFIiwiVVBEQVRFX0lEUF9QUk9GSUxFIiwiU0VUX1VTRVIiLCJTRVRfU1VNTUlUIiwiR0VUX01BSU5fRVhUUkFfUVVFU1RJT05TIiwiUkVDRUlWRV9NQVJLRVRJTkdfU0VUVElOR1MiLCJDTEVBUl9NQVJLRVRJTkdfU0VUVElOR1MiLCJyZXNldFRpY2tldCIsImRpc3BhdGNoIiwicmVzZXRTdGF0ZSIsInJlc2V0RmlsdGVyIiwicmVzZXRFcnJvciIsInNldFJlZHVjZXJTdGF0ZSIsInN1bW1pdCIsInVzZXIiLCJGSUxURVJfVkFSX0RBVEUiLCJGSUxURVJfVkFSX0JBREdFX0ZFQVRVUkUiLCJGSUxURVJfVkFSX1RJQ0tFVF9UWVBFIiwiRklMVEVSX1ZBUl9USUNLRVRfQVNTSUdORUQiLCJGSUxURVJfVkFSX09XTkVSX1NUQVRVUyIsIkZJTFRFUl9WQVJfUFJPTU9DT0RFIiwiRklMVEVSX1ZBUl9GUkVFX1BBSUQiLCJGSUxURVJfVkFSX09SREVSX05VTUJFUiIsImNoYW5nZUZpbHRlciIsImZpbHRlciIsImNoYW5nZVNvcnQiLCJzb3J0IiwicGFyc2VGaWx0ZXIiLCJmaWx0ZXJPYmoiLCJjdXJyZW50VGFiIiwicHVzaCIsImNvbmNhdCIsImxvd2VyIiwidXBwZXIiLCJsZW5ndGgiLCJmaWx0ZXJOYW1lIiwiT1JERVJTIiwiam9pbiIsImdldFNvcnREaXJlY3Rpb24iLCJkaXJlY3Rpb24iLCJlcnJvckhhbmRsZXJOb3RpZnkiLCJwYXlsb2FkIiwiY2FsbGJhY2siLCJjdXN0b21BdXRoRXJyb3JIYW5kbGVyIiwiZXJyIiwicmVzIiwiY3VzdG9tRmV0Y2hFcnJvckhhbmRsZXIiLCJyZXNwb25zZSIsImNvZGUiLCJzdGF0dXMiLCJtc2ciLCJ0IiwiT2JqZWN0IiwiZW50cmllcyIsImVycm9ycyIsImZvckVhY2giLCJfcmVmIiwia2V5IiwidmFsdWUiLCJOdW1iZXIiLCJpc05hTiIsInN0YXR1c1RleHQiLCJ0aXRsZSIsImh0bWwiLCJnZXRVc2VyT3JkZXJzIiwiX3JlZjIiLCJza2lwTG9hZGluZyIsInBhZ2UiLCJwZXJQYWdlIiwiZ2V0U3RhdGUiLCJfcmVmMyIsImFwaUJhc2VVcmwiLCJ3aWRnZXRTdGF0ZSIsImFjY2Vzc1Rva2VuIiwicGFyYW1zIiwiYWNjZXNzX3Rva2VuIiwib3JkZXIiLCJyZWxhdGlvbnMiLCJwZXJfcGFnZSIsImtleXMiLCJmaWx0ZXJzIiwibmFtZSIsImlkIiwidGhlbiIsImNhdGNoIiwiZSIsImZpbmFsbHkiLCJzZXRBY3RpdmVPcmRlcklkIiwib3JkZXJJZCIsInNldFVzZXIiLCJnZXRVc2VyVGlja2V0cyIsIl9yZWY0IiwiX3JlZjUiLCJ1c2VyUHJvZmlsZSIsIlByb21pc2UiLCJyZWplY3QiLCJmaWVsZHMiLCJleHBhbmQiLCJUSUNLRVRTIiwiZ2V0VGlja2V0c0J5T3JkZXIiLCJfcmVmNiIsIl9yZWY3IiwicmVzZW5kTm90aWZpY2F0aW9uIiwidGlja2V0IiwiX3JlZjgiLCJtZXNzYWdlIiwib3JkZXJfaWQiLCJyZWZ1bmRUaWNrZXQiLCJfcmVmOSIsIl9yZWYxMCIsInJlZnVuZEJ1bGtUaWNrZXRzIiwiX3JlZjExIiwidGlja2V0cyIsImxpbWl0IiwiYWxsUmVmdW5kVGlja2V0Q2FsbHMiLCJtYXAiLCJhbGwiLCJzdWNjZXNzZnVsbHlSZXF1ZXN0ZWQiLCJyIiwiX3IkcmVzcG9uc2UiLCJyZWZ1bmRfcmVxdWVzdHMiLCJ1cGRhdGVUaWNrZXRzUmVmdW5kUmVxdWVzdGVkIiwidGlja2V0c1JlZnVuZFJlcXVlc3RlZCIsImdldEV4dHJhUXVlc3Rpb25zIiwiYXR0ZW5kZWVJZCIsIl9yZWYxMiIsImVuZHBvaW50IiwiZ2V0VGlja2V0IiwidGlja2V0SWQiLCJfcmVmMTMiLCJub3JtYWxpemVUaWNrZXQiLCJlbnRpdHkiLCJub3JtYWxpemVkRW50aXR5IiwiX29iamVjdFNwcmVhZCIsImF0dGVuZGVlX2NvbXBhbnkiLCJhdHRlbmRlZV9jb21wYW55X2lkIiwicmVmcmVzaFByb2ZpbGUiLCJkYXRhIiwidGlja2V0T3duZXIiLCJfcmVmMTQiLCJfdGlja2V0T3duZXIkbWFuYWdlciIsInVwZGF0ZVByb2ZpbGUiLCJhdHRlbmRlZV9lbWFpbCIsImF0dGVuZGVlX2ZpcnN0X25hbWUiLCJhdHRlbmRlZV9sYXN0X25hbWUiLCJoYXNNYW5hZ2VyIiwibWFuYWdlciIsIm1hbmFnZXJfaWQiLCJpdHNNZSIsInByb2ZpbGVDaGFuZ2VkIiwiZmlyc3RfbmFtZSIsImxhc3RfbmFtZSIsIm5ld1Byb2ZpbGUiLCJzYXZlVGlja2V0RGV0YWlscyIsImFuc3dlcnMiLCJfcmVmMTUiLCJpZFRva2VuIiwidmVyaWZpZXIiLCJqd3QiLCJkZWNvZGUiLCJjb25zb2xlIiwibG9nIiwib3duZXIiLCJhc3NpZ25BdHRlbmRlZSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9yZWYxNiIsInJlbW92ZVRpY2tldCIsIl9yZWYxNyIsInJlYXNzaWduVGlja2V0IiwidW5hc3NpZ25UaWNrZXQiLCJkZWxlZ2F0ZVRpY2tldCIsIl9yZWYxOCIsInNhdmVFeHRyYVF1ZXN0aW9ucyIsIl9yZWYxOSIsImdldFRpY2tldFBERiIsIl9yZWYyMCIsInF1ZXJ5U3RyaW5nIiwiYXBpVXJsIiwiZmV0Y2giLCJyZXNwb25zZVR5cGUiLCJoZWFkZXJzIiwib2siLCJibG9iIiwicGRmIiwibGluayIsImRvY3VtZW50IiwiY3JlYXRlRWxlbWVudCIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImhyZWYiLCJkb3dubG9hZCIsImRpc3BhdGNoRXZlbnQiLCJNb3VzZUV2ZW50IiwiUmVhY3QiLCJCdXR0b24iLCJEaWFsb2ciLCJEaWFsb2dBY3Rpb25zIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ0NvbnRlbnRUZXh0IiwiRGlhbG9nVGl0bGUiLCJ1c2VUcmFuc2xhdGlvbiIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJDb25maXJtRGlhbG9nIiwib3BlbiIsImJvZHkiLCJvbkNsb3NlIiwib25Db25maXJtIiwiY2hpbGRyZW4iLCJvbkNsaWNrIiwiYXV0b0ZvY3VzIiwiUHJvcFR5cGVzIiwiQ29udGVudENvcHlJY29uIiwiVG9vbHRpcCIsIk1JTExJU0VDX1RPX1NFQyIsInN0eWxlcyIsImRlZmF1bHRXaWR0aCIsIkNvcHlUZXh0IiwidGV4dCIsInRvb2x0aXBUZXh0IiwiaGlkZUNvcHkiLCJ0cnVuY2F0ZWQiLCJyZXZlcnNlZCIsIndpZHRoIiwidG9vbHRpcFRleHRUb1VzZSIsInRvb2x0aXAiLCJzZXRUb29sdGlwIiwidXNlU3RhdGUiLCJjbGFzc05hbWVzIiwiaGFuZGxlQ29weSIsIm5hdmlnYXRvciIsImNsaXBib2FyZCIsIndyaXRlVGV4dCIsInNldFRpbWVvdXQiLCJjbGFzc05hbWUiLCJ3cmFwcGVyIiwic3R5bGUiLCJjb3B5SWNvbiIsInByb3BUeXBlcyIsInN0cmluZyIsImJvb2wiLCJudW1iZXIiLCJjcmVhdGVDb250ZXh0IiwiQ3VzdG9tTm90aWZpY2F0aW9uQ29udGV4dCIsIkFsZXJ0IiwiU25hY2tiYXIiLCJUeXBvZ3JhcGh5IiwiQ2hlY2tDaXJjbGVJY29uIiwiRXJyb3JJY29uIiwiQ3VzdG9tTm90aWZpY2F0aW9uIiwic2V2ZXJpdHkiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJhdXRvSGlkZUR1cmF0aW9uIiwidmFyaWFudCIsInN4IiwiYmFja2dyb3VuZENvbG9yIiwiaWNvbk1hcHBpbmciLCJzdWNjZXNzIiwiZm9udFNpemUiLCJlcnJvciIsImZ1bmMiLCJUaGVtZVByb3ZpZGVyIiwiY3JlYXRlVGhlbWUiLCJkYXJrQ29sb3IiLCJyb290IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0Q29tcHV0ZWRTdHlsZSIsImdldFByb3BlcnR5VmFsdWUiLCJ0aGVtZSIsInBhbGV0dGUiLCJwcmltYXJ5IiwibWFpbiIsInNlY29uZGFyeSIsInR5cG9ncmFwaHkiLCJib2R5MSIsImZvbnRXZWlnaHQiLCJoNSIsIm1hcmdpbkJvdHRvbSIsImg2IiwiY29tcG9uZW50cyIsIk11aUZvcm1IZWxwZXJUZXh0Iiwic3R5bGVPdmVycmlkZXMiLCJNdWlCdXR0b24iLCJsaW5lSGVpZ2h0IiwiTXVpVGFiIiwiY29sb3IiLCJNdWlUYWJzIiwiaW5kaWNhdG9yIiwiQ3VzdG9tVGhlbWUiLCJub2RlIiwiaXNSZXF1aXJlZCIsIkNoZWNrYm94IiwiRm9ybUNvbnRyb2wiLCJGb3JtQ29udHJvbExhYmVsIiwiRm9ybUdyb3VwIiwiRm9ybUhlbHBlclRleHQiLCJGb3JtTGFiZWwiLCJnZXRMYWJlbCIsInRvU2x1ZyIsIkNoZWNrYm94TGlzdFF1ZXN0aW9uRmllbGQiLCJfcXVlc3Rpb24kdmFsdWVzIiwicXVlc3Rpb24iLCJxdWVzdGlvbkNsYXNzTmFtZSIsImlzRGlzYWJsZWQiLCJvbkNoYW5nZSIsInNldEZpZWxkVmFsdWUiLCJoZWxwZXJUZXh0IiwicmVzdCIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsInF1ZXN0aW9uU2x1ZyIsInF1ZXN0aW9uTGFiZWwiLCJtYW5kYXRvcnkiLCJxdWVzdGlvbk1heFZhbHVlcyIsIm1heF9zZWxlY3RlZF92YWx1ZXMiLCJxdWVzdGlvbk9wdGlvbnMiLCJ2YWx1ZXMiLCJ2YWwiLCJsYWJlbCIsInRvU3RyaW5nIiwiaGFuZGxlQ2hlY2tib3hMaXN0Q2hhbmdlIiwiY2hlY2tlZCIsImN1cnJlbnRBbnMiLCJtYXhTZWxlY3Rpb25SZWFjaGVkIiwibmV3VmFsdWUiLCJ2IiwiZGlzYWJsZWQiLCJyZXF1aXJlZCIsImZ1bGxXaWR0aCIsIm1hcmdpbiIsIm9wIiwiY29udHJvbCIsImluY2x1ZGVzIiwiZXYiLCJ0YXJnZXQiLCJvYmplY3QiLCJhcnJheSIsIlJhd0hUTUwiLCJDaGVja2JveFF1ZXN0aW9uRmllbGQiLCJhbGlnbkl0ZW1zIiwibWFyZ2luVG9wIiwiSW5wdXRMYWJlbCIsIk1lbnVJdGVtIiwiU2VsZWN0IiwiRHJvcGRvd25RdWVzdGlvbkZpZWxkIiwibGFiZWxJZCIsIlJhZGlvIiwiUmFkaW9Hcm91cCIsIlJhZGlvTGlzdFF1ZXN0aW9uRmllbGQiLCJUZXh0RmllbGQiLCJUZXh0UXVlc3Rpb25GaWVsZCIsIlF1ZXN0aW9uVHlwZV9DaGVja2JveCIsIlF1ZXN0aW9uVHlwZV9DaGVja0JveExpc3QiLCJRdWVzdGlvblR5cGVfQ29tYm9Cb3giLCJRdWVzdGlvblR5cGVfQ291bnRyeUNvbWJvQm94IiwiUXVlc3Rpb25UeXBlX1JhZGlvQnV0dG9uTGlzdCIsImNoZWNrUnVsZSIsInJ1bGUiLCJhbnN3ZXJfdmFsdWVzIiwiQXJyYXkiLCJpc0FycmF5IiwiYW5zd2VyX3ZhbHVlc19vcGVyYXRvciIsImNoZWNrVmlzaWJpbGl0eSIsInJ1bGVSZXN1bHQiLCJ2aXNpYmlsaXR5IiwidmlzaWJpbGl0eV9jb25kaXRpb24iLCJxdWVzdGlvbklkIiwidGV4dExDIiwidG9Mb3dlckNhc2UiLCJyZXBsYWNlIiwicSIsIl9xJGxhYmVsIiwiaXNBbnN3ZXJlZCIsImFuc3dlciIsImNoZWNrSWZWYWx1ZU1hdGNoIiwiY29tcGFyZVZhbCIsImFuc3dlckFycmF5Iiwic29tZSIsImdldFR5cGVJbml0aWFsVmFsdWUiLCJ0eXBlIiwiZ2V0VHlwZVZhbHVlIiwiYW5zIiwic3BsaXQiLCJ0cmFuc2Zvcm1BbndlcnNGb3JtYXQiLCJkaXNjbGFpbWVyX2FjY2VwdGVkIiwiZXh0cmFfcXVlc3Rpb25zIiwiZm9ybWF0dGVkRVEiLCJxdWVzdGlvbl9pZCIsInBhcnNlSW50IiwicG9wIiwiUXVlc3Rpb25UeXBlX1RleHQiLCJRdWVzdGlvblR5cGVfVGV4dEFyZWEiLCJRdWVzdGlvblR5cGVfUmFkaW9CdXR0b24iLCJnZXRRdWVzdGlvbkZpZWxkQ29tcG9uZW50IiwicXVlc3Rpb25UeXBlIiwiRnJhZ21lbnQiLCJFeHRyYVF1ZXN0aW9uc0ZpZWxkcyIsInJlYWRPbmx5IiwiYWxsb3dFZGl0IiwiZm9ybWlrIiwicmVuZGVyUnVsZSIsImlzVmlzaWJsZSIsInJlbmRlclF1ZXN0aW9uIiwic3ViX3F1ZXN0aW9uIiwiX3Ekc3ViX3F1ZXN0aW9uX3J1bGVzIiwiUXVlc3Rpb25GaWVsZENvbXBvbmVudCIsImZvcm1pa1Byb3BzIiwiaGFuZGxlQ2hhbmdlIiwib25CbHVyIiwiaGFuZGxlQmx1ciIsInRvdWNoZWQiLCJCb29sZWFuIiwic3ViX3F1ZXN0aW9uX3J1bGVzIiwidXNlU2VsZWN0b3IiLCJzaGFsbG93RXF1YWwiLCJCb3giLCJDYXJkSGVhZGVyIiwiSWNvbkJ1dHRvbiIsIkNvbGxhcHNlIiwiQ2FyZENvbnRlbnQiLCJFeHBhbmRNb3JlSWNvbiIsIkFzc2lnbmVkRmlsdGVyIiwib25GaWx0ZXIiLCJmaWx0ZXJWYWx1ZXMiLCJzdGF0ZSIsImlzRXhwYW5kZWQiLCJzZXRJc0V4cGFuZGVkIiwiYXNzaWduZWRWYWx1ZXMiLCJoYW5kbGVGaWx0ZXJDaGFuZ2UiLCJuZXdGaWx0ZXIiLCJ0aXRsZVdyYXBwZXIiLCJhY3Rpb24iLCJkaXNhYmxlUmlwcGxlIiwidHJhbnNmb3JtIiwidHJhbnNpdGlvbiIsImluIiwidGltZW91dCIsInVubW91bnRPbkV4aXQiLCJweSIsInBiIiwiYXNzaWduZWQiLCJ1c2VFZmZlY3QiLCJCYWRnZUZlYXR1cmVGaWx0ZXIiLCJiYWRnZV9mZWF0dXJlc190eXBlcyIsIm5ld0ZpbHRlcnMiLCJmIiwiYmYiLCJ1c2VSZWYiLCJTdGFjayIsIkZpbHRlckxpc3RJY29uIiwiQmFkZ2UiLCJDYXJkIiwiRGl2aWRlciIsIlBhcGVyIiwiY29ubmVjdCIsIlRpY2tldFR5cGVGaWx0ZXIiLCJTdGF0dXNGaWx0ZXIiLCJGcmVlUGFpZEZpbHRlciIsIlByb21vQ29kZUZpbHRlciIsIkZpbHRlciIsIm9uUmVzZXQiLCJhY3RpdmVGaWx0ZXJzQ291bnQiLCJzaG93RmlsdGVyTGlzdCIsInNldFNob3dGaWx0ZXJMaXN0Iiwic2hvd0RhdGVwaWNrZXIiLCJzZXRTaG93RGF0ZXBpY2tlciIsImZpbHRlclJlZiIsImhhbmRsZUZpbHRlckNsaWNrT3V0c2lkZSIsImV2ZW50IiwiY3VycmVudCIsImNvbnRhaW5zIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJ0b2dnbGUiLCJoYW5kbGVGaWx0ZXJSZXNldCIsImZpbHRlckNvbnRhaW5lciIsInJlZiIsInB0IiwiYmFkZ2VDb250ZW50IiwibXIiLCJmaWx0ZXJJY29uIiwiZmlsdGVyTGFiZWwiLCJmaWx0ZXJMaXN0Q29udGFpbmVyIiwiY29udGFpbmVyIiwiZWxldmF0aW9uIiwiZmlsdGVyQ2hlY2tib3hDb250YWluZXIiLCJjbGVhbkJ1dHRvbiIsIm1hcFN0YXRlVG9Qcm9wcyIsInByb21vQ29kZSIsInNldFByb21vQ29kZSIsImRlYm91bmNlVGltZXIiLCJERUJPVU5DRV9WQUxVRSIsIm5ld1Byb21vQ29kZSIsImNsZWFyVGltZW91dCIsInBsYWNlaG9sZGVyIiwic3R5bGVkIiwiU2VhcmNoSWNvbiIsIkNsb3NlSWNvbiIsIklucHV0QmFzZSIsIlNlYXJjaENvbnRhaW5lciIsInBvc2l0aW9uIiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwiZGlzcGxheSIsIlNlYXJjaEljb25XcmFwcGVyIiwiaGVpZ2h0IiwianVzdGlmeUNvbnRlbnQiLCJTdHlsZWRJbnB1dEJhc2UiLCJib3JkZXJCb3R0b20iLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCIsIkNsb3NlSWNvbldyYXBwZXIiLCJwYWRkaW5nIiwidG9wIiwicmlnaHQiLCJjdXJzb3IiLCJ6SW5kZXgiLCJTZWFyY2giLCJvblNlYXJjaCIsInNlYXJjaFZhbHVlIiwic2V0U2VhcmNoVmFsdWUiLCJzaG93Q2xvc2VCdG4iLCJvbktleURvd24iLCJuYXRpdmVFdmVudCIsInJlc2V0U2VhcmNoIiwiaW5wdXRQcm9wcyIsIkltcG9ydEV4cG9ydEljb24iLCJTb3J0Iiwib25Tb3J0Iiwic2hvd1NvcnQiLCJzZXRTaG93U29ydCIsInNvcnRSZWYiLCJoYW5kbGVTb3J0Q2xpY2tPdXRzaWRlIiwic29ydENvbnRhaW5lciIsInNvcnRJY29uIiwic29ydExhYmVsIiwic29ydExpc3RDb250YWluZXIiLCJ0aWNrZXRfdHlwZXMiLCJHcmlkIiwiRmlsdGVycyIsImp1c3RpZnkiLCJpdGVtIiwieHMiLCJnYXAiLCJmaWx0ZXJTb3J0Q29udGFpbmVyIiwiRm9ybUZvb3RlciIsInNhdmVMYWJlbCIsImNhbmNlbExhYmVsIiwiZm9vdGVyIiwiY2FuY2VsQnRuIiwic2l6ZSIsInNhdmVCdG4iLCJFcnJvckxhYmVsIiwiZGF0YVRlc3RJZCIsImVycm9yTGFiZWwiLCJCYWNrZHJvcCIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJMb2FkZXIiLCJkcmF3ZXIiLCJJbmZpbml0ZVNjcm9sbCIsIk9yZGVyc0xpc3QiLCJPTkVfUEFHRV9ORVhUIiwiTXlPcmRlcnNUaWNrZXRzIiwiZmV0Y2hEYXRhIiwibWVtYmVyT3JkZXJzIiwib3JkZXJzX2N1cnJlbnRfcGFnZSIsIm9yZGVyc19sYXN0X3BhZ2UiLCJteU9yZGVyc1dyYXBwZXIiLCJkYXRhTGVuZ3RoIiwibmV4dCIsImhhc01vcmUiLCJzY3JvbGxUaHJlc2hvbGQiLCJUaWNrZXRzSWNvbiIsInZpZXdCb3giLCJmaWxsIiwieG1sbnMiLCJkIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlRGFzaGFycmF5IiwiX0ZyYWdtZW50IiwiTm9UaWNrZXRzRm91bmQiLCJwYWdlVmlldyIsImxvYWRpbmciLCJnZXRDb250ZW50IiwibWFpbHRvVGFnIiwic3VwcG9ydF9lbWFpbCIsImJ1dHRvbkxhYmVsIiwiaWNvbldyYXBwZXIiLCJjYWxjdWxhdGVPcmRlclRvdGFscyIsImZvcm1hdEN1cnJlbmN5IiwiT3JkZXJTdW1tYXJ5VGFibGUiLCJkaXNjb3VudFRvdGFsIiwicmVmdW5kVG90YWwiLCJ0YXhlc1RvdGFsIiwiYW1vdW50VG90YWwiLCJ0aWNrZXRTdW1tYXJ5IiwiaHVuZHJlZCIsIm9yZGVyU3VtbWFyeVRhYmxlIiwidGlja2V0VG90YWwiLCJxdHkiLCJ0aWNrZXRfdHlwZSIsImNvc3QiLCJhbGlnbiIsImN1cnJlbmN5IiwiY3JlYXRlZCIsImRpc2NvdW50X2Ftb3VudCIsInRheGVzX2Ftb3VudCIsInNoYXBlIiwidXNlTm93IiwidGlja2V0c1JlZnVuZGFibGUiLCJ1c2VTdW1taXREZXRhaWxzIiwiUmVmdW5kRW1haWxTdXBwb3J0Iiwic3VibWl0UmVxdWVzdCIsIm9uUmVmdW5kQ2xpY2siLCJvblJlZnVuZERldGFpbENsaWNrIiwiaXNTdGFydGVkIiwibm93IiwiaXNJblJlZnVuZGFibGVQZXJpb2QiLCJyZWdpc3RyYXRpb25fYWxsb3dlZF9yZWZ1bmRfcmVxdWVzdF90aWxsX2RhdGUiLCJhdExlYXN0T25lUmVmdW5kYWJsZVRpY2tldCIsImlzUmVmdW5kYWJsZSIsImhhc1JlZnVuZFJlcXVlc3RzIiwicm9sZSIsIm9yZGVyU3VtbWFyeUJ1dHRvbiIsInJlZnVuZERpc2FibGVkIiwicmVsIiwiYXJyYXlPZiIsIk9yZGVyU3VtbWFyeSIsIm9yZGVyU3VtbWFyeVdyYXBwZXIiLCJweCIsIm9yZGVyU3VtbWFyeVB1cmNoYXNlZEluZm8iLCJtZW1iZXJUaWNrZXRzIiwiT3JkZXJMaXN0VGlja2V0cyIsIkFzc2lnblRvTWUiLCJ1c2VyVGlja2V0cyIsInVzZXJfdGlja2V0c19jdXJyZW50X3BhZ2UiLCJ1c2VyX3RpY2tldHNfbGFzdF9wYWdlIiwib3JkZXJUaWNrZXRDb250YWluZXIiLCJhc3NpZ25lZFRvTWVXcmFwcGVyIiwidGlja2V0TGlzdENvbnRhaW5lciIsImlzUmVmdW5kTW9kYWwiLCJpc1NlbGVjdGVkVG9SZWZ1bmQiLCJzZWxlY3RUb1JlZnVuZCIsImlzRXh0ZXJuYWxBc3NpZ25lZFRpY2tldCIsIkFzc2lnbmVkVG8iLCJFeHRlcm5hbEFzc2lnbmVkVG8iLCJNYW5hZ2VGb3IiLCJBdHRlbmRlZVN0YXR1cyIsIl90aWNrZXQkb3duZXIiLCJfdGlja2V0JG93bmVyMiIsIl90aWNrZXQkb3duZXIzIiwiaXNVbmFzc2lnbmVkIiwiaXNfYWN0aXZlIiwiaXNEZWxlZ2F0ZWQiLCJ0aWNrZXRPd25lckVtYWlsIiwiX3RpY2tldCRvcmRlciIsIl90aWNrZXQkb3JkZXIyIiwiX3RpY2tldCRvd25lcjQiLCJfdGlja2V0JG93bmVyNSIsImFzc2lnbmVkQnlUZXh0Iiwib3duZXJfZmlyc3RfbmFtZSIsIm93bmVyX2xhc3RfbmFtZSIsIlBBR0lOQVRJT05fRElTUExBWV9DT1VOVCIsIk9yZGVyTGlzdEl0ZW0iLCJfb3JkZXIkbWVtYmVyVGlja2V0cyIsIl9vcmRlciRtZW1iZXJUaWNrZXRzMiIsIm9uUGFnaW5hdGVDbGljayIsInRpY2tldHNUb1JlZnVuZCIsIml0ZW1zVG9EaXNwbGF5Iiwic2V0SXRlbXNUb0Rpc3BsYXkiLCJ0aWNrZXRzX3RvdGFsIiwic2xpY2VkVGlja2V0cyIsInNsaWNlIiwib25WaWV3TW9yZSIsIm9uVmlld0xlc3MiLCJmaW5kIiwidmlld01vcmVCdXR0b24iLCJ1c2VEaXNwYXRjaCIsIlRpY2tldFN0YXR1cyIsImdldFN1bW1pdFJlYXNzaWduRGF0ZSIsIlRpY2tldERldGFpbCIsInVzZVRpY2tldERldGFpbHMiLCJUaWNrZXRBc3NpZ24iLCJtb2RhbFZpZXdzIiwiZGV0YWlsIiwicmVhc3NpZ24iLCJhc3NpZ24iLCJUaWNrZXRDVEFzIiwiaXNJbmNvbXBsZXRlIiwiaXNSZWFzc2lnbmFibGUiLCJvbk9wZW5DbGljayIsImFzc2lnblRpY2tldEJ1dHRvbiIsInZpZXdGaW5pc2hUaWNrZXRCdXR0b24iLCJyZWFzc2lnbkJ1dHRvbiIsIl90aWNrZXQkdGlja2V0X3R5cGUiLCJfdGlja2V0JGJhZGdlIiwiY2FuUmVhc3NpZ24iLCJtb2RhbE9wZW4iLCJzZXRNb2RhbE9wZW4iLCJyZWFzc2lnbkRhdGUiLCJvblJlYXNzaWduYWJsZVBlcmlvZCIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVPcGVuTW9kYWwiLCJ2aWV3Iiwib3JkZXJXcmFwcGVyIiwicmVmdW5kTW9kYWwiLCJkaXNhYmxlZFJlZnVuZCIsInNlbGVjdGVkIiwiY2hlY2tib3giLCJwbCIsInRpY2tldFRpY2tldFR5cGUiLCJiYWRnZUZlYXR1cmVXcmFwcGVyIiwicHIiLCJiYWRnZSIsImZlYXR1cmVzIiwiYmFkZ2VGZWF0dXJlIiwic3JjIiwiaW1hZ2UiLCJhbHQiLCJ0aWNrZXRObyIsInRpY2tldEZvb3RlciIsInRpY2tldEFjdGlvbkJ1dHRvbnMiLCJvd25lcklkIiwidG90YWxfcmVmdW5kZWRfYW1vdW50IiwiVGFicyIsIlRhYiIsIlJlZnVuZFJlcXVlc3RzTW9kYWwiLCJSZWZ1bmREZXRhaWxzIiwiVGFiUGFuZWwiLCJwcm9wcyIsImluZGV4IiwiaGlkZGVuIiwiT3JkZXJzTGlzdERlc2t0b3BNb2JpbGUiLCJpc01vYmlsZSIsImRldGFpbHNSZXF1aXJlZCIsInNldFZhbHVlIiwiXyIsInNldFRpY2tldHNUb1JlZnVuZCIsInNldFN1Ym1pdFJlcXVlc3QiLCJyZWZ1bmREZXRhaWxzT3BlbiIsInNldFJlZnVuZERldGFpbHNPcGVuIiwidW5zZWxlY3RSZWZ1bmRUaWNrZXRzIiwiZmlsdGVyU2VsZWN0ZWQiLCJzZWxlY3RlZFRpY2tldCIsImNsb3NlU3VibWl0UmVxdWVzdCIsInJlc2V0QWxsUmVmdW5kU3RhdHVzZXMiLCJtb3JlRGV0YWlscyIsImJvcmRlckNvbG9yIiwidGFiQnV0dG9ucyIsIm9uUmVmdW5kU3VjY2Vzc0Nsb3NlIiwib25DbG9zZVNsaWRlciIsIm1kIiwidXNlVGhlbWUiLCJ1c2VNZWRpYVF1ZXJ5IiwiZ2V0Rm9ybWF0dGVkRGF0ZSIsInRpY2tldF9wZXJfcGFnZSIsImJyZWFrcG9pbnRzIiwiZG93biIsImlzTW9iaWxlVmlld2FibGUiLCJzZXRNb2JpbGVWaWV3YWJsZSIsInRpY2tldHNfcGFnZV9jdXJyZW50IiwibGciLCJvcmRlclRpY2tldEluZm9Db250YWluZXIiLCJvcmRlclRpY2tldEluZm8iLCJyb3dTcGFjaW5nIiwiY29sdW1uU3BhY2luZyIsInNtIiwiZGlzcGxheV9ub25lIiwiZmxleERpcmVjdGlvbiIsInVzZU1lbW8iLCJSaWdodERyYXdlciIsIlJlZnVuZFJlcXVlc3RlZFRpY2tldCIsImdldEFsbFJlZnVuZFJlcXVlc3RlZFRpY2tldHMiLCJyZXF1ZXN0ZWRUaWNrZXRzIiwiY2xvc2VTbGlkZXIiLCJyZWZ1bmREZXRhaWxzIiwidG9vbHRpcENsYXNzZXMiLCJJbmZvSWNvbiIsIm1vbWVudCIsIlJlZnVuZFN0YXR1cyIsIkdSSURfOCIsIkdSSURfMTIiLCJQQURESU5HXzIiLCJhcHByb3ZlZFJlZnVuZHMiLCJyZWZ1bmQiLCJyZWZ1bmRlZFRheGVzU3VtbWF0b3J5IiwicmVmdW5kZWRfdGF4ZXMiLCJydCIsInRheElkIiwidGF4IiwidG90YWxSZWZ1bmRlZFRheEFtb3VudCIsInJlZnVuZGVkX2Ftb3VudCIsIkh0bWxUb29sdGlwIiwiY2xhc3NlcyIsInBvcHBlciIsIm1heFdpZHRoIiwiYm9yZGVyIiwicmVmdW5kVGlja2V0Qm94Q29udGFpbmVyIiwicmVmdW5kRGV0YWlsIiwicmVmdW5kVGlja2V0QXR0ZW5kZWUiLCJhY3Rpb25fZGF0ZSIsImZvcm1hdCIsIkNoaXAiLCJnZXRSZWZ1bmRSZXF1ZXN0ZWRTdGF0dXNDb2xvciIsInN0YXR1c0NvbG9yIiwiYnV0dG9uUGlsbCIsIlN0eWxlZEVuZ2luZVByb3ZpZGVyIiwiU1RFUF9PTkUiLCJTVEVQX1RIUkVFIiwiU1RFUF9UV08iLCJzdGVwIiwic2V0U3RlcCIsImVycm9yTXNnIiwic2V0RXJyb3JNc2ciLCJyZWZ1bmRTdWNjZXNzIiwic2V0UmVmdW5kU3VjY2VzcyIsImNvbmZpcm1SZWZ1bmQiLCJnb0JhY2tUb1JlZnVuZCIsInJlZnVuZFRpY2tldHMiLCJyZWZ1bmRTdGVwT25lIiwic3VidGl0bGUiLCJ0aWNrZXRMaXN0IiwiYWN0aW9uQnV0dG9ucyIsImNhbmNlbEJ1dHRvbiIsImNvbnRpbnVlQnV0dG9uIiwicmVmdW5kU3RlcFR3byIsInJlZnVuZEVycm9yTXNnIiwiQ1RBQnV0dG9uV3JhcHBlciIsInJlZnVuZFN0ZXBUaHJlZSIsInJlZnVuZFN1Y2Nlc3NmdWwiLCJzdWNjZXNzTXNnIiwic3VjY2Vzc01zZzIiLCJyZW5kZXJTdGVwcyIsImluamVjdEZpcnN0IiwiRHJhd2VyIiwiQ2xvc2UiLCJoZWFkZXJDaGlsZHJlbiIsImFuY2hvciIsIk1vZGFsUHJvcHMiLCJrZWVwTW91bnRlZCIsImhlYWRlciIsImNsb3NlQnRuIiwiZmxvYXQiLCJndXR0ZXJCb3R0b20iLCJvbmVPZlR5cGUiLCJnZXRTdW1taXRGb3JtYXR0ZWREYXRlIiwiU3VtbWl0SGVhZGVyIiwid2lkZ2V0SGVhZGVyIiwic3VtbWl0VGl0bGVEYXRlIiwiVGFiV3JhcHBlciIsInRhYiIsInNldFRhYiIsImhhc1RpY2tldHMiLCJpc0ZpbHRlcmVkIiwiY2xlYXJGaWx0ZXJzIiwiZ2V0UGFnZVZpZXciLCJnZXRPbkNsaWNrIiwidGFiVG9MaW5rIiwiTGluayIsIlJlYXNzaWduRm9ybSIsIkRlbGVnYXRlRm9ybSIsIkFzc2lnbk9wdGlvbnMiLCJhc3NpZ25PcHRpb24iLCJzZXRBc3NpZ25PcHRpb24iLCJvbkFzc2lnbiIsIm9uRGVsZWdhdGUiLCJvblVuQXNzaWduIiwib3BlbkNvbmZpcm1VbmFzc2lnbiIsInNldE9wZW5Db25maXJtVW5hc3NpZ24iLCJpc0Fzc2lnbmVkVG9NZSIsImFsbG93c0RlbGVnYXRlIiwiaGFuZGxlVW5Bc3NpZ24iLCJteSIsIm9uU3VibWl0IiwibmV3X2F0dGVuZGVlX2VtYWlsIiwicGVyc29uYWxfbWVzc2FnZSIsImRlbGVnYXRlX2ZpcnN0X25hbWUiLCJkZWxlZ2F0ZV9sYXN0X25hbWUiLCJkZWxlZ2F0ZV9lbWFpbCIsInVuYXNzaWduV3JhcHBlciIsImNvbXBvbmVudCIsInRleHREZWNvcmF0aW9uIiwidGV4dERlY29yYXRpb25Db2xvciIsInVzZUZvcm1payIsInl1cCIsImluaXRpYWxWYWx1ZXMiLCJ2YWxpZGF0aW9uU2NoZW1hIiwicmVzZXRGb3JtIiwiaGFuZGxlQ2FuY2VsIiwiaGFuZGxlU3VibWl0Iiwibm9WYWxpZGF0ZSIsImlzU3VibWl0dGluZyIsIkFzc2lnbkhlYWRlciIsImluUHJvZ3Jlc3MiLCJ1c2VyRW1haWwiLCJhc3NpZ25lZFRvWW91IiwiZ2V0U2Vjb25kYXJ5VGl0bGUiLCJnZXRIZWFkZXJOb3RlIiwidHJhbnNLZXkiLCJwdXJjaGFzZWRCeVdyYXBwZXIiLCJwdXJjaGFzZWRCeSIsIm93bmVyX2VtYWlsIiwib3JkZXJObyIsImhlYWRlck5vdGUiLCJSZWFzc2lnbkhlYWRlciIsIm11bHRpbGluZSIsIm1pblJvd3MiLCJ1c2VDb250ZXh0IiwiVGlja2V0Rm9ybSIsInVzZUdldFRpY2tldCIsIlRJQ0tFVF9EUkFXRVJfSUQiLCJzdWNjZXNzTWVzc2FnZSIsImVycm9yTWVzc2FnZSIsImFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsInNldEFzc2lnbmF0aW9uSW5Qcm9ncmVzcyIsImlzVXNlck9yZGVyT3duZXIiLCJvd25lcl9pZCIsImlzVXNlclRpY2tldE93bmVyIiwiY2FuRWRpdFRpY2tldERhdGEiLCJhbGxvd191cGRhdGVfYXR0ZW5kZWVfZXh0cmFfcXVlc3Rpb25zIiwib25DbG9zZUVRRm9ybSIsIm9uU2F2ZUVRIiwicmVzb2x2ZSIsIkhlYWRlciIsInRpY2tldFJlYXNzaWduQ29udGFpbmVyIiwiY2FuRWRpdCIsIkF1dG9jb21wbGV0ZSIsInF1ZXJ5UmVnaXN0cmF0aW9uQ29tcGFuaWVzIiwiQ29tcGFueUZpZWxkIiwic3VtbWl0SWQiLCJpbnB1dFZhbHVlIiwic2V0SW5wdXRWYWx1ZSIsIm9wdGlvbnMiLCJzZXRPcHRpb25zIiwic2V0RmllbGRUb3VjaGVkIiwicmVzdWx0cyIsIm5ld09wdGlvbnMiLCJhdXRvQ29tcGxldGUiLCJmcmVlU29sbyIsImluY2x1ZGVJbnB1dEluTGlzdCIsImZpbHRlclNlbGVjdGVkT3B0aW9ucyIsImdldE9wdGlvbkxhYmVsIiwib3B0aW9uIiwidG1wVmFsdWUiLCJvbklucHV0Q2hhbmdlIiwibmV3SW5wdXRWYWx1ZSIsImZpbHRlck9wdGlvbnMiLCJmaWx0ZXJlZCIsImlzRXhpc3RpbmciLCJyZW5kZXJJbnB1dCIsInJlbmRlck9wdGlvbiIsIm9wdGlvblByb3BzIiwiUmVnaXN0cmF0aW9uRGlzY2xhaW1lciIsImRpc2NsYWltZXIiLCJRUkNvZGUiLCJFbWFpbE91dGxpbmVkIiwiRW1haWxJY29uIiwiRmlsZURvd25sb2FkT3V0bGluZWQiLCJEb3dubG9hZEljb24iLCJUV09fSVRFTSIsIlRpY2tldERldGFpbEhlYWRlciIsImlzVmlydHVhbFN1bW1pdCIsImlzQ29tcGxldGUiLCJzZW50Q29uZmlybWF0aW9uIiwic2V0U2VudENvbmZpcm1hdGlvbiIsImRvd25sb2FkVGlja2V0UGRmIiwib25TZW5kRW1haWwiLCJxckNvZGUiLCJxcl9jb2RlIiwicXJOb3RlIiwiYWN0aW9uQnV0dG9uc0NvbnRhaW5lciIsImRvd25sb2FkQnRuIiwic2VuZEJ0biIsInNlbnQiLCJvcmRlck51bWJlciIsIlRpY2tldE93bmVyRmllbGRzIiwidXNlU2Nyb2xsVG9FcnJvciIsInBhcnNlQW5zd2VycyIsImJ1aWxkVmFsaWRhdGlvblNjaGVtYSIsInJlZHVjZSIsInJlZ2lzdHJhdGlvbl9kaXNjbGFpbWVyX21hbmRhdG9yeSIsInJlbGV2YW50QW5zd2VycyIsImVuYWJsZVJlaW5pdGlhbGl6ZSIsImFkZGl0aW9uYWxEZXRhaWxzIiwicmVnaXN0cmF0aW9uX2Rpc2NsYWltZXJfY29udGVudCIsImluZm9Ob3RlIiwib25TYXZlIiwidGlja2V0RGV0YWlsQ29udGFpbmVyIiwiaXNfdmlydHVhbCIsImF0dGVuZGVlQ29udGFpbmVyIiwiYXR0ZW5kZWVJbmZvVGl0bGUiLCJDb250YWluZXIiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMiLCJpc0FjdGl2ZSIsInJlZnVuZFJlcXVlc3RzIiwidGlja2V0U3RhdHVzQ29udGFpbmVyIiwiYnV0dG9uUmVmdW5kUmVxdWVzdGVkIiwiYnV0dG9uSW5jb21wbGV0ZSIsImJ1dHRvblVuYXNzaWduZWQiLCJidXR0b25Db21wbGV0ZSIsImJ1dHRvbkNhbmNlbGxlZCIsIkFzc2lnbmVkVG9NZSIsIldpZGdldFRhYnMiLCJ0aWNrZXRzRnVsbHlMb2FkZWQiLCJzZXRUaWNrZXRzRnVsbHlMb2FkZWQiLCJvcmRlcnNfcGVyX3BhZ2UiLCJvcmRlcnNQZXJQYWdlIiwidGlja2V0UGVyUGFnZSIsImhhbmRsZVRhYkNoYW5nZSIsIm5ld1RhYiIsImZldGNoQXNzaWduZWRUaWNrZXRzIiwiZmV0Y2hPcmRlclRpY2tldHMiLCJvcmRlclRpY2tldHNQcm9taXNlcyIsImN1cnJlbnRfcGFnZSIsImZldGNoUHJvbWlzZXMiLCJ0YWJXcmFwcGVyIiwiV2lkZ2V0V3JhcHBlciIsIm1zZ0RhdGEiLCJzZXRNc2dEYXRhIiwibWVzc2FnZUNvbnRleHQiLCJmaWx0ZXJWYWx1ZSIsInNvcnRWYWx1ZSIsInRpY2tldHNUaXRsZVRleHQiLCJQcm92aWRlciIsInJ1biIsImN1cnJlbnRUaWNrZXQiLCJzbW9vdGhTY3JvbGxUbyIsInRhcmdldFNjcm9sbFRvcCIsImR1cmF0aW9uIiwic3RhcnRTY3JvbGxUb3AiLCJzY3JvbGxUb3AiLCJkaXN0YW5jZSIsInN0YXJ0VGltZSIsImFuaW1hdGlvblN0ZXAiLCJ0aW1lc3RhbXAiLCJlbGFwc2VkIiwicHJvZ3Jlc3MiLCJNYXRoIiwibWluIiwiZWFzZUluT3V0UXVhZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImlzVmFsaWQiLCJlcnJvckFycmF5IiwiZXJyb3JDb3VudCIsImVsZW1lbnRzU29ydGVkIiwicmVzdWx0IiwiZWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJlbFJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJhIiwiYiIsImdldEVsZW1lbnRCeUlkIiwiY29udGFpbmVyUmVjdCIsImVsZW1PZmZlc3QiLCJhbmltYXRpb25EdXJhdGlvbiIsImlzVGlja2V0UmVmdW5kYWJsZSIsIlNUQVRVU19DT01QTEVURSIsIlNUQVRVU19JTkNPTVBMRVRFIiwiU1RBVFVTX0NBTkNFTExFRCIsIlNUQVRVU19VTkFTU0lHTkVEIiwiX3RpY2tldCRwcm9tb19jb2RlIiwiX3RpY2tldCR0aWNrZXRfdHlwZTIiLCJfdGlja2V0JHByb21vX2NvZGUyIiwiZ2V0U3RhdHVzIiwiYWxsb3dzX3RvX2RlbGVnYXRlIiwicHJvbW9fY29kZSIsImFsbG93c190b19yZWFzc2lnbiIsImluaXRSZWFjdEkxOG5leHQiLCJMYW5ndWFnZURldGVjdG9yIiwiZW4iLCJlcyIsInVzZSIsImluaXQiLCJmYWxsYmFja0xuZyIsImRlYnVnIiwicmVzb3VyY2VzIiwidHJhbnNsYXRpb24iLCJpbnRlcnBvbGF0aW9uIiwiZXNjYXBlVmFsdWUiLCJMT0dPVVRfVVNFUiIsIlNUQVJUX0xPQURJTkciLCJTVE9QX0xPQURJTkciLCJSRVNFVF9MT0FESU5HIiwiY2FsY3VsYXRlQWN0aXZlRmlsdGVycyIsImhhc0xvYWRlZEFsbERhdGEiLCJ1cGRhdGVUaWNrZXRDb2xsZWN0aW9uIiwiREVGQVVMVF9GSUxURVJfU1RBVEUiLCJERUZBVUxUX1NUQVRFIiwid2lkZ2V0TG9hZGluZyIsImN1cnJlbnRfdGFiIiwib3JkZXJzX3RvdGFsIiwidGlja2V0X2N1cnJlbnRfcGFnZSIsInRpY2tldF9sYXN0X3BhZ2UiLCJ0aWNrZXRfdG90YWwiLCJ1c2VyX3RpY2tldHNfdG90YWwiLCJhcGlFcnJvciIsIldpZGdldFJlZHVjZXIiLCJuZXdBY3RpdmVDb3VudCIsInRvdGFsIiwibGFzdF9wYWdlIiwiZm9ybWVyT3JkZXIiLCJvIiwiX2RhdGEkIiwibmV3T3JkZXJzIiwibW8iLCJfZGF0YSQyIiwibmV3VGlja2V0cyIsInRpY2tldHNfcGFnZV9sYXN0IiwiX3RpY2tldHNSZWZ1bmRSZXF1ZXN0IiwidXBkYXRlZFRpY2tldHMiLCJ0cnIiLCJ1cGRhdGVkT3JkZXIiLCJ0aWNrZXREYXRhIiwibmV3VXNlclRpY2tldHMiLCJjb25maWd1cmVTdG9yZSIsInBlcnNpc3RTdG9yZSIsInBlcnNpc3RSZWR1Y2VyIiwiRkxVU0giLCJSRUhZRFJBVEUiLCJQQVVTRSIsIlBFUlNJU1QiLCJQVVJHRSIsIlJFR0lTVEVSIiwic3RvcmFnZSIsImNvbWJpbmVSZWR1Y2VycyIsImdldFN0b3JlIiwiY2xpZW50SWQiLCJsb2dpblVybCIsInJlZHVjZXJzIiwic3RvcmUiLCJyZWR1Y2VyIiwibWlkZGxld2FyZSIsImdldERlZmF1bHRNaWRkbGV3YXJlIiwidGh1bmsiLCJleHRyYUFyZ3VtZW50IiwiaW1tdXRhYmxlQ2hlY2siLCJzZXJpYWxpemFibGVDaGVjayIsImlnbm9yZWRBY3Rpb25zIiwidXNlSW5pdFN0b3JlIiwiY29uZmlnIiwicGVyc2lzdG9yIiwiaW5pdExvZ091dCIsImdldEFjY2Vzc1Rva2VuIiwiU2VudHJ5IiwiZ2V0QWNjZXNzVG9rZW5Nb2NrIiwiRXJyb3IiLCJjYXB0dXJlRXhjZXB0aW9uIiwiTEFTVF9IT1VSX09GXzI0X0hPVVIiLCJMQVNUX01JTlVURV9PRl9IT1VSIiwiT05FX0RBWSIsIk1JTl9SRVFVSVJFRCIsIlNUQVRVU19QRU5ESU5HIiwiU1RBVFVTX0VSUk9SIiwiU1RBVFVTX1BST0NFU1NJTkciLCJTVEFUVVNfUkVGVU5EX1BFTkRJTkciLCJTVEFUVVNfUkVGVU5EX0FQUFJPVkVEIiwiU1RBVFVTX1JFRlVORF9SRUpFQ1RFRCIsIlNUQVRVU19SRUZVTkRfUEVORElOR19MQyIsIlNUQVRVU19SRUZVTkRfQVBQUk9WRURfTEMiLCJTVEFUVVNfUkVGVU5EX1JFSkVDVEVEX0xDIiwiSkVTVF9USU1FT1VUX0lOX01JTExJU0VDIiwiT05FX0lURU0iLCJGSVZFX0lURU0iLCJTSVhfSVRFTSIsImxvY2FsZSIsImRlZmF1bHRPcHRpb25zIiwibWluaW11bUZyYWN0aW9uRGlnaXRzIiwibWF4aW11bUZyYWN0aW9uRGlnaXRzIiwiZm9ybWF0dGVyIiwiSW50bCIsIk51bWJlckZvcm1hdCIsImRhdGV0aW1lIiwidGltZVpvbmUiLCJ0eiIsInVuaXgiLCJhbW91bnQiLCJwdXJjaGFzZVRpY2tldFRvdGFsIiwiY3VycmVuY3lPYmplY3QiLCJ0aWNrZXRzX2V4Y2VycHRfYnlfdGlja2V0X3R5cGUiLCJ0aWNrZXRUeXBlIiwidHQiLCJ0aWNrZXRfdHlwZV9pZCIsInB1cmNoYXNlVG90YWwiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJnZXRPcmRlclRpY2tldHMiLCJfb3JkZXJzJCIsIm9yZGVycyIsImdldEVwb2NoTG93ZXJVcHBlckluU2Vjb25kcyIsInRzIiwic2V0SG91cnMiLCJkZWZhdWx0Q3VycmVudFRpbWUiLCJyb3VuZCIsIkRhdGUiLCJnZXROb3ciLCJ0aW1lclN0YXRlIiwibm93VXRjIiwiY3VycmVudFBhZ2UiLCJjb3VudCIsInRyaW0iLCJjaGVja1N1bW1pdFBhc3QiLCJyZWFzc2lnbl9kYXRlIiwicmVhc3NpZ25fdGlja2V0X3RpbGxfZGF0ZSIsImVuZF9kYXRlIiwiY2hlY2tTdW1taXRTdGFydGVkIiwic3RhcnRfZGF0ZSIsImdldFN1bW1pdERheXNEaWZmIiwic3RhcnREYXkiLCJ0aW1lX3pvbmVfaWQiLCJlbmREYXkiLCJkYXlzIiwiZGlmZiIsImZvcm1hdFN0YXJ0RGF0ZSIsImZvcm1hdEVuZERhdGUiLCJ5ZWFyIiwibW9udGgiLCJzdGFydERhdGUiLCJlbmREYXRlIiwiZ2V0U3VtbWl0TG9jYXRpb24iLCJfc3VtbWl0JGxvY2F0aW9ucyIsImxvY2F0aW9uIiwibG9jYXRpb25zIiwibCIsImNsYXNzX25hbWUiLCJpc19tYWluIiwiY2l0eSIsImNvdW50cnkiLCJfc3VtbWl0JHRpbWVfem9uZSIsIl9zdW1taXQkdGltZV96b25lMiIsImZvcm1hdHRlZERhdGUiLCJmb3JtYXR0ZWRSZWFzc2lnbkRhdGUiLCJ0aW1lX3pvbmUiLCJkYXlzVW50aWxSZWFzc2lnbkRlYWRsaW5lIiwiaXNQYXN0Iiwic3RhdHVzRGF0YSIsImdldFRpY2tldFN0YXR1c0tleSIsImdldFRpY2tldFN0YXR1c0RhdGEiLCJpc1N1bW1pdFBhc3QiLCJnZXRUaWNrZXRSb2xlIiwiZmVhdHVyZSIsImdldFRpY2tldFR5cGUiLCJmaW5hbF9hbW91bnQiLCJuZXRfc2VsbGluZ19jb3N0IiwicnIiLCJnZXRSZWZ1bmRlZFJlcXVlc3RlZFRpY2tldHMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXMyIiwiYWxsVGlja2V0cyIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczMiLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM0IiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNSIsImdldFJlZnVuZGVkUmVxdWVzdGVkU3RhdHVzIiwiX3RpY2tldCRyZWZ1bmRfcmVxdWVzNiIsIl90aWNrZXQkcmVmdW5kX3JlcXVlczciLCJfdGlja2V0JHJlZnVuZF9yZXF1ZXM4IiwiZ2V0VHlwZVZhbGlkYXRpb24iLCJzY2hlbWEiLCJvbmVPZiIsIm9mIiwicGFyc2VTdWJRdWVzdGlvbkFuc3dlciIsIm9ubHlSZWxldmFudCIsInN1YlF1ZXN0aW9uU2x1ZyIsInN1YkFuc3dlciIsIm1hdGNoIiwiaW5jbHVkZUF0dGVuZGVlSW5mbyIsImluY2x1ZGVEaXNjbGFpbWVyIiwiYnVpbGRTdWJRdWVzdGlvblZhbGlkYXRpb25TY2hlbWEiLCJfc3ViUXVlc3Rpb24kc3ViX3F1ZXMiLCJzdWJRdWVzdGlvbiIsIm51bGxhYmxlIiwid2hlbiIsImlzIiwicXVlc3Rpb25BbnMiLCJhbnNWYWx1ZU1hdGNoIiwic2NoIiwic3ViUnVsZSIsImRpc2NsYWltZXJNYW5kYXRvcnkiLCJsYXp5IiwidHlwZUVycm9yIiwiX3Qkb3duZXIiLCJfdCRvd25lcjIiLCJfdGlja2V0JG93bmVyNiIsInRtcFRpY2tldCIsIlBlcnNpc3RHYXRlIiwiTXlPcmRlcnNNeVRpY2tldHNXaWRnZXQiLCJzdXBwb3J0RW1haWwiLCJoYW5kbGVCZWZvcmVMaWZ0IiwiVVJMU2VhcmNoUGFyYW1zIiwic2VhcmNoIiwiZmx1c2giLCJoYXMiLCJvbkJlZm9yZUxpZnQiXSwic291cmNlUm9vdCI6IiJ9
|