dmencu 2.0.12 → 2.0.14
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/client/client.js +3 -1
- package/dist/client/unlogged/bypass-formulario.js +6 -12
- package/dist/client/unlogged/render-formulario.tsx +1 -1
- package/dist/server/server/procedures-dmencu.js +5 -4
- package/dist/server/server/table-tem_borradas.js +2 -1
- package/dist/unlogged/unlogged/bypass-formulario.js +6 -12
- package/dist/unlogged/unlogged/render-formulario.js +2 -2
- package/dist/unlogged/unlogged/render-formulario.tsx +1 -1
- package/package.json +1 -1
|
@@ -201,6 +201,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
201
201
|
if (cambiaModoDM) {
|
|
202
202
|
cambiarModoDMEnLocalStorage(modoDMActual);
|
|
203
203
|
}
|
|
204
|
+
const store = yield (0, redux_formulario_1.dmTraerDatosFormulario)({ modoDemo: false });
|
|
205
|
+
store.dispatch(redux_formulario_1.dispatchers.RESET_OPCIONES({}));
|
|
204
206
|
mostrarInfoLocal(divAvisoSincro, 'datos recibidos', datos.num_sincro, true);
|
|
205
207
|
}
|
|
206
208
|
catch (err) {
|
|
@@ -799,4 +801,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
799
801
|
return [].concat.apply([], arrays);
|
|
800
802
|
}
|
|
801
803
|
});
|
|
802
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsMkNBQWdDO0lBQ2hDLG1FQUE2RDtJQUs3RCxrQ0FBa0M7SUFDbEMscUVBQThHO0lBQzlHLG1FQUFrSjtJQUVsSixrQkFBa0I7SUFFbEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQzdCLElBQUksaUJBQWlCLEdBQWMsSUFBSSxDQUFDO0lBRXhDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBUSxFQUFFO1FBQ3BDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLElBQUcsQ0FBQztZQUNBLGlCQUFpQixHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUFBLE9BQU0sR0FBRyxFQUFDLENBQUM7WUFDUixpQkFBaUIsR0FBQyxJQUFJLENBQUM7UUFDM0IsQ0FBQztRQUNELEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFDO1lBQzFCLFVBQVUsRUFBQztnQkFDUCxFQUFDLElBQUksRUFBQyxXQUFXLEVBQUcsUUFBUSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFDLFlBQVksRUFBQztnQkFDN0YsRUFBQyxJQUFJLEVBQUMsT0FBTyxFQUFPLFFBQVEsRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDO2dCQUN0RixFQUFDLElBQUksRUFBQyxLQUFLLEVBQVMsUUFBUSxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxFQUFDO2FBQy9EO1lBQ0QsVUFBVSxFQUFDLElBQUk7WUFDZixVQUFVLEVBQUMsQ0FBTyxNQUFNLEVBQUMsRUFBRTs7Z0JBQ3ZCLHNCQUFzQjtnQkFD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QU0sQ0FBQyxDQUFDO0lBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge2h0bWx9IGZyb20gXCJqcy10by1odG1sXCI7XHJcbmltcG9ydCB7dHJhZXJFc3RydWN0dXJhfSBmcm9tIFwiLi4vdW5sb2dnZWQvcmVkdXgtZm9ybXVsYXJpb1wiO1xyXG5pbXBvcnQgeyBDYXNvU3RhdGUsICBcclxuICAgIElkRm9ybXVsYXJpbywgRGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMsIElkRW5jLCBJZE9wZXJhdGl2bywgSWRUYXJlYSwgRXN0YWRvQWNjaW9uLCBEaXJlY2Npb25BY2Npb24sXHJcbiAgICBDYW1wb1BrUmFpeiwgTW9kb0RNXHJcbn0gZnJvbSBcIi4uL3VubG9nZ2VkL3RpcG9zXCI7XHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQge2dldEVzdHJ1Y3R1cmEsIHNldFBlcnNpc3RpckRhdG9zQnlQYXNzLCBNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVl9IGZyb20gXCIuLi91bmxvZ2dlZC9ieXBhc3MtZm9ybXVsYXJpb1wiXHJcbmltcG9ydCB7QkFDS1VQUywgY2FyZ2FyRXN0cnVjdHVyYSwgY2FyZ2FySG9qYURlUnV0YSwgR0xPVkFSX0RBVE9TQllQQVNTLCBHTE9WQVJfRVNUUlVDVFVSQSwgR0xPVkFSX01PRE9CWVBBU1N9IGZyb20gXCIuLi91bmxvZ2dlZC9hYnJpci1mb3JtdWxhcmlvXCJcclxuXHJcbi8vVE9ETyBHRU5FUkFMSVpBUlxyXG5cclxuY29uc3QgVEFSRUFfREVGQVVMVCA9ICdlbmN1JztcclxudmFyIE9QRVJBVElWT19ERUZBVUxUOnN0cmluZ3xudWxsPSBudWxsO1xyXG5cclxubXlPd24uYXV0b1NldHVwRnVuY3Rpb25zLnB1c2goYXN5bmMgKCk9PntcclxuICAgIHZhciBteSA9IG15T3duOyAgICBcclxuICAgIHRyeXtcclxuICAgICAgICBPUEVSQVRJVk9fREVGQVVMVCA9IGF3YWl0IG15LmFqYXgub3BlcmF0aXZvX2dldCh7fSk7XHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICBPUEVSQVRJVk9fREVGQVVMVD1udWxsO1xyXG4gICAgfVxyXG4gICAgbXlPd24ud1NjcmVlbnMuYWJyaXJfZW5jdWVzdGE9e1xyXG4gICAgICAgIHBhcmFtZXRlcnM6W1xyXG4gICAgICAgICAgICB7bmFtZTonb3BlcmF0aXZvJyAsIHR5cGVOYW1lOid0ZXh0JywgZGVmYXVsdFZhbHVlOk9QRVJBVElWT19ERUZBVUxULCByZWZlcmVuY2VzOidvcGVyYXRpdm9zJ30sXHJcbiAgICAgICAgICAgIHtuYW1lOid0YXJlYScgICAgICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6VEFSRUFfREVGQVVMVCwgcmVmZXJlbmNlczogJ3RhcmVhcyd9LFxyXG4gICAgICAgICAgICB7bmFtZTonZW5jJyAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJywgZGVmYXVsdFZhbHVlOjEzMDAzMX1cclxuICAgICAgICBdLFxyXG4gICAgICAgIGF1dG9wcm9jZWQ6dHJ1ZSxcclxuICAgICAgICBtYWluQWN0aW9uOmFzeW5jIChwYXJhbXMpPT57XHJcbiAgICAgICAgICAgIC8vIGFudGVzOiBhYnJpckRpcmVjdG9cclxuICAgICAgICAgICAgdmFyIHtvcGVyYXRpdm8sIGVuYywgdGFyZWF9ID0gcGFyYW1zO1xyXG4gICAgICAgICAgICB2YXIgZXN0cnVjdHVyYSA9IGdldEVzdHJ1Y3R1cmEoKTtcclxuICAgICAgICAgICAgdmFyIGNhcmdhID0gYXdhaXQgbXkuYWpheC5kbV9mb3Jwa3JhaXpfY2FyZ2FyKHtvcGVyYXRpdm8sIHBrX3JhaXpfdmFsdWU6ZW5jLCB0YXJlYX0pIGFzIERhdG9zQnlQYXNzUGVyc2lzdGlibGVzO1xyXG4gICAgICAgICAgICBpZighZXN0cnVjdHVyYSB8fCAoZXN0cnVjdHVyYS50aW1lc3RhbXA/PzApIDwgY2FyZ2EudGltZXN0YW1wRXN0cnVjdHVyYSEgfHwgZXN0cnVjdHVyYS5vcGVyYXRpdm8gIT0gb3BlcmF0aXZvIHx8IG15LmNvbmZpZy5jb25maWcuZGV2ZWwpe1xyXG4gICAgICAgICAgICAgICAgZXN0cnVjdHVyYSA9IGF3YWl0IHRyYWVyRXN0cnVjdHVyYSh7b3BlcmF0aXZvfSlcclxuICAgICAgICAgICAgICAgIGNhcmdhckVzdHJ1Y3R1cmEoZXN0cnVjdHVyYSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHZhciBzdGF0ZTpDYXNvU3RhdGUgPSB7fVxyXG4gICAgICAgICAgICBpbmljaWFsaXphclN0YXRlKHN0YXRlKTtcclxuICAgICAgICAgICAgdmFyIGZvclBrUmFpeiA9IHtmb3JtdWxhcmlvOmNhcmdhLmluZm9ybWFjaW9uSGRyW2VuYyBhcyBJZEVuY10udGFyZWEubWFpbl9mb3JtLCBbZXN0cnVjdHVyYS5wa0FncmVnYWRhVWFQcGFsXTplbmN9O1xyXG4gICAgICAgICAgICBzZXRQZXJzaXN0aXJEYXRvc0J5UGFzcyhcclxuICAgICAgICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHBlcnNpc3RpckRhdG9zQnlQYXNzRW5CYXNlRGVEYXRvcyhwZXJzaXN0ZW50ZXM6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHBlcnNpc3RlbnRlcy5zb2xvTGVjdHVyYSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVzdMOhIGludGVudGFuZG8gbW9kaWZpY2FyIHVuYSBlbmN1ZXN0YSBhYmllcnRhIGNvbW8gc29sbyBsZWN0dXJhLCBubyBzZSBndWFyZGFyb24gbG9zIGNhbWJpb3NcIilcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbXkuYWpheC5kbV9mb3Jwa3JhaXpfZGVzY2FyZ2FyKHtvcGVyYXRpdm8sIHBlcnNpc3RlbnRlc30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGlmKCFjYXJnYS5yZXNwdWVzdGFzW2VzdHJ1Y3R1cmEudWFQcGFsXVtmb3JQa1JhaXpbZXN0cnVjdHVyYS5wa0FncmVnYWRhVWFQcGFsIGFzIENhbXBvUGtSYWl6XV0pe1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzZSBlbmN1ZW50cmEgZWwvbGEgJHtlc3RydWN0dXJhLnBrQWdyZWdhZGFVYVBwYWx9ICR7Zm9yUGtSYWl6W2VzdHJ1Y3R1cmEucGtBZ3JlZ2FkYVVhUHBhbF19YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FyZ2FySG9qYURlUnV0YSh7Li4uY2FyZ2EsIG1vZG9BbG1hY2VuYW1pZW50bzonc2Vzc2lvbid9KTtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBkZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsKHtvcGVyYXRpdm8sIG1vZG9EZW1vOmZhbHNlLCBmb3JQa1JhaXp9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgbXlPd24ud1NjcmVlbnMub2J0ZW5lcl90ZWxlZm9ubz17XHJcbiAgICAgICAgcGFyYW1ldGVyczpbXSxcclxuICAgICAgICBhdXRvcHJvY2VkOnRydWUsXHJcbiAgICAgICAgbWFpbkFjdGlvbjphc3luYyAoX3BhcmFtcyk9PntcclxuICAgICAgICAgICAgLy8gYW50ZXM6IGFicmlyRGlyZWN0b1xyXG4gICAgICAgICAgICB2YXIge29wZXJhdGl2bywgdGFyZWF9ID0ge29wZXJhdGl2bzogT1BFUkFUSVZPX0RFRkFVTFQsIHRhcmVhOiBUQVJFQV9ERUZBVUxUfTtcclxuICAgICAgICAgICAgbGV0IGVuYyA9IHBhcnNlSW50KGF3YWl0IG15LmFqYXguZ2V0X3JhbmRvbV9mcmVlX2Nhc2Uoe29wZXJhdGl2b30pKTsgXHJcbiAgICAgICAgICAgIGF3YWl0IG15T3duLndTY3JlZW5zLmFicmlyX2VuY3Vlc3RhLm1haW5BY3Rpb24oe29wZXJhdGl2bywgZW5jLCB0YXJlYX0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBteU93bi53U2NyZWVucy5jb25zaXN0aXJfZW5jdWVzdGE9e1xyXG4gICAgICAgIHBhcmFtZXRlcnM6W1xyXG4gICAgICAgICAgICB7bmFtZTonb3BlcmF0aXZvJyAsIHR5cGVOYW1lOid0ZXh0JywgZGVmYXVsdFZhbHVlOk9QRVJBVElWT19ERUZBVUxULCByZWZlcmVuY2VzOidvcGVyYXRpdm9zJ30sXHJcbiAgICAgICAgICAgIHtuYW1lOid0YXJlYScgICAgICwgdHlwZU5hbWU6J3RleHQnfSxcclxuICAgICAgICAgICAge25hbWU6J2VuYycgICAgICAgLCB0eXBlTmFtZTonaW50ZWdlcid9XHJcbiAgICAgICAgXSxcclxuICAgICAgICBhdXRvcHJvY2VkOnRydWUsXHJcbiAgICAgICAgbWFpbkFjdGlvbjphc3luYyAocGFyYW1zKT0+e1xyXG4gICAgICAgICAgICBpZiAod2luZG93Lm9wZW5lcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIG1haW5Ub3BCYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi10b3AtYmFyJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAobWFpblRvcEJhcikgeyBcclxuICAgICAgICAgICAgICAgICAgICBtYWluVG9wQmFyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHtvcGVyYXRpdm8sIHRhcmVhLCBlbmMgfSA9IHBhcmFtcztcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IG15T3duLmFqYXguY29uc2lzdGlyX2VuY3Vlc3RhKHtcclxuICAgICAgICAgICAgICAgIG9wZXJhdGl2bzogb3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgaWRfY2FzbzogZW5jXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZihyZXN1bHQub2spe1xyXG4gICAgICAgICAgICAgICAgdmFyIGZpeGVkRmllbGRzID0gW107XHJcbiAgICAgICAgICAgICAgICBmaXhlZEZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6ICdvcGVyYXRpdm8nLCB2YWx1ZTogb3BlcmF0aXZvfSk7XHJcbiAgICAgICAgICAgICAgICBmaXhlZEZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6ICd2aXZpZW5kYScsIHZhbHVlOiBlbmN9KTtcclxuICAgICAgICAgICAgICAgIHZhciBtYWluTGF5b3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5fbGF5b3V0JykhO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRpdkdyaWxsYSA9IGh0bWwuZGl2KHtpZDonaW5jb25zaXN0ZW5jaWFzJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgbWFpbkxheW91dC5pbnNlcnRCZWZvcmUoZGl2R3JpbGxhLCBtYWluTGF5b3V0LmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRpdkJvdG9uZXMgPSBodG1sLmRpdih7aWQ6J2JvdG9uZXMtcG9zdC1jb25zaXN0aXInfSxbXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXJCb3RvbkNlcnJhckVuY3Vlc3RhKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgY2VycmFyIGVuY3Vlc3RhYFxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZWEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGB2b2x2ZXIgYSBlbmN1ZXN0YSAke2VuY31gXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgXSkuY3JlYXRlKClcclxuICAgICAgICAgICAgICAgIG1haW5MYXlvdXQuaW5zZXJ0QmVmb3JlKGRpdkJvdG9uZXMsIG1haW5MYXlvdXQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICBteS50YWJsZUdyaWQoXCJpbmNvbnNpc3RlbmNpYXNfY3VtcGxlbl9jb25kaWNpb25cIiwgZGl2R3JpbGxhLHt0YWJsZURlZjp7fSxmaXhlZEZpZWxkczogZml4ZWRGaWVsZHN9KTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuXHJcblxyXG4vL3F1aXRhIGJvb3RzdHJhcCBkZWwgaGVhZCBwYXJhIHF1ZSBubyByb21wYSBsb3MgZXN0aWxvcyBkZSBCRVBsdXMgKHNvbG8gc2UgdXNhIGJvb3RzdHJhcCBlbiBlbCBmb3JtKVxyXG52YXIgbGlua05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaHJlZj1cImNzcy9ib290c3RyYXAubWluLmNzc1wiXScpO1xyXG5saW5rTm9kZVswXT8ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQobGlua05vZGVbMF0pO1xyXG5cclxuZnVuY3Rpb24gY29uc2lzdGlyX2ZpbHRybyh0YXJlYSwgcmVhX3RlbSwgcmVhKXtcclxuICAgIHJldHVybiB0YXJlYT9yZWFfdGVtOnJlYTtcclxufTtcclxuXHJcbnZhciB0YXJlYXM6YW55ID0gbnVsbDtcclxuXHJcbmZ1bmN0aW9uIGh0bWxOdW1lcm8obnVtOm51bWJlcil7XHJcbiAgICByZXR1cm4gaHRtbC5zcGFuKHtjbGFzczonbnVtZXJvJ30sJycrKG51bT8/JycpKVxyXG59XHJcblxyXG52YXIgcGVyc2lzdGlyRW5NZW1vcmlhID0gYXN5bmMgKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcykgPT4ge1xyXG4gICAgdmFyIHttb2RvQWxtYWNlbmFtaWVudG99ID0gcGVyc2lzdGVudGVzXHJcbiAgICAgICAgaWYobW9kb0FsbWFjZW5hbWllbnRvPT0nbG9jYWwnKXtcclxuICAgICAgICAgICAgbXkuc2V0TG9jYWxWYXIoR0xPVkFSX0RBVE9TQllQQVNTLCBwZXJzaXN0ZW50ZXMpXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIG15LnNldFNlc3Npb25WYXIoR0xPVkFSX0RBVE9TQllQQVNTLCBwZXJzaXN0ZW50ZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG15LnNldFNlc3Npb25WYXIoR0xPVkFSX01PRE9CWVBBU1MsIG1vZG9BbG1hY2VuYW1pZW50bylcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc2luY3Jvbml6YXJEYXRvcyhwZXJzaXN0ZW50ZXM6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXN8bnVsbCwgY2FtYmlhTW9kb0RNOmJvb2xlYW4pe1xyXG4gICAgY29uc3QgbW9kb0RtRGVmZWN0byA9IGF3YWl0IG15LmFqYXgubW9kb19kbV9kZWZlY3RvX29idGVuZXIoe30pO1xyXG4gICAgbGV0IG1vZG9ETTogTW9kb0RNID0gbXkuZ2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZKSB8fCBtb2RvRG1EZWZlY3RvO1xyXG4gICAgbXkuc2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZLCBtb2RvRE0pO1xyXG4gICAgdmFyIGRhdG9zID0gYXdhaXQgbXkuYWpheC5kbV9zaW5jcm9uaXphcih7cGVyc2lzdGVudGVzLCBtb2RvX2RtOm1vZG9ETSwgY2FtYmlhX21vZG9fZG06Y2FtYmlhTW9kb0RNfSk7XHJcbiAgICB2YXIgb3BlcmF0aXZvID0gZGF0b3Mub3BlcmF0aXZvO1xyXG4gICAgcGVyc2lzdGlyRW5NZW1vcmlhKHsuLi5kYXRvcywgbW9kb0FsbWFjZW5hbWllbnRvOidsb2NhbCd9KTtcclxuICAgIHZhciBlc3RydWN0dXJhID0gYXdhaXQgdHJhZXJFc3RydWN0dXJhKHtvcGVyYXRpdm99KVxyXG4gICAgbXkuc2V0TG9jYWxWYXIoR0xPVkFSX0VTVFJVQ1RVUkEsIGVzdHJ1Y3R1cmEpO1xyXG4gICAgbXkucmVtb3ZlTG9jYWxWYXIoQkFDS1VQUyk7XHJcbiAgICByZXR1cm4gZGF0b3M7XHJcbn1cclxuXHJcblxyXG5cclxudmFyIG1vc3RyYXJJbmZvTG9jYWwgPSAoZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQsIHRpdHVsbzpzdHJpbmcsIG5yb1NpbmNybzpudW1iZXJ8bnVsbCwgbW9zdHJhckxpbmtIZHI6IGJvb2xlYW4pPT57XHJcbiAgICBsZXQgZGF0b3NCeVBhc3MgPSBteS5nZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MpO1xyXG4gICAgbGV0IGVzdHJ1Y3R1cmEgPSBteS5nZXRMb2NhbFZhcihHTE9WQVJfRVNUUlVDVFVSQSk7XHJcbiAgICBpZihkYXRvc0J5UGFzcyl7XHJcbiAgICAgICAgZGl2QXZpc29TaW5jcm8uYXBwZW5kKGh0bWwuZGl2KHtpZDonYXZpc28tc2luY3JvJ30sIFtcclxuICAgICAgICAgICAgbnJvU2luY3JvP2h0bWwucChbXCJOw7ptZXJvIGRlIHNpbmNyb25pemFjacOzbjogXCIsIGh0bWwuYihcIlwiK25yb1NpbmNyby50b1N0cmluZygpKV0pOm51bGwsXHJcbiAgICAgICAgICAgIGh0bWwuaDQodGl0dWxvKSxcclxuICAgICAgICAgICAgaHRtbC5wKFtodG1sTnVtZXJvKGxpa2VBcihkYXRvc0J5UGFzcy5jYXJnYXMpLmFycmF5KCkubGVuZ3RoKSwnIGFyZWFzOiAnLGxpa2VBcihkYXRvc0J5UGFzcy5jYXJnYXMpLmtleXMoKS5qb2luKCcsICcpXSksXHJcbiAgICAgICAgICAgIGh0bWwucChbaHRtbE51bWVybyhsaWtlQXIoZGF0b3NCeVBhc3MucmVzcHVlc3Rhc1tlc3RydWN0dXJhLnVhUHBhbF0pLmFycmF5KCkubGVuZ3RoKSwgJyAnICsgZXN0cnVjdHVyYS51YVBwYWxdKSxcclxuICAgICAgICAgICAgbW9zdHJhckxpbmtIZHI/aHRtbC5hKHtocmVmOicuL2NhbXBvJ30sW2h0bWwuYignSVIgQSBMQSBIT0pBIERFIFJVVEEnKV0pOm51bGxcclxuICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgICBkaXZBdmlzb1NpbmNyby5hcHBlbmRDaGlsZChodG1sLmRpdih7Y2xhc3M6J2F2aXNvJ30sW1xyXG4gICAgICAgICAgICBodG1sLmg0KCdTaXN0ZW1hIHZhY8OtbycpLFxyXG4gICAgICAgICAgICBodG1sLnAoJ05vIGhheSBpbmZvcm1hY2nDs24gZGUgZm9ybXVsYXJpb3MnKSxcclxuICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG1vc3RyYXJJbmZvTW9kbyA9IGFzeW5jKG1haW5MYXlvdXQ6SFRNTEVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IG1vZG9EbURlZmVjdG8gPSBhd2FpdCBteS5hamF4Lm1vZG9fZG1fZGVmZWN0b19vYnRlbmVyKHt9KTtcclxuICAgIGxldCBtb2RvRE06IE1vZG9ETSA9IG15LmdldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSkgfHwgbW9kb0RtRGVmZWN0bztcclxuICAgIG15LnNldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSwgbW9kb0RNKTtcclxuICAgIHZhciBkaXZBdmlzb01vZG86SFRNTERpdkVsZW1lbnQ9aHRtbC5kaXYoW1xyXG4gICAgICAgIGh0bWwuZGl2KGBtb2RvIGFjdHVhbDogJHttb2RvRE19LmApXHJcbiAgICBdKS5jcmVhdGUoKTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoZGl2QXZpc29Nb2RvKVxyXG4gICAgcmV0dXJuIG1vZG9ETTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FtYmlhck1vZG9ETUVuTG9jYWxTdG9yYWdlKG1vZG9BY3R1YWw6TW9kb0RNKXtcclxuICAgIG1vZG9BY3R1YWwgPSBtb2RvQWN0dWFsPT0ncHJvZHVjJz8nY2FwYSc6J3Byb2R1Yyc7XHJcbiAgICBteS5zZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVksbW9kb0FjdHVhbCk7XHJcbn1cclxuXHJcbnZhciBwcm9jZWRlclNpbmNyb0Z1biA9IGFzeW5jIChidXR0b246SFRNTEJ1dHRvbkVsZW1lbnQsIGRpdkF2aXNvU2luY3JvOkhUTUxEaXZFbGVtZW50LCBjYW1iaWFNb2RvRE06Ym9vbGVhbik9PntcclxuICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgYnV0dG9uLmNsYXNzTmFtZT0nZG93bmxvYWQtZG0tYnV0dG9uJztcclxuICAgIGRpdkF2aXNvU2luY3JvLmlubmVySFRNTD0nJztcclxuICAgIHRyeXtcclxuICAgICAgICB2YXIgZGF0b3NCeVBhc3M6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMgPSBteS5nZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MpO1xyXG4gICAgICAgIHZhciBkYXRvcyA9IGF3YWl0IHNpbmNyb25pemFyRGF0b3MoZGF0b3NCeVBhc3MsIGNhbWJpYU1vZG9ETSk7XHJcbiAgICAgICAgY29uc3QgbW9kb0RtRGVmZWN0byA9IGF3YWl0IG15LmFqYXgubW9kb19kbV9kZWZlY3RvX29idGVuZXIoe30pO1xyXG4gICAgICAgIGxldCBtb2RvRE1BY3R1YWw6IE1vZG9ETSA9IG15LmdldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSkgfHwgbW9kb0RtRGVmZWN0bztcclxuICAgICAgICBpZihjYW1iaWFNb2RvRE0pe1xyXG4gICAgICAgICAgICBjYW1iaWFyTW9kb0RNRW5Mb2NhbFN0b3JhZ2UobW9kb0RNQWN0dWFsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbW9zdHJhckluZm9Mb2NhbChkaXZBdmlzb1NpbmNybywgJ2RhdG9zIHJlY2liaWRvcycsIGRhdG9zLm51bV9zaW5jcm8sIHRydWUpXHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgdGhyb3cgZXJyXHJcbiAgICB9ZmluYWxseXtcclxuICAgICAgICBidXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgYnV0dG9uLmNsYXNzTmFtZT0nZG93bmxvYWQtZG0tYnV0dG9uLWNvbnQnO1xyXG4gICAgfVxyXG59XHJcbm15T3duLndTY3JlZW5zLnNpbmNyb25pemFyX2RtPWFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgIGF3YWl0IG1vc3RyYXJJbmZvTW9kbyhtYWluTGF5b3V0KTtcclxuICAgIHZhciBwcm9jZWRlckJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtjbGFzczonZG93bmxvYWQtZG0tYnV0dG9uLWNvbnQnfSwncHJvY2VkZXIg4oeSJykuY3JlYXRlKCk7XHJcbiAgICB2YXIgZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQ9aHRtbC5kaXYoKS5jcmVhdGUoKTtcclxuICAgIG1vc3RyYXJJbmZvTG9jYWwobWFpbkxheW91dCBhcyBIVE1MRGl2RWxlbWVudCwgJ2luZm9ybWFjacOzbiBhIHRyYW5zbWl0aXInLCBudWxsLCBmYWxzZSlcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQocHJvY2VkZXJCdXR0b24pO1xyXG4gICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChkaXZBdmlzb1NpbmNybyk7XHJcbiAgICBwcm9jZWRlckJ1dHRvbi5vbmNsaWNrID0gKCk9PnByb2NlZGVyU2luY3JvRnVuKHByb2NlZGVyQnV0dG9uLCBkaXZBdmlzb1NpbmNybywgZmFsc2UpXHJcbn07XHJcblxyXG5teU93bi53U2NyZWVucy5jYW1iaWFyX21vZG9fZG09YXN5bmMgZnVuY3Rpb24oKXtcclxuICAgIHZhciBtYWluTGF5b3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5fbGF5b3V0JykhO1xyXG4gICAgY29uc3QgbW9kb0RNID0gYXdhaXQgbW9zdHJhckluZm9Nb2RvKG1haW5MYXlvdXQpO1xyXG4gICAgdmFyIHByb2NlZGVyQnV0dG9uID0gaHRtbC5idXR0b24oe2NsYXNzOidjYW1iaWFyLW1vZG8tZG0tYnV0dG9uJ30sYGNhbWJpYXIgYSBtb2RvICR7bW9kb0RNID09ICdwcm9kdWMnPydjYXBhJzoncHJvZHVjJ30g4oeSYCkuY3JlYXRlKCk7XHJcbiAgICB2YXIgZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQ9aHRtbC5kaXYoKS5jcmVhdGUoKTtcclxuICAgIG1vc3RyYXJJbmZvTG9jYWwobWFpbkxheW91dCBhcyBIVE1MRGl2RWxlbWVudCwgYGluZm9ybWFjacOzbiBtb2RvIFwiJHttb2RvRE19XCIgYSB0cmFuc21pdGlyYCwgbnVsbCwgZmFsc2UpXHJcbiAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKHByb2NlZGVyQnV0dG9uKTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoZGl2QXZpc29TaW5jcm8pO1xyXG4gICAgcHJvY2VkZXJCdXR0b24ub25jbGljayA9IGFzeW5jICgpPT57XHJcbiAgICAgICAgdmFyIG1haW5EaXYgPSBodG1sLmRpdigpLmNyZWF0ZSgpXHJcbiAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoe30sIFtgQ29uZmlybWEgY2FtYmlvIGRlIG1vZG8gXCIke21vZG9ETX1cIiBhICR7bW9kb0RNPT0ncHJvZHVjJz8nXCJjYXBhXCInOidcInByb2R1Y1wiJ30uYF0pXHJcbiAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB2YXIgaW5wdXRDYW1iaWFyTW9kbyA9IGh0bWwuaW5wdXQoe2NsYXNzOidpbnB1dC1jYW1iaWFyLW1vZG8nfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChodG1sLmRpdihbXHJcbiAgICAgICAgICAgIGh0bWwuZGl2KFsnUG9yIGZhdm9yIGluZ3Jlc2UgbGEgY29udHJhc2XDsWEgJyxpbnB1dENhbWJpYXJNb2RvXSlcclxuICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgdmFyIGNhbWJpYXJNb2RvVmFsdWUgPSBhd2FpdCBjb25maXJtUHJvbWlzZShtYWluRGl2LCB7XHJcbiAgICAgICAgICAgIHdpdGhDbG9zZUJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHJlamVjdDpmYWxzZSxcclxuICAgICAgICAgICAgYnV0dG9uc0RlZjpbXHJcbiAgICAgICAgICAgICAgICB7bGFiZWw6YGNhbWJpYXJgLCB2YWx1ZTp0cnVlfSxcclxuICAgICAgICAgICAgICAgIHtsYWJlbDpgY2FuY2VsYXJgLCB2YWx1ZTpmYWxzZX1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmKGNhbWJpYXJNb2RvVmFsdWUpe1xyXG4gICAgICAgICAgICBpZihpbnB1dENhbWJpYXJNb2RvLnZhbHVlPT0nMTIzNCcpe1xyXG4gICAgICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2NlZGVyQnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgcHJvY2VkZXJTaW5jcm9GdW4ocHJvY2VkZXJCdXR0b24sIGRpdkF2aXNvU2luY3JvLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBtYWluTGF5b3V0LmlubmVySFRNTD0nJztcclxuICAgICAgICAgICAgICAgICAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihgTU9ETyAke215LmdldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSl9IEFDVElWQURPYCkuY3JlYXRlKClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfWZpbmFsbHl7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2VkZXJCdXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZSgnY29udHJhc2XDsWEgaW5jb3JyZWN0YS4nKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZnVuY3Rpb24gaW5pY2lhbGl6YXJTdGF0ZShzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICBzdGF0ZS5tb2RvID0ge1xyXG4gICAgICAgIGRlbW86IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgLy8gT0pPIHN0YXRlLm9wY2lvbmVzIHNlIG1vZGlmaWNhIGFjw6EgeSBlbiBvdHJvIGxhZG8gY29uIGVzdGUgbWlzbW8gY2FydGVsXHJcbiAgICBzdGF0ZS5vcGNpb25lcyA9IHtcclxuICAgICAgICBiaWVudmVuaWRvOiB0cnVlLFxyXG4gICAgICAgIGZvclBrOiBudWxsLFxyXG4gICAgICAgIHBpbGFGb3JQazogW10sXHJcbiAgICAgICAgbW9kb0Rlc3BsaWVndWU6IFwicmVsZXZhbWllbnRvXCIsXHJcbiAgICAgICAgbW9kb0RpcmVjdG86IGZhbHNlLFxyXG4gICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6IG51bGwsXHJcbiAgICAgICAgY29uQ2FtcG9PcGNpb25lczogZmFsc2UsXHJcbiAgICAgICAgc2FsdG9BdXRvbWF0aWNvOiB0cnVlLFxyXG4gICAgfTtcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgc3RhdGUuZmVlZGJhY2tSb3dWYWxpZGF0b3IgPSB7fTtcclxufVxyXG4vKlxyXG5mdW5jdGlvbiBtb3N0cmFyRGF0b3NQZXJzb25hKGhheURhdG9zOmJvb2xlYW4sIGRhdG9zOmFueSwgZGl2UmVzdWx0OkhUTUxEaXZFbGVtZW50KXtcclxuICAgIC8vVE9ETzogRVZBTFVBUiBTSSBDT05WSUVORSBUUkFFUkxPIERFIExBIEJBU0VcclxuICAgIHZhciB0aXBvc0RvY3VtZW50byA9IFsnRE5JIGFyZ2VudGlubycsICdEb2N1bWVudG8gZXh0cmFuamVybycsICdObyB0aWVuZSBkb2N1bWVudG8nLCAnT3RybyddO1xyXG4gICAgdmFyIHBhaXNEb2N1bWVudG8gPSBbJ1VydWd1YXknLCAnUGFyYWd1YXknLCAnQnJhc2lsJywgJ0JvbGl2aWEnLCAnQ2hpbGUnLCAnUGVyw7onLCAnVmVuZXp1ZWxhJywgJ090cm8nXTtcclxuICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChcclxuICAgICAgICBoYXlEYXRvcz9cclxuICAgICAgICAgICAgaHRtbC5kaXYoe2NsYXNzOidkYXRvcy1wZXJzb25hLWNhcmdhZGEnfSxbXHJcbiAgICAgICAgICAgICAgICBodG1sLmgyKFwiRGF0b3MgcGVyc29uYVwiKSxcclxuICAgICAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonZmljaGEtcGVyc29uYSd9LFtcclxuICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbaHRtbC5sYWJlbCgnQXBlbGxpZG86ICcpLCBkYXRvcy5hcGVsbGlkb10pLFxyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KFtodG1sLmxhYmVsKCdOb21icmVzOiAnKSwgZGF0b3Mubm9tYnJlc10pLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwubGFiZWwoJ1RpcG8gZG9jdW1lbnRvOiAnKSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvc0RvY3VtZW50b1tkYXRvcy50aXBvRG9jdW1lbnRvLTFdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0b3MudGlwb0RvY3VtZW50bz09NCAmJiBkYXRvcy50aXBvRG9jdW1lbnRvRXNwZWNpZmljYWRvPycgKCcrIGRhdG9zLnRpcG9Eb2N1bWVudG9Fc3BlY2lmaWNhZG8rJyknOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MudGlwb0RvY3VtZW50bz09MiAmJiBkYXRvcy5wYWlzRG9jdW1lbnRvP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLmxhYmVsKCdQYWlzOiAnKSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWlzRG9jdW1lbnRvW2RhdG9zLnBhaXNEb2N1bWVudG8tMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRvcy5wYWlzRG9jdW1lbnRvPT04ICYmIGRhdG9zLnBhaXNEb2N1bWVudG9Fc3BlY2lmaWNhZG8/JyAoJytkYXRvcy5wYWlzRG9jdW1lbnRvRXNwZWNpZmljYWRvKycpJzonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG8hPTMgJiYgZGF0b3MudGlwb0RvY3VtZW50bz9odG1sLmRpdihbaHRtbC5sYWJlbCgnTsK6IERvY3VtZW50bzogJyksIGRhdG9zLmRvY3VtZW50b10pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLmNlbHVsYXI/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ0NlbC46ICcpLCBkYXRvcy5jZWx1bGFyXSk6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MuZW1haWw/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ0VtYWlsOiAnKSwgZGF0b3MuZW1haWxdKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50ZWxlZm9ub0FsdGVybmF0aXZvP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdUZWwuIGFsdGVybmF0aXZvOiAnKSwgZGF0b3MudGVsZWZvbm9BbHRlcm5hdGl2b10pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLm9ic2VydmFjaW9uZXM/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ09ic2VydmFjaW9uZXM6ICcpLCBkYXRvcy5vYnNlcnZhY2lvbmVzXSk6JycsXHJcbiAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICBdKS5jcmVhdGUoKVxyXG4gICAgICAgIDpcclxuICAgICAgICAgICAgaHRtbC5wKFwiTm8gc2UgZW5jb250csOzIHVuYSBlbmN1ZXN0YSBwYXJhIGxhIGV0aXF1ZXRhIGNhcmdhZGFcIikuY3JlYXRlKClcclxuICAgIClcclxufVxyXG4qL1xyXG4vKm15T3duLmNsaWVudFNpZGVzLnRhcmVhc1RlbVJvdz17XHJcbiAgICB1cGRhdGU6KGRlcG90KT0+e1xyXG4gICAgICAgIHZhciB0YXJlYTonbmFkYSd8J3ByZWFzaWduYXInfCdjYXJnYXInfCdyZWFsaXphcid8J3ZlcmlmaWNhcic9J25hZGEnO1xyXG4gICAgICAgIHZhciByb3c9ZGVwb3Qucm93O1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICB2YXIgaWRwZXI9bXkuY29uZmlnLmlkcGVyO1xyXG4gICAgICAgIHZhciBlc3BlcmFyOmJvb2xlYW49ZmFsc2U7XHJcbiAgICAgICAgaWYocm93LmhhYmlsaXRhZGEpe1xyXG4gICAgICAgICAgICBpZighcm93LnJlY2VwY2lvbmlzdGEgJiYgIXJvdy5hc2lnbmFkbyl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ncHJlYXNpZ25hcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXRydWU7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKCFyb3cuYXNpZ25hZG8gfHwgIXJvdy5mZWNoYV9hc2lnbmFjaW9uIHx8ICFyb3cub3BlcmFjaW9uKXtcclxuICAgICAgICAgICAgICAgIHRhcmVhPSdjYXJnYXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj1yb3cucmVjZXBjaW9uaXN0YSE9aWRwZXI7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKCFyb3cucmVhKXtcclxuICAgICAgICAgICAgICAgIHRhcmVhPSdyZWFsaXphcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXJvdy5hc2lnbmFkbyE9aWRwZXI7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKCFyb3cudmVyaWZpY2Fkbyl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ndmVyaWZpY2FyJztcclxuICAgICAgICAgICAgICAgIGVzcGVyYXI9cm93LnJlY2VwY2lvbmlzdGEhPWlkcGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBwb25lcj17XHJcbiAgICAgICAgICAgIHJlY2VwY2lvbmlzdGEgICAgICAgICAgOnRhcmVhPT0ncHJlYXNpZ25hcicgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgYXNpZ25hZG8gICAgICAgICAgIDp0YXJlYT09J2NhcmdhcicgICAgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIGZlY2hhX2FzaWduYWNpb24gICA6dGFyZWE9PSdjYXJnYXInICAgICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBvcGVyYWNpb24gICAgICAgICAgOnRhcmVhPT0nY2FyZ2FyJyAgICAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgY2FyZ2Ffb2JzZXJ2YWNpb25lczoodGFyZWE9PSdjYXJnYXInICAgICB8fCB0YXJlYT09J3JlYWxpemFyJyAmJiAhcm93LmNhcmdhZG8gJiYgIXJvdy5yZWEgKSAmJiByb3cucmVjZXBjaW9uaXN0YT09aWRwZXIgJiYgJ29wdGF0aXZvJyxcclxuICAgICAgICAgICAgdmVyaWZpY2FkbyAgICAgICAgIDp0YXJlYT09J3ZlcmlmaWNhcicgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIG9ic192ZXJpZmljYWRvICAgICA6dGFyZWE9PSd2ZXJpZmljYXInICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J29wdGF0aXZvJyksXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpa2VBcihwb25lcikuZm9yRWFjaCgodmFsb3IsIGNhbXBvKT0+e1xyXG4gICAgICAgICAgICBpZighdmFsb3Ipe1xyXG4gICAgICAgICAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbY2FtcG9dLnJlbW92ZUF0dHJpYnV0ZSgnbXktbWFuZGF0b3J5JylcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBkZXBvdC5yb3dDb250cm9sc1tjYW1wb10uc2V0QXR0cmlidXRlKCdteS1tYW5kYXRvcnknLHZhbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgcHJlcGFyZTogZnVuY3Rpb24oKXt9XHJcbn1cclxuKi9cclxuXHJcbnZhciBjcmVhckJvdG9uQ2VycmFyRW5jdWVzdGEgPSAobGFiZWw6c3RyaW5nKT0+e1xyXG4gICAgbGV0IHBhdGggPSBcIk0zIDN2MThoMThWM0gzem0xNCAxMi41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCI7XHJcbiAgICB2YXIgc3ZnID0gaHRtbC5zdmcoe2NsYXNzOlwic3ZnLWNlcnJhci1lbmN1ZXN0YVwifSxbXHJcbiAgICAgICAgaHRtbC5wYXRoKHtcclxuICAgICAgICAgICAgZDpwYXRoXHJcbiAgICAgICAgfSlcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgc3ZnLnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIixcIjAgMCAyNiAyNlwiKTtcclxuICAgIGxldCB2ZXIgPSBodG1sLmJ1dHRvbih7aWQ6J2JvdG9uLWNlcnJhci1lbmN1ZXN0YSd9LFtzdmcsIGxhYmVsXSkuY3JlYXRlKCk7XHJcbiAgICB2ZXIub25jbGljayA9ICgpPT4gY2xvc2UoKTtcclxuICAgIHJldHVybiB2ZXJcclxufVxyXG5cclxuY29uc3QgYWJyaXJFbmN1ZXN0YUVuUGVzdGFubmlhRGVkaWNhZGEgPSAodXJsOnN0cmluZyk9PntcclxuICAgIGNvbnN0IEFCUklSX1RBQiA9IFwiX2FicmlyXCI7XHJcbiAgICB3aW5kb3cub3Blbih1cmwsIEFCUklSX1RBQik7XHJcbn1cclxuXHJcbnZhciBjcmVhckJvdG9uVmVyQWJyaXJFbmN1ZXN0YSA9IChvcGVyYXRpdm86SWRPcGVyYXRpdm8sdGFyZWE6SWRUYXJlYSxlbmN1ZXN0YTpudW1iZXIsIGxhYmVsOnN0cmluZyk9PntcclxuICAgIHZhciB1cCA9IHtcclxuICAgICAgICBvcGVyYXRpdm86b3BlcmF0aXZvLFxyXG4gICAgICAgIHRhcmVhOnRhcmVhLFxyXG4gICAgICAgIGVuYzplbmN1ZXN0YVxyXG4gICAgfVxyXG4gICAgbGV0IHZlciA9IGh0bWwuYnV0dG9uKHtpZDonYm90b24tdm9sdmVyLWEtZW5jdWVzdGEnfSxsYWJlbCkuY3JlYXRlKCk7XHJcbiAgICB2ZXIub25jbGljayA9ICgpPT4gYWJyaXJFbmN1ZXN0YUVuUGVzdGFubmlhRGVkaWNhZGEobG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lK215Lm1lbnVTZXBhcmF0b3IrYHc9YWJyaXJfZW5jdWVzdGEmdXA9JHtKU09OLnN0cmluZ2lmeSh1cCl9JmF1dG9wcm9jZWQ9dHJ1ZWApXHJcbiAgICByZXR1cm4gdmVyXHJcbn1cclxuXHJcbnZhciBjcmVhckJvdG9uZXNWZXJBYnJpclRhcmVhcyA9IGFzeW5jIChkZXBvdDpteU93bi5EZXBvdCwgZmllbGROYW1lOnN0cmluZywgbGFiZWw6J2FicmlyJ3wndmVyJyk9PntcclxuICAgIHRhcmVhcyA9IHRhcmVhcz90YXJlYXM6KGF3YWl0IG15T3duLmFqYXgudGFibGVfZGF0YSh7dGFibGU6IGB0YXJlYXNgLCBmaXhlZEZpZWxkczpbXX0pKTtcclxuICAgIHZhciBtaXNUYXJlYXMgPSB0YXJlYXMuZmlsdGVyKCh0YXJlYSk9PlxyXG4gICAgICAgICEhdGFyZWEubWFpbl9mb3JtICYmIHRhcmVhLm9wZXJhdGl2bz09ZGVwb3Qucm93Lm9wZXJhdGl2byAmJiAoZGVwb3QubWFuYWdlci5kZWYubXVlc3RyYUFicmlyRW5Ub2Rhc0xhc1RhcmVhcz90cnVlOmRlcG90LnJvdy50YXJlYSA9PSB0YXJlYS50YXJlYSlcclxuICAgICk7XHJcbiAgICBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdLmlubmVySFRNTD0nJztcclxuICAgIG1pc1RhcmVhcy5mb3JFYWNoKCh0YXJlYTp7dGFyZWE6c3RyaW5nLCBub21icmU6c3RyaW5nLCBtYWluX2Zvcm06SWRGb3JtdWxhcmlvfSk9PntcclxuICAgICAgICBsZXQgYnV0dG9uTGFiZWwgPSBgJHtsYWJlbH0gJHt0YXJlYS50YXJlYX1gO1xyXG4gICAgICAgIGxldCB2ZXIgPSBjcmVhckJvdG9uVmVyQWJyaXJFbmN1ZXN0YShcclxuICAgICAgICAgICAgZGVwb3Qucm93Lm9wZXJhdGl2byBhcyBJZE9wZXJhdGl2byxcclxuICAgICAgICAgICAgdGFyZWEudGFyZWEgYXMgSWRUYXJlYSwgXHJcbiAgICAgICAgICAgIE51bWJlcihkZXBvdC5yb3cuZW5jKSxcclxuICAgICAgICAgICAgYnV0dG9uTGFiZWxcclxuICAgICAgICApO1xyXG4gICAgICAgIHZlci5zdHlsZT0nbWFyZ2luOjBweCAycHg7JztcclxuICAgICAgICBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdLmFwcGVuZENoaWxkKHZlcik7XHJcbiAgICB9KVxyXG59XHJcblxyXG52YXIgZ2V0QWJyaXJPdmVyID0gKF9kZXBvdDpteU93bi5EZXBvdCxfZmllbGROYW1lOnN0cmluZyk6J2FicmlyJz0+J2FicmlyJ1xyXG4gICAgLy9cclxuICAgIC8qKGRlcG90LnJvdy5jYXJnYWRvX2RtIHx8ICFkZXBvdC5yb3dbJ2VzdGFkb3NfX3Blcm1pdGVfZWRpdGFyX2VuY3Vlc3RhJ10gJiYgZGVwb3Qucm93LmFzaWduYWRvICE9IG15LmNvbmZpZy5pZHBlcik/XHJcbiAgICAgICAgJ3Zlcic6J2FicmlyJ1xyXG4gICAgKi9cclxuXHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5hYnJpcj17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIHZhciBsYWJlbDondmVyJ3wnYWJyaXInID0gZ2V0QWJyaXJPdmVyKGRlcG90LGZpZWxkTmFtZSk7XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzVmVyQWJyaXJUYXJlYXMoZGVwb3QsZmllbGROYW1lLGxhYmVsKTsgLy9ubyBlc3Blcm8gcHJvbWVzYSBwb3JxdWUgbm8gZXMgbmVjZXNhcmlvXHJcbiAgICB9XHJcbn07XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5hYnJpclJlY2VwY2lvbj17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIHZhciBsYWJlbDondmVyJ3wnYWJyaXInID0gZ2V0QWJyaXJPdmVyKGRlcG90LGZpZWxkTmFtZSk7XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzVmVyQWJyaXJUYXJlYXMoZGVwb3QsZmllbGROYW1lLGxhYmVsKTsgLy9ubyBlc3Blcm8gcHJvbWVzYSBwb3JxdWUgbm8gZXMgbmVjZXNhcmlvXHJcbiAgICB9XHJcbn07XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy52ZXJJY29ub1N2Zz17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIGxldCB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgdGQuaW5uZXJIVE1MPScnO1xyXG4gICAgICAgIGlmKGRlcG90LnJvdy5wYXRoX2ljb25vX3N2Zyl7XHJcbiAgICAgICAgICAgIHZhciBzdmcgPSBodG1sLnN2Zyh7XHJcbiAgICAgICAgICAgICAgICBjbGFzczpcInN2Zy1hY2Npb25lc1wiXHJcbiAgICAgICAgICAgIH0sW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5wYXRoKHtcclxuICAgICAgICAgICAgICAgICAgICBkOmRlcG90LnJvdy5wYXRoX2ljb25vX3N2Z1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgXSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIsXCIwIDAgNTAgNTBcIik7XHJcbiAgICAgICAgICAgIHRkLmFwcGVuZENoaWxkKHN2Zyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxudmFyIGNyZWFyU1ZHID0gKHBhdGg6c3RyaW5nLHByb3BzOmFueSkgPT4ge1xyXG4gICAgdmFyIHN2ZyA9IGh0bWwuc3ZnKHByb3BzIHx8IHt9LFtcclxuICAgICAgICBodG1sLnBhdGgoe1xyXG4gICAgICAgICAgICBkOnBhdGhcclxuICAgICAgICB9KVxyXG4gICAgXSkuY3JlYXRlKCk7XHJcbiAgICBzdmcuc2V0QXR0cmlidXRlKFwidmlld0JveFwiLFwiMCAwIDUwIDUwXCIpO1xyXG4gICAgcmV0dXJuIHN2Z1xyXG59XHJcbnZhciBjcmVhckJvdG9uQWNjaW9uID0gKGRlcG90Om15T3duLkRlcG90LCBhY3Rpb246RXN0YWRvQWNjaW9uKT0+e1xyXG4gICAgbGV0ICBhY2Npb25TaW5HdWlvbmVzID0gYWN0aW9uLmVhY2Npb24ucmVwbGFjZSgnXycsJyAnKTtcclxuICAgIHZhciBzdmcgPSBjcmVhclNWRyhhY3Rpb24ucGF0aF9pY29ub19zdmcse2NsYXNzOlwic3ZnLWFjY2lvbmVzXCJ9KVxyXG4gICAgaWYoYWN0aW9uLmRlc2FjdGl2YV9ib3Rvbil7XHJcbiAgICAgICAgcmV0dXJuIGh0bWwuc3Bhbih7Y2xhc3M6YHNpbi1ib3Rvbi1hY2Npb25gfSxbYWNjaW9uU2luR3Vpb25lcywgc3ZnIGFzIHVua25vd24gYXMgSFRNTEVsZW1lbnRdKS5jcmVhdGUoKVxyXG4gICAgfVxyXG4gICAgbGV0IGJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtcclxuICAgICAgICBjbGFzczpgYm90b24tYWNjaW9uIGJvdG9uLWFjY2lvbi0ke2FjdGlvbi5lYWNjaW9uX2RpcmVjY2lvbn1gXHJcbiAgICB9LFtcclxuICAgICAgICBgJHthY2Npb25TaW5HdWlvbmVzfWAsXHJcbiAgICAgICAgLy9AdHMtaWdub3JlIHN2ZyBlcyBodG1sZWxlbWVudFxyXG4gICAgICAgIGFjdGlvbi5wYXRoX2ljb25vX3N2Zz9zdmc6bnVsbCxcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgYnV0dG9uLm9uY2xpY2sgPSAoKT0+IHtcclxuICAgICAgICB2YXIgYWN0aW9uRnVuID0gYXN5bmMgKCk9PntcclxuICAgICAgICAgICAgYnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgIGF3YWl0IG15LmFqYXguYWNjaW9uX3RhcmVhc190ZW1fZWplY3V0YXIoe1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2bzogZGVwb3Qucm93Lm9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICB0YXJlYTogZGVwb3Qucm93LnRhcmVhLFxyXG4gICAgICAgICAgICAgICAgICAgIGVuYzogZGVwb3Qucm93LmVuYyxcclxuICAgICAgICAgICAgICAgICAgICBjb25kaWNpb246IGFjdGlvbi5jb25kaWNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgYWNjaW9uOiBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZWFzVGVtVGFibGU6IGRlcG90LmRlZi5uYW1lXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHZhciBncmlkPWRlcG90Lm1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICBncmlkLnJldHJpZXZlUm93QW5kUmVmcmVzaChkZXBvdCx7cmV0cmlldmVJZ25vcmluZ1doZXJlOnRydWV9KSAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYoYWN0aW9uLm5vbWJyZV93c2NyZWVuKXtcclxuICAgICAgICAgICAgICAgICAgICAvL1RPRE8gYWNvbW9kYXIgZXN0byBlbiBhbGd1biBtb21lbnRvXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmFtcyA9IGRlcG90LnJvdztcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdXAgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2bzpwYXJhbXMub3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJlYTpwYXJhbXMudGFyZWEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYzogTnVtYmVyKHBhcmFtcy5lbmMpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGFicmlyRW5jdWVzdGFFblBlc3Rhbm5pYURlZGljYWRhKGxvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZStteS5tZW51U2VwYXJhdG9yK2B3PSR7YWN0aW9uLm5vbWJyZV93c2NyZWVufSZ1cD0ke0pTT04uc3RyaW5naWZ5KHVwKX0mYXV0b3Byb2NlZD10cnVlYClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJcclxuICAgICAgICAgICAgfWZpbmFsbHl7XHJcbiAgICAgICAgICAgICAgICAvL3JldHJhc28gbGEgaGFiaWxpdGFjacOzbiBwb3JxdWUgYSB2ZWNlcyB0YXJkYSBlbiByZWRpYnVqYXJzZSBsYSBib3RvbmVyYSB5IHB1ZWRlIHRyYWVyIHByb2JsZW1hcyBzaSBkYW4gZG9ibGUgY2xpY2sgXHJcbiAgICAgICAgICAgICAgICAvL3lhIHF1ZSBlamVjdXRhIG51ZXZhbWVudGUgdW5hIGFjY2nDs24gcXVlIHlhIHNlIGVqZWN1dMOzICh5IHRlcm1pbsOzKSBhbnRlc1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+YnV0dG9uLmRpc2FibGVkPWZhbHNlLDMwMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIGNvbmZpcm1Qcm9taXNlT3B0czogRGlhbG9nT3B0aW9ucyA9IHt9XHJcbiAgICAgICAgaWYoYWN0aW9uLmNvbmZpcm1hKXtcclxuICAgICAgICAgICAgY29uZmlybVByb21pc2VPcHRzLmFza0Zvck5vUmVwZWF0ID0gJ25vIHZvbHZlciBhIG1vc3RyYXInOyAvL211ZXN0cmEgbWVuc2FqZSBwb3IgZGVmYXVsdCBwZXJvIGFuZGEgaWd1YWxcclxuICAgICAgICAgICAgdmFyIGJ1dHRvbnNEZWYgPSBbXHJcbiAgICAgICAgICAgICAgICB7bGFiZWw6J3PDrScsIHZhbHVlOnRydWV9LFxyXG4gICAgICAgICAgICAgICAge2xhYmVsOidubycsIHZhbHVlOmZhbHNlfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIGNvbmZpcm1Qcm9taXNlKGBjb25maXJtYSBhY2Npw7NuIFwiJHthY2Npb25TaW5HdWlvbmVzfVwiP2AsIHsuLi5jb25maXJtUHJvbWlzZU9wdHMsIGJ1dHRvbnNEZWZ9KS50aGVuKGFjdGlvbkZ1bik7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGFjdGlvbkZ1bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBidXR0b25cclxufVxyXG5cclxudmFyIGNyZWFyQm90b25lc0FjY2lvbmVzID0gYXN5bmMgKG9wdHM6e2RlcG90Om15T3duLkRlcG90LCBmaWVsZE5hbWU6c3RyaW5nLCBkaXJlY2Npb246IERpcmVjY2lvbkFjY2lvbn0pPT57XHJcbiAgICBsZXQge2RlcG90LGZpZWxkTmFtZSxkaXJlY2Npb259ID0gb3B0cztcclxuICAgIGxldCB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICB0ZC5pbm5lckhUTUw9Jyc7XHJcbiAgICAoZGVwb3Qucm93Q29udHJvbHMuYWNjaW9uZXMuZ2V0VHlwZWRWYWx1ZSgpfHxbXSlcclxuICAgICAgICAuZmlsdGVyKChhY3Rpb246RXN0YWRvQWNjaW9uKT0+YWN0aW9uLmVhY2Npb25fZGlyZWNjaW9uPT1kaXJlY2Npb24pXHJcbiAgICAgICAgLmZvckVhY2goKGFjdGlvbjpFc3RhZG9BY2Npb24pPT50ZC5hcHBlbmRDaGlsZChjcmVhckJvdG9uQWNjaW9uKGRlcG90LCBhY3Rpb24pKSk7XHJcbn1cclxuXHJcbnZhciBjcmVhclN3aXRjaCA9IChvcHRzOntyb3VuZD86Ym9vbGVhbiwgZGlzYWJsZWQ/OmJvb2xlYW4sIGNoZWNrZWQ/OmJvb2xlYW4sIG9uQ2xpY2tGdW46RnVuY3Rpb24sIG9uRXJyRnVuPzpGdW5jdGlvbn0pPT57XHJcbiAgICB2YXIgY2hlY2tib3ggPSBodG1sLmlucHV0KHt0eXBlOidjaGVja2JveCcsIGNoZWNrZWQ6b3B0cy5jaGVja2VkfSkuY3JlYXRlKCk7XHJcbiAgICBjaGVja2JveC5vbmNsaWNrID0gYXN5bmMoKT0+e1xyXG4gICAgICAgIHRyeXtcclxuICAgICAgICAgICAgY2hlY2tib3guZGlzYWJsZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgYXdhaXQgb3B0cy5vbkNsaWNrRnVuKClcclxuICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKVxyXG4gICAgICAgICAgICB0aHJvdyBlcnJcclxuICAgICAgICB9ZmluYWxseXtcclxuICAgICAgICAgICAgY2hlY2tib3guZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGh0bWwubGFiZWwoe2NsYXNzOidzd2l0Y2gnfSxbXHJcbiAgICAgICAgY2hlY2tib3gsXHJcbiAgICAgICAgaHRtbC5zcGFuKHtjbGFzczpgc2xpZGVyICR7b3B0cy5yb3VuZD8ncm91bmQnOicnfWB9KSxcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG59XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5oYWJpbGl0YXI9e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHRkLmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgICAgdGQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgICAgIGNyZWFyU3dpdGNoKHtcclxuICAgICAgICAgICAgICAgIHJvdW5kOnRydWUsXHJcbiAgICAgICAgICAgICAgICBjaGVja2VkOmRlcG90LnJvdy5oYWJpbGl0YWRhLFxyXG4gICAgICAgICAgICAgICAgb25DbGlja0Z1bjogYXN5bmMgKCk9PntcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBteS5hamF4LmVuY3Vlc3RhX2hhYmlsaXRhcl9kZXNoYWJpbGl0YXIoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpdm86IGRlcG90LnJvdy5vcGVyYXRpdm8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYzogZGVwb3Qucm93LmVuY1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBncmlkPWRlcG90Lm1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+Z3JpZC5yZXRyaWV2ZVJvd0FuZFJlZnJlc2goZGVwb3QpLDMwMCk7Ly9wYXJhIHF1ZSBzZSB2ZWEgZWwgZWZlY3RvXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFjY2lvbmVzQXZhbmNlPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzQWNjaW9uZXMoe2RlcG90LGZpZWxkTmFtZSxkaXJlY2Npb246J2F2YW5jZSd9KTtcclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFjY2lvbmVzUmV0cm9jZXNvPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzQWNjaW9uZXMoe2RlcG90LGZpZWxkTmFtZSxkaXJlY2Npb246J3JldHJvY2Vzbyd9KTtcclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFjY2lvbmVzQmxhbnF1ZW89e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICBjcmVhckJvdG9uZXNBY2Npb25lcyh7ZGVwb3QsZmllbGROYW1lLGRpcmVjY2lvbjonYmxhbnF1ZW8nfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5mdW5jdGlvbiBcclxuYm90b25DbGllbnRTaWRlRW5HcmlsbGEob3B0czogeyBub21icmVCb3Rvbjogc3RyaW5nLCBsbGFtYWRhOiAoZGVwb3Q6IG15T3duLkRlcG90KSA9PiBQcm9taXNlPGFueT4gfSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcmVwYXJlOiBmdW5jdGlvbiAoZGVwb3Q6IG15T3duLkRlcG90LCBmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICB2YXIgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICB2YXIgYm90b24gPSBodG1sLmJ1dHRvbihvcHRzLm5vbWJyZUJvdG9uKS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgdGQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYm90b24pO1xyXG4gICAgICAgICAgICB2YXIgcmVzdGF1cmFyQm90b24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYm90b24udGV4dENvbnRlbnQgPSBvcHRzLm5vbWJyZUJvdG9uO1xyXG4gICAgICAgICAgICAgICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGJvdG9uLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9ICdwcm9jZXNhbmRvLi4uJztcclxuICAgICAgICAgICAgICAgIG9wdHMubGxhbWFkYShkZXBvdCkudGhlbihhc3luYyBmdW5jdGlvbihyZXN1bHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAnb2snIGluIHJlc3VsdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdC5vayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3JpZD1kZXBvdC5tYW5hZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZ3JpZC5yZXRyaWV2ZVJvd0FuZFJlZnJlc2goZGVwb3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcG90LmRldGFpbENvbnRyb2xzLmluY29uc2lzdGVuY2lhcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwb3QuZGV0YWlsQ29udHJvbHMuaW5jb25zaXN0ZW5jaWFzLmZvcmNlRGlzcGxheURldGFpbEdyaWQoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9ICByZXN1bHQubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uLnRpdGxlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyM4RjgnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChyZXN0YXVyYXJCb3RvbiwgMjUwMCk7XHJcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90b24udGV4dENvbnRlbnQgPSAnZXJyb3InO1xyXG4gICAgICAgICAgICAgICAgICAgIGJvdG9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjRkY4JztcclxuICAgICAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2lmICgoZGVwb3Qucm93LmNvbnNpc3RpZG89PW51bGwgICYmIGRlcG90LnJvdy5yZWEhPW51bGwpIHx8IGRlcG90LnJvdy5tb2RpZmljYWRvIT1udWxsICYmIGRlcG90LnJvdy5jb25zaXN0aWRvIT1udWxsICYmIGRlcG90LnJvdy5tb2RpZmljYWRvID5kZXBvdC5yb3cuY29uc2lzdGlkbyl7XHJcbiAgICAgICAgICAgIC8vICAgIGJvdG9uLnN0eWxlLmJhY2tncm91bmRDb2xvcj0nIzhDRidcclxuICAgICAgICAgICAgLy99XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICB9O1xyXG59XHJcblxyXG5cclxubXlPd24uY2xpZW50U2lkZXMuY29uc2lzdGlyID0gYm90b25DbGllbnRTaWRlRW5HcmlsbGEoe1xyXG4gICAgbm9tYnJlQm90b246ICdjb25zaXN0aXInLFxyXG4gICAgbGxhbWFkYTogZnVuY3Rpb24gKGRlcG90OiBteU93bi5EZXBvdCkge1xyXG4gICAgICAgIHZhciBteVJlYUZpZWxkTmFtZSA9IGRlcG90Lm1hbmFnZXIuZGVmLnRhYmxlTmFtZT09XCJ0ZW1cIj8ncmVhJzondWx0X3JlYSc7XHJcbiAgICAgICAgdmFyIGZpbHRyb1JlYT1jb25zaXN0aXJfZmlsdHJvKGRlcG90LnJvdy50YXJlYSwgZGVwb3Qucm93W215UmVhRmllbGROYW1lXSwgZGVwb3Qucm93LnJlYSlcclxuICAgICAgICByZXR1cm4gZmlsdHJvUmVhPyBteU93bi5hamF4LmNvbnNpc3Rpcl9lbmN1ZXN0YSh7XHJcbiAgICAgICAgICAgIG9wZXJhdGl2bzogZGVwb3Qucm93Lm9wZXJhdGl2byxcclxuICAgICAgICAgICAgaWRfY2FzbzogZGVwb3Qucm93LmVuY1xyXG4gICAgICAgIH0pOiBhbGVydFByb21pc2UoJ0xhIGVuY3Vlc3RhIGRlYmUgdGVuZXIgZGF0byBlbiByZWEgcGFyYSBwb2RlciBjb25zaXN0aXJsYS4nKTtcclxuICAgIH1cclxufSk7XHJcblxyXG5teU93bi53U2NyZWVucy5wcm9jLnJlc3VsdC5tb3N0cmFyX2VuY3Vlc3Rhc19hX2JsYW5xdWVhcj1mdW5jdGlvbihyZXN1bHQsIGRpdlJlc3VsdCl7XHJcbiAgICBpZihyZXN1bHQucm93cy5sZW5ndGgpe1xyXG4gICAgICAgIHZhciBjdXJyZW50VG9rZW46c3RyaW5nfG51bGwgPSBudWxsXHJcbiAgICAgICAgdmFyIG5yb0NhcmdhID0gMDtcclxuICAgICAgICB2YXIgZW5jdWVzdGFzRGl2OiBudWxsfEhUTUxEaXZFbGVtZW50ID0gbnVsbDtcclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoaHRtbC5oMignb3BlcmF0aXZvOiAnICsgcmVzdWx0Lm9wZXJhdGl2bykuY3JlYXRlKCkpO1xyXG4gICAgICAgIHJlc3VsdC5yb3dzLmZvckVhY2goKGVuY3Vlc3RhKT0+e1xyXG4gICAgICAgICAgICBpZihjdXJyZW50VG9rZW4gIT0gZW5jdWVzdGEuY2FyZ2Fkb19kbSl7XHJcbiAgICAgICAgICAgICAgICBucm9DYXJnYSsrO1xyXG4gICAgICAgICAgICAgICAgY3VycmVudFRva2VuID0gZW5jdWVzdGEuY2FyZ2Fkb19kbTtcclxuICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChodG1sLmg0KCdjYXJnYSBOwrogJyArIG5yb0NhcmdhLnRvU3RyaW5nKCkpLmNyZWF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIGVuY3Vlc3Rhc0RpdiA9IGh0bWwuZGl2KHtjbGFzczonZW5jdWVzdGFzLWEtYmxhbnF1ZWFyJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgLy9sYXMgY29waW8gY29uIGxldCBwYXJhIHF1ZSB0b21lIGVsIHZhbG9yIGFjdHVhbCB5IG5vIGVsIMO6bHRpbW9cclxuICAgICAgICAgICAgICAgIGxldCBtaVRva2VuID0gY3VycmVudFRva2VuO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1pTnJvQ2FyZ2EgPSBucm9DYXJnYTtcclxuICAgICAgICAgICAgICAgIHZhciBidXR0b24gPSBodG1sLmJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6YGJvdG9uLWJsYW5xdWVhci1kbSBib3Rvbi1hY2Npb25gXHJcbiAgICAgICAgICAgICAgICB9LCAnYmxhbnF1ZWFyIGNhcmdhICcgKyBucm9DYXJnYS50b1N0cmluZygpKS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5vbmNsaWNrID0gYXN5bmMgKCk9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1haW5EaXYgPSBodG1sLmRpdigpLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoe2NsYXNzOidkYW5nZXInfSwgW2BFc3TDoSBwb3IgYmxhbnF1ZWFyIGxhIGNhcmdhICR7bWlOcm9DYXJnYX0uIE5vIHNlIHBvZHLDoSBkZXNjYXJnYXIgZWwgZGlzcG9zaXRpdm8uYF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXRGb3J6YXIgPSBodG1sLmlucHV0KHtjbGFzczonaW5wdXQtZm9yemFyJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1haW5EaXYuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbJ1NlIHB1ZWRlIGZvcnphciBlbCBibGFucXVlbyAnLGlucHV0Rm9yemFyXSlcclxuICAgICAgICAgICAgICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZvcnphciA9IGF3YWl0IGNvbmZpcm1Qcm9taXNlKG1haW5EaXYsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aENsb3NlQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0OmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zRGVmOltcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsYWJlbDonZm9yemFyIGJsYW5xdWVvJywgdmFsdWU6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGFiZWw6J2NhbmNlbGFyIGJsYW5xdWVvJywgdmFsdWU6ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBpZihmb3J6YXIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihpbnB1dEZvcnphci52YWx1ZT09J2Zvcnphcicpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRCbGFucXVlbyA9IGF3YWl0IG15LmFqYXguZG1fYmxhbnF1ZWFyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aXZvOiByZXN1bHQub3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogbWlUb2tlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5pbm5lckhUTUw9Jyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QmxhbnF1ZW8uZm9yRWFjaCgodHQ6YW55KT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdih7fSxbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5zcGFuKHt9LGAke3R0LnJlc3VsdF9ibGFucXVlb31gKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKCdzaSBuZWNlc2l0YSBibGFucXVlYXIgZXNjcmliYSBmb3J6YXIuJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChlbmN1ZXN0YXNEaXYpO1xyXG4gICAgICAgICAgICAgICAgZGl2UmVzdWx0LmFwcGVuZENoaWxkKGJ1dHRvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZW5jdWVzdGFzRGl2Py5hcHBlbmRDaGlsZChodG1sLmRpdih7fSxbXHJcbiAgICAgICAgICAgICAgICBodG1sLnNwYW4oYGVuY3Vlc3RhOiAke2VuY3Vlc3RhLmVuY30gYCksXHJcbiAgICAgICAgICAgICAgICBodG1sLnNwYW4oYHRhcmVhOiAgJHtlbmN1ZXN0YS50YXJlYX0gYCksXHJcbiAgICAgICAgICAgIF0pLmNyZWF0ZSgpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHByZXZpc3VhbGl6YXJFbmN1ZXN0YSA9IChcclxuICAgIHJlc3VsdFRlbTphbnksIFxyXG4gICAgZGl2UmVzdWx0OkhUTUxEaXZFbGVtZW50LCBcclxuICAgIHBhcmFtczp7XHJcbiAgICAgICAgbm9tYnJlUHJvY2VkdXJlOnN0cmluZyxcclxuICAgICAgICBpZ25vcmFKc29uRW5jdWVzdGFWYWNpbzpib29sZWFuXHJcbiAgICAgICAgbGFiZWxBY3Rpb246IHN0cmluZ1xyXG4gICAgfVxyXG4pID0+e1xyXG4gICAgbGV0IHtjYXNvVGVtfSA9ICByZXN1bHRUZW07XHJcbiAgICBpZighY2Fzb1RlbS5qc29uX2VuY3Vlc3RhKXtcclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoaHRtbC5wKHtpZDonbWVuc2FqZS1uby1oYXktanNvbi1lbmN1ZXN0YSd9LGBubyBzZSBlbmNvbnRyw7MgaW5mb3JtYWNpb24gY2FyZ2FkYSBlbiBsYSBlbmN1ZXN0YSAke2Nhc29UZW0uZW5jfWApLmNyZWF0ZSgpKTtcclxuICAgIH1cclxuICAgIGlmKGNhc29UZW0uanNvbl9lbmN1ZXN0YSB8fCBwYXJhbXMuaWdub3JhSnNvbkVuY3Vlc3RhVmFjaW8pe1xyXG4gICAgICAgIHZhciBlbmN1ZXN0YURpdiA9IGh0bWwuZGl2KHtpZDonYmFja3VwLWRpdid9KS5jcmVhdGUoKTtcclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoZW5jdWVzdGFEaXYpO1xyXG4gICAgICAgIHRyeXtcclxuICAgICAgICAgICAgbXkuYWdyZWdhcl9qc29uKGVuY3Vlc3RhRGl2LCBjYXNvVGVtLmpzb25fZW5jdWVzdGEpO1xyXG4gICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoaHRtbC5wKHtpZDonbWVuc2FqZS1lcnJvci1qc29uLWVuY3Vlc3RhJ30sYG5vIHNlIHB1ZG8gYWwgcHJldmlzdWFsaXphciBsYSBlbmN1ZXN0YSAke2Nhc29UZW0uZW5jfSBjb3JyZWN0YW1lbnRlLiAke2Vyci5tZXNzYWdlfWApLmNyZWF0ZSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtcclxuICAgICAgICAgICAgY2xhc3M6YGJvdG9uLWJsYW5xdWVhci1lbmN1ZXN0YS1hY2Npb25gXHJcbiAgICAgICAgfSwgYCR7cGFyYW1zLmxhYmVsQWN0aW9ufSBlbmN1ZXN0YWApLmNyZWF0ZSgpO1xyXG4gICAgICAgIGJ1dHRvbi5vbmNsaWNrID0gYXN5bmMgKCk9PiB7XHJcbiAgICAgICAgICAgIHZhciBtYWluRGl2ID0gaHRtbC5kaXYoKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICBtYWluRGl2LmFwcGVuZENoaWxkKFxyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonZGFuZ2VyJ30sIFtgRXN0w6EgcG9yICR7cGFyYW1zLmxhYmVsQWN0aW9ufSBsYSBlbmN1ZXN0YSAke2Nhc29UZW0uZW5jfS4gU2UgcGVyZGVyw6FuIGxvcyBkYXRvcyBkZSBsYSBtaXNtYS5gXSlcclxuICAgICAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHZhciBpbnB1dEZvcnphciA9IGh0bWwuaW5wdXQoe2NsYXNzOidpbnB1dC1mb3J6YXInfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgIG1haW5EaXYuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoW2BwYXJhICR7cGFyYW1zLmxhYmVsQWN0aW9ufSBlc2NyaWJhIGZvcnphciBgLGlucHV0Rm9yemFyXSlcclxuICAgICAgICAgICAgXSkuY3JlYXRlKCkpO1xyXG4gICAgICAgICAgICB2YXIgZm9yemFyID0gYXdhaXQgY29uZmlybVByb21pc2UobWFpbkRpdiwge1xyXG4gICAgICAgICAgICAgICAgd2l0aENsb3NlQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHJlamVjdDpmYWxzZSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnNEZWY6W1xyXG4gICAgICAgICAgICAgICAgICAgIHtsYWJlbDonZm9yemFyJywgdmFsdWU6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICAgICAge2xhYmVsOidjYW5jZWxhcicsIHZhbHVlOmZhbHNlfVxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYoZm9yemFyKXtcclxuICAgICAgICAgICAgICAgIGlmKGlucHV0Rm9yemFyLnZhbHVlPT0nZm9yemFyJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdhaXRHaWYgPSBodG1sLmltZyh7c3JjOidpbWcvbG9hZGluZzE2LmdpZid9KS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YWl0R2lmLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQod2FpdEdpZik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRCbGFucXVlbyA9IGF3YWl0IG15LmFqYXhbcGFyYW1zLm5vbWJyZVByb2NlZHVyZV0oY2Fzb1RlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5pbm5lckhUTUw9cmVzdWx0QmxhbnF1ZW87XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRHaWYuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKGBzaSBuZWNlc2l0YSAke3BhcmFtcy5sYWJlbEFjdGlvbn0gZXNjcmliYSBmb3J6YXIuYClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcclxuICAgIH1cclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMucHJvYy5yZXN1bHQubW9zdHJhcl9lbmN1ZXN0YV9hX2JsYW5xdWVhcl9jb250ZW5pZG89ZnVuY3Rpb24ocmVzdWx0LCBkaXZSZXN1bHQpe1xyXG4gICAgcHJldmlzdWFsaXphckVuY3Vlc3RhKHJlc3VsdCwgZGl2UmVzdWx0LCB7XHJcbiAgICAgICAgbm9tYnJlUHJvY2VkdXJlOidlbmN1ZXN0YV9ibGFucXVlYXInLFxyXG4gICAgICAgIGlnbm9yYUpzb25FbmN1ZXN0YVZhY2lvOiBmYWxzZSxcclxuICAgICAgICBsYWJlbEFjdGlvbjogJ2JsYW5xdWVhcidcclxuICAgIH0pXHJcbn1cclxuXHJcbm15T3duLndTY3JlZW5zLnByb2MucmVzdWx0Lm1vc3RyYXJfZW5jdWVzdGFfYV9ib3JyYXI9ZnVuY3Rpb24ocmVzdWx0LCBkaXZSZXN1bHQpe1xyXG4gICAgcHJldmlzdWFsaXphckVuY3Vlc3RhKHJlc3VsdCwgZGl2UmVzdWx0LCB7XHJcbiAgICAgICAgbm9tYnJlUHJvY2VkdXJlOidlbmN1ZXN0YV9ib3JyYXInLFxyXG4gICAgICAgIGlnbm9yYUpzb25FbmN1ZXN0YVZhY2lvOiB0cnVlLFxyXG4gICAgICAgIGxhYmVsQWN0aW9uOiAnYm9ycmFyJ1xyXG4gICAgfSlcclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMuZGVtbz1hc3luYyBmdW5jdGlvbihfYWRkclBhcmFtcyl7XHJcbiAgICAvLyBAdHMtaWdub3JlIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwgZ2xvYmFsXHJcbiAgICB3aW5kb3cuZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbCh7bW9kb0RlbW86dHJ1ZX0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhcnJheUZsYXQ8VD4oYXJyYXlzOlRbXVtdKTpUW117XHJcbiAgICByZXR1cm4gKFtdIGFzIFRbXSkuY29uY2F0LmFwcGx5KFtdLCBhcnJheXMpO1xyXG59XHJcbiJdfQ==
|
|
804
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsMkNBQWdDO0lBQ2hDLG1FQUFrRztJQUtsRyxrQ0FBa0M7SUFDbEMscUVBQThHO0lBQzlHLG1FQUFrSjtJQUVsSixrQkFBa0I7SUFFbEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQzdCLElBQUksaUJBQWlCLEdBQWMsSUFBSSxDQUFDO0lBRXhDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBUSxFQUFFO1FBQ3BDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLElBQUcsQ0FBQztZQUNBLGlCQUFpQixHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUFBLE9BQU0sR0FBRyxFQUFDLENBQUM7WUFDUixpQkFBaUIsR0FBQyxJQUFJLENBQUM7UUFDM0IsQ0FBQztRQUNELEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFDO1lBQzFCLFVBQVUsRUFBQztnQkFDUCxFQUFDLElBQUksRUFBQyxXQUFXLEVBQUcsUUFBUSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFDLFlBQVksRUFBQztnQkFDN0YsRUFBQyxJQUFJLEVBQUMsT0FBTyxFQUFPLFFBQVEsRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDO2dCQUN0RixFQUFDLElBQUksRUFBQyxLQUFLLEVBQVMsUUFBUSxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxFQUFDO2FBQy9EO1lBQ0QsVUFBVSxFQUFDLElBQUk7WUFDZixVQUFVLEVBQUMsQ0FBTyxNQUFNLEVBQUMsRUFBRTs7Z0JBQ3ZCLHNCQUFzQjtnQkFD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QkFBeUIsQ0FBQyxFQUFDLFFBQVEsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7S0FBQSxDQUFBO0lBRUQsU0FBUyxTQUFTLENBQUksTUFBWTtRQUM5QixPQUFRLEVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtodG1sfSBmcm9tIFwianMtdG8taHRtbFwiO1xyXG5pbXBvcnQge2Rpc3BhdGNoZXJzLCBkbVRyYWVyRGF0b3NGb3JtdWxhcmlvLCB0cmFlckVzdHJ1Y3R1cmF9IGZyb20gXCIuLi91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvXCI7XHJcbmltcG9ydCB7IENhc29TdGF0ZSwgIFxyXG4gICAgSWRGb3JtdWxhcmlvLCBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcywgSWRFbmMsIElkT3BlcmF0aXZvLCBJZFRhcmVhLCBFc3RhZG9BY2Npb24sIERpcmVjY2lvbkFjY2lvbixcclxuICAgIENhbXBvUGtSYWl6LCBNb2RvRE1cclxufSBmcm9tIFwiLi4vdW5sb2dnZWQvdGlwb3NcIjtcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcbmltcG9ydCB7Z2V0RXN0cnVjdHVyYSwgc2V0UGVyc2lzdGlyRGF0b3NCeVBhc3MsIE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWX0gZnJvbSBcIi4uL3VubG9nZ2VkL2J5cGFzcy1mb3JtdWxhcmlvXCJcclxuaW1wb3J0IHtCQUNLVVBTLCBjYXJnYXJFc3RydWN0dXJhLCBjYXJnYXJIb2phRGVSdXRhLCBHTE9WQVJfREFUT1NCWVBBU1MsIEdMT1ZBUl9FU1RSVUNUVVJBLCBHTE9WQVJfTU9ET0JZUEFTU30gZnJvbSBcIi4uL3VubG9nZ2VkL2FicmlyLWZvcm11bGFyaW9cIlxyXG5cclxuLy9UT0RPIEdFTkVSQUxJWkFSXHJcblxyXG5jb25zdCBUQVJFQV9ERUZBVUxUID0gJ2VuY3UnO1xyXG52YXIgT1BFUkFUSVZPX0RFRkFVTFQ6c3RyaW5nfG51bGw9IG51bGw7XHJcblxyXG5teU93bi5hdXRvU2V0dXBGdW5jdGlvbnMucHVzaChhc3luYyAoKT0+e1xyXG4gICAgdmFyIG15ID0gbXlPd247ICAgIFxyXG4gICAgdHJ5e1xyXG4gICAgICAgIE9QRVJBVElWT19ERUZBVUxUID0gYXdhaXQgbXkuYWpheC5vcGVyYXRpdm9fZ2V0KHt9KTtcclxuICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgIE9QRVJBVElWT19ERUZBVUxUPW51bGw7XHJcbiAgICB9XHJcbiAgICBteU93bi53U2NyZWVucy5hYnJpcl9lbmN1ZXN0YT17XHJcbiAgICAgICAgcGFyYW1ldGVyczpbXHJcbiAgICAgICAgICAgIHtuYW1lOidvcGVyYXRpdm8nICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6T1BFUkFUSVZPX0RFRkFVTFQsIHJlZmVyZW5jZXM6J29wZXJhdGl2b3MnfSxcclxuICAgICAgICAgICAge25hbWU6J3RhcmVhJyAgICAgLCB0eXBlTmFtZTondGV4dCcsIGRlZmF1bHRWYWx1ZTpUQVJFQV9ERUZBVUxULCByZWZlcmVuY2VzOiAndGFyZWFzJ30sXHJcbiAgICAgICAgICAgIHtuYW1lOidlbmMnICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInLCBkZWZhdWx0VmFsdWU6MTMwMDMxfVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgYXV0b3Byb2NlZDp0cnVlLFxyXG4gICAgICAgIG1haW5BY3Rpb246YXN5bmMgKHBhcmFtcyk9PntcclxuICAgICAgICAgICAgLy8gYW50ZXM6IGFicmlyRGlyZWN0b1xyXG4gICAgICAgICAgICB2YXIge29wZXJhdGl2bywgZW5jLCB0YXJlYX0gPSBwYXJhbXM7XHJcbiAgICAgICAgICAgIHZhciBlc3RydWN0dXJhID0gZ2V0RXN0cnVjdHVyYSgpO1xyXG4gICAgICAgICAgICB2YXIgY2FyZ2EgPSBhd2FpdCBteS5hamF4LmRtX2ZvcnBrcmFpel9jYXJnYXIoe29wZXJhdGl2bywgcGtfcmFpel92YWx1ZTplbmMsIHRhcmVhfSkgYXMgRGF0b3NCeVBhc3NQZXJzaXN0aWJsZXM7XHJcbiAgICAgICAgICAgIGlmKCFlc3RydWN0dXJhIHx8IChlc3RydWN0dXJhLnRpbWVzdGFtcD8/MCkgPCBjYXJnYS50aW1lc3RhbXBFc3RydWN0dXJhISB8fCBlc3RydWN0dXJhLm9wZXJhdGl2byAhPSBvcGVyYXRpdm8gfHwgbXkuY29uZmlnLmNvbmZpZy5kZXZlbCl7XHJcbiAgICAgICAgICAgICAgICBlc3RydWN0dXJhID0gYXdhaXQgdHJhZXJFc3RydWN0dXJhKHtvcGVyYXRpdm99KVxyXG4gICAgICAgICAgICAgICAgY2FyZ2FyRXN0cnVjdHVyYShlc3RydWN0dXJhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgdmFyIHN0YXRlOkNhc29TdGF0ZSA9IHt9XHJcbiAgICAgICAgICAgIGluaWNpYWxpemFyU3RhdGUoc3RhdGUpO1xyXG4gICAgICAgICAgICB2YXIgZm9yUGtSYWl6ID0ge2Zvcm11bGFyaW86Y2FyZ2EuaW5mb3JtYWNpb25IZHJbZW5jIGFzIElkRW5jXS50YXJlYS5tYWluX2Zvcm0sIFtlc3RydWN0dXJhLnBrQWdyZWdhZGFVYVBwYWxdOmVuY307XHJcbiAgICAgICAgICAgIHNldFBlcnNpc3RpckRhdG9zQnlQYXNzKFxyXG4gICAgICAgICAgICAgICAgYXN5bmMgZnVuY3Rpb24gcGVyc2lzdGlyRGF0b3NCeVBhc3NFbkJhc2VEZURhdG9zKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocGVyc2lzdGVudGVzLnNvbG9MZWN0dXJhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXN0w6EgaW50ZW50YW5kbyBtb2RpZmljYXIgdW5hIGVuY3Vlc3RhIGFiaWVydGEgY29tbyBzb2xvIGxlY3R1cmEsIG5vIHNlIGd1YXJkYXJvbiBsb3MgY2FtYmlvc1wiKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBteS5hamF4LmRtX2ZvcnBrcmFpel9kZXNjYXJnYXIoe29wZXJhdGl2bywgcGVyc2lzdGVudGVzfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgaWYoIWNhcmdhLnJlc3B1ZXN0YXNbZXN0cnVjdHVyYS51YVBwYWxdW2ZvclBrUmFpeltlc3RydWN0dXJhLnBrQWdyZWdhZGFVYVBwYWwgYXMgQ2FtcG9Qa1JhaXpdXSl7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHNlIGVuY3VlbnRyYSBlbC9sYSAke2VzdHJ1Y3R1cmEucGtBZ3JlZ2FkYVVhUHBhbH0gJHtmb3JQa1JhaXpbZXN0cnVjdHVyYS5wa0FncmVnYWRhVWFQcGFsXX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXJnYXJIb2phRGVSdXRhKHsuLi5jYXJnYSwgbW9kb0FsbWFjZW5hbWllbnRvOidzZXNzaW9uJ30pO1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwoe29wZXJhdGl2bywgbW9kb0RlbW86ZmFsc2UsIGZvclBrUmFpen0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBteU93bi53U2NyZWVucy5vYnRlbmVyX3RlbGVmb25vPXtcclxuICAgICAgICBwYXJhbWV0ZXJzOltdLFxyXG4gICAgICAgIGF1dG9wcm9jZWQ6dHJ1ZSxcclxuICAgICAgICBtYWluQWN0aW9uOmFzeW5jIChfcGFyYW1zKT0+e1xyXG4gICAgICAgICAgICAvLyBhbnRlczogYWJyaXJEaXJlY3RvXHJcbiAgICAgICAgICAgIHZhciB7b3BlcmF0aXZvLCB0YXJlYX0gPSB7b3BlcmF0aXZvOiBPUEVSQVRJVk9fREVGQVVMVCwgdGFyZWE6IFRBUkVBX0RFRkFVTFR9O1xyXG4gICAgICAgICAgICBsZXQgZW5jID0gcGFyc2VJbnQoYXdhaXQgbXkuYWpheC5nZXRfcmFuZG9tX2ZyZWVfY2FzZSh7b3BlcmF0aXZvfSkpOyBcclxuICAgICAgICAgICAgYXdhaXQgbXlPd24ud1NjcmVlbnMuYWJyaXJfZW5jdWVzdGEubWFpbkFjdGlvbih7b3BlcmF0aXZvLCBlbmMsIHRhcmVhfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIG15T3duLndTY3JlZW5zLmNvbnNpc3Rpcl9lbmN1ZXN0YT17XHJcbiAgICAgICAgcGFyYW1ldGVyczpbXHJcbiAgICAgICAgICAgIHtuYW1lOidvcGVyYXRpdm8nICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6T1BFUkFUSVZPX0RFRkFVTFQsIHJlZmVyZW5jZXM6J29wZXJhdGl2b3MnfSxcclxuICAgICAgICAgICAge25hbWU6J3RhcmVhJyAgICAgLCB0eXBlTmFtZTondGV4dCd9LFxyXG4gICAgICAgICAgICB7bmFtZTonZW5jJyAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJ31cclxuICAgICAgICBdLFxyXG4gICAgICAgIGF1dG9wcm9jZWQ6dHJ1ZSxcclxuICAgICAgICBtYWluQWN0aW9uOmFzeW5jIChwYXJhbXMpPT57XHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cub3BlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbWFpblRvcEJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLXRvcC1iYXInKTtcclxuICAgICAgICAgICAgICAgIGlmIChtYWluVG9wQmFyKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgIG1haW5Ub3BCYXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIge29wZXJhdGl2bywgdGFyZWEsIGVuYyB9ID0gcGFyYW1zO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgbXlPd24uYWpheC5jb25zaXN0aXJfZW5jdWVzdGEoe1xyXG4gICAgICAgICAgICAgICAgb3BlcmF0aXZvOiBvcGVyYXRpdm8sXHJcbiAgICAgICAgICAgICAgICBpZF9jYXNvOiBlbmNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmKHJlc3VsdC5vayl7XHJcbiAgICAgICAgICAgICAgICB2YXIgZml4ZWRGaWVsZHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZpeGVkRmllbGRzLnB1c2goe2ZpZWxkTmFtZTogJ29wZXJhdGl2bycsIHZhbHVlOiBvcGVyYXRpdm99KTtcclxuICAgICAgICAgICAgICAgIGZpeGVkRmllbGRzLnB1c2goe2ZpZWxkTmFtZTogJ3ZpdmllbmRhJywgdmFsdWU6IGVuY30pO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1haW5MYXlvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbl9sYXlvdXQnKSE7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGl2R3JpbGxhID0gaHRtbC5kaXYoe2lkOidpbmNvbnNpc3RlbmNpYXMnfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICBtYWluTGF5b3V0Lmluc2VydEJlZm9yZShkaXZHcmlsbGEsIG1haW5MYXlvdXQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGl2Qm90b25lcyA9IGh0bWwuZGl2KHtpZDonYm90b25lcy1wb3N0LWNvbnNpc3Rpcid9LFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhckJvdG9uQ2VycmFyRW5jdWVzdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBjZXJyYXIgZW5jdWVzdGFgXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhckJvdG9uVmVyQWJyaXJFbmN1ZXN0YShcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJlYSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5jLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHZvbHZlciBhIGVuY3Vlc3RhICR7ZW5jfWBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBdKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICAgICAgbWFpbkxheW91dC5pbnNlcnRCZWZvcmUoZGl2Qm90b25lcywgbWFpbkxheW91dC5maXJzdENoaWxkKTtcclxuICAgICAgICAgICAgICAgIG15LnRhYmxlR3JpZChcImluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvblwiLCBkaXZHcmlsbGEse3RhYmxlRGVmOnt9LGZpeGVkRmllbGRzOiBmaXhlZEZpZWxkc30pO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuXHJcbi8vcXVpdGEgYm9vdHN0cmFwIGRlbCBoZWFkIHBhcmEgcXVlIG5vIHJvbXBhIGxvcyBlc3RpbG9zIGRlIEJFUGx1cyAoc29sbyBzZSB1c2EgYm9vdHN0cmFwIGVuIGVsIGZvcm0pXHJcbnZhciBsaW5rTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tocmVmPVwiY3NzL2Jvb3RzdHJhcC5taW4uY3NzXCJdJyk7XHJcbmxpbmtOb2RlWzBdPy5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChsaW5rTm9kZVswXSk7XHJcblxyXG5mdW5jdGlvbiBjb25zaXN0aXJfZmlsdHJvKHRhcmVhLCByZWFfdGVtLCByZWEpe1xyXG4gICAgcmV0dXJuIHRhcmVhP3JlYV90ZW06cmVhO1xyXG59O1xyXG5cclxudmFyIHRhcmVhczphbnkgPSBudWxsO1xyXG5cclxuZnVuY3Rpb24gaHRtbE51bWVybyhudW06bnVtYmVyKXtcclxuICAgIHJldHVybiBodG1sLnNwYW4oe2NsYXNzOidudW1lcm8nfSwnJysobnVtPz8nJykpXHJcbn1cclxuXHJcbnZhciBwZXJzaXN0aXJFbk1lbW9yaWEgPSBhc3luYyAocGVyc2lzdGVudGVzOkRhdG9zQnlQYXNzUGVyc2lzdGlibGVzKSA9PiB7XHJcbiAgICB2YXIge21vZG9BbG1hY2VuYW1pZW50b30gPSBwZXJzaXN0ZW50ZXNcclxuICAgICAgICBpZihtb2RvQWxtYWNlbmFtaWVudG89PSdsb2NhbCcpe1xyXG4gICAgICAgICAgICBteS5zZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MsIHBlcnNpc3RlbnRlcylcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgbXkuc2V0U2Vzc2lvblZhcihHTE9WQVJfREFUT1NCWVBBU1MsIHBlcnNpc3RlbnRlcylcclxuICAgICAgICB9XHJcbiAgICAgICAgbXkuc2V0U2Vzc2lvblZhcihHTE9WQVJfTU9ET0JZUEFTUywgbW9kb0FsbWFjZW5hbWllbnRvKVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzaW5jcm9uaXphckRhdG9zKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlc3xudWxsLCBjYW1iaWFNb2RvRE06Ym9vbGVhbil7XHJcbiAgICBjb25zdCBtb2RvRG1EZWZlY3RvID0gYXdhaXQgbXkuYWpheC5tb2RvX2RtX2RlZmVjdG9fb2J0ZW5lcih7fSk7XHJcbiAgICBsZXQgbW9kb0RNOiBNb2RvRE0gPSBteS5nZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVkpIHx8IG1vZG9EbURlZmVjdG87XHJcbiAgICBteS5zZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVksIG1vZG9ETSk7XHJcbiAgICB2YXIgZGF0b3MgPSBhd2FpdCBteS5hamF4LmRtX3NpbmNyb25pemFyKHtwZXJzaXN0ZW50ZXMsIG1vZG9fZG06bW9kb0RNLCBjYW1iaWFfbW9kb19kbTpjYW1iaWFNb2RvRE19KTtcclxuICAgIHZhciBvcGVyYXRpdm8gPSBkYXRvcy5vcGVyYXRpdm87XHJcbiAgICBwZXJzaXN0aXJFbk1lbW9yaWEoey4uLmRhdG9zLCBtb2RvQWxtYWNlbmFtaWVudG86J2xvY2FsJ30pO1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmEgPSBhd2FpdCB0cmFlckVzdHJ1Y3R1cmEoe29wZXJhdGl2b30pXHJcbiAgICBteS5zZXRMb2NhbFZhcihHTE9WQVJfRVNUUlVDVFVSQSwgZXN0cnVjdHVyYSk7XHJcbiAgICBteS5yZW1vdmVMb2NhbFZhcihCQUNLVVBTKTtcclxuICAgIHJldHVybiBkYXRvcztcclxufVxyXG5cclxuXHJcblxyXG52YXIgbW9zdHJhckluZm9Mb2NhbCA9IChkaXZBdmlzb1NpbmNybzpIVE1MRGl2RWxlbWVudCwgdGl0dWxvOnN0cmluZywgbnJvU2luY3JvOm51bWJlcnxudWxsLCBtb3N0cmFyTGlua0hkcjogYm9vbGVhbik9PntcclxuICAgIGxldCBkYXRvc0J5UGFzcyA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUyk7XHJcbiAgICBsZXQgZXN0cnVjdHVyYSA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9FU1RSVUNUVVJBKTtcclxuICAgIGlmKGRhdG9zQnlQYXNzKXtcclxuICAgICAgICBkaXZBdmlzb1NpbmNyby5hcHBlbmQoaHRtbC5kaXYoe2lkOidhdmlzby1zaW5jcm8nfSwgW1xyXG4gICAgICAgICAgICBucm9TaW5jcm8/aHRtbC5wKFtcIk7Dum1lcm8gZGUgc2luY3Jvbml6YWNpw7NuOiBcIiwgaHRtbC5iKFwiXCIrbnJvU2luY3JvLnRvU3RyaW5nKCkpXSk6bnVsbCxcclxuICAgICAgICAgICAgaHRtbC5oNCh0aXR1bG8pLFxyXG4gICAgICAgICAgICBodG1sLnAoW2h0bWxOdW1lcm8obGlrZUFyKGRhdG9zQnlQYXNzLmNhcmdhcykuYXJyYXkoKS5sZW5ndGgpLCcgYXJlYXM6ICcsbGlrZUFyKGRhdG9zQnlQYXNzLmNhcmdhcykua2V5cygpLmpvaW4oJywgJyldKSxcclxuICAgICAgICAgICAgaHRtbC5wKFtodG1sTnVtZXJvKGxpa2VBcihkYXRvc0J5UGFzcy5yZXNwdWVzdGFzW2VzdHJ1Y3R1cmEudWFQcGFsXSkuYXJyYXkoKS5sZW5ndGgpLCAnICcgKyBlc3RydWN0dXJhLnVhUHBhbF0pLFxyXG4gICAgICAgICAgICBtb3N0cmFyTGlua0hkcj9odG1sLmEoe2hyZWY6Jy4vY2FtcG8nfSxbaHRtbC5iKCdJUiBBIExBIEhPSkEgREUgUlVUQScpXSk6bnVsbFxyXG4gICAgICAgIF0pLmNyZWF0ZSgpKTtcclxuICAgIH1lbHNle1xyXG4gICAgICAgIGRpdkF2aXNvU2luY3JvLmFwcGVuZENoaWxkKGh0bWwuZGl2KHtjbGFzczonYXZpc28nfSxbXHJcbiAgICAgICAgICAgIGh0bWwuaDQoJ1Npc3RlbWEgdmFjw61vJyksXHJcbiAgICAgICAgICAgIGh0bWwucCgnTm8gaGF5IGluZm9ybWFjacOzbiBkZSBmb3JtdWxhcmlvcycpLFxyXG4gICAgICAgIF0pLmNyZWF0ZSgpKTtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3QgbW9zdHJhckluZm9Nb2RvID0gYXN5bmMobWFpbkxheW91dDpIVE1MRWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgbW9kb0RtRGVmZWN0byA9IGF3YWl0IG15LmFqYXgubW9kb19kbV9kZWZlY3RvX29idGVuZXIoe30pO1xyXG4gICAgbGV0IG1vZG9ETTogTW9kb0RNID0gbXkuZ2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZKSB8fCBtb2RvRG1EZWZlY3RvO1xyXG4gICAgbXkuc2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZLCBtb2RvRE0pO1xyXG4gICAgdmFyIGRpdkF2aXNvTW9kbzpIVE1MRGl2RWxlbWVudD1odG1sLmRpdihbXHJcbiAgICAgICAgaHRtbC5kaXYoYG1vZG8gYWN0dWFsOiAke21vZG9ETX0uYClcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChkaXZBdmlzb01vZG8pXHJcbiAgICByZXR1cm4gbW9kb0RNO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYW1iaWFyTW9kb0RNRW5Mb2NhbFN0b3JhZ2UobW9kb0FjdHVhbDpNb2RvRE0pe1xyXG4gICAgbW9kb0FjdHVhbCA9IG1vZG9BY3R1YWw9PSdwcm9kdWMnPydjYXBhJzoncHJvZHVjJztcclxuICAgIG15LnNldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSxtb2RvQWN0dWFsKTtcclxufVxyXG5cclxudmFyIHByb2NlZGVyU2luY3JvRnVuID0gYXN5bmMgKGJ1dHRvbjpIVE1MQnV0dG9uRWxlbWVudCwgZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQsIGNhbWJpYU1vZG9ETTpib29sZWFuKT0+e1xyXG4gICAgYnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICBidXR0b24uY2xhc3NOYW1lPSdkb3dubG9hZC1kbS1idXR0b24nO1xyXG4gICAgZGl2QXZpc29TaW5jcm8uaW5uZXJIVE1MPScnO1xyXG4gICAgdHJ5e1xyXG4gICAgICAgIHZhciBkYXRvc0J5UGFzczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUyk7XHJcbiAgICAgICAgdmFyIGRhdG9zID0gYXdhaXQgc2luY3Jvbml6YXJEYXRvcyhkYXRvc0J5UGFzcywgY2FtYmlhTW9kb0RNKTtcclxuICAgICAgICBjb25zdCBtb2RvRG1EZWZlY3RvID0gYXdhaXQgbXkuYWpheC5tb2RvX2RtX2RlZmVjdG9fb2J0ZW5lcih7fSk7XHJcbiAgICAgICAgbGV0IG1vZG9ETUFjdHVhbDogTW9kb0RNID0gbXkuZ2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZKSB8fCBtb2RvRG1EZWZlY3RvO1xyXG4gICAgICAgIGlmKGNhbWJpYU1vZG9ETSl7XHJcbiAgICAgICAgICAgIGNhbWJpYXJNb2RvRE1FbkxvY2FsU3RvcmFnZShtb2RvRE1BY3R1YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdG9yZSA9IGF3YWl0IGRtVHJhZXJEYXRvc0Zvcm11bGFyaW8oe21vZG9EZW1vOiBmYWxzZX0pO1xyXG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKGRpc3BhdGNoZXJzLlJFU0VUX09QQ0lPTkVTKHt9KSk7XHJcbiAgICAgICAgbW9zdHJhckluZm9Mb2NhbChkaXZBdmlzb1NpbmNybywgJ2RhdG9zIHJlY2liaWRvcycsIGRhdG9zLm51bV9zaW5jcm8sIHRydWUpXHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgdGhyb3cgZXJyXHJcbiAgICB9ZmluYWxseXtcclxuICAgICAgICBidXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgYnV0dG9uLmNsYXNzTmFtZT0nZG93bmxvYWQtZG0tYnV0dG9uLWNvbnQnO1xyXG4gICAgfVxyXG59XHJcbm15T3duLndTY3JlZW5zLnNpbmNyb25pemFyX2RtPWFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgIGF3YWl0IG1vc3RyYXJJbmZvTW9kbyhtYWluTGF5b3V0KTtcclxuICAgIHZhciBwcm9jZWRlckJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtjbGFzczonZG93bmxvYWQtZG0tYnV0dG9uLWNvbnQnfSwncHJvY2VkZXIg4oeSJykuY3JlYXRlKCk7XHJcbiAgICB2YXIgZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQ9aHRtbC5kaXYoKS5jcmVhdGUoKTtcclxuICAgIG1vc3RyYXJJbmZvTG9jYWwobWFpbkxheW91dCBhcyBIVE1MRGl2RWxlbWVudCwgJ2luZm9ybWFjacOzbiBhIHRyYW5zbWl0aXInLCBudWxsLCBmYWxzZSlcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQocHJvY2VkZXJCdXR0b24pO1xyXG4gICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChkaXZBdmlzb1NpbmNybyk7XHJcbiAgICBwcm9jZWRlckJ1dHRvbi5vbmNsaWNrID0gKCk9PnByb2NlZGVyU2luY3JvRnVuKHByb2NlZGVyQnV0dG9uLCBkaXZBdmlzb1NpbmNybywgZmFsc2UpXHJcbn07XHJcblxyXG5teU93bi53U2NyZWVucy5jYW1iaWFyX21vZG9fZG09YXN5bmMgZnVuY3Rpb24oKXtcclxuICAgIHZhciBtYWluTGF5b3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5fbGF5b3V0JykhO1xyXG4gICAgY29uc3QgbW9kb0RNID0gYXdhaXQgbW9zdHJhckluZm9Nb2RvKG1haW5MYXlvdXQpO1xyXG4gICAgdmFyIHByb2NlZGVyQnV0dG9uID0gaHRtbC5idXR0b24oe2NsYXNzOidjYW1iaWFyLW1vZG8tZG0tYnV0dG9uJ30sYGNhbWJpYXIgYSBtb2RvICR7bW9kb0RNID09ICdwcm9kdWMnPydjYXBhJzoncHJvZHVjJ30g4oeSYCkuY3JlYXRlKCk7XHJcbiAgICB2YXIgZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQ9aHRtbC5kaXYoKS5jcmVhdGUoKTtcclxuICAgIG1vc3RyYXJJbmZvTG9jYWwobWFpbkxheW91dCBhcyBIVE1MRGl2RWxlbWVudCwgYGluZm9ybWFjacOzbiBtb2RvIFwiJHttb2RvRE19XCIgYSB0cmFuc21pdGlyYCwgbnVsbCwgZmFsc2UpXHJcbiAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKHByb2NlZGVyQnV0dG9uKTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoZGl2QXZpc29TaW5jcm8pO1xyXG4gICAgcHJvY2VkZXJCdXR0b24ub25jbGljayA9IGFzeW5jICgpPT57XHJcbiAgICAgICAgdmFyIG1haW5EaXYgPSBodG1sLmRpdigpLmNyZWF0ZSgpXHJcbiAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoe30sIFtgQ29uZmlybWEgY2FtYmlvIGRlIG1vZG8gXCIke21vZG9ETX1cIiBhICR7bW9kb0RNPT0ncHJvZHVjJz8nXCJjYXBhXCInOidcInByb2R1Y1wiJ30uYF0pXHJcbiAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB2YXIgaW5wdXRDYW1iaWFyTW9kbyA9IGh0bWwuaW5wdXQoe2NsYXNzOidpbnB1dC1jYW1iaWFyLW1vZG8nfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChodG1sLmRpdihbXHJcbiAgICAgICAgICAgIGh0bWwuZGl2KFsnUG9yIGZhdm9yIGluZ3Jlc2UgbGEgY29udHJhc2XDsWEgJyxpbnB1dENhbWJpYXJNb2RvXSlcclxuICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgdmFyIGNhbWJpYXJNb2RvVmFsdWUgPSBhd2FpdCBjb25maXJtUHJvbWlzZShtYWluRGl2LCB7XHJcbiAgICAgICAgICAgIHdpdGhDbG9zZUJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHJlamVjdDpmYWxzZSxcclxuICAgICAgICAgICAgYnV0dG9uc0RlZjpbXHJcbiAgICAgICAgICAgICAgICB7bGFiZWw6YGNhbWJpYXJgLCB2YWx1ZTp0cnVlfSxcclxuICAgICAgICAgICAgICAgIHtsYWJlbDpgY2FuY2VsYXJgLCB2YWx1ZTpmYWxzZX1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmKGNhbWJpYXJNb2RvVmFsdWUpe1xyXG4gICAgICAgICAgICBpZihpbnB1dENhbWJpYXJNb2RvLnZhbHVlPT0nMTIzNCcpe1xyXG4gICAgICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2NlZGVyQnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgcHJvY2VkZXJTaW5jcm9GdW4ocHJvY2VkZXJCdXR0b24sIGRpdkF2aXNvU2luY3JvLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBtYWluTGF5b3V0LmlubmVySFRNTD0nJztcclxuICAgICAgICAgICAgICAgICAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihgTU9ETyAke215LmdldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSl9IEFDVElWQURPYCkuY3JlYXRlKClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfWZpbmFsbHl7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2VkZXJCdXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZSgnY29udHJhc2XDsWEgaW5jb3JyZWN0YS4nKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZnVuY3Rpb24gaW5pY2lhbGl6YXJTdGF0ZShzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICBzdGF0ZS5tb2RvID0ge1xyXG4gICAgICAgIGRlbW86IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgLy8gT0pPIHN0YXRlLm9wY2lvbmVzIHNlIG1vZGlmaWNhIGFjw6EgeSBlbiBvdHJvIGxhZG8gY29uIGVzdGUgbWlzbW8gY2FydGVsXHJcbiAgICBzdGF0ZS5vcGNpb25lcyA9IHtcclxuICAgICAgICBiaWVudmVuaWRvOiB0cnVlLFxyXG4gICAgICAgIGZvclBrOiBudWxsLFxyXG4gICAgICAgIHBpbGFGb3JQazogW10sXHJcbiAgICAgICAgbW9kb0Rlc3BsaWVndWU6IFwicmVsZXZhbWllbnRvXCIsXHJcbiAgICAgICAgbW9kb0RpcmVjdG86IGZhbHNlLFxyXG4gICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6IG51bGwsXHJcbiAgICAgICAgY29uQ2FtcG9PcGNpb25lczogZmFsc2UsXHJcbiAgICAgICAgc2FsdG9BdXRvbWF0aWNvOiB0cnVlLFxyXG4gICAgfTtcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgc3RhdGUuZmVlZGJhY2tSb3dWYWxpZGF0b3IgPSB7fTtcclxufVxyXG4vKlxyXG5mdW5jdGlvbiBtb3N0cmFyRGF0b3NQZXJzb25hKGhheURhdG9zOmJvb2xlYW4sIGRhdG9zOmFueSwgZGl2UmVzdWx0OkhUTUxEaXZFbGVtZW50KXtcclxuICAgIC8vVE9ETzogRVZBTFVBUiBTSSBDT05WSUVORSBUUkFFUkxPIERFIExBIEJBU0VcclxuICAgIHZhciB0aXBvc0RvY3VtZW50byA9IFsnRE5JIGFyZ2VudGlubycsICdEb2N1bWVudG8gZXh0cmFuamVybycsICdObyB0aWVuZSBkb2N1bWVudG8nLCAnT3RybyddO1xyXG4gICAgdmFyIHBhaXNEb2N1bWVudG8gPSBbJ1VydWd1YXknLCAnUGFyYWd1YXknLCAnQnJhc2lsJywgJ0JvbGl2aWEnLCAnQ2hpbGUnLCAnUGVyw7onLCAnVmVuZXp1ZWxhJywgJ090cm8nXTtcclxuICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChcclxuICAgICAgICBoYXlEYXRvcz9cclxuICAgICAgICAgICAgaHRtbC5kaXYoe2NsYXNzOidkYXRvcy1wZXJzb25hLWNhcmdhZGEnfSxbXHJcbiAgICAgICAgICAgICAgICBodG1sLmgyKFwiRGF0b3MgcGVyc29uYVwiKSxcclxuICAgICAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonZmljaGEtcGVyc29uYSd9LFtcclxuICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbaHRtbC5sYWJlbCgnQXBlbGxpZG86ICcpLCBkYXRvcy5hcGVsbGlkb10pLFxyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KFtodG1sLmxhYmVsKCdOb21icmVzOiAnKSwgZGF0b3Mubm9tYnJlc10pLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwubGFiZWwoJ1RpcG8gZG9jdW1lbnRvOiAnKSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvc0RvY3VtZW50b1tkYXRvcy50aXBvRG9jdW1lbnRvLTFdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0b3MudGlwb0RvY3VtZW50bz09NCAmJiBkYXRvcy50aXBvRG9jdW1lbnRvRXNwZWNpZmljYWRvPycgKCcrIGRhdG9zLnRpcG9Eb2N1bWVudG9Fc3BlY2lmaWNhZG8rJyknOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MudGlwb0RvY3VtZW50bz09MiAmJiBkYXRvcy5wYWlzRG9jdW1lbnRvP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLmxhYmVsKCdQYWlzOiAnKSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWlzRG9jdW1lbnRvW2RhdG9zLnBhaXNEb2N1bWVudG8tMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRvcy5wYWlzRG9jdW1lbnRvPT04ICYmIGRhdG9zLnBhaXNEb2N1bWVudG9Fc3BlY2lmaWNhZG8/JyAoJytkYXRvcy5wYWlzRG9jdW1lbnRvRXNwZWNpZmljYWRvKycpJzonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG8hPTMgJiYgZGF0b3MudGlwb0RvY3VtZW50bz9odG1sLmRpdihbaHRtbC5sYWJlbCgnTsK6IERvY3VtZW50bzogJyksIGRhdG9zLmRvY3VtZW50b10pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLmNlbHVsYXI/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ0NlbC46ICcpLCBkYXRvcy5jZWx1bGFyXSk6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MuZW1haWw/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ0VtYWlsOiAnKSwgZGF0b3MuZW1haWxdKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50ZWxlZm9ub0FsdGVybmF0aXZvP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdUZWwuIGFsdGVybmF0aXZvOiAnKSwgZGF0b3MudGVsZWZvbm9BbHRlcm5hdGl2b10pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLm9ic2VydmFjaW9uZXM/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ09ic2VydmFjaW9uZXM6ICcpLCBkYXRvcy5vYnNlcnZhY2lvbmVzXSk6JycsXHJcbiAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICBdKS5jcmVhdGUoKVxyXG4gICAgICAgIDpcclxuICAgICAgICAgICAgaHRtbC5wKFwiTm8gc2UgZW5jb250csOzIHVuYSBlbmN1ZXN0YSBwYXJhIGxhIGV0aXF1ZXRhIGNhcmdhZGFcIikuY3JlYXRlKClcclxuICAgIClcclxufVxyXG4qL1xyXG4vKm15T3duLmNsaWVudFNpZGVzLnRhcmVhc1RlbVJvdz17XHJcbiAgICB1cGRhdGU6KGRlcG90KT0+e1xyXG4gICAgICAgIHZhciB0YXJlYTonbmFkYSd8J3ByZWFzaWduYXInfCdjYXJnYXInfCdyZWFsaXphcid8J3ZlcmlmaWNhcic9J25hZGEnO1xyXG4gICAgICAgIHZhciByb3c9ZGVwb3Qucm93O1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICB2YXIgaWRwZXI9bXkuY29uZmlnLmlkcGVyO1xyXG4gICAgICAgIHZhciBlc3BlcmFyOmJvb2xlYW49ZmFsc2U7XHJcbiAgICAgICAgaWYocm93LmhhYmlsaXRhZGEpe1xyXG4gICAgICAgICAgICBpZighcm93LnJlY2VwY2lvbmlzdGEgJiYgIXJvdy5hc2lnbmFkbyl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ncHJlYXNpZ25hcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXRydWU7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKCFyb3cuYXNpZ25hZG8gfHwgIXJvdy5mZWNoYV9hc2lnbmFjaW9uIHx8ICFyb3cub3BlcmFjaW9uKXtcclxuICAgICAgICAgICAgICAgIHRhcmVhPSdjYXJnYXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj1yb3cucmVjZXBjaW9uaXN0YSE9aWRwZXI7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKCFyb3cucmVhKXtcclxuICAgICAgICAgICAgICAgIHRhcmVhPSdyZWFsaXphcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXJvdy5hc2lnbmFkbyE9aWRwZXI7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKCFyb3cudmVyaWZpY2Fkbyl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ndmVyaWZpY2FyJztcclxuICAgICAgICAgICAgICAgIGVzcGVyYXI9cm93LnJlY2VwY2lvbmlzdGEhPWlkcGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBwb25lcj17XHJcbiAgICAgICAgICAgIHJlY2VwY2lvbmlzdGEgICAgICAgICAgOnRhcmVhPT0ncHJlYXNpZ25hcicgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgYXNpZ25hZG8gICAgICAgICAgIDp0YXJlYT09J2NhcmdhcicgICAgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIGZlY2hhX2FzaWduYWNpb24gICA6dGFyZWE9PSdjYXJnYXInICAgICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBvcGVyYWNpb24gICAgICAgICAgOnRhcmVhPT0nY2FyZ2FyJyAgICAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgY2FyZ2Ffb2JzZXJ2YWNpb25lczoodGFyZWE9PSdjYXJnYXInICAgICB8fCB0YXJlYT09J3JlYWxpemFyJyAmJiAhcm93LmNhcmdhZG8gJiYgIXJvdy5yZWEgKSAmJiByb3cucmVjZXBjaW9uaXN0YT09aWRwZXIgJiYgJ29wdGF0aXZvJyxcclxuICAgICAgICAgICAgdmVyaWZpY2FkbyAgICAgICAgIDp0YXJlYT09J3ZlcmlmaWNhcicgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIG9ic192ZXJpZmljYWRvICAgICA6dGFyZWE9PSd2ZXJpZmljYXInICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J29wdGF0aXZvJyksXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpa2VBcihwb25lcikuZm9yRWFjaCgodmFsb3IsIGNhbXBvKT0+e1xyXG4gICAgICAgICAgICBpZighdmFsb3Ipe1xyXG4gICAgICAgICAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbY2FtcG9dLnJlbW92ZUF0dHJpYnV0ZSgnbXktbWFuZGF0b3J5JylcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBkZXBvdC5yb3dDb250cm9sc1tjYW1wb10uc2V0QXR0cmlidXRlKCdteS1tYW5kYXRvcnknLHZhbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgcHJlcGFyZTogZnVuY3Rpb24oKXt9XHJcbn1cclxuKi9cclxuXHJcbnZhciBjcmVhckJvdG9uQ2VycmFyRW5jdWVzdGEgPSAobGFiZWw6c3RyaW5nKT0+e1xyXG4gICAgbGV0IHBhdGggPSBcIk0zIDN2MThoMThWM0gzem0xNCAxMi41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCI7XHJcbiAgICB2YXIgc3ZnID0gaHRtbC5zdmcoe2NsYXNzOlwic3ZnLWNlcnJhci1lbmN1ZXN0YVwifSxbXHJcbiAgICAgICAgaHRtbC5wYXRoKHtcclxuICAgICAgICAgICAgZDpwYXRoXHJcbiAgICAgICAgfSlcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgc3ZnLnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIixcIjAgMCAyNiAyNlwiKTtcclxuICAgIGxldCB2ZXIgPSBodG1sLmJ1dHRvbih7aWQ6J2JvdG9uLWNlcnJhci1lbmN1ZXN0YSd9LFtzdmcsIGxhYmVsXSkuY3JlYXRlKCk7XHJcbiAgICB2ZXIub25jbGljayA9ICgpPT4gY2xvc2UoKTtcclxuICAgIHJldHVybiB2ZXJcclxufVxyXG5cclxuY29uc3QgYWJyaXJFbmN1ZXN0YUVuUGVzdGFubmlhRGVkaWNhZGEgPSAodXJsOnN0cmluZyk9PntcclxuICAgIGNvbnN0IEFCUklSX1RBQiA9IFwiX2FicmlyXCI7XHJcbiAgICB3aW5kb3cub3Blbih1cmwsIEFCUklSX1RBQik7XHJcbn1cclxuXHJcbnZhciBjcmVhckJvdG9uVmVyQWJyaXJFbmN1ZXN0YSA9IChvcGVyYXRpdm86SWRPcGVyYXRpdm8sdGFyZWE6SWRUYXJlYSxlbmN1ZXN0YTpudW1iZXIsIGxhYmVsOnN0cmluZyk9PntcclxuICAgIHZhciB1cCA9IHtcclxuICAgICAgICBvcGVyYXRpdm86b3BlcmF0aXZvLFxyXG4gICAgICAgIHRhcmVhOnRhcmVhLFxyXG4gICAgICAgIGVuYzplbmN1ZXN0YVxyXG4gICAgfVxyXG4gICAgbGV0IHZlciA9IGh0bWwuYnV0dG9uKHtpZDonYm90b24tdm9sdmVyLWEtZW5jdWVzdGEnfSxsYWJlbCkuY3JlYXRlKCk7XHJcbiAgICB2ZXIub25jbGljayA9ICgpPT4gYWJyaXJFbmN1ZXN0YUVuUGVzdGFubmlhRGVkaWNhZGEobG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lK215Lm1lbnVTZXBhcmF0b3IrYHc9YWJyaXJfZW5jdWVzdGEmdXA9JHtKU09OLnN0cmluZ2lmeSh1cCl9JmF1dG9wcm9jZWQ9dHJ1ZWApXHJcbiAgICByZXR1cm4gdmVyXHJcbn1cclxuXHJcbnZhciBjcmVhckJvdG9uZXNWZXJBYnJpclRhcmVhcyA9IGFzeW5jIChkZXBvdDpteU93bi5EZXBvdCwgZmllbGROYW1lOnN0cmluZywgbGFiZWw6J2FicmlyJ3wndmVyJyk9PntcclxuICAgIHRhcmVhcyA9IHRhcmVhcz90YXJlYXM6KGF3YWl0IG15T3duLmFqYXgudGFibGVfZGF0YSh7dGFibGU6IGB0YXJlYXNgLCBmaXhlZEZpZWxkczpbXX0pKTtcclxuICAgIHZhciBtaXNUYXJlYXMgPSB0YXJlYXMuZmlsdGVyKCh0YXJlYSk9PlxyXG4gICAgICAgICEhdGFyZWEubWFpbl9mb3JtICYmIHRhcmVhLm9wZXJhdGl2bz09ZGVwb3Qucm93Lm9wZXJhdGl2byAmJiAoZGVwb3QubWFuYWdlci5kZWYubXVlc3RyYUFicmlyRW5Ub2Rhc0xhc1RhcmVhcz90cnVlOmRlcG90LnJvdy50YXJlYSA9PSB0YXJlYS50YXJlYSlcclxuICAgICk7XHJcbiAgICBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdLmlubmVySFRNTD0nJztcclxuICAgIG1pc1RhcmVhcy5mb3JFYWNoKCh0YXJlYTp7dGFyZWE6c3RyaW5nLCBub21icmU6c3RyaW5nLCBtYWluX2Zvcm06SWRGb3JtdWxhcmlvfSk9PntcclxuICAgICAgICBsZXQgYnV0dG9uTGFiZWwgPSBgJHtsYWJlbH0gJHt0YXJlYS50YXJlYX1gO1xyXG4gICAgICAgIGxldCB2ZXIgPSBjcmVhckJvdG9uVmVyQWJyaXJFbmN1ZXN0YShcclxuICAgICAgICAgICAgZGVwb3Qucm93Lm9wZXJhdGl2byBhcyBJZE9wZXJhdGl2byxcclxuICAgICAgICAgICAgdGFyZWEudGFyZWEgYXMgSWRUYXJlYSwgXHJcbiAgICAgICAgICAgIE51bWJlcihkZXBvdC5yb3cuZW5jKSxcclxuICAgICAgICAgICAgYnV0dG9uTGFiZWxcclxuICAgICAgICApO1xyXG4gICAgICAgIHZlci5zdHlsZT0nbWFyZ2luOjBweCAycHg7JztcclxuICAgICAgICBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdLmFwcGVuZENoaWxkKHZlcik7XHJcbiAgICB9KVxyXG59XHJcblxyXG52YXIgZ2V0QWJyaXJPdmVyID0gKF9kZXBvdDpteU93bi5EZXBvdCxfZmllbGROYW1lOnN0cmluZyk6J2FicmlyJz0+J2FicmlyJ1xyXG4gICAgLy9cclxuICAgIC8qKGRlcG90LnJvdy5jYXJnYWRvX2RtIHx8ICFkZXBvdC5yb3dbJ2VzdGFkb3NfX3Blcm1pdGVfZWRpdGFyX2VuY3Vlc3RhJ10gJiYgZGVwb3Qucm93LmFzaWduYWRvICE9IG15LmNvbmZpZy5pZHBlcik/XHJcbiAgICAgICAgJ3Zlcic6J2FicmlyJ1xyXG4gICAgKi9cclxuXHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5hYnJpcj17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIHZhciBsYWJlbDondmVyJ3wnYWJyaXInID0gZ2V0QWJyaXJPdmVyKGRlcG90LGZpZWxkTmFtZSk7XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzVmVyQWJyaXJUYXJlYXMoZGVwb3QsZmllbGROYW1lLGxhYmVsKTsgLy9ubyBlc3Blcm8gcHJvbWVzYSBwb3JxdWUgbm8gZXMgbmVjZXNhcmlvXHJcbiAgICB9XHJcbn07XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5hYnJpclJlY2VwY2lvbj17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIHZhciBsYWJlbDondmVyJ3wnYWJyaXInID0gZ2V0QWJyaXJPdmVyKGRlcG90LGZpZWxkTmFtZSk7XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzVmVyQWJyaXJUYXJlYXMoZGVwb3QsZmllbGROYW1lLGxhYmVsKTsgLy9ubyBlc3Blcm8gcHJvbWVzYSBwb3JxdWUgbm8gZXMgbmVjZXNhcmlvXHJcbiAgICB9XHJcbn07XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy52ZXJJY29ub1N2Zz17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIGxldCB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgdGQuaW5uZXJIVE1MPScnO1xyXG4gICAgICAgIGlmKGRlcG90LnJvdy5wYXRoX2ljb25vX3N2Zyl7XHJcbiAgICAgICAgICAgIHZhciBzdmcgPSBodG1sLnN2Zyh7XHJcbiAgICAgICAgICAgICAgICBjbGFzczpcInN2Zy1hY2Npb25lc1wiXHJcbiAgICAgICAgICAgIH0sW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5wYXRoKHtcclxuICAgICAgICAgICAgICAgICAgICBkOmRlcG90LnJvdy5wYXRoX2ljb25vX3N2Z1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgXSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIsXCIwIDAgNTAgNTBcIik7XHJcbiAgICAgICAgICAgIHRkLmFwcGVuZENoaWxkKHN2Zyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxudmFyIGNyZWFyU1ZHID0gKHBhdGg6c3RyaW5nLHByb3BzOmFueSkgPT4ge1xyXG4gICAgdmFyIHN2ZyA9IGh0bWwuc3ZnKHByb3BzIHx8IHt9LFtcclxuICAgICAgICBodG1sLnBhdGgoe1xyXG4gICAgICAgICAgICBkOnBhdGhcclxuICAgICAgICB9KVxyXG4gICAgXSkuY3JlYXRlKCk7XHJcbiAgICBzdmcuc2V0QXR0cmlidXRlKFwidmlld0JveFwiLFwiMCAwIDUwIDUwXCIpO1xyXG4gICAgcmV0dXJuIHN2Z1xyXG59XHJcbnZhciBjcmVhckJvdG9uQWNjaW9uID0gKGRlcG90Om15T3duLkRlcG90LCBhY3Rpb246RXN0YWRvQWNjaW9uKT0+e1xyXG4gICAgbGV0ICBhY2Npb25TaW5HdWlvbmVzID0gYWN0aW9uLmVhY2Npb24ucmVwbGFjZSgnXycsJyAnKTtcclxuICAgIHZhciBzdmcgPSBjcmVhclNWRyhhY3Rpb24ucGF0aF9pY29ub19zdmcse2NsYXNzOlwic3ZnLWFjY2lvbmVzXCJ9KVxyXG4gICAgaWYoYWN0aW9uLmRlc2FjdGl2YV9ib3Rvbil7XHJcbiAgICAgICAgcmV0dXJuIGh0bWwuc3Bhbih7Y2xhc3M6YHNpbi1ib3Rvbi1hY2Npb25gfSxbYWNjaW9uU2luR3Vpb25lcywgc3ZnIGFzIHVua25vd24gYXMgSFRNTEVsZW1lbnRdKS5jcmVhdGUoKVxyXG4gICAgfVxyXG4gICAgbGV0IGJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtcclxuICAgICAgICBjbGFzczpgYm90b24tYWNjaW9uIGJvdG9uLWFjY2lvbi0ke2FjdGlvbi5lYWNjaW9uX2RpcmVjY2lvbn1gXHJcbiAgICB9LFtcclxuICAgICAgICBgJHthY2Npb25TaW5HdWlvbmVzfWAsXHJcbiAgICAgICAgLy9AdHMtaWdub3JlIHN2ZyBlcyBodG1sZWxlbWVudFxyXG4gICAgICAgIGFjdGlvbi5wYXRoX2ljb25vX3N2Zz9zdmc6bnVsbCxcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgYnV0dG9uLm9uY2xpY2sgPSAoKT0+IHtcclxuICAgICAgICB2YXIgYWN0aW9uRnVuID0gYXN5bmMgKCk9PntcclxuICAgICAgICAgICAgYnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgIGF3YWl0IG15LmFqYXguYWNjaW9uX3RhcmVhc190ZW1fZWplY3V0YXIoe1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2bzogZGVwb3Qucm93Lm9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICB0YXJlYTogZGVwb3Qucm93LnRhcmVhLFxyXG4gICAgICAgICAgICAgICAgICAgIGVuYzogZGVwb3Qucm93LmVuYyxcclxuICAgICAgICAgICAgICAgICAgICBjb25kaWNpb246IGFjdGlvbi5jb25kaWNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgYWNjaW9uOiBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZWFzVGVtVGFibGU6IGRlcG90LmRlZi5uYW1lXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHZhciBncmlkPWRlcG90Lm1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICBncmlkLnJldHJpZXZlUm93QW5kUmVmcmVzaChkZXBvdCx7cmV0cmlldmVJZ25vcmluZ1doZXJlOnRydWV9KSAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYoYWN0aW9uLm5vbWJyZV93c2NyZWVuKXtcclxuICAgICAgICAgICAgICAgICAgICAvL1RPRE8gYWNvbW9kYXIgZXN0byBlbiBhbGd1biBtb21lbnRvXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmFtcyA9IGRlcG90LnJvdztcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdXAgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2bzpwYXJhbXMub3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJlYTpwYXJhbXMudGFyZWEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYzogTnVtYmVyKHBhcmFtcy5lbmMpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGFicmlyRW5jdWVzdGFFblBlc3Rhbm5pYURlZGljYWRhKGxvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZStteS5tZW51U2VwYXJhdG9yK2B3PSR7YWN0aW9uLm5vbWJyZV93c2NyZWVufSZ1cD0ke0pTT04uc3RyaW5naWZ5KHVwKX0mYXV0b3Byb2NlZD10cnVlYClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJcclxuICAgICAgICAgICAgfWZpbmFsbHl7XHJcbiAgICAgICAgICAgICAgICAvL3JldHJhc28gbGEgaGFiaWxpdGFjacOzbiBwb3JxdWUgYSB2ZWNlcyB0YXJkYSBlbiByZWRpYnVqYXJzZSBsYSBib3RvbmVyYSB5IHB1ZWRlIHRyYWVyIHByb2JsZW1hcyBzaSBkYW4gZG9ibGUgY2xpY2sgXHJcbiAgICAgICAgICAgICAgICAvL3lhIHF1ZSBlamVjdXRhIG51ZXZhbWVudGUgdW5hIGFjY2nDs24gcXVlIHlhIHNlIGVqZWN1dMOzICh5IHRlcm1pbsOzKSBhbnRlc1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+YnV0dG9uLmRpc2FibGVkPWZhbHNlLDMwMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIGNvbmZpcm1Qcm9taXNlT3B0czogRGlhbG9nT3B0aW9ucyA9IHt9XHJcbiAgICAgICAgaWYoYWN0aW9uLmNvbmZpcm1hKXtcclxuICAgICAgICAgICAgY29uZmlybVByb21pc2VPcHRzLmFza0Zvck5vUmVwZWF0ID0gJ25vIHZvbHZlciBhIG1vc3RyYXInOyAvL211ZXN0cmEgbWVuc2FqZSBwb3IgZGVmYXVsdCBwZXJvIGFuZGEgaWd1YWxcclxuICAgICAgICAgICAgdmFyIGJ1dHRvbnNEZWYgPSBbXHJcbiAgICAgICAgICAgICAgICB7bGFiZWw6J3PDrScsIHZhbHVlOnRydWV9LFxyXG4gICAgICAgICAgICAgICAge2xhYmVsOidubycsIHZhbHVlOmZhbHNlfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIGNvbmZpcm1Qcm9taXNlKGBjb25maXJtYSBhY2Npw7NuIFwiJHthY2Npb25TaW5HdWlvbmVzfVwiP2AsIHsuLi5jb25maXJtUHJvbWlzZU9wdHMsIGJ1dHRvbnNEZWZ9KS50aGVuKGFjdGlvbkZ1bik7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGFjdGlvbkZ1bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBidXR0b25cclxufVxyXG5cclxudmFyIGNyZWFyQm90b25lc0FjY2lvbmVzID0gYXN5bmMgKG9wdHM6e2RlcG90Om15T3duLkRlcG90LCBmaWVsZE5hbWU6c3RyaW5nLCBkaXJlY2Npb246IERpcmVjY2lvbkFjY2lvbn0pPT57XHJcbiAgICBsZXQge2RlcG90LGZpZWxkTmFtZSxkaXJlY2Npb259ID0gb3B0cztcclxuICAgIGxldCB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICB0ZC5pbm5lckhUTUw9Jyc7XHJcbiAgICAoZGVwb3Qucm93Q29udHJvbHMuYWNjaW9uZXMuZ2V0VHlwZWRWYWx1ZSgpfHxbXSlcclxuICAgICAgICAuZmlsdGVyKChhY3Rpb246RXN0YWRvQWNjaW9uKT0+YWN0aW9uLmVhY2Npb25fZGlyZWNjaW9uPT1kaXJlY2Npb24pXHJcbiAgICAgICAgLmZvckVhY2goKGFjdGlvbjpFc3RhZG9BY2Npb24pPT50ZC5hcHBlbmRDaGlsZChjcmVhckJvdG9uQWNjaW9uKGRlcG90LCBhY3Rpb24pKSk7XHJcbn1cclxuXHJcbnZhciBjcmVhclN3aXRjaCA9IChvcHRzOntyb3VuZD86Ym9vbGVhbiwgZGlzYWJsZWQ/OmJvb2xlYW4sIGNoZWNrZWQ/OmJvb2xlYW4sIG9uQ2xpY2tGdW46RnVuY3Rpb24sIG9uRXJyRnVuPzpGdW5jdGlvbn0pPT57XHJcbiAgICB2YXIgY2hlY2tib3ggPSBodG1sLmlucHV0KHt0eXBlOidjaGVja2JveCcsIGNoZWNrZWQ6b3B0cy5jaGVja2VkfSkuY3JlYXRlKCk7XHJcbiAgICBjaGVja2JveC5vbmNsaWNrID0gYXN5bmMoKT0+e1xyXG4gICAgICAgIHRyeXtcclxuICAgICAgICAgICAgY2hlY2tib3guZGlzYWJsZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgYXdhaXQgb3B0cy5vbkNsaWNrRnVuKClcclxuICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKVxyXG4gICAgICAgICAgICB0aHJvdyBlcnJcclxuICAgICAgICB9ZmluYWxseXtcclxuICAgICAgICAgICAgY2hlY2tib3guZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGh0bWwubGFiZWwoe2NsYXNzOidzd2l0Y2gnfSxbXHJcbiAgICAgICAgY2hlY2tib3gsXHJcbiAgICAgICAgaHRtbC5zcGFuKHtjbGFzczpgc2xpZGVyICR7b3B0cy5yb3VuZD8ncm91bmQnOicnfWB9KSxcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG59XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5oYWJpbGl0YXI9e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHRkLmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgICAgdGQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgICAgIGNyZWFyU3dpdGNoKHtcclxuICAgICAgICAgICAgICAgIHJvdW5kOnRydWUsXHJcbiAgICAgICAgICAgICAgICBjaGVja2VkOmRlcG90LnJvdy5oYWJpbGl0YWRhLFxyXG4gICAgICAgICAgICAgICAgb25DbGlja0Z1bjogYXN5bmMgKCk9PntcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBteS5hamF4LmVuY3Vlc3RhX2hhYmlsaXRhcl9kZXNoYWJpbGl0YXIoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpdm86IGRlcG90LnJvdy5vcGVyYXRpdm8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYzogZGVwb3Qucm93LmVuY1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBncmlkPWRlcG90Lm1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+Z3JpZC5yZXRyaWV2ZVJvd0FuZFJlZnJlc2goZGVwb3QpLDMwMCk7Ly9wYXJhIHF1ZSBzZSB2ZWEgZWwgZWZlY3RvXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFjY2lvbmVzQXZhbmNlPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzQWNjaW9uZXMoe2RlcG90LGZpZWxkTmFtZSxkaXJlY2Npb246J2F2YW5jZSd9KTtcclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFjY2lvbmVzUmV0cm9jZXNvPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzQWNjaW9uZXMoe2RlcG90LGZpZWxkTmFtZSxkaXJlY2Npb246J3JldHJvY2Vzbyd9KTtcclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFjY2lvbmVzQmxhbnF1ZW89e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICBjcmVhckJvdG9uZXNBY2Npb25lcyh7ZGVwb3QsZmllbGROYW1lLGRpcmVjY2lvbjonYmxhbnF1ZW8nfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5mdW5jdGlvbiBcclxuYm90b25DbGllbnRTaWRlRW5HcmlsbGEob3B0czogeyBub21icmVCb3Rvbjogc3RyaW5nLCBsbGFtYWRhOiAoZGVwb3Q6IG15T3duLkRlcG90KSA9PiBQcm9taXNlPGFueT4gfSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcmVwYXJlOiBmdW5jdGlvbiAoZGVwb3Q6IG15T3duLkRlcG90LCBmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICB2YXIgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICB2YXIgYm90b24gPSBodG1sLmJ1dHRvbihvcHRzLm5vbWJyZUJvdG9uKS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgdGQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYm90b24pO1xyXG4gICAgICAgICAgICB2YXIgcmVzdGF1cmFyQm90b24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYm90b24udGV4dENvbnRlbnQgPSBvcHRzLm5vbWJyZUJvdG9uO1xyXG4gICAgICAgICAgICAgICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGJvdG9uLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9ICdwcm9jZXNhbmRvLi4uJztcclxuICAgICAgICAgICAgICAgIG9wdHMubGxhbWFkYShkZXBvdCkudGhlbihhc3luYyBmdW5jdGlvbihyZXN1bHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAnb2snIGluIHJlc3VsdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdC5vayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3JpZD1kZXBvdC5tYW5hZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZ3JpZC5yZXRyaWV2ZVJvd0FuZFJlZnJlc2goZGVwb3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcG90LmRldGFpbENvbnRyb2xzLmluY29uc2lzdGVuY2lhcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwb3QuZGV0YWlsQ29udHJvbHMuaW5jb25zaXN0ZW5jaWFzLmZvcmNlRGlzcGxheURldGFpbEdyaWQoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9ICByZXN1bHQubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uLnRpdGxlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyM4RjgnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChyZXN0YXVyYXJCb3RvbiwgMjUwMCk7XHJcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90b24udGV4dENvbnRlbnQgPSAnZXJyb3InO1xyXG4gICAgICAgICAgICAgICAgICAgIGJvdG9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjRkY4JztcclxuICAgICAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2lmICgoZGVwb3Qucm93LmNvbnNpc3RpZG89PW51bGwgICYmIGRlcG90LnJvdy5yZWEhPW51bGwpIHx8IGRlcG90LnJvdy5tb2RpZmljYWRvIT1udWxsICYmIGRlcG90LnJvdy5jb25zaXN0aWRvIT1udWxsICYmIGRlcG90LnJvdy5tb2RpZmljYWRvID5kZXBvdC5yb3cuY29uc2lzdGlkbyl7XHJcbiAgICAgICAgICAgIC8vICAgIGJvdG9uLnN0eWxlLmJhY2tncm91bmRDb2xvcj0nIzhDRidcclxuICAgICAgICAgICAgLy99XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICB9O1xyXG59XHJcblxyXG5cclxubXlPd24uY2xpZW50U2lkZXMuY29uc2lzdGlyID0gYm90b25DbGllbnRTaWRlRW5HcmlsbGEoe1xyXG4gICAgbm9tYnJlQm90b246ICdjb25zaXN0aXInLFxyXG4gICAgbGxhbWFkYTogZnVuY3Rpb24gKGRlcG90OiBteU93bi5EZXBvdCkge1xyXG4gICAgICAgIHZhciBteVJlYUZpZWxkTmFtZSA9IGRlcG90Lm1hbmFnZXIuZGVmLnRhYmxlTmFtZT09XCJ0ZW1cIj8ncmVhJzondWx0X3JlYSc7XHJcbiAgICAgICAgdmFyIGZpbHRyb1JlYT1jb25zaXN0aXJfZmlsdHJvKGRlcG90LnJvdy50YXJlYSwgZGVwb3Qucm93W215UmVhRmllbGROYW1lXSwgZGVwb3Qucm93LnJlYSlcclxuICAgICAgICByZXR1cm4gZmlsdHJvUmVhPyBteU93bi5hamF4LmNvbnNpc3Rpcl9lbmN1ZXN0YSh7XHJcbiAgICAgICAgICAgIG9wZXJhdGl2bzogZGVwb3Qucm93Lm9wZXJhdGl2byxcclxuICAgICAgICAgICAgaWRfY2FzbzogZGVwb3Qucm93LmVuY1xyXG4gICAgICAgIH0pOiBhbGVydFByb21pc2UoJ0xhIGVuY3Vlc3RhIGRlYmUgdGVuZXIgZGF0byBlbiByZWEgcGFyYSBwb2RlciBjb25zaXN0aXJsYS4nKTtcclxuICAgIH1cclxufSk7XHJcblxyXG5teU93bi53U2NyZWVucy5wcm9jLnJlc3VsdC5tb3N0cmFyX2VuY3Vlc3Rhc19hX2JsYW5xdWVhcj1mdW5jdGlvbihyZXN1bHQsIGRpdlJlc3VsdCl7XHJcbiAgICBpZihyZXN1bHQucm93cy5sZW5ndGgpe1xyXG4gICAgICAgIHZhciBjdXJyZW50VG9rZW46c3RyaW5nfG51bGwgPSBudWxsXHJcbiAgICAgICAgdmFyIG5yb0NhcmdhID0gMDtcclxuICAgICAgICB2YXIgZW5jdWVzdGFzRGl2OiBudWxsfEhUTUxEaXZFbGVtZW50ID0gbnVsbDtcclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoaHRtbC5oMignb3BlcmF0aXZvOiAnICsgcmVzdWx0Lm9wZXJhdGl2bykuY3JlYXRlKCkpO1xyXG4gICAgICAgIHJlc3VsdC5yb3dzLmZvckVhY2goKGVuY3Vlc3RhKT0+e1xyXG4gICAgICAgICAgICBpZihjdXJyZW50VG9rZW4gIT0gZW5jdWVzdGEuY2FyZ2Fkb19kbSl7XHJcbiAgICAgICAgICAgICAgICBucm9DYXJnYSsrO1xyXG4gICAgICAgICAgICAgICAgY3VycmVudFRva2VuID0gZW5jdWVzdGEuY2FyZ2Fkb19kbTtcclxuICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChodG1sLmg0KCdjYXJnYSBOwrogJyArIG5yb0NhcmdhLnRvU3RyaW5nKCkpLmNyZWF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIGVuY3Vlc3Rhc0RpdiA9IGh0bWwuZGl2KHtjbGFzczonZW5jdWVzdGFzLWEtYmxhbnF1ZWFyJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgLy9sYXMgY29waW8gY29uIGxldCBwYXJhIHF1ZSB0b21lIGVsIHZhbG9yIGFjdHVhbCB5IG5vIGVsIMO6bHRpbW9cclxuICAgICAgICAgICAgICAgIGxldCBtaVRva2VuID0gY3VycmVudFRva2VuO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1pTnJvQ2FyZ2EgPSBucm9DYXJnYTtcclxuICAgICAgICAgICAgICAgIHZhciBidXR0b24gPSBodG1sLmJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6YGJvdG9uLWJsYW5xdWVhci1kbSBib3Rvbi1hY2Npb25gXHJcbiAgICAgICAgICAgICAgICB9LCAnYmxhbnF1ZWFyIGNhcmdhICcgKyBucm9DYXJnYS50b1N0cmluZygpKS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5vbmNsaWNrID0gYXN5bmMgKCk9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1haW5EaXYgPSBodG1sLmRpdigpLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoe2NsYXNzOidkYW5nZXInfSwgW2BFc3TDoSBwb3IgYmxhbnF1ZWFyIGxhIGNhcmdhICR7bWlOcm9DYXJnYX0uIE5vIHNlIHBvZHLDoSBkZXNjYXJnYXIgZWwgZGlzcG9zaXRpdm8uYF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXRGb3J6YXIgPSBodG1sLmlucHV0KHtjbGFzczonaW5wdXQtZm9yemFyJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1haW5EaXYuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbJ1NlIHB1ZWRlIGZvcnphciBlbCBibGFucXVlbyAnLGlucHV0Rm9yemFyXSlcclxuICAgICAgICAgICAgICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZvcnphciA9IGF3YWl0IGNvbmZpcm1Qcm9taXNlKG1haW5EaXYsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aENsb3NlQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0OmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zRGVmOltcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsYWJlbDonZm9yemFyIGJsYW5xdWVvJywgdmFsdWU6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGFiZWw6J2NhbmNlbGFyIGJsYW5xdWVvJywgdmFsdWU6ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBpZihmb3J6YXIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihpbnB1dEZvcnphci52YWx1ZT09J2Zvcnphcicpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRCbGFucXVlbyA9IGF3YWl0IG15LmFqYXguZG1fYmxhbnF1ZWFyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aXZvOiByZXN1bHQub3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogbWlUb2tlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5pbm5lckhUTUw9Jyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QmxhbnF1ZW8uZm9yRWFjaCgodHQ6YW55KT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdih7fSxbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5zcGFuKHt9LGAke3R0LnJlc3VsdF9ibGFucXVlb31gKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKCdzaSBuZWNlc2l0YSBibGFucXVlYXIgZXNjcmliYSBmb3J6YXIuJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChlbmN1ZXN0YXNEaXYpO1xyXG4gICAgICAgICAgICAgICAgZGl2UmVzdWx0LmFwcGVuZENoaWxkKGJ1dHRvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZW5jdWVzdGFzRGl2Py5hcHBlbmRDaGlsZChodG1sLmRpdih7fSxbXHJcbiAgICAgICAgICAgICAgICBodG1sLnNwYW4oYGVuY3Vlc3RhOiAke2VuY3Vlc3RhLmVuY30gYCksXHJcbiAgICAgICAgICAgICAgICBodG1sLnNwYW4oYHRhcmVhOiAgJHtlbmN1ZXN0YS50YXJlYX0gYCksXHJcbiAgICAgICAgICAgIF0pLmNyZWF0ZSgpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHByZXZpc3VhbGl6YXJFbmN1ZXN0YSA9IChcclxuICAgIHJlc3VsdFRlbTphbnksIFxyXG4gICAgZGl2UmVzdWx0OkhUTUxEaXZFbGVtZW50LCBcclxuICAgIHBhcmFtczp7XHJcbiAgICAgICAgbm9tYnJlUHJvY2VkdXJlOnN0cmluZyxcclxuICAgICAgICBpZ25vcmFKc29uRW5jdWVzdGFWYWNpbzpib29sZWFuXHJcbiAgICAgICAgbGFiZWxBY3Rpb246IHN0cmluZ1xyXG4gICAgfVxyXG4pID0+e1xyXG4gICAgbGV0IHtjYXNvVGVtfSA9ICByZXN1bHRUZW07XHJcbiAgICBpZighY2Fzb1RlbS5qc29uX2VuY3Vlc3RhKXtcclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoaHRtbC5wKHtpZDonbWVuc2FqZS1uby1oYXktanNvbi1lbmN1ZXN0YSd9LGBubyBzZSBlbmNvbnRyw7MgaW5mb3JtYWNpb24gY2FyZ2FkYSBlbiBsYSBlbmN1ZXN0YSAke2Nhc29UZW0uZW5jfWApLmNyZWF0ZSgpKTtcclxuICAgIH1cclxuICAgIGlmKGNhc29UZW0uanNvbl9lbmN1ZXN0YSB8fCBwYXJhbXMuaWdub3JhSnNvbkVuY3Vlc3RhVmFjaW8pe1xyXG4gICAgICAgIHZhciBlbmN1ZXN0YURpdiA9IGh0bWwuZGl2KHtpZDonYmFja3VwLWRpdid9KS5jcmVhdGUoKTtcclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoZW5jdWVzdGFEaXYpO1xyXG4gICAgICAgIHRyeXtcclxuICAgICAgICAgICAgbXkuYWdyZWdhcl9qc29uKGVuY3Vlc3RhRGl2LCBjYXNvVGVtLmpzb25fZW5jdWVzdGEpO1xyXG4gICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoaHRtbC5wKHtpZDonbWVuc2FqZS1lcnJvci1qc29uLWVuY3Vlc3RhJ30sYG5vIHNlIHB1ZG8gYWwgcHJldmlzdWFsaXphciBsYSBlbmN1ZXN0YSAke2Nhc29UZW0uZW5jfSBjb3JyZWN0YW1lbnRlLiAke2Vyci5tZXNzYWdlfWApLmNyZWF0ZSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtcclxuICAgICAgICAgICAgY2xhc3M6YGJvdG9uLWJsYW5xdWVhci1lbmN1ZXN0YS1hY2Npb25gXHJcbiAgICAgICAgfSwgYCR7cGFyYW1zLmxhYmVsQWN0aW9ufSBlbmN1ZXN0YWApLmNyZWF0ZSgpO1xyXG4gICAgICAgIGJ1dHRvbi5vbmNsaWNrID0gYXN5bmMgKCk9PiB7XHJcbiAgICAgICAgICAgIHZhciBtYWluRGl2ID0gaHRtbC5kaXYoKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICBtYWluRGl2LmFwcGVuZENoaWxkKFxyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonZGFuZ2VyJ30sIFtgRXN0w6EgcG9yICR7cGFyYW1zLmxhYmVsQWN0aW9ufSBsYSBlbmN1ZXN0YSAke2Nhc29UZW0uZW5jfS4gU2UgcGVyZGVyw6FuIGxvcyBkYXRvcyBkZSBsYSBtaXNtYS5gXSlcclxuICAgICAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHZhciBpbnB1dEZvcnphciA9IGh0bWwuaW5wdXQoe2NsYXNzOidpbnB1dC1mb3J6YXInfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgIG1haW5EaXYuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoW2BwYXJhICR7cGFyYW1zLmxhYmVsQWN0aW9ufSBlc2NyaWJhIGZvcnphciBgLGlucHV0Rm9yemFyXSlcclxuICAgICAgICAgICAgXSkuY3JlYXRlKCkpO1xyXG4gICAgICAgICAgICB2YXIgZm9yemFyID0gYXdhaXQgY29uZmlybVByb21pc2UobWFpbkRpdiwge1xyXG4gICAgICAgICAgICAgICAgd2l0aENsb3NlQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHJlamVjdDpmYWxzZSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnNEZWY6W1xyXG4gICAgICAgICAgICAgICAgICAgIHtsYWJlbDonZm9yemFyJywgdmFsdWU6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICAgICAge2xhYmVsOidjYW5jZWxhcicsIHZhbHVlOmZhbHNlfVxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYoZm9yemFyKXtcclxuICAgICAgICAgICAgICAgIGlmKGlucHV0Rm9yemFyLnZhbHVlPT0nZm9yemFyJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdhaXRHaWYgPSBodG1sLmltZyh7c3JjOidpbWcvbG9hZGluZzE2LmdpZid9KS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YWl0R2lmLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQod2FpdEdpZik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRCbGFucXVlbyA9IGF3YWl0IG15LmFqYXhbcGFyYW1zLm5vbWJyZVByb2NlZHVyZV0oY2Fzb1RlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5pbm5lckhUTUw9cmVzdWx0QmxhbnF1ZW87XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRHaWYuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKGBzaSBuZWNlc2l0YSAke3BhcmFtcy5sYWJlbEFjdGlvbn0gZXNjcmliYSBmb3J6YXIuYClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcclxuICAgIH1cclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMucHJvYy5yZXN1bHQubW9zdHJhcl9lbmN1ZXN0YV9hX2JsYW5xdWVhcl9jb250ZW5pZG89ZnVuY3Rpb24ocmVzdWx0LCBkaXZSZXN1bHQpe1xyXG4gICAgcHJldmlzdWFsaXphckVuY3Vlc3RhKHJlc3VsdCwgZGl2UmVzdWx0LCB7XHJcbiAgICAgICAgbm9tYnJlUHJvY2VkdXJlOidlbmN1ZXN0YV9ibGFucXVlYXInLFxyXG4gICAgICAgIGlnbm9yYUpzb25FbmN1ZXN0YVZhY2lvOiBmYWxzZSxcclxuICAgICAgICBsYWJlbEFjdGlvbjogJ2JsYW5xdWVhcidcclxuICAgIH0pXHJcbn1cclxuXHJcbm15T3duLndTY3JlZW5zLnByb2MucmVzdWx0Lm1vc3RyYXJfZW5jdWVzdGFfYV9ib3JyYXI9ZnVuY3Rpb24ocmVzdWx0LCBkaXZSZXN1bHQpe1xyXG4gICAgcHJldmlzdWFsaXphckVuY3Vlc3RhKHJlc3VsdCwgZGl2UmVzdWx0LCB7XHJcbiAgICAgICAgbm9tYnJlUHJvY2VkdXJlOidlbmN1ZXN0YV9ib3JyYXInLFxyXG4gICAgICAgIGlnbm9yYUpzb25FbmN1ZXN0YVZhY2lvOiB0cnVlLFxyXG4gICAgICAgIGxhYmVsQWN0aW9uOiAnYm9ycmFyJ1xyXG4gICAgfSlcclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMuZGVtbz1hc3luYyBmdW5jdGlvbihfYWRkclBhcmFtcyl7XHJcbiAgICAvLyBAdHMtaWdub3JlIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwgZ2xvYmFsXHJcbiAgICB3aW5kb3cuZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbCh7bW9kb0RlbW86dHJ1ZX0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhcnJheUZsYXQ8VD4oYXJyYXlzOlRbXVtdKTpUW117XHJcbiAgICByZXR1cm4gKFtdIGFzIFRbXSkuY29uY2F0LmFwcGx5KFtdLCBhcnJheXMpO1xyXG59XHJcbiJdfQ==
|