dmencu 3.2.17 → 3.2.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/unlogged/bypass-formulario.js +10 -4
- package/dist/client/unlogged/redux-formulario.js +2 -2
- package/dist/client/unlogged/render-formulario.js +80 -27
- package/dist/client/unlogged/render-formulario.tsx +95 -35
- package/dist/client/unlogged/tipos.d.ts +1 -1
- package/dist/client/unlogged/tipos.js +1 -1
- package/dist/server/unlogged/tipos.d.ts +1 -1
- package/dist/server/unlogged/tipos.js +1 -1
- package/dist/unlogged/unlogged/bypass-formulario.js +10 -4
- package/dist/unlogged/unlogged/redux-formulario.js +2 -2
- package/dist/unlogged/unlogged/render-formulario.js +80 -27
- package/dist/unlogged/unlogged/render-formulario.tsx +95 -35
- package/dist/unlogged/unlogged/tipos.d.ts +1 -1
- package/dist/unlogged/unlogged/tipos.js +1 -1
- package/package.json +2 -2
|
@@ -46,7 +46,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
46
46
|
'parenti1': '@parenti1@',
|
|
47
47
|
'njefe': '@njefe@',
|
|
48
48
|
'frealiz': '@frealiz@',
|
|
49
|
-
'
|
|
49
|
+
'cant_hogares': '@cant_hogares@'
|
|
50
50
|
};
|
|
51
51
|
var reducers = {
|
|
52
52
|
MODO_DESPLIEGUE: (payload) => function (state) {
|
|
@@ -321,4 +321,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
321
321
|
return storeFormularioInstance;
|
|
322
322
|
}
|
|
323
323
|
});
|
|
324
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQThWQSxrREFjQztJQUVELHNDQUtDO0lBRUQsOENBb0JDO0lBTUQsb0RBaUVDO0lBRUQsZ0RBS0M7SUF2ZEQsaUNBQTJDO0lBQzNDLG1DQWVpQjtJQUNqQiw2REFBb0Y7SUFDcEYsa0NBQWtDO0lBRWxDLHFDQUFxQztJQUdyQyxtREFBa0Q7SUFFbEQsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRWYsU0FBUyxVQUFVLENBQUMsS0FBbUIsRUFBRSxTQUFrQjtRQUN2RCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLEtBQUssQ0FBQyxpQkFBaUIsaUNBQ2hCLFVBQVUsS0FDYixXQUFXLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFBLG9CQUFZLEVBQUMsS0FBSyxDQUFDLEVBQ3pELGVBQWUsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQ3hELENBQUM7SUFDUCxDQUFDO0lBRVksUUFBQSxrQkFBa0IsR0FBOEI7UUFDekQsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsU0FB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dUIsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBQ0QsT0FBTyx1QkFBdUIsQ0FBQztJQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU3RvcmUsIFN0b3JlIH0gZnJvbSBcInJlZHV4XCI7XHJcbmltcG9ydCB7XHJcbiAgICBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgQ2Fzb1N0YXRlLFxyXG4gICAgRXN0YWRvQ2FyZ2EsIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsXHJcbiAgICBGb3JtdWxhcmlvLCBGb3JQaywgRm9yUGtSYWl6LFxyXG4gICAgSWRDYXJnYSwgSWREZXN0aW5vLCBJZEZvcm11bGFyaW8sIElkVmFyaWFibGUsIElkT3BlcmF0aXZvLFxyXG4gICAgTW9kb0Rlc3BsaWVndWUsXHJcbiAgICBPcGNpb24sXHJcbiAgICB0b1BsYWluRm9yUGssXHJcbiAgICBJZEZpbixcclxuICAgIElkRW5jLFxyXG4gICAgSWRUYXJlYSxcclxuICAgIEVzdHJ1Y3R1cmEsXHJcbiAgICBNb2RvRE0sXHJcbiAgICBQYW50YWxsYU5hdmVnYWNpb24sXHJcbiAgICBJZENvbW9kaW4sXHJcbn0gZnJvbSBcIi4vdGlwb3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgY3JlYXRlRGlzcGF0Y2hlcnMsIEFjdGlvbnNGcm9tIH0gZnJvbSBcInJlZHV4LXR5cGVkLXJlZHVjZXJcIjtcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcbmltcG9ydCAqIGFzIGJlc3RHbG9iYWxzIGZyb20gXCJiZXN0LWdsb2JhbHNcIjtcclxuaW1wb3J0ICogYXMgSlNPTjRhbGwgZnJvbSBcImpzb240YWxsXCI7XHJcblxyXG5pbXBvcnQgeyBPcGNpb24gYXMgUm93VmFsaWRhdG9yT3BjaW9uIH0gZnJvbSBcInJvdy12YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgZ2V0Rm9ybVJlbmRlcmVyIH0gZnJvbSBcIi4vcmVuZGVyLWNvbmZpZ1wiO1xyXG5cclxudmFyIG15ID0gbXlPd247XHJcblxyXG5mdW5jdGlvbiBmb3JQa1RvVXJsKGZvclBrOiBGb3JQayB8IG51bGwsIHBpbGFGb3JQazogRm9yUGtbXSkge1xyXG4gICAgdmFyIGFkZHJQYXJhbXMgPSBteU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNoIHx8IGxvY2F0aW9uLnNlYXJjaCB8fCAnJyk7XHJcbiAgICBteU93bi5yZXBsYWNlQWRkclBhcmFtcyh7XHJcbiAgICAgICAgLi4uYWRkclBhcmFtcyxcclxuICAgICAgICBzdGF0ZV9mb3JQazogZm9yUGsgPT0gbnVsbCA/ICdudWxsJyA6IHRvUGxhaW5Gb3JQayhmb3JQayksXHJcbiAgICAgICAgc3RhdGVfcGlsYUZvclBrOiBwaWxhRm9yUGsubWFwKHRvUGxhaW5Gb3JQaykuam9pbignfCcpXHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbW9kaW5lc0luaWNpYWxlczogUmVjb3JkPElkQ29tb2Rpbiwgc3RyaW5nPiA9IHtcclxuICAgICdTRU1fUkVGJzogJ0BTRU1fUkVGQCcsXHJcbiAgICAnRDMwX1JFRic6ICdARDMwX1JFRkAnLFxyXG4gICAgJ01FU19SRUYnOiAnQE1FU19SRUZAJyxcclxuICAgICdTRU1fTlVNJzogJ0BTRU1fTlVNQCcsXHJcbiAgICAncmVzcHMxJzogJ0ByZXNwczFAJyxcclxuICAgICdwYXJlbnRzMSc6ICdAcGFyZW50czFAJyxcclxuICAgICdyZXNwaTEnOiAnQHJlc3BpMUAnLFxyXG4gICAgJ3BhcmVudGkxJzogJ0BwYXJlbnRpMUAnLFxyXG4gICAgJ25qZWZlJzogJ0BuamVmZUAnLFxyXG4gICAgJ2ZyZWFsaXonOiAnQGZyZWFsaXpAJyxcclxuICAgICdjYW50aV9ob2dhcmVzJzogJ0BjYW50aV9ob2dhcmVzQCdcclxufTtcclxuXHJcbnZhciByZWR1Y2VycyA9IHtcclxuICAgIE1PRE9fREVTUExJRUdVRTogKHBheWxvYWQ6IHsgbW9kb0Rlc3BsaWVndWU6IE1vZG9EZXNwbGllZ3VlIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvRGVzcGxpZWd1ZTogcGF5bG9hZC5tb2RvRGVzcGxpZWd1ZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENBTUJJQVJfTU9ET19ETTogKHBheWxvYWQ6IHsgbW9kb0RNOiBNb2RvRE0gfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vZG9ETTogcGF5bG9hZC5tb2RvRE1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBDQU1CSUFSX0ZPUk1VTEFSSU86IChwYXlsb2FkOiB7IGZvclBrOiBGb3JQaywgYXBpbGFyVnVlbHRhOiBib29sZWFuIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgdmFyIGZvclBrID0gcGF5bG9hZC5mb3JQaztcclxuICAgICAgICAgICAgdmFyIHBpbGFGb3JQayA9IHBheWxvYWQuYXBpbGFyVnVlbHRhID8gKFxyXG4gICAgICAgICAgICAgICAgc3RhdGUub3BjaW9uZXMuZm9yUGsgPT0gbnVsbCA/IFtdIDogWy4uLnN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQaywgc3RhdGUub3BjaW9uZXMuZm9yUGtdXHJcbiAgICAgICAgICAgICkgOiBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGs7XHJcbiAgICAgICAgICAgIGZvclBrVG9VcmwoZm9yUGssIHBpbGFGb3JQayk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgVk9MVkVSX0RFX0ZPUk1VTEFSSU86ICh7IG1hZ25pdHVkUmV0cm9jZXNvIH06IHsgbWFnbml0dWRSZXRyb2Nlc286IG51bWJlciB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQa1tzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsubGVuZ3RoIC0gbWFnbml0dWRSZXRyb2Nlc29dIHx8IG51bGw7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGsgPSBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsuc2xpY2UoMCwgc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLmxlbmd0aCAtIG1hZ25pdHVkUmV0cm9jZXNvKTtcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQayxcclxuICAgICAgICAgICAgICAgICAgICBwaWxhRm9yUGtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBWT0xWRVJfSERSOiAoX3BheWxvYWQ6IHt9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IG51bGw7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGs6IEZvclBrW10gPSBbXTtcclxuICAgICAgICAgICAgZm9yUGtUb1VybChmb3JQaywgcGlsYUZvclBrKTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQayxcclxuICAgICAgICAgICAgICAgICAgICBwaWxhRm9yUGtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBTRVRfT1BDSU9OOiAocGF5bG9hZDogeyBvcGNpb246IGtleW9mIENhc29TdGF0ZVsnb3BjaW9uZXMnXSwgdmFsb3I6IGFueSB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgLy9zaSBjYW1iaWEgZGUgcGFudGFsbGEgcG9yIGFjw6EgcmVzZXRlbyBlbCBhdmlzbyBwb3IgbGFzIGR1ZGFzXHJcbiAgICAgICAgICAgICAgICAgICAgYXZpc29QZXJzaXN0ZW50ZTogcGF5bG9hZC5vcGNpb24gPT0gJ3BhbnRhbGxhQWN0dWFsJyA/IG51bGwgOiBzdGF0ZS5vcGNpb25lcy5hdmlzb1BlcnNpc3RlbnRlLFxyXG4gICAgICAgICAgICAgICAgICAgIFtwYXlsb2FkLm9wY2lvbl06IHBheWxvYWQudmFsb3JcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBSRVNFVF9PUENJT05FUzogKF9wYXlsb2FkOiB7fSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhbnRhbGxhQWN0dWFsOiAnaGRyJyxcclxuICAgICAgICAgICAgICAgICAgICBhdmlzb1BlcnNpc3RlbnRlOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrOiBudWxsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgU0VUX1BBTlRBTExBX0FDVFVBTDogKHBheWxvYWQ6IHsgcGFudGFsbGE6IFBhbnRhbGxhTmF2ZWdhY2lvbiwgYXZpc29QZXJzaXN0ZW50ZTogeyB0aXBvOiAnaW5mbycgfCAnc3VjY2VzcycgfCAnZXJyb3InLCBtZW5zYWplOiBzdHJpbmcgfSB8IG51bGwgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhbnRhbGxhQWN0dWFsOiBwYXlsb2FkLnBhbnRhbGxhLFxyXG4gICAgICAgICAgICAgICAgICAgIGF2aXNvUGVyc2lzdGVudGU6IHBheWxvYWQuYXZpc29QZXJzaXN0ZW50ZSB8fCBudWxsXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ09ORklSTUFSX0JPUlJBUl9SRVNQVUVTVEE6IChwYXlsb2FkOiB7IGZvclBrOiBGb3JQaywgdmFyaWFibGU6IElkVmFyaWFibGUgfCBudWxsIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazogcGF5bG9hZC5mb3JQayxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvQm9ycmFyUmVzcHVlc3RhOiBwYXlsb2FkLnZhcmlhYmxlXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ0FNQklBUl9DT01PRElOOiAocGF5bG9hZDogeyBpZENvbW9kaW46IElkQ29tb2RpbiwgdmFsb3I6IGFueSB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGFjdHVhbCA9IHN0YXRlLm9wY2lvbmVzPy5jb21vZGluZXMgfHwgY29tb2RpbmVzSW5pY2lhbGVzO1xyXG4gICAgICAgICAgICBpZiAoYWN0dWFsW3BheWxvYWQuaWRDb21vZGluXSA9PT0gcGF5bG9hZC52YWxvcikgcmV0dXJuIHN0YXRlO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW9kaW5lczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5hY3R1YWwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwYXlsb2FkLmlkQ29tb2Rpbl06IHBheWxvYWQudmFsb3JcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ0FNQklBUl9DT01PRElORVM6IChwYXlsb2FkOiBSZWNvcmQ8SWRDb21vZGluLCBzdHJpbmc+KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIC8vIENoZXF1ZW8gZGUgaWd1YWxkYWQgc3VwZXJmaWNpYWwgcGFyYSBldml0YXIgY2xvbmVzIHNpIE5BREEgY2FtYmnDs1xyXG4gICAgICAgICAgICBjb25zdCBhY3R1YWwgPSBzdGF0ZS5vcGNpb25lcz8uY29tb2RpbmVzIHx8IGNvbW9kaW5lc0luaWNpYWxlcztcclxuICAgICAgICAgICAgY29uc3QgY2FtYmlvID0gIXN0YXRlLm9wY2lvbmVzPy5jb21vZGluZXMgfHwgT2JqZWN0LmtleXMocGF5bG9hZCkuc29tZShcclxuICAgICAgICAgICAgICAgIChrZXkpID0+IGFjdHVhbFtrZXkgYXMgSWRDb21vZGluXSAhPT0gcGF5bG9hZFtrZXkgYXMgSWRDb21vZGluXVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFjYW1iaW8pIHJldHVybiBzdGF0ZTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tb2RpbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbW9kaW5lc0luaWNpYWxlcywgLy8gQmxhbnF1ZWEvUmVzZXRlYSBkZWZhdWx0cyBzaSBmYWx0YW4gY2xhdmVzXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnBheWxvYWRcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB0eXBlIEFjdGlvbkZvcm11bGFyaW9TdGF0ZSA9IEFjdGlvbnNGcm9tPHR5cGVvZiByZWR1Y2Vycz47XHJcbi8qIEZJTiBBQ0NJT05FUyAqL1xyXG5cclxuZXhwb3J0IGNvbnN0IGRpc3BhdGNoZXJzID0gY3JlYXRlRGlzcGF0Y2hlcnMocmVkdWNlcnMpO1xyXG5cclxuaW50ZXJmYWNlIElEYXRhU2VwYXJhZGE8VCBleHRlbmRzIHsgdGlwb2M6IHN0cmluZyB9PiB7XHJcbiAgICBkYXRhOiBULFxyXG4gICAgY2hpbGRzOiBJRGF0YVNlcGFyYWRhPFQ+W11cclxufVxyXG5cclxudHlwZSBJRGF0YUNvbkNhc2lsbGVyb3M8VD4gPSBUICYge1xyXG4gICAgY2FzaWxsZXJvczogcmVhZG9ubHkgSURhdGFDb25DYXNpbGxlcm9zPFQ+W11cclxufVxyXG5cclxuY29uc3QgY2FzaWxsZXJvVmFjaW8gPSB7XHJcbiAgICBzYWx0bzogbnVsbCwgZGVzcGxpZWd1ZTogbnVsbCwgYWNsYXJhY2lvbjogbnVsbCwgdmVyX2lkOiBudWxsLCBjYXNpbGxlcm9zOiBbXSwgbGVlcjogbnVsbCxcclxuICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOiBudWxsLCBkZXNwbGllZ3VlQ29udGVuaWRvOiBudWxsLCBkZXNwbGllZ3VlT2N1bHRhOiBudWxsLCBkZXNwbGllZ3VlVGlwb0lucHV0OiBudWxsXHJcbn1cclxuXHJcbmNvbnN0IG9wY2lvbmVzU2lObzogT3BjaW9uW10gPSBbXHJcbiAgICB7IC4uLmNhc2lsbGVyb1ZhY2lvLCBjYXNpbGxlcm86IDEsIHRpcG9jOiAnTycsIG5vbWJyZTogJ1PDrScgfSxcclxuICAgIHsgLi4uY2FzaWxsZXJvVmFjaW8sIGNhc2lsbGVybzogMiwgdGlwb2M6ICdPJywgbm9tYnJlOiAnTm8nIH0sXHJcbl1cclxuXHJcbnR5cGUgQ2FyYWNlcml6YWNpb25Fc3RhZG9Sb3dWYWxpZGF0b3IgPSB7XHJcbiAgICBjb3JyZWN0bzogYm9vbGVhbixcclxuICAgIGNvblZhbG9yOiBib29sZWFuIHwgbnVsbCwgLy8gbnVsbCA9IHVua25vd25cclxufVxyXG5cclxuZnVuY3Rpb24gYXBsYW5hckxhQ3VydmE8VCBleHRlbmRzIHsgdGlwb2M6IHN0cmluZywgZGVzcGxpZWd1ZT86IHN0cmluZyB9PihjYXNpbGxlcm9zRGF0YTogSURhdGFTZXBhcmFkYTxUPik6IElEYXRhQ29uQ2FzaWxsZXJvczxUIHwgT3BjaW9uPiB7XHJcbiAgICB2YXIgZGF0YSA9IGNhc2lsbGVyb3NEYXRhLmRhdGFcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZGF0YSxcclxuICAgICAgICBkZXNwbGllZ3VlQ29udGVuaWRvOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdob3Jpem9udGFsJykgPyAnaG9yaXpvbnRhbCcgOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCd2ZXJ0aWNhbCcpID8gJ3ZlcnRpY2FsJyA6IG51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZUVuY2FiZXphZG86IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ2xhdGVyYWwnKSA/ICdsYXRlcmFsJyA6IGRhdGEuZGVzcGxpZWd1ZT8uaW5jbHVkZXMoJ3N1cGVyaW9yJykgPyAnc3VwZXJpb3InIDogbnVsbCxcclxuICAgICAgICBkZXNwbGllZ3VlT2N1bHRhOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdvY3VsdGFyJykgPz8gbnVsbCxcclxuICAgICAgICBkZXNwbGllZ3VlVGlwb0lucHV0OiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCd0ZWxlZm9ubycpID8gJ3RlbCcgOiBudWxsLFxyXG4gICAgICAgIGNhc2lsbGVyb3M6ICFjYXNpbGxlcm9zRGF0YS5jaGlsZHMubGVuZ3RoICYmIGNhc2lsbGVyb3NEYXRhLmRhdGEudGlwb2MgPT0gJ09NJyA/IG9wY2lvbmVzU2lObyA6XHJcbiAgICAgICAgICAgIGNhc2lsbGVyb3NEYXRhLmNoaWxkcy5tYXAoY2FzaWxsZXJvID0+IGFwbGFuYXJMYUN1cnZhKGNhc2lsbGVybykpXHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIHR5cGUgQW55UmVmPFQgZXh0ZW5kcyB7fT49W1QsIGtleW9mIFRdO1xyXG5cclxuZnVuY3Rpb24gcmVsbGVuYXJWYXJpYWJsZXNZT3BjaW9uZXMoaWRGb3JtdWxhcmlvOiBJZEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmE6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsIGNhc2lsbGVybzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIHVuaWRhZEFuYWxpc2lzPzogc3RyaW5nIHwgbnVsbCxcclxuICAgIHN1Ym9yZGluYWRhVmFyPzogSWRWYXJpYWJsZSwgc3Vib3JkaW5hZGFWYWxvcj86IGFueVxyXG4pIHtcclxuICAgIGlmIChjYXNpbGxlcm8udmFyX25hbWUgIT0gbnVsbCB8fCBjYXNpbGxlcm8udGlwb2MgPT0gJ0ZJTFRSTycpIHtcclxuICAgICAgICB2YXIgdmFyX25hbWU6IElkVmFyaWFibGVcclxuICAgICAgICBpZiAoY2FzaWxsZXJvLnRpcG9jID09ICdGSUxUUk8nKSB7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgcG9uZ28gY29tbyBub21icmUgZGUgdmFyaWFibGUgZWwgZmlsdHJvO1xyXG4gICAgICAgICAgICB2YXJfbmFtZSA9IGNhc2lsbGVyby5jYXNpbGxlcm87XHJcbiAgICAgICAgfSBlbHNlIGlmIChjYXNpbGxlcm8udmFyX25hbWUuZW5kc1dpdGgoJyEnKSkge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIGxhcyB2YXJpYWJsZXMgZXNwZWpvIHNvbiBsYXMgcXVlIHRlcm1pbmFuIGVuICFcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8udmFyX25hbWVfZXNwZWNpYWwucmVwbGFjZSgvISskLywgJycpO1xyXG4gICAgICAgICAgICBjYXNpbGxlcm8udmFyX25hbWUgPSB2YXJfbmFtZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YXJfbmFtZSA9IGNhc2lsbGVyby52YXJfbmFtZVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgdmFyaWFibGVEZWYgPSB7XHJcbiAgICAgICAgICAgIHRpcG86IGNhc2lsbGVyby50aXBvYyA9PSAnRklMVFJPJyA/ICdmaWx0cm8nIDogY2FzaWxsZXJvLnRpcG9jID09ICdPTScgfHwgY2FzaWxsZXJvLnRpcG92YXIgPT0gJ3NpX25vJyA/ICdvcGNpb25lcycgOiBjYXNpbGxlcm8udGlwb3ZhcixcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBvcHRhdGl2byBwb2Ryw61hIG5vIGV4aXN0aXIsIHF1ZWRhcsOhIG51bGwuXHJcbiAgICAgICAgICAgIG9wdGF0aXZhOiBjYXNpbGxlcm8ub3B0YXRpdm8hLFxyXG4gICAgICAgICAgICBvcGNpb25lczogKGNhc2lsbGVyby50aXBvYyA9PSAnT00nIHx8IGNhc2lsbGVyby50aXBvdmFyID09ICdvcGNpb25lcycgfHwgY2FzaWxsZXJvLnRpcG92YXIgPT0gJ3NpX25vJyA/XHJcbiAgICAgICAgICAgICAgICBsaWtlQXIuY3JlYXRlSW5kZXgoY2FzaWxsZXJvLmNhc2lsbGVyb3MsICdjYXNpbGxlcm8nKSA6IHt9KSBhcyB1bmtub3duIGFzIHsgW2tleTogc3RyaW5nXTogUm93VmFsaWRhdG9yT3BjaW9uPElkVmFyaWFibGU+IH0sXHJcbiAgICAgICAgICAgIHNhbHRvOiBjYXNpbGxlcm8uc2FsdG8gYXMgSWRWYXJpYWJsZSxcclxuICAgICAgICAgICAgc2FsdG9Oc05yOiBjYXNpbGxlcm8uc2FsdG9fbnNfbmMgYXMgSWRWYXJpYWJsZSB8fCBudWxsLFxyXG4gICAgICAgICAgICBmdW5jaW9uSGFiaWxpdGFyOiBjYXNpbGxlcm8uZXhwcmVzaW9uX2hhYmlsaXRhcl9qcyxcclxuICAgICAgICAgICAgZnVuY2lvbkF1dG9JbmdyZXNhcjogY2FzaWxsZXJvLmV4cHJlc2lvbl9hdXRvaW5ncmVzYXJfanMsXHJcbiAgICAgICAgICAgIGNhbGN1bGFkYTpcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgLy8gVE9ETy4gQXZlcmlndWFyIHNpIGxhcyBwcmVndW50YXMgeSBmaWx0cm9zIHB1ZWRlbiB0ZW5lciB1bmlkYWQgZGUgYW7DoWxpc2lzXHJcbiAgICAgICAgICAgICAgICBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzICYmIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMgIT0gdW5pZGFkQW5hbGlzaXNcclxuICAgICAgICAgICAgICAgIHx8IGNhc2lsbGVyby5jYWxjdWxhZGEsXHJcbiAgICAgICAgICAgIGxpYnJlOiBjYXNpbGxlcm8ubGlicmVcclxuICAgICAgICB9IGFzICh0eXBlb2YgZXN0cnVjdHVyYS52YXJpYWJsZXMpW0lkVmFyaWFibGVdXHJcbiAgICAgICAgaWYgKHN1Ym9yZGluYWRhVmFsb3IgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHZhcmlhYmxlRGVmLnN1Ym9yZGluYWRhVmFyID0gc3Vib3JkaW5hZGFWYXI7XHJcbiAgICAgICAgICAgIHZhcmlhYmxlRGVmLnN1Ym9yZGluYWRhVmFsb3IgPSBzdWJvcmRpbmFkYVZhbG9yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlc3RydWN0dXJhLnZhcmlhYmxlc1t2YXJfbmFtZV0gPSB2YXJpYWJsZURlZjtcclxuICAgIH0gZWxzZSBpZiAoY2FzaWxsZXJvLnRpcG9jID09ICdCRicpIHtcclxuICAgICAgICAvLyB2YXIgdmFyX25hbWUgPSAnJEIuRjonK2Nhc2lsbGVyby5zYWx0byBhcyBJZFZhcmlhYmxlOyAgICAvL29yaWdpbmFsXHJcbiAgICAgICAgdmFyIHNhbHRvTm9tYnJlID0gY2FzaWxsZXJvLnNhbHRvIS5zdWJzdHIoMCwgMikgPT0gJ0Y6JyA/IGNhc2lsbGVyby5zYWx0byEuc2xpY2UoMikgOiBjYXNpbGxlcm8uc2FsdG87XHJcbiAgICAgICAgY29uc3QgcmVxdWllcmVBZ3JlZ2FyID0gY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAmJiBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzICE9PSB1bmlkYWRBbmFsaXNpc1xyXG4gICAgICAgIGNhc2lsbGVyby52YXJfbmFtZXNfQkYgPSBjYXNpbGxlcm8udmFyX25hbWVzX0JGIHx8IFtdO1xyXG5cclxuICAgICAgICBpZiAocmVxdWllcmVBZ3JlZ2FyKSB7XHJcbiAgICAgICAgICAgIHZhciBuZXdWYXJOYW1lQWdyZWdhciA9ICckQi5GOicgKyBzYWx0b05vbWJyZSArICdfYWdyZWdhcicgYXMgSWRWYXJpYWJsZTtcclxuICAgICAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lc19CRi5wdXNoKG5ld1Zhck5hbWVBZ3JlZ2FyKTtcclxuICAgICAgICAgICAgZXN0cnVjdHVyYS52YXJpYWJsZXNbbmV3VmFyTmFtZUFncmVnYXJdID0ge1xyXG4gICAgICAgICAgICAgICAgdGlwb3ZhcjogJ29wY2lvbmVzJyxcclxuICAgICAgICAgICAgICAgIGNhc2lsbGVyb3M6IFt7IHRpcG9jOiAnTycsIGNhc2lsbGVybzogMSwgbm9tYnJlOiAnc2knIH1dIGFzIE9wY2lvbltdLCAvLyBzZSB1c2EgcGFyYSBxdWUgbm8gc2VhIGxpYnJlIHkgZWwgcm93VmFsaWRhdG9yIGxhIHZlYVxyXG4gICAgICAgICAgICB9IGFzIFZhcmlhYmxlO1xyXG4gICAgICAgICAgICBjYXNpbGxlcm8ucHJpbWVyYV92YXJpYWJsZSA9IG5ld1Zhck5hbWVBZ3JlZ2FyO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgbmV3VmFyTmFtZSA9ICckQi5GOicgKyBzYWx0b05vbWJyZSBhcyBJZFZhcmlhYmxlO1xyXG4gICAgICAgIGNhc2lsbGVyby52YXJfbmFtZXNfQkYucHVzaChuZXdWYXJOYW1lKVxyXG4gICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW25ld1Zhck5hbWVdID0ge1xyXG4gICAgICAgICAgICB0aXBvdmFyOiAnb3BjaW9uZXMnLFxyXG4gICAgICAgICAgICBjYXNpbGxlcm9zOiBbeyB0aXBvYzogJ08nLCBjYXNpbGxlcm86IDEsIG5vbWJyZTogJ3NpJyB9XSBhcyBPcGNpb25bXSwgLy8gc2UgdXNhIHBhcmEgcXVlIG5vIHNlYSBsaWJyZSB5IGVsIHJvd1ZhbGlkYXRvciBsYSB2ZWFcclxuICAgICAgICB9IGFzIFZhcmlhYmxlO1xyXG4gICAgICAgIGNhc2lsbGVyby5wcmltZXJhX3ZhcmlhYmxlID0gY2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGUgfHwgbmV3VmFyTmFtZTtcclxuXHJcbiAgICB9XHJcbiAgICBpZiAoY2FzaWxsZXJvLmNhc2lsbGVyb3MpIHtcclxuICAgICAgICBjYXNpbGxlcm8uY2FzaWxsZXJvcy5mb3JFYWNoKChjYXNpbGxlcm9IaWpvOiBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcykgPT5cclxuICAgICAgICAgICAgcmVsbGVuYXJWYXJpYWJsZXNZT3BjaW9uZXMoaWRGb3JtdWxhcmlvLCBlc3RydWN0dXJhLCBjYXNpbGxlcm9IaWpvLCB1bmlkYWRBbmFsaXNpcywgY2FzaWxsZXJvLnZhcl9uYW1lID8gY2FzaWxsZXJvLnZhcl9uYW1lIDogY2FzaWxsZXJvLnRpcG9jID09ICdPJyA/IHN1Ym9yZGluYWRhVmFyIDogdW5kZWZpbmVkLCBjYXNpbGxlcm8udGlwb2MgPT0gJ08nID8gY2FzaWxsZXJvLmNhc2lsbGVybyA6IHVuZGVmaW5lZClcclxuICAgICAgICApXHJcbiAgICB9XHJcbn1cclxuXHJcbnR5cGUgUmVnaXN0cm9EZXN0aW5vcyA9IHsgW2Rlc3Rpbm8gaW4gSWREZXN0aW5vXTogSWRWYXJpYWJsZSB8IG51bGwgfTtcclxuXHJcbmZ1bmN0aW9uIG9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoY2FzaWxsZXJvOiBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgZGVzdGlub3M/OiBSZWdpc3Ryb0Rlc3Rpbm9zKTogUmVnaXN0cm9EZXN0aW5vcyB7XHJcbiAgICBpZiAoZGVzdGlub3MgPT0gbnVsbCkgcmV0dXJuIG9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoY2FzaWxsZXJvLCB7fSBhcyBSZWdpc3Ryb0Rlc3Rpbm9zKTtcclxuICAgIGlmIChjYXNpbGxlcm8udGlwb2MgPT0gJ0ZJTFRSTycpIHtcclxuICAgICAgICBkZXN0aW5vc1tjYXNpbGxlcm8uY2FzaWxsZXJvXSA9IGNhc2lsbGVyby5jYXNpbGxlcm8gYXMgSWRWYXJpYWJsZTtcclxuICAgIH0gZWxzZSBpZiAoY2FzaWxsZXJvLnRpcG9jICE9ICdGJyAmJiBjYXNpbGxlcm8udGlwb2MgIT0gJ08nICYmIGNhc2lsbGVyby50aXBvYyAhPSAnT00nKSB7XHJcbiAgICAgICAgZGVzdGlub3NbY2FzaWxsZXJvLmNhc2lsbGVyb10gPSBjYXNpbGxlcm8ucHJpbWVyYV92YXJpYWJsZSB8fCBudWxsXHJcbiAgICB9XHJcbiAgICBpZiAoY2FzaWxsZXJvLmNhc2lsbGVyb3MpIHtcclxuICAgICAgICBjYXNpbGxlcm8uY2FzaWxsZXJvcy5mb3JFYWNoKGMgPT4gb2J0ZW5lckRlc3Rpbm9zQ2FzaWxsZXJvcyhjLCBkZXN0aW5vcykpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRlc3Rpbm9zO1xyXG59XHJcblxyXG5mdW5jdGlvbiByZWxsZW5hckRlc3Rpbm9zKGVzdHJ1Y3R1cmE6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsIGRlc3Rpbm9zOiBSZWdpc3Ryb0Rlc3Rpbm9zKTogRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciB7XHJcbiAgICBmdW5jdGlvbiBvYnRlbmVyRGVzdGlubyhpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm86IElkVmFyaWFibGUgfCBudWxsIHwgdW5kZWZpbmVkIHwgSWRGaW4pOiBJZFZhcmlhYmxlIHwgbnVsbCB7XHJcbiAgICAgICAgcmV0dXJuIGlkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubyA9PSAnZmluJyBhcyBJZFZhcmlhYmxlID8gJ2ZpbicgYXMgSWRWYXJpYWJsZSA6IGlkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubyAhPSBudWxsICYmIGRlc3Rpbm9zW2lkVmFyaWFibGVRdWVUaWVuZVVuRGVzdGlubyBhcyBJZERlc3Rpbm9dIHx8IG51bGxcclxuICAgIH1cclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgLi4uZXN0cnVjdHVyYSxcclxuICAgICAgICB2YXJpYWJsZXM6IGxpa2VBcihlc3RydWN0dXJhLnZhcmlhYmxlcykubWFwKHZhcmlhYmxlRGVmID0+ICh7XHJcbiAgICAgICAgICAgIC4uLnZhcmlhYmxlRGVmLFxyXG4gICAgICAgICAgICBzYWx0bzogb2J0ZW5lckRlc3Rpbm8odmFyaWFibGVEZWYuc2FsdG8pLFxyXG4gICAgICAgICAgICBzYWx0b05zTnI6IG9idGVuZXJEZXN0aW5vKHZhcmlhYmxlRGVmLnNhbHRvTnNOciksXHJcbiAgICAgICAgICAgIG9wY2lvbmVzOiB2YXJpYWJsZURlZi5vcGNpb25lcyAhPSBudWxsID8gbGlrZUFyKHZhcmlhYmxlRGVmLm9wY2lvbmVzKS5tYXAob3BjaW9uRGVmID0+ICh7IHNhbHRvOiBvYnRlbmVyRGVzdGlubyhvcGNpb25EZWYuc2FsdG8pIH0pKS5wbGFpbigpIDogdW5kZWZpbmVkXHJcbiAgICAgICAgfSkpLnBsYWluKClcclxuICAgIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2VuZXJhckVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IoY2FzaWxsZXJvOiBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgaWRGb3JtdWxhcmlvOiBJZEZvcm11bGFyaW8pOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yIHtcclxuICAgIHZhciBlc3RydWN0dXJhSW5jb21wbGV0YTogRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciA9IHsgdmFyaWFibGVzOiB7fSwgbWFyY2FGaW46ICdmaW4nIH0gYXMgdW5rbm93biBhcyBFc3RydWN0dXJhUm93VmFsaWRhdG9yO1xyXG4gICAgcmVsbGVuYXJWYXJpYWJsZXNZT3BjaW9uZXMoaWRGb3JtdWxhcmlvLCBlc3RydWN0dXJhSW5jb21wbGV0YSwgY2FzaWxsZXJvLFxyXG4gICAgICAgIC8vIEB0cy1pZ25vcmUgdmVyIHNpIGN1YWxxdWllciBjb3NhIHB1ZWRlIHRlbmVyIHVuaWRhZF9hbmFsaXNpc1xyXG4gICAgICAgIGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXNcclxuICAgICk7XHJcbiAgICB2YXIgZGVzdGlub3MgPSBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybyk7XHJcbiAgICByZXR1cm4gcmVsbGVuYXJEZXN0aW5vcyhlc3RydWN0dXJhSW5jb21wbGV0YSwgZGVzdGlub3MpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gcmVwbGFjZVNwZWNpYWxXb3Jkcyh0ZXh0OiBzdHJpbmcsIG5vbWJyZTogc3RyaW5nLCBhcGVsbGlkbzogc3RyaW5nLCByZXN1bHRhZG86IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBmdW5jdGlvbiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIodGV4dDogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyB0ZXh0LnNsaWNlKDEpO1xyXG4gICAgfVxyXG4gICAgdmFyIHNpbXBsaWZpY2F0ZWRDaGFyczogeyBbazogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgICAgXCIjbm9tYnJlXCI6IGNhcGl0YWxpemVGaXJzdExldHRlcihub21icmUpLFxyXG4gICAgICAgIFwiI2FwZWxsaWRvXCI6IGNhcGl0YWxpemVGaXJzdExldHRlcihhcGVsbGlkbyksXHJcbiAgICAgICAgXCIjcmVzdWx0YWRvXCI6IHJlc3VsdGFkbyxcclxuICAgIH07XHJcbiAgICB2YXIgcmUgPSBuZXcgUmVnRXhwKE9iamVjdC5rZXlzKHNpbXBsaWZpY2F0ZWRDaGFycykuam9pbihcInxcIiksIFwiZ2lcIik7XHJcblxyXG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShyZSwgZnVuY3Rpb24gKG1hdGNoZWQpIHtcclxuICAgICAgICByZXR1cm4gc2ltcGxpZmljYXRlZENoYXJzW21hdGNoZWQudG9Mb3dlckNhc2UoKV07XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdvdG9Db25zaXN0aXIob3BlcmF0aXZvOiBJZE9wZXJhdGl2bywgdGFyZWE6IElkVGFyZWEsIGVuYzogSWRFbmMpIHtcclxuICAgIC8vIFRPRE8tMjAyMy0wMzogcHJvYmFyIGNvbiBlc3RvOlxyXG4gICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbiArIGxvY2F0aW9uLnBhdGhuYW1lfS8uLi9tZW51I3c9Y29uc2lzdGlyX2VuY3Vlc3RhJnVwPSR7SlNPTjRhbGwudG9VcmwoeyBvcGVyYXRpdm8sIHRhcmVhLCBlbmMgfSl9JmF1dG9wcm9jZWQ9dHJ1ZWApO1xyXG4gICAgLy8gaGlzdG9yeS5yZXBsYWNlU3RhdGUobnVsbCwgJycsIGAke2xvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZX0vLi4vbWVudSN3PWNvbnNpc3Rpcl9lbmN1ZXN0YSZ1cD17XCJvcGVyYXRpdm9cIjpcIiR7b3BlcmF0aXZvfVwiLFwidGFyZWFcIjpcIiR7dGFyZWF9XCIsXCJlbmN1ZXN0YVwiOiR7ZW5jdWVzdGF9fSZhdXRvcHJvY2VkPXRydWVgKTtcclxuICAgIGxvY2F0aW9uLnJlbG9hZCgpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gYWRhcHRhckVzdHJ1Y3R1cmEoZXN0cnVjdHVyYUJhY2tlbmQ6YW55KSB7XHJcbiAgICB2YXIgZXN0cnVjdHVyYTogRXN0cnVjdHVyYSA9IGVzdHJ1Y3R1cmFCYWNrZW5kO1xyXG4gICAgdmFyIGNhc2lsbGVyb3NPcmlnaW5hbGVzOiB7fSA9IGVzdHJ1Y3R1cmEuZm9ybXVsYXJpb3M7XHJcbiAgICB2YXIgbWFpbkZvcm06IElkRm9ybXVsYXJpbyB8IHVuZGVmaW5lZDtcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgdmFyIGNhc2lsbGVyb3NUb2Rvc0Zvcm11bGFyaW9zOiB7IFtmIGluIElkRm9ybXVsYXJpb106IHsgY2FzaWxsZXJvczogRm9ybXVsYXJpbywgZXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjogRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciB9IH0gPVxyXG4gICAgICAgIGxpa2VBcihjYXNpbGxlcm9zT3JpZ2luYWxlcykubWFwKFxyXG4gICAgICAgICAgICAoY2FzaWxsZXJvc0plcmFycXVpemFkb3M6IGFueSwgaWRGb3JtdWxhcmlvKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY2FzaWxsZXJvc0FwbGFuYWRvczogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MgPSBhcGxhbmFyTGFDdXJ2YShjYXNpbGxlcm9zSmVyYXJxdWl6YWRvcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoY2FzaWxsZXJvc0FwbGFuYWRvcy50aXBvYyA9PSAnRicgJiYgY2FzaWxsZXJvc0FwbGFuYWRvcy5mb3JtdWxhcmlvX3ByaW5jaXBhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1haW5Gb3JtID0gaWRGb3JtdWxhcmlvO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXNpbGxlcm9zOiBjYXNpbGxlcm9zQXBsYW5hZG9zLFxyXG4gICAgICAgICAgICAgICAgICAgIGVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I6IGdlbmVyYXJFc3RydWN0dXJhUm93VmFsaWRhdG9yKGNhc2lsbGVyb3NBcGxhbmFkb3MsIGlkRm9ybXVsYXJpbylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICkucGxhaW4oKTtcclxuICAgIGVzdHJ1Y3R1cmEuZm9ybXVsYXJpb3MgPSBjYXNpbGxlcm9zVG9kb3NGb3JtdWxhcmlvc1xyXG4gICAgcmV0dXJuIGVzdHJ1Y3R1cmE7XHJcbn1cclxuXHJcbmxldCBzdG9yZUZvcm11bGFyaW9JbnN0YW5jZTogUmV0dXJuVHlwZTx0eXBlb2YgY3JlYXRlU3RvcmU+IHwgbnVsbCA9IG51bGw7XHJcblxyXG5cclxuXHJcbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhclN0b3JlRm9ybXVsYXJpbyhvcHRzOiB7IG9wZXJhdGl2bz86IElkT3BlcmF0aXZvLCBmb3JQa1JhaXo/OiBGb3JQa1JhaXogfSkge1xyXG4gICAgdmFyIGdldENhc29TdGF0ZSA9IGdldEZvcm1SZW5kZXJlcigpLmdldENhc29TdGF0ZS5iaW5kKGdldEZvcm1SZW5kZXJlcigpKTtcclxuICAgIHZhciBzZXRDYXNvU3RhdGUgPSBnZXRGb3JtUmVuZGVyZXIoKS5zZXRDYXNvU3RhdGUuYmluZChnZXRGb3JtUmVuZGVyZXIoKSk7XHJcblxyXG4gICAgdmFyIGxvYWRTdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIGxvYWRTdGF0ZSgpOiBQcm9taXNlPENhc29TdGF0ZT4ge1xyXG4gICAgICAgIHZhciBjYXNvU3RhdGU6IENhc29TdGF0ZSB8IG51bGwgPSBnZXRDYXNvU3RhdGUoKTtcclxuICAgICAgICB2YXIgaW5pdGlhbFN0YXRlID0ge1xyXG4gICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgZm9yUGs6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBwaWxhRm9yUGs6IFtdLFxyXG4gICAgICAgICAgICAgICAgbW9kb0Rlc3BsaWVndWU6ICdyZWxldmFtaWVudG8nLFxyXG4gICAgICAgICAgICAgICAgbW9kb0RpcmVjdG86IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgY29uQ2FtcG9PcGNpb25lczogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICBzYWx0b0F1dG9tYXRpY286IHRydWUsXHJcbiAgICAgICAgICAgICAgICBtb2RvQm9ycmFyUmVzcHVlc3RhOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcGFudGFsbGFBY3R1YWw6ICdoZHInLFxyXG4gICAgICAgICAgICAgICAgYXZpc29QZXJzaXN0ZW50ZTogbnVsbCxcclxuICAgICAgICAgICAgICAgIGNvbW9kaW5lczogY29tb2RpbmVzSW5pY2lhbGVzXHJcbiAgICAgICAgICAgIH0gYXMgQ2Fzb1N0YXRlW1wib3BjaW9uZXNcIl0sIC8vIHBvbmVyIGxvcyB2YWxvcmVzIHBvciBkZWZlY3RvIG3DoXMgYWJham9cclxuICAgICAgICB9IGFzIENhc29TdGF0ZTtcclxuICAgICAgICBpZiAoY2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IHtcclxuICAgICAgICAgICAgICAgIC4uLmluaXRpYWxTdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uaW5pdGlhbFN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLmNhc29TdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBjb21vZGluZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uY29tb2RpbmVzSW5pY2lhbGVzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oY2Fzb1N0YXRlLm9wY2lvbmVzPy5jb21vZGluZXMgfHwge30pXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvcHRzLmZvclBrUmFpeikge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMuZm9yUGsgPSBvcHRzLmZvclBrUmFpejtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLm1vZG9EaXJlY3RvID0gISFvcHRzLmZvclBrUmFpejtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQayA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYWRkclBhcmFtcyA9IG15T3duLlVyaVNlYXJjaFRvT2JqZWN0KGxvY2F0aW9uLmhhc2ggfHwgbG9jYXRpb24uc2VhcmNoIHx8ICcnKTtcclxuICAgICAgICBpZiAoYWRkclBhcmFtcy5zdGF0ZV9mb3JQaykge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUub3BjaW9uZXMuZm9yUGsgPSBKU09OLnBhcnNlKGFkZHJQYXJhbXMuc3RhdGVfZm9yUGspO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGspIHtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQayA9IChhZGRyUGFyYW1zLnN0YXRlX3BpbGFGb3JQayBhcyBzdHJpbmcpLnNwbGl0KCd8JykubWFwKGogPT4gSlNPTjRhbGwucGFyc2UoaikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gaW5pdGlhbFN0YXRlO1xyXG4gICAgfVxyXG4gICAgdmFyIHNhdmVTdGF0ZSA9IGZ1bmN0aW9uIHNhdmVTdGF0ZShzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgc2V0Q2Fzb1N0YXRlKHN0YXRlKTtcclxuICAgIH1cclxuICAgIC8qIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIHZhciBpbml0aWFsU3RhdGU6IENhc29TdGF0ZSA9IGF3YWl0IGxvYWRTdGF0ZSgpO1xyXG4gICAgY29uc3QgaGRyUmVkdWNlciA9IGNyZWF0ZVJlZHVjZXIocmVkdWNlcnMsIGluaXRpYWxTdGF0ZSk7XHJcbiAgICAvKiBGSU4gREVGSU5JQ0lPTiBDT05UUk9MQURPUiAqL1xyXG4gICAgLyogQ0FSR0EgWSBHVUFSREFETyBERSBTVEFURSAqL1xyXG4gICAgLyogQ1JFQUNJT04gU1RPUkUgKi9cclxuICAgIGNvbnN0IHN0b3JlID0gY3JlYXRlU3RvcmUoaGRyUmVkdWNlciwgaW5pdGlhbFN0YXRlKTtcclxuICAgIHN0b3JlRm9ybXVsYXJpb0luc3RhbmNlID0gc3RvcmU7XHJcbiAgICBzYXZlU3RhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XHJcbiAgICBzdG9yZS5zdWJzY3JpYmUoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHNhdmVTdGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcclxuICAgIH0pO1xyXG4gICAgLyogRklOIENSRUFDSU9OIFNUT1JFICovXHJcbiAgICAvL0hEUiBDT04gU1RPUkUgQ1JFQURPXHJcbiAgICByZXR1cm4gc3RvcmU7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRTdG9yZUZvcm11bGFyaW8oKSB7XHJcbiAgICBpZiAoIXN0b3JlRm9ybXVsYXJpb0luc3RhbmNlKSB7XHJcbiAgICAgICAgY29uc29sZS53YXJuKFwiSW50ZW50YXN0ZSBhY2NlZGVyIGEgbGEgc3RvcmUgYW50ZXMgZGUgcXVlIGZ1ZXJhIGNyZWFkYS5cIik7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RvcmVGb3JtdWxhcmlvSW5zdGFuY2U7XHJcbn0iXX0=
|
|
324
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVkdXgtZm9ybXVsYXJpby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQThWQSxrREFjQztJQUVELHNDQUtDO0lBRUQsOENBb0JDO0lBTUQsb0RBaUVDO0lBRUQsZ0RBS0M7SUF2ZEQsaUNBQTJDO0lBQzNDLG1DQWVpQjtJQUNqQiw2REFBb0Y7SUFDcEYsa0NBQWtDO0lBRWxDLHFDQUFxQztJQUdyQyxtREFBa0Q7SUFFbEQsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBRWYsU0FBUyxVQUFVLENBQUMsS0FBbUIsRUFBRSxTQUFrQjtRQUN2RCxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLElBQUksSUFBSSxRQUFRLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2pGLEtBQUssQ0FBQyxpQkFBaUIsaUNBQ2hCLFVBQVUsS0FDYixXQUFXLEVBQUUsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFBLG9CQUFZLEVBQUMsS0FBSyxDQUFDLEVBQ3pELGVBQWUsRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLG9CQUFZLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQ3hELENBQUM7SUFDUCxDQUFDO0lBRVksUUFBQSxrQkFBa0IsR0FBOEI7UUFDekQsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsU0FBUyxFQUFFLFdBQVc7UUFDdEIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsUUFBUSxFQUFFLFVBQVU7UUFDcEIsVUFBVSxFQUFFLFlBQVk7UUFDeEIsT0FBTyxFQUFFLFNBQVM7UUFDbEIsU0FB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dUIsRUFBRSxDQUFDO1lBQzNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsMERBQTBELENBQUMsQ0FBQztRQUM3RSxDQUFDO1FBQ0QsT0FBTyx1QkFBdUIsQ0FBQztJQUNuQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlU3RvcmUsIFN0b3JlIH0gZnJvbSBcInJlZHV4XCI7XHJcbmltcG9ydCB7XHJcbiAgICBDYXNpbGxlcm9zSW1wbGVtZW50YWRvcywgQ2Fzb1N0YXRlLFxyXG4gICAgRXN0YWRvQ2FyZ2EsIEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IsXHJcbiAgICBGb3JtdWxhcmlvLCBGb3JQaywgRm9yUGtSYWl6LFxyXG4gICAgSWRDYXJnYSwgSWREZXN0aW5vLCBJZEZvcm11bGFyaW8sIElkVmFyaWFibGUsIElkT3BlcmF0aXZvLFxyXG4gICAgTW9kb0Rlc3BsaWVndWUsXHJcbiAgICBPcGNpb24sXHJcbiAgICB0b1BsYWluRm9yUGssXHJcbiAgICBJZEZpbixcclxuICAgIElkRW5jLFxyXG4gICAgSWRUYXJlYSxcclxuICAgIEVzdHJ1Y3R1cmEsXHJcbiAgICBNb2RvRE0sXHJcbiAgICBQYW50YWxsYU5hdmVnYWNpb24sXHJcbiAgICBJZENvbW9kaW4sXHJcbn0gZnJvbSBcIi4vdGlwb3NcIjtcclxuaW1wb3J0IHsgY3JlYXRlUmVkdWNlciwgY3JlYXRlRGlzcGF0Y2hlcnMsIEFjdGlvbnNGcm9tIH0gZnJvbSBcInJlZHV4LXR5cGVkLXJlZHVjZXJcIjtcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcbmltcG9ydCAqIGFzIGJlc3RHbG9iYWxzIGZyb20gXCJiZXN0LWdsb2JhbHNcIjtcclxuaW1wb3J0ICogYXMgSlNPTjRhbGwgZnJvbSBcImpzb240YWxsXCI7XHJcblxyXG5pbXBvcnQgeyBPcGNpb24gYXMgUm93VmFsaWRhdG9yT3BjaW9uIH0gZnJvbSBcInJvdy12YWxpZGF0b3JcIjtcclxuaW1wb3J0IHsgZ2V0Rm9ybVJlbmRlcmVyIH0gZnJvbSBcIi4vcmVuZGVyLWNvbmZpZ1wiO1xyXG5cclxudmFyIG15ID0gbXlPd247XHJcblxyXG5mdW5jdGlvbiBmb3JQa1RvVXJsKGZvclBrOiBGb3JQayB8IG51bGwsIHBpbGFGb3JQazogRm9yUGtbXSkge1xyXG4gICAgdmFyIGFkZHJQYXJhbXMgPSBteU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNoIHx8IGxvY2F0aW9uLnNlYXJjaCB8fCAnJyk7XHJcbiAgICBteU93bi5yZXBsYWNlQWRkclBhcmFtcyh7XHJcbiAgICAgICAgLi4uYWRkclBhcmFtcyxcclxuICAgICAgICBzdGF0ZV9mb3JQazogZm9yUGsgPT0gbnVsbCA/ICdudWxsJyA6IHRvUGxhaW5Gb3JQayhmb3JQayksXHJcbiAgICAgICAgc3RhdGVfcGlsYUZvclBrOiBwaWxhRm9yUGsubWFwKHRvUGxhaW5Gb3JQaykuam9pbignfCcpXHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGNvbnN0IGNvbW9kaW5lc0luaWNpYWxlczogUmVjb3JkPElkQ29tb2Rpbiwgc3RyaW5nPiA9IHtcclxuICAgICdTRU1fUkVGJzogJ0BTRU1fUkVGQCcsXHJcbiAgICAnRDMwX1JFRic6ICdARDMwX1JFRkAnLFxyXG4gICAgJ01FU19SRUYnOiAnQE1FU19SRUZAJyxcclxuICAgICdTRU1fTlVNJzogJ0BTRU1fTlVNQCcsXHJcbiAgICAncmVzcHMxJzogJ0ByZXNwczFAJyxcclxuICAgICdwYXJlbnRzMSc6ICdAcGFyZW50czFAJyxcclxuICAgICdyZXNwaTEnOiAnQHJlc3BpMUAnLFxyXG4gICAgJ3BhcmVudGkxJzogJ0BwYXJlbnRpMUAnLFxyXG4gICAgJ25qZWZlJzogJ0BuamVmZUAnLFxyXG4gICAgJ2ZyZWFsaXonOiAnQGZyZWFsaXpAJyxcclxuICAgICdjYW50X2hvZ2FyZXMnOiAnQGNhbnRfaG9nYXJlc0AnXHJcbn07XHJcblxyXG52YXIgcmVkdWNlcnMgPSB7XHJcbiAgICBNT0RPX0RFU1BMSUVHVUU6IChwYXlsb2FkOiB7IG1vZG9EZXNwbGllZ3VlOiBNb2RvRGVzcGxpZWd1ZSB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kb0Rlc3BsaWVndWU6IHBheWxvYWQubW9kb0Rlc3BsaWVndWVcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICBDQU1CSUFSX01PRE9fRE06IChwYXlsb2FkOiB7IG1vZG9ETTogTW9kb0RNIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBtb2RvRE06IHBheWxvYWQubW9kb0RNXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgQ0FNQklBUl9GT1JNVUxBUklPOiAocGF5bG9hZDogeyBmb3JQazogRm9yUGssIGFwaWxhclZ1ZWx0YTogYm9vbGVhbiB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHZhciBmb3JQayA9IHBheWxvYWQuZm9yUGs7XHJcbiAgICAgICAgICAgIHZhciBwaWxhRm9yUGsgPSBwYXlsb2FkLmFwaWxhclZ1ZWx0YSA/IChcclxuICAgICAgICAgICAgICAgIHN0YXRlLm9wY2lvbmVzLmZvclBrID09IG51bGwgPyBbXSA6IFsuLi5zdGF0ZS5vcGNpb25lcy5waWxhRm9yUGssIHN0YXRlLm9wY2lvbmVzLmZvclBrXVxyXG4gICAgICAgICAgICApIDogc3RhdGUub3BjaW9uZXMucGlsYUZvclBrO1xyXG4gICAgICAgICAgICBmb3JQa1RvVXJsKGZvclBrLCBwaWxhRm9yUGspO1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGZvclBrLFxyXG4gICAgICAgICAgICAgICAgICAgIHBpbGFGb3JQa1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFZPTFZFUl9ERV9GT1JNVUxBUklPOiAoeyBtYWduaXR1ZFJldHJvY2VzbyB9OiB7IG1hZ25pdHVkUmV0cm9jZXNvOiBudW1iZXIgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBzdGF0ZS5vcGNpb25lcy5waWxhRm9yUGtbc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLmxlbmd0aCAtIG1hZ25pdHVkUmV0cm9jZXNvXSB8fCBudWxsO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrID0gc3RhdGUub3BjaW9uZXMucGlsYUZvclBrLnNsaWNlKDAsIHN0YXRlLm9wY2lvbmVzLnBpbGFGb3JQay5sZW5ndGggLSBtYWduaXR1ZFJldHJvY2Vzbyk7XHJcbiAgICAgICAgICAgIGZvclBrVG9VcmwoZm9yUGssIHBpbGFGb3JQayk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgVk9MVkVSX0hEUjogKF9wYXlsb2FkOiB7fSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICB2YXIgZm9yUGsgPSBudWxsO1xyXG4gICAgICAgICAgICB2YXIgcGlsYUZvclBrOiBGb3JQa1tdID0gW107XHJcbiAgICAgICAgICAgIGZvclBrVG9VcmwoZm9yUGssIHBpbGFGb3JQayk7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgcGlsYUZvclBrXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgU0VUX09QQ0lPTjogKHBheWxvYWQ6IHsgb3BjaW9uOiBrZXlvZiBDYXNvU3RhdGVbJ29wY2lvbmVzJ10sIHZhbG9yOiBhbnkgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIC8vc2kgY2FtYmlhIGRlIHBhbnRhbGxhIHBvciBhY8OhIHJlc2V0ZW8gZWwgYXZpc28gcG9yIGxhcyBkdWRhc1xyXG4gICAgICAgICAgICAgICAgICAgIGF2aXNvUGVyc2lzdGVudGU6IHBheWxvYWQub3BjaW9uID09ICdwYW50YWxsYUFjdHVhbCcgPyBudWxsIDogc3RhdGUub3BjaW9uZXMuYXZpc29QZXJzaXN0ZW50ZSxcclxuICAgICAgICAgICAgICAgICAgICBbcGF5bG9hZC5vcGNpb25dOiBwYXlsb2FkLnZhbG9yXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9LFxyXG4gICAgUkVTRVRfT1BDSU9ORVM6IChfcGF5bG9hZDoge30pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBwYW50YWxsYUFjdHVhbDogJ2hkcicsXHJcbiAgICAgICAgICAgICAgICAgICAgYXZpc29QZXJzaXN0ZW50ZTogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICBmb3JQazogbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIFNFVF9QQU5UQUxMQV9BQ1RVQUw6IChwYXlsb2FkOiB7IHBhbnRhbGxhOiBQYW50YWxsYU5hdmVnYWNpb24sIGF2aXNvUGVyc2lzdGVudGU6IHsgdGlwbzogJ2luZm8nIHwgJ3N1Y2Nlc3MnIHwgJ2Vycm9yJywgbWVuc2FqZTogc3RyaW5nIH0gfCBudWxsIH0pID0+XHJcbiAgICAgICAgZnVuY3Rpb24gKHN0YXRlOiBDYXNvU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBwYW50YWxsYUFjdHVhbDogcGF5bG9hZC5wYW50YWxsYSxcclxuICAgICAgICAgICAgICAgICAgICBhdmlzb1BlcnNpc3RlbnRlOiBwYXlsb2FkLmF2aXNvUGVyc2lzdGVudGUgfHwgbnVsbFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENPTkZJUk1BUl9CT1JSQVJfUkVTUFVFU1RBOiAocGF5bG9hZDogeyBmb3JQazogRm9yUGssIHZhcmlhYmxlOiBJZFZhcmlhYmxlIHwgbnVsbCB9KSA9PlxyXG4gICAgICAgIGZ1bmN0aW9uIChzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcclxuICAgICAgICAgICAgICAgIG9wY2lvbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgLi4uc3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgZm9yUGs6IHBheWxvYWQuZm9yUGssXHJcbiAgICAgICAgICAgICAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTogcGF5bG9hZC52YXJpYWJsZVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENBTUJJQVJfQ09NT0RJTjogKHBheWxvYWQ6IHsgaWRDb21vZGluOiBJZENvbW9kaW4sIHZhbG9yOiBhbnkgfSkgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBhY3R1YWwgPSBzdGF0ZS5vcGNpb25lcz8uY29tb2RpbmVzIHx8IGNvbW9kaW5lc0luaWNpYWxlcztcclxuICAgICAgICAgICAgaWYgKGFjdHVhbFtwYXlsb2FkLmlkQ29tb2Rpbl0gPT09IHBheWxvYWQudmFsb3IpIHJldHVybiBzdGF0ZTtcclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLnN0YXRlLFxyXG4gICAgICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICBjb21vZGluZXM6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uYWN0dWFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGF5bG9hZC5pZENvbW9kaW5dOiBwYXlsb2FkLnZhbG9yXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgIENBTUJJQVJfQ09NT0RJTkVTOiAocGF5bG9hZDogUmVjb3JkPElkQ29tb2Rpbiwgc3RyaW5nPikgPT5cclxuICAgICAgICBmdW5jdGlvbiAoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICAvLyBDaGVxdWVvIGRlIGlndWFsZGFkIHN1cGVyZmljaWFsIHBhcmEgZXZpdGFyIGNsb25lcyBzaSBOQURBIGNhbWJpw7NcclxuICAgICAgICAgICAgY29uc3QgYWN0dWFsID0gc3RhdGUub3BjaW9uZXM/LmNvbW9kaW5lcyB8fCBjb21vZGluZXNJbmljaWFsZXM7XHJcbiAgICAgICAgICAgIGNvbnN0IGNhbWJpbyA9ICFzdGF0ZS5vcGNpb25lcz8uY29tb2RpbmVzIHx8IE9iamVjdC5rZXlzKHBheWxvYWQpLnNvbWUoXHJcbiAgICAgICAgICAgICAgICAoa2V5KSA9PiBhY3R1YWxba2V5IGFzIElkQ29tb2Rpbl0gIT09IHBheWxvYWRba2V5IGFzIElkQ29tb2Rpbl1cclxuICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghY2FtYmlvKSByZXR1cm4gc3RhdGU7XHJcblxyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uc3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLnN0YXRlLm9wY2lvbmVzLFxyXG4gICAgICAgICAgICAgICAgICAgIGNvbW9kaW5lczoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5jb21vZGluZXNJbmljaWFsZXMsIC8vIEJsYW5xdWVhL1Jlc2V0ZWEgZGVmYXVsdHMgc2kgZmFsdGFuIGNsYXZlc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wYXlsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG59XHJcblxyXG5leHBvcnQgdHlwZSBBY3Rpb25Gb3JtdWxhcmlvU3RhdGUgPSBBY3Rpb25zRnJvbTx0eXBlb2YgcmVkdWNlcnM+O1xyXG4vKiBGSU4gQUNDSU9ORVMgKi9cclxuXHJcbmV4cG9ydCBjb25zdCBkaXNwYXRjaGVycyA9IGNyZWF0ZURpc3BhdGNoZXJzKHJlZHVjZXJzKTtcclxuXHJcbmludGVyZmFjZSBJRGF0YVNlcGFyYWRhPFQgZXh0ZW5kcyB7IHRpcG9jOiBzdHJpbmcgfT4ge1xyXG4gICAgZGF0YTogVCxcclxuICAgIGNoaWxkczogSURhdGFTZXBhcmFkYTxUPltdXHJcbn1cclxuXHJcbnR5cGUgSURhdGFDb25DYXNpbGxlcm9zPFQ+ID0gVCAmIHtcclxuICAgIGNhc2lsbGVyb3M6IHJlYWRvbmx5IElEYXRhQ29uQ2FzaWxsZXJvczxUPltdXHJcbn1cclxuXHJcbmNvbnN0IGNhc2lsbGVyb1ZhY2lvID0ge1xyXG4gICAgc2FsdG86IG51bGwsIGRlc3BsaWVndWU6IG51bGwsIGFjbGFyYWNpb246IG51bGwsIHZlcl9pZDogbnVsbCwgY2FzaWxsZXJvczogW10sIGxlZXI6IG51bGwsXHJcbiAgICBkZXNwbGllZ3VlRW5jYWJlemFkbzogbnVsbCwgZGVzcGxpZWd1ZUNvbnRlbmlkbzogbnVsbCwgZGVzcGxpZWd1ZU9jdWx0YTogbnVsbCwgZGVzcGxpZWd1ZVRpcG9JbnB1dDogbnVsbFxyXG59XHJcblxyXG5jb25zdCBvcGNpb25lc1NpTm86IE9wY2lvbltdID0gW1xyXG4gICAgeyAuLi5jYXNpbGxlcm9WYWNpbywgY2FzaWxsZXJvOiAxLCB0aXBvYzogJ08nLCBub21icmU6ICdTw60nIH0sXHJcbiAgICB7IC4uLmNhc2lsbGVyb1ZhY2lvLCBjYXNpbGxlcm86IDIsIHRpcG9jOiAnTycsIG5vbWJyZTogJ05vJyB9LFxyXG5dXHJcblxyXG50eXBlIENhcmFjZXJpemFjaW9uRXN0YWRvUm93VmFsaWRhdG9yID0ge1xyXG4gICAgY29ycmVjdG86IGJvb2xlYW4sXHJcbiAgICBjb25WYWxvcjogYm9vbGVhbiB8IG51bGwsIC8vIG51bGwgPSB1bmtub3duXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFwbGFuYXJMYUN1cnZhPFQgZXh0ZW5kcyB7IHRpcG9jOiBzdHJpbmcsIGRlc3BsaWVndWU/OiBzdHJpbmcgfT4oY2FzaWxsZXJvc0RhdGE6IElEYXRhU2VwYXJhZGE8VD4pOiBJRGF0YUNvbkNhc2lsbGVyb3M8VCB8IE9wY2lvbj4ge1xyXG4gICAgdmFyIGRhdGEgPSBjYXNpbGxlcm9zRGF0YS5kYXRhXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmRhdGEsXHJcbiAgICAgICAgZGVzcGxpZWd1ZUNvbnRlbmlkbzogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnaG9yaXpvbnRhbCcpID8gJ2hvcml6b250YWwnIDogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndmVydGljYWwnKSA/ICd2ZXJ0aWNhbCcgOiBudWxsLFxyXG4gICAgICAgIGRlc3BsaWVndWVFbmNhYmV6YWRvOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdsYXRlcmFsJykgPyAnbGF0ZXJhbCcgOiBkYXRhLmRlc3BsaWVndWU/LmluY2x1ZGVzKCdzdXBlcmlvcicpID8gJ3N1cGVyaW9yJyA6IG51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZU9jdWx0YTogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygnb2N1bHRhcicpID8/IG51bGwsXHJcbiAgICAgICAgZGVzcGxpZWd1ZVRpcG9JbnB1dDogZGF0YS5kZXNwbGllZ3VlPy5pbmNsdWRlcygndGVsZWZvbm8nKSA/ICd0ZWwnIDogbnVsbCxcclxuICAgICAgICBjYXNpbGxlcm9zOiAhY2FzaWxsZXJvc0RhdGEuY2hpbGRzLmxlbmd0aCAmJiBjYXNpbGxlcm9zRGF0YS5kYXRhLnRpcG9jID09ICdPTScgPyBvcGNpb25lc1NpTm8gOlxyXG4gICAgICAgICAgICBjYXNpbGxlcm9zRGF0YS5jaGlsZHMubWFwKGNhc2lsbGVybyA9PiBhcGxhbmFyTGFDdXJ2YShjYXNpbGxlcm8pKVxyXG4gICAgfVxyXG59XHJcblxyXG4vLyB0eXBlIEFueVJlZjxUIGV4dGVuZHMge30+PVtULCBrZXlvZiBUXTtcclxuXHJcbmZ1bmN0aW9uIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvLCBlc3RydWN0dXJhOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yLCBjYXNpbGxlcm86IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zLCB1bmlkYWRBbmFsaXNpcz86IHN0cmluZyB8IG51bGwsXHJcbiAgICBzdWJvcmRpbmFkYVZhcj86IElkVmFyaWFibGUsIHN1Ym9yZGluYWRhVmFsb3I/OiBhbnlcclxuKSB7XHJcbiAgICBpZiAoY2FzaWxsZXJvLnZhcl9uYW1lICE9IG51bGwgfHwgY2FzaWxsZXJvLnRpcG9jID09ICdGSUxUUk8nKSB7XHJcbiAgICAgICAgdmFyIHZhcl9uYW1lOiBJZFZhcmlhYmxlXHJcbiAgICAgICAgaWYgKGNhc2lsbGVyby50aXBvYyA9PSAnRklMVFJPJykge1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHBvbmdvIGNvbW8gbm9tYnJlIGRlIHZhcmlhYmxlIGVsIGZpbHRybztcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8uY2FzaWxsZXJvO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoY2FzaWxsZXJvLnZhcl9uYW1lLmVuZHNXaXRoKCchJykpIHtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBsYXMgdmFyaWFibGVzIGVzcGVqbyBzb24gbGFzIHF1ZSB0ZXJtaW5hbiBlbiAhXHJcbiAgICAgICAgICAgIHZhcl9uYW1lID0gY2FzaWxsZXJvLnZhcl9uYW1lX2VzcGVjaWFsLnJlcGxhY2UoLyErJC8sICcnKTtcclxuICAgICAgICAgICAgY2FzaWxsZXJvLnZhcl9uYW1lID0gdmFyX25hbWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFyX25hbWUgPSBjYXNpbGxlcm8udmFyX25hbWVcclxuICAgICAgICB9XHJcbiAgICAgICAgbGV0IHZhcmlhYmxlRGVmID0ge1xyXG4gICAgICAgICAgICB0aXBvOiBjYXNpbGxlcm8udGlwb2MgPT0gJ0ZJTFRSTycgPyAnZmlsdHJvJyA6IGNhc2lsbGVyby50aXBvYyA9PSAnT00nIHx8IGNhc2lsbGVyby50aXBvdmFyID09ICdzaV9ubycgPyAnb3BjaW9uZXMnIDogY2FzaWxsZXJvLnRpcG92YXIsXHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgb3B0YXRpdm8gcG9kcsOtYSBubyBleGlzdGlyLCBxdWVkYXLDoSBudWxsLlxyXG4gICAgICAgICAgICBvcHRhdGl2YTogY2FzaWxsZXJvLm9wdGF0aXZvISxcclxuICAgICAgICAgICAgb3BjaW9uZXM6IChjYXNpbGxlcm8udGlwb2MgPT0gJ09NJyB8fCBjYXNpbGxlcm8udGlwb3ZhciA9PSAnb3BjaW9uZXMnIHx8IGNhc2lsbGVyby50aXBvdmFyID09ICdzaV9ubycgP1xyXG4gICAgICAgICAgICAgICAgbGlrZUFyLmNyZWF0ZUluZGV4KGNhc2lsbGVyby5jYXNpbGxlcm9zLCAnY2FzaWxsZXJvJykgOiB7fSkgYXMgdW5rbm93biBhcyB7IFtrZXk6IHN0cmluZ106IFJvd1ZhbGlkYXRvck9wY2lvbjxJZFZhcmlhYmxlPiB9LFxyXG4gICAgICAgICAgICBzYWx0bzogY2FzaWxsZXJvLnNhbHRvIGFzIElkVmFyaWFibGUsXHJcbiAgICAgICAgICAgIHNhbHRvTnNOcjogY2FzaWxsZXJvLnNhbHRvX25zX25jIGFzIElkVmFyaWFibGUgfHwgbnVsbCxcclxuICAgICAgICAgICAgZnVuY2lvbkhhYmlsaXRhcjogY2FzaWxsZXJvLmV4cHJlc2lvbl9oYWJpbGl0YXJfanMsXHJcbiAgICAgICAgICAgIGZ1bmNpb25BdXRvSW5ncmVzYXI6IGNhc2lsbGVyby5leHByZXNpb25fYXV0b2luZ3Jlc2FyX2pzLFxyXG4gICAgICAgICAgICBjYWxjdWxhZGE6XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlIC8vIFRPRE8uIEF2ZXJpZ3VhciBzaSBsYXMgcHJlZ3VudGFzIHkgZmlsdHJvcyBwdWVkZW4gdGVuZXIgdW5pZGFkIGRlIGFuw6FsaXNpc1xyXG4gICAgICAgICAgICAgICAgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAmJiBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzICE9IHVuaWRhZEFuYWxpc2lzXHJcbiAgICAgICAgICAgICAgICB8fCBjYXNpbGxlcm8uY2FsY3VsYWRhLFxyXG4gICAgICAgICAgICBsaWJyZTogY2FzaWxsZXJvLmxpYnJlXHJcbiAgICAgICAgfSBhcyAodHlwZW9mIGVzdHJ1Y3R1cmEudmFyaWFibGVzKVtJZFZhcmlhYmxlXVxyXG4gICAgICAgIGlmIChzdWJvcmRpbmFkYVZhbG9yICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB2YXJpYWJsZURlZi5zdWJvcmRpbmFkYVZhciA9IHN1Ym9yZGluYWRhVmFyO1xyXG4gICAgICAgICAgICB2YXJpYWJsZURlZi5zdWJvcmRpbmFkYVZhbG9yID0gc3Vib3JkaW5hZGFWYWxvcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZXN0cnVjdHVyYS52YXJpYWJsZXNbdmFyX25hbWVdID0gdmFyaWFibGVEZWY7XHJcbiAgICB9IGVsc2UgaWYgKGNhc2lsbGVyby50aXBvYyA9PSAnQkYnKSB7XHJcbiAgICAgICAgLy8gdmFyIHZhcl9uYW1lID0gJyRCLkY6JytjYXNpbGxlcm8uc2FsdG8gYXMgSWRWYXJpYWJsZTsgICAgLy9vcmlnaW5hbFxyXG4gICAgICAgIHZhciBzYWx0b05vbWJyZSA9IGNhc2lsbGVyby5zYWx0byEuc3Vic3RyKDAsIDIpID09ICdGOicgPyBjYXNpbGxlcm8uc2FsdG8hLnNsaWNlKDIpIDogY2FzaWxsZXJvLnNhbHRvO1xyXG4gICAgICAgIGNvbnN0IHJlcXVpZXJlQWdyZWdhciA9IGNhc2lsbGVyby51bmlkYWRfYW5hbGlzaXMgJiYgY2FzaWxsZXJvLnVuaWRhZF9hbmFsaXNpcyAhPT0gdW5pZGFkQW5hbGlzaXNcclxuICAgICAgICBjYXNpbGxlcm8udmFyX25hbWVzX0JGID0gY2FzaWxsZXJvLnZhcl9uYW1lc19CRiB8fCBbXTtcclxuXHJcbiAgICAgICAgaWYgKHJlcXVpZXJlQWdyZWdhcikge1xyXG4gICAgICAgICAgICB2YXIgbmV3VmFyTmFtZUFncmVnYXIgPSAnJEIuRjonICsgc2FsdG9Ob21icmUgKyAnX2FncmVnYXInIGFzIElkVmFyaWFibGU7XHJcbiAgICAgICAgICAgIGNhc2lsbGVyby52YXJfbmFtZXNfQkYucHVzaChuZXdWYXJOYW1lQWdyZWdhcik7XHJcbiAgICAgICAgICAgIGVzdHJ1Y3R1cmEudmFyaWFibGVzW25ld1Zhck5hbWVBZ3JlZ2FyXSA9IHtcclxuICAgICAgICAgICAgICAgIHRpcG92YXI6ICdvcGNpb25lcycsXHJcbiAgICAgICAgICAgICAgICBjYXNpbGxlcm9zOiBbeyB0aXBvYzogJ08nLCBjYXNpbGxlcm86IDEsIG5vbWJyZTogJ3NpJyB9XSBhcyBPcGNpb25bXSwgLy8gc2UgdXNhIHBhcmEgcXVlIG5vIHNlYSBsaWJyZSB5IGVsIHJvd1ZhbGlkYXRvciBsYSB2ZWFcclxuICAgICAgICAgICAgfSBhcyBWYXJpYWJsZTtcclxuICAgICAgICAgICAgY2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGUgPSBuZXdWYXJOYW1lQWdyZWdhcjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIG5ld1Zhck5hbWUgPSAnJEIuRjonICsgc2FsdG9Ob21icmUgYXMgSWRWYXJpYWJsZTtcclxuICAgICAgICBjYXNpbGxlcm8udmFyX25hbWVzX0JGLnB1c2gobmV3VmFyTmFtZSlcclxuICAgICAgICBlc3RydWN0dXJhLnZhcmlhYmxlc1tuZXdWYXJOYW1lXSA9IHtcclxuICAgICAgICAgICAgdGlwb3ZhcjogJ29wY2lvbmVzJyxcclxuICAgICAgICAgICAgY2FzaWxsZXJvczogW3sgdGlwb2M6ICdPJywgY2FzaWxsZXJvOiAxLCBub21icmU6ICdzaScgfV0gYXMgT3BjaW9uW10sIC8vIHNlIHVzYSBwYXJhIHF1ZSBubyBzZWEgbGlicmUgeSBlbCByb3dWYWxpZGF0b3IgbGEgdmVhXHJcbiAgICAgICAgfSBhcyBWYXJpYWJsZTtcclxuICAgICAgICBjYXNpbGxlcm8ucHJpbWVyYV92YXJpYWJsZSA9IGNhc2lsbGVyby5wcmltZXJhX3ZhcmlhYmxlIHx8IG5ld1Zhck5hbWU7XHJcblxyXG4gICAgfVxyXG4gICAgaWYgKGNhc2lsbGVyby5jYXNpbGxlcm9zKSB7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaCgoY2FzaWxsZXJvSGlqbzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MpID0+XHJcbiAgICAgICAgICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYSwgY2FzaWxsZXJvSGlqbywgdW5pZGFkQW5hbGlzaXMsIGNhc2lsbGVyby52YXJfbmFtZSA/IGNhc2lsbGVyby52YXJfbmFtZSA6IGNhc2lsbGVyby50aXBvYyA9PSAnTycgPyBzdWJvcmRpbmFkYVZhciA6IHVuZGVmaW5lZCwgY2FzaWxsZXJvLnRpcG9jID09ICdPJyA/IGNhc2lsbGVyby5jYXNpbGxlcm8gOiB1bmRlZmluZWQpXHJcbiAgICAgICAgKVxyXG4gICAgfVxyXG59XHJcblxyXG50eXBlIFJlZ2lzdHJvRGVzdGlub3MgPSB7IFtkZXN0aW5vIGluIElkRGVzdGlub106IElkVmFyaWFibGUgfCBudWxsIH07XHJcblxyXG5mdW5jdGlvbiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGRlc3Rpbm9zPzogUmVnaXN0cm9EZXN0aW5vcyk6IFJlZ2lzdHJvRGVzdGlub3Mge1xyXG4gICAgaWYgKGRlc3Rpbm9zID09IG51bGwpIHJldHVybiBvYnRlbmVyRGVzdGlub3NDYXNpbGxlcm9zKGNhc2lsbGVybywge30gYXMgUmVnaXN0cm9EZXN0aW5vcyk7XHJcbiAgICBpZiAoY2FzaWxsZXJvLnRpcG9jID09ICdGSUxUUk8nKSB7XHJcbiAgICAgICAgZGVzdGlub3NbY2FzaWxsZXJvLmNhc2lsbGVyb10gPSBjYXNpbGxlcm8uY2FzaWxsZXJvIGFzIElkVmFyaWFibGU7XHJcbiAgICB9IGVsc2UgaWYgKGNhc2lsbGVyby50aXBvYyAhPSAnRicgJiYgY2FzaWxsZXJvLnRpcG9jICE9ICdPJyAmJiBjYXNpbGxlcm8udGlwb2MgIT0gJ09NJykge1xyXG4gICAgICAgIGRlc3Rpbm9zW2Nhc2lsbGVyby5jYXNpbGxlcm9dID0gY2FzaWxsZXJvLnByaW1lcmFfdmFyaWFibGUgfHwgbnVsbFxyXG4gICAgfVxyXG4gICAgaWYgKGNhc2lsbGVyby5jYXNpbGxlcm9zKSB7XHJcbiAgICAgICAgY2FzaWxsZXJvLmNhc2lsbGVyb3MuZm9yRWFjaChjID0+IG9idGVuZXJEZXN0aW5vc0Nhc2lsbGVyb3MoYywgZGVzdGlub3MpKTtcclxuICAgIH1cclxuICAgIHJldHVybiBkZXN0aW5vcztcclxufVxyXG5cclxuZnVuY3Rpb24gcmVsbGVuYXJEZXN0aW5vcyhlc3RydWN0dXJhOiBFc3RydWN0dXJhUm93VmFsaWRhdG9yLCBkZXN0aW5vczogUmVnaXN0cm9EZXN0aW5vcyk6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3Ige1xyXG4gICAgZnVuY3Rpb24gb2J0ZW5lckRlc3Rpbm8oaWRWYXJpYWJsZVF1ZVRpZW5lVW5EZXN0aW5vOiBJZFZhcmlhYmxlIHwgbnVsbCB8IHVuZGVmaW5lZCB8IElkRmluKTogSWRWYXJpYWJsZSB8IG51bGwge1xyXG4gICAgICAgIHJldHVybiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8gPT0gJ2ZpbicgYXMgSWRWYXJpYWJsZSA/ICdmaW4nIGFzIElkVmFyaWFibGUgOiBpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8gIT0gbnVsbCAmJiBkZXN0aW5vc1tpZFZhcmlhYmxlUXVlVGllbmVVbkRlc3Rpbm8gYXMgSWREZXN0aW5vXSB8fCBudWxsXHJcbiAgICB9XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIC4uLmVzdHJ1Y3R1cmEsXHJcbiAgICAgICAgdmFyaWFibGVzOiBsaWtlQXIoZXN0cnVjdHVyYS52YXJpYWJsZXMpLm1hcCh2YXJpYWJsZURlZiA9PiAoe1xyXG4gICAgICAgICAgICAuLi52YXJpYWJsZURlZixcclxuICAgICAgICAgICAgc2FsdG86IG9idGVuZXJEZXN0aW5vKHZhcmlhYmxlRGVmLnNhbHRvKSxcclxuICAgICAgICAgICAgc2FsdG9Oc05yOiBvYnRlbmVyRGVzdGlubyh2YXJpYWJsZURlZi5zYWx0b05zTnIpLFxyXG4gICAgICAgICAgICBvcGNpb25lczogdmFyaWFibGVEZWYub3BjaW9uZXMgIT0gbnVsbCA/IGxpa2VBcih2YXJpYWJsZURlZi5vcGNpb25lcykubWFwKG9wY2lvbkRlZiA9PiAoeyBzYWx0bzogb2J0ZW5lckRlc3Rpbm8ob3BjaW9uRGVmLnNhbHRvKSB9KSkucGxhaW4oKSA6IHVuZGVmaW5lZFxyXG4gICAgICAgIH0pKS5wbGFpbigpXHJcbiAgICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdlbmVyYXJFc3RydWN0dXJhUm93VmFsaWRhdG9yKGNhc2lsbGVybzogQ2FzaWxsZXJvc0ltcGxlbWVudGFkb3MsIGlkRm9ybXVsYXJpbzogSWRGb3JtdWxhcmlvKTogRXN0cnVjdHVyYVJvd1ZhbGlkYXRvciB7XHJcbiAgICB2YXIgZXN0cnVjdHVyYUluY29tcGxldGE6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IgPSB7IHZhcmlhYmxlczoge30sIG1hcmNhRmluOiAnZmluJyB9IGFzIHVua25vd24gYXMgRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcjtcclxuICAgIHJlbGxlbmFyVmFyaWFibGVzWU9wY2lvbmVzKGlkRm9ybXVsYXJpbywgZXN0cnVjdHVyYUluY29tcGxldGEsIGNhc2lsbGVybyxcclxuICAgICAgICAvLyBAdHMtaWdub3JlIHZlciBzaSBjdWFscXVpZXIgY29zYSBwdWVkZSB0ZW5lciB1bmlkYWRfYW5hbGlzaXNcclxuICAgICAgICBjYXNpbGxlcm8udW5pZGFkX2FuYWxpc2lzXHJcbiAgICApO1xyXG4gICAgdmFyIGRlc3Rpbm9zID0gb2J0ZW5lckRlc3Rpbm9zQ2FzaWxsZXJvcyhjYXNpbGxlcm8pO1xyXG4gICAgcmV0dXJuIHJlbGxlbmFyRGVzdGlub3MoZXN0cnVjdHVyYUluY29tcGxldGEsIGRlc3Rpbm9zKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VTcGVjaWFsV29yZHModGV4dDogc3RyaW5nLCBub21icmU6IHN0cmluZywgYXBlbGxpZG86IHN0cmluZywgcmVzdWx0YWRvOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHRleHQ6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB0ZXh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdGV4dC5zbGljZSgxKTtcclxuICAgIH1cclxuICAgIHZhciBzaW1wbGlmaWNhdGVkQ2hhcnM6IHsgW2s6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICAgIFwiI25vbWJyZVwiOiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIobm9tYnJlKSxcclxuICAgICAgICBcIiNhcGVsbGlkb1wiOiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoYXBlbGxpZG8pLFxyXG4gICAgICAgIFwiI3Jlc3VsdGFkb1wiOiByZXN1bHRhZG8sXHJcbiAgICB9O1xyXG4gICAgdmFyIHJlID0gbmV3IFJlZ0V4cChPYmplY3Qua2V5cyhzaW1wbGlmaWNhdGVkQ2hhcnMpLmpvaW4oXCJ8XCIpLCBcImdpXCIpO1xyXG5cclxuICAgIHJldHVybiB0ZXh0LnJlcGxhY2UocmUsIGZ1bmN0aW9uIChtYXRjaGVkKSB7XHJcbiAgICAgICAgcmV0dXJuIHNpbXBsaWZpY2F0ZWRDaGFyc1ttYXRjaGVkLnRvTG93ZXJDYXNlKCldO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnb3RvQ29uc2lzdGlyKG9wZXJhdGl2bzogSWRPcGVyYXRpdm8sIHRhcmVhOiBJZFRhcmVhLCBlbmM6IElkRW5jKSB7XHJcbiAgICAvLyBUT0RPLTIwMjMtMDM6IHByb2JhciBjb24gZXN0bzpcclxuICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4gKyBsb2NhdGlvbi5wYXRobmFtZX0vLi4vbWVudSN3PWNvbnNpc3Rpcl9lbmN1ZXN0YSZ1cD0ke0pTT040YWxsLnRvVXJsKHsgb3BlcmF0aXZvLCB0YXJlYSwgZW5jIH0pfSZhdXRvcHJvY2VkPXRydWVgKTtcclxuICAgIC8vIGhpc3RvcnkucmVwbGFjZVN0YXRlKG51bGwsICcnLCBgJHtsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWV9Ly4uL21lbnUjdz1jb25zaXN0aXJfZW5jdWVzdGEmdXA9e1wib3BlcmF0aXZvXCI6XCIke29wZXJhdGl2b31cIixcInRhcmVhXCI6XCIke3RhcmVhfVwiLFwiZW5jdWVzdGFcIjoke2VuY3Vlc3RhfX0mYXV0b3Byb2NlZD10cnVlYCk7XHJcbiAgICBsb2NhdGlvbi5yZWxvYWQoKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGFkYXB0YXJFc3RydWN0dXJhKGVzdHJ1Y3R1cmFCYWNrZW5kOmFueSkge1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmE6IEVzdHJ1Y3R1cmEgPSBlc3RydWN0dXJhQmFja2VuZDtcclxuICAgIHZhciBjYXNpbGxlcm9zT3JpZ2luYWxlczoge30gPSBlc3RydWN0dXJhLmZvcm11bGFyaW9zO1xyXG4gICAgdmFyIG1haW5Gb3JtOiBJZEZvcm11bGFyaW8gfCB1bmRlZmluZWQ7XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHZhciBjYXNpbGxlcm9zVG9kb3NGb3JtdWxhcmlvczogeyBbZiBpbiBJZEZvcm11bGFyaW9dOiB7IGNhc2lsbGVyb3M6IEZvcm11bGFyaW8sIGVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3I6IEVzdHJ1Y3R1cmFSb3dWYWxpZGF0b3IgfSB9ID1cclxuICAgICAgICBsaWtlQXIoY2FzaWxsZXJvc09yaWdpbmFsZXMpLm1hcChcclxuICAgICAgICAgICAgKGNhc2lsbGVyb3NKZXJhcnF1aXphZG9zOiBhbnksIGlkRm9ybXVsYXJpbykgPT4ge1xyXG4gICAgICAgICAgICAgICAgdmFyIGNhc2lsbGVyb3NBcGxhbmFkb3M6IENhc2lsbGVyb3NJbXBsZW1lbnRhZG9zID0gYXBsYW5hckxhQ3VydmEoY2FzaWxsZXJvc0plcmFycXVpemFkb3MpO1xyXG4gICAgICAgICAgICAgICAgaWYgKGNhc2lsbGVyb3NBcGxhbmFkb3MudGlwb2MgPT0gJ0YnICYmIGNhc2lsbGVyb3NBcGxhbmFkb3MuZm9ybXVsYXJpb19wcmluY2lwYWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBtYWluRm9ybSA9IGlkRm9ybXVsYXJpbztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FzaWxsZXJvczogY2FzaWxsZXJvc0FwbGFuYWRvcyxcclxuICAgICAgICAgICAgICAgICAgICBlc3RydWN0dXJhUm93VmFsaWRhdG9yOiBnZW5lcmFyRXN0cnVjdHVyYVJvd1ZhbGlkYXRvcihjYXNpbGxlcm9zQXBsYW5hZG9zLCBpZEZvcm11bGFyaW8pXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICApLnBsYWluKCk7XHJcbiAgICBlc3RydWN0dXJhLmZvcm11bGFyaW9zID0gY2FzaWxsZXJvc1RvZG9zRm9ybXVsYXJpb3NcclxuICAgIHJldHVybiBlc3RydWN0dXJhO1xyXG59XHJcblxyXG5sZXQgc3RvcmVGb3JtdWxhcmlvSW5zdGFuY2U6IFJldHVyblR5cGU8dHlwZW9mIGNyZWF0ZVN0b3JlPiB8IG51bGwgPSBudWxsO1xyXG5cclxuXHJcblxyXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXJTdG9yZUZvcm11bGFyaW8ob3B0czogeyBvcGVyYXRpdm8/OiBJZE9wZXJhdGl2bywgZm9yUGtSYWl6PzogRm9yUGtSYWl6IH0pIHtcclxuICAgIHZhciBnZXRDYXNvU3RhdGUgPSBnZXRGb3JtUmVuZGVyZXIoKS5nZXRDYXNvU3RhdGUuYmluZChnZXRGb3JtUmVuZGVyZXIoKSk7XHJcbiAgICB2YXIgc2V0Q2Fzb1N0YXRlID0gZ2V0Rm9ybVJlbmRlcmVyKCkuc2V0Q2Fzb1N0YXRlLmJpbmQoZ2V0Rm9ybVJlbmRlcmVyKCkpO1xyXG5cclxuICAgIHZhciBsb2FkU3RhdGUgPSBhc3luYyBmdW5jdGlvbiBsb2FkU3RhdGUoKTogUHJvbWlzZTxDYXNvU3RhdGU+IHtcclxuICAgICAgICB2YXIgY2Fzb1N0YXRlOiBDYXNvU3RhdGUgfCBudWxsID0gZ2V0Q2Fzb1N0YXRlKCk7XHJcbiAgICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHtcclxuICAgICAgICAgICAgb3BjaW9uZXM6IHtcclxuICAgICAgICAgICAgICAgIGZvclBrOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgcGlsYUZvclBrOiBbXSxcclxuICAgICAgICAgICAgICAgIG1vZG9EZXNwbGllZ3VlOiAncmVsZXZhbWllbnRvJyxcclxuICAgICAgICAgICAgICAgIG1vZG9EaXJlY3RvOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGNvbkNhbXBvT3BjaW9uZXM6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgc2FsdG9BdXRvbWF0aWNvOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgbW9kb0JvcnJhclJlc3B1ZXN0YTogbnVsbCxcclxuICAgICAgICAgICAgICAgIHBhbnRhbGxhQWN0dWFsOiAnaGRyJyxcclxuICAgICAgICAgICAgICAgIGF2aXNvUGVyc2lzdGVudGU6IG51bGwsXHJcbiAgICAgICAgICAgICAgICBjb21vZGluZXM6IGNvbW9kaW5lc0luaWNpYWxlc1xyXG4gICAgICAgICAgICB9IGFzIENhc29TdGF0ZVtcIm9wY2lvbmVzXCJdLCAvLyBwb25lciBsb3MgdmFsb3JlcyBwb3IgZGVmZWN0byBtw6FzIGFiYWpvXHJcbiAgICAgICAgfSBhcyBDYXNvU3RhdGU7XHJcbiAgICAgICAgaWYgKGNhc29TdGF0ZSkge1xyXG4gICAgICAgICAgICBpbml0aWFsU3RhdGUgPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5pbml0aWFsU3RhdGUsXHJcbiAgICAgICAgICAgICAgICBvcGNpb25lczoge1xyXG4gICAgICAgICAgICAgICAgICAgIC4uLmluaXRpYWxTdGF0ZS5vcGNpb25lcyxcclxuICAgICAgICAgICAgICAgICAgICAuLi5jYXNvU3RhdGUub3BjaW9uZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29tb2RpbmVzOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmNvbW9kaW5lc0luaWNpYWxlcyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGNhc29TdGF0ZS5vcGNpb25lcz8uY29tb2RpbmVzIHx8IHt9KVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAob3B0cy5mb3JQa1JhaXopIHtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLmZvclBrID0gb3B0cy5mb3JQa1JhaXo7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5tb2RvRGlyZWN0byA9ICEhb3B0cy5mb3JQa1JhaXo7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGFkZHJQYXJhbXMgPSBteU93bi5VcmlTZWFyY2hUb09iamVjdChsb2NhdGlvbi5oYXNoIHx8IGxvY2F0aW9uLnNlYXJjaCB8fCAnJyk7XHJcbiAgICAgICAgaWYgKGFkZHJQYXJhbXMuc3RhdGVfZm9yUGspIHtcclxuICAgICAgICAgICAgaW5pdGlhbFN0YXRlLm9wY2lvbmVzLmZvclBrID0gSlNPTi5wYXJzZShhZGRyUGFyYW1zLnN0YXRlX2ZvclBrKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGFkZHJQYXJhbXMuc3RhdGVfcGlsYUZvclBrKSB7XHJcbiAgICAgICAgICAgIGluaXRpYWxTdGF0ZS5vcGNpb25lcy5waWxhRm9yUGsgPSAoYWRkclBhcmFtcy5zdGF0ZV9waWxhRm9yUGsgYXMgc3RyaW5nKS5zcGxpdCgnfCcpLm1hcChqID0+IEpTT040YWxsLnBhcnNlKGopKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcclxuICAgIH1cclxuICAgIHZhciBzYXZlU3RhdGUgPSBmdW5jdGlvbiBzYXZlU3RhdGUoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgICAgIHNldENhc29TdGF0ZShzdGF0ZSk7XHJcbiAgICB9XHJcbiAgICAvKiBERUZJTklDSU9OIENPTlRST0xBRE9SICovXHJcbiAgICB2YXIgaW5pdGlhbFN0YXRlOiBDYXNvU3RhdGUgPSBhd2FpdCBsb2FkU3RhdGUoKTtcclxuICAgIGNvbnN0IGhkclJlZHVjZXIgPSBjcmVhdGVSZWR1Y2VyKHJlZHVjZXJzLCBpbml0aWFsU3RhdGUpO1xyXG4gICAgLyogRklOIERFRklOSUNJT04gQ09OVFJPTEFET1IgKi9cclxuICAgIC8qIENBUkdBIFkgR1VBUkRBRE8gREUgU1RBVEUgKi9cclxuICAgIC8qIENSRUFDSU9OIFNUT1JFICovXHJcbiAgICBjb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlKGhkclJlZHVjZXIsIGluaXRpYWxTdGF0ZSk7XHJcbiAgICBzdG9yZUZvcm11bGFyaW9JbnN0YW5jZSA9IHN0b3JlO1xyXG4gICAgc2F2ZVN0YXRlKHN0b3JlLmdldFN0YXRlKCkpO1xyXG4gICAgc3RvcmUuc3Vic2NyaWJlKGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBzYXZlU3RhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XHJcbiAgICB9KTtcclxuICAgIC8qIEZJTiBDUkVBQ0lPTiBTVE9SRSAqL1xyXG4gICAgLy9IRFIgQ09OIFNUT1JFIENSRUFET1xyXG4gICAgcmV0dXJuIHN0b3JlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RvcmVGb3JtdWxhcmlvKCkge1xyXG4gICAgaWYgKCFzdG9yZUZvcm11bGFyaW9JbnN0YW5jZSkge1xyXG4gICAgICAgIGNvbnNvbGUud2FybihcIkludGVudGFzdGUgYWNjZWRlciBhIGxhIHN0b3JlIGFudGVzIGRlIHF1ZSBmdWVyYSBjcmVhZGEuXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHN0b3JlRm9ybXVsYXJpb0luc3RhbmNlO1xyXG59Il19
|