dmencu 0.1.21 → 0.1.22
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.
|
@@ -116,7 +116,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
116
116
|
mainApp.get(baseUrl + '/salvar', async function (req, res, _next) {
|
|
117
117
|
// @ts-ignore sé que voy a recibir useragent por los middlewares de Backend-plus
|
|
118
118
|
var { useragent } = req;
|
|
119
|
-
var htmlMain = be.mainPage({ useragent }, false, { skipMenu: true }).toHtmlDoc();
|
|
119
|
+
var htmlMain = be.mainPage({ useragent }, false, { skipMenu: true, offlineFile: true }).toHtmlDoc();
|
|
120
120
|
miniTools.serveText(htmlMain, 'html')(req, res);
|
|
121
121
|
});
|
|
122
122
|
mainApp.get(baseUrl + '/campo', async function (req, res, _next) {
|
|
@@ -125,7 +125,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
125
125
|
if (user) {
|
|
126
126
|
/** @type {{type:'js', src:string}[]} */
|
|
127
127
|
var webManifestPath = 'carga-dm/web-manifest.webmanifest';
|
|
128
|
-
var htmlMain = be.mainPage({ useragent, user }, false, { skipMenu: true, webManifestPath }).toHtmlDoc();
|
|
128
|
+
var htmlMain = be.mainPage({ useragent, user }, false, { skipMenu: true, webManifestPath, offlineFile: true }).toHtmlDoc();
|
|
129
129
|
miniTools.serveText(htmlMain, 'html')(req, res);
|
|
130
130
|
}
|
|
131
131
|
else {
|
|
@@ -284,11 +284,11 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
284
284
|
}
|
|
285
285
|
clientIncludes(req, opts) {
|
|
286
286
|
var be = this;
|
|
287
|
-
var
|
|
288
|
-
var menuedResources = [
|
|
289
|
-
{ type: 'js', module: 'dmencu', modPath: '../../client/client', file: 'client.js', path: 'client_modules' },
|
|
290
|
-
{ type: 'js', module: 'dmencu', modPath: '../../client/client', file: 'menu.js', path: 'client_modules' },
|
|
287
|
+
var unlogged = opts && opts.offlineFile;
|
|
288
|
+
var menuedResources = unlogged ? [
|
|
291
289
|
{ type: 'js', module: 'dmencu', modPath: '../../unlogged/unlogged', file: 'unlogged.js', path: 'client_modules' },
|
|
290
|
+
] : [
|
|
291
|
+
{ type: 'js', module: 'dmencu', modPath: '../../client/client', file: 'client.js', path: 'client_modules' },
|
|
292
292
|
];
|
|
293
293
|
if (opts && opts.extraFiles) {
|
|
294
294
|
menuedResources = menuedResources.concat(opts.extraFiles);
|
|
@@ -303,7 +303,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
303
303
|
{ type: 'js', module: 'memoize-one', file: 'memoize-one.js' },
|
|
304
304
|
{ type: 'js', module: 'qrcode', modPath: '../build', file: 'qrcode.js' },
|
|
305
305
|
...super.clientIncludes(req, opts).filter(m => m.file != 'formularios.css')
|
|
306
|
-
.filter(m =>
|
|
306
|
+
.filter(m => !unlogged || true
|
|
307
307
|
&& m.file != 'var-cal.js'
|
|
308
308
|
&& m.file != 'var-cal.js'),
|
|
309
309
|
{ type: 'js', module: 'service-worker-admin', file: 'service-worker-admin.js' },
|
|
@@ -446,7 +446,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
446
446
|
"abrir-formulario.js",
|
|
447
447
|
"client_modules/row-validator.js",
|
|
448
448
|
"client/menu.js",
|
|
449
|
-
"client/menu.js",
|
|
450
449
|
"img/logo.png",
|
|
451
450
|
//"img/logo-dm.png",
|
|
452
451
|
"img/logo-128.png",
|
|
@@ -647,4 +646,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
647
646
|
exports.emergeAppDmEncu = emergeAppDmEncu;
|
|
648
647
|
exports.AppDmEncu = emergeAppDmEncu((0, procesamiento_1.emergeAppProcesamiento)((0, procesamiento_1.emergeAppConsistencias)((0, procesamiento_1.emergeAppVarCal)((0, procesamiento_1.emergeAppDatosExt)((0, procesamiento_1.emergeAppOperativos)(procesamiento_1.AppBackend))))));
|
|
649
648
|
});
|
|
650
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBR2IsaURBQTBMO0lBQzFMLDJEQUF5RTtJQUV6RSx3Q0FBd0M7SUFFeEMsd0NBQXdDO0lBSXhDLDZCQUE2QjtJQUU3QixrQ0FBa0M7SUFFbEMsMkJBQW1DO0lBRW5DLCtDQUFvRDtJQUNwRCxxREFBdUQ7SUFDdkQsaUVBQTZEO0lBQzdELCtEQUE4RDtJQUM5RCx1RUFBa0U7SUFDbEUsK0RBQTREO0lBQzVELDZEQUEyRDtJQUMzRCw2REFBMkQ7SUFDM0QscURBQXVEO0lBQ3ZELGlFQUE2RDtJQUM3RCx5REFBeUQ7SUFDekQseUVBQWlFO0lBRWpFLGlEQUFxRDtJQUNyRCx5REFBeUQ7SUFDekQsMkNBQWtEO0lBQ2xELCtEQUE0RDtJQUM1RCxtREFBc0Q7SUFDdEQscURBQXVEO0lBQ3ZELDJEQUEwRDtJQUMxRCxtREFBc0Q7SUFDdEQsK0NBQW9EO0lBQ3BELHFFQUErRDtJQUMvRCxpREFBcUQ7SUFDckQseURBQXlEO0lBQ3pELDZEQUEyRDtJQUMzRCx5REFBeUQ7SUFDekQsaUVBQTZEO0lBQzdELHFFQUErRDtJQUMvRCwrREFBNEQ7SUFDNUQsbUVBQThEO0lBQzlELHVEQUF3RDtJQUN4RCxtREFBc0Q7SUFDdEQsbURBQXNEO0lBQ3RELHFEQUF1RDtJQUN2RCwyREFBMEQ7SUFDMUQsMkRBQTBEO0lBQzFELDZEQUEyRDtJQUUzRCxpREFBK0I7SUFDL0IsNkNBQXNDO0lBRXRDLE1BQU0sY0FBYyxHQUFDLFdBQVcsQ0FBQztJQUVqQyxTQUFnQixlQUFlLENBQTBFLElBQU07UUFDN0csT0FBTyxNQUFNLFNBQVUsU0FBUSxJQUFJO1lBQ2pDLFlBQVksR0FBRyxJQUFVO2dCQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLENB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IjtcclxuXHJcbmltcG9ydCAqIGFzIHByb2Nlc2FtaWVudG8gZnJvbSBcInByb2Nlc2FtaWVudG9cIjtcclxuaW1wb3J0IHtlbWVyZ2VBcHBQcm9jZXNhbWllbnRvLCBlbWVyZ2VBcHBDb25zaXN0ZW5jaWFzLCBlbWVyZ2VBcHBWYXJDYWwsIGVtZXJnZUFwcERhdG9zRXh0LCBlbWVyZ2VBcHBPcGVyYXRpdm9zLCBBcHBCYWNrZW5kLCBDbGllbnRNb2R1bGVEZWZpbml0aW9uLCBPcHRzQ2xpZW50UGFnZX0gZnJvbSBcInByb2Nlc2FtaWVudG9cIjtcclxuaW1wb3J0IHtnZXRPcGVyYXRpdm9BY3R1YWwsIFByb2NlZHVyZXNEbUVuY3V9IGZyb20gXCIuL3Byb2NlZHVyZXMtZG1lbmN1XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwZyBmcm9tIFwicGctcHJvbWlzZS1zdHJpY3RcIjtcclxuaW1wb3J0IHtqc29ufSBmcm9tIFwicGctcHJvbWlzZS1zdHJpY3RcIjtcclxuaW1wb3J0ICogYXMgbWluaVRvb2xzIGZyb20gXCJtaW5pLXRvb2xzXCI7XHJcbmltcG9ydCB7Q29udGV4dCwgTWVudUluZm9CYXNlLCBSZXF1ZXN0LCBSZXNwb25zZX0gZnJvbSBcIi4vdHlwZXMtZG1lbmN1XCI7XHJcbmltcG9ydCB7IGNoYW5naW5nIH0gZnJvbSBcImJlc3QtZ2xvYmFsc1wiO1xyXG5cclxuaW1wb3J0ICogYXMgeWF6bCBmcm9tIFwieWF6bFwiO1xyXG5pbXBvcnQgeyBOZXh0RnVuY3Rpb24gfSBmcm9tIFwiZXhwcmVzcy1zZXJ2ZS1zdGF0aWMtY29yZVwiO1xyXG5pbXBvcnQgKiBhcyBsaWtlQXIgZnJvbSBcImxpa2UtYXJcIjtcclxuXHJcbmltcG9ydCB7cHJvbWlzZXMgYXMgZnMgfSBmcm9tIFwiZnNcIjtcclxuXHJcbmltcG9ydCB7IHJvbGVzICAgICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1yb2xlc1wiO1xyXG5pbXBvcnQgeyBwZXJzb25hbCAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcGVyc29uYWxcIjtcclxuaW1wb3J0IHsgcmVjZXBjaW9uaXN0YXMgICAgICB9IGZyb20gXCIuL3RhYmxlLXJlY2VwY2lvbmlzdGFzXCI7XHJcbmltcG9ydCB7IGVuY3Vlc3RhZG9yZXMgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLWVuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgbWlzX2VuY3Vlc3RhZG9yZXMgICAgIH0gZnJvbSBcIi4vdGFibGUtbWlzX2VuY3Vlc3RhZG9yZXNcIjtcclxuaW1wb3J0IHsgcmVjdXBlcmFkb3JlcyAgICAgICB9IGZyb20gXCIuL3RhYmxlLXJlY3VwZXJhZG9yZXNcIjtcclxuaW1wb3J0IHsgc3VwZXJ2aXNvcmVzICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXN1cGVydmlzb3Jlc1wiO1xyXG5pbXBvcnQgeyBwZXJzb25hbF9yb2wgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcGVyc29uYWxfcm9sXCI7XHJcbmltcG9ydCB7IHBlcm1pc29zICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wZXJtaXNvc1wiO1xyXG5pbXBvcnQgeyByb2xlc19wZXJtaXNvcyAgICAgIH0gZnJvbSBcIi4vdGFibGUtcm9sZXNfcGVybWlzb3NcIjtcclxuaW1wb3J0IHsgcGFyYW1ldHJvcyAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBhcmFtZXRyb3NcIjtcclxuaW1wb3J0IHsgcm9sZXNfc3Vib3JkaW5hZG9zICB9IGZyb20gXCIuL3RhYmxlLXJvbGVzX3N1Ym9yZGluYWRvc1wiO1xyXG5cclxuaW1wb3J0IHtub19yZWEgICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLW5vX3JlYVwiO1xyXG5pbXBvcnQge25vX3JlYV9zdXAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtbm9fcmVhX3N1cFwiO1xyXG5pbXBvcnQge3RlbSAgICAgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtdGVtXCI7XHJcbmltcG9ydCB7dGVtX3JlY2VwY2lvbiAgICAgICAgfSBmcm9tIFwiLi90YWJsZS10ZW1fcmVjZXBjaW9uXCI7XHJcbmltcG9ydCB7c2VtYW5hcyAgICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1zZW1hbmFzXCI7XHJcbmltcG9ydCB7IHVzdWFyaW9zICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXVzdWFyaW9zJztcclxuaW1wb3J0IHsgb3BlcmFjaW9uZXMgICAgICAgICB9IGZyb20gJy4vdGFibGUtb3BlcmFjaW9uZXMnO1xyXG5pbXBvcnQgeyBjb211bmFzICAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1jb211bmFzJztcclxuaW1wb3J0IHsgYXJlYXMgICAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtYXJlYXMnO1xyXG5pbXBvcnQgeyBzaW5jcm9uaXphY2lvbmVzICAgIH0gZnJvbSAnLi90YWJsZS1zaW5jcm9uaXphY2lvbmVzJztcclxuaW1wb3J0IHsgdGFyZWFzICAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzJztcclxuaW1wb3J0IHsgdGFyZWFzX3RlbSAgICAgICAgICB9IGZyb20gJy4vdGFibGUtdGFyZWFzX3RlbSc7XHJcbmltcG9ydCB7IHRhcmVhc19hcmVhcyAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhc19hcmVhcyc7XHJcbmltcG9ydCB7IG1pc190YXJlYXMgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLW1pc190YXJlYXMnO1xyXG5pbXBvcnQgeyBtaXNfdGFyZWFzX3RlbSAgICAgIH0gZnJvbSAnLi90YWJsZS1taXNfdGFyZWFzX3RlbSc7XHJcbmltcG9ydCB7IG1pc190YXJlYXNfYXJlYXMgICAgfSBmcm9tICcuL3RhYmxlLW1pc190YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyBjb250cm9sX2NhbXBvICAgICAgIH0gZnJvbSAnLi90YWJsZS1jb250cm9sX2NhbXBvJztcclxuaW1wb3J0IHsgY29udHJvbF9yZXN1bWVuICAgICB9IGZyb20gJy4vdGFibGUtY29udHJvbF9yZXN1bWVuJztcclxuaW1wb3J0IHsgdml2aWVuZGFzICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtdml2aWVuZGFzJztcclxuaW1wb3J0IHsgdmlzaXRhcyAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtdmlzaXRhcyc7XHJcbmltcG9ydCB7IGhvZ2FyZXMgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWhvZ2FyZXMnO1xyXG5pbXBvcnQgeyBwZXJzb25hcyAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1wZXJzb25hcyc7XHJcbmltcG9ydCB7IHZpc2l0YXNfc3VwICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXZpc2l0YXNfc3VwJztcclxuaW1wb3J0IHsgaG9nYXJlc19zdXAgICAgICAgICB9IGZyb20gJy4vdGFibGUtaG9nYXJlc19zdXAnO1xyXG5pbXBvcnQgeyBwZXJzb25hc19zdXAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1wZXJzb25hc19zdXAnO1xyXG5cclxuZXhwb3J0ICogZnJvbSBcIi4vdHlwZXMtZG1lbmN1XCI7XHJcbmltcG9ydCB7ZGVmQ29uZmlnfSBmcm9tIFwiLi9kZWYtY29uZmlnXCJcclxuXHJcbmNvbnN0IEFQUF9ETV9WRVJTSU9OPVwiIzIyLTA2LTIyXCI7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZW1lcmdlQXBwRG1FbmN1PFQgZXh0ZW5kcyBwcm9jZXNhbWllbnRvLkNvbnN0cnVjdG9yPHByb2Nlc2FtaWVudG8uQXBwUHJvY2VzYW1pZW50b1R5cGU+PihCYXNlOlQpe1xyXG4gIHJldHVybiBjbGFzcyBBcHBEbUVuY3UgZXh0ZW5kcyBCYXNle1xyXG4gICAgY29uc3RydWN0b3IoLi4uYXJnczphbnlbXSl7IFxyXG4gICAgICAgIHN1cGVyKGFyZ3MpOyBcclxuICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgPSB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgfHwge307XHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYT1bXVxyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfZ3JvdXBzPVtdXHJcbiAgICAgICAgdGhpcy5tZXRhRW5jSW5jbHVpckNhc2lsbGVyb3NTYWx0b1JFTCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMudGltZXN0YW1wRXN0cnVjdHVyYSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgZ2V0UHJvY2VkdXJlcygpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHByb2NlZGltaWVudG9BUmVlbXBsYXphcj1bXCJjYXNvX2d1YXJkYXJcIixcImNhc29fdHJhZXJcIl07XHJcbiAgICAgICAgdmFyIHBhcmVudFByb2MgPSBhd2FpdCBzdXBlci5nZXRQcm9jZWR1cmVzKCk7XHJcbiAgICAgICAgcGFyZW50UHJvYyA9IHBhcmVudFByb2MuZmlsdGVyKChwcm9jZWR1cmU6YW55KSA9PiAhcHJvY2VkaW1pZW50b0FSZWVtcGxhemFyLmluY2x1ZGVzKHByb2NlZHVyZS5hY3Rpb24pKTtcclxuICAgICAgICBwYXJlbnRQcm9jID0gcGFyZW50UHJvYy5tYXAocHJvY0RlZj0+e1xyXG4gICAgICAgICAgICBpZihwcm9jRGVmLmFjdGlvbiA9PSAndGFibGVfcmVjb3JkX3NhdmUnIHx8IHByb2NEZWYuYWN0aW9uID09ICd0YWJsZV9yZWNvcmRfZGVsZXRlJyl7XHJcbiAgICAgICAgICAgICAgICB2YXIgY29yZUZ1bmN0aW9uSW50ZXJubyA9IHByb2NEZWYuY29yZUZ1bmN0aW9uO1xyXG4gICAgICAgICAgICAgICAgcHJvY0RlZi5jb3JlRnVuY3Rpb24gPSBhc3luYyBmdW5jdGlvbihjb250ZXh0LCBwYXJhbWV0ZXJzKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgY29yZUZ1bmN0aW9uSW50ZXJubyhjb250ZXh0LCBwYXJhbWV0ZXJzKVxyXG4gICAgICAgICAgICAgICAgICAgIGlmKHBhcmFtZXRlcnMudGFibGUgPT0gJ2Nhc2lsbGVyb3MnKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYmUudGltZXN0YW1wRXN0cnVjdHVyYSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnc2UgdG9jw7MgbGEgZXN0cnVjdHVyYScsIGJlLnRpbWVzdGFtcEVzdHJ1Y3R1cmEpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHByb2NEZWY7XHJcbiAgICAgICAgfSlcclxuICAgICAgICByZXR1cm4gcGFyZW50UHJvYy5jb25jYXQoUHJvY2VkdXJlc0RtRW5jdSk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBjaGVja0RhdGFiYXNlU3RydWN0dXJlKF9jbGllbnQ6Q2xpZW50KXtcclxuICAgIH1cclxuICAgIGFkZFNjaHLDtmRpbmdlclNlcnZpY2VzKG1haW5BcHA6cHJvY2VzYW1pZW50by5FeHByZXNzLCBiYXNlVXJsOnN0cmluZyl7XHJcbiAgICAgICAgbGV0IGJlPXRoaXM7XHJcbiAgICAgICAgc3VwZXIuYWRkU2NocsO2ZGluZ2VyU2VydmljZXMobWFpbkFwcCwgYmFzZVVybCk7XHJcbiAgICAgICAgbWFpbkFwcC51c2UoZnVuY3Rpb24ocmVxOlJlcXVlc3QscmVzOlJlc3BvbnNlLCBuZXh0Ok5leHRGdW5jdGlvbil7XHJcbiAgICAgICAgICAgIGlmKHJlcS5zZXNzaW9uICYmICFyZXEuc2Vzc2lvbi5pbnN0YWxsKXtcclxuICAgICAgICAgICAgICAgIHJlcS5zZXNzaW9uLmluc3RhbGw9TWF0aC5yYW5kb20oKS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCcnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBuZXh0KCk7XHJcbiAgICAgICAgfSlcclxuICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsKycvc2FsdmFyJyxhc3luYyBmdW5jdGlvbihyZXEscmVzLF9uZXh0KXtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZSBzw6kgcXVlIHZveSBhIHJlY2liaXIgdXNlcmFnZW50IHBvciBsb3MgbWlkZGxld2FyZXMgZGUgQmFja2VuZC1wbHVzXHJcbiAgICAgICAgICAgIHZhciB7dXNlcmFnZW50fSA9IHJlcTtcclxuICAgICAgICAgICAgdmFyIGh0bWxNYWluPWJlLm1haW5QYWdlKHt1c2VyYWdlbnR9LCBmYWxzZSwge3NraXBNZW51OnRydWV9KS50b0h0bWxEb2MoKTtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwnaHRtbCcpKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrJy9jYW1wbycsYXN5bmMgZnVuY3Rpb24ocmVxLHJlcyxfbmV4dCl7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICB2YXIge3VzZXJhZ2VudCwgdXNlcn0gPSByZXE7XHJcbiAgICAgICAgICAgIGlmKHVzZXIpe1xyXG4gICAgICAgICAgICAgICAgLyoqIEB0eXBlIHt7dHlwZTonanMnLCBzcmM6c3RyaW5nfVtdfSAqL1xyXG4gICAgICAgICAgICAgICAgdmFyIHdlYk1hbmlmZXN0UGF0aCA9ICdjYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3QnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGh0bWxNYWluPWJlLm1haW5QYWdlKHt1c2VyYWdlbnQsIHVzZXJ9LCBmYWxzZSwge3NraXBNZW51OnRydWUsIHdlYk1hbmlmZXN0UGF0aH0pLnRvSHRtbERvYygpO1xyXG4gICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KGh0bWxNYWluLCdodG1sJykocmVxLHJlcyk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgcmVzLnJlZGlyZWN0KGJhc2VVcmwrJy9sb2dpbiN3PXBhdGgmcGF0aD0vY2FtcG8nKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdmFyIGNyZWF0ZVNlcnZpY2VXb3JrZXIgPSBhc3luYyBmdW5jdGlvbigpe1xyXG4gICAgICAgICAgICB2YXIgc3cgPSBhd2FpdCBmcy5yZWFkRmlsZSgnbm9kZV9tb2R1bGVzL3NlcnZpY2Utd29ya2VyLWFkbWluL2Rpc3Qvc2VydmljZS13b3JrZXItd28tbWFuaWZlc3QuanMnLCAndXRmOCcpO1xyXG4gICAgICAgICAgICB2YXIgbWFuaWZlc3QgPSBiZS5jcmVhdGVSZXNvdXJjZXNGb3JDYWNoZUpzb24oe30pO1xyXG4gICAgICAgICAgICB2YXIgc3dNYW5pZmVzdCA9IHN3XHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKnZlcnNpb24qLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QudmVyc2lvbikpXHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZShcIicvKmFwcE5hbWUqLydcIiwgSlNPTi5zdHJpbmdpZnkobWFuaWZlc3QuYXBwTmFtZSkpXHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKnVybHNUb0NhY2hlXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmNhY2hlKSlcclxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFtcXHMqXFwvXFwqZmFsbGJhY2tzXFwqXFwvXFxzKlxcXS8sIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmZhbGxiYWNrIHx8IFtdKSk7XHJcbiAgICAgICAgICAgICAgICAvLy5yZXBsYWNlKFwiLyNDQUNIRSQvXCIsIFwiLyhhXFxcXGQrbVxcXFxkK3BcXFxcZCt0XFxcXGQrX2VzdHJ1Y3R1cmEuanMpfChhXFxcXGQrbVxcXFxkK3BcXFxcZCt0XFxcXGQrX2hkci5qc29uKS9cIik7XHJcbiAgICAgICAgICAgIHJldHVybiBzd01hbmlmZXN0XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrYC9zdy1tYW5pZmVzdC5qc2AsIGFzeW5jIGZ1bmN0aW9uKHJlcSwgcmVzLCBuZXh0KXtcclxuICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChhd2FpdCBjcmVhdGVTZXJ2aWNlV29ya2VyKCksJ2FwcGxpY2F0aW9uL2phdmFzY3JpcHQnKShyZXEscmVzKTtcclxuICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLHJlcyxuZXh0KShlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCtgL2NhcmdhLWRtL3dlYi1tYW5pZmVzdC53ZWJtYW5pZmVzdGAsIGFzeW5jIGZ1bmN0aW9uKHJlcSwgcmVzLCBuZXh0KXtcclxuICAgICAgICAgICAgY29uc3QgQVBQX05BTUUgPSAoYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihudWxsLCAoY2xpZW50OnBnLkNsaWVudCk9PlxyXG4gICAgICAgICAgICAgICAgY2xpZW50LnF1ZXJ5KFwic2VsZWN0IG9wZXJhdGl2byBmcm9tIHBhcmFtZXRyb3Mgd2hlcmUgdW5pY29fcmVnaXN0cm9cIikuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgICkpLnZhbHVlO1xyXG4gICAgICAgICAgICB2YXIgc3VmaWpvID0gYmFzZVVybC5pbmNsdWRlcygndGVzdCcpPydfdGVzdCc6XHJcbiAgICAgICAgICAgICAgICBiYXNlVXJsLmluY2x1ZGVzKCdjYXBhJyk/J19jYXBhJzonJztcclxuICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudCA9IHtcclxuICAgICAgICAgICAgICAgICAgXCJuYW1lXCI6IGAke0FQUF9OQU1FfSBQcm9ncmVzc2l2ZSBXZWIgQXBwYCxcclxuICAgICAgICAgICAgICAgICAgXCJzaG9ydF9uYW1lXCI6IGAke0FQUF9OQU1FfSBQV0FgLFxyXG4gICAgICAgICAgICAgICAgICBcImRlc2NyaXB0aW9uXCI6IGBQcm9ncmVzc2l2ZSBXZWIgQXBwIGZvciAke0FQUF9OQU1FfS5gLFxyXG4gICAgICAgICAgICAgICAgICBcImljb25zXCI6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tMzIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCIzMngzMlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS00OCR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjQ4eDQ4XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTY0JHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiNjR4NjRcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNzIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCI3Mng3MlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS0xOTIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCIxOTJ4MTkyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTUxMiR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjUxMng1MTJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgICAgICBcInN0YXJ0X3VybFwiOiBcIi4uL2NhbXBvXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiZGlzcGxheVwiOiBcInN0YW5kYWxvbmVcIixcclxuICAgICAgICAgICAgICAgICAgXCJ0aGVtZV9jb2xvclwiOiBcIiMzRjUxQjVcIixcclxuICAgICAgICAgICAgICAgICAgXCJiYWNrZ3JvdW5kX2NvbG9yXCI6IFwiIzZkNjBlZFwiXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVUZXh0KEpTT04uc3RyaW5naWZ5KGNvbnRlbnQpLCAnYXBwbGljYXRpb24vanNvbicpKHJlcSxyZXMpO1xyXG4gICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycik7XHJcbiAgICAgICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVFcnIocmVxLCByZXMsIG5leHQpKGVycik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGFkZExvZ2dlZFNlcnZpY2VzKCl7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICBzdXBlci5hZGRMb2dnZWRTZXJ2aWNlcygpO1xyXG4gICAgICAgIGJlLmFwcC5nZXQoJy9tYW5pZmVzdC5tYW5pZmVzdCcsIGFzeW5jIGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LCByZXM6UmVzcG9uc2UsIG5leHQ6TmV4dEZ1bmN0aW9uKXtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRmlsZSgnc3JjL2NsaWVudC9tYW5pZmVzdC5tYW5pZmVzdCcse30pKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYXBwLmdldCgnL2ZpbGUnLCBhc3luYyBmdW5jdGlvbihyZXE6UmVxdWVzdCxyZXM6UmVzcG9uc2Upe1xyXG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0gYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihyZXEsIFxyXG4gICAgICAgICAgICAgICAgKGNsaWVudDpwZy5DbGllbnQpPT5cclxuICAgICAgICAgICAgICAgIGNsaWVudC5xdWVyeShcInNlbGVjdCBydXRhIGZyb20gYWRqdW50b3Mgd2hlcmUgaWRfYWRqdW50byA9ICQxXCIsW3JlcS5xdWVyeS5pZF9hZGp1bnRvXSlcclxuICAgICAgICAgICAgICAgIC5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdmFyIHBhdGggPSByZXN1bHQudmFsdWU7XHJcbiAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUocGF0aCx7fSkocmVxLHJlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hcHAuZ2V0KCcvaW1hZ2VuZXMnLCBhc3luYyBmdW5jdGlvbihyZXE6UmVxdWVzdCxyZXM6UmVzcG9uc2Upe1xyXG4gICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKCdsb2NhbC1pbWFnZXMvJytyZXEucXVlcnkucGRmLHt9KShyZXEscmVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFwcC5nZXQoJy9kb3dubG9hZC9hbGwnLGFzeW5jIGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LCByZXM6UmVzcG9uc2UsIG5leHQ6KCk9PnZvaWQpe1xyXG4gICAgICAgICAgICBpZihyZXEudXNlcj09bnVsbCB8fCByZXEudXNlci5yb2whPSdhZG1pbicpe1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ25vIGVzdMOhIGF1dG9yaXphZG8gYSBiYWphcnNlIHRvZG8nLHJlcS51c2VyKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgemlwID0gbmV3IHlhemwuWmlwRmlsZSgpO1xyXG4gICAgICAgICAgICB6aXAub3V0cHV0U3RyZWFtLnBpcGUocmVzKTtcclxuICAgICAgICAgICAgbGV0IGJhc2UgPSAnbG9jYWwtYXR0YWNobWVudHMnXHJcbiAgICAgICAgICAgIGxldCBmaWxlcyA9IGF3YWl0IGZzLnJlYWRkaXIoYmFzZSk7XHJcbiAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKGZpbGVzLm1hcChhc3luYyBmdW5jdGlvbihmaWxlTmFtZTpzdHJpbmcpe1xyXG4gICAgICAgICAgICAgICAgdmFyIHBhdGggPSBiYXNlKycvJytmaWxlTmFtZTtcclxuICAgICAgICAgICAgICAgIHZhciBzdGF0ID0gYXdhaXQgZnMuc3RhdChwYXRoKTtcclxuICAgICAgICAgICAgICAgIGlmKHN0YXQuaXNGaWxlKXtcclxuICAgICAgICAgICAgICAgICAgICB6aXAuYWRkRmlsZShwYXRoLGZpbGVOYW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSkpO1xyXG4gICAgICAgICAgICB6aXAuZW5kKCk7XHJcbiAgICAgICAgfSlcclxuICAgIH1cclxuICAgIGFzeW5jIHBvc3RDb25maWcoKXtcclxuICAgICAgICBhd2FpdCBzdXBlci5wb3N0Q29uZmlnKCk7XHJcbiAgICAgICAgdmFyIGJlPXRoaXM7XHJcbiAgICAgICAgYmUubWV0YUVuY0luY2x1aXJDYXNpbGxlcm9zU2FsdG9SRUwgPSBmYWxzZTtcclxuICAgICAgICBhd2FpdCBiZS5pblRyYW5zYWN0aW9uKG51bGwsIGFzeW5jIGZ1bmN0aW9uKGNsaWVudDpwZy5DbGllbnQpe1xyXG4gICAgICAgICAgICB2YXIgcVBlcm1pc29zPWBcclxuICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2coci5yb2wsanNvbmJfYnVpbGRfb2JqZWN0KCdzdXBlcnVzZXInLHIuc3VwZXJ1c2VyLCdwdWVkZScsKFxyXG4gICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhycC5wZXJtaXNvLChcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2cocnBhLmFjY2lvbixycGEuaGFiaWxpdGFkbylcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIHJvbGVzX3Blcm1pc29zIHJwYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHJwYS5yb2w9cnAucm9sIEFORCBycGEucGVybWlzbz1ycC5wZXJtaXNvXHJcbiAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgICBGUk9NIHJvbGVzX3Blcm1pc29zIHJwXHJcbiAgICAgICAgICAgICAgICAgICAgV0hFUkUgcnAucm9sPXIucm9sICNjb25kSGFiaWxpdGFkbyNcclxuICAgICAgICAgICAgICApKSlcclxuICAgICAgICAgICAgICBGUk9NIHJvbGVzIHJcclxuICAgICAgICAgICAgYDtcclxuICAgICAgICAgICAgdmFyIHJlc3VsdHMgPSBbXHJcbiAgICAgICAgICAgICAgICBhd2FpdCBjbGllbnQucXVlcnkocVBlcm1pc29zLnJlcGxhY2UoJyNjb25kSGFiaWxpdGFkbyMnLCcnKSkuZmV0Y2hVbmlxdWVWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJyxgIGFuZCBycC4ke3BnLnF1b3RlSWRlbnQoJ2hhYmlsaXRhZG8nKX1gKSkuZmV0Y2hVbmlxdWVWYWx1ZSgpLFxyXG4gICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgICAgICBTRUxFQ1QganNvbmJfb2JqZWN0X2FnZyhwZXJtaXNvLChcclxuICAgICAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2coYWNjaW9uLHRydWUpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFdIRVJFIHBhLnBlcm1pc289cC5wZXJtaXNvXHJcbiAgICAgICAgICAgICAgICAgICAgICApKVxyXG4gICAgICAgICAgICAgICAgICAgICAgRlJPTSBwZXJtaXNvcyBwXHJcbiAgICAgICAgICAgICAgICBgKS5mZXRjaFVuaXF1ZVZhbHVlKClcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgYmUucGVybWlzb3NSb2w9cmVzdWx0c1swXS52YWx1ZTtcclxuICAgICAgICAgICAgYmUucGVybWlzb3NSb2xTb2xvVHJ1ZT1yZXN1bHRzWzFdLnZhbHVlO1xyXG4gICAgICAgICAgICBiZS5wZXJtaXNvc1N1cGVydXNlcj1yZXN1bHRzWzJdLnZhbHVlO1xyXG4gICAgICAgICAgICBiZS5wZXJtaXNvc1BhcmFOYWRpZT1saWtlQXIoYmUucGVybWlzb3NTdXBlcnVzZXIpLm1hcChwPT5saWtlQXIocCkubWFwKHZhPT5mYWxzZSkucGxhaW4oKSkucGxhaW4oKVxyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLnBlcm1pc29zUm9sU29sb1RydWUse2RlcHRoOjl9KTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5wZXJtaXNvc1N1cGVydXNlcix7ZGVwdGg6OX0pO1xyXG4gICAgICAgICAgICAvL2NvbnNvbGUuZGlyKGJlLnBlcm1pc29zUGFyYU5hZGllLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYXdhaXQgdGhpcy5yZWZyZXNoQ2FjaGVzKCk7XHJcbiAgICB9XHJcbiAgICBjb25maWdTdGF0aWNDb25maWcoKXtcclxuICAgICAgICBzdXBlci5jb25maWdTdGF0aWNDb25maWcoKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRpY0NvbmZpZyhkZWZDb25maWcpO1xyXG4gICAgfVxyXG4gICAgY2xpZW50SW5jbHVkZXMocmVxOlJlcXVlc3QsIG9wdHM6T3B0c0NsaWVudFBhZ2UpOkNsaWVudE1vZHVsZURlZmluaXRpb25bXSB7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIgbG9nZ2VkID0gcmVxICYmIG9wdHMgJiYgIW9wdHMuc2tpcE1lbnUgO1xyXG4gICAgICAgIHZhciBtZW51ZWRSZXNvdXJjZXM6Q2xpZW50TW9kdWxlRGVmaW5pdGlvbltdPSBbXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL2NsaWVudC9jbGllbnQnLCBmaWxlOiAnY2xpZW50LmpzJywgcGF0aDogJ2NsaWVudF9tb2R1bGVzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi9jbGllbnQvY2xpZW50JywgZmlsZTogJ21lbnUuanMnLCBwYXRoOiAnY2xpZW50X21vZHVsZXMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3VubG9nZ2VkLmpzJywgcGF0aDogJ2NsaWVudF9tb2R1bGVzJyB9LFxyXG4gICAgICAgIF07XHJcbiAgICAgICAgaWYob3B0cyAmJiBvcHRzLmV4dHJhRmlsZXMpe1xyXG4gICAgICAgICAgICBtZW51ZWRSZXNvdXJjZXMgPSBtZW51ZWRSZXNvdXJjZXMuY29uY2F0KG9wdHMuZXh0cmFGaWxlcyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBleHRlcm5hbFJlc291cmNlczpDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSBbXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QnLCBtb2RQYXRoOiAndW1kJywgZmlsZURldmVsb3BtZW50OidyZWFjdC5kZXZlbG9wbWVudC5qcycsIGZpbGU6J3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0LWRvbScsIG1vZFBhdGg6ICd1bWQnLCBmaWxlRGV2ZWxvcG1lbnQ6J3JlYWN0LWRvbS5kZXZlbG9wbWVudC5qcycsIGZpbGU6J3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdAbWF0ZXJpYWwtdWkvY29yZScsIG1vZFBhdGg6ICd1bWQnLCBmaWxlRGV2ZWxvcG1lbnQ6J21hdGVyaWFsLXVpLmRldmVsb3BtZW50LmpzJywgZmlsZTonbWF0ZXJpYWwtdWkucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnY2xzeCcsIGZpbGU6J2Nsc3gubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4JywgbW9kUGF0aDonLi4vZGlzdCcsIGZpbGVEZXZlbG9wbWVudDoncmVkdXguanMnLCBmaWxlOidyZWR1eC5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVhY3QtcmVkdXgnLCBtb2RQYXRoOicuLi9kaXN0JywgZmlsZURldmVsb3BtZW50OidyZWFjdC1yZWR1eC5qcycsIGZpbGU6J3JlYWN0LXJlZHV4Lm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdtZW1vaXplLW9uZScsICBmaWxlOidtZW1vaXplLW9uZS5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdxcmNvZGUnLCBtb2RQYXRoOiAnLi4vYnVpbGQnLCBmaWxlOiAncXJjb2RlLmpzJ30sXHJcbiAgICAgICAgICAgIC4uLnN1cGVyLmNsaWVudEluY2x1ZGVzKHJlcSwgb3B0cykuZmlsdGVyKG09Pm0uZmlsZSE9J2Zvcm11bGFyaW9zLmNzcycpXHJcbiAgICAgICAgICAgIC5maWx0ZXIobT0+bG9nZ2VkIHx8IHRydWVcclxuICAgICAgICAgICAgICAgICYmIG0uZmlsZSE9J3Zhci1jYWwuanMnXHJcbiAgICAgICAgICAgICAgICAmJiBtLmZpbGUhPSd2YXItY2FsLmpzJyAgICAgXHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnc2VydmljZS13b3JrZXItYWRtaW4nLCAgZmlsZTonc2VydmljZS13b3JrZXItYWRtaW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncmVkdXgtdHlwZWQtcmVkdWNlcicsIG1vZFBhdGg6Jy4uL2Rpc3QnLCBmaWxlOidyZWR1eC10eXBlZC1yZWR1Y2VyLmpzJyB9XHJcbiAgICAgICAgXTtcclxuICAgICAgICB2YXIgcmVzb3VyY2VzOkNsaWVudE1vZHVsZURlZmluaXRpb25bXSA9IFtcclxuICAgICAgICAgICAgLi4uZXh0ZXJuYWxSZXNvdXJjZXMsXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2FkYXB0LmpzJywgcGF0aDogJ2NsaWVudF9tb2R1bGVzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICd0aXBvcy5qcycsIHBhdGg6ICdjbGllbnRfbW9kdWxlcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYnlwYXNzLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnY2xpZW50X21vZHVsZXMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlZHV4LWZvcm11bGFyaW8uanMnLCBwYXRoOiAnY2xpZW50X21vZHVsZXMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3JlbmRlci1nZW5lcmFsLmpzJywgcGF0aDogJ2NsaWVudF9tb2R1bGVzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdjbGllbnRfbW9kdWxlcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAnYWJyaXItZm9ybXVsYXJpby5qcycsIHBhdGg6ICdjbGllbnRfbW9kdWxlcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL2NsaWVudC9jbGllbnQvY3NzJywgZmlsZTogJ21lbnUuY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnY3NzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdmb3JtdWxhcmlvLXJlYWN0LmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnYm9vdHN0cmFwLm1pbi5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICd0dGYnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ1JvYm90by1SZWd1bGFyLnR0ZicsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgIC4uLiBtZW51ZWRSZXNvdXJjZXMsXHJcbiAgICAgICAgXVxyXG4gICAgICAgIHJldHVybiByZXNvdXJjZXNcclxuICAgICAgICAvLyAubWFwKG09Pih7Li4ubSwgZmlsZTptLmZpbGVEZXZlbG9wbWVudHx8bS5maWxlfSkpO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgcmVmcmVzaENhY2hlcygpe1xyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCA9IHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudCB8fCB7fTtcclxuICAgICAgICBhd2FpdCB0aGlzLmluRGJDbGllbnQobnVsbCwgYXN5bmMgKGNsaWVudCk9PntcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYSA9IChhd2FpdCBjbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gbm9fcmVhIG9yZGVyIGJ5IG5vX3JlYWApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjYWNoZXMnLHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWEpXHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfZ3JvdXBzID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICBzZWxlY3QgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWEgciBncm91cCBieSBncnVwbyBvcmRlciBieSAxXHJcbiAgICAgICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfZ3JvdXBzMCA9IChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0IGdydXBvMCBhcyBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYSByIGdyb3VwIGJ5IGdydXBvMCBvcmRlciBieSAxXHJcbiAgICAgICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwID0gKGF3YWl0IGNsaWVudC5xdWVyeShgc2VsZWN0ICogZnJvbSBub19yZWFfc3VwIG9yZGVyIGJ5IG5vX3JlYV9zdXBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzJyx0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cClcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXBfZ3JvdXBzID0gKGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgIHNlbGVjdCBncnVwb19zdXAsIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWFfc3VwIHIgZ3JvdXAgYnkgZ3J1cG9fc3VwIG9yZGVyIGJ5IDFcclxuICAgICAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXBfZ3JvdXBzMCA9IChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG8wX3N1cCBhcyBncnVwbywganNvbmJfYWdnKHRvX2pzb24oci4qKSkgYXMgY29kaWdvcyBmcm9tIG5vX3JlYV9zdXAgciBncm91cCBieSBncnVwbzBfc3VwIG9yZGVyIGJ5IDFcclxuICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcyBvaycpO1xyXG4gICAgfVxyXG4gICAgLy9zcWxOb3JlYUNhc2UoY2FtcG9OZWNlc2FyaW86c3RyaW5nKXtcclxuICAgIC8vICAgIHZhciBiZT10aGlzO1xyXG4gICAgLy8gICAgcmV0dXJuIGBDQVNFICR7YmUuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWEubWFwKHg9PlxyXG4gICAgLy8gICAgICAgIGAgV0hFTiBub3JlYSAgPSAke2JlLmRiLnF1b3RlTGl0ZXJhbCh4Lm5vX3JlYSl9OjppbnRlZ2VyIFRIRU4gJHtiZS5kYi5xdW90ZUxpdGVyYWwoeFtjYW1wb05lY2VzYXJpb10pfWBcclxuICAgIC8vICAgICkuam9pbignJyl9IFdIRU4gVFJVRSBUSEVOIE5VTEwgRU5EYFxyXG4gICAgLy99ICAgIFxyXG4gICAgZ2V0Q29udGV4dChyZXE6UmVxdWVzdCk6Q29udGV4dHtcclxuICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgIHZhciBmYXRoZXJDb250ZXh0ID0gc3VwZXIuZ2V0Q29udGV4dChyZXEpO1xyXG4gICAgICAgIGlmKGZhdGhlckNvbnRleHQudXNlcil7XHJcbiAgICAgICAgICAgIGlmKGJlLnBlcm1pc29zUm9sW3JlcS51c2VyLnJvbF0/LnN1cGVydXNlcil7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge3N1cGVydXNlcjp0cnVlLCBwdWVkZTogYmUucGVybWlzb3NTdXBlcnVzZXIsIC4uLmZhdGhlckNvbnRleHR9XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtwdWVkZTogYmUucGVybWlzb3NSb2xbcmVxLnVzZXIucm9sXT8ucHVlZGUsIC4uLmZhdGhlckNvbnRleHR9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHtwdWVkZTpiZS5wZXJtaXNvc1BhcmFOYWRpZSwgLi4uZmF0aGVyQ29udGV4dH07XHJcbiAgICB9XHJcbiAgICBnZXRDb250ZXh0Rm9yRHVtcCgpOkNvbnRleHR7XHJcbiAgICAgICAgdmFyIGZhdGhlckNvbnRleHQgPSBzdXBlci5nZXRDb250ZXh0Rm9yRHVtcCgpO1xyXG4gICAgICAgIHJldHVybiB7c3VwZXJ1c2VyOnRydWUsIHB1ZWRlOiB0aGlzLnBlcm1pc29zU3VwZXJ1c2VyLCAuLi5mYXRoZXJDb250ZXh0fTtcclxuICAgIH1cclxuICAgIGdldENsaWVudFNldHVwRm9yU2VuZFRvRnJvbnRFbmQocmVxOlJlcXVlc3Qpe1xyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIC4uLnN1cGVyLmdldENsaWVudFNldHVwRm9yU2VuZFRvRnJvbnRFbmQocmVxKSxcclxuICAgICAgICAgICAgaWRwZXI6IHJlcS51c2VyPy5pZHBlclxyXG4gICAgICAgIH1cclxuICAgIFxyXG4gICAgfVxyXG4gICAgY3JlYXRlUmVzb3VyY2VzRm9yQ2FjaGVKc29uKHBhcmFtZXRlcnMpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIGpzb25SZXN1bHQgPSB7fTtcclxuICAgICAgICBcclxuICAgICAgICBqc29uUmVzdWx0LnZlcnNpb24gPSBBUFBfRE1fVkVSU0lPTjtcclxuICAgICAgICBqc29uUmVzdWx0LmFwcE5hbWUgPSAnZG1lbmN1JztcclxuICAgICAgICBqc29uUmVzdWx0LmNhY2hlPVtcclxuICAgICAgICAgICAgXCJjYW1wb1wiLFxyXG4gICAgICAgICAgICBcIm9mZmxpbmVcIixcclxuICAgICAgICAgICAgXCJsaWIvcmVhY3QucHJvZHVjdGlvbi5taW4uanNcIixcclxuICAgICAgICAgICAgXCJsaWIvcmVhY3QtZG9tLnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL2Nsc3gubWluLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL3JlZHV4Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9yZWFjdC1yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgXCJsaWIvbWVtb2l6ZS1vbmUuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvcXJjb2RlLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL3JlcXVpcmUtYnJvLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL2Nhc3QtZXJyb3IuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvbGlrZS1hci5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9iZXN0LWdsb2JhbHMuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvanNvbjRhbGwuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvanMtdG8taHRtbC5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9yZWR1eC10eXBlZC1yZWR1Y2VyLmpzXCIsXHJcbiAgICAgICAgICAgIFwiYWRhcHQuanNcIixcclxuICAgICAgICAgICAgXCJ1bmxvZ2dlZC5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9qcy15YW1sLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL3hsc3guY29yZS5taW4uanNcIixcclxuICAgICAgICAgICAgXCJsaWIvbGF6eS1zb21lLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL3NxbC10b29scy5qc1wiLFxyXG4gICAgICAgICAgICBcImRpYWxvZy1wcm9taXNlL2RpYWxvZy1wcm9taXNlLmpzXCIsXHJcbiAgICAgICAgICAgIFwibW9tZW50L21pbi9tb21lbnQuanNcIixcclxuICAgICAgICAgICAgXCJwaWthZGF5L3Bpa2FkYXkuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvcG9seWZpbGxzLWJyby5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9iaWcuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvdHlwZS1zdG9yZS5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi90eXBlZC1jb250cm9scy5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9hamF4LWJlc3QtcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICBcIm15LWFqYXguanNcIixcclxuICAgICAgICAgICAgXCJteS1zdGFydC5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL215LXdlYnNxbGRiLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL215LWxvY2FsZGIuanMubWFwXCIsXHJcbiAgICAgICAgICAgIFwibGliL215LXdlYnNxbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICBcImxpYi9teS10aGluZ3MuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvbXktdGFibGVzLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL215LWluZm9ybS1uZXQtc3RhdHVzLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL215LW1lbnUuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvbXktc2tpbi5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9jbGllbnRlLWVuLWNhc3RlbGxhbm8uanNcIixcclxuICAgICAgICAgICAgXCJsaWIvc2VydmljZS13b3JrZXItYWRtaW4uanNcIixcclxuICAgICAgICAgICAgXCJsaWIvcmVkdXgtdHlwZWQtcmVkdWNlci5qc1wiLFxyXG4gICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL29wZXJhdGl2b3MuanNcIixcclxuICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy92YXJjYWwuanNcIixcclxuICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9mb3JtLXN0cnVjdHVyZS5qc1wiLFxyXG4gICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL21ldGEtZW5jLmpzXCIsXHJcbiAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZGF0b3MtZXh0LmpzXCIsXHJcbiAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvY29uc2lzdGVuY2lhcy5qc1wiLFxyXG4gICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3Byb2Nlc2FtaWVudG8uanNcIixcclxuICAgICAgICAgICAgXCJ0aXBvcy5qc1wiLFxyXG4gICAgICAgICAgICBcImJ5cGFzcy1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgIFwicmVkdXgtZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICBcInJlbmRlci1nZW5lcmFsLmpzXCIsXHJcbiAgICAgICAgICAgIFwicmVuZGVyLWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgXCJhYnJpci1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvcm93LXZhbGlkYXRvci5qc1wiLFxyXG4gICAgICAgICAgICBcImNsaWVudC9tZW51LmpzXCIsXHJcbiAgICAgICAgICAgIFwiY2xpZW50L21lbnUuanNcIixcclxuICAgICAgICAgICAgXCJpbWcvbG9nby5wbmdcIixcclxuICAgICAgICAgICAgLy9cImltZy9sb2dvLWRtLnBuZ1wiLFxyXG4gICAgICAgICAgICBcImltZy9sb2dvLTEyOC5wbmdcIixcclxuICAgICAgICAgICAgXCJpbWcvbWFpbi1sb2FkaW5nLmdpZlwiLFxyXG4gICAgICAgICAgICBcImltZy9ib3JyYXItdmFsb3IucG5nXCIsXHJcbiAgICAgICAgICAgIFwiaW1nL2ZvbmRvLXNhbHRlYWRvLWVycm9yLnBuZ1wiLFxyXG4gICAgICAgICAgICBcImltZy9mb25kby1zYWx0ZWFkby5wbmdcIixcclxuICAgICAgICAgICAgXCJpbWcvYmFja2dyb3VuZC10ZXN0LnBuZ1wiLFxyXG4gICAgICAgICAgICBcImNsaWVudC1zZXR1cFwiLFxyXG4gICAgICAgICAgICBcImNzcy9ib290c3RyYXAubWluLmNzc1wiLFxyXG4gICAgICAgICAgICBcImNzcy9mb3JtdWxhcmlvLXJlYWN0LmNzc1wiLFxyXG4gICAgICAgICAgICBcInBpa2FkYXkvcGlrYWRheS5jc3NcIixcclxuICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5jc3NcIixcclxuICAgICAgICAgICAgXCJyZWwtZW5jL2VzdGFkb3MuY3NzXCIsXHJcbiAgICAgICAgICAgIFwiY3NzL215LXRhYmxlcy5jc3NcIixcclxuICAgICAgICAgICAgXCJjc3MvbXktbWVudS5jc3NcIixcclxuICAgICAgICAgICAgXCJjc3MvbXktdGhpbmdzLmNzc1wiLFxyXG4gICAgICAgICAgICBcImNzcy9tZW51LmNzc1wiLFxyXG4gICAgICAgICAgICBcInJlbC1lbmMvbXktdGhpbmdzMi5jc3NcIixcclxuICAgICAgICAgICAgXCJjc3MvZm9ybXVsYXJpby1yZWFjdC5jc3NcIixcclxuICAgICAgICAgICAgXCJjc3MvUm9ib3RvLVJlZ3VsYXIudHRmXCJcclxuICAgICAgICBdXHJcbiAgICAgICAganNvblJlc3VsdC5mYWxsYmFjaz1bXHJcbiAgICAgICAgICAgIHtcInBhdGhcIjpcImxvZ2luXCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn0sXHJcbiAgICAgICAgICAgIHtcInBhdGhcIjpcImxvZ291dFwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9LFxyXG4gICAgICAgICAgICB7XCJwYXRoXCI6XCJsb2dpbiNpPXNpbmNyb25pemFyXCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn0sXHJcbiAgICAgICAgICAgIHtcInBhdGhcIjpcIm1lbnUjaT1zaW5jcm9uaXphclwiLCBcImZhbGxiYWNrXCI6XCJvZmZsaW5lXCJ9XHJcbiAgICAgICAgXTtcclxuICAgICAgICByZXR1cm4ganNvblJlc3VsdFxyXG4gICAgfVxyXG4gICAgZ2V0TWVudShjb250ZXh0OkNvbnRleHQpe1xyXG4gICAgICAgIGxldCBtZW51Ok1lbnVJbmZvQmFzZVtdID0gW107XHJcbiAgICAgICAgaWYodGhpcy5jb25maWcuc2VydmVyLnBvbGljeT09J3dlYicpe1xyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5lbmN1ZXN0YXMucmVsZXZhcil7XHJcbiAgICAgICAgICAgICAgICBpZih0aGlzLmNvbmZpZ1snY2xpZW50LXNldHVwJ10uYW1iaWVudGU9PSdkZW1vJyB8fCB0aGlzLmNvbmZpZ1snY2xpZW50LXNldHVwJ10uYW1iaWVudGU9PSd0ZXN0JyB8fCB0aGlzLmNvbmZpZ1snY2xpZW50LXNldHVwJ10uYW1iaWVudGU9PSdjYXBhJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHttZW51VHlwZTonZGVtbycsIG5hbWU6J2RlbW8nLCBzZWxlY3RlZEJ5RGVmYXVsdDp0cnVlfSlcclxuICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgIG1lbnUucHVzaCh7bWVudVR5cGU6J3BhdGgnLCBuYW1lOidyZWxldmFtaWVudG8nLCBwYXRoOicvY2FtcG8nfSlcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3NpbmNyb25pemFyX2RtJywgbmFtZTonc2luY3Jvbml6YXInfSxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZT8uY2FtcG8/LmVkaXRhcil7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidhYnJpcl9lbmN1ZXN0YScsIG5hbWU6J2FicmlyX2VuY3Vlc3RhJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgLy97bWVudVR5cGU6J2NvbnNpc3Rpcl9lbmN1ZXN0YScsIG5hbWU6J2NvbnNpc3Rpcl9lbmN1ZXN0YSd9LFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonbWVudScsIG5hbWU6J3JlY2VwY2lvbicsIGxhYmVsOidyZWNlcGNpw7NuJyAsbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonbWlzX2FyZWFzJywgdGFibGU6J2FyZWFzJywgZmY6e3JlY2VwY2lvbmlzdGE6Y29udGV4dC51c2VyLmlkcGVyfX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidtaXNfZW5jdWVzdGFkb3Jlcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonYXJlYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RlbV9yZWNlcGNpb24nLCBsYWJlbDonVEVNJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0YXJlYXNfdGVtJywgbGFiZWw6J1RhcmVhc1RFTSd9XHJcbiAgICAgICAgICAgICAgICAgICAgXX0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJjb250ZXh0IHVzZXJcIiwgY29udGV4dC51c2VyKVxyXG4gICAgICAgICAgICBpZihjb250ZXh0LnN1cGVydXNlcil7XHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonY29udHJvbCcsIG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3Jlc3VtZW4nLCB0YWJsZTonY29udHJvbF9yZXN1bWVuJywgc2VsZWN0ZWRCeURlZmF1bHQ6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidkb21pbmlvJywgdGFibGU6J2NvbnRyb2xfY2FtcG9fZG9taW5pbyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonem9uYScgICAsIHRhYmxlOidjb250cm9sX2NhbXBvX3pvbmEnICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonY29tdW5hJyAsIHRhYmxlOidjb250cm9sX2NhbXBvX2NvbXVuYSd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonw6FyZWEnICAgLCB0YWJsZTonY29udHJvbF9jYW1wb19hcmVhJyAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3BhcnRpY2lwYWNpb24nICAgICAgICAsIHRhYmxlOidjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb24nICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LCAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGUuZW5jdWVzdGFzLnByb2Nlc2FyKXtcclxuICAgICAgICAgICAgICAgIG1lbnUgPSBbIC4uLm1lbnUsXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZToncHJvY2VzYXInLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid2YXJpYWJsZXMnICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidjb25zaXN0ZW5jaWFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidpbmNvbnNpc3RlbmNpYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhYmxhX2RhdG9zJyAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2RpY2Npb25hcmlvJyAgLCBsYWJlbDonZGljY2lvbmFyaW9zJyB9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQuc3VwZXJ1c2VyKXtcclxuICAgICAgICAgICAgICAgIG1lbnUgPSBbIC4uLm1lbnUsXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonY29uZmlndXJhcicsIG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZTonbXVlc3RyYScsIGxhYmVsOidtdWVzdHJhJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RlbScsIGxhYmVsOiAnVEVNJ30gLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhcmVhcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGVyc29uYWxfcm9sJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidtZXRhZGF0b3MnLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonb3BlcmF0aXZvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2Zvcm11bGFyaW9zJyAsIHRhYmxlOidjYXNpbGxlcm9zX3ByaW5jaXBhbGVzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGxhbm8nICAgICAgICwgdGFibGU6J2Nhc2lsbGVyb3MnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0aXBvYycgICAgICAgLCBsYWJlbDondGlwb3MgZGUgY2VsZGFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGlwb2NfdGlwb2MnICwgbGFiZWw6J2luY2x1c2lvbmVzIGRlIGNlbGRhcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3BhcmFtZXRyb3MnfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOid1c3VhcmlvcycsIG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3VzdWFyaW9zJywgc2VsZWN0ZWRCeURlZmF1bHQ6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidyb2xlcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGVybWlzb3MnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3JvbGVzX3Blcm1pc29zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sXHJcbiAgICAgICAgICAgICAgICAgICAgLy8ge21lbnVUeXBlOidwcm9jJywgbmFtZTonZ2VuZXJhdGVfdGFibGVkZWYnLCBwcm9jOid0YWJsZWRlZl9nZW5lcmF0ZScsIGxhYmVsOidnZW5lcmFyIHRhYmxhcycgIH0sXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgXHJcbiAgICAgICAgcmV0dXJuIHttZW51fTtcclxuICAgIH1cclxuICAgIHByZXBhcmVHZXRUYWJsZXMoKXtcclxuICAgICAgICB2YXIgYmU9dGhpcztcclxuICAgICAgICBzdXBlci5wcmVwYXJlR2V0VGFibGVzKCk7XHJcbiAgICAgICAgdGhpcy5nZXRUYWJsZURlZmluaXRpb249e1xyXG4gICAgICAgICAgICAuLi50aGlzLmdldFRhYmxlRGVmaW5pdGlvblxyXG4gICAgICAgICAgICAsIHJvbGVzXHJcbiAgICAgICAgICAgICwgdXN1YXJpb3NcclxuICAgICAgICAgICAgLCBwZXJzb25hbFxyXG4gICAgICAgICAgICAsIHJlY2VwY2lvbmlzdGFzXHJcbiAgICAgICAgICAgICwgZW5jdWVzdGFkb3Jlc1xyXG4gICAgICAgICAgICAsIG1pc19lbmN1ZXN0YWRvcmVzXHJcbiAgICAgICAgICAgICwgcmVjdXBlcmFkb3Jlc1xyXG4gICAgICAgICAgICAsIHN1cGVydmlzb3Jlc1xyXG4gICAgICAgICAgICAsIHBlcnNvbmFsX3JvbFxyXG4gICAgICAgICAgICAsIHBlcm1pc29zXHJcbiAgICAgICAgICAgICwgcm9sZXNfcGVybWlzb3NcclxuICAgICAgICAgICAgLCByb2xlc19zdWJvcmRpbmFkb3NcclxuICAgICAgICAgICAgLCBub19yZWFcclxuICAgICAgICAgICAgLCBub19yZWFfc3VwXHJcbiAgICAgICAgICAgICwgc2VtYW5hc1xyXG4gICAgICAgICAgICAsIHRlbTogdGVtXHJcbiAgICAgICAgICAgICwgdGVtX3JlY2VwY2lvblxyXG4gICAgICAgICAgICAsIHBhcmFtZXRyb3NcclxuICAgICAgICAgICAgLCBvcGVyYWNpb25lc1xyXG4gICAgICAgICAgICAsIGNvbXVuYXNcclxuICAgICAgICAgICAgLCBhcmVhc1xyXG4gICAgICAgICAgICAsIHNpbmNyb25pemFjaW9uZXNcclxuICAgICAgICAgICAgLCB0YXJlYXNcclxuICAgICAgICAgICAgLCB0YXJlYXNfdGVtOiB0YXJlYXNfdGVtXHJcbiAgICAgICAgICAgICwgdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICwgbWlzX3RhcmVhc1xyXG4gICAgICAgICAgICAsIG1pc190YXJlYXNfdGVtXHJcbiAgICAgICAgICAgICwgbWlzX3RhcmVhc19hcmVhc1xyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9cclxuICAgICAgICAgICAgLCBjb250cm9sX3Jlc3VtZW5cclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3pvbmE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggem9uYSBzb2xvIGNlbWVudG8nLCBjYW1wb3NDb3J0ZTpbe25hbWU6J3pvbmEnLCB0eXBlTmFtZTondGV4dCd9XSwgZmlsdHJvV2hlcmU6J2RvbWluaW89MycgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgICwgY29udHJvbF9jYW1wb19jb211bmE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggY29tdW5hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOlt7bmFtZTonem9uYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J25yb2NvbXVuYScsIHR5cGVOYW1lOidpbnRlZ2VyJ31dLCBmaWx0cm9XaGVyZTonZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2FyZWE6IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggYXJlYScsIGNhbXBvc0NvcnRlOlt7bmFtZTonem9uYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J25yb2NvbXVuYScsIHR5cGVOYW1lOidpbnRlZ2VyJ30se25hbWU6J2FyZWEnLCB0eXBlTmFtZTonaW50ZWdlcid9LHtuYW1lOidwYXJ0aWNpcGFjaW9uX2EnLCB0eXBlTmFtZTondGV4dCd9LHtuYW1lOidjbGFzZV9hJywgdHlwZU5hbWU6J3RleHQnfV19XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX3BhcnRpY2lwYWNpb246IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggcGFydGljaXBhY2lvbicsIGNhbXBvc0NvcnRlOlt7bmFtZToncGFydGljaXBhY2lvbicsIHR5cGVOYW1lOidiaWdpbnQnfV19XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2RvbWluaW86IGNvbnRleHQ9PmNvbnRyb2xfY2FtcG8oY29udGV4dCwgXHJcbiAgICAgICAgICAgICAgICB7bm9tYnJlOidjb250cm9sX2NhbXBvX2NvbXVuYScsIHRpdGxlOidjb250cm9sIGNhbXBvIHggZG9taW5pbycsIGNhbXBvc0NvcnRlOlt7bmFtZTonZG9taW5pbycsIHR5cGVOYW1lOidpbnRlZ2VyJ31dfVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB2aXZpZW5kYXMsXHJcbiAgICAgICAgICAgIHZpc2l0YXMsXHJcbiAgICAgICAgICAgIGhvZ2FyZXMsICAgICAgXHJcbiAgICAgICAgICAgIHBlcnNvbmFzLCAgICAgXHJcbiAgICAgICAgICAgIHZpc2l0YXNfc3VwLCAgXHJcbiAgICAgICAgICAgIGhvZ2FyZXNfc3VwLCAgXHJcbiAgICAgICAgICAgIHBlcnNvbmFzX3N1cCwgICAgICAgICBcclxuICAgICAgICB9XHJcbiAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ2NvbnNpc3RlbmNpYXMnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLmZvckVhY2goZnVuY3Rpb24oZmllbGQpe1xyXG4gICAgICAgICAgICAgICAgaWYoZmllbGQubmFtZT09J2Vycm9yX2NvbXBpbGFjaW9uJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZmllbGQudmlzaWJsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJyoqKioqKioqKioqKiBRVUlUQVIgRVNUTyBlcnJvcl9jb21waWxhY2lvbiB5YSBlcyB2aXNpYmxlJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLnZpc2libGU9dHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSlcclxuICAgICAgICB9KVxyXG4gICAgICAgIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdpbmNvbnNpc3RlbmNpYXMnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnNwbGljZSgyLDAsXHJcbiAgICAgICAgICAgICAgICB7bmFtZTondml2aWVuZGEnICAgICwgdHlwZU5hbWU6J3RleHQnICAgICAsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgICAgICB7bmFtZTonaG9nYXInICAgICAgICwgdHlwZU5hbWU6J2JpZ2ludCcgICAsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgICAgICB7bmFtZToncGVyc29uYScgICAgICwgdHlwZU5hbWU6J2JpZ2ludCcgICAsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgICAgICB7bmFtZTondmlzaXRhJyAgICAgICwgdHlwZU5hbWU6J2JpZ2ludCcgICAsIGVkaXRhYmxlOiBmYWxzZX0sXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmVkaXRhYmxlPXRhYmxlRGVmLmVkaXRhYmxlIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcy5qdXN0aWZpY2FyO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuZm9yRWFjaChmdW5jdGlvbihmaWVsZCl7XHJcbiAgICAgICAgICAgICAgICBpZihmaWVsZC5uYW1lPT0ncGtfaW50ZWdyYWRhJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudmlzaWJsZT1mYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmKGZpZWxkLm5hbWU9PSdqdXN0aWZpY2FjaW9uJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQuZWRpdGFibGU9Y29udGV4dC5mb3JEdW1wIHx8IGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcy5qdXN0aWZpY2FyO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ29wZXJhdGl2b3MnLGZ1bmN0aW9uKHRhYmxlRGVmLCBjb250ZXh0KXtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnNwbGljZSgyLDAse1xyXG4gICAgICAgICAgICAgICAgbmFtZTonY29uZmlnX3NvcnRlbycsIFxyXG4gICAgICAgICAgICAgICAgdHlwZU5hbWU6J2pzb25iJyxcclxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGFibGVEZWYuZmllbGRzLnNwbGljZSgzLDAse1xyXG4gICAgICAgICAgICAgICAgbmFtZTonZGlzZm9ybV9jZXJyYWRvJywgXHJcbiAgICAgICAgICAgICAgICB0eXBlTmFtZTonYm9vbGVhbicsIFxyXG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBmYWxzZSwgXHJcbiAgICAgICAgICAgICAgICBlZGl0YWJsZTogY29udGV4dC5mb3JEdW1wfHxbJ2FkbWluJywnZGlzX2NvbmNlcHR1YWwnXS5pbmNsdWRlcyhjb250ZXh0LnVzZXIucm9sKX1cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9KVxyXG5cclxuICAgICAgICAvLyBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignY2FzaWxsZXJvcycsZnVuY3Rpb24odGFibGVEZWYsIGNvbnRleHQpe1xyXG4gICAgICAgIC8vICAgICB0YWJsZURlZi5jb25zdHJhaW50cyA9IHRhYmxlRGVmLmNvbnN0cmFpbnRzLmZpbHRlcihjPT5jLmNvbnNOYW1lIT0nY2FzaWxsZXJvcyBzYWx0byBSRUwnKVxyXG4gICAgICAgIC8vIH0pXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgdmFyIEFwcERtRW5jdSA9IGVtZXJnZUFwcERtRW5jdShlbWVyZ2VBcHBQcm9jZXNhbWllbnRvKGVtZXJnZUFwcENvbnNpc3RlbmNpYXMoZW1lcmdlQXBwVmFyQ2FsKGVtZXJnZUFwcERhdG9zRXh0KGVtZXJnZUFwcE9wZXJhdGl2b3MoQXBwQmFja2VuZCkpKSkpKTtcclxuZXhwb3J0IHR5cGUgQXBwQXBwRG1FbmN1VHlwZSA9IEluc3RhbmNlVHlwZTx0eXBlb2YgQXBwRG1FbmN1PjsiXX0=
|
|
649
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwLWRtZW5jdS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvYXBwLWRtZW5jdS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLFlBQVksQ0FBQzs7O0lBR2IsaURBQTBMO0lBQzFMLDJEQUF5RTtJQUV6RSx3Q0FBd0M7SUFFeEMsd0NBQXdDO0lBSXhDLDZCQUE2QjtJQUU3QixrQ0FBa0M7SUFFbEMsMkJBQW1DO0lBRW5DLCtDQUFvRDtJQUNwRCxxREFBdUQ7SUFDdkQsaUVBQTZEO0lBQzdELCtEQUE4RDtJQUM5RCx1RUFBa0U7SUFDbEUsK0RBQTREO0lBQzVELDZEQUEyRDtJQUMzRCw2REFBMkQ7SUFDM0QscURBQXVEO0lBQ3ZELGlFQUE2RDtJQUM3RCx5REFBeUQ7SUFDekQseUVBQWlFO0lBRWpFLGlEQUFxRDtJQUNyRCx5REFBeUQ7SUFDekQsMkNBQWtEO0lBQ2xELCtEQUE0RDtJQUM1RCxtREFBc0Q7SUFDdEQscURBQXVEO0lBQ3ZELDJEQUEwRDtJQUMxRCxtREFBc0Q7SUFDdEQsK0NBQW9EO0lBQ3BELHFFQUErRDtJQUMvRCxpREFBcUQ7SUFDckQseURBQXlEO0lBQ3pELDZEQUEyRDtJQUMzRCx5REFBeUQ7SUFDekQsaUVBQTZEO0lBQzdELHFFQUErRDtJQUMvRCwrREFBNEQ7SUFDNUQsbUVBQThEO0lBQzlELHVEQUF3RDtJQUN4RCxtREFBc0Q7SUFDdEQsbURBQXNEO0lBQ3RELHFEQUF1RDtJQUN2RCwyREFBMEQ7SUFDMUQsMkRBQTBEO0lBQzFELDZEQUEyRDtJQUUzRCxpREFBK0I7SUFDL0IsNkNBQXNDO0lBRXRDLE1BQU0sY0FBYyxHQUFDLFdBQVcsQ0FBQztJQUVqQyxTQUFnQixlQUFlLENBQTBFLElBQU07UUFDN0csT0FBTyxNQUFNLFNBQVUsU0FBUSxJQUFJO1lBQ2pDLFlBQVksR0FBRyxJQUFVO2dCQUNyQixLQUFLLENBQUMsSUFBSSxDQUFDLENB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TUFBQSxPQUFPLENBQUMsS0FBSywwQ0FBRSxTQUFTLENBQUMsVUFBVSxDQUFBLENBQUM7eUJBQ3pFO29CQUNMLENBQUMsQ0FBQyxDQUFBO2dCQUNOLENBQUMsQ0FBQyxDQUFBO2dCQUNGLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxZQUFZLEVBQUMsVUFBUyxRQUFRLEVBQUUsT0FBTztvQkFDOUQsUUFBUSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQzt3QkFDdkIsSUFBSSxFQUFDLGVBQWU7d0JBQ3BCLFFBQVEsRUFBQyxPQUFPO3dCQUNoQixRQUFRLEVBQUUsS0FBSztxQkFDbEIsQ0FBQyxDQUFDO29CQUNILFFBQVEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxDQUFDLEVBQUM7d0JBQ3ZCLElBQUksRUFBQyxpQkFBaUI7d0JBQ3RCLFFBQVEsRUFBQyxTQUFTO3dCQUNsQixZQUFZLEVBQUUsS0FBSzt3QkFDbkIsUUFBUSxFQUFFLE9BQU8sQ0FBQyxPQUFPLElBQUUsQ0FBQyxPQUFPLEVBQUMsZ0JBQWdCLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7cUJBQUMsQ0FDcEYsQ0FBQztnQkFDTixDQUFDLENBQUMsQ0FBQTtnQkFFRix1RUFBdUU7Z0JBQ3ZFLGdHQUFnRztnQkFDaEcsS0FBSztZQUNULENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQW5sQkQsMENBbWxCQztJQUVVLFFBQUEsU0FBUyxHQUFHLGVBQWUsQ0FBQyxJQUFBLHNDQUFzQixFQUFDLElBQUEsc0NBQXNCLEVBQUMsSUFBQSwrQkFBZSxFQUFDLElBQUEsaUNBQWlCLEVBQUMsSUFBQSxtQ0FBbUIsRUFBQywwQkFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XHJcblxyXG5pbXBvcnQgKiBhcyBwcm9jZXNhbWllbnRvIGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7ZW1lcmdlQXBwUHJvY2VzYW1pZW50bywgZW1lcmdlQXBwQ29uc2lzdGVuY2lhcywgZW1lcmdlQXBwVmFyQ2FsLCBlbWVyZ2VBcHBEYXRvc0V4dCwgZW1lcmdlQXBwT3BlcmF0aXZvcywgQXBwQmFja2VuZCwgQ2xpZW50TW9kdWxlRGVmaW5pdGlvbiwgT3B0c0NsaWVudFBhZ2V9IGZyb20gXCJwcm9jZXNhbWllbnRvXCI7XHJcbmltcG9ydCB7Z2V0T3BlcmF0aXZvQWN0dWFsLCBQcm9jZWR1cmVzRG1FbmN1fSBmcm9tIFwiLi9wcm9jZWR1cmVzLWRtZW5jdVwiO1xyXG5cclxuaW1wb3J0ICogYXMgcGcgZnJvbSBcInBnLXByb21pc2Utc3RyaWN0XCI7XHJcbmltcG9ydCB7anNvbn0gZnJvbSBcInBnLXByb21pc2Utc3RyaWN0XCI7XHJcbmltcG9ydCAqIGFzIG1pbmlUb29scyBmcm9tIFwibWluaS10b29sc1wiO1xyXG5pbXBvcnQge0NvbnRleHQsIE1lbnVJbmZvQmFzZSwgUmVxdWVzdCwgUmVzcG9uc2V9IGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5pbXBvcnQgeyBjaGFuZ2luZyB9IGZyb20gXCJiZXN0LWdsb2JhbHNcIjtcclxuXHJcbmltcG9ydCAqIGFzIHlhemwgZnJvbSBcInlhemxcIjtcclxuaW1wb3J0IHsgTmV4dEZ1bmN0aW9uIH0gZnJvbSBcImV4cHJlc3Mtc2VydmUtc3RhdGljLWNvcmVcIjtcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcblxyXG5pbXBvcnQge3Byb21pc2VzIGFzIGZzIH0gZnJvbSBcImZzXCI7XHJcblxyXG5pbXBvcnQgeyByb2xlcyAgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcm9sZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWwgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsXCI7XHJcbmltcG9ydCB7IHJlY2VwY2lvbmlzdGFzICAgICAgfSBmcm9tIFwiLi90YWJsZS1yZWNlcGNpb25pc3Rhc1wiO1xyXG5pbXBvcnQgeyBlbmN1ZXN0YWRvcmVzICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IG1pc19lbmN1ZXN0YWRvcmVzICAgICB9IGZyb20gXCIuL3RhYmxlLW1pc19lbmN1ZXN0YWRvcmVzXCI7XHJcbmltcG9ydCB7IHJlY3VwZXJhZG9yZXMgICAgICAgfSBmcm9tIFwiLi90YWJsZS1yZWN1cGVyYWRvcmVzXCI7XHJcbmltcG9ydCB7IHN1cGVydmlzb3JlcyAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1zdXBlcnZpc29yZXNcIjtcclxuaW1wb3J0IHsgcGVyc29uYWxfcm9sICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXBlcnNvbmFsX3JvbFwiO1xyXG5pbXBvcnQgeyBwZXJtaXNvcyAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtcGVybWlzb3NcIjtcclxuaW1wb3J0IHsgcm9sZXNfcGVybWlzb3MgICAgICB9IGZyb20gXCIuL3RhYmxlLXJvbGVzX3Blcm1pc29zXCI7XHJcbmltcG9ydCB7IHBhcmFtZXRyb3MgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1wYXJhbWV0cm9zXCI7XHJcbmltcG9ydCB7IHJvbGVzX3N1Ym9yZGluYWRvcyAgfSBmcm9tIFwiLi90YWJsZS1yb2xlc19zdWJvcmRpbmFkb3NcIjtcclxuXHJcbmltcG9ydCB7bm9fcmVhICAgICAgICAgICAgICAgfSBmcm9tIFwiLi90YWJsZS1ub19yZWFcIjtcclxuaW1wb3J0IHtub19yZWFfc3VwICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLW5vX3JlYV9zdXBcIjtcclxuaW1wb3J0IHt0ZW0gICAgICAgICAgICAgICAgICB9IGZyb20gXCIuL3RhYmxlLXRlbVwiO1xyXG5pbXBvcnQge3RlbV9yZWNlcGNpb24gICAgICAgIH0gZnJvbSBcIi4vdGFibGUtdGVtX3JlY2VwY2lvblwiO1xyXG5pbXBvcnQge3NlbWFuYXMgICAgICAgICAgICAgIH0gZnJvbSBcIi4vdGFibGUtc2VtYW5hc1wiO1xyXG5pbXBvcnQgeyB1c3VhcmlvcyAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS11c3Vhcmlvcyc7XHJcbmltcG9ydCB7IG9wZXJhY2lvbmVzICAgICAgICAgfSBmcm9tICcuL3RhYmxlLW9wZXJhY2lvbmVzJztcclxuaW1wb3J0IHsgY29tdW5hcyAgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtY29tdW5hcyc7XHJcbmltcG9ydCB7IGFyZWFzICAgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWFyZWFzJztcclxuaW1wb3J0IHsgc2luY3Jvbml6YWNpb25lcyAgICB9IGZyb20gJy4vdGFibGUtc2luY3Jvbml6YWNpb25lcyc7XHJcbmltcG9ydCB7IHRhcmVhcyAgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhcyc7XHJcbmltcG9ydCB7IHRhcmVhc190ZW0gICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXRhcmVhc190ZW0nO1xyXG5pbXBvcnQgeyB0YXJlYXNfYXJlYXMgICAgICAgIH0gZnJvbSAnLi90YWJsZS10YXJlYXNfYXJlYXMnO1xyXG5pbXBvcnQgeyBtaXNfdGFyZWFzICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1taXNfdGFyZWFzJztcclxuaW1wb3J0IHsgbWlzX3RhcmVhc190ZW0gICAgICB9IGZyb20gJy4vdGFibGUtbWlzX3RhcmVhc190ZW0nO1xyXG5pbXBvcnQgeyBtaXNfdGFyZWFzX2FyZWFzICAgIH0gZnJvbSAnLi90YWJsZS1taXNfdGFyZWFzX2FyZWFzJztcclxuaW1wb3J0IHsgY29udHJvbF9jYW1wbyAgICAgICB9IGZyb20gJy4vdGFibGUtY29udHJvbF9jYW1wbyc7XHJcbmltcG9ydCB7IGNvbnRyb2xfcmVzdW1lbiAgICAgfSBmcm9tICcuL3RhYmxlLWNvbnRyb2xfcmVzdW1lbic7XHJcbmltcG9ydCB7IHZpdmllbmRhcyAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXZpdmllbmRhcyc7XHJcbmltcG9ydCB7IHZpc2l0YXMgICAgICAgICAgICAgfSBmcm9tICcuL3RhYmxlLXZpc2l0YXMnO1xyXG5pbXBvcnQgeyBob2dhcmVzICAgICAgICAgICAgIH0gZnJvbSAnLi90YWJsZS1ob2dhcmVzJztcclxuaW1wb3J0IHsgcGVyc29uYXMgICAgICAgICAgICB9IGZyb20gJy4vdGFibGUtcGVyc29uYXMnO1xyXG5pbXBvcnQgeyB2aXNpdGFzX3N1cCAgICAgICAgIH0gZnJvbSAnLi90YWJsZS12aXNpdGFzX3N1cCc7XHJcbmltcG9ydCB7IGhvZ2FyZXNfc3VwICAgICAgICAgfSBmcm9tICcuL3RhYmxlLWhvZ2FyZXNfc3VwJztcclxuaW1wb3J0IHsgcGVyc29uYXNfc3VwICAgICAgICB9IGZyb20gJy4vdGFibGUtcGVyc29uYXNfc3VwJztcclxuXHJcbmV4cG9ydCAqIGZyb20gXCIuL3R5cGVzLWRtZW5jdVwiO1xyXG5pbXBvcnQge2RlZkNvbmZpZ30gZnJvbSBcIi4vZGVmLWNvbmZpZ1wiXHJcblxyXG5jb25zdCBBUFBfRE1fVkVSU0lPTj1cIiMyMi0wNi0yMlwiO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGVtZXJnZUFwcERtRW5jdTxUIGV4dGVuZHMgcHJvY2VzYW1pZW50by5Db25zdHJ1Y3Rvcjxwcm9jZXNhbWllbnRvLkFwcFByb2Nlc2FtaWVudG9UeXBlPj4oQmFzZTpUKXtcclxuICByZXR1cm4gY2xhc3MgQXBwRG1FbmN1IGV4dGVuZHMgQmFzZXtcclxuICAgIGNvbnN0cnVjdG9yKC4uLmFyZ3M6YW55W10peyBcclxuICAgICAgICBzdXBlcihhcmdzKTsgXHJcbiAgICAgICAgdGhpcy5jYWNoZXMudGFibGVDb250ZW50ID0gdGhpcy5jYWNoZXMudGFibGVDb250ZW50IHx8IHt9O1xyXG4gICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWE9W11cclxuICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3Vwcz1bXVxyXG4gICAgICAgIHRoaXMubWV0YUVuY0luY2x1aXJDYXNpbGxlcm9zU2FsdG9SRUwgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgIH1cclxuICAgIGFzeW5jIGdldFByb2NlZHVyZXMoKXtcclxuICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgIHZhciBwcm9jZWRpbWllbnRvQVJlZW1wbGF6YXI9W1wiY2Fzb19ndWFyZGFyXCIsXCJjYXNvX3RyYWVyXCJdO1xyXG4gICAgICAgIHZhciBwYXJlbnRQcm9jID0gYXdhaXQgc3VwZXIuZ2V0UHJvY2VkdXJlcygpO1xyXG4gICAgICAgIHBhcmVudFByb2MgPSBwYXJlbnRQcm9jLmZpbHRlcigocHJvY2VkdXJlOmFueSkgPT4gIXByb2NlZGltaWVudG9BUmVlbXBsYXphci5pbmNsdWRlcyhwcm9jZWR1cmUuYWN0aW9uKSk7XHJcbiAgICAgICAgcGFyZW50UHJvYyA9IHBhcmVudFByb2MubWFwKHByb2NEZWY9PntcclxuICAgICAgICAgICAgaWYocHJvY0RlZi5hY3Rpb24gPT0gJ3RhYmxlX3JlY29yZF9zYXZlJyB8fCBwcm9jRGVmLmFjdGlvbiA9PSAndGFibGVfcmVjb3JkX2RlbGV0ZScpe1xyXG4gICAgICAgICAgICAgICAgdmFyIGNvcmVGdW5jdGlvbkludGVybm8gPSBwcm9jRGVmLmNvcmVGdW5jdGlvbjtcclxuICAgICAgICAgICAgICAgIHByb2NEZWYuY29yZUZ1bmN0aW9uID0gYXN5bmMgZnVuY3Rpb24oY29udGV4dCwgcGFyYW1ldGVycyl7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IGNvcmVGdW5jdGlvbkludGVybm8oY29udGV4dCwgcGFyYW1ldGVycylcclxuICAgICAgICAgICAgICAgICAgICBpZihwYXJhbWV0ZXJzLnRhYmxlID09ICdjYXNpbGxlcm9zJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJlLnRpbWVzdGFtcEVzdHJ1Y3R1cmEgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NlIHRvY8OzIGxhIGVzdHJ1Y3R1cmEnLCBiZS50aW1lc3RhbXBFc3RydWN0dXJhKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJldHVybiBwcm9jRGVmO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcmV0dXJuIHBhcmVudFByb2MuY29uY2F0KFByb2NlZHVyZXNEbUVuY3UpO1xyXG4gICAgfVxyXG4gICAgYXN5bmMgY2hlY2tEYXRhYmFzZVN0cnVjdHVyZShfY2xpZW50OkNsaWVudCl7XHJcbiAgICB9XHJcbiAgICBhZGRTY2hyw7ZkaW5nZXJTZXJ2aWNlcyhtYWluQXBwOnByb2Nlc2FtaWVudG8uRXhwcmVzcywgYmFzZVVybDpzdHJpbmcpe1xyXG4gICAgICAgIGxldCBiZT10aGlzO1xyXG4gICAgICAgIHN1cGVyLmFkZFNjaHLDtmRpbmdlclNlcnZpY2VzKG1haW5BcHAsIGJhc2VVcmwpO1xyXG4gICAgICAgIG1haW5BcHAudXNlKGZ1bmN0aW9uKHJlcTpSZXF1ZXN0LHJlczpSZXNwb25zZSwgbmV4dDpOZXh0RnVuY3Rpb24pe1xyXG4gICAgICAgICAgICBpZihyZXEuc2Vzc2lvbiAmJiAhcmVxLnNlc3Npb24uaW5zdGFsbCl7XHJcbiAgICAgICAgICAgICAgICByZXEuc2Vzc2lvbi5pbnN0YWxsPU1hdGgucmFuZG9tKCkudG9TdHJpbmcoKS5yZXBsYWNlKCcuJywnJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbmV4dCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgbWFpbkFwcC5nZXQoYmFzZVVybCsnL3NhbHZhcicsYXN5bmMgZnVuY3Rpb24ocmVxLHJlcyxfbmV4dCl7XHJcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmUgc8OpIHF1ZSB2b3kgYSByZWNpYmlyIHVzZXJhZ2VudCBwb3IgbG9zIG1pZGRsZXdhcmVzIGRlIEJhY2tlbmQtcGx1c1xyXG4gICAgICAgICAgICB2YXIge3VzZXJhZ2VudH0gPSByZXE7XHJcbiAgICAgICAgICAgIHZhciBodG1sTWFpbj1iZS5tYWluUGFnZSh7dXNlcmFnZW50fSwgZmFsc2UsIHtza2lwTWVudTp0cnVlLCBvZmZsaW5lRmlsZTp0cnVlfSkudG9IdG1sRG9jKCk7XHJcbiAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZVRleHQoaHRtbE1haW4sJ2h0bWwnKShyZXEscmVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsKycvY2FtcG8nLGFzeW5jIGZ1bmN0aW9uKHJlcSxyZXMsX25leHQpe1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlIHPDqSBxdWUgdm95IGEgcmVjaWJpciB1c2VyYWdlbnQgcG9yIGxvcyBtaWRkbGV3YXJlcyBkZSBCYWNrZW5kLXBsdXNcclxuICAgICAgICAgICAgdmFyIHt1c2VyYWdlbnQsIHVzZXJ9ID0gcmVxO1xyXG4gICAgICAgICAgICBpZih1c2VyKXtcclxuICAgICAgICAgICAgICAgIC8qKiBAdHlwZSB7e3R5cGU6J2pzJywgc3JjOnN0cmluZ31bXX0gKi9cclxuICAgICAgICAgICAgICAgIHZhciB3ZWJNYW5pZmVzdFBhdGggPSAnY2FyZ2EtZG0vd2ViLW1hbmlmZXN0LndlYm1hbmlmZXN0JztcclxuICAgICAgICAgICAgICAgIHZhciBodG1sTWFpbj1iZS5tYWluUGFnZSh7dXNlcmFnZW50LCB1c2VyfSwgZmFsc2UsIHtza2lwTWVudTp0cnVlLCB3ZWJNYW5pZmVzdFBhdGgsIG9mZmxpbmVGaWxlOnRydWV9KS50b0h0bWxEb2MoKTtcclxuICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChodG1sTWFpbiwnaHRtbCcpKHJlcSxyZXMpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHJlcy5yZWRpcmVjdChiYXNlVXJsKycvbG9naW4jdz1wYXRoJnBhdGg9L2NhbXBvJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHZhciBjcmVhdGVTZXJ2aWNlV29ya2VyID0gYXN5bmMgZnVuY3Rpb24oKXtcclxuICAgICAgICAgICAgdmFyIHN3ID0gYXdhaXQgZnMucmVhZEZpbGUoJ25vZGVfbW9kdWxlcy9zZXJ2aWNlLXdvcmtlci1hZG1pbi9kaXN0L3NlcnZpY2Utd29ya2VyLXdvLW1hbmlmZXN0LmpzJywgJ3V0ZjgnKTtcclxuICAgICAgICAgICAgdmFyIG1hbmlmZXN0ID0gYmUuY3JlYXRlUmVzb3VyY2VzRm9yQ2FjaGVKc29uKHt9KTtcclxuICAgICAgICAgICAgdmFyIHN3TWFuaWZlc3QgPSBzd1xyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXCInLyp2ZXJzaW9uKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LnZlcnNpb24pKVxyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoXCInLyphcHBOYW1lKi8nXCIsIEpTT04uc3RyaW5naWZ5KG1hbmlmZXN0LmFwcE5hbWUpKVxyXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcW1xccypcXC9cXCp1cmxzVG9DYWNoZVxcKlxcL1xccypcXF0vLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5jYWNoZSkpXHJcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxbXFxzKlxcL1xcKmZhbGxiYWNrc1xcKlxcL1xccypcXF0vLCBKU09OLnN0cmluZ2lmeShtYW5pZmVzdC5mYWxsYmFjayB8fCBbXSkpO1xyXG4gICAgICAgICAgICAgICAgLy8ucmVwbGFjZShcIi8jQ0FDSEUkL1wiLCBcIi8oYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19lc3RydWN0dXJhLmpzKXwoYVxcXFxkK21cXFxcZCtwXFxcXGQrdFxcXFxkK19oZHIuanNvbikvXCIpO1xyXG4gICAgICAgICAgICByZXR1cm4gc3dNYW5pZmVzdFxyXG4gICAgICAgIH1cclxuICAgICAgICBtYWluQXBwLmdldChiYXNlVXJsK2Avc3ctbWFuaWZlc3QuanNgLCBhc3luYyBmdW5jdGlvbihyZXEsIHJlcywgbmV4dCl7XHJcbiAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZVRleHQoYXdhaXQgY3JlYXRlU2VydmljZVdvcmtlcigpLCdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JykocmVxLHJlcyk7XHJcbiAgICAgICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRXJyKHJlcSxyZXMsbmV4dCkoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG1haW5BcHAuZ2V0KGJhc2VVcmwrYC9jYXJnYS1kbS93ZWItbWFuaWZlc3Qud2VibWFuaWZlc3RgLCBhc3luYyBmdW5jdGlvbihyZXEsIHJlcywgbmV4dCl7XHJcbiAgICAgICAgICAgIGNvbnN0IEFQUF9OQU1FID0gKGF3YWl0IGJlLmluVHJhbnNhY3Rpb24obnVsbCwgKGNsaWVudDpwZy5DbGllbnQpPT5cclxuICAgICAgICAgICAgICAgIGNsaWVudC5xdWVyeShcInNlbGVjdCBvcGVyYXRpdm8gZnJvbSBwYXJhbWV0cm9zIHdoZXJlIHVuaWNvX3JlZ2lzdHJvXCIpLmZldGNoVW5pcXVlVmFsdWUoKVxyXG4gICAgICAgICAgICApKS52YWx1ZTtcclxuICAgICAgICAgICAgdmFyIHN1ZmlqbyA9IGJhc2VVcmwuaW5jbHVkZXMoJ3Rlc3QnKT8nX3Rlc3QnOlxyXG4gICAgICAgICAgICAgICAgYmFzZVVybC5pbmNsdWRlcygnY2FwYScpPydfY2FwYSc6Jyc7XHJcbiAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSB7XHJcbiAgICAgICAgICAgICAgICAgIFwibmFtZVwiOiBgJHtBUFBfTkFNRX0gUHJvZ3Jlc3NpdmUgV2ViIEFwcGAsXHJcbiAgICAgICAgICAgICAgICAgIFwic2hvcnRfbmFtZVwiOiBgJHtBUFBfTkFNRX0gUFdBYCxcclxuICAgICAgICAgICAgICAgICAgXCJkZXNjcmlwdGlvblwiOiBgUHJvZ3Jlc3NpdmUgV2ViIEFwcCBmb3IgJHtBUFBfTkFNRX0uYCxcclxuICAgICAgICAgICAgICAgICAgXCJpY29uc1wiOiBbXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTMyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiMzJ4MzJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tNDgke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCI0OHg0OFwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS02NCR7c3VmaWpvfS5wbmdgLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzaXplc1wiOiBcIjY0eDY0XCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgXCJzcmNcIjogYC4uL2ltZy8ke0FQUF9OQU1FfS1sb2dvLWRtLTcyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiNzJ4NzJcIixcclxuICAgICAgICAgICAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlL3BuZ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNyY1wiOiBgLi4vaW1nLyR7QVBQX05BTUV9LWxvZ28tZG0tMTkyJHtzdWZpam99LnBuZ2AsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInNpemVzXCI6IFwiMTkyeDE5MlwiLFxyXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0eXBlXCI6IFwiaW1hZ2UvcG5nXCJcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIFwic3JjXCI6IGAuLi9pbWcvJHtBUFBfTkFNRX0tbG9nby1kbS01MTIke3N1Zmlqb30ucG5nYCxcclxuICAgICAgICAgICAgICAgICAgICAgIFwic2l6ZXNcIjogXCI1MTJ4NTEyXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZS9wbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgICAgXCJzdGFydF91cmxcIjogXCIuLi9jYW1wb1wiLFxyXG4gICAgICAgICAgICAgICAgICBcImRpc3BsYXlcIjogXCJzdGFuZGFsb25lXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwidGhlbWVfY29sb3JcIjogXCIjM0Y1MUI1XCIsXHJcbiAgICAgICAgICAgICAgICAgIFwiYmFja2dyb3VuZF9jb2xvclwiOiBcIiM2ZDYwZWRcIlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlVGV4dChKU09OLnN0cmluZ2lmeShjb250ZW50KSwgJ2FwcGxpY2F0aW9uL2pzb24nKShyZXEscmVzKTtcclxuICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhlcnIpO1xyXG4gICAgICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRXJyKHJlcSwgcmVzLCBuZXh0KShlcnIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBhZGRMb2dnZWRTZXJ2aWNlcygpe1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgc3VwZXIuYWRkTG9nZ2VkU2VydmljZXMoKTtcclxuICAgICAgICBiZS5hcHAuZ2V0KCcvbWFuaWZlc3QubWFuaWZlc3QnLCBhc3luYyBmdW5jdGlvbihyZXE6UmVxdWVzdCwgcmVzOlJlc3BvbnNlLCBuZXh0Ok5leHRGdW5jdGlvbil7XHJcbiAgICAgICAgICAgIG1pbmlUb29scy5zZXJ2ZUZpbGUoJ3NyYy9jbGllbnQvbWFuaWZlc3QubWFuaWZlc3QnLHt9KShyZXEscmVzKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmFwcC5nZXQoJy9maWxlJywgYXN5bmMgZnVuY3Rpb24ocmVxOlJlcXVlc3QscmVzOlJlc3BvbnNlKXtcclxuICAgICAgICAgICAgbGV0IHJlc3VsdCA9IGF3YWl0IGJlLmluVHJhbnNhY3Rpb24ocmVxLCBcclxuICAgICAgICAgICAgICAgIChjbGllbnQ6cGcuQ2xpZW50KT0+XHJcbiAgICAgICAgICAgICAgICBjbGllbnQucXVlcnkoXCJzZWxlY3QgcnV0YSBmcm9tIGFkanVudG9zIHdoZXJlIGlkX2FkanVudG8gPSAkMVwiLFtyZXEucXVlcnkuaWRfYWRqdW50b10pXHJcbiAgICAgICAgICAgICAgICAuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHZhciBwYXRoID0gcmVzdWx0LnZhbHVlO1xyXG4gICAgICAgICAgICBtaW5pVG9vbHMuc2VydmVGaWxlKHBhdGgse30pKHJlcSxyZXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuYXBwLmdldCgnL2ltYWdlbmVzJywgYXN5bmMgZnVuY3Rpb24ocmVxOlJlcXVlc3QscmVzOlJlc3BvbnNlKXtcclxuICAgICAgICAgICAgbWluaVRvb2xzLnNlcnZlRmlsZSgnbG9jYWwtaW1hZ2VzLycrcmVxLnF1ZXJ5LnBkZix7fSkocmVxLHJlcyk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5hcHAuZ2V0KCcvZG93bmxvYWQvYWxsJyxhc3luYyBmdW5jdGlvbihyZXE6UmVxdWVzdCwgcmVzOlJlc3BvbnNlLCBuZXh0OigpPT52b2lkKXtcclxuICAgICAgICAgICAgaWYocmVxLnVzZXI9PW51bGwgfHwgcmVxLnVzZXIucm9sIT0nYWRtaW4nKXtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdubyBlc3TDoSBhdXRvcml6YWRvIGEgYmFqYXJzZSB0b2RvJyxyZXEudXNlcilcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHppcCA9IG5ldyB5YXpsLlppcEZpbGUoKTtcclxuICAgICAgICAgICAgemlwLm91dHB1dFN0cmVhbS5waXBlKHJlcyk7XHJcbiAgICAgICAgICAgIGxldCBiYXNlID0gJ2xvY2FsLWF0dGFjaG1lbnRzJ1xyXG4gICAgICAgICAgICBsZXQgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKGJhc2UpO1xyXG4gICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChmaWxlcy5tYXAoYXN5bmMgZnVuY3Rpb24oZmlsZU5hbWU6c3RyaW5nKXtcclxuICAgICAgICAgICAgICAgIHZhciBwYXRoID0gYmFzZSsnLycrZmlsZU5hbWU7XHJcbiAgICAgICAgICAgICAgICB2YXIgc3RhdCA9IGF3YWl0IGZzLnN0YXQocGF0aCk7XHJcbiAgICAgICAgICAgICAgICBpZihzdGF0LmlzRmlsZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgemlwLmFkZEZpbGUocGF0aCxmaWxlTmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pKTtcclxuICAgICAgICAgICAgemlwLmVuZCgpO1xyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbiAgICBhc3luYyBwb3N0Q29uZmlnKCl7XHJcbiAgICAgICAgYXdhaXQgc3VwZXIucG9zdENvbmZpZygpO1xyXG4gICAgICAgIHZhciBiZT10aGlzO1xyXG4gICAgICAgIGJlLm1ldGFFbmNJbmNsdWlyQ2FzaWxsZXJvc1NhbHRvUkVMID0gZmFsc2U7XHJcbiAgICAgICAgYXdhaXQgYmUuaW5UcmFuc2FjdGlvbihudWxsLCBhc3luYyBmdW5jdGlvbihjbGllbnQ6cGcuQ2xpZW50KXtcclxuICAgICAgICAgICAgdmFyIHFQZXJtaXNvcz1gXHJcbiAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHIucm9sLGpzb25iX2J1aWxkX29iamVjdCgnc3VwZXJ1c2VyJyxyLnN1cGVydXNlciwncHVlZGUnLChcclxuICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2cocnAucGVybWlzbywoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKHJwYS5hY2Npb24scnBhLmhhYmlsaXRhZG8pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSByb2xlc19wZXJtaXNvcyBycGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBycGEucm9sPXJwLnJvbCBBTkQgcnBhLnBlcm1pc289cnAucGVybWlzb1xyXG4gICAgICAgICAgICAgICAgICAgICkpXHJcbiAgICAgICAgICAgICAgICAgICAgRlJPTSByb2xlc19wZXJtaXNvcyBycFxyXG4gICAgICAgICAgICAgICAgICAgIFdIRVJFIHJwLnJvbD1yLnJvbCAjY29uZEhhYmlsaXRhZG8jXHJcbiAgICAgICAgICAgICAgKSkpXHJcbiAgICAgICAgICAgICAgRlJPTSByb2xlcyByXHJcbiAgICAgICAgICAgIGA7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHRzID0gW1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgY2xpZW50LnF1ZXJ5KHFQZXJtaXNvcy5yZXBsYWNlKCcjY29uZEhhYmlsaXRhZG8jJywnJykpLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShxUGVybWlzb3MucmVwbGFjZSgnI2NvbmRIYWJpbGl0YWRvIycsYCBhbmQgcnAuJHtwZy5xdW90ZUlkZW50KCdoYWJpbGl0YWRvJyl9YCkpLmZldGNoVW5pcXVlVmFsdWUoKSxcclxuICAgICAgICAgICAgICAgIGF3YWl0IGNsaWVudC5xdWVyeShgXHJcbiAgICAgICAgICAgICAgICAgICAgU0VMRUNUIGpzb25iX29iamVjdF9hZ2cocGVybWlzbywoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFNFTEVDVCBqc29uYl9vYmplY3RfYWdnKGFjY2lvbix0cnVlKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gcGVybWlzb3MgcGFcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBXSEVSRSBwYS5wZXJtaXNvPXAucGVybWlzb1xyXG4gICAgICAgICAgICAgICAgICAgICAgKSlcclxuICAgICAgICAgICAgICAgICAgICAgIEZST00gcGVybWlzb3MgcFxyXG4gICAgICAgICAgICAgICAgYCkuZmV0Y2hVbmlxdWVWYWx1ZSgpXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICAgIGJlLnBlcm1pc29zUm9sPXJlc3VsdHNbMF0udmFsdWU7XHJcbiAgICAgICAgICAgIGJlLnBlcm1pc29zUm9sU29sb1RydWU9cmVzdWx0c1sxXS52YWx1ZTtcclxuICAgICAgICAgICAgYmUucGVybWlzb3NTdXBlcnVzZXI9cmVzdWx0c1syXS52YWx1ZTtcclxuICAgICAgICAgICAgYmUucGVybWlzb3NQYXJhTmFkaWU9bGlrZUFyKGJlLnBlcm1pc29zU3VwZXJ1c2VyKS5tYXAocD0+bGlrZUFyKHApLm1hcCh2YT0+ZmFsc2UpLnBsYWluKCkpLnBsYWluKClcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5wZXJtaXNvc1JvbFNvbG9UcnVlLHtkZXB0aDo5fSk7XHJcbiAgICAgICAgICAgIC8vY29uc29sZS5kaXIoYmUucGVybWlzb3NTdXBlcnVzZXIse2RlcHRoOjl9KTtcclxuICAgICAgICAgICAgLy9jb25zb2xlLmRpcihiZS5wZXJtaXNvc1BhcmFOYWRpZSx7ZGVwdGg6OX0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGF3YWl0IHRoaXMucmVmcmVzaENhY2hlcygpO1xyXG4gICAgfVxyXG4gICAgY29uZmlnU3RhdGljQ29uZmlnKCl7XHJcbiAgICAgICAgc3VwZXIuY29uZmlnU3RhdGljQ29uZmlnKCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0aWNDb25maWcoZGVmQ29uZmlnKTtcclxuICAgIH1cclxuICAgIGNsaWVudEluY2x1ZGVzKHJlcTpSZXF1ZXN0LCBvcHRzOk9wdHNDbGllbnRQYWdlKTpDbGllbnRNb2R1bGVEZWZpbml0aW9uW10ge1xyXG4gICAgICAgIHZhciBiZSA9IHRoaXM7XHJcbiAgICAgICAgdmFyIHVubG9nZ2VkID0gb3B0cyAmJiBvcHRzLm9mZmxpbmVGaWxlO1xyXG4gICAgICAgIHZhciBtZW51ZWRSZXNvdXJjZXM6Q2xpZW50TW9kdWxlRGVmaW5pdGlvbltdPSB1bmxvZ2dlZD9bXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ3VubG9nZ2VkLmpzJywgcGF0aDogJ2NsaWVudF9tb2R1bGVzJyB9LFxyXG4gICAgICAgIF06W1xyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi9jbGllbnQvY2xpZW50JywgZmlsZTogJ2NsaWVudC5qcycsIHBhdGg6ICdjbGllbnRfbW9kdWxlcycgfSxcclxuICAgICAgICBdO1xyXG4gICAgICAgIGlmKG9wdHMgJiYgb3B0cy5leHRyYUZpbGVzKXtcclxuICAgICAgICAgICAgbWVudWVkUmVzb3VyY2VzID0gbWVudWVkUmVzb3VyY2VzLmNvbmNhdChvcHRzLmV4dHJhRmlsZXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgZXh0ZXJuYWxSZXNvdXJjZXM6Q2xpZW50TW9kdWxlRGVmaW5pdGlvbltdID0gW1xyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0JywgbW9kUGF0aDogJ3VtZCcsIGZpbGVEZXZlbG9wbWVudDoncmVhY3QuZGV2ZWxvcG1lbnQuanMnLCBmaWxlOidyZWFjdC5wcm9kdWN0aW9uLm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWFjdC1kb20nLCBtb2RQYXRoOiAndW1kJywgZmlsZURldmVsb3BtZW50OidyZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnLCBmaWxlOidyZWFjdC1kb20ucHJvZHVjdGlvbi5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnQG1hdGVyaWFsLXVpL2NvcmUnLCBtb2RQYXRoOiAndW1kJywgZmlsZURldmVsb3BtZW50OidtYXRlcmlhbC11aS5kZXZlbG9wbWVudC5qcycsIGZpbGU6J21hdGVyaWFsLXVpLnByb2R1Y3Rpb24ubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2Nsc3gnLCBmaWxlOidjbHN4Lm1pbi5qcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdyZWR1eCcsIG1vZFBhdGg6Jy4uL2Rpc3QnLCBmaWxlRGV2ZWxvcG1lbnQ6J3JlZHV4LmpzJywgZmlsZToncmVkdXgubWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlYWN0LXJlZHV4JywgbW9kUGF0aDonLi4vZGlzdCcsIGZpbGVEZXZlbG9wbWVudDoncmVhY3QtcmVkdXguanMnLCBmaWxlOidyZWFjdC1yZWR1eC5taW4uanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnbWVtb2l6ZS1vbmUnLCAgZmlsZTonbWVtb2l6ZS1vbmUuanMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAncXJjb2RlJywgbW9kUGF0aDogJy4uL2J1aWxkJywgZmlsZTogJ3FyY29kZS5qcyd9LFxyXG4gICAgICAgICAgICAuLi5zdXBlci5jbGllbnRJbmNsdWRlcyhyZXEsIG9wdHMpLmZpbHRlcihtPT5tLmZpbGUhPSdmb3JtdWxhcmlvcy5jc3MnKVxyXG4gICAgICAgICAgICAuZmlsdGVyKG09PiF1bmxvZ2dlZCB8fCB0cnVlXHJcbiAgICAgICAgICAgICAgICAmJiBtLmZpbGUhPSd2YXItY2FsLmpzJ1xyXG4gICAgICAgICAgICAgICAgJiYgbS5maWxlIT0ndmFyLWNhbC5qcycgICAgIFxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3NlcnZpY2Utd29ya2VyLWFkbWluJywgIGZpbGU6J3NlcnZpY2Utd29ya2VyLWFkbWluLmpzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ3JlZHV4LXR5cGVkLXJlZHVjZXInLCBtb2RQYXRoOicuLi9kaXN0JywgZmlsZToncmVkdXgtdHlwZWQtcmVkdWNlci5qcycgfVxyXG4gICAgICAgIF07XHJcbiAgICAgICAgdmFyIHJlc291cmNlczpDbGllbnRNb2R1bGVEZWZpbml0aW9uW10gPSBbXHJcbiAgICAgICAgICAgIC4uLmV4dGVybmFsUmVzb3VyY2VzLFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdhZGFwdC5qcycsIHBhdGg6ICdjbGllbnRfbW9kdWxlcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAndGlwb3MuanMnLCBwYXRoOiAnY2xpZW50X21vZHVsZXMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2J5cGFzcy1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2NsaWVudF9tb2R1bGVzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZWR1eC1mb3JtdWxhcmlvLmpzJywgcGF0aDogJ2NsaWVudF9tb2R1bGVzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdqcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZCcsIGZpbGU6ICdyZW5kZXItZ2VuZXJhbC5qcycsIHBhdGg6ICdjbGllbnRfbW9kdWxlcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAnanMnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQnLCBmaWxlOiAncmVuZGVyLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnY2xpZW50X21vZHVsZXMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2pzJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkJywgZmlsZTogJ2FicmlyLWZvcm11bGFyaW8uanMnLCBwYXRoOiAnY2xpZW50X21vZHVsZXMnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi9jbGllbnQvY2xpZW50L2NzcycsIGZpbGU6ICdtZW51LmNzcycsIHBhdGg6ICdjc3MnIH0sXHJcbiAgICAgICAgICAgIHsgdHlwZTogJ2NzcycsIG1vZHVsZTogJ2RtZW5jdScsIG1vZFBhdGg6ICcuLi8uLi91bmxvZ2dlZC91bmxvZ2dlZC9jc3MnLCBmaWxlOiAnZm9ybXVsYXJpby1yZWFjdC5jc3MnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICB7IHR5cGU6ICdjc3MnLCBtb2R1bGU6ICdkbWVuY3UnLCBtb2RQYXRoOiAnLi4vLi4vdW5sb2dnZWQvdW5sb2dnZWQvY3NzJywgZmlsZTogJ2Jvb3RzdHJhcC5taW4uY3NzJywgcGF0aDogJ2NzcycgfSxcclxuICAgICAgICAgICAgeyB0eXBlOiAndHRmJywgbW9kdWxlOiAnZG1lbmN1JywgbW9kUGF0aDogJy4uLy4uL3VubG9nZ2VkL3VubG9nZ2VkL2NzcycsIGZpbGU6ICdSb2JvdG8tUmVndWxhci50dGYnLCBwYXRoOiAnY3NzJyB9LFxyXG4gICAgICAgICAgICAuLi4gbWVudWVkUmVzb3VyY2VzLFxyXG4gICAgICAgIF1cclxuICAgICAgICByZXR1cm4gcmVzb3VyY2VzXHJcbiAgICAgICAgLy8gLm1hcChtPT4oey4uLm0sIGZpbGU6bS5maWxlRGV2ZWxvcG1lbnR8fG0uZmlsZX0pKTtcclxuICAgIH1cclxuICAgIGFzeW5jIHJlZnJlc2hDYWNoZXMoKXtcclxuICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgPSB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQgfHwge307XHJcbiAgICAgICAgYXdhaXQgdGhpcy5pbkRiQ2xpZW50KG51bGwsIGFzeW5jIChjbGllbnQpPT57XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWEgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBzZWxlY3QgKiBmcm9tIG5vX3JlYSBvcmRlciBieSBub19yZWFgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnY2FjaGVzJyx0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhKVxyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3VwcyA9IChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICAgICAgc2VsZWN0IGdydXBvLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhIHIgZ3JvdXAgYnkgZ3J1cG8gb3JkZXIgYnkgMVxyXG4gICAgICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX2dyb3VwczAgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgICAgIHNlbGVjdCBncnVwbzAgYXMgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWEgciBncm91cCBieSBncnVwbzAgb3JkZXIgYnkgMVxyXG4gICAgICAgICAgICBgKS5mZXRjaEFsbCgpKS5yb3dzO1xyXG4gICAgICAgICAgICB0aGlzLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhX3N1cCA9IChhd2FpdCBjbGllbnQucXVlcnkoYHNlbGVjdCAqIGZyb20gbm9fcmVhX3N1cCBvcmRlciBieSBub19yZWFfc3VwYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2NhY2hlcycsdGhpcy5jYWNoZXMudGFibGVDb250ZW50Lm5vX3JlYV9zdXApXHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwX2dyb3VwcyA9IChhd2FpdCBjbGllbnQucXVlcnkoYFxyXG4gICAgICAgICAgICBzZWxlY3QgZ3J1cG9fc3VwLCBqc29uYl9hZ2codG9fanNvbihyLiopKSBhcyBjb2RpZ29zIGZyb20gbm9fcmVhX3N1cCByIGdyb3VwIGJ5IGdydXBvX3N1cCBvcmRlciBieSAxXHJcbiAgICAgICAgICAgIGApLmZldGNoQWxsKCkpLnJvd3M7XHJcbiAgICAgICAgICAgIHRoaXMuY2FjaGVzLnRhYmxlQ29udGVudC5ub19yZWFfc3VwX2dyb3VwczAgPSAoYXdhaXQgY2xpZW50LnF1ZXJ5KGBcclxuICAgICAgICAgICAgc2VsZWN0IGdydXBvMF9zdXAgYXMgZ3J1cG8sIGpzb25iX2FnZyh0b19qc29uKHIuKikpIGFzIGNvZGlnb3MgZnJvbSBub19yZWFfc3VwIHIgZ3JvdXAgYnkgZ3J1cG8wX3N1cCBvcmRlciBieSAxXHJcbiAgICAgICAgYCkuZmV0Y2hBbGwoKSkucm93cztcclxuICAgICAgICB9KVxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdjYWNoZXMgb2snKTtcclxuICAgIH1cclxuICAgIC8vc3FsTm9yZWFDYXNlKGNhbXBvTmVjZXNhcmlvOnN0cmluZyl7XHJcbiAgICAvLyAgICB2YXIgYmU9dGhpcztcclxuICAgIC8vICAgIHJldHVybiBgQ0FTRSAke2JlLmNhY2hlcy50YWJsZUNvbnRlbnQubm9fcmVhLm1hcCh4PT5cclxuICAgIC8vICAgICAgICBgIFdIRU4gbm9yZWEgID0gJHtiZS5kYi5xdW90ZUxpdGVyYWwoeC5ub19yZWEpfTo6aW50ZWdlciBUSEVOICR7YmUuZGIucXVvdGVMaXRlcmFsKHhbY2FtcG9OZWNlc2FyaW9dKX1gXHJcbiAgICAvLyAgICApLmpvaW4oJycpfSBXSEVOIFRSVUUgVEhFTiBOVUxMIEVORGBcclxuICAgIC8vfSAgICBcclxuICAgIGdldENvbnRleHQocmVxOlJlcXVlc3QpOkNvbnRleHR7XHJcbiAgICAgICAgdmFyIGJlID0gdGhpcztcclxuICAgICAgICB2YXIgZmF0aGVyQ29udGV4dCA9IHN1cGVyLmdldENvbnRleHQocmVxKTtcclxuICAgICAgICBpZihmYXRoZXJDb250ZXh0LnVzZXIpe1xyXG4gICAgICAgICAgICBpZihiZS5wZXJtaXNvc1JvbFtyZXEudXNlci5yb2xdPy5zdXBlcnVzZXIpe1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtzdXBlcnVzZXI6dHJ1ZSwgcHVlZGU6IGJlLnBlcm1pc29zU3VwZXJ1c2VyLCAuLi5mYXRoZXJDb250ZXh0fVxyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7cHVlZGU6IGJlLnBlcm1pc29zUm9sW3JlcS51c2VyLnJvbF0/LnB1ZWRlLCAuLi5mYXRoZXJDb250ZXh0fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7cHVlZGU6YmUucGVybWlzb3NQYXJhTmFkaWUsIC4uLmZhdGhlckNvbnRleHR9O1xyXG4gICAgfVxyXG4gICAgZ2V0Q29udGV4dEZvckR1bXAoKTpDb250ZXh0e1xyXG4gICAgICAgIHZhciBmYXRoZXJDb250ZXh0ID0gc3VwZXIuZ2V0Q29udGV4dEZvckR1bXAoKTtcclxuICAgICAgICByZXR1cm4ge3N1cGVydXNlcjp0cnVlLCBwdWVkZTogdGhpcy5wZXJtaXNvc1N1cGVydXNlciwgLi4uZmF0aGVyQ29udGV4dH07XHJcbiAgICB9XHJcbiAgICBnZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcTpSZXF1ZXN0KXtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAuLi5zdXBlci5nZXRDbGllbnRTZXR1cEZvclNlbmRUb0Zyb250RW5kKHJlcSksXHJcbiAgICAgICAgICAgIGlkcGVyOiByZXEudXNlcj8uaWRwZXJcclxuICAgICAgICB9XHJcbiAgICBcclxuICAgIH1cclxuICAgIGNyZWF0ZVJlc291cmNlc0ZvckNhY2hlSnNvbihwYXJhbWV0ZXJzKXtcclxuICAgICAgICB2YXIgYmUgPSB0aGlzO1xyXG4gICAgICAgIHZhciBqc29uUmVzdWx0ID0ge307XHJcbiAgICAgICAgXHJcbiAgICAgICAganNvblJlc3VsdC52ZXJzaW9uID0gQVBQX0RNX1ZFUlNJT047XHJcbiAgICAgICAganNvblJlc3VsdC5hcHBOYW1lID0gJ2RtZW5jdSc7XHJcbiAgICAgICAganNvblJlc3VsdC5jYWNoZT1bXHJcbiAgICAgICAgICAgIFwiY2FtcG9cIixcclxuICAgICAgICAgICAgXCJvZmZsaW5lXCIsXHJcbiAgICAgICAgICAgIFwibGliL3JlYWN0LnByb2R1Y3Rpb24ubWluLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL3JlYWN0LWRvbS5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9tYXRlcmlhbC11aS5wcm9kdWN0aW9uLm1pbi5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9jbHN4Lm1pbi5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9yZWR1eC5taW4uanNcIixcclxuICAgICAgICAgICAgXCJsaWIvcmVhY3QtcmVkdXgubWluLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL21lbW9pemUtb25lLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL3FyY29kZS5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9yZXF1aXJlLWJyby5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9jYXN0LWVycm9yLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL2xpa2UtYXIuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvYmVzdC1nbG9iYWxzLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL2pzb240YWxsLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL2pzLXRvLWh0bWwuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvcmVkdXgtdHlwZWQtcmVkdWNlci5qc1wiLFxyXG4gICAgICAgICAgICBcImFkYXB0LmpzXCIsXHJcbiAgICAgICAgICAgIFwidW5sb2dnZWQuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvanMteWFtbC5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi94bHN4LmNvcmUubWluLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL2xhenktc29tZS5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9zcWwtdG9vbHMuanNcIixcclxuICAgICAgICAgICAgXCJkaWFsb2ctcHJvbWlzZS9kaWFsb2ctcHJvbWlzZS5qc1wiLFxyXG4gICAgICAgICAgICBcIm1vbWVudC9taW4vbW9tZW50LmpzXCIsXHJcbiAgICAgICAgICAgIFwicGlrYWRheS9waWthZGF5LmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL3BvbHlmaWxscy1icm8uanNcIixcclxuICAgICAgICAgICAgXCJsaWIvYmlnLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL3R5cGUtc3RvcmUuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvdHlwZWQtY29udHJvbHMuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvYWpheC1iZXN0LXByb21pc2UuanNcIixcclxuICAgICAgICAgICAgXCJteS1hamF4LmpzXCIsXHJcbiAgICAgICAgICAgIFwibXktc3RhcnQuanNcIixcclxuICAgICAgICAgICAgXCJsaWIvbXktbG9jYWxkYi5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9teS13ZWJzcWxkYi5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9teS1sb2NhbGRiLmpzLm1hcFwiLFxyXG4gICAgICAgICAgICBcImxpYi9teS13ZWJzcWxkYi5qcy5tYXBcIixcclxuICAgICAgICAgICAgXCJsaWIvbXktdGhpbmdzLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL215LXRhYmxlcy5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9teS1pbmZvcm0tbmV0LXN0YXR1cy5qc1wiLFxyXG4gICAgICAgICAgICBcImxpYi9teS1tZW51LmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL215LXNraW4uanNcIixcclxuICAgICAgICAgICAgXCJsaWIvY2xpZW50ZS1lbi1jYXN0ZWxsYW5vLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL3NlcnZpY2Utd29ya2VyLWFkbWluLmpzXCIsXHJcbiAgICAgICAgICAgIFwibGliL3JlZHV4LXR5cGVkLXJlZHVjZXIuanNcIixcclxuICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9vcGVyYXRpdm9zLmpzXCIsXHJcbiAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvdmFyY2FsLmpzXCIsXHJcbiAgICAgICAgICAgIFwiY2xpZW50X21vZHVsZXMvZm9ybS1zdHJ1Y3R1cmUuanNcIixcclxuICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9tZXRhLWVuYy5qc1wiLFxyXG4gICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2RhdG9zLWV4dC5qc1wiLFxyXG4gICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL2NvbnNpc3RlbmNpYXMuanNcIixcclxuICAgICAgICAgICAgXCJjbGllbnRfbW9kdWxlcy9wcm9jZXNhbWllbnRvLmpzXCIsXHJcbiAgICAgICAgICAgIFwidGlwb3MuanNcIixcclxuICAgICAgICAgICAgXCJieXBhc3MtZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICBcInJlZHV4LWZvcm11bGFyaW8uanNcIixcclxuICAgICAgICAgICAgXCJyZW5kZXItZ2VuZXJhbC5qc1wiLFxyXG4gICAgICAgICAgICBcInJlbmRlci1mb3JtdWxhcmlvLmpzXCIsXHJcbiAgICAgICAgICAgIFwiYWJyaXItZm9ybXVsYXJpby5qc1wiLFxyXG4gICAgICAgICAgICBcImNsaWVudF9tb2R1bGVzL3Jvdy12YWxpZGF0b3IuanNcIixcclxuICAgICAgICAgICAgXCJjbGllbnQvbWVudS5qc1wiLFxyXG4gICAgICAgICAgICBcImltZy9sb2dvLnBuZ1wiLFxyXG4gICAgICAgICAgICAvL1wiaW1nL2xvZ28tZG0ucG5nXCIsXHJcbiAgICAgICAgICAgIFwiaW1nL2xvZ28tMTI4LnBuZ1wiLFxyXG4gICAgICAgICAgICBcImltZy9tYWluLWxvYWRpbmcuZ2lmXCIsXHJcbiAgICAgICAgICAgIFwiaW1nL2JvcnJhci12YWxvci5wbmdcIixcclxuICAgICAgICAgICAgXCJpbWcvZm9uZG8tc2FsdGVhZG8tZXJyb3IucG5nXCIsXHJcbiAgICAgICAgICAgIFwiaW1nL2ZvbmRvLXNhbHRlYWRvLnBuZ1wiLFxyXG4gICAgICAgICAgICBcImltZy9iYWNrZ3JvdW5kLXRlc3QucG5nXCIsXHJcbiAgICAgICAgICAgIFwiY2xpZW50LXNldHVwXCIsXHJcbiAgICAgICAgICAgIFwiY3NzL2Jvb3RzdHJhcC5taW4uY3NzXCIsXHJcbiAgICAgICAgICAgIFwiY3NzL2Zvcm11bGFyaW8tcmVhY3QuY3NzXCIsXHJcbiAgICAgICAgICAgIFwicGlrYWRheS9waWthZGF5LmNzc1wiLFxyXG4gICAgICAgICAgICBcImRpYWxvZy1wcm9taXNlL2RpYWxvZy1wcm9taXNlLmNzc1wiLFxyXG4gICAgICAgICAgICBcInJlbC1lbmMvZXN0YWRvcy5jc3NcIixcclxuICAgICAgICAgICAgXCJjc3MvbXktdGFibGVzLmNzc1wiLFxyXG4gICAgICAgICAgICBcImNzcy9teS1tZW51LmNzc1wiLFxyXG4gICAgICAgICAgICBcImNzcy9teS10aGluZ3MuY3NzXCIsXHJcbiAgICAgICAgICAgIFwiY3NzL21lbnUuY3NzXCIsXHJcbiAgICAgICAgICAgIFwicmVsLWVuYy9teS10aGluZ3MyLmNzc1wiLFxyXG4gICAgICAgICAgICBcImNzcy9mb3JtdWxhcmlvLXJlYWN0LmNzc1wiLFxyXG4gICAgICAgICAgICBcImNzcy9Sb2JvdG8tUmVndWxhci50dGZcIlxyXG4gICAgICAgIF1cclxuICAgICAgICBqc29uUmVzdWx0LmZhbGxiYWNrPVtcclxuICAgICAgICAgICAge1wicGF0aFwiOlwibG9naW5cIiwgXCJmYWxsYmFja1wiOlwib2ZmbGluZVwifSxcclxuICAgICAgICAgICAge1wicGF0aFwiOlwibG9nb3V0XCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn0sXHJcbiAgICAgICAgICAgIHtcInBhdGhcIjpcImxvZ2luI2k9c2luY3Jvbml6YXJcIiwgXCJmYWxsYmFja1wiOlwib2ZmbGluZVwifSxcclxuICAgICAgICAgICAge1wicGF0aFwiOlwibWVudSNpPXNpbmNyb25pemFyXCIsIFwiZmFsbGJhY2tcIjpcIm9mZmxpbmVcIn1cclxuICAgICAgICBdO1xyXG4gICAgICAgIHJldHVybiBqc29uUmVzdWx0XHJcbiAgICB9XHJcbiAgICBnZXRNZW51KGNvbnRleHQ6Q29udGV4dCl7XHJcbiAgICAgICAgbGV0IG1lbnU6TWVudUluZm9CYXNlW10gPSBbXTtcclxuICAgICAgICBpZih0aGlzLmNvbmZpZy5zZXJ2ZXIucG9saWN5PT0nd2ViJyl7XHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQucHVlZGU/LmVuY3Vlc3Rhcy5yZWxldmFyKXtcclxuICAgICAgICAgICAgICAgIGlmKHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J2RlbW8nIHx8IHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J3Rlc3QnIHx8IHRoaXMuY29uZmlnWydjbGllbnQtc2V0dXAnXS5hbWJpZW50ZT09J2NhcGEnKXtcclxuICAgICAgICAgICAgICAgICAgICBtZW51LnB1c2goe21lbnVUeXBlOidkZW1vJywgbmFtZTonZGVtbycsIHNlbGVjdGVkQnlEZWZhdWx0OnRydWV9KVxyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgbWVudS5wdXNoKHttZW51VHlwZToncGF0aCcsIG5hbWU6J3JlbGV2YW1pZW50bycsIHBhdGg6Jy9jYW1wbyd9KVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbWVudS5wdXNoKFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonc2luY3Jvbml6YXJfZG0nLCBuYW1lOidzaW5jcm9uaXphcid9LFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBpZihjb250ZXh0LnB1ZWRlPy5jYW1wbz8uZWRpdGFyKXtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J2FicmlyX2VuY3Vlc3RhJywgbmFtZTonYWJyaXJfZW5jdWVzdGEnfSxcclxuICAgICAgICAgICAgICAgICAgICAvL3ttZW51VHlwZTonY29uc2lzdGlyX2VuY3Vlc3RhJywgbmFtZTonY29uc2lzdGlyX2VuY3Vlc3RhJ30sXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBtZW51LnB1c2goXHJcbiAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOidtZW51JywgbmFtZToncmVjZXBjaW9uJywgbGFiZWw6J3JlY2VwY2nDs24nICxtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidtaXNfYXJlYXMnLCB0YWJsZTonYXJlYXMnLCBmZjp7cmVjZXBjaW9uaXN0YTpjb250ZXh0LnVzZXIuaWRwZXJ9fSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J21pc19lbmN1ZXN0YWRvcmVzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidhcmVhcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGVtX3JlY2VwY2lvbicsIGxhYmVsOidURU0nfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RhcmVhc190ZW0nLCBsYWJlbDonVGFyZWFzVEVNJ31cclxuICAgICAgICAgICAgICAgICAgICBdfSwgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImNvbnRleHQgdXNlclwiLCBjb250ZXh0LnVzZXIpXHJcbiAgICAgICAgICAgIGlmKGNvbnRleHQuc3VwZXJ1c2VyKXtcclxuICAgICAgICAgICAgICAgIG1lbnUucHVzaChcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidjb250cm9sJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncmVzdW1lbicsIHRhYmxlOidjb250cm9sX3Jlc3VtZW4nLCBzZWxlY3RlZEJ5RGVmYXVsdDp0cnVlfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2RvbWluaW8nLCB0YWJsZTonY29udHJvbF9jYW1wb19kb21pbmlvJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid6b25hJyAgICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fem9uYScgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidjb211bmEnICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOifDoXJlYScgICAsIHRhYmxlOidjb250cm9sX2NhbXBvX2FyZWEnICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGFydGljaXBhY2lvbicgICAgICAgICwgdGFibGU6J2NvbnRyb2xfY2FtcG9fcGFydGljaXBhY2lvbicgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5wdWVkZS5lbmN1ZXN0YXMucHJvY2VzYXIpe1xyXG4gICAgICAgICAgICAgICAgbWVudSA9IFsgLi4ubWVudSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidwcm9jZXNhcicsIG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3ZhcmlhYmxlcycgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2NvbnNpc3RlbmNpYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J2luY29uc2lzdGVuY2lhcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGFibGFfZGF0b3MnICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZGljY2lvbmFyaW8nICAsIGxhYmVsOidkaWNjaW9uYXJpb3MnIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgXX0sXHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoY29udGV4dC5zdXBlcnVzZXIpe1xyXG4gICAgICAgICAgICAgICAgbWVudSA9IFsgLi4ubWVudSxcclxuICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidjb25maWd1cmFyJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J21lbnUnLCBuYW1lOidtdWVzdHJhJywgbGFiZWw6J211ZXN0cmEnLCBtZW51Q29udGVudDpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGVtJywgbGFiZWw6ICdURU0nfSAsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondGFyZWFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIHttZW51VHlwZTondGFibGUnLCBuYW1lOidwZXJzb25hbF9yb2wnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonbWVudScsIG5hbWU6J21ldGFkYXRvcycsIG1lbnVDb250ZW50OltcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidvcGVyYXRpdm9zJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTonZm9ybXVsYXJpb3MnICwgdGFibGU6J2Nhc2lsbGVyb3NfcHJpbmNpcGFsZXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidwbGFubycgICAgICAgLCB0YWJsZTonY2FzaWxsZXJvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3RpcG9jJyAgICAgICAsIGxhYmVsOid0aXBvcyBkZSBjZWxkYXMnfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOid0aXBvY190aXBvYycgLCBsYWJlbDonaW5jbHVzaW9uZXMgZGUgY2VsZGFzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncGFyYW1ldHJvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgIF19LFxyXG4gICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTonbWVudScsIG5hbWU6J3VzdWFyaW9zJywgbWVudUNvbnRlbnQ6W1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZTondXN1YXJpb3MnLCBzZWxlY3RlZEJ5RGVmYXVsdDp0cnVlfSxcclxuICAgICAgICAgICAgICAgICAgICAgICAge21lbnVUeXBlOid0YWJsZScsIG5hbWU6J3JvbGVzJ30sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHttZW51VHlwZTondGFibGUnLCBuYW1lOidwZXJtaXNvcyd9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB7bWVudVR5cGU6J3RhYmxlJywgbmFtZToncm9sZXNfcGVybWlzb3MnfSxcclxuICAgICAgICAgICAgICAgICAgICBdfSxcclxuICAgICAgICAgICAgICAgICAgICAvLyB7bWVudVR5cGU6J3Byb2MnLCBuYW1lOidnZW5lcmF0ZV90YWJsZWRlZicsIHByb2M6J3RhYmxlZGVmX2dlbmVyYXRlJywgbGFiZWw6J2dlbmVyYXIgdGFibGFzJyAgfSxcclxuICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBcclxuICAgICAgICBcclxuICAgICAgICByZXR1cm4ge21lbnV9O1xyXG4gICAgfVxyXG4gICAgcHJlcGFyZUdldFRhYmxlcygpe1xyXG4gICAgICAgIHZhciBiZT10aGlzO1xyXG4gICAgICAgIHN1cGVyLnByZXBhcmVHZXRUYWJsZXMoKTtcclxuICAgICAgICB0aGlzLmdldFRhYmxlRGVmaW5pdGlvbj17XHJcbiAgICAgICAgICAgIC4uLnRoaXMuZ2V0VGFibGVEZWZpbml0aW9uXHJcbiAgICAgICAgICAgICwgcm9sZXNcclxuICAgICAgICAgICAgLCB1c3Vhcmlvc1xyXG4gICAgICAgICAgICAsIHBlcnNvbmFsXHJcbiAgICAgICAgICAgICwgcmVjZXBjaW9uaXN0YXNcclxuICAgICAgICAgICAgLCBlbmN1ZXN0YWRvcmVzXHJcbiAgICAgICAgICAgICwgbWlzX2VuY3Vlc3RhZG9yZXNcclxuICAgICAgICAgICAgLCByZWN1cGVyYWRvcmVzXHJcbiAgICAgICAgICAgICwgc3VwZXJ2aXNvcmVzXHJcbiAgICAgICAgICAgICwgcGVyc29uYWxfcm9sXHJcbiAgICAgICAgICAgICwgcGVybWlzb3NcclxuICAgICAgICAgICAgLCByb2xlc19wZXJtaXNvc1xyXG4gICAgICAgICAgICAsIHJvbGVzX3N1Ym9yZGluYWRvc1xyXG4gICAgICAgICAgICAsIG5vX3JlYVxyXG4gICAgICAgICAgICAsIG5vX3JlYV9zdXBcclxuICAgICAgICAgICAgLCBzZW1hbmFzXHJcbiAgICAgICAgICAgICwgdGVtOiB0ZW1cclxuICAgICAgICAgICAgLCB0ZW1fcmVjZXBjaW9uXHJcbiAgICAgICAgICAgICwgcGFyYW1ldHJvc1xyXG4gICAgICAgICAgICAsIG9wZXJhY2lvbmVzXHJcbiAgICAgICAgICAgICwgY29tdW5hc1xyXG4gICAgICAgICAgICAsIGFyZWFzXHJcbiAgICAgICAgICAgICwgc2luY3Jvbml6YWNpb25lc1xyXG4gICAgICAgICAgICAsIHRhcmVhc1xyXG4gICAgICAgICAgICAsIHRhcmVhc190ZW06IHRhcmVhc190ZW1cclxuICAgICAgICAgICAgLCB0YXJlYXNfYXJlYXNcclxuICAgICAgICAgICAgLCBtaXNfdGFyZWFzXHJcbiAgICAgICAgICAgICwgbWlzX3RhcmVhc190ZW1cclxuICAgICAgICAgICAgLCBtaXNfdGFyZWFzX2FyZWFzXHJcbiAgICAgICAgICAgICwgY29udHJvbF9jYW1wb1xyXG4gICAgICAgICAgICAsIGNvbnRyb2xfcmVzdW1lblxyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fem9uYTogY29udGV4dD0+Y29udHJvbF9jYW1wbyhjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgIHtub21icmU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6J2NvbnRyb2wgY2FtcG8geCB6b25hIHNvbG8gY2VtZW50bycsIGNhbXBvc0NvcnRlOlt7bmFtZTonem9uYScsIHR5cGVOYW1lOid0ZXh0J31dLCBmaWx0cm9XaGVyZTonZG9taW5pbz0zJyB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgLCBjb250cm9sX2NhbXBvX2NvbXVuYTogY29udGV4dD0+Y29udHJvbF9jYW1wbyhjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgIHtub21icmU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6J2NvbnRyb2wgY2FtcG8geCBjb211bmEgc29sbyBjZW1lbnRvJywgY2FtcG9zQ29ydGU6W3tuYW1lOid6b25hJywgdHlwZU5hbWU6J3RleHQnfSx7bmFtZTonbnJvY29tdW5hJywgdHlwZU5hbWU6J2ludGVnZXInfV0sIGZpbHRyb1doZXJlOidkb21pbmlvPTMnIH1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fYXJlYTogY29udGV4dD0+Y29udHJvbF9jYW1wbyhjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgIHtub21icmU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6J2NvbnRyb2wgY2FtcG8geCBhcmVhJywgY2FtcG9zQ29ydGU6W3tuYW1lOid6b25hJywgdHlwZU5hbWU6J3RleHQnfSx7bmFtZTonbnJvY29tdW5hJywgdHlwZU5hbWU6J2ludGVnZXInfSx7bmFtZTonYXJlYScsIHR5cGVOYW1lOidpbnRlZ2VyJ30se25hbWU6J3BhcnRpY2lwYWNpb25fYScsIHR5cGVOYW1lOid0ZXh0J30se25hbWU6J2NsYXNlX2EnLCB0eXBlTmFtZTondGV4dCd9XX1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fcGFydGljaXBhY2lvbjogY29udGV4dD0+Y29udHJvbF9jYW1wbyhjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgIHtub21icmU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6J2NvbnRyb2wgY2FtcG8geCBwYXJ0aWNpcGFjaW9uJywgY2FtcG9zQ29ydGU6W3tuYW1lOidwYXJ0aWNpcGFjaW9uJywgdHlwZU5hbWU6J2JpZ2ludCd9XX1cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAsIGNvbnRyb2xfY2FtcG9fZG9taW5pbzogY29udGV4dD0+Y29udHJvbF9jYW1wbyhjb250ZXh0LCBcclxuICAgICAgICAgICAgICAgIHtub21icmU6J2NvbnRyb2xfY2FtcG9fY29tdW5hJywgdGl0bGU6J2NvbnRyb2wgY2FtcG8geCBkb21pbmlvJywgY2FtcG9zQ29ydGU6W3tuYW1lOidkb21pbmlvJywgdHlwZU5hbWU6J2ludGVnZXInfV19XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgIHZpdmllbmRhcyxcclxuICAgICAgICAgICAgdmlzaXRhcyxcclxuICAgICAgICAgICAgaG9nYXJlcywgICAgICBcclxuICAgICAgICAgICAgcGVyc29uYXMsICAgICBcclxuICAgICAgICAgICAgdmlzaXRhc19zdXAsICBcclxuICAgICAgICAgICAgaG9nYXJlc19zdXAsICBcclxuICAgICAgICAgICAgcGVyc29uYXNfc3VwLCAgICAgICAgIFxyXG4gICAgICAgIH1cclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignY29uc2lzdGVuY2lhcycsZnVuY3Rpb24odGFibGVEZWYsIGNvbnRleHQpe1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuZm9yRWFjaChmdW5jdGlvbihmaWVsZCl7XHJcbiAgICAgICAgICAgICAgICBpZihmaWVsZC5uYW1lPT0nZXJyb3JfY29tcGlsYWNpb24nKXtcclxuICAgICAgICAgICAgICAgICAgICBpZihmaWVsZC52aXNpYmxlKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignKioqKioqKioqKioqIFFVSVRBUiBFU1RPIGVycm9yX2NvbXBpbGFjaW9uIHlhIGVzIHZpc2libGUnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgZmllbGQudmlzaWJsZT10cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgYmUuYXBwZW5kVG9UYWJsZURlZmluaXRpb24oJ2luY29uc2lzdGVuY2lhcycsZnVuY3Rpb24odGFibGVEZWYsIGNvbnRleHQpe1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDIsMCxcclxuICAgICAgICAgICAgICAgIHtuYW1lOid2aXZpZW5kYScgICAgLCB0eXBlTmFtZTondGV4dCcgICAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgICAgIHtuYW1lOidob2dhcicgICAgICAgLCB0eXBlTmFtZTonYmlnaW50JyAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgICAgIHtuYW1lOidwZXJzb25hJyAgICAgLCB0eXBlTmFtZTonYmlnaW50JyAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgICAgIHtuYW1lOid2aXNpdGEnICAgICAgLCB0eXBlTmFtZTonYmlnaW50JyAgICwgZWRpdGFibGU6IGZhbHNlfSxcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGFibGVEZWYuZWRpdGFibGU9dGFibGVEZWYuZWRpdGFibGUgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzLmp1c3RpZmljYXI7XHJcbiAgICAgICAgICAgIHRhYmxlRGVmLmZpZWxkcy5mb3JFYWNoKGZ1bmN0aW9uKGZpZWxkKXtcclxuICAgICAgICAgICAgICAgIGlmKGZpZWxkLm5hbWU9PSdwa19pbnRlZ3JhZGEnKXtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZC52aXNpYmxlPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYoZmllbGQubmFtZT09J2p1c3RpZmljYWNpb24nKXtcclxuICAgICAgICAgICAgICAgICAgICBmaWVsZC5lZGl0YWJsZT1jb250ZXh0LmZvckR1bXAgfHwgY29udGV4dC5wdWVkZT8uZW5jdWVzdGFzLmp1c3RpZmljYXI7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfSlcclxuICAgICAgICBiZS5hcHBlbmRUb1RhYmxlRGVmaW5pdGlvbignb3BlcmF0aXZvcycsZnVuY3Rpb24odGFibGVEZWYsIGNvbnRleHQpe1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDIsMCx7XHJcbiAgICAgICAgICAgICAgICBuYW1lOidjb25maWdfc29ydGVvJywgXHJcbiAgICAgICAgICAgICAgICB0eXBlTmFtZTonanNvbmInLFxyXG4gICAgICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0YWJsZURlZi5maWVsZHMuc3BsaWNlKDMsMCx7XHJcbiAgICAgICAgICAgICAgICBuYW1lOidkaXNmb3JtX2NlcnJhZG8nLCBcclxuICAgICAgICAgICAgICAgIHR5cGVOYW1lOidib29sZWFuJywgXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6IGZhbHNlLCBcclxuICAgICAgICAgICAgICAgIGVkaXRhYmxlOiBjb250ZXh0LmZvckR1bXB8fFsnYWRtaW4nLCdkaXNfY29uY2VwdHVhbCddLmluY2x1ZGVzKGNvbnRleHQudXNlci5yb2wpfVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0pXHJcblxyXG4gICAgICAgIC8vIGJlLmFwcGVuZFRvVGFibGVEZWZpbml0aW9uKCdjYXNpbGxlcm9zJyxmdW5jdGlvbih0YWJsZURlZiwgY29udGV4dCl7XHJcbiAgICAgICAgLy8gICAgIHRhYmxlRGVmLmNvbnN0cmFpbnRzID0gdGFibGVEZWYuY29uc3RyYWludHMuZmlsdGVyKGM9PmMuY29uc05hbWUhPSdjYXNpbGxlcm9zIHNhbHRvIFJFTCcpXHJcbiAgICAgICAgLy8gfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgQXBwRG1FbmN1ID0gZW1lcmdlQXBwRG1FbmN1KGVtZXJnZUFwcFByb2Nlc2FtaWVudG8oZW1lcmdlQXBwQ29uc2lzdGVuY2lhcyhlbWVyZ2VBcHBWYXJDYWwoZW1lcmdlQXBwRGF0b3NFeHQoZW1lcmdlQXBwT3BlcmF0aXZvcyhBcHBCYWNrZW5kKSkpKSkpO1xyXG5leHBvcnQgdHlwZSBBcHBBcHBEbUVuY3VUeXBlID0gSW5zdGFuY2VUeXBlPHR5cGVvZiBBcHBEbUVuY3U+OyJdfQ==
|
package/package.json
CHANGED