dmencu 2.1.0 → 2.1.2
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.
|
@@ -716,6 +716,14 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
716
716
|
});
|
|
717
717
|
}
|
|
718
718
|
};
|
|
719
|
+
myOwn.wScreens.proc.result.download_sql = function (result, divResult) {
|
|
720
|
+
const url = window.URL.createObjectURL(new Blob([result], { type: 'text/sql' }));
|
|
721
|
+
divResult.innerHTML = '';
|
|
722
|
+
const link = js_to_html_1.html.a('Descargar archivo SQL').create();
|
|
723
|
+
link.href = url;
|
|
724
|
+
link.download = 'migrar_operativo.sql';
|
|
725
|
+
divResult.appendChild(link);
|
|
726
|
+
};
|
|
719
727
|
const previsualizarEncuesta = (resultTem, divResult, params) => {
|
|
720
728
|
let { casoTem } = resultTem;
|
|
721
729
|
if (!casoTem.json_encuesta) {
|
|
@@ -801,4 +809,4 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
801
809
|
return [].concat.apply([], arrays);
|
|
802
810
|
}
|
|
803
811
|
});
|
|
804
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsMkNBQWdDO0lBQ2hDLG1FQUFrRztJQUtsRyxrQ0FBa0M7SUFDbEMscUVBQThHO0lBQzlHLG1FQUFrSjtJQUVsSixrQkFBa0I7SUFFbEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQzdCLElBQUksaUJBQWlCLEdBQWMsSUFBSSxDQUFDO0lBRXhDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBUSxFQUFFO1FBQ3BDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLElBQUcsQ0FBQztZQUNBLGlCQUFpQixHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUFBLE9BQU0sR0FBRyxFQUFDLENBQUM7WUFDUixpQkFBaUIsR0FBQyxJQUFJLENBQUM7UUFDM0IsQ0FBQztRQUNELEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFDO1lBQzFCLFVBQVUsRUFBQztnQkFDUCxFQUFDLElBQUksRUFBQyxXQUFXLEVBQUcsUUFBUSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFDLFlBQVksRUFBQztnQkFDN0YsRUFBQyxJQUFJLEVBQUMsT0FBTyxFQUFPLFFBQVEsRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDO2dCQUN0RixFQUFDLElBQUksRUFBQyxLQUFLLEVBQVMsUUFBUSxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxFQUFDO2FBQy9EO1lBQ0QsVUFBVSxFQUFDLElBQUk7WUFDZixVQUFVLEVBQUMsQ0FBTyxNQUFNLEVBQUMsRUFBRTs7Z0JBQ3ZCLHNCQUFzQjtnQkFD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QkFBeUIsQ0FBQyxFQUFDLFFBQVEsRUFBQyxJQUFJLEVBQUMsQ0FBQyxDQUFDO1FBQ3RELENBQUM7S0FBQSxDQUFBO0lBRUQsU0FBUyxTQUFTLENBQUksTUFBWTtRQUM5QixPQUFRLEVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtodG1sfSBmcm9tIFwianMtdG8taHRtbFwiO1xyXG5pbXBvcnQge2Rpc3BhdGNoZXJzLCBkbVRyYWVyRGF0b3NGb3JtdWxhcmlvLCB0cmFlckVzdHJ1Y3R1cmF9IGZyb20gXCIuLi91bmxvZ2dlZC9yZWR1eC1mb3JtdWxhcmlvXCI7XHJcbmltcG9ydCB7IENhc29TdGF0ZSwgIFxyXG4gICAgSWRGb3JtdWxhcmlvLCBEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcywgSWRFbmMsIElkT3BlcmF0aXZvLCBJZFRhcmVhLCBFc3RhZG9BY2Npb24sIERpcmVjY2lvbkFjY2lvbixcclxuICAgIENhbXBvUGtSYWl6LCBNb2RvRE1cclxufSBmcm9tIFwiLi4vdW5sb2dnZWQvdGlwb3NcIjtcclxuaW1wb3J0ICogYXMgbGlrZUFyIGZyb20gXCJsaWtlLWFyXCI7XHJcbmltcG9ydCB7Z2V0RXN0cnVjdHVyYSwgc2V0UGVyc2lzdGlyRGF0b3NCeVBhc3MsIE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWX0gZnJvbSBcIi4uL3VubG9nZ2VkL2J5cGFzcy1mb3JtdWxhcmlvXCJcclxuaW1wb3J0IHtCQUNLVVBTLCBjYXJnYXJFc3RydWN0dXJhLCBjYXJnYXJIb2phRGVSdXRhLCBHTE9WQVJfREFUT1NCWVBBU1MsIEdMT1ZBUl9FU1RSVUNUVVJBLCBHTE9WQVJfTU9ET0JZUEFTU30gZnJvbSBcIi4uL3VubG9nZ2VkL2FicmlyLWZvcm11bGFyaW9cIlxyXG5cclxuLy9UT0RPIEdFTkVSQUxJWkFSXHJcblxyXG5jb25zdCBUQVJFQV9ERUZBVUxUID0gJ2VuY3UnO1xyXG52YXIgT1BFUkFUSVZPX0RFRkFVTFQ6c3RyaW5nfG51bGw9IG51bGw7XHJcblxyXG5teU93bi5hdXRvU2V0dXBGdW5jdGlvbnMucHVzaChhc3luYyAoKT0+e1xyXG4gICAgdmFyIG15ID0gbXlPd247ICAgIFxyXG4gICAgdHJ5e1xyXG4gICAgICAgIE9QRVJBVElWT19ERUZBVUxUID0gYXdhaXQgbXkuYWpheC5vcGVyYXRpdm9fZ2V0KHt9KTtcclxuICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgIE9QRVJBVElWT19ERUZBVUxUPW51bGw7XHJcbiAgICB9XHJcbiAgICBteU93bi53U2NyZWVucy5hYnJpcl9lbmN1ZXN0YT17XHJcbiAgICAgICAgcGFyYW1ldGVyczpbXHJcbiAgICAgICAgICAgIHtuYW1lOidvcGVyYXRpdm8nICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6T1BFUkFUSVZPX0RFRkFVTFQsIHJlZmVyZW5jZXM6J29wZXJhdGl2b3MnfSxcclxuICAgICAgICAgICAge25hbWU6J3RhcmVhJyAgICAgLCB0eXBlTmFtZTondGV4dCcsIGRlZmF1bHRWYWx1ZTpUQVJFQV9ERUZBVUxULCByZWZlcmVuY2VzOiAndGFyZWFzJ30sXHJcbiAgICAgICAgICAgIHtuYW1lOidlbmMnICAgICAgICwgdHlwZU5hbWU6J2ludGVnZXInLCBkZWZhdWx0VmFsdWU6MTMwMDMxfVxyXG4gICAgICAgIF0sXHJcbiAgICAgICAgYXV0b3Byb2NlZDp0cnVlLFxyXG4gICAgICAgIG1haW5BY3Rpb246YXN5bmMgKHBhcmFtcyk9PntcclxuICAgICAgICAgICAgLy8gYW50ZXM6IGFicmlyRGlyZWN0b1xyXG4gICAgICAgICAgICB2YXIge29wZXJhdGl2bywgZW5jLCB0YXJlYX0gPSBwYXJhbXM7XHJcbiAgICAgICAgICAgIHZhciBlc3RydWN0dXJhID0gZ2V0RXN0cnVjdHVyYSgpO1xyXG4gICAgICAgICAgICB2YXIgY2FyZ2EgPSBhd2FpdCBteS5hamF4LmRtX2ZvcnBrcmFpel9jYXJnYXIoe29wZXJhdGl2bywgcGtfcmFpel92YWx1ZTplbmMsIHRhcmVhfSkgYXMgRGF0b3NCeVBhc3NQZXJzaXN0aWJsZXM7XHJcbiAgICAgICAgICAgIGlmKCFlc3RydWN0dXJhIHx8IChlc3RydWN0dXJhLnRpbWVzdGFtcD8/MCkgPCBjYXJnYS50aW1lc3RhbXBFc3RydWN0dXJhISB8fCBlc3RydWN0dXJhLm9wZXJhdGl2byAhPSBvcGVyYXRpdm8gfHwgbXkuY29uZmlnLmNvbmZpZy5kZXZlbCl7XHJcbiAgICAgICAgICAgICAgICBlc3RydWN0dXJhID0gYXdhaXQgdHJhZXJFc3RydWN0dXJhKHtvcGVyYXRpdm99KVxyXG4gICAgICAgICAgICAgICAgY2FyZ2FyRXN0cnVjdHVyYShlc3RydWN0dXJhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL0B0cy1pZ25vcmVcclxuICAgICAgICAgICAgdmFyIHN0YXRlOkNhc29TdGF0ZSA9IHt9XHJcbiAgICAgICAgICAgIGluaWNpYWxpemFyU3RhdGUoc3RhdGUpO1xyXG4gICAgICAgICAgICB2YXIgZm9yUGtSYWl6ID0ge2Zvcm11bGFyaW86Y2FyZ2EuaW5mb3JtYWNpb25IZHJbZW5jIGFzIElkRW5jXS50YXJlYS5tYWluX2Zvcm0sIFtlc3RydWN0dXJhLnBrQWdyZWdhZGFVYVBwYWxdOmVuY307XHJcbiAgICAgICAgICAgIHNldFBlcnNpc3RpckRhdG9zQnlQYXNzKFxyXG4gICAgICAgICAgICAgICAgYXN5bmMgZnVuY3Rpb24gcGVyc2lzdGlyRGF0b3NCeVBhc3NFbkJhc2VEZURhdG9zKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYocGVyc2lzdGVudGVzLnNvbG9MZWN0dXJhKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRXN0w6EgaW50ZW50YW5kbyBtb2RpZmljYXIgdW5hIGVuY3Vlc3RhIGFiaWVydGEgY29tbyBzb2xvIGxlY3R1cmEsIG5vIHNlIGd1YXJkYXJvbiBsb3MgY2FtYmlvc1wiKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBteS5hamF4LmRtX2ZvcnBrcmFpel9kZXNjYXJnYXIoe29wZXJhdGl2bywgcGVyc2lzdGVudGVzfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICAgaWYoIWNhcmdhLnJlc3B1ZXN0YXNbZXN0cnVjdHVyYS51YVBwYWxdW2ZvclBrUmFpeltlc3RydWN0dXJhLnBrQWdyZWdhZGFVYVBwYWwgYXMgQ2FtcG9Qa1JhaXpdXSl7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIHNlIGVuY3VlbnRyYSBlbC9sYSAke2VzdHJ1Y3R1cmEucGtBZ3JlZ2FkYVVhUHBhbH0gJHtmb3JQa1JhaXpbZXN0cnVjdHVyYS5wa0FncmVnYWRhVWFQcGFsXX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXJnYXJIb2phRGVSdXRhKHsuLi5jYXJnYSwgbW9kb0FsbWFjZW5hbWllbnRvOidzZXNzaW9uJ30pO1xyXG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwoe29wZXJhdGl2bywgbW9kb0RlbW86ZmFsc2UsIGZvclBrUmFpen0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBteU93bi53U2NyZWVucy5vYnRlbmVyX3RlbGVmb25vPXtcclxuICAgICAgICBwYXJhbWV0ZXJzOltdLFxyXG4gICAgICAgIGF1dG9wcm9jZWQ6dHJ1ZSxcclxuICAgICAgICBtYWluQWN0aW9uOmFzeW5jIChfcGFyYW1zKT0+e1xyXG4gICAgICAgICAgICAvLyBhbnRlczogYWJyaXJEaXJlY3RvXHJcbiAgICAgICAgICAgIHZhciB7b3BlcmF0aXZvLCB0YXJlYX0gPSB7b3BlcmF0aXZvOiBPUEVSQVRJVk9fREVGQVVMVCwgdGFyZWE6IFRBUkVBX0RFRkFVTFR9O1xyXG4gICAgICAgICAgICBsZXQgZW5jID0gcGFyc2VJbnQoYXdhaXQgbXkuYWpheC5nZXRfcmFuZG9tX2ZyZWVfY2FzZSh7b3BlcmF0aXZvfSkpOyBcclxuICAgICAgICAgICAgYXdhaXQgbXlPd24ud1NjcmVlbnMuYWJyaXJfZW5jdWVzdGEubWFpbkFjdGlvbih7b3BlcmF0aXZvLCBlbmMsIHRhcmVhfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIG15T3duLndTY3JlZW5zLmNvbnNpc3Rpcl9lbmN1ZXN0YT17XHJcbiAgICAgICAgcGFyYW1ldGVyczpbXHJcbiAgICAgICAgICAgIHtuYW1lOidvcGVyYXRpdm8nICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6T1BFUkFUSVZPX0RFRkFVTFQsIHJlZmVyZW5jZXM6J29wZXJhdGl2b3MnfSxcclxuICAgICAgICAgICAge25hbWU6J3RhcmVhJyAgICAgLCB0eXBlTmFtZTondGV4dCd9LFxyXG4gICAgICAgICAgICB7bmFtZTonZW5jJyAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJ31cclxuICAgICAgICBdLFxyXG4gICAgICAgIGF1dG9wcm9jZWQ6dHJ1ZSxcclxuICAgICAgICBtYWluQWN0aW9uOmFzeW5jIChwYXJhbXMpPT57XHJcbiAgICAgICAgICAgIGlmICh3aW5kb3cub3BlbmVyKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgbWFpblRvcEJhciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluLXRvcC1iYXInKTtcclxuICAgICAgICAgICAgICAgIGlmIChtYWluVG9wQmFyKSB7IFxyXG4gICAgICAgICAgICAgICAgICAgIG1haW5Ub3BCYXIuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIge29wZXJhdGl2bywgdGFyZWEsIGVuYyB9ID0gcGFyYW1zO1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gYXdhaXQgbXlPd24uYWpheC5jb25zaXN0aXJfZW5jdWVzdGEoe1xyXG4gICAgICAgICAgICAgICAgb3BlcmF0aXZvOiBvcGVyYXRpdm8sXHJcbiAgICAgICAgICAgICAgICBpZF9jYXNvOiBlbmNcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGlmKHJlc3VsdC5vayl7XHJcbiAgICAgICAgICAgICAgICB2YXIgZml4ZWRGaWVsZHMgPSBbXTtcclxuICAgICAgICAgICAgICAgIGZpeGVkRmllbGRzLnB1c2goe2ZpZWxkTmFtZTogJ29wZXJhdGl2bycsIHZhbHVlOiBvcGVyYXRpdm99KTtcclxuICAgICAgICAgICAgICAgIGZpeGVkRmllbGRzLnB1c2goe2ZpZWxkTmFtZTogJ3ZpdmllbmRhJywgdmFsdWU6IGVuY30pO1xyXG4gICAgICAgICAgICAgICAgdmFyIG1haW5MYXlvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbl9sYXlvdXQnKSE7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGl2R3JpbGxhID0gaHRtbC5kaXYoe2lkOidpbmNvbnNpc3RlbmNpYXMnfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICBtYWluTGF5b3V0Lmluc2VydEJlZm9yZShkaXZHcmlsbGEsIG1haW5MYXlvdXQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZGl2Qm90b25lcyA9IGh0bWwuZGl2KHtpZDonYm90b25lcy1wb3N0LWNvbnNpc3Rpcid9LFtcclxuICAgICAgICAgICAgICAgICAgICBjcmVhckJvdG9uQ2VycmFyRW5jdWVzdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGBjZXJyYXIgZW5jdWVzdGFgXHJcbiAgICAgICAgICAgICAgICAgICAgKSxcclxuICAgICAgICAgICAgICAgICAgICBjcmVhckJvdG9uVmVyQWJyaXJFbmN1ZXN0YShcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJlYSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZW5jLCBcclxuICAgICAgICAgICAgICAgICAgICAgICAgYHZvbHZlciBhIGVuY3Vlc3RhICR7ZW5jfWBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICBdKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICAgICAgbWFpbkxheW91dC5pbnNlcnRCZWZvcmUoZGl2Qm90b25lcywgbWFpbkxheW91dC5maXJzdENoaWxkKTtcclxuICAgICAgICAgICAgICAgIG15LnRhYmxlR3JpZChcImluY29uc2lzdGVuY2lhc19jdW1wbGVuX2NvbmRpY2lvblwiLCBkaXZHcmlsbGEse3RhYmxlRGVmOnt9LGZpeGVkRmllbGRzOiBmaXhlZEZpZWxkc30pO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuXHJcbi8vcXVpdGEgYm9vdHN0cmFwIGRlbCBoZWFkIHBhcmEgcXVlIG5vIHJvbXBhIGxvcyBlc3RpbG9zIGRlIEJFUGx1cyAoc29sbyBzZSB1c2EgYm9vdHN0cmFwIGVuIGVsIGZvcm0pXHJcbnZhciBsaW5rTm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ1tocmVmPVwiY3NzL2Jvb3RzdHJhcC5taW4uY3NzXCJdJyk7XHJcbmxpbmtOb2RlWzBdPy5wYXJlbnROb2RlPy5yZW1vdmVDaGlsZChsaW5rTm9kZVswXSk7XHJcblxyXG5mdW5jdGlvbiBjb25zaXN0aXJfZmlsdHJvKHRhcmVhLCByZWFfdGVtLCByZWEpe1xyXG4gICAgcmV0dXJuIHRhcmVhP3JlYV90ZW06cmVhO1xyXG59O1xyXG5cclxudmFyIHRhcmVhczphbnkgPSBudWxsO1xyXG5cclxuZnVuY3Rpb24gaHRtbE51bWVybyhudW06bnVtYmVyKXtcclxuICAgIHJldHVybiBodG1sLnNwYW4oe2NsYXNzOidudW1lcm8nfSwnJysobnVtPz8nJykpXHJcbn1cclxuXHJcbnZhciBwZXJzaXN0aXJFbk1lbW9yaWEgPSBhc3luYyAocGVyc2lzdGVudGVzOkRhdG9zQnlQYXNzUGVyc2lzdGlibGVzKSA9PiB7XHJcbiAgICB2YXIge21vZG9BbG1hY2VuYW1pZW50b30gPSBwZXJzaXN0ZW50ZXNcclxuICAgICAgICBpZihtb2RvQWxtYWNlbmFtaWVudG89PSdsb2NhbCcpe1xyXG4gICAgICAgICAgICBteS5zZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MsIHBlcnNpc3RlbnRlcylcclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgbXkuc2V0U2Vzc2lvblZhcihHTE9WQVJfREFUT1NCWVBBU1MsIHBlcnNpc3RlbnRlcylcclxuICAgICAgICB9XHJcbiAgICAgICAgbXkuc2V0U2Vzc2lvblZhcihHTE9WQVJfTU9ET0JZUEFTUywgbW9kb0FsbWFjZW5hbWllbnRvKVxyXG59XHJcblxyXG5hc3luYyBmdW5jdGlvbiBzaW5jcm9uaXphckRhdG9zKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlc3xudWxsLCBjYW1iaWFNb2RvRE06Ym9vbGVhbil7XHJcbiAgICBjb25zdCBtb2RvRG1EZWZlY3RvID0gYXdhaXQgbXkuYWpheC5tb2RvX2RtX2RlZmVjdG9fb2J0ZW5lcih7fSk7XHJcbiAgICBsZXQgbW9kb0RNOiBNb2RvRE0gPSBteS5nZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVkpIHx8IG1vZG9EbURlZmVjdG87XHJcbiAgICBteS5zZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVksIG1vZG9ETSk7XHJcbiAgICB2YXIgZGF0b3MgPSBhd2FpdCBteS5hamF4LmRtX3NpbmNyb25pemFyKHtwZXJzaXN0ZW50ZXMsIG1vZG9fZG06bW9kb0RNLCBjYW1iaWFfbW9kb19kbTpjYW1iaWFNb2RvRE19KTtcclxuICAgIHZhciBvcGVyYXRpdm8gPSBkYXRvcy5vcGVyYXRpdm87XHJcbiAgICBwZXJzaXN0aXJFbk1lbW9yaWEoey4uLmRhdG9zLCBtb2RvQWxtYWNlbmFtaWVudG86J2xvY2FsJ30pO1xyXG4gICAgdmFyIGVzdHJ1Y3R1cmEgPSBhd2FpdCB0cmFlckVzdHJ1Y3R1cmEoe29wZXJhdGl2b30pXHJcbiAgICBteS5zZXRMb2NhbFZhcihHTE9WQVJfRVNUUlVDVFVSQSwgZXN0cnVjdHVyYSk7XHJcbiAgICBteS5yZW1vdmVMb2NhbFZhcihCQUNLVVBTKTtcclxuICAgIHJldHVybiBkYXRvcztcclxufVxyXG5cclxuXHJcblxyXG52YXIgbW9zdHJhckluZm9Mb2NhbCA9IChkaXZBdmlzb1NpbmNybzpIVE1MRGl2RWxlbWVudCwgdGl0dWxvOnN0cmluZywgbnJvU2luY3JvOm51bWJlcnxudWxsLCBtb3N0cmFyTGlua0hkcjogYm9vbGVhbik9PntcclxuICAgIGxldCBkYXRvc0J5UGFzcyA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUyk7XHJcbiAgICBsZXQgZXN0cnVjdHVyYSA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9FU1RSVUNUVVJBKTtcclxuICAgIGlmKGRhdG9zQnlQYXNzKXtcclxuICAgICAgICBkaXZBdmlzb1NpbmNyby5hcHBlbmQoaHRtbC5kaXYoe2lkOidhdmlzby1zaW5jcm8nfSwgW1xyXG4gICAgICAgICAgICBucm9TaW5jcm8/aHRtbC5wKFtcIk7Dum1lcm8gZGUgc2luY3Jvbml6YWNpw7NuOiBcIiwgaHRtbC5iKFwiXCIrbnJvU2luY3JvLnRvU3RyaW5nKCkpXSk6bnVsbCxcclxuICAgICAgICAgICAgaHRtbC5oNCh0aXR1bG8pLFxyXG4gICAgICAgICAgICBodG1sLnAoW2h0bWxOdW1lcm8obGlrZUFyKGRhdG9zQnlQYXNzLmNhcmdhcykuYXJyYXkoKS5sZW5ndGgpLCcgYXJlYXM6ICcsbGlrZUFyKGRhdG9zQnlQYXNzLmNhcmdhcykua2V5cygpLmpvaW4oJywgJyldKSxcclxuICAgICAgICAgICAgaHRtbC5wKFtodG1sTnVtZXJvKGxpa2VBcihkYXRvc0J5UGFzcy5yZXNwdWVzdGFzW2VzdHJ1Y3R1cmEudWFQcGFsXSkuYXJyYXkoKS5sZW5ndGgpLCAnICcgKyBlc3RydWN0dXJhLnVhUHBhbF0pLFxyXG4gICAgICAgICAgICBtb3N0cmFyTGlua0hkcj9odG1sLmEoe2hyZWY6Jy4vY2FtcG8nfSxbaHRtbC5iKCdJUiBBIExBIEhPSkEgREUgUlVUQScpXSk6bnVsbFxyXG4gICAgICAgIF0pLmNyZWF0ZSgpKTtcclxuICAgIH1lbHNle1xyXG4gICAgICAgIGRpdkF2aXNvU2luY3JvLmFwcGVuZENoaWxkKGh0bWwuZGl2KHtjbGFzczonYXZpc28nfSxbXHJcbiAgICAgICAgICAgIGh0bWwuaDQoJ1Npc3RlbWEgdmFjw61vJyksXHJcbiAgICAgICAgICAgIGh0bWwucCgnTm8gaGF5IGluZm9ybWFjacOzbiBkZSBmb3JtdWxhcmlvcycpLFxyXG4gICAgICAgIF0pLmNyZWF0ZSgpKTtcclxuICAgIH1cclxufVxyXG5cclxuY29uc3QgbW9zdHJhckluZm9Nb2RvID0gYXN5bmMobWFpbkxheW91dDpIVE1MRWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgbW9kb0RtRGVmZWN0byA9IGF3YWl0IG15LmFqYXgubW9kb19kbV9kZWZlY3RvX29idGVuZXIoe30pO1xyXG4gICAgbGV0IG1vZG9ETTogTW9kb0RNID0gbXkuZ2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZKSB8fCBtb2RvRG1EZWZlY3RvO1xyXG4gICAgbXkuc2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZLCBtb2RvRE0pO1xyXG4gICAgdmFyIGRpdkF2aXNvTW9kbzpIVE1MRGl2RWxlbWVudD1odG1sLmRpdihbXHJcbiAgICAgICAgaHRtbC5kaXYoYG1vZG8gYWN0dWFsOiAke21vZG9ETX0uYClcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChkaXZBdmlzb01vZG8pXHJcbiAgICByZXR1cm4gbW9kb0RNO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYW1iaWFyTW9kb0RNRW5Mb2NhbFN0b3JhZ2UobW9kb0FjdHVhbDpNb2RvRE0pe1xyXG4gICAgbW9kb0FjdHVhbCA9IG1vZG9BY3R1YWw9PSdwcm9kdWMnPydjYXBhJzoncHJvZHVjJztcclxuICAgIG15LnNldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSxtb2RvQWN0dWFsKTtcclxufVxyXG5cclxudmFyIHByb2NlZGVyU2luY3JvRnVuID0gYXN5bmMgKGJ1dHRvbjpIVE1MQnV0dG9uRWxlbWVudCwgZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQsIGNhbWJpYU1vZG9ETTpib29sZWFuKT0+e1xyXG4gICAgYnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICBidXR0b24uY2xhc3NOYW1lPSdkb3dubG9hZC1kbS1idXR0b24nO1xyXG4gICAgZGl2QXZpc29TaW5jcm8uaW5uZXJIVE1MPScnO1xyXG4gICAgdHJ5e1xyXG4gICAgICAgIHZhciBkYXRvc0J5UGFzczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcyA9IG15LmdldExvY2FsVmFyKEdMT1ZBUl9EQVRPU0JZUEFTUyk7XHJcbiAgICAgICAgdmFyIGRhdG9zID0gYXdhaXQgc2luY3Jvbml6YXJEYXRvcyhkYXRvc0J5UGFzcywgY2FtYmlhTW9kb0RNKTtcclxuICAgICAgICBjb25zdCBtb2RvRG1EZWZlY3RvID0gYXdhaXQgbXkuYWpheC5tb2RvX2RtX2RlZmVjdG9fb2J0ZW5lcih7fSk7XHJcbiAgICAgICAgbGV0IG1vZG9ETUFjdHVhbDogTW9kb0RNID0gbXkuZ2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZKSB8fCBtb2RvRG1EZWZlY3RvO1xyXG4gICAgICAgIGlmKGNhbWJpYU1vZG9ETSl7XHJcbiAgICAgICAgICAgIGNhbWJpYXJNb2RvRE1FbkxvY2FsU3RvcmFnZShtb2RvRE1BY3R1YWwpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzdG9yZSA9IGF3YWl0IGRtVHJhZXJEYXRvc0Zvcm11bGFyaW8oe21vZG9EZW1vOiBmYWxzZX0pO1xyXG4gICAgICAgIHN0b3JlLmRpc3BhdGNoKGRpc3BhdGNoZXJzLlJFU0VUX09QQ0lPTkVTKHt9KSk7XHJcbiAgICAgICAgbW9zdHJhckluZm9Mb2NhbChkaXZBdmlzb1NpbmNybywgJ2RhdG9zIHJlY2liaWRvcycsIGRhdG9zLm51bV9zaW5jcm8sIHRydWUpXHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgdGhyb3cgZXJyXHJcbiAgICB9ZmluYWxseXtcclxuICAgICAgICBidXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgYnV0dG9uLmNsYXNzTmFtZT0nZG93bmxvYWQtZG0tYnV0dG9uLWNvbnQnO1xyXG4gICAgfVxyXG59XHJcbm15T3duLndTY3JlZW5zLnNpbmNyb25pemFyX2RtPWFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgIGF3YWl0IG1vc3RyYXJJbmZvTW9kbyhtYWluTGF5b3V0KTtcclxuICAgIHZhciBwcm9jZWRlckJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtjbGFzczonZG93bmxvYWQtZG0tYnV0dG9uLWNvbnQnfSwncHJvY2VkZXIg4oeSJykuY3JlYXRlKCk7XHJcbiAgICB2YXIgZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQ9aHRtbC5kaXYoKS5jcmVhdGUoKTtcclxuICAgIG1vc3RyYXJJbmZvTG9jYWwobWFpbkxheW91dCBhcyBIVE1MRGl2RWxlbWVudCwgJ2luZm9ybWFjacOzbiBhIHRyYW5zbWl0aXInLCBudWxsLCBmYWxzZSlcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQocHJvY2VkZXJCdXR0b24pO1xyXG4gICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChkaXZBdmlzb1NpbmNybyk7XHJcbiAgICBwcm9jZWRlckJ1dHRvbi5vbmNsaWNrID0gKCk9PnByb2NlZGVyU2luY3JvRnVuKHByb2NlZGVyQnV0dG9uLCBkaXZBdmlzb1NpbmNybywgZmFsc2UpXHJcbn07XHJcblxyXG5teU93bi53U2NyZWVucy5jYW1iaWFyX21vZG9fZG09YXN5bmMgZnVuY3Rpb24oKXtcclxuICAgIHZhciBtYWluTGF5b3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5fbGF5b3V0JykhO1xyXG4gICAgY29uc3QgbW9kb0RNID0gYXdhaXQgbW9zdHJhckluZm9Nb2RvKG1haW5MYXlvdXQpO1xyXG4gICAgdmFyIHByb2NlZGVyQnV0dG9uID0gaHRtbC5idXR0b24oe2NsYXNzOidjYW1iaWFyLW1vZG8tZG0tYnV0dG9uJ30sYGNhbWJpYXIgYSBtb2RvICR7bW9kb0RNID09ICdwcm9kdWMnPydjYXBhJzoncHJvZHVjJ30g4oeSYCkuY3JlYXRlKCk7XHJcbiAgICB2YXIgZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQ9aHRtbC5kaXYoKS5jcmVhdGUoKTtcclxuICAgIG1vc3RyYXJJbmZvTG9jYWwobWFpbkxheW91dCBhcyBIVE1MRGl2RWxlbWVudCwgYGluZm9ybWFjacOzbiBtb2RvIFwiJHttb2RvRE19XCIgYSB0cmFuc21pdGlyYCwgbnVsbCwgZmFsc2UpXHJcbiAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKHByb2NlZGVyQnV0dG9uKTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoZGl2QXZpc29TaW5jcm8pO1xyXG4gICAgcHJvY2VkZXJCdXR0b24ub25jbGljayA9IGFzeW5jICgpPT57XHJcbiAgICAgICAgdmFyIG1haW5EaXYgPSBodG1sLmRpdigpLmNyZWF0ZSgpXHJcbiAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoe30sIFtgQ29uZmlybWEgY2FtYmlvIGRlIG1vZG8gXCIke21vZG9ETX1cIiBhICR7bW9kb0RNPT0ncHJvZHVjJz8nXCJjYXBhXCInOidcInByb2R1Y1wiJ30uYF0pXHJcbiAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgKTtcclxuICAgICAgICB2YXIgaW5wdXRDYW1iaWFyTW9kbyA9IGh0bWwuaW5wdXQoe2NsYXNzOidpbnB1dC1jYW1iaWFyLW1vZG8nfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChodG1sLmRpdihbXHJcbiAgICAgICAgICAgIGh0bWwuZGl2KFsnUG9yIGZhdm9yIGluZ3Jlc2UgbGEgY29udHJhc2XDsWEgJyxpbnB1dENhbWJpYXJNb2RvXSlcclxuICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgdmFyIGNhbWJpYXJNb2RvVmFsdWUgPSBhd2FpdCBjb25maXJtUHJvbWlzZShtYWluRGl2LCB7XHJcbiAgICAgICAgICAgIHdpdGhDbG9zZUJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIHJlamVjdDpmYWxzZSxcclxuICAgICAgICAgICAgYnV0dG9uc0RlZjpbXHJcbiAgICAgICAgICAgICAgICB7bGFiZWw6YGNhbWJpYXJgLCB2YWx1ZTp0cnVlfSxcclxuICAgICAgICAgICAgICAgIHtsYWJlbDpgY2FuY2VsYXJgLCB2YWx1ZTpmYWxzZX1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmKGNhbWJpYXJNb2RvVmFsdWUpe1xyXG4gICAgICAgICAgICBpZihpbnB1dENhbWJpYXJNb2RvLnZhbHVlPT0nMTIzNCcpe1xyXG4gICAgICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2NlZGVyQnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgcHJvY2VkZXJTaW5jcm9GdW4ocHJvY2VkZXJCdXR0b24sIGRpdkF2aXNvU2luY3JvLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgICBtYWluTGF5b3V0LmlubmVySFRNTD0nJztcclxuICAgICAgICAgICAgICAgICAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihgTU9ETyAke215LmdldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSl9IEFDVElWQURPYCkuY3JlYXRlKClcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfWZpbmFsbHl7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvY2VkZXJCdXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZSgnY29udHJhc2XDsWEgaW5jb3JyZWN0YS4nKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZnVuY3Rpb24gaW5pY2lhbGl6YXJTdGF0ZShzdGF0ZTogQ2Fzb1N0YXRlKSB7XHJcbiAgICBzdGF0ZS5tb2RvID0ge1xyXG4gICAgICAgIGRlbW86IGZhbHNlXHJcbiAgICB9O1xyXG4gICAgLy8gT0pPIHN0YXRlLm9wY2lvbmVzIHNlIG1vZGlmaWNhIGFjw6EgeSBlbiBvdHJvIGxhZG8gY29uIGVzdGUgbWlzbW8gY2FydGVsXHJcbiAgICBzdGF0ZS5vcGNpb25lcyA9IHtcclxuICAgICAgICBiaWVudmVuaWRvOiB0cnVlLFxyXG4gICAgICAgIGZvclBrOiBudWxsLFxyXG4gICAgICAgIHBpbGFGb3JQazogW10sXHJcbiAgICAgICAgbW9kb0Rlc3BsaWVndWU6IFwicmVsZXZhbWllbnRvXCIsXHJcbiAgICAgICAgbW9kb0RpcmVjdG86IGZhbHNlLFxyXG4gICAgICAgIG1vZG9Cb3JyYXJSZXNwdWVzdGE6IG51bGwsXHJcbiAgICAgICAgY29uQ2FtcG9PcGNpb25lczogZmFsc2UsXHJcbiAgICAgICAgc2FsdG9BdXRvbWF0aWNvOiB0cnVlLFxyXG4gICAgfTtcclxuICAgIC8vQHRzLWlnbm9yZVxyXG4gICAgc3RhdGUuZmVlZGJhY2tSb3dWYWxpZGF0b3IgPSB7fTtcclxufVxyXG4vKlxyXG5mdW5jdGlvbiBtb3N0cmFyRGF0b3NQZXJzb25hKGhheURhdG9zOmJvb2xlYW4sIGRhdG9zOmFueSwgZGl2UmVzdWx0OkhUTUxEaXZFbGVtZW50KXtcclxuICAgIC8vVE9ETzogRVZBTFVBUiBTSSBDT05WSUVORSBUUkFFUkxPIERFIExBIEJBU0VcclxuICAgIHZhciB0aXBvc0RvY3VtZW50byA9IFsnRE5JIGFyZ2VudGlubycsICdEb2N1bWVudG8gZXh0cmFuamVybycsICdObyB0aWVuZSBkb2N1bWVudG8nLCAnT3RybyddO1xyXG4gICAgdmFyIHBhaXNEb2N1bWVudG8gPSBbJ1VydWd1YXknLCAnUGFyYWd1YXknLCAnQnJhc2lsJywgJ0JvbGl2aWEnLCAnQ2hpbGUnLCAnUGVyw7onLCAnVmVuZXp1ZWxhJywgJ090cm8nXTtcclxuICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChcclxuICAgICAgICBoYXlEYXRvcz9cclxuICAgICAgICAgICAgaHRtbC5kaXYoe2NsYXNzOidkYXRvcy1wZXJzb25hLWNhcmdhZGEnfSxbXHJcbiAgICAgICAgICAgICAgICBodG1sLmgyKFwiRGF0b3MgcGVyc29uYVwiKSxcclxuICAgICAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonZmljaGEtcGVyc29uYSd9LFtcclxuICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbaHRtbC5sYWJlbCgnQXBlbGxpZG86ICcpLCBkYXRvcy5hcGVsbGlkb10pLFxyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KFtodG1sLmxhYmVsKCdOb21icmVzOiAnKSwgZGF0b3Mubm9tYnJlc10pLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG8/XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwubGFiZWwoJ1RpcG8gZG9jdW1lbnRvOiAnKSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXBvc0RvY3VtZW50b1tkYXRvcy50aXBvRG9jdW1lbnRvLTFdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0b3MudGlwb0RvY3VtZW50bz09NCAmJiBkYXRvcy50aXBvRG9jdW1lbnRvRXNwZWNpZmljYWRvPycgKCcrIGRhdG9zLnRpcG9Eb2N1bWVudG9Fc3BlY2lmaWNhZG8rJyknOicnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICAgICAgICAgIDpcclxuICAgICAgICAgICAgICAgICAgICAgICAgJycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MudGlwb0RvY3VtZW50bz09MiAmJiBkYXRvcy5wYWlzRG9jdW1lbnRvP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLmxhYmVsKCdQYWlzOiAnKSwgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWlzRG9jdW1lbnRvW2RhdG9zLnBhaXNEb2N1bWVudG8tMV0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRvcy5wYWlzRG9jdW1lbnRvPT04ICYmIGRhdG9zLnBhaXNEb2N1bWVudG9Fc3BlY2lmaWNhZG8/JyAoJytkYXRvcy5wYWlzRG9jdW1lbnRvRXNwZWNpZmljYWRvKycpJzonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG8hPTMgJiYgZGF0b3MudGlwb0RvY3VtZW50bz9odG1sLmRpdihbaHRtbC5sYWJlbCgnTsK6IERvY3VtZW50bzogJyksIGRhdG9zLmRvY3VtZW50b10pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLmNlbHVsYXI/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ0NlbC46ICcpLCBkYXRvcy5jZWx1bGFyXSk6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MuZW1haWw/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ0VtYWlsOiAnKSwgZGF0b3MuZW1haWxdKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50ZWxlZm9ub0FsdGVybmF0aXZvP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdUZWwuIGFsdGVybmF0aXZvOiAnKSwgZGF0b3MudGVsZWZvbm9BbHRlcm5hdGl2b10pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLm9ic2VydmFjaW9uZXM/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ09ic2VydmFjaW9uZXM6ICcpLCBkYXRvcy5vYnNlcnZhY2lvbmVzXSk6JycsXHJcbiAgICAgICAgICAgICAgICBdKVxyXG4gICAgICAgICAgICBdKS5jcmVhdGUoKVxyXG4gICAgICAgIDpcclxuICAgICAgICAgICAgaHRtbC5wKFwiTm8gc2UgZW5jb250csOzIHVuYSBlbmN1ZXN0YSBwYXJhIGxhIGV0aXF1ZXRhIGNhcmdhZGFcIikuY3JlYXRlKClcclxuICAgIClcclxufVxyXG4qL1xyXG4vKm15T3duLmNsaWVudFNpZGVzLnRhcmVhc1RlbVJvdz17XHJcbiAgICB1cGRhdGU6KGRlcG90KT0+e1xyXG4gICAgICAgIHZhciB0YXJlYTonbmFkYSd8J3ByZWFzaWduYXInfCdjYXJnYXInfCdyZWFsaXphcid8J3ZlcmlmaWNhcic9J25hZGEnO1xyXG4gICAgICAgIHZhciByb3c9ZGVwb3Qucm93O1xyXG4gICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICB2YXIgaWRwZXI9bXkuY29uZmlnLmlkcGVyO1xyXG4gICAgICAgIHZhciBlc3BlcmFyOmJvb2xlYW49ZmFsc2U7XHJcbiAgICAgICAgaWYocm93LmhhYmlsaXRhZGEpe1xyXG4gICAgICAgICAgICBpZighcm93LnJlY2VwY2lvbmlzdGEgJiYgIXJvdy5hc2lnbmFkbyl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ncHJlYXNpZ25hcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXRydWU7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKCFyb3cuYXNpZ25hZG8gfHwgIXJvdy5mZWNoYV9hc2lnbmFjaW9uIHx8ICFyb3cub3BlcmFjaW9uKXtcclxuICAgICAgICAgICAgICAgIHRhcmVhPSdjYXJnYXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj1yb3cucmVjZXBjaW9uaXN0YSE9aWRwZXI7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKCFyb3cucmVhKXtcclxuICAgICAgICAgICAgICAgIHRhcmVhPSdyZWFsaXphcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXJvdy5hc2lnbmFkbyE9aWRwZXI7XHJcbiAgICAgICAgICAgIH1lbHNlIGlmKCFyb3cudmVyaWZpY2Fkbyl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ndmVyaWZpY2FyJztcclxuICAgICAgICAgICAgICAgIGVzcGVyYXI9cm93LnJlY2VwY2lvbmlzdGEhPWlkcGVyO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBwb25lcj17XHJcbiAgICAgICAgICAgIHJlY2VwY2lvbmlzdGEgICAgICAgICAgOnRhcmVhPT0ncHJlYXNpZ25hcicgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgYXNpZ25hZG8gICAgICAgICAgIDp0YXJlYT09J2NhcmdhcicgICAgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIGZlY2hhX2FzaWduYWNpb24gICA6dGFyZWE9PSdjYXJnYXInICAgICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBvcGVyYWNpb24gICAgICAgICAgOnRhcmVhPT0nY2FyZ2FyJyAgICAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgY2FyZ2Ffb2JzZXJ2YWNpb25lczoodGFyZWE9PSdjYXJnYXInICAgICB8fCB0YXJlYT09J3JlYWxpemFyJyAmJiAhcm93LmNhcmdhZG8gJiYgIXJvdy5yZWEgKSAmJiByb3cucmVjZXBjaW9uaXN0YT09aWRwZXIgJiYgJ29wdGF0aXZvJyxcclxuICAgICAgICAgICAgdmVyaWZpY2FkbyAgICAgICAgIDp0YXJlYT09J3ZlcmlmaWNhcicgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIG9ic192ZXJpZmljYWRvICAgICA6dGFyZWE9PSd2ZXJpZmljYXInICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J29wdGF0aXZvJyksXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxpa2VBcihwb25lcikuZm9yRWFjaCgodmFsb3IsIGNhbXBvKT0+e1xyXG4gICAgICAgICAgICBpZighdmFsb3Ipe1xyXG4gICAgICAgICAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbY2FtcG9dLnJlbW92ZUF0dHJpYnV0ZSgnbXktbWFuZGF0b3J5JylcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBkZXBvdC5yb3dDb250cm9sc1tjYW1wb10uc2V0QXR0cmlidXRlKCdteS1tYW5kYXRvcnknLHZhbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgcHJlcGFyZTogZnVuY3Rpb24oKXt9XHJcbn1cclxuKi9cclxuXHJcbnZhciBjcmVhckJvdG9uQ2VycmFyRW5jdWVzdGEgPSAobGFiZWw6c3RyaW5nKT0+e1xyXG4gICAgbGV0IHBhdGggPSBcIk0zIDN2MThoMThWM0gzem0xNCAxMi41OUwxNS41OSAxNyAxMiAxMy40MSA4LjQxIDE3IDcgMTUuNTkgMTAuNTkgMTIgNyA4LjQxIDguNDEgNyAxMiAxMC41OSAxNS41OSA3IDE3IDguNDEgMTMuNDEgMTIgMTcgMTUuNTl6XCI7XHJcbiAgICB2YXIgc3ZnID0gaHRtbC5zdmcoe2NsYXNzOlwic3ZnLWNlcnJhci1lbmN1ZXN0YVwifSxbXHJcbiAgICAgICAgaHRtbC5wYXRoKHtcclxuICAgICAgICAgICAgZDpwYXRoXHJcbiAgICAgICAgfSlcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgc3ZnLnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIixcIjAgMCAyNiAyNlwiKTtcclxuICAgIGxldCB2ZXIgPSBodG1sLmJ1dHRvbih7aWQ6J2JvdG9uLWNlcnJhci1lbmN1ZXN0YSd9LFtzdmcsIGxhYmVsXSkuY3JlYXRlKCk7XHJcbiAgICB2ZXIub25jbGljayA9ICgpPT4gY2xvc2UoKTtcclxuICAgIHJldHVybiB2ZXJcclxufVxyXG5cclxuY29uc3QgYWJyaXJFbmN1ZXN0YUVuUGVzdGFubmlhRGVkaWNhZGEgPSAodXJsOnN0cmluZyk9PntcclxuICAgIGNvbnN0IEFCUklSX1RBQiA9IFwiX2FicmlyXCI7XHJcbiAgICB3aW5kb3cub3Blbih1cmwsIEFCUklSX1RBQik7XHJcbn1cclxuXHJcbnZhciBjcmVhckJvdG9uVmVyQWJyaXJFbmN1ZXN0YSA9IChvcGVyYXRpdm86SWRPcGVyYXRpdm8sdGFyZWE6SWRUYXJlYSxlbmN1ZXN0YTpudW1iZXIsIGxhYmVsOnN0cmluZyk9PntcclxuICAgIHZhciB1cCA9IHtcclxuICAgICAgICBvcGVyYXRpdm86b3BlcmF0aXZvLFxyXG4gICAgICAgIHRhcmVhOnRhcmVhLFxyXG4gICAgICAgIGVuYzplbmN1ZXN0YVxyXG4gICAgfVxyXG4gICAgbGV0IHZlciA9IGh0bWwuYnV0dG9uKHtpZDonYm90b24tdm9sdmVyLWEtZW5jdWVzdGEnfSxsYWJlbCkuY3JlYXRlKCk7XHJcbiAgICB2ZXIub25jbGljayA9ICgpPT4gYWJyaXJFbmN1ZXN0YUVuUGVzdGFubmlhRGVkaWNhZGEobG9jYXRpb24ub3JpZ2luK2xvY2F0aW9uLnBhdGhuYW1lK215Lm1lbnVTZXBhcmF0b3IrYHc9YWJyaXJfZW5jdWVzdGEmdXA9JHtKU09OLnN0cmluZ2lmeSh1cCl9JmF1dG9wcm9jZWQ9dHJ1ZWApXHJcbiAgICByZXR1cm4gdmVyXHJcbn1cclxuXHJcbnZhciBjcmVhckJvdG9uZXNWZXJBYnJpclRhcmVhcyA9IGFzeW5jIChkZXBvdDpteU93bi5EZXBvdCwgZmllbGROYW1lOnN0cmluZywgbGFiZWw6J2FicmlyJ3wndmVyJyk9PntcclxuICAgIHRhcmVhcyA9IHRhcmVhcz90YXJlYXM6KGF3YWl0IG15T3duLmFqYXgudGFibGVfZGF0YSh7dGFibGU6IGB0YXJlYXNgLCBmaXhlZEZpZWxkczpbXX0pKTtcclxuICAgIHZhciBtaXNUYXJlYXMgPSB0YXJlYXMuZmlsdGVyKCh0YXJlYSk9PlxyXG4gICAgICAgICEhdGFyZWEubWFpbl9mb3JtICYmIHRhcmVhLm9wZXJhdGl2bz09ZGVwb3Qucm93Lm9wZXJhdGl2byAmJiAoZGVwb3QubWFuYWdlci5kZWYubXVlc3RyYUFicmlyRW5Ub2Rhc0xhc1RhcmVhcz90cnVlOmRlcG90LnJvdy50YXJlYSA9PSB0YXJlYS50YXJlYSlcclxuICAgICk7XHJcbiAgICBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdLmlubmVySFRNTD0nJztcclxuICAgIG1pc1RhcmVhcy5mb3JFYWNoKCh0YXJlYTp7dGFyZWE6c3RyaW5nLCBub21icmU6c3RyaW5nLCBtYWluX2Zvcm06SWRGb3JtdWxhcmlvfSk9PntcclxuICAgICAgICBsZXQgYnV0dG9uTGFiZWwgPSBgJHtsYWJlbH0gJHt0YXJlYS50YXJlYX1gO1xyXG4gICAgICAgIGxldCB2ZXIgPSBjcmVhckJvdG9uVmVyQWJyaXJFbmN1ZXN0YShcclxuICAgICAgICAgICAgZGVwb3Qucm93Lm9wZXJhdGl2byBhcyBJZE9wZXJhdGl2byxcclxuICAgICAgICAgICAgdGFyZWEudGFyZWEgYXMgSWRUYXJlYSwgXHJcbiAgICAgICAgICAgIE51bWJlcihkZXBvdC5yb3cuZW5jKSxcclxuICAgICAgICAgICAgYnV0dG9uTGFiZWxcclxuICAgICAgICApO1xyXG4gICAgICAgIHZlci5zdHlsZT0nbWFyZ2luOjBweCAycHg7JztcclxuICAgICAgICBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdLmFwcGVuZENoaWxkKHZlcik7XHJcbiAgICB9KVxyXG59XHJcblxyXG52YXIgZ2V0QWJyaXJPdmVyID0gKF9kZXBvdDpteU93bi5EZXBvdCxfZmllbGROYW1lOnN0cmluZyk6J2FicmlyJz0+J2FicmlyJ1xyXG4gICAgLy9cclxuICAgIC8qKGRlcG90LnJvdy5jYXJnYWRvX2RtIHx8ICFkZXBvdC5yb3dbJ2VzdGFkb3NfX3Blcm1pdGVfZWRpdGFyX2VuY3Vlc3RhJ10gJiYgZGVwb3Qucm93LmFzaWduYWRvICE9IG15LmNvbmZpZy5pZHBlcik/XHJcbiAgICAgICAgJ3Zlcic6J2FicmlyJ1xyXG4gICAgKi9cclxuXHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5hYnJpcj17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIHZhciBsYWJlbDondmVyJ3wnYWJyaXInID0gZ2V0QWJyaXJPdmVyKGRlcG90LGZpZWxkTmFtZSk7XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzVmVyQWJyaXJUYXJlYXMoZGVwb3QsZmllbGROYW1lLGxhYmVsKTsgLy9ubyBlc3Blcm8gcHJvbWVzYSBwb3JxdWUgbm8gZXMgbmVjZXNhcmlvXHJcbiAgICB9XHJcbn07XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5hYnJpclJlY2VwY2lvbj17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIHZhciBsYWJlbDondmVyJ3wnYWJyaXInID0gZ2V0QWJyaXJPdmVyKGRlcG90LGZpZWxkTmFtZSk7XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzVmVyQWJyaXJUYXJlYXMoZGVwb3QsZmllbGROYW1lLGxhYmVsKTsgLy9ubyBlc3Blcm8gcHJvbWVzYSBwb3JxdWUgbm8gZXMgbmVjZXNhcmlvXHJcbiAgICB9XHJcbn07XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy52ZXJJY29ub1N2Zz17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIGxldCB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICAgICAgdGQuaW5uZXJIVE1MPScnO1xyXG4gICAgICAgIGlmKGRlcG90LnJvdy5wYXRoX2ljb25vX3N2Zyl7XHJcbiAgICAgICAgICAgIHZhciBzdmcgPSBodG1sLnN2Zyh7XHJcbiAgICAgICAgICAgICAgICBjbGFzczpcInN2Zy1hY2Npb25lc1wiXHJcbiAgICAgICAgICAgIH0sW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5wYXRoKHtcclxuICAgICAgICAgICAgICAgICAgICBkOmRlcG90LnJvdy5wYXRoX2ljb25vX3N2Z1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgXSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIsXCIwIDAgNTAgNTBcIik7XHJcbiAgICAgICAgICAgIHRkLmFwcGVuZENoaWxkKHN2Zyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxudmFyIGNyZWFyU1ZHID0gKHBhdGg6c3RyaW5nLHByb3BzOmFueSkgPT4ge1xyXG4gICAgdmFyIHN2ZyA9IGh0bWwuc3ZnKHByb3BzIHx8IHt9LFtcclxuICAgICAgICBodG1sLnBhdGgoe1xyXG4gICAgICAgICAgICBkOnBhdGhcclxuICAgICAgICB9KVxyXG4gICAgXSkuY3JlYXRlKCk7XHJcbiAgICBzdmcuc2V0QXR0cmlidXRlKFwidmlld0JveFwiLFwiMCAwIDUwIDUwXCIpO1xyXG4gICAgcmV0dXJuIHN2Z1xyXG59XHJcbnZhciBjcmVhckJvdG9uQWNjaW9uID0gKGRlcG90Om15T3duLkRlcG90LCBhY3Rpb246RXN0YWRvQWNjaW9uKT0+e1xyXG4gICAgbGV0ICBhY2Npb25TaW5HdWlvbmVzID0gYWN0aW9uLmVhY2Npb24ucmVwbGFjZSgnXycsJyAnKTtcclxuICAgIHZhciBzdmcgPSBjcmVhclNWRyhhY3Rpb24ucGF0aF9pY29ub19zdmcse2NsYXNzOlwic3ZnLWFjY2lvbmVzXCJ9KVxyXG4gICAgaWYoYWN0aW9uLmRlc2FjdGl2YV9ib3Rvbil7XHJcbiAgICAgICAgcmV0dXJuIGh0bWwuc3Bhbih7Y2xhc3M6YHNpbi1ib3Rvbi1hY2Npb25gfSxbYWNjaW9uU2luR3Vpb25lcywgc3ZnIGFzIHVua25vd24gYXMgSFRNTEVsZW1lbnRdKS5jcmVhdGUoKVxyXG4gICAgfVxyXG4gICAgbGV0IGJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtcclxuICAgICAgICBjbGFzczpgYm90b24tYWNjaW9uIGJvdG9uLWFjY2lvbi0ke2FjdGlvbi5lYWNjaW9uX2RpcmVjY2lvbn1gXHJcbiAgICB9LFtcclxuICAgICAgICBgJHthY2Npb25TaW5HdWlvbmVzfWAsXHJcbiAgICAgICAgLy9AdHMtaWdub3JlIHN2ZyBlcyBodG1sZWxlbWVudFxyXG4gICAgICAgIGFjdGlvbi5wYXRoX2ljb25vX3N2Zz9zdmc6bnVsbCxcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgYnV0dG9uLm9uY2xpY2sgPSAoKT0+IHtcclxuICAgICAgICB2YXIgYWN0aW9uRnVuID0gYXN5bmMgKCk9PntcclxuICAgICAgICAgICAgYnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgIGF3YWl0IG15LmFqYXguYWNjaW9uX3RhcmVhc190ZW1fZWplY3V0YXIoe1xyXG4gICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2bzogZGVwb3Qucm93Lm9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICB0YXJlYTogZGVwb3Qucm93LnRhcmVhLFxyXG4gICAgICAgICAgICAgICAgICAgIGVuYzogZGVwb3Qucm93LmVuYyxcclxuICAgICAgICAgICAgICAgICAgICBjb25kaWNpb246IGFjdGlvbi5jb25kaWNpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgYWNjaW9uOiBhY3Rpb24sXHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZWFzVGVtVGFibGU6IGRlcG90LmRlZi5uYW1lXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHZhciBncmlkPWRlcG90Lm1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICBncmlkLnJldHJpZXZlUm93QW5kUmVmcmVzaChkZXBvdCx7cmV0cmlldmVJZ25vcmluZ1doZXJlOnRydWV9KSAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgaWYoYWN0aW9uLm5vbWJyZV93c2NyZWVuKXtcclxuICAgICAgICAgICAgICAgICAgICAvL1RPRE8gYWNvbW9kYXIgZXN0byBlbiBhbGd1biBtb21lbnRvXHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHBhcmFtcyA9IGRlcG90LnJvdztcclxuICAgICAgICAgICAgICAgICAgICB2YXIgdXAgPSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2bzpwYXJhbXMub3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJlYTpwYXJhbXMudGFyZWEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYzogTnVtYmVyKHBhcmFtcy5lbmMpXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGFicmlyRW5jdWVzdGFFblBlc3Rhbm5pYURlZGljYWRhKGxvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZStteS5tZW51U2VwYXJhdG9yK2B3PSR7YWN0aW9uLm5vbWJyZV93c2NyZWVufSZ1cD0ke0pTT04uc3RyaW5naWZ5KHVwKX0mYXV0b3Byb2NlZD10cnVlYClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlcnJcclxuICAgICAgICAgICAgfWZpbmFsbHl7XHJcbiAgICAgICAgICAgICAgICAvL3JldHJhc28gbGEgaGFiaWxpdGFjacOzbiBwb3JxdWUgYSB2ZWNlcyB0YXJkYSBlbiByZWRpYnVqYXJzZSBsYSBib3RvbmVyYSB5IHB1ZWRlIHRyYWVyIHByb2JsZW1hcyBzaSBkYW4gZG9ibGUgY2xpY2sgXHJcbiAgICAgICAgICAgICAgICAvL3lhIHF1ZSBlamVjdXRhIG51ZXZhbWVudGUgdW5hIGFjY2nDs24gcXVlIHlhIHNlIGVqZWN1dMOzICh5IHRlcm1pbsOzKSBhbnRlc1xyXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+YnV0dG9uLmRpc2FibGVkPWZhbHNlLDMwMDApXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgdmFyIGNvbmZpcm1Qcm9taXNlT3B0czogRGlhbG9nT3B0aW9ucyA9IHt9XHJcbiAgICAgICAgaWYoYWN0aW9uLmNvbmZpcm1hKXtcclxuICAgICAgICAgICAgY29uZmlybVByb21pc2VPcHRzLmFza0Zvck5vUmVwZWF0ID0gJ25vIHZvbHZlciBhIG1vc3RyYXInOyAvL211ZXN0cmEgbWVuc2FqZSBwb3IgZGVmYXVsdCBwZXJvIGFuZGEgaWd1YWxcclxuICAgICAgICAgICAgdmFyIGJ1dHRvbnNEZWYgPSBbXHJcbiAgICAgICAgICAgICAgICB7bGFiZWw6J3PDrScsIHZhbHVlOnRydWV9LFxyXG4gICAgICAgICAgICAgICAge2xhYmVsOidubycsIHZhbHVlOmZhbHNlfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIGNvbmZpcm1Qcm9taXNlKGBjb25maXJtYSBhY2Npw7NuIFwiJHthY2Npb25TaW5HdWlvbmVzfVwiP2AsIHsuLi5jb25maXJtUHJvbWlzZU9wdHMsIGJ1dHRvbnNEZWZ9KS50aGVuKGFjdGlvbkZ1bik7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIGFjdGlvbkZ1bigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBidXR0b25cclxufVxyXG5cclxudmFyIGNyZWFyQm90b25lc0FjY2lvbmVzID0gYXN5bmMgKG9wdHM6e2RlcG90Om15T3duLkRlcG90LCBmaWVsZE5hbWU6c3RyaW5nLCBkaXJlY2Npb246IERpcmVjY2lvbkFjY2lvbn0pPT57XHJcbiAgICBsZXQge2RlcG90LGZpZWxkTmFtZSxkaXJlY2Npb259ID0gb3B0cztcclxuICAgIGxldCB0ZCA9IGRlcG90LnJvd0NvbnRyb2xzW2ZpZWxkTmFtZV07XHJcbiAgICB0ZC5pbm5lckhUTUw9Jyc7XHJcbiAgICAoZGVwb3Qucm93Q29udHJvbHMuYWNjaW9uZXMuZ2V0VHlwZWRWYWx1ZSgpfHxbXSlcclxuICAgICAgICAuZmlsdGVyKChhY3Rpb246RXN0YWRvQWNjaW9uKT0+YWN0aW9uLmVhY2Npb25fZGlyZWNjaW9uPT1kaXJlY2Npb24pXHJcbiAgICAgICAgLmZvckVhY2goKGFjdGlvbjpFc3RhZG9BY2Npb24pPT50ZC5hcHBlbmRDaGlsZChjcmVhckJvdG9uQWNjaW9uKGRlcG90LCBhY3Rpb24pKSk7XHJcbn1cclxuXHJcbnZhciBjcmVhclN3aXRjaCA9IChvcHRzOntyb3VuZD86Ym9vbGVhbiwgZGlzYWJsZWQ/OmJvb2xlYW4sIGNoZWNrZWQ/OmJvb2xlYW4sIG9uQ2xpY2tGdW46RnVuY3Rpb24sIG9uRXJyRnVuPzpGdW5jdGlvbn0pPT57XHJcbiAgICB2YXIgY2hlY2tib3ggPSBodG1sLmlucHV0KHt0eXBlOidjaGVja2JveCcsIGNoZWNrZWQ6b3B0cy5jaGVja2VkfSkuY3JlYXRlKCk7XHJcbiAgICBjaGVja2JveC5vbmNsaWNrID0gYXN5bmMoKT0+e1xyXG4gICAgICAgIHRyeXtcclxuICAgICAgICAgICAgY2hlY2tib3guZGlzYWJsZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgYXdhaXQgb3B0cy5vbkNsaWNrRnVuKClcclxuICAgICAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKVxyXG4gICAgICAgICAgICB0aHJvdyBlcnJcclxuICAgICAgICB9ZmluYWxseXtcclxuICAgICAgICAgICAgY2hlY2tib3guZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGh0bWwubGFiZWwoe2NsYXNzOidzd2l0Y2gnfSxbXHJcbiAgICAgICAgY2hlY2tib3gsXHJcbiAgICAgICAgaHRtbC5zcGFuKHtjbGFzczpgc2xpZGVyICR7b3B0cy5yb3VuZD8ncm91bmQnOicnfWB9KSxcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG59XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5oYWJpbGl0YXI9e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHRkLmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgICAgdGQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgICAgIGNyZWFyU3dpdGNoKHtcclxuICAgICAgICAgICAgICAgIHJvdW5kOnRydWUsXHJcbiAgICAgICAgICAgICAgICBjaGVja2VkOmRlcG90LnJvdy5oYWJpbGl0YWRhLFxyXG4gICAgICAgICAgICAgICAgb25DbGlja0Z1bjogYXN5bmMgKCk9PntcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBteS5hamF4LmVuY3Vlc3RhX2hhYmlsaXRhcl9kZXNoYWJpbGl0YXIoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpdm86IGRlcG90LnJvdy5vcGVyYXRpdm8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYzogZGVwb3Qucm93LmVuY1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBncmlkPWRlcG90Lm1hbmFnZXI7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKT0+Z3JpZC5yZXRyaWV2ZVJvd0FuZFJlZnJlc2goZGVwb3QpLDMwMCk7Ly9wYXJhIHF1ZSBzZSB2ZWEgZWwgZWZlY3RvXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFjY2lvbmVzQXZhbmNlPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzQWNjaW9uZXMoe2RlcG90LGZpZWxkTmFtZSxkaXJlY2Npb246J2F2YW5jZSd9KTtcclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFjY2lvbmVzUmV0cm9jZXNvPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzQWNjaW9uZXMoe2RlcG90LGZpZWxkTmFtZSxkaXJlY2Npb246J3JldHJvY2Vzbyd9KTtcclxuICAgIH1cclxufTtcclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmFjY2lvbmVzQmxhbnF1ZW89e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICBjcmVhckJvdG9uZXNBY2Npb25lcyh7ZGVwb3QsZmllbGROYW1lLGRpcmVjY2lvbjonYmxhbnF1ZW8nfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5mdW5jdGlvbiBcclxuYm90b25DbGllbnRTaWRlRW5HcmlsbGEob3B0czogeyBub21icmVCb3Rvbjogc3RyaW5nLCBsbGFtYWRhOiAoZGVwb3Q6IG15T3duLkRlcG90KSA9PiBQcm9taXNlPGFueT4gfSkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICBwcmVwYXJlOiBmdW5jdGlvbiAoZGVwb3Q6IG15T3duLkRlcG90LCBmaWVsZE5hbWU6IHN0cmluZykge1xyXG4gICAgICAgICAgICB2YXIgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgICAgICB2YXIgYm90b24gPSBodG1sLmJ1dHRvbihvcHRzLm5vbWJyZUJvdG9uKS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgdGQuaW5uZXJIVE1MID0gXCJcIjtcclxuICAgICAgICAgICAgdGQuYXBwZW5kQ2hpbGQoYm90b24pO1xyXG4gICAgICAgICAgICB2YXIgcmVzdGF1cmFyQm90b24gPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi5kaXNhYmxlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgYm90b24udGV4dENvbnRlbnQgPSBvcHRzLm5vbWJyZUJvdG9uO1xyXG4gICAgICAgICAgICAgICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyc7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGJvdG9uLm9uY2xpY2sgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9ICdwcm9jZXNhbmRvLi4uJztcclxuICAgICAgICAgICAgICAgIG9wdHMubGxhbWFkYShkZXBvdCkudGhlbihhc3luYyBmdW5jdGlvbihyZXN1bHQpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdCAmJiB0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAnb2snIGluIHJlc3VsdCl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKHJlc3VsdC5vayl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZ3JpZD1kZXBvdC5tYW5hZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgZ3JpZC5yZXRyaWV2ZVJvd0FuZFJlZnJlc2goZGVwb3QpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlcG90LmRldGFpbENvbnRyb2xzLmluY29uc2lzdGVuY2lhcyl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwb3QuZGV0YWlsQ29udHJvbHMuaW5jb25zaXN0ZW5jaWFzLmZvcmNlRGlzcGxheURldGFpbEdyaWQoe30pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3Rvbi50ZXh0Q29udGVudCA9ICByZXN1bHQubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uLnRpdGxlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b24uc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJyM4RjgnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChyZXN0YXVyYXJCb3RvbiwgMjUwMCk7XHJcbiAgICAgICAgICAgICAgICB9LCBmdW5jdGlvbiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYm90b24udGV4dENvbnRlbnQgPSAnZXJyb3InO1xyXG4gICAgICAgICAgICAgICAgICAgIGJvdG9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjRkY4JztcclxuICAgICAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL2lmICgoZGVwb3Qucm93LmNvbnNpc3RpZG89PW51bGwgICYmIGRlcG90LnJvdy5yZWEhPW51bGwpIHx8IGRlcG90LnJvdy5tb2RpZmljYWRvIT1udWxsICYmIGRlcG90LnJvdy5jb25zaXN0aWRvIT1udWxsICYmIGRlcG90LnJvdy5tb2RpZmljYWRvID5kZXBvdC5yb3cuY29uc2lzdGlkbyl7XHJcbiAgICAgICAgICAgIC8vICAgIGJvdG9uLnN0eWxlLmJhY2tncm91bmRDb2xvcj0nIzhDRidcclxuICAgICAgICAgICAgLy99XHJcbiAgICAgICAgfSAgICAgICAgXHJcbiAgICB9O1xyXG59XHJcblxyXG5cclxubXlPd24uY2xpZW50U2lkZXMuY29uc2lzdGlyID0gYm90b25DbGllbnRTaWRlRW5HcmlsbGEoe1xyXG4gICAgbm9tYnJlQm90b246ICdjb25zaXN0aXInLFxyXG4gICAgbGxhbWFkYTogZnVuY3Rpb24gKGRlcG90OiBteU93bi5EZXBvdCkge1xyXG4gICAgICAgIHZhciBteVJlYUZpZWxkTmFtZSA9IGRlcG90Lm1hbmFnZXIuZGVmLnRhYmxlTmFtZT09XCJ0ZW1cIj8ncmVhJzondWx0X3JlYSc7XHJcbiAgICAgICAgdmFyIGZpbHRyb1JlYT1jb25zaXN0aXJfZmlsdHJvKGRlcG90LnJvdy50YXJlYSwgZGVwb3Qucm93W215UmVhRmllbGROYW1lXSwgZGVwb3Qucm93LnJlYSlcclxuICAgICAgICByZXR1cm4gZmlsdHJvUmVhPyBteU93bi5hamF4LmNvbnNpc3Rpcl9lbmN1ZXN0YSh7XHJcbiAgICAgICAgICAgIG9wZXJhdGl2bzogZGVwb3Qucm93Lm9wZXJhdGl2byxcclxuICAgICAgICAgICAgaWRfY2FzbzogZGVwb3Qucm93LmVuY1xyXG4gICAgICAgIH0pOiBhbGVydFByb21pc2UoJ0xhIGVuY3Vlc3RhIGRlYmUgdGVuZXIgZGF0byBlbiByZWEgcGFyYSBwb2RlciBjb25zaXN0aXJsYS4nKTtcclxuICAgIH1cclxufSk7XHJcblxyXG5teU93bi53U2NyZWVucy5wcm9jLnJlc3VsdC5tb3N0cmFyX2VuY3Vlc3Rhc19hX2JsYW5xdWVhcj1mdW5jdGlvbihyZXN1bHQsIGRpdlJlc3VsdCl7XHJcbiAgICBpZihyZXN1bHQucm93cy5sZW5ndGgpe1xyXG4gICAgICAgIHZhciBjdXJyZW50VG9rZW46c3RyaW5nfG51bGwgPSBudWxsXHJcbiAgICAgICAgdmFyIG5yb0NhcmdhID0gMDtcclxuICAgICAgICB2YXIgZW5jdWVzdGFzRGl2OiBudWxsfEhUTUxEaXZFbGVtZW50ID0gbnVsbDtcclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoaHRtbC5oMignb3BlcmF0aXZvOiAnICsgcmVzdWx0Lm9wZXJhdGl2bykuY3JlYXRlKCkpO1xyXG4gICAgICAgIHJlc3VsdC5yb3dzLmZvckVhY2goKGVuY3Vlc3RhKT0+e1xyXG4gICAgICAgICAgICBpZihjdXJyZW50VG9rZW4gIT0gZW5jdWVzdGEuY2FyZ2Fkb19kbSl7XHJcbiAgICAgICAgICAgICAgICBucm9DYXJnYSsrO1xyXG4gICAgICAgICAgICAgICAgY3VycmVudFRva2VuID0gZW5jdWVzdGEuY2FyZ2Fkb19kbTtcclxuICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChodG1sLmg0KCdjYXJnYSBOwrogJyArIG5yb0NhcmdhLnRvU3RyaW5nKCkpLmNyZWF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIGVuY3Vlc3Rhc0RpdiA9IGh0bWwuZGl2KHtjbGFzczonZW5jdWVzdGFzLWEtYmxhbnF1ZWFyJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgLy9sYXMgY29waW8gY29uIGxldCBwYXJhIHF1ZSB0b21lIGVsIHZhbG9yIGFjdHVhbCB5IG5vIGVsIMO6bHRpbW9cclxuICAgICAgICAgICAgICAgIGxldCBtaVRva2VuID0gY3VycmVudFRva2VuO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1pTnJvQ2FyZ2EgPSBucm9DYXJnYTtcclxuICAgICAgICAgICAgICAgIHZhciBidXR0b24gPSBodG1sLmJ1dHRvbih7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M6YGJvdG9uLWJsYW5xdWVhci1kbSBib3Rvbi1hY2Npb25gXHJcbiAgICAgICAgICAgICAgICB9LCAnYmxhbnF1ZWFyIGNhcmdhICcgKyBucm9DYXJnYS50b1N0cmluZygpKS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgIGJ1dHRvbi5vbmNsaWNrID0gYXN5bmMgKCk9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1haW5EaXYgPSBodG1sLmRpdigpLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoe2NsYXNzOidkYW5nZXInfSwgW2BFc3TDoSBwb3IgYmxhbnF1ZWFyIGxhIGNhcmdhICR7bWlOcm9DYXJnYX0uIE5vIHNlIHBvZHLDoSBkZXNjYXJnYXIgZWwgZGlzcG9zaXRpdm8uYF0pXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgaW5wdXRGb3J6YXIgPSBodG1sLmlucHV0KHtjbGFzczonaW5wdXQtZm9yemFyJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIG1haW5EaXYuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbJ1NlIHB1ZWRlIGZvcnphciBlbCBibGFucXVlbyAnLGlucHV0Rm9yemFyXSlcclxuICAgICAgICAgICAgICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGZvcnphciA9IGF3YWl0IGNvbmZpcm1Qcm9taXNlKG1haW5EaXYsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2l0aENsb3NlQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0OmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b25zRGVmOltcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtsYWJlbDonZm9yemFyIGJsYW5xdWVvJywgdmFsdWU6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGFiZWw6J2NhbmNlbGFyIGJsYW5xdWVvJywgdmFsdWU6ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBpZihmb3J6YXIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihpbnB1dEZvcnphci52YWx1ZT09J2Zvcnphcicpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRCbGFucXVlbyA9IGF3YWl0IG15LmFqYXguZG1fYmxhbnF1ZWFyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aXZvOiByZXN1bHQub3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbjogbWlUb2tlblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5pbm5lckhUTUw9Jyc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0QmxhbnF1ZW8uZm9yRWFjaCgodHQ6YW55KT0+e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdih7fSxbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5zcGFuKHt9LGAke3R0LnJlc3VsdF9ibGFucXVlb31gKSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKCdzaSBuZWNlc2l0YSBibGFucXVlYXIgZXNjcmliYSBmb3J6YXIuJylcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChlbmN1ZXN0YXNEaXYpO1xyXG4gICAgICAgICAgICAgICAgZGl2UmVzdWx0LmFwcGVuZENoaWxkKGJ1dHRvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZW5jdWVzdGFzRGl2Py5hcHBlbmRDaGlsZChodG1sLmRpdih7fSxbXHJcbiAgICAgICAgICAgICAgICBodG1sLnNwYW4oYGVuY3Vlc3RhOiAke2VuY3Vlc3RhLmVuY30gYCksXHJcbiAgICAgICAgICAgICAgICBodG1sLnNwYW4oYHRhcmVhOiAgJHtlbmN1ZXN0YS50YXJlYX0gYCksXHJcbiAgICAgICAgICAgIF0pLmNyZWF0ZSgpKVxyXG4gICAgICAgIH0pXHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHByZXZpc3VhbGl6YXJFbmN1ZXN0YSA9IChcclxuICAgIHJlc3VsdFRlbTphbnksIFxyXG4gICAgZGl2UmVzdWx0OkhUTUxEaXZFbGVtZW50LCBcclxuICAgIHBhcmFtczp7XHJcbiAgICAgICAgbm9tYnJlUHJvY2VkdXJlOnN0cmluZyxcclxuICAgICAgICBpZ25vcmFKc29uRW5jdWVzdGFWYWNpbzpib29sZWFuXHJcbiAgICAgICAgbGFiZWxBY3Rpb246IHN0cmluZ1xyXG4gICAgfVxyXG4pID0+e1xyXG4gICAgbGV0IHtjYXNvVGVtfSA9ICByZXN1bHRUZW07XHJcbiAgICBpZighY2Fzb1RlbS5qc29uX2VuY3Vlc3RhKXtcclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoaHRtbC5wKHtpZDonbWVuc2FqZS1uby1oYXktanNvbi1lbmN1ZXN0YSd9LGBubyBzZSBlbmNvbnRyw7MgaW5mb3JtYWNpb24gY2FyZ2FkYSBlbiBsYSBlbmN1ZXN0YSAke2Nhc29UZW0uZW5jfWApLmNyZWF0ZSgpKTtcclxuICAgIH1cclxuICAgIGlmKGNhc29UZW0uanNvbl9lbmN1ZXN0YSB8fCBwYXJhbXMuaWdub3JhSnNvbkVuY3Vlc3RhVmFjaW8pe1xyXG4gICAgICAgIHZhciBlbmN1ZXN0YURpdiA9IGh0bWwuZGl2KHtpZDonYmFja3VwLWRpdid9KS5jcmVhdGUoKTtcclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoZW5jdWVzdGFEaXYpO1xyXG4gICAgICAgIHRyeXtcclxuICAgICAgICAgICAgbXkuYWdyZWdhcl9qc29uKGVuY3Vlc3RhRGl2LCBjYXNvVGVtLmpzb25fZW5jdWVzdGEpO1xyXG4gICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoaHRtbC5wKHtpZDonbWVuc2FqZS1lcnJvci1qc29uLWVuY3Vlc3RhJ30sYG5vIHNlIHB1ZG8gYWwgcHJldmlzdWFsaXphciBsYSBlbmN1ZXN0YSAke2Nhc29UZW0uZW5jfSBjb3JyZWN0YW1lbnRlLiAke2Vyci5tZXNzYWdlfWApLmNyZWF0ZSgpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIGJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtcclxuICAgICAgICAgICAgY2xhc3M6YGJvdG9uLWJsYW5xdWVhci1lbmN1ZXN0YS1hY2Npb25gXHJcbiAgICAgICAgfSwgYCR7cGFyYW1zLmxhYmVsQWN0aW9ufSBlbmN1ZXN0YWApLmNyZWF0ZSgpO1xyXG4gICAgICAgIGJ1dHRvbi5vbmNsaWNrID0gYXN5bmMgKCk9PiB7XHJcbiAgICAgICAgICAgIHZhciBtYWluRGl2ID0gaHRtbC5kaXYoKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICBtYWluRGl2LmFwcGVuZENoaWxkKFxyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonZGFuZ2VyJ30sIFtgRXN0w6EgcG9yICR7cGFyYW1zLmxhYmVsQWN0aW9ufSBsYSBlbmN1ZXN0YSAke2Nhc29UZW0uZW5jfS4gU2UgcGVyZGVyw6FuIGxvcyBkYXRvcyBkZSBsYSBtaXNtYS5gXSlcclxuICAgICAgICAgICAgICAgIF0pLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHZhciBpbnB1dEZvcnphciA9IGh0bWwuaW5wdXQoe2NsYXNzOidpbnB1dC1mb3J6YXInfSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgIG1haW5EaXYuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5kaXYoW2BwYXJhICR7cGFyYW1zLmxhYmVsQWN0aW9ufSBlc2NyaWJhIGZvcnphciBgLGlucHV0Rm9yemFyXSlcclxuICAgICAgICAgICAgXSkuY3JlYXRlKCkpO1xyXG4gICAgICAgICAgICB2YXIgZm9yemFyID0gYXdhaXQgY29uZmlybVByb21pc2UobWFpbkRpdiwge1xyXG4gICAgICAgICAgICAgICAgd2l0aENsb3NlQnV0dG9uOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIHJlamVjdDpmYWxzZSxcclxuICAgICAgICAgICAgICAgIGJ1dHRvbnNEZWY6W1xyXG4gICAgICAgICAgICAgICAgICAgIHtsYWJlbDonZm9yemFyJywgdmFsdWU6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICAgICAge2xhYmVsOidjYW5jZWxhcicsIHZhbHVlOmZhbHNlfVxyXG4gICAgICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYoZm9yemFyKXtcclxuICAgICAgICAgICAgICAgIGlmKGlucHV0Rm9yemFyLnZhbHVlPT0nZm9yemFyJyl7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHdhaXRHaWYgPSBodG1sLmltZyh7c3JjOidpbWcvbG9hZGluZzE2LmdpZid9KS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3YWl0R2lmLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQod2FpdEdpZik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXN1bHRCbGFucXVlbyA9IGF3YWl0IG15LmFqYXhbcGFyYW1zLm5vbWJyZVByb2NlZHVyZV0oY2Fzb1RlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5pbm5lckhUTUw9cmVzdWx0QmxhbnF1ZW87XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBidXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRHaWYuc3R5bGUuZGlzcGxheSA9ICdub25lJztcclxuICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKGBzaSBuZWNlc2l0YSAke3BhcmFtcy5sYWJlbEFjdGlvbn0gZXNjcmliYSBmb3J6YXIuYClcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoYnV0dG9uKTtcclxuICAgIH1cclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMucHJvYy5yZXN1bHQubW9zdHJhcl9lbmN1ZXN0YV9hX2JsYW5xdWVhcl9jb250ZW5pZG89ZnVuY3Rpb24ocmVzdWx0LCBkaXZSZXN1bHQpe1xyXG4gICAgcHJldmlzdWFsaXphckVuY3Vlc3RhKHJlc3VsdCwgZGl2UmVzdWx0LCB7XHJcbiAgICAgICAgbm9tYnJlUHJvY2VkdXJlOidlbmN1ZXN0YV9ibGFucXVlYXInLFxyXG4gICAgICAgIGlnbm9yYUpzb25FbmN1ZXN0YVZhY2lvOiBmYWxzZSxcclxuICAgICAgICBsYWJlbEFjdGlvbjogJ2JsYW5xdWVhcidcclxuICAgIH0pXHJcbn1cclxuXHJcbm15T3duLndTY3JlZW5zLnByb2MucmVzdWx0Lm1vc3RyYXJfZW5jdWVzdGFfYV9ib3JyYXI9ZnVuY3Rpb24ocmVzdWx0LCBkaXZSZXN1bHQpe1xyXG4gICAgcHJldmlzdWFsaXphckVuY3Vlc3RhKHJlc3VsdCwgZGl2UmVzdWx0LCB7XHJcbiAgICAgICAgbm9tYnJlUHJvY2VkdXJlOidlbmN1ZXN0YV9ib3JyYXInLFxyXG4gICAgICAgIGlnbm9yYUpzb25FbmN1ZXN0YVZhY2lvOiB0cnVlLFxyXG4gICAgICAgIGxhYmVsQWN0aW9uOiAnYm9ycmFyJ1xyXG4gICAgfSlcclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMuZGVtbz1hc3luYyBmdW5jdGlvbihfYWRkclBhcmFtcyl7XHJcbiAgICAvLyBAdHMtaWdub3JlIGRlc3BsZWdhckZvcm11bGFyaW9BY3R1YWwgZ2xvYmFsXHJcbiAgICB3aW5kb3cuZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbCh7bW9kb0RlbW86dHJ1ZX0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBhcnJheUZsYXQ8VD4oYXJyYXlzOlRbXVtdKTpUW117XHJcbiAgICByZXR1cm4gKFtdIGFzIFRbXSkuY29uY2F0LmFwcGx5KFtdLCBhcnJheXMpO1xyXG59XHJcbiJdfQ==
|
|
812
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NsaWVudC9jbGllbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsMkNBQWdDO0lBQ2hDLG1FQUFrRztJQUtsRyxrQ0FBa0M7SUFDbEMscUVBQThHO0lBQzlHLG1FQUFrSjtJQUVsSixrQkFBa0I7SUFFbEIsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDO0lBQzdCLElBQUksaUJBQWlCLEdBQWMsSUFBSSxDQUFDO0lBRXhDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsR0FBUSxFQUFFO1FBQ3BDLElBQUksRUFBRSxHQUFHLEtBQUssQ0FBQztRQUNmLElBQUcsQ0FBQztZQUNBLGlCQUFpQixHQUFHLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDeEQsQ0FBQztRQUFBLE9BQU0sR0FBRyxFQUFDLENBQUM7WUFDUixpQkFBaUIsR0FBQyxJQUFJLENBQUM7UUFDM0IsQ0FBQztRQUNELEtBQUssQ0FBQyxRQUFRLENBQUMsY0FBYyxHQUFDO1lBQzFCLFVBQVUsRUFBQztnQkFDUCxFQUFDLElBQUksRUFBQyxXQUFXLEVBQUcsUUFBUSxFQUFDLE1BQU0sRUFBRSxZQUFZLEVBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFDLFlBQVksRUFBQztnQkFDN0YsRUFBQyxJQUFJLEVBQUMsT0FBTyxFQUFPLFFBQVEsRUFBQyxNQUFNLEVBQUUsWUFBWSxFQUFDLGFBQWEsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFDO2dCQUN0RixFQUFDLElBQUksRUFBQyxLQUFLLEVBQVMsUUFBUSxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUMsTUFBTSxFQUFDO2FBQy9EO1lBQ0QsVUFBVSxFQUFDLElBQUk7WUFDZixVQUFVLEVBQUMsQ0FBTyxNQUFNLEVBQUMsRUFBRTs7Z0JBQ3ZCLHNCQUFzQjtnQkFD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UyxNQUFNLEVBQUUsU0FBUztRQUN4RixxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO1lBQ3JDLGVBQWUsRUFBQyxvQkFBb0I7WUFDcEMsdUJBQXVCLEVBQUUsS0FBSztZQUM5QixXQUFXLEVBQUUsV0FBVztTQUMzQixDQUFDLENBQUE7SUFDTixDQUFDLENBQUE7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMseUJBQXlCLEdBQUMsVUFBUyxNQUFNLEVBQUUsU0FBUztRQUMzRSxxQkFBcUIsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO1lBQ3JDLGVBQWUsRUFBQyxpQkFBaUI7WUFDakMsdUJBQXVCLEVBQUUsSUFBSTtZQUM3QixXQUFXLEVBQUUsUUFBUTtTQUN4QixDQUFDLENBQUE7SUFDTixDQUFDLENBQUE7SUFFRCxLQUFLLENBQUMsUUFBUSxDQUFDLElBQUksR0FBQyxVQUFlLFdBQVc7O1lBQzFDLDhDQUE4QztZQUM5QyxNQUFNLENBQUMseUJBQXlCLENBQUMsRUFBQyxRQUFRLEVBQUMsSUFBSSxFQUFDLENBQUMsQ0FBQztRQUN0RCxDQUFDO0tBQUEsQ0FBQTtJQUVELFNBQVMsU0FBUyxDQUFJLE1BQVk7UUFDOUIsT0FBUSxFQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7aHRtbH0gZnJvbSBcImpzLXRvLWh0bWxcIjtcclxuaW1wb3J0IHtkaXNwYXRjaGVycywgZG1UcmFlckRhdG9zRm9ybXVsYXJpbywgdHJhZXJFc3RydWN0dXJhfSBmcm9tIFwiLi4vdW5sb2dnZWQvcmVkdXgtZm9ybXVsYXJpb1wiO1xyXG5pbXBvcnQgeyBDYXNvU3RhdGUsICBcclxuICAgIElkRm9ybXVsYXJpbywgRGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMsIElkRW5jLCBJZE9wZXJhdGl2bywgSWRUYXJlYSwgRXN0YWRvQWNjaW9uLCBEaXJlY2Npb25BY2Npb24sXHJcbiAgICBDYW1wb1BrUmFpeiwgTW9kb0RNXHJcbn0gZnJvbSBcIi4uL3VubG9nZ2VkL3RpcG9zXCI7XHJcbmltcG9ydCAqIGFzIGxpa2VBciBmcm9tIFwibGlrZS1hclwiO1xyXG5pbXBvcnQge2dldEVzdHJ1Y3R1cmEsIHNldFBlcnNpc3RpckRhdG9zQnlQYXNzLCBNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVl9IGZyb20gXCIuLi91bmxvZ2dlZC9ieXBhc3MtZm9ybXVsYXJpb1wiXHJcbmltcG9ydCB7QkFDS1VQUywgY2FyZ2FyRXN0cnVjdHVyYSwgY2FyZ2FySG9qYURlUnV0YSwgR0xPVkFSX0RBVE9TQllQQVNTLCBHTE9WQVJfRVNUUlVDVFVSQSwgR0xPVkFSX01PRE9CWVBBU1N9IGZyb20gXCIuLi91bmxvZ2dlZC9hYnJpci1mb3JtdWxhcmlvXCJcclxuXHJcbi8vVE9ETyBHRU5FUkFMSVpBUlxyXG5cclxuY29uc3QgVEFSRUFfREVGQVVMVCA9ICdlbmN1JztcclxudmFyIE9QRVJBVElWT19ERUZBVUxUOnN0cmluZ3xudWxsPSBudWxsO1xyXG5cclxubXlPd24uYXV0b1NldHVwRnVuY3Rpb25zLnB1c2goYXN5bmMgKCk9PntcclxuICAgIHZhciBteSA9IG15T3duOyAgICBcclxuICAgIHRyeXtcclxuICAgICAgICBPUEVSQVRJVk9fREVGQVVMVCA9IGF3YWl0IG15LmFqYXgub3BlcmF0aXZvX2dldCh7fSk7XHJcbiAgICB9Y2F0Y2goZXJyKXtcclxuICAgICAgICBPUEVSQVRJVk9fREVGQVVMVD1udWxsO1xyXG4gICAgfVxyXG4gICAgbXlPd24ud1NjcmVlbnMuYWJyaXJfZW5jdWVzdGE9e1xyXG4gICAgICAgIHBhcmFtZXRlcnM6W1xyXG4gICAgICAgICAgICB7bmFtZTonb3BlcmF0aXZvJyAsIHR5cGVOYW1lOid0ZXh0JywgZGVmYXVsdFZhbHVlOk9QRVJBVElWT19ERUZBVUxULCByZWZlcmVuY2VzOidvcGVyYXRpdm9zJ30sXHJcbiAgICAgICAgICAgIHtuYW1lOid0YXJlYScgICAgICwgdHlwZU5hbWU6J3RleHQnLCBkZWZhdWx0VmFsdWU6VEFSRUFfREVGQVVMVCwgcmVmZXJlbmNlczogJ3RhcmVhcyd9LFxyXG4gICAgICAgICAgICB7bmFtZTonZW5jJyAgICAgICAsIHR5cGVOYW1lOidpbnRlZ2VyJywgZGVmYXVsdFZhbHVlOjEzMDAzMX1cclxuICAgICAgICBdLFxyXG4gICAgICAgIGF1dG9wcm9jZWQ6dHJ1ZSxcclxuICAgICAgICBtYWluQWN0aW9uOmFzeW5jIChwYXJhbXMpPT57XHJcbiAgICAgICAgICAgIC8vIGFudGVzOiBhYnJpckRpcmVjdG9cclxuICAgICAgICAgICAgdmFyIHtvcGVyYXRpdm8sIGVuYywgdGFyZWF9ID0gcGFyYW1zO1xyXG4gICAgICAgICAgICB2YXIgZXN0cnVjdHVyYSA9IGdldEVzdHJ1Y3R1cmEoKTtcclxuICAgICAgICAgICAgdmFyIGNhcmdhID0gYXdhaXQgbXkuYWpheC5kbV9mb3Jwa3JhaXpfY2FyZ2FyKHtvcGVyYXRpdm8sIHBrX3JhaXpfdmFsdWU6ZW5jLCB0YXJlYX0pIGFzIERhdG9zQnlQYXNzUGVyc2lzdGlibGVzO1xyXG4gICAgICAgICAgICBpZighZXN0cnVjdHVyYSB8fCAoZXN0cnVjdHVyYS50aW1lc3RhbXA/PzApIDwgY2FyZ2EudGltZXN0YW1wRXN0cnVjdHVyYSEgfHwgZXN0cnVjdHVyYS5vcGVyYXRpdm8gIT0gb3BlcmF0aXZvIHx8IG15LmNvbmZpZy5jb25maWcuZGV2ZWwpe1xyXG4gICAgICAgICAgICAgICAgZXN0cnVjdHVyYSA9IGF3YWl0IHRyYWVyRXN0cnVjdHVyYSh7b3BlcmF0aXZvfSlcclxuICAgICAgICAgICAgICAgIGNhcmdhckVzdHJ1Y3R1cmEoZXN0cnVjdHVyYSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9AdHMtaWdub3JlXHJcbiAgICAgICAgICAgIHZhciBzdGF0ZTpDYXNvU3RhdGUgPSB7fVxyXG4gICAgICAgICAgICBpbmljaWFsaXphclN0YXRlKHN0YXRlKTtcclxuICAgICAgICAgICAgdmFyIGZvclBrUmFpeiA9IHtmb3JtdWxhcmlvOmNhcmdhLmluZm9ybWFjaW9uSGRyW2VuYyBhcyBJZEVuY10udGFyZWEubWFpbl9mb3JtLCBbZXN0cnVjdHVyYS5wa0FncmVnYWRhVWFQcGFsXTplbmN9O1xyXG4gICAgICAgICAgICBzZXRQZXJzaXN0aXJEYXRvc0J5UGFzcyhcclxuICAgICAgICAgICAgICAgIGFzeW5jIGZ1bmN0aW9uIHBlcnNpc3RpckRhdG9zQnlQYXNzRW5CYXNlRGVEYXRvcyhwZXJzaXN0ZW50ZXM6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMpe1xyXG4gICAgICAgICAgICAgICAgICAgIGlmKHBlcnNpc3RlbnRlcy5zb2xvTGVjdHVyYSl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkVzdMOhIGludGVudGFuZG8gbW9kaWZpY2FyIHVuYSBlbmN1ZXN0YSBhYmllcnRhIGNvbW8gc29sbyBsZWN0dXJhLCBubyBzZSBndWFyZGFyb24gbG9zIGNhbWJpb3NcIilcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbXkuYWpheC5kbV9mb3Jwa3JhaXpfZGVzY2FyZ2FyKHtvcGVyYXRpdm8sIHBlcnNpc3RlbnRlc30pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICAgIGlmKCFjYXJnYS5yZXNwdWVzdGFzW2VzdHJ1Y3R1cmEudWFQcGFsXVtmb3JQa1JhaXpbZXN0cnVjdHVyYS5wa0FncmVnYWRhVWFQcGFsIGFzIENhbXBvUGtSYWl6XV0pe1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBzZSBlbmN1ZW50cmEgZWwvbGEgJHtlc3RydWN0dXJhLnBrQWdyZWdhZGFVYVBwYWx9ICR7Zm9yUGtSYWl6W2VzdHJ1Y3R1cmEucGtBZ3JlZ2FkYVVhUHBhbF19YCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FyZ2FySG9qYURlUnV0YSh7Li4uY2FyZ2EsIG1vZG9BbG1hY2VuYW1pZW50bzonc2Vzc2lvbid9KTtcclxuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxyXG4gICAgICAgICAgICBkZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsKHtvcGVyYXRpdm8sIG1vZG9EZW1vOmZhbHNlLCBmb3JQa1JhaXp9KTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgbXlPd24ud1NjcmVlbnMub2J0ZW5lcl90ZWxlZm9ubz17XHJcbiAgICAgICAgcGFyYW1ldGVyczpbXSxcclxuICAgICAgICBhdXRvcHJvY2VkOnRydWUsXHJcbiAgICAgICAgbWFpbkFjdGlvbjphc3luYyAoX3BhcmFtcyk9PntcclxuICAgICAgICAgICAgLy8gYW50ZXM6IGFicmlyRGlyZWN0b1xyXG4gICAgICAgICAgICB2YXIge29wZXJhdGl2bywgdGFyZWF9ID0ge29wZXJhdGl2bzogT1BFUkFUSVZPX0RFRkFVTFQsIHRhcmVhOiBUQVJFQV9ERUZBVUxUfTtcclxuICAgICAgICAgICAgbGV0IGVuYyA9IHBhcnNlSW50KGF3YWl0IG15LmFqYXguZ2V0X3JhbmRvbV9mcmVlX2Nhc2Uoe29wZXJhdGl2b30pKTsgXHJcbiAgICAgICAgICAgIGF3YWl0IG15T3duLndTY3JlZW5zLmFicmlyX2VuY3Vlc3RhLm1haW5BY3Rpb24oe29wZXJhdGl2bywgZW5jLCB0YXJlYX0pO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICBteU93bi53U2NyZWVucy5jb25zaXN0aXJfZW5jdWVzdGE9e1xyXG4gICAgICAgIHBhcmFtZXRlcnM6W1xyXG4gICAgICAgICAgICB7bmFtZTonb3BlcmF0aXZvJyAsIHR5cGVOYW1lOid0ZXh0JywgZGVmYXVsdFZhbHVlOk9QRVJBVElWT19ERUZBVUxULCByZWZlcmVuY2VzOidvcGVyYXRpdm9zJ30sXHJcbiAgICAgICAgICAgIHtuYW1lOid0YXJlYScgICAgICwgdHlwZU5hbWU6J3RleHQnfSxcclxuICAgICAgICAgICAge25hbWU6J2VuYycgICAgICAgLCB0eXBlTmFtZTonaW50ZWdlcid9XHJcbiAgICAgICAgXSxcclxuICAgICAgICBhdXRvcHJvY2VkOnRydWUsXHJcbiAgICAgICAgbWFpbkFjdGlvbjphc3luYyAocGFyYW1zKT0+e1xyXG4gICAgICAgICAgICBpZiAod2luZG93Lm9wZW5lcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIG1haW5Ub3BCYXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbi10b3AtYmFyJyk7XHJcbiAgICAgICAgICAgICAgICBpZiAobWFpblRvcEJhcikgeyBcclxuICAgICAgICAgICAgICAgICAgICBtYWluVG9wQmFyLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdmFyIHtvcGVyYXRpdm8sIHRhcmVhLCBlbmMgfSA9IHBhcmFtcztcclxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IGF3YWl0IG15T3duLmFqYXguY29uc2lzdGlyX2VuY3Vlc3RhKHtcclxuICAgICAgICAgICAgICAgIG9wZXJhdGl2bzogb3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgaWRfY2FzbzogZW5jXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZihyZXN1bHQub2spe1xyXG4gICAgICAgICAgICAgICAgdmFyIGZpeGVkRmllbGRzID0gW107XHJcbiAgICAgICAgICAgICAgICBmaXhlZEZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6ICdvcGVyYXRpdm8nLCB2YWx1ZTogb3BlcmF0aXZvfSk7XHJcbiAgICAgICAgICAgICAgICBmaXhlZEZpZWxkcy5wdXNoKHtmaWVsZE5hbWU6ICd2aXZpZW5kYScsIHZhbHVlOiBlbmN9KTtcclxuICAgICAgICAgICAgICAgIHZhciBtYWluTGF5b3V0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21haW5fbGF5b3V0JykhO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRpdkdyaWxsYSA9IGh0bWwuZGl2KHtpZDonaW5jb25zaXN0ZW5jaWFzJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgbWFpbkxheW91dC5pbnNlcnRCZWZvcmUoZGl2R3JpbGxhLCBtYWluTGF5b3V0LmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgICAgICAgICAgdmFyIGRpdkJvdG9uZXMgPSBodG1sLmRpdih7aWQ6J2JvdG9uZXMtcG9zdC1jb25zaXN0aXInfSxbXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXJCb3RvbkNlcnJhckVuY3Vlc3RhKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgY2VycmFyIGVuY3Vlc3RhYFxyXG4gICAgICAgICAgICAgICAgICAgICksXHJcbiAgICAgICAgICAgICAgICAgICAgY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZWEsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuYywgXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGB2b2x2ZXIgYSBlbmN1ZXN0YSAke2VuY31gXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgXSkuY3JlYXRlKClcclxuICAgICAgICAgICAgICAgIG1haW5MYXlvdXQuaW5zZXJ0QmVmb3JlKGRpdkJvdG9uZXMsIG1haW5MYXlvdXQuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgICAgICAgICBteS50YWJsZUdyaWQoXCJpbmNvbnNpc3RlbmNpYXNfY3VtcGxlbl9jb25kaWNpb25cIiwgZGl2R3JpbGxhLHt0YWJsZURlZjp7fSxmaXhlZEZpZWxkczogZml4ZWRGaWVsZHN9KTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59KTtcclxuXHJcblxyXG4vL3F1aXRhIGJvb3RzdHJhcCBkZWwgaGVhZCBwYXJhIHF1ZSBubyByb21wYSBsb3MgZXN0aWxvcyBkZSBCRVBsdXMgKHNvbG8gc2UgdXNhIGJvb3RzdHJhcCBlbiBlbCBmb3JtKVxyXG52YXIgbGlua05vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbaHJlZj1cImNzcy9ib290c3RyYXAubWluLmNzc1wiXScpO1xyXG5saW5rTm9kZVswXT8ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQobGlua05vZGVbMF0pO1xyXG5cclxuZnVuY3Rpb24gY29uc2lzdGlyX2ZpbHRybyh0YXJlYSwgcmVhX3RlbSwgcmVhKXtcclxuICAgIHJldHVybiB0YXJlYT9yZWFfdGVtOnJlYTtcclxufTtcclxuXHJcbnZhciB0YXJlYXM6YW55ID0gbnVsbDtcclxuXHJcbmZ1bmN0aW9uIGh0bWxOdW1lcm8obnVtOm51bWJlcil7XHJcbiAgICByZXR1cm4gaHRtbC5zcGFuKHtjbGFzczonbnVtZXJvJ30sJycrKG51bT8/JycpKVxyXG59XHJcblxyXG52YXIgcGVyc2lzdGlyRW5NZW1vcmlhID0gYXN5bmMgKHBlcnNpc3RlbnRlczpEYXRvc0J5UGFzc1BlcnNpc3RpYmxlcykgPT4ge1xyXG4gICAgdmFyIHttb2RvQWxtYWNlbmFtaWVudG99ID0gcGVyc2lzdGVudGVzXHJcbiAgICAgICAgaWYobW9kb0FsbWFjZW5hbWllbnRvPT0nbG9jYWwnKXtcclxuICAgICAgICAgICAgbXkuc2V0TG9jYWxWYXIoR0xPVkFSX0RBVE9TQllQQVNTLCBwZXJzaXN0ZW50ZXMpXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgIG15LnNldFNlc3Npb25WYXIoR0xPVkFSX0RBVE9TQllQQVNTLCBwZXJzaXN0ZW50ZXMpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIG15LnNldFNlc3Npb25WYXIoR0xPVkFSX01PRE9CWVBBU1MsIG1vZG9BbG1hY2VuYW1pZW50bylcclxufVxyXG5cclxuYXN5bmMgZnVuY3Rpb24gc2luY3Jvbml6YXJEYXRvcyhwZXJzaXN0ZW50ZXM6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXN8bnVsbCwgY2FtYmlhTW9kb0RNOmJvb2xlYW4pe1xyXG4gICAgY29uc3QgbW9kb0RtRGVmZWN0byA9IGF3YWl0IG15LmFqYXgubW9kb19kbV9kZWZlY3RvX29idGVuZXIoe30pO1xyXG4gICAgbGV0IG1vZG9ETTogTW9kb0RNID0gbXkuZ2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZKSB8fCBtb2RvRG1EZWZlY3RvO1xyXG4gICAgbXkuc2V0TG9jYWxWYXIoTU9ET19ETV9MT0NBTFNUT1JBR0VfS0VZLCBtb2RvRE0pO1xyXG4gICAgdmFyIGRhdG9zID0gYXdhaXQgbXkuYWpheC5kbV9zaW5jcm9uaXphcih7cGVyc2lzdGVudGVzLCBtb2RvX2RtOm1vZG9ETSwgY2FtYmlhX21vZG9fZG06Y2FtYmlhTW9kb0RNfSk7XHJcbiAgICB2YXIgb3BlcmF0aXZvID0gZGF0b3Mub3BlcmF0aXZvO1xyXG4gICAgcGVyc2lzdGlyRW5NZW1vcmlhKHsuLi5kYXRvcywgbW9kb0FsbWFjZW5hbWllbnRvOidsb2NhbCd9KTtcclxuICAgIHZhciBlc3RydWN0dXJhID0gYXdhaXQgdHJhZXJFc3RydWN0dXJhKHtvcGVyYXRpdm99KVxyXG4gICAgbXkuc2V0TG9jYWxWYXIoR0xPVkFSX0VTVFJVQ1RVUkEsIGVzdHJ1Y3R1cmEpO1xyXG4gICAgbXkucmVtb3ZlTG9jYWxWYXIoQkFDS1VQUyk7XHJcbiAgICByZXR1cm4gZGF0b3M7XHJcbn1cclxuXHJcblxyXG5cclxudmFyIG1vc3RyYXJJbmZvTG9jYWwgPSAoZGl2QXZpc29TaW5jcm86SFRNTERpdkVsZW1lbnQsIHRpdHVsbzpzdHJpbmcsIG5yb1NpbmNybzpudW1iZXJ8bnVsbCwgbW9zdHJhckxpbmtIZHI6IGJvb2xlYW4pPT57XHJcbiAgICBsZXQgZGF0b3NCeVBhc3MgPSBteS5nZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MpO1xyXG4gICAgbGV0IGVzdHJ1Y3R1cmEgPSBteS5nZXRMb2NhbFZhcihHTE9WQVJfRVNUUlVDVFVSQSk7XHJcbiAgICBpZihkYXRvc0J5UGFzcyl7XHJcbiAgICAgICAgZGl2QXZpc29TaW5jcm8uYXBwZW5kKGh0bWwuZGl2KHtpZDonYXZpc28tc2luY3JvJ30sIFtcclxuICAgICAgICAgICAgbnJvU2luY3JvP2h0bWwucChbXCJOw7ptZXJvIGRlIHNpbmNyb25pemFjacOzbjogXCIsIGh0bWwuYihcIlwiK25yb1NpbmNyby50b1N0cmluZygpKV0pOm51bGwsXHJcbiAgICAgICAgICAgIGh0bWwuaDQodGl0dWxvKSxcclxuICAgICAgICAgICAgaHRtbC5wKFtodG1sTnVtZXJvKGxpa2VBcihkYXRvc0J5UGFzcy5jYXJnYXMpLmFycmF5KCkubGVuZ3RoKSwnIGFyZWFzOiAnLGxpa2VBcihkYXRvc0J5UGFzcy5jYXJnYXMpLmtleXMoKS5qb2luKCcsICcpXSksXHJcbiAgICAgICAgICAgIGh0bWwucChbaHRtbE51bWVybyhsaWtlQXIoZGF0b3NCeVBhc3MucmVzcHVlc3Rhc1tlc3RydWN0dXJhLnVhUHBhbF0pLmFycmF5KCkubGVuZ3RoKSwgJyAnICsgZXN0cnVjdHVyYS51YVBwYWxdKSxcclxuICAgICAgICAgICAgbW9zdHJhckxpbmtIZHI/aHRtbC5hKHtocmVmOicuL2NhbXBvJ30sW2h0bWwuYignSVIgQSBMQSBIT0pBIERFIFJVVEEnKV0pOm51bGxcclxuICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgICBkaXZBdmlzb1NpbmNyby5hcHBlbmRDaGlsZChodG1sLmRpdih7Y2xhc3M6J2F2aXNvJ30sW1xyXG4gICAgICAgICAgICBodG1sLmg0KCdTaXN0ZW1hIHZhY8OtbycpLFxyXG4gICAgICAgICAgICBodG1sLnAoJ05vIGhheSBpbmZvcm1hY2nDs24gZGUgZm9ybXVsYXJpb3MnKSxcclxuICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IG1vc3RyYXJJbmZvTW9kbyA9IGFzeW5jKG1haW5MYXlvdXQ6SFRNTEVsZW1lbnQpID0+IHtcclxuICAgIGNvbnN0IG1vZG9EbURlZmVjdG8gPSBhd2FpdCBteS5hamF4Lm1vZG9fZG1fZGVmZWN0b19vYnRlbmVyKHt9KTtcclxuICAgIGxldCBtb2RvRE06IE1vZG9ETSA9IG15LmdldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSkgfHwgbW9kb0RtRGVmZWN0bztcclxuICAgIG15LnNldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSwgbW9kb0RNKTtcclxuICAgIHZhciBkaXZBdmlzb01vZG86SFRNTERpdkVsZW1lbnQ9aHRtbC5kaXYoW1xyXG4gICAgICAgIGh0bWwuZGl2KGBtb2RvIGFjdHVhbDogJHttb2RvRE19LmApXHJcbiAgICBdKS5jcmVhdGUoKTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoZGl2QXZpc29Nb2RvKVxyXG4gICAgcmV0dXJuIG1vZG9ETTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FtYmlhck1vZG9ETUVuTG9jYWxTdG9yYWdlKG1vZG9BY3R1YWw6TW9kb0RNKXtcclxuICAgIG1vZG9BY3R1YWwgPSBtb2RvQWN0dWFsPT0ncHJvZHVjJz8nY2FwYSc6J3Byb2R1Yyc7XHJcbiAgICBteS5zZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVksbW9kb0FjdHVhbCk7XHJcbn1cclxuXHJcbnZhciBwcm9jZWRlclNpbmNyb0Z1biA9IGFzeW5jIChidXR0b246SFRNTEJ1dHRvbkVsZW1lbnQsIGRpdkF2aXNvU2luY3JvOkhUTUxEaXZFbGVtZW50LCBjYW1iaWFNb2RvRE06Ym9vbGVhbik9PntcclxuICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgYnV0dG9uLmNsYXNzTmFtZT0nZG93bmxvYWQtZG0tYnV0dG9uJztcclxuICAgIGRpdkF2aXNvU2luY3JvLmlubmVySFRNTD0nJztcclxuICAgIHRyeXtcclxuICAgICAgICB2YXIgZGF0b3NCeVBhc3M6RGF0b3NCeVBhc3NQZXJzaXN0aWJsZXMgPSBteS5nZXRMb2NhbFZhcihHTE9WQVJfREFUT1NCWVBBU1MpO1xyXG4gICAgICAgIHZhciBkYXRvcyA9IGF3YWl0IHNpbmNyb25pemFyRGF0b3MoZGF0b3NCeVBhc3MsIGNhbWJpYU1vZG9ETSk7XHJcbiAgICAgICAgY29uc3QgbW9kb0RtRGVmZWN0byA9IGF3YWl0IG15LmFqYXgubW9kb19kbV9kZWZlY3RvX29idGVuZXIoe30pO1xyXG4gICAgICAgIGxldCBtb2RvRE1BY3R1YWw6IE1vZG9ETSA9IG15LmdldExvY2FsVmFyKE1PRE9fRE1fTE9DQUxTVE9SQUdFX0tFWSkgfHwgbW9kb0RtRGVmZWN0bztcclxuICAgICAgICBpZihjYW1iaWFNb2RvRE0pe1xyXG4gICAgICAgICAgICBjYW1iaWFyTW9kb0RNRW5Mb2NhbFN0b3JhZ2UobW9kb0RNQWN0dWFsKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3RvcmUgPSBhd2FpdCBkbVRyYWVyRGF0b3NGb3JtdWxhcmlvKHttb2RvRGVtbzogZmFsc2V9KTtcclxuICAgICAgICBzdG9yZS5kaXNwYXRjaChkaXNwYXRjaGVycy5SRVNFVF9PUENJT05FUyh7fSkpO1xyXG4gICAgICAgIG1vc3RyYXJJbmZvTG9jYWwoZGl2QXZpc29TaW5jcm8sICdkYXRvcyByZWNpYmlkb3MnLCBkYXRvcy5udW1fc2luY3JvLCB0cnVlKVxyXG4gICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKVxyXG4gICAgICAgIHRocm93IGVyclxyXG4gICAgfWZpbmFsbHl7XHJcbiAgICAgICAgYnV0dG9uLmRpc2FibGVkPWZhbHNlO1xyXG4gICAgICAgIGJ1dHRvbi5jbGFzc05hbWU9J2Rvd25sb2FkLWRtLWJ1dHRvbi1jb250JztcclxuICAgIH1cclxufVxyXG5teU93bi53U2NyZWVucy5zaW5jcm9uaXphcl9kbT1hc3luYyBmdW5jdGlvbigpe1xyXG4gICAgdmFyIG1haW5MYXlvdXQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbWFpbl9sYXlvdXQnKSE7XHJcbiAgICBhd2FpdCBtb3N0cmFySW5mb01vZG8obWFpbkxheW91dCk7XHJcbiAgICB2YXIgcHJvY2VkZXJCdXR0b24gPSBodG1sLmJ1dHRvbih7Y2xhc3M6J2Rvd25sb2FkLWRtLWJ1dHRvbi1jb250J30sJ3Byb2NlZGVyIOKHkicpLmNyZWF0ZSgpO1xyXG4gICAgdmFyIGRpdkF2aXNvU2luY3JvOkhUTUxEaXZFbGVtZW50PWh0bWwuZGl2KCkuY3JlYXRlKCk7XHJcbiAgICBtb3N0cmFySW5mb0xvY2FsKG1haW5MYXlvdXQgYXMgSFRNTERpdkVsZW1lbnQsICdpbmZvcm1hY2nDs24gYSB0cmFuc21pdGlyJywgbnVsbCwgZmFsc2UpXHJcbiAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKHByb2NlZGVyQnV0dG9uKTtcclxuICAgIG1haW5MYXlvdXQuYXBwZW5kQ2hpbGQoZGl2QXZpc29TaW5jcm8pO1xyXG4gICAgcHJvY2VkZXJCdXR0b24ub25jbGljayA9ICgpPT5wcm9jZWRlclNpbmNyb0Z1bihwcm9jZWRlckJ1dHRvbiwgZGl2QXZpc29TaW5jcm8sIGZhbHNlKVxyXG59O1xyXG5cclxubXlPd24ud1NjcmVlbnMuY2FtYmlhcl9tb2RvX2RtPWFzeW5jIGZ1bmN0aW9uKCl7XHJcbiAgICB2YXIgbWFpbkxheW91dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtYWluX2xheW91dCcpITtcclxuICAgIGNvbnN0IG1vZG9ETSA9IGF3YWl0IG1vc3RyYXJJbmZvTW9kbyhtYWluTGF5b3V0KTtcclxuICAgIHZhciBwcm9jZWRlckJ1dHRvbiA9IGh0bWwuYnV0dG9uKHtjbGFzczonY2FtYmlhci1tb2RvLWRtLWJ1dHRvbid9LGBjYW1iaWFyIGEgbW9kbyAke21vZG9ETSA9PSAncHJvZHVjJz8nY2FwYSc6J3Byb2R1Yyd9IOKHkmApLmNyZWF0ZSgpO1xyXG4gICAgdmFyIGRpdkF2aXNvU2luY3JvOkhUTUxEaXZFbGVtZW50PWh0bWwuZGl2KCkuY3JlYXRlKCk7XHJcbiAgICBtb3N0cmFySW5mb0xvY2FsKG1haW5MYXlvdXQgYXMgSFRNTERpdkVsZW1lbnQsIGBpbmZvcm1hY2nDs24gbW9kbyBcIiR7bW9kb0RNfVwiIGEgdHJhbnNtaXRpcmAsIG51bGwsIGZhbHNlKVxyXG4gICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChwcm9jZWRlckJ1dHRvbik7XHJcbiAgICBtYWluTGF5b3V0LmFwcGVuZENoaWxkKGRpdkF2aXNvU2luY3JvKTtcclxuICAgIHByb2NlZGVyQnV0dG9uLm9uY2xpY2sgPSBhc3luYyAoKT0+e1xyXG4gICAgICAgIHZhciBtYWluRGl2ID0gaHRtbC5kaXYoKS5jcmVhdGUoKVxyXG4gICAgICAgIG1haW5EaXYuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgICAgIGh0bWwuZGl2KHt9LFtcclxuICAgICAgICAgICAgICAgIGh0bWwuZGl2KHt9LCBbYENvbmZpcm1hIGNhbWJpbyBkZSBtb2RvIFwiJHttb2RvRE19XCIgYSAke21vZG9ETT09J3Byb2R1Yyc/J1wiY2FwYVwiJzonXCJwcm9kdWNcIid9LmBdKVxyXG4gICAgICAgICAgICBdKS5jcmVhdGUoKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgdmFyIGlucHV0Q2FtYmlhck1vZG8gPSBodG1sLmlucHV0KHtjbGFzczonaW5wdXQtY2FtYmlhci1tb2RvJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgIG1haW5EaXYuYXBwZW5kQ2hpbGQoaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICBodG1sLmRpdihbJ1BvciBmYXZvciBpbmdyZXNlIGxhIGNvbnRyYXNlw7FhICcsaW5wdXRDYW1iaWFyTW9kb10pXHJcbiAgICAgICAgXSkuY3JlYXRlKCkpO1xyXG4gICAgICAgIHZhciBjYW1iaWFyTW9kb1ZhbHVlID0gYXdhaXQgY29uZmlybVByb21pc2UobWFpbkRpdiwge1xyXG4gICAgICAgICAgICB3aXRoQ2xvc2VCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICByZWplY3Q6ZmFsc2UsXHJcbiAgICAgICAgICAgIGJ1dHRvbnNEZWY6W1xyXG4gICAgICAgICAgICAgICAge2xhYmVsOmBjYW1iaWFyYCwgdmFsdWU6dHJ1ZX0sXHJcbiAgICAgICAgICAgICAgICB7bGFiZWw6YGNhbmNlbGFyYCwgdmFsdWU6ZmFsc2V9XHJcbiAgICAgICAgICAgIF1cclxuICAgICAgICB9KTtcclxuICAgICAgICBpZihjYW1iaWFyTW9kb1ZhbHVlKXtcclxuICAgICAgICAgICAgaWYoaW5wdXRDYW1iaWFyTW9kby52YWx1ZT09JzEyMzQnKXtcclxuICAgICAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgICAgICBwcm9jZWRlckJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHByb2NlZGVyU2luY3JvRnVuKHByb2NlZGVyQnV0dG9uLCBkaXZBdmlzb1NpbmNybywgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFpbkxheW91dC5pbm5lckhUTUw9Jyc7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFpbkxheW91dC5hcHBlbmRDaGlsZChcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoYE1PRE8gJHtteS5nZXRMb2NhbFZhcihNT0RPX0RNX0xPQ0FMU1RPUkFHRV9LRVkpfSBBQ1RJVkFET2ApLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICAgICAgICAgIHByb2NlZGVyQnV0dG9uLmRpc2FibGVkPWZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoJ2NvbnRyYXNlw7FhIGluY29ycmVjdGEuJylcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbmZ1bmN0aW9uIGluaWNpYWxpemFyU3RhdGUoc3RhdGU6IENhc29TdGF0ZSkge1xyXG4gICAgc3RhdGUubW9kbyA9IHtcclxuICAgICAgICBkZW1vOiBmYWxzZVxyXG4gICAgfTtcclxuICAgIC8vIE9KTyBzdGF0ZS5vcGNpb25lcyBzZSBtb2RpZmljYSBhY8OhIHkgZW4gb3RybyBsYWRvIGNvbiBlc3RlIG1pc21vIGNhcnRlbFxyXG4gICAgc3RhdGUub3BjaW9uZXMgPSB7XHJcbiAgICAgICAgYmllbnZlbmlkbzogdHJ1ZSxcclxuICAgICAgICBmb3JQazogbnVsbCxcclxuICAgICAgICBwaWxhRm9yUGs6IFtdLFxyXG4gICAgICAgIG1vZG9EZXNwbGllZ3VlOiBcInJlbGV2YW1pZW50b1wiLFxyXG4gICAgICAgIG1vZG9EaXJlY3RvOiBmYWxzZSxcclxuICAgICAgICBtb2RvQm9ycmFyUmVzcHVlc3RhOiBudWxsLFxyXG4gICAgICAgIGNvbkNhbXBvT3BjaW9uZXM6IGZhbHNlLFxyXG4gICAgICAgIHNhbHRvQXV0b21hdGljbzogdHJ1ZSxcclxuICAgIH07XHJcbiAgICAvL0B0cy1pZ25vcmVcclxuICAgIHN0YXRlLmZlZWRiYWNrUm93VmFsaWRhdG9yID0ge307XHJcbn1cclxuLypcclxuZnVuY3Rpb24gbW9zdHJhckRhdG9zUGVyc29uYShoYXlEYXRvczpib29sZWFuLCBkYXRvczphbnksIGRpdlJlc3VsdDpIVE1MRGl2RWxlbWVudCl7XHJcbiAgICAvL1RPRE86IEVWQUxVQVIgU0kgQ09OVklFTkUgVFJBRVJMTyBERSBMQSBCQVNFXHJcbiAgICB2YXIgdGlwb3NEb2N1bWVudG8gPSBbJ0ROSSBhcmdlbnRpbm8nLCAnRG9jdW1lbnRvIGV4dHJhbmplcm8nLCAnTm8gdGllbmUgZG9jdW1lbnRvJywgJ090cm8nXTtcclxuICAgIHZhciBwYWlzRG9jdW1lbnRvID0gWydVcnVndWF5JywgJ1BhcmFndWF5JywgJ0JyYXNpbCcsICdCb2xpdmlhJywgJ0NoaWxlJywgJ1BlcsO6JywgJ1ZlbmV6dWVsYScsICdPdHJvJ107XHJcbiAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgaGF5RGF0b3M/XHJcbiAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonZGF0b3MtcGVyc29uYS1jYXJnYWRhJ30sW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5oMihcIkRhdG9zIHBlcnNvbmFcIiksXHJcbiAgICAgICAgICAgICAgICBodG1sLmRpdih7Y2xhc3M6J2ZpY2hhLXBlcnNvbmEnfSxbXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoW2h0bWwubGFiZWwoJ0FwZWxsaWRvOiAnKSwgZGF0b3MuYXBlbGxpZG9dKSxcclxuICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbaHRtbC5sYWJlbCgnTm9tYnJlczogJyksIGRhdG9zLm5vbWJyZXNdKSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50aXBvRG9jdW1lbnRvP1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBodG1sLmRpdihbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBodG1sLmxhYmVsKCdUaXBvIGRvY3VtZW50bzogJyksIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlwb3NEb2N1bWVudG9bZGF0b3MudGlwb0RvY3VtZW50by0xXSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG89PTQgJiYgZGF0b3MudGlwb0RvY3VtZW50b0VzcGVjaWZpY2Fkbz8nICgnKyBkYXRvcy50aXBvRG9jdW1lbnRvRXNwZWNpZmljYWRvKycpJzonJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgICAgICAgICA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICcnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLnRpcG9Eb2N1bWVudG89PTIgJiYgZGF0b3MucGFpc0RvY3VtZW50bz9cclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5sYWJlbCgnUGFpczogJyksIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFpc0RvY3VtZW50b1tkYXRvcy5wYWlzRG9jdW1lbnRvLTFdLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0b3MucGFpc0RvY3VtZW50bz09OCAmJiBkYXRvcy5wYWlzRG9jdW1lbnRvRXNwZWNpZmljYWRvPycgKCcrZGF0b3MucGFpc0RvY3VtZW50b0VzcGVjaWZpY2FkbysnKSc6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIF0pXHJcbiAgICAgICAgICAgICAgICAgICAgOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAnJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy50aXBvRG9jdW1lbnRvIT0zICYmIGRhdG9zLnRpcG9Eb2N1bWVudG8/aHRtbC5kaXYoW2h0bWwubGFiZWwoJ07CuiBEb2N1bWVudG86ICcpLCBkYXRvcy5kb2N1bWVudG9dKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy5jZWx1bGFyP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdDZWwuOiAnKSwgZGF0b3MuY2VsdWxhcl0pOicnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdG9zLmVtYWlsP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdFbWFpbDogJyksIGRhdG9zLmVtYWlsXSk6JycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0b3MudGVsZWZvbm9BbHRlcm5hdGl2bz9odG1sLmRpdihbaHRtbC5sYWJlbCgnVGVsLiBhbHRlcm5hdGl2bzogJyksIGRhdG9zLnRlbGVmb25vQWx0ZXJuYXRpdm9dKTonJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXRvcy5vYnNlcnZhY2lvbmVzP2h0bWwuZGl2KFtodG1sLmxhYmVsKCdPYnNlcnZhY2lvbmVzOiAnKSwgZGF0b3Mub2JzZXJ2YWNpb25lc10pOicnLFxyXG4gICAgICAgICAgICAgICAgXSlcclxuICAgICAgICAgICAgXSkuY3JlYXRlKClcclxuICAgICAgICA6XHJcbiAgICAgICAgICAgIGh0bWwucChcIk5vIHNlIGVuY29udHLDsyB1bmEgZW5jdWVzdGEgcGFyYSBsYSBldGlxdWV0YSBjYXJnYWRhXCIpLmNyZWF0ZSgpXHJcbiAgICApXHJcbn1cclxuKi9cclxuLypteU93bi5jbGllbnRTaWRlcy50YXJlYXNUZW1Sb3c9e1xyXG4gICAgdXBkYXRlOihkZXBvdCk9PntcclxuICAgICAgICB2YXIgdGFyZWE6J25hZGEnfCdwcmVhc2lnbmFyJ3wnY2FyZ2FyJ3wncmVhbGl6YXInfCd2ZXJpZmljYXInPSduYWRhJztcclxuICAgICAgICB2YXIgcm93PWRlcG90LnJvdztcclxuICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgdmFyIGlkcGVyPW15LmNvbmZpZy5pZHBlcjtcclxuICAgICAgICB2YXIgZXNwZXJhcjpib29sZWFuPWZhbHNlO1xyXG4gICAgICAgIGlmKHJvdy5oYWJpbGl0YWRhKXtcclxuICAgICAgICAgICAgaWYoIXJvdy5yZWNlcGNpb25pc3RhICYmICFyb3cuYXNpZ25hZG8pe1xyXG4gICAgICAgICAgICAgICAgdGFyZWE9J3ByZWFzaWduYXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj10cnVlO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LmFzaWduYWRvIHx8ICFyb3cuZmVjaGFfYXNpZ25hY2lvbiB8fCAhcm93Lm9wZXJhY2lvbil7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0nY2FyZ2FyJztcclxuICAgICAgICAgICAgICAgIGVzcGVyYXI9cm93LnJlY2VwY2lvbmlzdGEhPWlkcGVyO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LnJlYSl7XHJcbiAgICAgICAgICAgICAgICB0YXJlYT0ncmVhbGl6YXInO1xyXG4gICAgICAgICAgICAgICAgZXNwZXJhcj1yb3cuYXNpZ25hZG8hPWlkcGVyO1xyXG4gICAgICAgICAgICB9ZWxzZSBpZighcm93LnZlcmlmaWNhZG8pe1xyXG4gICAgICAgICAgICAgICAgdGFyZWE9J3ZlcmlmaWNhcic7XHJcbiAgICAgICAgICAgICAgICBlc3BlcmFyPXJvdy5yZWNlcGNpb25pc3RhIT1pZHBlcjtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgcG9uZXI9e1xyXG4gICAgICAgICAgICByZWNlcGNpb25pc3RhICAgICAgICAgIDp0YXJlYT09J3ByZWFzaWduYXInICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIGFzaWduYWRvICAgICAgICAgICA6dGFyZWE9PSdjYXJnYXInICAgICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBmZWNoYV9hc2lnbmFjaW9uICAgOnRhcmVhPT0nY2FyZ2FyJyAgICAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidub3JtYWwnKSxcclxuICAgICAgICAgICAgb3BlcmFjaW9uICAgICAgICAgIDp0YXJlYT09J2NhcmdhcicgICAgICYmIChlc3BlcmFyPydlc3BlcmFyJzonbm9ybWFsJyksXHJcbiAgICAgICAgICAgIGNhcmdhX29ic2VydmFjaW9uZXM6KHRhcmVhPT0nY2FyZ2FyJyAgICAgfHwgdGFyZWE9PSdyZWFsaXphcicgJiYgIXJvdy5jYXJnYWRvICYmICFyb3cucmVhICkgJiYgcm93LnJlY2VwY2lvbmlzdGE9PWlkcGVyICYmICdvcHRhdGl2bycsXHJcbiAgICAgICAgICAgIHZlcmlmaWNhZG8gICAgICAgICA6dGFyZWE9PSd2ZXJpZmljYXInICAmJiAoZXNwZXJhcj8nZXNwZXJhcic6J25vcm1hbCcpLFxyXG4gICAgICAgICAgICBvYnNfdmVyaWZpY2FkbyAgICAgOnRhcmVhPT0ndmVyaWZpY2FyJyAgJiYgKGVzcGVyYXI/J2VzcGVyYXInOidvcHRhdGl2bycpLFxyXG4gICAgICAgIH1cclxuICAgICAgICBsaWtlQXIocG9uZXIpLmZvckVhY2goKHZhbG9yLCBjYW1wbyk9PntcclxuICAgICAgICAgICAgaWYoIXZhbG9yKXtcclxuICAgICAgICAgICAgICAgIGRlcG90LnJvd0NvbnRyb2xzW2NhbXBvXS5yZW1vdmVBdHRyaWJ1dGUoJ215LW1hbmRhdG9yeScpXHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbY2FtcG9dLnNldEF0dHJpYnV0ZSgnbXktbWFuZGF0b3J5Jyx2YWxvcik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgfSxcclxuICAgIHByZXBhcmU6IGZ1bmN0aW9uKCl7fVxyXG59XHJcbiovXHJcblxyXG52YXIgY3JlYXJCb3RvbkNlcnJhckVuY3Vlc3RhID0gKGxhYmVsOnN0cmluZyk9PntcclxuICAgIGxldCBwYXRoID0gXCJNMyAzdjE4aDE4VjNIM3ptMTQgMTIuNTlMMTUuNTkgMTcgMTIgMTMuNDEgOC40MSAxNyA3IDE1LjU5IDEwLjU5IDEyIDcgOC40MSA4LjQxIDcgMTIgMTAuNTkgMTUuNTkgNyAxNyA4LjQxIDEzLjQxIDEyIDE3IDE1LjU5elwiO1xyXG4gICAgdmFyIHN2ZyA9IGh0bWwuc3ZnKHtjbGFzczpcInN2Zy1jZXJyYXItZW5jdWVzdGFcIn0sW1xyXG4gICAgICAgIGh0bWwucGF0aCh7XHJcbiAgICAgICAgICAgIGQ6cGF0aFxyXG4gICAgICAgIH0pXHJcbiAgICBdKS5jcmVhdGUoKTtcclxuICAgIHN2Zy5zZXRBdHRyaWJ1dGUoXCJ2aWV3Qm94XCIsXCIwIDAgMjYgMjZcIik7XHJcbiAgICBsZXQgdmVyID0gaHRtbC5idXR0b24oe2lkOidib3Rvbi1jZXJyYXItZW5jdWVzdGEnfSxbc3ZnLCBsYWJlbF0pLmNyZWF0ZSgpO1xyXG4gICAgdmVyLm9uY2xpY2sgPSAoKT0+IGNsb3NlKCk7XHJcbiAgICByZXR1cm4gdmVyXHJcbn1cclxuXHJcbmNvbnN0IGFicmlyRW5jdWVzdGFFblBlc3Rhbm5pYURlZGljYWRhID0gKHVybDpzdHJpbmcpPT57XHJcbiAgICBjb25zdCBBQlJJUl9UQUIgPSBcIl9hYnJpclwiO1xyXG4gICAgd2luZG93Lm9wZW4odXJsLCBBQlJJUl9UQUIpO1xyXG59XHJcblxyXG52YXIgY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEgPSAob3BlcmF0aXZvOklkT3BlcmF0aXZvLHRhcmVhOklkVGFyZWEsZW5jdWVzdGE6bnVtYmVyLCBsYWJlbDpzdHJpbmcpPT57XHJcbiAgICB2YXIgdXAgPSB7XHJcbiAgICAgICAgb3BlcmF0aXZvOm9wZXJhdGl2byxcclxuICAgICAgICB0YXJlYTp0YXJlYSxcclxuICAgICAgICBlbmM6ZW5jdWVzdGFcclxuICAgIH1cclxuICAgIGxldCB2ZXIgPSBodG1sLmJ1dHRvbih7aWQ6J2JvdG9uLXZvbHZlci1hLWVuY3Vlc3RhJ30sbGFiZWwpLmNyZWF0ZSgpO1xyXG4gICAgdmVyLm9uY2xpY2sgPSAoKT0+IGFicmlyRW5jdWVzdGFFblBlc3Rhbm5pYURlZGljYWRhKGxvY2F0aW9uLm9yaWdpbitsb2NhdGlvbi5wYXRobmFtZStteS5tZW51U2VwYXJhdG9yK2B3PWFicmlyX2VuY3Vlc3RhJnVwPSR7SlNPTi5zdHJpbmdpZnkodXApfSZhdXRvcHJvY2VkPXRydWVgKVxyXG4gICAgcmV0dXJuIHZlclxyXG59XHJcblxyXG52YXIgY3JlYXJCb3RvbmVzVmVyQWJyaXJUYXJlYXMgPSBhc3luYyAoZGVwb3Q6bXlPd24uRGVwb3QsIGZpZWxkTmFtZTpzdHJpbmcsIGxhYmVsOidhYnJpcid8J3ZlcicpPT57XHJcbiAgICB0YXJlYXMgPSB0YXJlYXM/dGFyZWFzOihhd2FpdCBteU93bi5hamF4LnRhYmxlX2RhdGEoe3RhYmxlOiBgdGFyZWFzYCwgZml4ZWRGaWVsZHM6W119KSk7XHJcbiAgICB2YXIgbWlzVGFyZWFzID0gdGFyZWFzLmZpbHRlcigodGFyZWEpPT5cclxuICAgICAgICAhIXRhcmVhLm1haW5fZm9ybSAmJiB0YXJlYS5vcGVyYXRpdm89PWRlcG90LnJvdy5vcGVyYXRpdm8gJiYgKGRlcG90Lm1hbmFnZXIuZGVmLm11ZXN0cmFBYnJpckVuVG9kYXNMYXNUYXJlYXM/dHJ1ZTpkZXBvdC5yb3cudGFyZWEgPT0gdGFyZWEudGFyZWEpXHJcbiAgICApO1xyXG4gICAgZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXS5pbm5lckhUTUw9Jyc7XHJcbiAgICBtaXNUYXJlYXMuZm9yRWFjaCgodGFyZWE6e3RhcmVhOnN0cmluZywgbm9tYnJlOnN0cmluZywgbWFpbl9mb3JtOklkRm9ybXVsYXJpb30pPT57XHJcbiAgICAgICAgbGV0IGJ1dHRvbkxhYmVsID0gYCR7bGFiZWx9ICR7dGFyZWEudGFyZWF9YDtcclxuICAgICAgICBsZXQgdmVyID0gY3JlYXJCb3RvblZlckFicmlyRW5jdWVzdGEoXHJcbiAgICAgICAgICAgIGRlcG90LnJvdy5vcGVyYXRpdm8gYXMgSWRPcGVyYXRpdm8sXHJcbiAgICAgICAgICAgIHRhcmVhLnRhcmVhIGFzIElkVGFyZWEsIFxyXG4gICAgICAgICAgICBOdW1iZXIoZGVwb3Qucm93LmVuYyksXHJcbiAgICAgICAgICAgIGJ1dHRvbkxhYmVsXHJcbiAgICAgICAgKTtcclxuICAgICAgICB2ZXIuc3R5bGU9J21hcmdpbjowcHggMnB4Oyc7XHJcbiAgICAgICAgZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXS5hcHBlbmRDaGlsZCh2ZXIpO1xyXG4gICAgfSlcclxufVxyXG5cclxudmFyIGdldEFicmlyT3ZlciA9IChfZGVwb3Q6bXlPd24uRGVwb3QsX2ZpZWxkTmFtZTpzdHJpbmcpOidhYnJpcic9PidhYnJpcidcclxuICAgIC8vXHJcbiAgICAvKihkZXBvdC5yb3cuY2FyZ2Fkb19kbSB8fCAhZGVwb3Qucm93Wydlc3RhZG9zX19wZXJtaXRlX2VkaXRhcl9lbmN1ZXN0YSddICYmIGRlcG90LnJvdy5hc2lnbmFkbyAhPSBteS5jb25maWcuaWRwZXIpP1xyXG4gICAgICAgICd2ZXInOidhYnJpcidcclxuICAgICovXHJcblxyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWJyaXI9e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgbGFiZWw6J3Zlcid8J2FicmlyJyA9IGdldEFicmlyT3ZlcihkZXBvdCxmaWVsZE5hbWUpO1xyXG4gICAgICAgIGNyZWFyQm90b25lc1ZlckFicmlyVGFyZWFzKGRlcG90LGZpZWxkTmFtZSxsYWJlbCk7IC8vbm8gZXNwZXJvIHByb21lc2EgcG9ycXVlIG5vIGVzIG5lY2VzYXJpb1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMuYWJyaXJSZWNlcGNpb249e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICB2YXIgbGFiZWw6J3Zlcid8J2FicmlyJyA9IGdldEFicmlyT3ZlcihkZXBvdCxmaWVsZE5hbWUpO1xyXG4gICAgICAgIGNyZWFyQm90b25lc1ZlckFicmlyVGFyZWFzKGRlcG90LGZpZWxkTmFtZSxsYWJlbCk7IC8vbm8gZXNwZXJvIHByb21lc2EgcG9ycXVlIG5vIGVzIG5lY2VzYXJpb1xyXG4gICAgfVxyXG59O1xyXG5cclxubXlPd24uY2xpZW50U2lkZXMudmVySWNvbm9Tdmc9e1xyXG4gICAgcHJlcGFyZTogKF9kZXBvdCwgX2ZpZWxkTmFtZSk9Pnt9LFxyXG4gICAgdXBkYXRlOiAoZGVwb3QsIGZpZWxkTmFtZSk9PntcclxuICAgICAgICBsZXQgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgICAgIHRkLmlubmVySFRNTD0nJztcclxuICAgICAgICBpZihkZXBvdC5yb3cucGF0aF9pY29ub19zdmcpe1xyXG4gICAgICAgICAgICB2YXIgc3ZnID0gaHRtbC5zdmcoe1xyXG4gICAgICAgICAgICAgICAgY2xhc3M6XCJzdmctYWNjaW9uZXNcIlxyXG4gICAgICAgICAgICB9LFtcclxuICAgICAgICAgICAgICAgIGh0bWwucGF0aCh7XHJcbiAgICAgICAgICAgICAgICAgICAgZDpkZXBvdC5yb3cucGF0aF9pY29ub19zdmdcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICBzdmcuc2V0QXR0cmlidXRlKFwidmlld0JveFwiLFwiMCAwIDUwIDUwXCIpO1xyXG4gICAgICAgICAgICB0ZC5hcHBlbmRDaGlsZChzdmcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufTtcclxuXHJcbnZhciBjcmVhclNWRyA9IChwYXRoOnN0cmluZyxwcm9wczphbnkpID0+IHtcclxuICAgIHZhciBzdmcgPSBodG1sLnN2Zyhwcm9wcyB8fCB7fSxbXHJcbiAgICAgICAgaHRtbC5wYXRoKHtcclxuICAgICAgICAgICAgZDpwYXRoXHJcbiAgICAgICAgfSlcclxuICAgIF0pLmNyZWF0ZSgpO1xyXG4gICAgc3ZnLnNldEF0dHJpYnV0ZShcInZpZXdCb3hcIixcIjAgMCA1MCA1MFwiKTtcclxuICAgIHJldHVybiBzdmdcclxufVxyXG52YXIgY3JlYXJCb3RvbkFjY2lvbiA9IChkZXBvdDpteU93bi5EZXBvdCwgYWN0aW9uOkVzdGFkb0FjY2lvbik9PntcclxuICAgIGxldCAgYWNjaW9uU2luR3Vpb25lcyA9IGFjdGlvbi5lYWNjaW9uLnJlcGxhY2UoJ18nLCcgJyk7XHJcbiAgICB2YXIgc3ZnID0gY3JlYXJTVkcoYWN0aW9uLnBhdGhfaWNvbm9fc3ZnLHtjbGFzczpcInN2Zy1hY2Npb25lc1wifSlcclxuICAgIGlmKGFjdGlvbi5kZXNhY3RpdmFfYm90b24pe1xyXG4gICAgICAgIHJldHVybiBodG1sLnNwYW4oe2NsYXNzOmBzaW4tYm90b24tYWNjaW9uYH0sW2FjY2lvblNpbkd1aW9uZXMsIHN2ZyBhcyB1bmtub3duIGFzIEhUTUxFbGVtZW50XSkuY3JlYXRlKClcclxuICAgIH1cclxuICAgIGxldCBidXR0b24gPSBodG1sLmJ1dHRvbih7XHJcbiAgICAgICAgY2xhc3M6YGJvdG9uLWFjY2lvbiBib3Rvbi1hY2Npb24tJHthY3Rpb24uZWFjY2lvbl9kaXJlY2Npb259YFxyXG4gICAgfSxbXHJcbiAgICAgICAgYCR7YWNjaW9uU2luR3Vpb25lc31gLFxyXG4gICAgICAgIC8vQHRzLWlnbm9yZSBzdmcgZXMgaHRtbGVsZW1lbnRcclxuICAgICAgICBhY3Rpb24ucGF0aF9pY29ub19zdmc/c3ZnOm51bGwsXHJcbiAgICBdKS5jcmVhdGUoKTtcclxuICAgIGJ1dHRvbi5vbmNsaWNrID0gKCk9PiB7XHJcbiAgICAgICAgdmFyIGFjdGlvbkZ1biA9IGFzeW5jICgpPT57XHJcbiAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD10cnVlO1xyXG4gICAgICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBteS5hamF4LmFjY2lvbl90YXJlYXNfdGVtX2VqZWN1dGFyKHtcclxuICAgICAgICAgICAgICAgICAgICBvcGVyYXRpdm86IGRlcG90LnJvdy5vcGVyYXRpdm8sXHJcbiAgICAgICAgICAgICAgICAgICAgdGFyZWE6IGRlcG90LnJvdy50YXJlYSxcclxuICAgICAgICAgICAgICAgICAgICBlbmM6IGRlcG90LnJvdy5lbmMsXHJcbiAgICAgICAgICAgICAgICAgICAgY29uZGljaW9uOiBhY3Rpb24uY29uZGljaW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIGFjY2lvbjogYWN0aW9uLFxyXG4gICAgICAgICAgICAgICAgICAgIHRhcmVhc1RlbVRhYmxlOiBkZXBvdC5kZWYubmFtZVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB2YXIgZ3JpZD1kZXBvdC5tYW5hZ2VyO1xyXG4gICAgICAgICAgICAgICAgZ3JpZC5yZXRyaWV2ZVJvd0FuZFJlZnJlc2goZGVwb3Qse3JldHJpZXZlSWdub3JpbmdXaGVyZTp0cnVlfSkgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmKGFjdGlvbi5ub21icmVfd3NjcmVlbil7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9UT0RPIGFjb21vZGFyIGVzdG8gZW4gYWxndW4gbW9tZW50b1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBwYXJhbXMgPSBkZXBvdC5yb3c7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVwID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRpdm86cGFyYW1zLm9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGFyZWE6cGFyYW1zLnRhcmVhLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmM6IE51bWJlcihwYXJhbXMuZW5jKVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBhYnJpckVuY3Vlc3RhRW5QZXN0YW5uaWFEZWRpY2FkYShsb2NhdGlvbi5vcmlnaW4rbG9jYXRpb24ucGF0aG5hbWUrbXkubWVudVNlcGFyYXRvcitgdz0ke2FjdGlvbi5ub21icmVfd3NjcmVlbn0mdXA9JHtKU09OLnN0cmluZ2lmeSh1cCl9JmF1dG9wcm9jZWQ9dHJ1ZWApXHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgZXJyXHJcbiAgICAgICAgICAgIH1maW5hbGx5e1xyXG4gICAgICAgICAgICAgICAgLy9yZXRyYXNvIGxhIGhhYmlsaXRhY2nDs24gcG9ycXVlIGEgdmVjZXMgdGFyZGEgZW4gcmVkaWJ1amFyc2UgbGEgYm90b25lcmEgeSBwdWVkZSB0cmFlciBwcm9ibGVtYXMgc2kgZGFuIGRvYmxlIGNsaWNrIFxyXG4gICAgICAgICAgICAgICAgLy95YSBxdWUgZWplY3V0YSBudWV2YW1lbnRlIHVuYSBhY2Npw7NuIHF1ZSB5YSBzZSBlamVjdXTDsyAoeSB0ZXJtaW7DsykgYW50ZXNcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PmJ1dHRvbi5kaXNhYmxlZD1mYWxzZSwzMDAwKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIFxyXG4gICAgICAgIHZhciBjb25maXJtUHJvbWlzZU9wdHM6IERpYWxvZ09wdGlvbnMgPSB7fVxyXG4gICAgICAgIGlmKGFjdGlvbi5jb25maXJtYSl7XHJcbiAgICAgICAgICAgIGNvbmZpcm1Qcm9taXNlT3B0cy5hc2tGb3JOb1JlcGVhdCA9ICdubyB2b2x2ZXIgYSBtb3N0cmFyJzsgLy9tdWVzdHJhIG1lbnNhamUgcG9yIGRlZmF1bHQgcGVybyBhbmRhIGlndWFsXHJcbiAgICAgICAgICAgIHZhciBidXR0b25zRGVmID0gW1xyXG4gICAgICAgICAgICAgICAge2xhYmVsOidzw60nLCB2YWx1ZTp0cnVlfSxcclxuICAgICAgICAgICAgICAgIHtsYWJlbDonbm8nLCB2YWx1ZTpmYWxzZX1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgICAgICBjb25maXJtUHJvbWlzZShgY29uZmlybWEgYWNjacOzbiBcIiR7YWNjaW9uU2luR3Vpb25lc31cIj9gLCB7Li4uY29uZmlybVByb21pc2VPcHRzLCBidXR0b25zRGVmfSkudGhlbihhY3Rpb25GdW4pO1xyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBhY3Rpb25GdW4oKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnV0dG9uXHJcbn1cclxuXHJcbnZhciBjcmVhckJvdG9uZXNBY2Npb25lcyA9IGFzeW5jIChvcHRzOntkZXBvdDpteU93bi5EZXBvdCwgZmllbGROYW1lOnN0cmluZywgZGlyZWNjaW9uOiBEaXJlY2Npb25BY2Npb259KT0+e1xyXG4gICAgbGV0IHtkZXBvdCxmaWVsZE5hbWUsZGlyZWNjaW9ufSA9IG9wdHM7XHJcbiAgICBsZXQgdGQgPSBkZXBvdC5yb3dDb250cm9sc1tmaWVsZE5hbWVdO1xyXG4gICAgdGQuaW5uZXJIVE1MPScnO1xyXG4gICAgKGRlcG90LnJvd0NvbnRyb2xzLmFjY2lvbmVzLmdldFR5cGVkVmFsdWUoKXx8W10pXHJcbiAgICAgICAgLmZpbHRlcigoYWN0aW9uOkVzdGFkb0FjY2lvbik9PmFjdGlvbi5lYWNjaW9uX2RpcmVjY2lvbj09ZGlyZWNjaW9uKVxyXG4gICAgICAgIC5mb3JFYWNoKChhY3Rpb246RXN0YWRvQWNjaW9uKT0+dGQuYXBwZW5kQ2hpbGQoY3JlYXJCb3RvbkFjY2lvbihkZXBvdCwgYWN0aW9uKSkpO1xyXG59XHJcblxyXG52YXIgY3JlYXJTd2l0Y2ggPSAob3B0czp7cm91bmQ/OmJvb2xlYW4sIGRpc2FibGVkPzpib29sZWFuLCBjaGVja2VkPzpib29sZWFuLCBvbkNsaWNrRnVuOkZ1bmN0aW9uLCBvbkVyckZ1bj86RnVuY3Rpb259KT0+e1xyXG4gICAgdmFyIGNoZWNrYm94ID0gaHRtbC5pbnB1dCh7dHlwZTonY2hlY2tib3gnLCBjaGVja2VkOm9wdHMuY2hlY2tlZH0pLmNyZWF0ZSgpO1xyXG4gICAgY2hlY2tib3gub25jbGljayA9IGFzeW5jKCk9PntcclxuICAgICAgICB0cnl7XHJcbiAgICAgICAgICAgIGNoZWNrYm94LmRpc2FibGVkPXRydWU7XHJcbiAgICAgICAgICAgIGF3YWl0IG9wdHMub25DbGlja0Z1bigpXHJcbiAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSlcclxuICAgICAgICAgICAgdGhyb3cgZXJyXHJcbiAgICAgICAgfWZpbmFsbHl7XHJcbiAgICAgICAgICAgIGNoZWNrYm94LmRpc2FibGVkPWZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBodG1sLmxhYmVsKHtjbGFzczonc3dpdGNoJ30sW1xyXG4gICAgICAgIGNoZWNrYm94LFxyXG4gICAgICAgIGh0bWwuc3Bhbih7Y2xhc3M6YHNsaWRlciAke29wdHMucm91bmQ/J3JvdW5kJzonJ31gfSksXHJcbiAgICBdKS5jcmVhdGUoKTtcclxufVxyXG5cclxubXlPd24uY2xpZW50U2lkZXMuaGFiaWxpdGFyPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgdmFyIHRkID0gZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXTtcclxuICAgICAgICB0ZC5pbm5lckhUTUwgPSBcIlwiO1xyXG4gICAgICAgIHRkLmFwcGVuZENoaWxkKFxyXG4gICAgICAgICAgICBjcmVhclN3aXRjaCh7XHJcbiAgICAgICAgICAgICAgICByb3VuZDp0cnVlLFxyXG4gICAgICAgICAgICAgICAgY2hlY2tlZDpkZXBvdC5yb3cuaGFiaWxpdGFkYSxcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2tGdW46IGFzeW5jICgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbXkuYWpheC5lbmN1ZXN0YV9oYWJpbGl0YXJfZGVzaGFiaWxpdGFyKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aXZvOiBkZXBvdC5yb3cub3BlcmF0aXZvLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbmM6IGRlcG90LnJvdy5lbmNcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgZ3JpZD1kZXBvdC5tYW5hZ2VyO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PmdyaWQucmV0cmlldmVSb3dBbmRSZWZyZXNoKGRlcG90KSwzMDApOy8vcGFyYSBxdWUgc2UgdmVhIGVsIGVmZWN0b1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5hY2Npb25lc0F2YW5jZT17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIGNyZWFyQm90b25lc0FjY2lvbmVzKHtkZXBvdCxmaWVsZE5hbWUsZGlyZWNjaW9uOidhdmFuY2UnfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5hY2Npb25lc1JldHJvY2Vzbz17XHJcbiAgICBwcmVwYXJlOiAoX2RlcG90LCBfZmllbGROYW1lKT0+e30sXHJcbiAgICB1cGRhdGU6IChkZXBvdCwgZmllbGROYW1lKT0+e1xyXG4gICAgICAgIGNyZWFyQm90b25lc0FjY2lvbmVzKHtkZXBvdCxmaWVsZE5hbWUsZGlyZWNjaW9uOidyZXRyb2Nlc28nfSk7XHJcbiAgICB9XHJcbn07XHJcblxyXG5teU93bi5jbGllbnRTaWRlcy5hY2Npb25lc0JsYW5xdWVvPXtcclxuICAgIHByZXBhcmU6IChfZGVwb3QsIF9maWVsZE5hbWUpPT57fSxcclxuICAgIHVwZGF0ZTogKGRlcG90LCBmaWVsZE5hbWUpPT57XHJcbiAgICAgICAgY3JlYXJCb3RvbmVzQWNjaW9uZXMoe2RlcG90LGZpZWxkTmFtZSxkaXJlY2Npb246J2JsYW5xdWVvJ30pO1xyXG4gICAgfVxyXG59O1xyXG5cclxuZnVuY3Rpb24gXHJcbmJvdG9uQ2xpZW50U2lkZUVuR3JpbGxhKG9wdHM6IHsgbm9tYnJlQm90b246IHN0cmluZywgbGxhbWFkYTogKGRlcG90OiBteU93bi5EZXBvdCkgPT4gUHJvbWlzZTxhbnk+IH0pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgcHJlcGFyZTogZnVuY3Rpb24gKGRlcG90OiBteU93bi5EZXBvdCwgZmllbGROYW1lOiBzdHJpbmcpIHtcclxuICAgICAgICAgICAgdmFyIHRkID0gZGVwb3Qucm93Q29udHJvbHNbZmllbGROYW1lXTtcclxuICAgICAgICAgICAgdmFyIGJvdG9uID0gaHRtbC5idXR0b24ob3B0cy5ub21icmVCb3RvbikuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgIHRkLmlubmVySFRNTCA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRkLmFwcGVuZENoaWxkKGJvdG9uKTtcclxuICAgICAgICAgICAgdmFyIHJlc3RhdXJhckJvdG9uID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgYm90b24uZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJvdG9uLnRleHRDb250ZW50ID0gb3B0cy5ub21icmVCb3RvbjtcclxuICAgICAgICAgICAgICAgIGJvdG9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcnO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBib3Rvbi5vbmNsaWNrID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgYm90b24uZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgYm90b24udGV4dENvbnRlbnQgPSAncHJvY2VzYW5kby4uLic7XHJcbiAgICAgICAgICAgICAgICBvcHRzLmxsYW1hZGEoZGVwb3QpLnRoZW4oYXN5bmMgZnVuY3Rpb24ocmVzdWx0KXtcclxuICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQgJiYgdHlwZW9mIHJlc3VsdCA9PT0gJ29iamVjdCcgJiYgJ29rJyBpbiByZXN1bHQpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZihyZXN1bHQub2spe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGdyaWQ9ZGVwb3QubWFuYWdlcjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGdyaWQucmV0cmlldmVSb3dBbmRSZWZyZXNoKGRlcG90KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZXBvdC5kZXRhaWxDb250cm9scy5pbmNvbnNpc3RlbmNpYXMpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcG90LmRldGFpbENvbnRyb2xzLmluY29uc2lzdGVuY2lhcy5mb3JjZURpc3BsYXlEZXRhaWxHcmlkKHt9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gIFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90b24udGV4dENvbnRlbnQgPSAgcmVzdWx0Lm1lc3NhZ2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3Rvbi50aXRsZSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdG9uLnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICcjOEY4JztcclxuICAgICAgICAgICAgICAgICAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzdWx0Lm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocmVzdGF1cmFyQm90b24sIDI1MDApO1xyXG4gICAgICAgICAgICAgICAgfSwgZnVuY3Rpb24gKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgIGJvdG9uLnRleHRDb250ZW50ID0gJ2Vycm9yJztcclxuICAgICAgICAgICAgICAgICAgICBib3Rvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnI0ZGOCc7XHJcbiAgICAgICAgICAgICAgICAgICAgYWxlcnRQcm9taXNlKGVyci5tZXNzYWdlKTtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy9pZiAoKGRlcG90LnJvdy5jb25zaXN0aWRvPT1udWxsICAmJiBkZXBvdC5yb3cucmVhIT1udWxsKSB8fCBkZXBvdC5yb3cubW9kaWZpY2FkbyE9bnVsbCAmJiBkZXBvdC5yb3cuY29uc2lzdGlkbyE9bnVsbCAmJiBkZXBvdC5yb3cubW9kaWZpY2FkbyA+ZGVwb3Qucm93LmNvbnNpc3RpZG8pe1xyXG4gICAgICAgICAgICAvLyAgICBib3Rvbi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3I9JyM4Q0YnXHJcbiAgICAgICAgICAgIC8vfVxyXG4gICAgICAgIH0gICAgICAgIFxyXG4gICAgfTtcclxufVxyXG5cclxuXHJcbm15T3duLmNsaWVudFNpZGVzLmNvbnNpc3RpciA9IGJvdG9uQ2xpZW50U2lkZUVuR3JpbGxhKHtcclxuICAgIG5vbWJyZUJvdG9uOiAnY29uc2lzdGlyJyxcclxuICAgIGxsYW1hZGE6IGZ1bmN0aW9uIChkZXBvdDogbXlPd24uRGVwb3QpIHtcclxuICAgICAgICB2YXIgbXlSZWFGaWVsZE5hbWUgPSBkZXBvdC5tYW5hZ2VyLmRlZi50YWJsZU5hbWU9PVwidGVtXCI/J3JlYSc6J3VsdF9yZWEnO1xyXG4gICAgICAgIHZhciBmaWx0cm9SZWE9Y29uc2lzdGlyX2ZpbHRybyhkZXBvdC5yb3cudGFyZWEsIGRlcG90LnJvd1tteVJlYUZpZWxkTmFtZV0sIGRlcG90LnJvdy5yZWEpXHJcbiAgICAgICAgcmV0dXJuIGZpbHRyb1JlYT8gbXlPd24uYWpheC5jb25zaXN0aXJfZW5jdWVzdGEoe1xyXG4gICAgICAgICAgICBvcGVyYXRpdm86IGRlcG90LnJvdy5vcGVyYXRpdm8sXHJcbiAgICAgICAgICAgIGlkX2Nhc286IGRlcG90LnJvdy5lbmNcclxuICAgICAgICB9KTogYWxlcnRQcm9taXNlKCdMYSBlbmN1ZXN0YSBkZWJlIHRlbmVyIGRhdG8gZW4gcmVhIHBhcmEgcG9kZXIgY29uc2lzdGlybGEuJyk7XHJcbiAgICB9XHJcbn0pO1xyXG5cclxubXlPd24ud1NjcmVlbnMucHJvYy5yZXN1bHQubW9zdHJhcl9lbmN1ZXN0YXNfYV9ibGFucXVlYXI9ZnVuY3Rpb24ocmVzdWx0LCBkaXZSZXN1bHQpe1xyXG4gICAgaWYocmVzdWx0LnJvd3MubGVuZ3RoKXtcclxuICAgICAgICB2YXIgY3VycmVudFRva2VuOnN0cmluZ3xudWxsID0gbnVsbFxyXG4gICAgICAgIHZhciBucm9DYXJnYSA9IDA7XHJcbiAgICAgICAgdmFyIGVuY3Vlc3Rhc0RpdjogbnVsbHxIVE1MRGl2RWxlbWVudCA9IG51bGw7XHJcbiAgICAgICAgZGl2UmVzdWx0LmFwcGVuZENoaWxkKGh0bWwuaDIoJ29wZXJhdGl2bzogJyArIHJlc3VsdC5vcGVyYXRpdm8pLmNyZWF0ZSgpKTtcclxuICAgICAgICByZXN1bHQucm93cy5mb3JFYWNoKChlbmN1ZXN0YSk9PntcclxuICAgICAgICAgICAgaWYoY3VycmVudFRva2VuICE9IGVuY3Vlc3RhLmNhcmdhZG9fZG0pe1xyXG4gICAgICAgICAgICAgICAgbnJvQ2FyZ2ErKztcclxuICAgICAgICAgICAgICAgIGN1cnJlbnRUb2tlbiA9IGVuY3Vlc3RhLmNhcmdhZG9fZG07XHJcbiAgICAgICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoaHRtbC5oNCgnY2FyZ2EgTsK6ICcgKyBucm9DYXJnYS50b1N0cmluZygpKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICBlbmN1ZXN0YXNEaXYgPSBodG1sLmRpdih7Y2xhc3M6J2VuY3Vlc3Rhcy1hLWJsYW5xdWVhcid9KS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgIC8vbGFzIGNvcGlvIGNvbiBsZXQgcGFyYSBxdWUgdG9tZSBlbCB2YWxvciBhY3R1YWwgeSBubyBlbCDDumx0aW1vXHJcbiAgICAgICAgICAgICAgICBsZXQgbWlUb2tlbiA9IGN1cnJlbnRUb2tlbjtcclxuICAgICAgICAgICAgICAgIGxldCBtaU5yb0NhcmdhID0gbnJvQ2FyZ2E7XHJcbiAgICAgICAgICAgICAgICB2YXIgYnV0dG9uID0gaHRtbC5idXR0b24oe1xyXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzOmBib3Rvbi1ibGFucXVlYXItZG0gYm90b24tYWNjaW9uYFxyXG4gICAgICAgICAgICAgICAgfSwgJ2JsYW5xdWVhciBjYXJnYSAnICsgbnJvQ2FyZ2EudG9TdHJpbmcoKSkuY3JlYXRlKCk7XHJcbiAgICAgICAgICAgICAgICBidXR0b24ub25jbGljayA9IGFzeW5jICgpPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBtYWluRGl2ID0gaHRtbC5kaXYoKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgIG1haW5EaXYuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KHt9LFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZGl2KHtjbGFzczonZGFuZ2VyJ30sIFtgRXN0w6EgcG9yIGJsYW5xdWVhciBsYSBjYXJnYSAke21pTnJvQ2FyZ2F9LiBObyBzZSBwb2Ryw6EgZGVzY2FyZ2FyIGVsIGRpc3Bvc2l0aXZvLmBdKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIGlucHV0Rm9yemFyID0gaHRtbC5pbnB1dCh7Y2xhc3M6J2lucHV0LWZvcnphcid9KS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgICAgICAgICBtYWluRGl2LmFwcGVuZENoaWxkKGh0bWwuZGl2KFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoWydTZSBwdWVkZSBmb3J6YXIgZWwgYmxhbnF1ZW8gJyxpbnB1dEZvcnphcl0pXHJcbiAgICAgICAgICAgICAgICAgICAgXSkuY3JlYXRlKCkpO1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBmb3J6YXIgPSBhd2FpdCBjb25maXJtUHJvbWlzZShtYWluRGl2LCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhDbG9zZUJ1dHRvbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdDpmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uc0RlZjpbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bGFiZWw6J2ZvcnphciBibGFucXVlbycsIHZhbHVlOnRydWV9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2xhYmVsOidjYW5jZWxhciBibGFucXVlbycsIHZhbHVlOmZhbHNlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYoZm9yemFyKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoaW5wdXRGb3J6YXIudmFsdWU9PSdmb3J6YXInKXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24uZGlzYWJsZWQ9dHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzdWx0QmxhbnF1ZW8gPSBhd2FpdCBteS5hamF4LmRtX2JsYW5xdWVhcih7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhdGl2bzogcmVzdWx0Lm9wZXJhdGl2byxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW46IG1pVG9rZW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXZSZXN1bHQuaW5uZXJIVE1MPScnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdEJsYW5xdWVvLmZvckVhY2goKHR0OmFueSk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGl2UmVzdWx0LmFwcGVuZENoaWxkKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuc3Bhbih7fSxgJHt0dC5yZXN1bHRfYmxhbnF1ZW99YCksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKS5jcmVhdGUoKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1jYXRjaChlcnIpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ZmluYWxseXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXR0b24uZGlzYWJsZWQ9ZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZSgnc2kgbmVjZXNpdGEgYmxhbnF1ZWFyIGVzY3JpYmEgZm9yemFyLicpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBkaXZSZXN1bHQuYXBwZW5kQ2hpbGQoZW5jdWVzdGFzRGl2KTtcclxuICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChidXR0b24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVuY3Vlc3Rhc0Rpdj8uYXBwZW5kQ2hpbGQoaHRtbC5kaXYoe30sW1xyXG4gICAgICAgICAgICAgICAgaHRtbC5zcGFuKGBlbmN1ZXN0YTogJHtlbmN1ZXN0YS5lbmN9IGApLFxyXG4gICAgICAgICAgICAgICAgaHRtbC5zcGFuKGB0YXJlYTogICR7ZW5jdWVzdGEudGFyZWF9IGApLFxyXG4gICAgICAgICAgICBdKS5jcmVhdGUoKSlcclxuICAgICAgICB9KVxyXG4gICAgfVxyXG59XHJcblxyXG5teU93bi53U2NyZWVucy5wcm9jLnJlc3VsdC5kb3dubG9hZF9zcWwgPSBmdW5jdGlvbihyZXN1bHQsIGRpdlJlc3VsdCkge1xyXG4gICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW3Jlc3VsdF0sIHsgdHlwZTogJ3RleHQvc3FsJyB9KSk7XHJcblxyXG4gICAgZGl2UmVzdWx0LmlubmVySFRNTCA9ICcnO1xyXG5cclxuICAgIGNvbnN0IGxpbmsgPSBodG1sLmEoJ0Rlc2NhcmdhciBhcmNoaXZvIFNRTCcpLmNyZWF0ZSgpXHJcbiAgICBsaW5rLmhyZWYgPSB1cmw7XHJcbiAgICBsaW5rLmRvd25sb2FkID0gJ21pZ3Jhcl9vcGVyYXRpdm8uc3FsJztcclxuICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChsaW5rKTtcclxufVxyXG5cclxuY29uc3QgcHJldmlzdWFsaXphckVuY3Vlc3RhID0gKFxyXG4gICAgcmVzdWx0VGVtOmFueSwgXHJcbiAgICBkaXZSZXN1bHQ6SFRNTERpdkVsZW1lbnQsIFxyXG4gICAgcGFyYW1zOntcclxuICAgICAgICBub21icmVQcm9jZWR1cmU6c3RyaW5nLFxyXG4gICAgICAgIGlnbm9yYUpzb25FbmN1ZXN0YVZhY2lvOmJvb2xlYW5cclxuICAgICAgICBsYWJlbEFjdGlvbjogc3RyaW5nXHJcbiAgICB9XHJcbikgPT57XHJcbiAgICBsZXQge2Nhc29UZW19ID0gIHJlc3VsdFRlbTtcclxuICAgIGlmKCFjYXNvVGVtLmpzb25fZW5jdWVzdGEpe1xyXG4gICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChodG1sLnAoe2lkOidtZW5zYWplLW5vLWhheS1qc29uLWVuY3Vlc3RhJ30sYG5vIHNlIGVuY29udHLDsyBpbmZvcm1hY2lvbiBjYXJnYWRhIGVuIGxhIGVuY3Vlc3RhICR7Y2Fzb1RlbS5lbmN9YCkuY3JlYXRlKCkpO1xyXG4gICAgfVxyXG4gICAgaWYoY2Fzb1RlbS5qc29uX2VuY3Vlc3RhIHx8IHBhcmFtcy5pZ25vcmFKc29uRW5jdWVzdGFWYWNpbyl7XHJcbiAgICAgICAgdmFyIGVuY3Vlc3RhRGl2ID0gaHRtbC5kaXYoe2lkOidiYWNrdXAtZGl2J30pLmNyZWF0ZSgpO1xyXG4gICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChlbmN1ZXN0YURpdik7XHJcbiAgICAgICAgdHJ5e1xyXG4gICAgICAgICAgICBteS5hZ3JlZ2FyX2pzb24oZW5jdWVzdGFEaXYsIGNhc29UZW0uanNvbl9lbmN1ZXN0YSk7XHJcbiAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChodG1sLnAoe2lkOidtZW5zYWplLWVycm9yLWpzb24tZW5jdWVzdGEnfSxgbm8gc2UgcHVkbyBhbCBwcmV2aXN1YWxpemFyIGxhIGVuY3Vlc3RhICR7Y2Fzb1RlbS5lbmN9IGNvcnJlY3RhbWVudGUuICR7ZXJyLm1lc3NhZ2V9YCkuY3JlYXRlKCkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgYnV0dG9uID0gaHRtbC5idXR0b24oe1xyXG4gICAgICAgICAgICBjbGFzczpgYm90b24tYmxhbnF1ZWFyLWVuY3Vlc3RhLWFjY2lvbmBcclxuICAgICAgICB9LCBgJHtwYXJhbXMubGFiZWxBY3Rpb259IGVuY3Vlc3RhYCkuY3JlYXRlKCk7XHJcbiAgICAgICAgYnV0dG9uLm9uY2xpY2sgPSBhc3luYyAoKT0+IHtcclxuICAgICAgICAgICAgdmFyIG1haW5EaXYgPSBodG1sLmRpdigpLmNyZWF0ZSgpXHJcbiAgICAgICAgICAgIG1haW5EaXYuYXBwZW5kQ2hpbGQoXHJcbiAgICAgICAgICAgICAgICBodG1sLmRpdih7fSxbXHJcbiAgICAgICAgICAgICAgICAgICAgaHRtbC5kaXYoe2NsYXNzOidkYW5nZXInfSwgW2BFc3TDoSBwb3IgJHtwYXJhbXMubGFiZWxBY3Rpb259IGxhIGVuY3Vlc3RhICR7Y2Fzb1RlbS5lbmN9LiBTZSBwZXJkZXLDoW4gbG9zIGRhdG9zIGRlIGxhIG1pc21hLmBdKVxyXG4gICAgICAgICAgICAgICAgXSkuY3JlYXRlKClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdmFyIGlucHV0Rm9yemFyID0gaHRtbC5pbnB1dCh7Y2xhc3M6J2lucHV0LWZvcnphcid9KS5jcmVhdGUoKTtcclxuICAgICAgICAgICAgbWFpbkRpdi5hcHBlbmRDaGlsZChodG1sLmRpdihbXHJcbiAgICAgICAgICAgICAgICBodG1sLmRpdihbYHBhcmEgJHtwYXJhbXMubGFiZWxBY3Rpb259IGVzY3JpYmEgZm9yemFyIGAsaW5wdXRGb3J6YXJdKVxyXG4gICAgICAgICAgICBdKS5jcmVhdGUoKSk7XHJcbiAgICAgICAgICAgIHZhciBmb3J6YXIgPSBhd2FpdCBjb25maXJtUHJvbWlzZShtYWluRGl2LCB7XHJcbiAgICAgICAgICAgICAgICB3aXRoQ2xvc2VCdXR0b246IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgcmVqZWN0OmZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYnV0dG9uc0RlZjpbXHJcbiAgICAgICAgICAgICAgICAgICAge2xhYmVsOidmb3J6YXInLCB2YWx1ZTp0cnVlfSxcclxuICAgICAgICAgICAgICAgICAgICB7bGFiZWw6J2NhbmNlbGFyJywgdmFsdWU6ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICBdXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZihmb3J6YXIpe1xyXG4gICAgICAgICAgICAgICAgaWYoaW5wdXRGb3J6YXIudmFsdWU9PSdmb3J6YXInKXtcclxuICAgICAgICAgICAgICAgICAgICB2YXIgd2FpdEdpZiA9IGh0bWwuaW1nKHtzcmM6J2ltZy9sb2FkaW5nMTYuZ2lmJ30pLmNyZWF0ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeXtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9uLmRpc2FibGVkPXRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHdhaXRHaWYuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZCh3YWl0R2lmKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3VsdEJsYW5xdWVvID0gYXdhaXQgbXkuYWpheFtwYXJhbXMubm9tYnJlUHJvY2VkdXJlXShjYXNvVGVtKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGl2UmVzdWx0LmlubmVySFRNTD1yZXN1bHRCbGFucXVlbztcclxuICAgICAgICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgICAgfWNhdGNoKGVycil7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0UHJvbWlzZShlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfWZpbmFsbHl7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5kaXNhYmxlZD1mYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgd2FpdEdpZi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBhbGVydFByb21pc2UoYHNpIG5lY2VzaXRhICR7cGFyYW1zLmxhYmVsQWN0aW9ufSBlc2NyaWJhIGZvcnphci5gKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRpdlJlc3VsdC5hcHBlbmRDaGlsZChidXR0b24pO1xyXG4gICAgfVxyXG59XHJcblxyXG5teU93bi53U2NyZWVucy5wcm9jLnJlc3VsdC5tb3N0cmFyX2VuY3Vlc3RhX2FfYmxhbnF1ZWFyX2NvbnRlbmlkbz1mdW5jdGlvbihyZXN1bHQsIGRpdlJlc3VsdCl7XHJcbiAgICBwcmV2aXN1YWxpemFyRW5jdWVzdGEocmVzdWx0LCBkaXZSZXN1bHQsIHtcclxuICAgICAgICBub21icmVQcm9jZWR1cmU6J2VuY3Vlc3RhX2JsYW5xdWVhcicsXHJcbiAgICAgICAgaWdub3JhSnNvbkVuY3Vlc3RhVmFjaW86IGZhbHNlLFxyXG4gICAgICAgIGxhYmVsQWN0aW9uOiAnYmxhbnF1ZWFyJ1xyXG4gICAgfSlcclxufVxyXG5cclxubXlPd24ud1NjcmVlbnMucHJvYy5yZXN1bHQubW9zdHJhcl9lbmN1ZXN0YV9hX2JvcnJhcj1mdW5jdGlvbihyZXN1bHQsIGRpdlJlc3VsdCl7XHJcbiAgICBwcmV2aXN1YWxpemFyRW5jdWVzdGEocmVzdWx0LCBkaXZSZXN1bHQsIHtcclxuICAgICAgICBub21icmVQcm9jZWR1cmU6J2VuY3Vlc3RhX2JvcnJhcicsXHJcbiAgICAgICAgaWdub3JhSnNvbkVuY3Vlc3RhVmFjaW86IHRydWUsXHJcbiAgICAgICAgbGFiZWxBY3Rpb246ICdib3JyYXInXHJcbiAgICB9KVxyXG59XHJcblxyXG5teU93bi53U2NyZWVucy5kZW1vPWFzeW5jIGZ1bmN0aW9uKF9hZGRyUGFyYW1zKXtcclxuICAgIC8vIEB0cy1pZ25vcmUgZGVzcGxlZ2FyRm9ybXVsYXJpb0FjdHVhbCBnbG9iYWxcclxuICAgIHdpbmRvdy5kZXNwbGVnYXJGb3JtdWxhcmlvQWN0dWFsKHttb2RvRGVtbzp0cnVlfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGFycmF5RmxhdDxUPihhcnJheXM6VFtdW10pOlRbXXtcclxuICAgIHJldHVybiAoW10gYXMgVFtdKS5jb25jYXQuYXBwbHkoW10sIGFycmF5cyk7XHJcbn1cclxuIl19
|