cilog-lib 1.10.24 → 1.10.26
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.
|
@@ -307,7 +307,9 @@ export class CilogTableComponent {
|
|
|
307
307
|
}
|
|
308
308
|
}
|
|
309
309
|
onEditInitCell(event, row, column, value) {
|
|
310
|
-
event.target
|
|
310
|
+
if (event != null && event.target != null) {
|
|
311
|
+
event.target.select();
|
|
312
|
+
}
|
|
311
313
|
this.onEditInit.emit({ row: row, column: column, value: value });
|
|
312
314
|
}
|
|
313
315
|
onRowDoubleClickEvent(row) {
|
|
@@ -672,4 +674,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
672
674
|
type: ViewChild,
|
|
673
675
|
args: ['inputNumber']
|
|
674
676
|
}] } });
|
|
675
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSzdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVXpFLE1BQU0sT0FBTyxtQkFBbUI7SUFxQzVCLFlBQ1ksbUJBQXdDLEVBQ3hDLGFBQTRCLEVBQzVCLEtBQXdCLEVBQ3hCLGFBQTRCO1FBSDVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF2Q3hDLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFHakIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBRzlDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU0xQyxXQUFNLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDOUQsZUFBVSxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ2xFLGFBQVEsR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDeEUsYUFBUSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3BFLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUN0RSxhQUFRLEdBQTBCLElB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QkNmaEMscWtyRUEwNkJBOzs0RkQzNUJhLG1CQUFtQjtrQkFML0IsU0FBUzsrQkFDSSxhQUFhO2dMQVFkLE9BQU87c0JBQWYsS0FBSztnQkFDSSxhQUFhO3NCQUF0QixNQUFNO2dCQUVFLE1BQU07c0JBQWQsS0FBSztnQkFDSSxZQUFZO3NCQUFyQixNQUFNO2dCQUVFLE9BQU87c0JBQWYsS0FBSztnQkFFRyxPQUFPO3NCQUFmLEtBQUs7Z0JBRUksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQVUrQixLQUFLO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ25CLEVBQUU7c0JBQWxCLFNBQVM7dUJBQUMsSUFBSTtnQkFDVyxXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBWaWV3Q2hpbGQsIENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbmZpcm1hdGlvblNlcnZpY2UsIEZpbHRlclNlcnZpY2UsIExhenlMb2FkRXZlbnQsIFNvcnRFdmVudCB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgSUVkaXRpb24sIElTdXBwcmVzc2lvbiwgSVNlbGVjdGlvbiwgSUZpbHRlciwgSVNvcnQsIElQYWdlLCBJU29ydEN1c3RvbSB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW50ZXJmYWNlcy9lZGl0aW9uLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IElDb2x1bW4sIElSb3csIElPcHRpb25zR3JpbGxlLCBJQ2VsbCwgSU9wdGlvbnNGaWxlLCBJT3B0aW9uc011bHRpU2VsZWN0LCBJT3B0aW9uc0Ryb3Bkb3duLCBJT3B0aW9uc051bWJlciB9IGZyb20gJy4uLy4uL2hlbHBlcnMvaW50ZXJmYWNlcy9ncmlsbGUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgVGFibGUgfSBmcm9tICdwcmltZW5nL3RhYmxlJztcclxuaW1wb3J0IHsgQ29sVHlwZSwgTW9kZVNlbGVjdGlvbiB9IGZyb20gJy4uLy4uL2hlbHBlcnMvZW51bXMvZ3JpbGxlLmVudW0nO1xyXG5pbXBvcnQgeyBFeHBvcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZXhjZWwuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbnRleHRNZW51IH0gZnJvbSAncHJpbWVuZy9jb250ZXh0bWVudSc7XHJcbmltcG9ydCB7IElucHV0TnVtYmVyIH0gZnJvbSAncHJpbWVuZy9pbnB1dG51bWJlcic7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnY2lsb2ctdGFibGUnLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIENpbG9nVGFibGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG5cclxuICAgIGluaXRGaWx0ZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpIGNvbHVtbnM6IElDb2x1bW5bXTtcclxuICAgIEBPdXRwdXQoKSBjb2x1bW5zQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29sdW1uW10+KCk7XHJcblxyXG4gICAgQElucHV0KCkgdmFsdWVzOiBJUm93W107XHJcbiAgICBAT3V0cHV0KCkgdmFsdWVzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJUm93W10+KCk7XHJcblxyXG4gICAgQElucHV0KCkgb3B0aW9uczogSU9wdGlvbnNHcmlsbGU7XHJcblxyXG4gICAgQElucHV0KCkgbG9hZGluZzogYm9vbGVhbjtcclxuXHJcbiAgICBAT3V0cHV0KCkgb25FZGl0OiBFdmVudEVtaXR0ZXI8SUVkaXRpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxJRWRpdGlvbj4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkVkaXRJbml0OiBFdmVudEVtaXR0ZXI8SUVkaXRpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxJRWRpdGlvbj4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkRlbGV0ZTogRXZlbnRFbWl0dGVyPElTdXBwcmVzc2lvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPElTdXBwcmVzc2lvbj4oKTtcclxuICAgIEBPdXRwdXQoKSBvblNlbGVjdDogRXZlbnRFbWl0dGVyPElTZWxlY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxJU2VsZWN0aW9uPigpO1xyXG4gICAgQE91dHB1dCgpIG9uVW5zZWxlY3Q6IEV2ZW50RW1pdHRlcjxJU2VsZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlbGVjdGlvbj4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkZpbHRlcjogRXZlbnRFbWl0dGVyPElGaWx0ZXI+ID0gbmV3IEV2ZW50RW1pdHRlcjxJRmlsdGVyPigpO1xyXG4gICAgQE91dHB1dCgpIG9uRmlsdGVySW5pdDogRXZlbnRFbWl0dGVyPElSb3dbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPElSb3dbXT4oKTtcclxuICAgIEBPdXRwdXQoKSBvblNvcnQ6IEV2ZW50RW1pdHRlcjxJU29ydD4gPSBuZXcgRXZlbnRFbWl0dGVyPElTb3J0PigpO1xyXG4gICAgQE91dHB1dCgpIG9uUGFnZTogRXZlbnRFbWl0dGVyPElQYWdlPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVBhZ2U+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Sb3dEb3VibGVDbGljazogRXZlbnRFbWl0dGVyPElTZWxlY3Rpb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxJU2VsZWN0aW9uPigpO1xyXG5cclxuICAgIHNlbGVjdGVkUm93czogSVJvd1tdIHwgSVJvdztcclxuXHJcbiAgICBmaWx0ZXJEYXRlc1JhbmdlOiBEYXRlW107XHJcblxyXG4gICAgb3B0aW9uc1N3aXRjaDogYW55W107XHJcblxyXG4gICAgY29udGV4dE1lbnVTZWxlY3RlZEl0ZW06IElSb3c7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgndGFibGUnLCB7IHN0YXRpYzogdHJ1ZSB9KSB0YWJsZTogVGFibGU7XHJcbiAgICBAVmlld0NoaWxkKCdjbScpIGNtOiBDb250ZXh0TWVudTtcclxuICAgIEBWaWV3Q2hpbGQoJ2lucHV0TnVtYmVyJykgaW5wdXROdW1iZXI6IElucHV0TnVtYmVyO1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgY29uZmlybWF0aW9uU2VydmljZTogQ29uZmlybWF0aW9uU2VydmljZSxcclxuICAgICAgICBwcml2YXRlIGZpbHRlclNlcnZpY2U6IEZpbHRlclNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBjZFJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBleHBvcnRTZXJ2aWNlOiBFeHBvcnRTZXJ2aWNlXHJcbiAgICApIHsgfVxyXG5cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMub3B0aW9uc1N3aXRjaCA9IFtcclxuICAgICAgICAgICAgeyBsYWJlbDogJ091aScsIHZhbHVlOiB0cnVlIH0sXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdOb24nLCB2YWx1ZTogZmFsc2UgfSxcclxuICAgICAgICBdXHJcblxyXG4gICAgICAgIC8vIERhdGVcclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ2RhdGVSYW5nZUZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuICAgICAgICAgICAgaWYgKGZpbHRlciA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgc3RhcnQ6IG51bWJlciA9IGZpbHRlclswXS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGxldCBlbmQ6IG51bWJlcjtcclxuICAgICAgICAgICAgbGV0IGVuZERhdGU6IERhdGU7XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXJbMV0pIHtcclxuICAgICAgICAgICAgICAgIGVuZERhdGUgPSBuZXcgRGF0ZShmaWx0ZXJbMV0uZ2V0RnVsbFllYXIoKSwgZmlsdGVyWzFdLmdldE1vbnRoKCksIGZpbHRlclsxXS5nZXREYXRlKCksIDIzLCA1OSwgNTkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZW5kRGF0ZSA9IG5ldyBEYXRlKGZpbHRlclswXS5nZXRGdWxsWWVhcigpLCBmaWx0ZXJbMF0uZ2V0TW9udGgoKSwgZmlsdGVyWzBdLmdldERhdGUoKSwgMjMsIDU5LCA1OSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZW5kID0gZW5kRGF0ZS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIHJldHVybiBjZWxsLnZhbHVlID09IG51bGwgPyBmYWxzZSA6IGNlbGwudmFsdWUuZ2V0VGltZSgpID49IHN0YXJ0ICYmIGNlbGwudmFsdWUuZ2V0VGltZSgpIDw9IGVuZDtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBPYmpldFxyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5yZWdpc3Rlcignb2JqZXRGaWx0ZXInLCAoY2VsbCwgZmlsdGVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXIuZmluZCh2YWwgPT4gdmFsLklEID09IGNlbGwudmFsdWU/LklEKSAhPSBudWxsO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIFNlbGVjdCBCdXR0b25cclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ3NlbGVjdEJ1dHRvbkZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIGZpbHRlci5maW5kKHZhbCA9PiB2YWwudmFsdWUgPT0gY2VsbC52YWx1ZSkgIT0gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBMaXN0ZVxyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5yZWdpc3RlcignbGlzdGVGaWx0ZXInLCAoY2VsbCwgZmlsdGVyKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBvazogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICBmaWx0ZXIuZm9yRWFjaCh2YWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNlbGwudmFsdWUuaW5kZXhPZih2YWwpICE9IC0xKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgb2sgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIG9rO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIFN3aXRjaFxyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5yZWdpc3Rlcignc3dpdGNoRmlsdGVyJywgKGNlbGwsIGZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKGZpbHRlci5pbmRleE9mKGNlbGwudmFsdWUpICE9IC0xKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBCdXR0b25cclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ2J1dHRvbkZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGxldCBmaWx0ZXJPYmpGaWVsZDogc3RyaW5nID0gY2VsbC5vcHRpb25zWydmaWx0ZXJPYmpGaWVsZCddO1xyXG4gICAgICAgICAgICBsZXQgZmlsdGVyT2JqU3ViRmllbGQ6IHN0cmluZyA9IGNlbGwub3B0aW9uc1snZmlsdGVyT2JqU3ViRmllbGQnXTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjZWxsLm9iaiA9PSBudWxsIHx8IGZpbHRlciA9PSBudWxsIHx8IGZpbHRlci50cmltKCkgPT0gJycgfHwgZmlsdGVyT2JqRmllbGQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXJPYmpTdWJGaWVsZCA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2VsbC5vYmpbZmlsdGVyT2JqRmllbGRdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNlbGwub2JqW2ZpbHRlck9iakZpZWxkXS5maW5kKHZhbCA9PiB2YWxbZmlsdGVyT2JqU3ViRmllbGRdLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyLnRvTG93ZXJDYXNlKCkpKSAhPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gVGV4dFxyXG4gICAgICAgIHRoaXMuZmlsdGVyU2VydmljZS5yZWdpc3RlcigndGV4dEZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuXHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT0gbnVsbCB8fCBmaWx0ZXIudHJpbSgpID09ICcnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY2VsbC52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTogc3RyaW5nO1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNlbGwudmFsdWUgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gY2VsbC52YWx1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgY2VsbC52YWx1ZSA9PSAnbnVtYmVyJykge1xyXG4gICAgICAgICAgICAgICAgdmFsdWUgPSBjZWxsLnZhbHVlLnRvU3RyaW5nKCkucmVwbGFjZSgnLicsICcsJyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjZWxsLnZhbHVlKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNlbGwub3B0aW9ucyA9PSBudWxsIHx8IGNlbGwub3B0aW9uc1snb3B0aW9uTGFiZWxGaWx0ZXJUZXh0J10gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB0aGlzLmdldE11bHRpU2VsZWN0Q29uY2F0KGNlbGwudmFsdWUsIGNlbGwub3B0aW9uc1snb3B0aW9uTGFiZWxGaWx0ZXJUZXh0J10pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNlbGwub3B0aW9ucyA9PSBudWxsIHx8IGNlbGwub3B0aW9uc1snb3B0aW9uTGFiZWxGaWx0ZXJUZXh0J10gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBjZWxsLnZhbHVlW2NlbGwub3B0aW9uc1snb3B0aW9uTGFiZWxGaWx0ZXJUZXh0J11dO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZmlsdGVyLnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2wub3B0aW9ucyA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBjb2wub3B0aW9ucyA9IHsgZGVmYXVsdEZpbHRlcnM6IG51bGwgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoY29sLm9wdGlvbnNbJ29ubHlMaXN0VmFsdWVzJ10gJiYgY29sLm9wdGlvbnNbJ29wdGlvbkdyb3VwTGFiZWwnXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBjb2wub3B0aW9uc1snb3B0aW9ucyddID0gW107XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuTXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsW2NvbC5pZF0udmFsdWUuZm9yRWFjaCh2YWwyID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb2wub3B0aW9uc1snb3B0aW9ucyddLmZpbmQob3B0ID0+IG9wdC5JRCA9PSB2YWwyLklEKSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sLm9wdGlvbnNbJ29wdGlvbnMnXS5wdXNoKHZhbDIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbC50eXBlID09IENvbFR5cGUuRHJvcGRvd24pIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbFtjb2wuaWRdLnZhbHVlICE9IG51bGwgJiYgY29sLm9wdGlvbnNbJ29wdGlvbnMnXS5maW5kKG9wdCA9PiBvcHQuSUQgPT0gdmFsW2NvbC5pZF0udmFsdWUuSUQpID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5vcHRpb25zWydvcHRpb25zJ10ucHVzaCh2YWxbY29sLmlkXS52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbC5vcHRpb25zWydvcHRpb25zJ10gPSBbLi4uY29sLm9wdGlvbnNbJ29wdGlvbnMnXS5zb3J0KChhLCBiKSA9PiBhW2NvbC5vcHRpb25zWydvcHRpb25MYWJlbCddXS5sb2NhbGVDb21wYXJlKGFbY29sLm9wdGlvbnNbJ29wdGlvbkxhYmVsJ11dKSldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zQ2hhbmdlLmVtaXQodGhpcy5jb2x1bW5zKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29sdW1ucy5maWx0ZXIoY29sID0+IGNvbC5vcHRpb25zLmRlZmF1bHRGaWx0ZXJzICE9IG51bGwpLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdEZpbHRlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICAgICAgdGhpcy5jb2x1bW5zLmZvckVhY2goY29sID0+IHtcclxuICAgICAgICAgICAgaWYgKCFjb2wuaW52aXNpYmxlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoY29sLm9wdGlvbnMuZGVmYXVsdEZpbHRlcnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsdGVyKGNvbCwgY29sLm9wdGlvbnMuZGVmYXVsdEZpbHRlcnMsIHRoaXMuZ2V0RmlsdGVyQnlDb2woY29sKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudGFibGUuc2Nyb2xsZXIgJiYgdGhpcy5vcHRpb25zLm1vZGVBcHBlbmRPbmx5KSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsZXIuYXBwZW5kT25seSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmNkUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBvbkZpbHRlclRhYmxlKGV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuaW5pdEZpbHRlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25GaWx0ZXJJbml0LmVtaXQoZXZlbnQuZmlsdGVyZWRWYWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdEZpbHRlciA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbklucHV0TnVtYmVyKGV2ZW50KSB7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIGxvYWRMYXp5KGV2ZW50OiBMYXp5TG9hZEV2ZW50KSB7XHJcbiAgICAgICAgLy90aGlzLnZhbHVlcyA9IGV2ZW50LnJvd3Muc2xpY2UoZXZlbnQuZmlyc3QsIChldmVudC5maXJzdCArIGV2ZW50LnJvd3MpKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBTb3J0XHJcbiAgICBzb3J0R3JpbGxlKGV2ZW50OiBTb3J0RXZlbnQpIHtcclxuXHJcbiAgICAgICAgbGV0IGNvbDogSUNvbHVtbiA9IHRoaXMuY29sdW1ucy5maW5kKGNvbCA9PiBjb2wuaWQgPT0gZXZlbnQuZmllbGQpO1xyXG4gICAgICAgIHRoaXMub25Tb3J0LmVtaXQoeyBjb2x1bW46IGNvbCwgb3JkZXI6IGV2ZW50Lm9yZGVyIH0pXHJcbiAgICAgICAgbGV0IHR5cGVDb2w6IENvbFR5cGUgPSBjb2wudHlwZTtcclxuXHJcbiAgICAgICAgZXZlbnQuZGF0YS5zb3J0KChkYXRhMSwgZGF0YTIpID0+IHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlMSA9IGRhdGExW2V2ZW50LmZpZWxkXS52YWx1ZTtcclxuICAgICAgICAgICAgbGV0IHZhbHVlMiA9IGRhdGEyW2V2ZW50LmZpZWxkXS52YWx1ZTtcclxuXHJcbiAgICAgICAgICAgIGlmIChjb2wub3B0aW9ucy5jdXN0b21Tb3J0ICYmIGNvbC5vcHRpb25zLnNvcnRGdW5jdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sLm9wdGlvbnMuc29ydEZ1bmN0aW9uKHsgY29sdW1uOiBjb2wsIG9yZGVyOiBldmVudC5vcmRlciwgdmFsdWUxOiB2YWx1ZTEsIHZhbHVlMjogdmFsdWUyIH0gYXMgSVNvcnRDdXN0b20pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHJlc3VsdCA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyICE9IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZTEgIT0gbnVsbCAmJiB2YWx1ZTIgPT0gbnVsbClcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUxID09IG51bGwgJiYgdmFsdWUyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMDtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHR5cGVDb2wgPT0gQ29sVHlwZS5UZXh0IHx8IHR5cGVDb2wgPT0gQ29sVHlwZS5GaWxlKVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlMS5sb2NhbGVDb21wYXJlKHZhbHVlMik7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlQ29sID09IENvbFR5cGUuTXVsdGlTZWxlY3QpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUxW3RoaXMuZ2V0T3B0aW9uKGNvbCwgZGF0YTEsICdvcHRpb25MYWJlbCcpXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUyW3RoaXMuZ2V0T3B0aW9uKGNvbCwgZGF0YTIsICdvcHRpb25MYWJlbCcpXSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGhpcy5nZXRNdWx0aVNlbGVjdENvbmNhdCh2YWx1ZTEsIHRoaXMuZ2V0T3B0aW9uKGNvbCwgZGF0YTEsICdvcHRpb25MYWJlbCcpKS5sb2NhbGVDb21wYXJlKHRoaXMuZ2V0TXVsdGlTZWxlY3RDb25jYXQodmFsdWUyLCB0aGlzLmdldE9wdGlvbihjb2wsIGRhdGEyLCAnb3B0aW9uTGFiZWwnKSkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZUNvbCA9PSBDb2xUeXBlLkRyb3Bkb3duIHx8IHR5cGVDb2wgPT0gQ29sVHlwZS5TZWxlY3RCdXR0b24gfHwgdHlwZUNvbCA9PSBDb2xUeXBlLlN0YXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlMVt0aGlzLmdldE9wdGlvbihjb2wsIGRhdGExLCAnb3B0aW9uTGFiZWwnKV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlMlt0aGlzLmdldE9wdGlvbihjb2wsIGRhdGEyLCAnb3B0aW9uTGFiZWwnKV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlMVt0aGlzLmdldE9wdGlvbihjb2wsIGRhdGExLCAnb3B0aW9uTGFiZWwnKV0ubG9jYWxlQ29tcGFyZSh2YWx1ZTJbdGhpcy5nZXRPcHRpb24oY29sLCBkYXRhMiwgJ29wdGlvbkxhYmVsJyldKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVDb2wgPT0gQ29sVHlwZS5OdW1iZXIgfHwgdHlwZUNvbCA9PSBDb2xUeXBlLkNpbG9nTnVtYmVyIHx8IHR5cGVDb2wgPT0gQ29sVHlwZS5EYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHZhbHVlMSA8IHZhbHVlMikgPyAtMSA6ICh2YWx1ZTEgPiB2YWx1ZTIpID8gMSA6IDA7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVDb2wgPT0gQ29sVHlwZS5Td2l0Y2gpXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKHZhbHVlMSA9PT0gdmFsdWUyKSA/IDAgOiB2YWx1ZTEgPyAtMSA6IDE7XHJcbiAgICAgICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID09IDA7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKGV2ZW50Lm9yZGVyICogcmVzdWx0KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGNoZWNrVHlwZSh0eXBlQ29sOiBzdHJpbmcsIGNvbDogSUNvbHVtbikge1xyXG4gICAgICAgIHJldHVybiBjb2xbJ3R5cGUnXSA9PSB0eXBlQ29sO1xyXG4gICAgfVxyXG5cclxuICAgIGNsaWNrQnlJZChpZDogc3RyaW5nKSB7XHJcbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpLmNsaWNrKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25FZGl0Q2VsbChyb3c6IElSb3csIGNvbHVtbjogSUNvbHVtbiwgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5nZXRPcHRpb24oY29sdW1uLCByb3csICdhY3Rpb24nKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2V0T3B0aW9uKGNvbHVtbiwgcm93LCAnYWN0aW9uJykoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm9uRWRpdC5lbWl0KHsgcm93OiByb3csIGNvbHVtbjogY29sdW1uLCB2YWx1ZTogdmFsdWUgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBEZXN0cm95IEZvY3VzXHJcbiAgICAgICAgdGhpcy52YWx1ZXMuZm9yRWFjaCh2YWwgPT4ge1xyXG4gICAgICAgICAgICB2YWxbY29sdW1uLmlkXS5mb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgcm93OiBJUm93LCBjb2x1bW46IElDb2x1bW4sIHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAoZXZlbnQua2V5ID09ICdFbnRlcicpIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVkaXRDZWxsKHJvdywgY29sdW1uLCB2YWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGVkaXRNdWx0aXNlbGVjdChyb3c6IElSb3csIGNvbHVtbjogSUNvbHVtbiwgZXZlbnQpIHtcclxuICAgICAgICB0aGlzLm9uRWRpdENlbGwocm93LCBjb2x1bW4sIHsgbGlzdFNlbGVjdGVkOiBldmVudC52YWx1ZSwgaXRlbVNlbGVjdGVkOiBldmVudC5pdGVtVmFsdWUsIHNlbGVjdGVkOiBldmVudC52YWx1ZS5pbmRleE9mKGV2ZW50Lml0ZW1WYWx1ZSkgIT0gLTEgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3RBbGwoZXZlbnQpIHtcclxuICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoeyByb3c6IG51bGwsIHNlbGVjdGVkUm93czogdGhpcy5zZWxlY3RlZFJvd3MsIGNoZWNrZWQ6IGV2ZW50LmNoZWNrZWQgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3RSb3cocm93OiBJUm93KSB7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KHsgcm93OiByb3csIHNlbGVjdGVkUm93czogdGhpcy5zZWxlY3RlZFJvd3MsIGNoZWNrZWQ6IHRydWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25TZWxlY3RDZWxsKGNlbGw6IElDZWxsKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coY2VsbClcclxuICAgICAgICB0aGlzLm9uU2VsZWN0LmVtaXQoeyBjZWxsOiBjZWxsIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVW5zZWxlY3RSb3cocm93OiBJUm93KSB7XHJcbiAgICAgICAgdGhpcy5vblVuc2VsZWN0LmVtaXQoeyByb3c6IHJvdywgc2VsZWN0ZWRSb3dzOiB0aGlzLnNlbGVjdGVkUm93cywgY2hlY2tlZDogZmFsc2UgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcmVmcmVzaERhdGEoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zb3J0YWJsZSAmJiB0aGlzLm9wdGlvbnMudmlydHVhbFNjcm9sbCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbHVlcyA9IFsuLi50aGlzLnZhbHVlc107XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uUGFnZVRhYmxlKGV2ZW50OiBJUGFnZSkge1xyXG4gICAgICAgIHRoaXMub25QYWdlLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRGVsZXRlTGluZShyb3c6IElSb3cpIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1hbnVhbGx5RGVsZXRhYmxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25EZWxldGUuZW1pdCh7IHJvdzogcm93IH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29uZmlybWF0aW9uU2VydmljZS5jb25maXJtKHtcclxuICAgICAgICAgICAgICAgIGtleTogJ2NvbmZpcm0nLFxyXG4gICAgICAgICAgICAgICAgbWVzc2FnZTogJ8OKdGVzLXZvdXMgc8O7ciBkZSB2b3Vsb2lyIHN1cHByaW1lciBjZXR0ZSBsaWduZSA/JyxcclxuICAgICAgICAgICAgICAgIGFjY2VwdDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzLnNwbGljZSh0aGlzLnZhbHVlcy5pbmRleE9mKHJvdyksIDEpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsdWVzID0gWy4uLnRoaXMudmFsdWVzXTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlc0NoYW5nZS5lbWl0KHRoaXMudmFsdWVzKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlLmVtaXQoeyByb3c6IHJvdyB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uRWRpdEluaXRDZWxsKGV2ZW50LCByb3c6IElSb3csIGNvbHVtbjogSUNvbHVtbiwgdmFsdWU6IGFueSkge1xyXG4gICAgICAgIGV2ZW50LnRhcmdldC5zZWxlY3QoKTtcclxuICAgICAgICB0aGlzLm9uRWRpdEluaXQuZW1pdCh7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiwgdmFsdWU6IHZhbHVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUm93RG91YmxlQ2xpY2tFdmVudChyb3c6IElSb3cpIHtcclxuICAgICAgICB0aGlzLm9uUm93RG91YmxlQ2xpY2suZW1pdCh7IHJvdzogcm93IH0pO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE9wdGlvbihjb2wsIHJvdywgb3B0aW9uOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAocm93ICE9IG51bGwgJiYgcm93W2NvbC5pZF0ub3B0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChyb3dbY29sLmlkXS5vcHRpb25zW29wdGlvbl0gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvd1tjb2wuaWRdLm9wdGlvbnNbb3B0aW9uXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoY29sICE9IG51bGwgJiYgY29sLm9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBpZiAoY29sLm9wdGlvbnNbb3B0aW9uXSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY29sLm9wdGlvbnNbb3B0aW9uXVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE11bHRpU2VsZWN0Q29uY2F0KHZhbHVlLCBsYWJlbDogc3RyaW5nKSB7XHJcbiAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLm1hcCh2YWwgPT4geyByZXR1cm4gdmFsW2xhYmVsXTsgfSkuam9pbignLCAnKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFNlbGVjdExpYmVsbGVCeVZhbHVlKHJvdywgY29sKSB7XHJcbiAgICAgICAgbGV0IGxhYmVsOiBzdHJpbmcgPSAnJztcclxuICAgICAgICBpZiAocm93W2NvbC5pZF0udmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChyb3dbY29sLmlkXS5vcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgICAgbGFiZWwgPSByb3dbY29sLmlkXS5vcHRpb25zWydvcHRpb25zJ10uZmluZChvcHQgPT4gb3B0LnZhbHVlID09IHJvd1tjb2wuaWRdLnZhbHVlKVtyb3dbY29sLmlkXS5vcHRpb25zLm9wdGlvbkxhYmVsXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoY29sLm9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgbGFiZWwgPSBjb2wub3B0aW9uc1snb3B0aW9ucyddLmZpbmQob3B0ID0+IG9wdC52YWx1ZSA9PSByb3dbY29sLmlkXS52YWx1ZSlbY29sLm9wdGlvbnMub3B0aW9uTGFiZWxdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH1cclxuXHJcbiAgICBnZXRGaWx0ZXJCeUNvbChjb2w6IElDb2x1bW4pIHtcclxuICAgICAgICAvLyBEYXRlcyAocmFuZ2UpXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuRGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gJ2RhdGVSYW5nZUZpbHRlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE9iamV0XHJcbiAgICAgICAgaWYgKChjb2wudHlwZSA9PSBDb2xUeXBlLkRyb3Bkb3duICYmICEoPElPcHRpb25zRHJvcGRvd24+Y29sLm9wdGlvbnMpLmZpbHRlclRleHQpIHx8IGNvbC50eXBlID09IENvbFR5cGUuU3RhdGUpIHtcclxuICAgICAgICAgICAgcmV0dXJuICdvYmpldEZpbHRlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIExpc3RlXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuTXVsdGlTZWxlY3QgJiYgISg8SU9wdGlvbnNNdWx0aVNlbGVjdD5jb2wub3B0aW9ucykuZmlsdGVyVGV4dCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJ2xpc3RlRmlsdGVyJztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gVGV4dGVcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5GaWxlXHJcbiAgICAgICAgICAgIHx8IGNvbC50eXBlID09IENvbFR5cGUuVGV4dFxyXG4gICAgICAgICAgICB8fCBjb2wudHlwZSA9PSBDb2xUeXBlLk51bWJlclxyXG4gICAgICAgICAgICB8fCBjb2wudHlwZSA9PSBDb2xUeXBlLkNpbG9nTnVtYmVyXHJcbiAgICAgICAgICAgIHx8IChjb2wudHlwZSA9PSBDb2xUeXBlLk11bHRpU2VsZWN0ICYmICg8SU9wdGlvbnNNdWx0aVNlbGVjdD5jb2wub3B0aW9ucykuZmlsdGVyVGV4dClcclxuICAgICAgICAgICAgfHwgKGNvbC50eXBlID09IENvbFR5cGUuRHJvcGRvd24gJiYgKDxJT3B0aW9uc0Ryb3Bkb3duPmNvbC5vcHRpb25zKS5maWx0ZXJUZXh0KSkge1xyXG4gICAgICAgICAgICByZXR1cm4gJ3RleHRGaWx0ZXInO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTd2l0Y2hcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5Td2l0Y2gpIHtcclxuICAgICAgICAgICAgcmV0dXJuICdzd2l0Y2hGaWx0ZXInO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTd2l0Y2hcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5TZWxlY3RCdXR0b24pIHtcclxuICAgICAgICAgICAgcmV0dXJuICdzZWxlY3RCdXR0b25GaWx0ZXInO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBvbkZpbHRlckNvbChldmVudCwgY29sOiBJQ29sdW1uKSB7XHJcbiAgICAgICAgbGV0IHZhbHVlOiBhbnk7XHJcblxyXG4gICAgICAgIC8vIERhdGVzIChyYW5nZSlcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5EYXRlKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gY29sLm9wdGlvbnMuZGVmYXVsdEZpbHRlcnM7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIE9iamV0XHJcbiAgICAgICAgaWYgKChjb2wudHlwZSA9PSBDb2xUeXBlLkRyb3Bkb3duICYmICEoPElPcHRpb25zRHJvcGRvd24+Y29sLm9wdGlvbnMpLmZpbHRlclRleHQpIHx8IGNvbC50eXBlID09IENvbFR5cGUuU3RhdGUpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBldmVudCA9PSBudWxsID8gbnVsbCA6IGV2ZW50LnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBMaXN0ZVxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLk11bHRpU2VsZWN0ICYmICEoPElPcHRpb25zTXVsdGlTZWxlY3Q+Y29sLm9wdGlvbnMpLmZpbHRlclRleHQpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBldmVudCA9PSBudWxsID8gbnVsbCA6IGV2ZW50LnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUZXh0ZVxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLkZpbGVcclxuICAgICAgICAgICAgfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5UZXh0XHJcbiAgICAgICAgICAgIHx8IGNvbC50eXBlID09IENvbFR5cGUuTnVtYmVyXHJcbiAgICAgICAgICAgIHx8IGNvbC50eXBlID09IENvbFR5cGUuQ2lsb2dOdW1iZXJcclxuICAgICAgICAgICAgfHwgKGNvbC50eXBlID09IENvbFR5cGUuTXVsdGlTZWxlY3QgJiYgKDxJT3B0aW9uc011bHRpU2VsZWN0PmNvbC5vcHRpb25zKS5maWx0ZXJUZXh0KVxyXG4gICAgICAgICAgICB8fCAoY29sLnR5cGUgPT0gQ29sVHlwZS5Ecm9wZG93biAmJiAoPElPcHRpb25zRHJvcGRvd24+Y29sLm9wdGlvbnMpLmZpbHRlclRleHQpKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTd2l0Y2hcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5Td2l0Y2gpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBldmVudC52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gU2VsZWN0QnV0dG9uXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuU2VsZWN0QnV0dG9uKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gZXZlbnQgPT0gbnVsbCA/IG51bGwgOiBldmVudC52YWx1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gQnV0dG9uXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuQnV0dG9uKSB7XHJcbiAgICAgICAgICAgIHZhbHVlID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5maWx0ZXIoY29sLCB2YWx1ZSwgdGhpcy5nZXRGaWx0ZXJCeUNvbChjb2wpKTtcclxuICAgICAgICBpZiAodGhpcy50YWJsZS5zY3JvbGxlciAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsZXIuc2V0SW5pdGlhbFN0YXRlKCk7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsZXIuaW5pdCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5vbkZpbHRlci5lbWl0KHsgY29sdW1uOiBjb2wsIHZhbHVlOiB2YWx1ZSwgZmlsdGVyZWRWYWx1ZTogdGhpcy50YWJsZS5maWx0ZXJlZFZhbHVlIH0pXHJcbiAgICB9XHJcblxyXG4gICAgZmlsdGVyKGNvbDogSUNvbHVtbiwgdmFsOiBhbnksIGZpbHRlcjogc3RyaW5nKSB7XHJcblxyXG4gICAgICAgIC8vIENvcGllciAtIENvbGxlciBkZSBsYSBtw6l0aG9kZSBmaWx0ZXIoKSBkZSB0YWJsZS50cyBkZSBQcmltZU5HIHNhbnMgbGEgZMOpc3luY2hyb25pc2F0aW9uIGNhdXPDqWUgcGFyIGZpbHRlckRlbGF5IChzZXRUaW1lb3V0KVxyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlLmZpbHRlclRpbWVvdXQpIHtcclxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMudGFibGUuZmlsdGVyVGltZW91dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICghdGhpcy50YWJsZS5pc0ZpbHRlckJsYW5rKHZhbCkpIHtcclxuICAgICAgICAgICAgdGhpcy50YWJsZS5maWx0ZXJzW2NvbC5pZF0gPSB7IHZhbHVlOiB2YWwsIG1hdGNoTW9kZTogZmlsdGVyIH07XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlLmZpbHRlcnNbY29sLmlkXSkge1xyXG4gICAgICAgICAgICBkZWxldGUgdGhpcy50YWJsZS5maWx0ZXJzW2NvbC5pZF07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnRhYmxlLl9maWx0ZXIoKTtcclxuICAgICAgICB0aGlzLnRhYmxlLmZpbHRlclRpbWVvdXQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMudGFibGUuYW5jaG9yUm93SW5kZXggPSBudWxsO1xyXG5cclxuICAgICAgICBpZiAodGhpcy50YWJsZS5zY3JvbGxlcikge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLnNjcm9sbGVyLnZpZXdJbml0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldFRvdGFsKGNvbDogSUNvbHVtbikge1xyXG4gICAgICAgIGlmIChjb2wuZGlzcGxheVRvdGFsICYmIChjb2wudHlwZSA9PSBDb2xUeXBlLk51bWJlciB8fCBjb2wudHlwZSA9PSBDb2xUeXBlLkNpbG9nTnVtYmVyKSkge1xyXG4gICAgICAgICAgICBsZXQgdmFsdWVzOiBJUm93W10gPSB0aGlzLnZhbHVlcztcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50b3RhbEJ5RmlsdGVyID09IHRydWUgJiYgdGhpcy50YWJsZS5maWx0ZXJlZFZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMudGFibGUuZmlsdGVyZWRWYWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsZXQgdG90YWw6IG51bWJlciA9IDA7XHJcbiAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXZhbC5leGNsdXNpb25Ub3RhbCAmJiAhdmFsW2NvbC5pZF0uZXhjbHVzaW9uVG90YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24gPT0gTW9kZVNlbGVjdGlvbi5DaGVja2JveCAmJiB0aGlzLm9wdGlvbnMudG90YWxCeVNlbGVjdGlvbiA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZFJvd3MgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkUm93cy5maW5kKHJvdyA9PiByb3cuaWQgPT0gdmFsLmlkKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgKz0gKHZhbFtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyB2YWxbY29sLmlkXS52YWx1ZSA6IDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgKz0gKHZhbFtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyB2YWxbY29sLmlkXS52YWx1ZSA6IDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgKz0gKHZhbFtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyB2YWxbY29sLmlkXS52YWx1ZSA6IDApO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiB0b3RhbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gMDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VG90YWxTdHIoY29sOiBJQ29sdW1uKSB7XHJcbiAgICAgICAgaWYgKGNvbC5kaXNwbGF5VG90YWwgJiYgKGNvbC50eXBlID09IENvbFR5cGUuTnVtYmVyIHx8IGNvbC50eXBlID09IENvbFR5cGUuQ2lsb2dOdW1iZXIpKSB7XHJcblxyXG4gICAgICAgICAgICBpZiAoY29sLm1ldGhvZFRvdGFsICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEZvcm1hdHRlZE51bWJlcihjb2wsIG51bGwsIGNvbC5tZXRob2RUb3RhbCgpLCB0cnVlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCB2YWx1ZXM6IElSb3dbXSA9IHRoaXMudmFsdWVzO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy50b3RhbEJ5RmlsdGVyID09IHRydWUgJiYgdGhpcy50YWJsZS5maWx0ZXJlZFZhbHVlICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBsZXQgdG90YWw6IG51bWJlciA9IDA7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCh2YWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICghdmFsLmV4Y2x1c2lvblRvdGFsICYmICF2YWxbY29sLmlkXS5leGNsdXNpb25Ub3RhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tb2RlU2VsZWN0aW9uID09IE1vZGVTZWxlY3Rpb24uQ2hlY2tib3ggJiYgdGhpcy5vcHRpb25zLnRvdGFsQnlTZWxlY3Rpb24gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cyAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRSb3dzLmZpbmQocm93ID0+IHJvdy5pZCA9PSB2YWwuaWQpICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgKz0gKHZhbFtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyB2YWxbY29sLmlkXS52YWx1ZSA6IDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgKz0gKHZhbFtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyB2YWxbY29sLmlkXS52YWx1ZSA6IDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWwgKz0gKHZhbFtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyB2YWxbY29sLmlkXS52YWx1ZSA6IDApO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRGb3JtYXR0ZWROdW1iZXIoY29sLCBudWxsLCB0b3RhbCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybWF0dGVkVGV4dChjb2w6IElDb2x1bW4sIHJvd0RhdGE6IElSb3cpIHtcclxuICAgICAgICBsZXQgdmFsdWU6IHN0cmluZyA9IHJvd0RhdGFbY29sLmlkXS52YWx1ZTtcclxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBsZXQgaW5kZW50YXRpb246IG51bWJlciA9IHRoaXMuZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2luZGVudGF0aW9uJyk7XHJcbiAgICAgICAgICAgIGlmIChpbmRlbnRhdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJyAgICAgICAnLnJlcGVhdChpbmRlbnRhdGlvbikgKyB2YWx1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybWF0dGVkTnVtYmVyKGNvbDogSUNvbHVtbiwgcm93RGF0YTogSVJvdywgdmFsdWU6IG51bWJlciwgdG90YWw6IGJvb2xlYW4gPSBmYWxzZSkge1xyXG5cclxuICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJyc7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbGV0IGZpbmFsVmFsdWU6IHN0cmluZ1tdID0gW107XHJcblxyXG4gICAgICAgICAgICAvLyBQcsOpZml4ZVxyXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRPcHRpb24oY29sLCByb3dEYXRhLCAncHJlZml4JykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZmluYWxWYWx1ZS5wdXNoKHRoaXMuZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3ByZWZpeCcpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gVmFsZXVyXHJcbiAgICAgICAgICAgIGlmICh0b3RhbCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IG1pbkRlY2ltYWxlc1RvdGFsOiBudW1iZXIgPSAyO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1heERlY2ltYWxlc1RvdGFsOiBudW1iZXIgPSAyO1xyXG4gICAgICAgICAgICAgICAgaWYgKCg8SU9wdGlvbnNOdW1iZXI+Y29sLm9wdGlvbnMpLm1pbkRlY2ltYWxlc1RvdGFsICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5EZWNpbWFsZXNUb3RhbCA9ICg8SU9wdGlvbnNOdW1iZXI+Y29sLm9wdGlvbnMpLm1pbkRlY2ltYWxlc1RvdGFsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKCg8SU9wdGlvbnNOdW1iZXI+Y29sLm9wdGlvbnMpLm1heERlY2ltYWxlc1RvdGFsICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXhEZWNpbWFsZXNUb3RhbCA9ICg8SU9wdGlvbnNOdW1iZXI+Y29sLm9wdGlvbnMpLm1heERlY2ltYWxlc1RvdGFsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG1heERlY2ltYWxlc1RvdGFsIDwgbWluRGVjaW1hbGVzVG90YWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXhEZWNpbWFsZXNUb3RhbCA9IG1pbkRlY2ltYWxlc1RvdGFsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZmluYWxWYWx1ZS5wdXNoKHZhbHVlLnRvTG9jYWxlU3RyaW5nKCdmci1GUicsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBtYXhEZWNpbWFsZXNUb3RhbCwgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBtaW5EZWNpbWFsZXNUb3RhbCB9KSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWluRGVjaW1hbGVzOiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWF4RGVjaW1hbGVzOiBudW1iZXI7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWF4RGVjaW1hbGVzJykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1heERlY2ltYWxlcyA9IHRoaXMuZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21heERlY2ltYWxlcycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21pbkRlY2ltYWxlcycpICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICBtaW5EZWNpbWFsZXMgPSB0aGlzLmdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtaW5EZWNpbWFsZXMnKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIC8vZmluYWxWYWx1ZS5wdXNoKHZhbHVlLnRvTG9jYWxlU3RyaW5nKCdmci1GUicpKVxyXG4gICAgICAgICAgICAgICAgZmluYWxWYWx1ZS5wdXNoKHZhbHVlLnRvTG9jYWxlU3RyaW5nKCdmci1GUicsIHsgbWF4aW11bUZyYWN0aW9uRGlnaXRzOiBtYXhEZWNpbWFsZXMsIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogbWluRGVjaW1hbGVzIH0pKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gU3VmZml4ZVxyXG4gICAgICAgICAgICBpZiAodGhpcy5nZXRPcHRpb24oY29sLCByb3dEYXRhLCAnc3VmZml4JykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgZmluYWxWYWx1ZS5wdXNoKHRoaXMuZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3N1ZmZpeCcpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIGZpbmFsVmFsdWUuam9pbignICcpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBkb3dubG9hZEZpbGUoY2VsbDogSUNlbGwpIHtcclxuICAgICAgICBsZXQgcGF0aDogc3RyaW5nID0gKDxJT3B0aW9uc0ZpbGU+Y2VsbC5vcHRpb25zKS5kb3dubG9hZFBhdGg7XHJcbiAgICAgICAgbGV0IGZpbGVOYW1lID0gY2VsbC52YWx1ZTtcclxuICAgICAgICBjb25zdCBhOiBIVE1MQW5jaG9yRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKSBhcyBIVE1MQW5jaG9yRWxlbWVudDtcclxuICAgICAgICBhLmhyZWYgPSBwYXRoO1xyXG4gICAgICAgIGEuZG93bmxvYWQgPSBmaWxlTmFtZTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICAgIGEuY2xpY2soKTtcclxuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgICAgIFVSTC5yZXZva2VPYmplY3RVUkwocGF0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgaGFzRnJvemVuQ29sdW1ucygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW5zLmZpbHRlcihjb2wgPT4gY29sLmZyb3plbiA9PSB0cnVlKS5sZW5ndGggPiAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRyYWNrQnlGdW5jdGlvbihpbmRleCwgaXRlbSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtPy5pZDtcclxuICAgIH1cclxuXHJcbiAgICBpc1ZhbHVlQnV0dG9uQnlUeXBlKHZhbHVlOiBhbnksIHR5cGU6IHN0cmluZykge1xyXG4gICAgICAgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSB0eXBlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTW9kZUVkaXRpb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5lZGl0YWJsZTtcclxuICAgIH1cclxuXHJcbiAgICBnZXRNb2RlU2VsZWN0aW9uKCk6IHN0cmluZyB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5zZWxlY3RhYmxlICE9IHRydWUpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHN3aXRjaCAodGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24pIHtcclxuICAgICAgICAgICAgY2FzZSBNb2RlU2VsZWN0aW9uLkNoZWNrYm94OlxyXG4gICAgICAgICAgICBjYXNlIE1vZGVTZWxlY3Rpb24uTWV0YWtleTpcclxuICAgICAgICAgICAgICAgIHJldHVybiAnbXVsdGlwbGUnO1xyXG4gICAgICAgICAgICBjYXNlIE1vZGVTZWxlY3Rpb24uQ2VsbDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICBjYXNlIE1vZGVTZWxlY3Rpb24uUm93OlxyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdzaW5nbGUnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpc01vZGVDaGVja2JveFNlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNlbGVjdGFibGUgPT0gdHJ1ZSAmJiB0aGlzLm9wdGlvbnMubW9kZVNlbGVjdGlvbiAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5tb2RlU2VsZWN0aW9uID09IE1vZGVTZWxlY3Rpb24uQ2hlY2tib3g7XHJcbiAgICB9XHJcblxyXG4gICAgaXNNb2RlQ2VsbFNlbGVjdGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLnNlbGVjdGFibGUgPT0gdHJ1ZSAmJiB0aGlzLm9wdGlvbnMubW9kZVNlbGVjdGlvbiAhPSBudWxsICYmIHRoaXMub3B0aW9ucy5tb2RlU2VsZWN0aW9uID09IE1vZGVTZWxlY3Rpb24uQ2VsbDtcclxuICAgIH1cclxuXHJcbiAgICBpc01vZGVNZXRha2V5U2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2VsZWN0YWJsZSA9PSB0cnVlICYmIHRoaXMub3B0aW9ucy5tb2RlU2VsZWN0aW9uICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24gPT0gTW9kZVNlbGVjdGlvbi5NZXRha2V5O1xyXG4gICAgfVxyXG5cclxuICAgIGV4cG9ydEV4Y2VsKGJ5RmlsdHJlOiBib29sZWFuID0gZmFsc2UsIHdpdGhDb2xvcnM6IGJvb2xlYW4gPSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5leHBvcnRTZXJ2aWNlLmV4cG9ydEV4Y2VsKHRoaXMudGFibGUuZmlsdGVyZWRWYWx1ZSAhPSBudWxsID8gdGhpcy50YWJsZS5maWx0ZXJlZFZhbHVlIDogdGhpcy52YWx1ZXMsIHRoaXMuY29sdW1ucywgYnlGaWx0cmUsIHdpdGhDb2xvcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uQ2xpY2tDZWxsTnVtYmVyKHJvdzogSVJvdywgY29sOiBJQ29sdW1uKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZXMuZm9yRWFjaCh2YWwgPT4ge1xyXG4gICAgICAgICAgICB2YWxbY29sLmlkXS5mb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJvd1tjb2wuaWRdLmZvY3VzID0gdHJ1ZTtcclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbnB1dE51bWJlci5pbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIiwiPGRpdiBbbmdTdHlsZV09XCJ7ICdoZWlnaHQnOiBvcHRpb25zLnNjcm9sbEhlaWdodCAhPSBudWxsID8gb3B0aW9ucy5zY3JvbGxIZWlnaHQgOiAnMTAwJScgfVwiPlxyXG5cclxuICAgIDxidXR0b24gcEJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cIm9wdGlvbnMuZXhwb3J0RXhjZWxcIlxyXG4gICAgICAgICAgICBpY29uPVwicGkgcGktZmlsZS1leGNlbFwiXHJcbiAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tc3VjY2VzcyBhYnNvbHV0ZSB6LTUgdy0ycmVtIGgtMnJlbSBib3JkZXItcm91bmQtcmlnaHQgYm9yZGVyLW5vcm91bmQtdG9wXCJcclxuICAgICAgICAgICAgcFRvb2x0aXA9XCJFeHBvcnRlciBsZSBjb250ZW51IGRlIGxhIGdyaWxsZSBhdSBmb3JtYXQgRXhjZWxcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZXhwb3J0RXhjZWwob3B0aW9ucy5leHBvcnRFeGNlbEJ5RmlsdHJlLCAhb3B0aW9ucy5leHBvcnRFeGNlbE5vQ29sb3JzKVwiPlxyXG4gICAgPC9idXR0b24+XHJcblxyXG4gICAgPHAtY29udGV4dE1lbnUgI2NtIFttb2RlbF09XCJvcHRpb25zLmNvbnRleHRNZW51SXRlbXNcIiAvPlxyXG5cclxuICAgIDxwLXRhYmxlICN0YWJsZVxyXG4gICAgICAgICAgICAgW2NvbHVtbnNdPVwiY29sdW1uc1wiXHJcbiAgICAgICAgICAgICBbdmFsdWVdPVwidmFsdWVzXCJcclxuICAgICAgICAgICAgIGRhdGFLZXk9XCJpZFwiXHJcbiAgICAgICAgICAgICBbc2VsZWN0aW9uTW9kZV09XCJnZXRNb2RlU2VsZWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgW21ldGFLZXlTZWxlY3Rpb25dPVwiaXNNb2RlTWV0YWtleVNlbGVjdGlvbigpXCJcclxuICAgICAgICAgICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZFJvd3NcIlxyXG4gICAgICAgICAgICAgKG9uUm93U2VsZWN0KT1cIm9uU2VsZWN0Um93KCRldmVudClcIlxyXG4gICAgICAgICAgICAgKG9uUm93VW5zZWxlY3QpPVwib25VbnNlbGVjdFJvdygkZXZlbnQpXCJcclxuICAgICAgICAgICAgIChvbkhlYWRlckNoZWNrYm94VG9nZ2xlKT1cIm9uU2VsZWN0QWxsKCRldmVudClcIlxyXG4gICAgICAgICAgICAgKHNvcnRGdW5jdGlvbik9XCJzb3J0R3JpbGxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgW2N1c3RvbVNvcnRdPVwib3B0aW9ucy5ncm91cGluZyA9PSBudWxsID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgIFtzY3JvbGxhYmxlXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZ1wiXHJcbiAgICAgICAgICAgICBbc2Nyb2xsSGVpZ2h0XT1cIidmbGV4J1wiXHJcbiAgICAgICAgICAgICBbcm93R3JvdXBNb2RlXT1cIm9wdGlvbnMuZ3JvdXBpbmcgIT0gbnVsbCA/ICdzdWJoZWFkZXInIDogbnVsbFwiXHJcbiAgICAgICAgICAgICBbZ3JvdXBSb3dzQnldPVwib3B0aW9ucy5ncm91cGluZyAhPSBudWxsID8gb3B0aW9ucy5ncm91cGluZy5vYmogKyAnLicgKyBvcHRpb25zLmdyb3VwaW5nLmlkIDogbnVsbFwiXHJcbiAgICAgICAgICAgICBbZ3JvdXBSb3dzQnlPcmRlcl09XCIwXCJcclxuICAgICAgICAgICAgIFt2aXJ0dWFsU2Nyb2xsXT1cIm9wdGlvbnMudmlydHVhbFNjcm9sbCA9PSB0cnVlICYmIG9wdGlvbnMuc2Nyb2xsSGVpZ2h0ICE9IG51bGwgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgW3ZpcnR1YWxTY3JvbGxJdGVtU2l6ZV09XCJvcHRpb25zLnZpcnR1YWxTY3JvbGxJdGVtU2l6ZSAhPSBudWxsID8gb3B0aW9ucy52aXJ0dWFsU2Nyb2xsSXRlbVNpemUgOiAzNVwiXHJcbiAgICAgICAgICAgICBbcGFnaW5hdG9yXT1cIm9wdGlvbnMucGFnaW5hdG9yID09IG51bGwgPyBmYWxzZSA6IHRydWVcIlxyXG4gICAgICAgICAgICAgW3Jvd3NdPVwib3B0aW9ucy5wYWdpbmF0b3JSb3dzXCJcclxuICAgICAgICAgICAgIChvblBhZ2UpPVwib25QYWdlVGFibGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICBbdGFibGVTdHlsZUNsYXNzXT1cIiFvcHRpb25zLnRoZW1lR3JpbGxlID8gJ2dyaWRfZ3JleScgOiBvcHRpb25zLnRoZW1lR3JpbGxlXCJcclxuICAgICAgICAgICAgIFtsYXp5XT1cIm9wdGlvbnMubGF6eSA9PSB0cnVlID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgIChvbkZpbHRlcik9XCJvbkZpbHRlclRhYmxlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgW3Jvd1RyYWNrQnldPVwidHJhY2tCeUZ1bmN0aW9uXCJcclxuICAgICAgICAgICAgIFsoY29udGV4dE1lbnVTZWxlY3Rpb24pXT1cImNvbnRleHRNZW51U2VsZWN0ZWRJdGVtXCJcclxuICAgICAgICAgICAgIFtjb250ZXh0TWVudV09XCJjbVwiPlxyXG5cclxuICAgICAgICA8IS0tIEhFQURFUiAtLT5cclxuICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEhFQURFUlMgLS0+XHJcbiAgICAgICAgICAgIDx0ciBjbGFzcz1cInJvd0hlYWRlclwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc01vZGVDaGVja2JveFNlbGVjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggKm5nSWY9XCIhb3B0aW9ucy5maWx0ZXJhYmxlICYmIG9wdGlvbnMudG9nZ2xlQWxsXCI+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIhY29sLmludmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogY29sLmJhY2tncm91bmRDb2xvciA/IGNvbC5iYWNrZ3JvdW5kQ29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0ZXh0LWNlbnRlcicgOiBvcHRpb25zLmNlbnRlckhlYWRlcnMsICdoZWFkZXJBZmZpY2hhZ2VTaW1wbGUnOiAhb3B0aW9ucy5oZWFkZXJzQWZmaWNoYWdlRW50aWVyLCAnaGVhZGVyQWZmaWNoYWdlRW50aWVyJzogb3B0aW9ucy5oZWFkZXJzQWZmaWNoYWdlRW50aWVyIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFNvcnRhYmxlQ29sdW1uXT1cImNvbC5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwU29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCIhb3B0aW9ucy5zb3J0YWJsZSB8fCBvcHRpb25zLmdyb3VwaW5nICE9IG51bGwgfHwgY29sLmxpYmVsbGUgPT0gbnVsbCB8fCBjb2wubGliZWxsZSA9PSAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgY29sLmlkIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInJlZnJlc2hEYXRhKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJjb2wubGliZWxsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwSGVhZGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW25nU3R5bGVdPVwieyAnY29sb3InOiBjb2wudGV4dENvbG9yID8gY29sLnRleHRDb2xvciA6IG51bGwgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLmxpYmVsbGUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNvcnRJY29uICpuZ0lmPVwib3B0aW9ucy5zb3J0YWJsZSAmJiBvcHRpb25zLmdyb3VwaW5nID09IG51bGwgJiYgY29sLmxpYmVsbGUgIT0gbnVsbCAmJiBjb2wubGliZWxsZSAhPSAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWVsZF09XCJjb2wuaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLXNvcnRJY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNlbGxEZWxldGVcIiAqbmdJZj1cIm9wdGlvbnMucm93c0RlbGV0YWJsZVwiPjwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcblxyXG4gICAgICAgICAgICA8IS0tIEZJTFRSRVMgLS0+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cIm9wdGlvbnMuZmlsdGVyYWJsZVwiIGNsYXNzPVwicm93RmlsdGVyXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc01vZGVDaGVja2JveFNlbGVjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlSGVhZGVyQ2hlY2tib3ggKm5nSWY9XCJvcHRpb25zLnRvZ2dsZUFsbFwiPjwvcC10YWJsZUhlYWRlckNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGV4dCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiAoKGNoZWNrVHlwZSgnRHJvcGRvd24nLCBjb2wpICYmIGNvbC5vcHRpb25zLmZpbHRlclRleHQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IChjaGVja1R5cGUoJ011bHRpU2VsZWN0JywgY29sKSAmJiBjb2wub3B0aW9ucy5maWx0ZXJUZXh0KVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBjaGVja1R5cGUoJ1RleHQnLCBjb2wpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IGNoZWNrVHlwZSgnRmlsZScsIGNvbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGNoZWNrVHlwZSgnQnV0dG9uJywgY29sKSAmJiBjb2wub3B0aW9ucy5maWx0ZXJDb2wpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBjaGVja1R5cGUoJ051bWJlcicsIGNvbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgY2hlY2tUeXBlKCdDaWxvZ051bWJlcicsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCIhY29sLmRpc2FibGVGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlucHV0KT1cIm9uRmlsdGVyQ29sKCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5vcHRpb25zLmRlZmF1bHRGaWx0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEYXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnRGF0ZScsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1jYWxlbmRhciAqbmdJZj1cIiFjb2wuZGlzYWJsZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aWV3XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gbnVsbCA/ICdkYXRlJyA6IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGF0ZUZvcm1hdF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICd5ZWFyJyA/ICd5eScgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICdtb250aCcgPyAnbW0veXknIDogJ2RkL21tL3l5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dElkXT1cImNvbC5pZCArICdfZmlsdGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyZWFkb25seUlucHV0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25Nb2RlPVwicmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25TZWxlY3QpPVwib25GaWx0ZXJDb2woJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0J1dHRvbkJhcj1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGVhckNsaWNrKT1cIm9uRmlsdGVyQ29sKCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLm9wdGlvbnMuZGVmYXVsdEZpbHRlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gTGlzdGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgKChjaGVja1R5cGUoJ0Ryb3Bkb3duJywgY29sKSAmJiAhY29sLm9wdGlvbnMuZmlsdGVyVGV4dCkgfHwgKGNoZWNrVHlwZSgnTXVsdGlTZWxlY3QnLCBjb2wpICYmICFjb2wub3B0aW9ucy5maWx0ZXJUZXh0KSB8fCBjaGVja1R5cGUoJ1NlbGVjdEJ1dHRvbicsIGNvbCkgfHwgY2hlY2tUeXBlKCdTdGF0ZScsIGNvbCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgKm5nSWY9XCIhY29sLmRpc2FibGVGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJjb2wub3B0aW9ucz8ub3B0aW9uc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJJRFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJjb2wub3B0aW9ucz8ub3B0aW9uTGFiZWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUZpbHRlck1lc3NhZ2U9XCJBdWN1biByw6lzdWx0YXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eU1lc3NhZ2U9XCJBdWN1biByw6lzdWx0YXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlydHVhbFNjcm9sbF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpcnR1YWxTY3JvbGxJdGVtU2l6ZV09XCIzNVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXNMYWJlbD1cInswfSBzZWxlY3Rpb25uw6lzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRmlsdGVyQ29sKCRldmVudCwgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLm9wdGlvbnMuZGVmYXVsdEZpbHRlcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZ3JvdXBdPVwiY29sLm9wdGlvbnMub3B0aW9uR3JvdXBDaGlsZHJlbiAhPSBudWxsID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkdyb3VwTGFiZWxdPVwiY29sLm9wdGlvbnMub3B0aW9uR3JvdXBMYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Hcm91cENoaWxkcmVuXT1cImNvbC5vcHRpb25zLm9wdGlvbkdyb3VwQ2hpbGRyZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RvZ2dsZUFsbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsZWFyKT1cIm9uRmlsdGVyQ29sKG51bGwsIGNvbClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZ3JvdXAgcFRlbXBsYXRlPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7Z3JvdXBbY29sLm9wdGlvbnMub3B0aW9uR3JvdXBMYWJlbF19fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3dpdGNoIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnU3dpdGNoJywgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0ICpuZ0lmPVwiIWNvbC5kaXNhYmxlRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwib3B0aW9uc1N3aXRjaFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVhZGVyXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uTGFiZWw9XCJsYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvblZhbHVlPVwidmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUZpbHRlck1lc3NhZ2U9XCJBdWN1biByw6lzdWx0YXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eU1lc3NhZ2U9XCJBdWN1biByw6lzdWx0YXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cIjMwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtc0xhYmVsPVwiezB9IHNlbGVjdGlvbm7DqXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25GaWx0ZXJDb2woJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBOb24gZmlsdHJhYmxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIChjaGVja1R5cGUoJ0ltYWdlJywgY29sKSB8fCAoY2hlY2tUeXBlKCdCdXR0b24nLCBjb2wpICYmICFjb2wub3B0aW9ucy5maWx0ZXJDb2wpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiICpuZ0lmPVwib3B0aW9ucy5yb3dzRGVsZXRhYmxlXCI+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gVE9UQUwgLS0+XHJcbiAgICAgICAgICAgIDx0ciAqbmdJZj1cIm9wdGlvbnMucm93VG90YWxcIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyb3dUb3RhbFwiPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc01vZGVDaGVja2JveFNlbGVjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uPlxyXG4gICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWNvbC5pbnZpc2libGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICd0ZXh0LWNlbnRlcicgOiB0cnVlIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7IGdldFRvdGFsU3RyKGNvbCkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjZWxsRGVsZXRlXCIgKm5nSWY9XCJvcHRpb25zLnJvd3NEZWxldGFibGVcIj48L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcblxyXG4gICAgICAgIDwhLS1Hcm91cGhlYWRlci0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJncm91cGhlYWRlclwiIGxldC1yb3dEYXRhPlxyXG4gICAgICAgICAgICA8dHIgcFJvd0dyb3VwSGVhZGVyIGNsYXNzPVwicm93R3JvdXBpbmdcIj5cclxuICAgICAgICAgICAgICAgIDx0ZCBbYXR0ci5jb2xzcGFuXT1cImNvbHVtbnMubGVuZ3RoXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHRfYm9sZFwiPnt7IHJvd0RhdGFbb3B0aW9ucy5ncm91cGluZy5vYmpdW29wdGlvbnMuZ3JvdXBpbmcubGliZWxsZV0gfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLSBCb2R5IC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJib2R5XCIgbGV0LXJvd0RhdGEgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCI+XHJcbiAgICAgICAgICAgIDx0ciBpZD1cInt7IHJvd0RhdGEuaWQgfX1cIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGEuY29sb3IgPyByb3dEYXRhLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgIFtwU2VsZWN0YWJsZVJvd109XCJyb3dEYXRhXCJcclxuICAgICAgICAgICAgICAgIFtwU2VsZWN0YWJsZVJvd0Rpc2FibGVkXT1cIiFvcHRpb25zLnNlbGVjdGFibGUgfHwgaXNNb2RlQ2hlY2tib3hTZWxlY3Rpb24oKSB8fCBpc01vZGVDZWxsU2VsZWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgKGRibGNsaWNrKT1cIm9uUm93RG91YmxlQ2xpY2tFdmVudChyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgICAgICBbcENvbnRleHRNZW51Um93XT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgW3BDb250ZXh0TWVudVJvd0Rpc2FibGVkXT1cIm9wdGlvbnMuY29udGV4dE1lbnVJdGVtcyA9PSBudWxsXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiaXNNb2RlQ2hlY2tib3hTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsRGVsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxwLXRhYmxlQ2hlY2tib3ggW3ZhbHVlXT1cInJvd0RhdGFcIiBbZGlzYWJsZWRdPVwicm93RGF0YS5yZWFkb25seVwiPjwvcC10YWJsZUNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFRleHQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdUZXh0JywgY29sKSAmJiBpc01vZGVFZGl0aW9uKCkgJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwRWRpdGFibGVDb2x1bW5dPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwRWRpdGFibGVDb2x1bW5GaWVsZF09XCJjb2wuaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS50b29sdGlwIDogcm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcmlnaHQnOiBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jZW50ZXInOiBjb2wucG9zaXRpb24gPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNlbGxFZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaW5wdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgcElucHV0VGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJsdXIpPVwib25FZGl0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLnRhYik9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkVkaXRJbml0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcmlnaHQnOiBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jZW50ZXInOiBjb2wucG9zaXRpb24gPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIm91dHB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogcHJlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRGb3JtYXR0ZWRUZXh0KGNvbCwgcm93RGF0YSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1jZWxsRWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdUZXh0JywgY29sKSAmJiAoIWlzTW9kZUVkaXRpb24oKSB8fCByb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcicgOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgPyByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiByb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY2VudGVyJzogY29sLnBvc2l0aW9uID09ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY29sLmxpYmVsbGUgfX0gOlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogcHJlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0Rm9ybWF0dGVkVGV4dChjb2wsIHJvd0RhdGEpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRHJvcGRvd24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdEcm9wZG93bicsIGNvbCkgJiYgaXNNb2RlRWRpdGlvbigpICYmICFyb3dEYXRhLnJlYWRvbmx5ICYmICFyb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1sZWZ0JzogY29sLnBvc2l0aW9uID09ICdsZWZ0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXJpZ2h0JzogY29sLnBvc2l0aW9uID09ICdyaWdodCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jZW50ZXInOiBjb2wucG9zaXRpb24gPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcEVkaXRhYmxlQ29sdW1uXT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcEVkaXRhYmxlQ29sdW1uRmllbGRdPVwiY29sLmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmIG9uU2VsZWN0Q2VsbChyb3dEYXRhW2NvbC5pZF0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS50b29sdGlwICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udG9vbHRpcCA6IHJvd0RhdGFbY29sLmlkXS52YWx1ZSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnZhbHVlW2dldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGFkZGluZ0NlbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2VsbEVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWRyb3Bkb3duICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJJRFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbnMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnZmlsdGVyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvRGlzcGxheUZpcnN0XT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2RlbGV0YWJsZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbXB0eUZpbHRlck1lc3NhZ2U9XCJBdWN1biByw6lzdWx0YXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5TWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jhc2VaSW5kZXhdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2Jhc2VaSW5kZXgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3ZpcnR1YWxTY3JvbGwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpcnR1YWxTY3JvbGxJdGVtU2l6ZV09XCIzMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGVhcik9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWRhdGEgcFRlbXBsYXRlPVwic2VsZWN0ZWRJdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEgIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2dldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhID09IG51bGxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWRyb3Bkb3duPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJvdXRwdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgcm93RGF0YVtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udmFsdWVbZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJyldIDogJycgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1jZWxsRWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tPHAtZHJvcGRvd24gKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJJRFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25zJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdmaWx0ZXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdkZWxldGFibGUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5RmlsdGVyTWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5TWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiYXNlWkluZGV4XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdiYXNlWkluZGV4JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlydHVhbFNjcm9sbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAndmlydHVhbFNjcm9sbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aXJ0dWFsU2Nyb2xsSXRlbVNpemVdPVwiMzBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25FZGl0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGVhcik9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1kYXRhIHBUZW1wbGF0ZT1cInNlbGVjdGVkSXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YSAhPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZGF0YVtnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKV0gfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhID09IG51bGxcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+LS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ0Ryb3Bkb3duJywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS50b29sdGlwIDogcm93RGF0YVtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udmFsdWVbZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJyldIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY2VudGVyJzogY29sLnBvc2l0aW9uID09ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZVtnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKV0gOiAnJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQ2lsb2cgTnVtYmVyIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnQ2lsb2dOdW1iZXInLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS50b29sdGlwIDogcm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxjaWxvZy1pbnB1dC1udW1iZXIgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbklucHV0KT1cIm9uSW5wdXROdW1iZXIoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dFN0eWxlQ2xhc3NdPVwiY29sLnBvc2l0aW9uID09IG51bGwgfHwgY29sLnBvc2l0aW9uID09ICdyaWdodCcgPyAndGV4dC1yaWdodCcgOiBjb2wucG9zaXRpb24gPT0gJ2xlZnQnID8gJ3RleHQtbGVmdCcgOiAndGV4dC1jZW50ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGV4dENvbG9yXT1cInJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtib2xkXT1cInJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpdGFsaWNdPVwicm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdWZmaXhlXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdzdWZmaXgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZpeGVdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3ByZWZpeCcpICE9IG51bGwgPyBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAncHJlZml4JykgKyAnICcgOiBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtaW4nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWF4JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhEZWNpbWFsc109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZUludGVnZXInKSAhPSBudWxsICYmIGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlSW50ZWdlcicpID09IHRydWUgPyAwIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21heERlY2ltYWxlcycpICE9IG51bGwgPyBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWF4RGVjaW1hbGVzJykgOiAyIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25Gb2N1cyk9XCJvbkVkaXRJbml0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9jaWxvZy1pbnB1dC1udW1iZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ0NpbG9nTnVtYmVyJywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS50b29sdGlwIDogcm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY2VudGVyJzogY29sLnBvc2l0aW9uID09ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyBnZXRGb3JtYXR0ZWROdW1iZXIoY29sLCByb3dEYXRhLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBOdW1iZXIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdOdW1iZXInLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS50b29sdGlwICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udG9vbHRpcCA6IHJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IHZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcEVkaXRhYmxlQ29sdW1uXT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcEVkaXRhYmxlQ29sdW1uRmllbGRdPVwiY29sLmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1sZWZ0JzogY29sLnBvc2l0aW9uID09ICdsZWZ0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXJpZ2h0JzogY29sLnBvc2l0aW9uID09ICdyaWdodCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jZW50ZXInOiBjb2wucG9zaXRpb24gPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2VsbEVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwLWlucHV0TnVtYmVyICNpbnB1dE51bWJlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdICYmICFyb3dEYXRhLnJlYWRvbmx5ICYmICFyb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGU9XCJmci1GUlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uSW5wdXQpPVwib25JbnB1dE51bWJlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dCdXR0b25zXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdzaG93QnV0dG9ucycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRTdHlsZUNsYXNzXT1cImNvbC5wb3NpdGlvbiA9PSBudWxsIHx8IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnID8gJ3RleHQtcmlnaHQnIDogY29sLnBvc2l0aW9uID09ICdsZWZ0JyA/ICd0ZXh0LWxlZnQnIDogJ3RleHQtY2VudGVyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0U3R5bGVdPVwieyAnZm9udC13ZWlnaHQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlID8gJ2JvbGQnIDogbnVsbCwgJ2ZvbnQtc3R5bGUnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSA/ICdpdGFsaWMnIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3VmZml4XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdzdWZmaXgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ByZWZpeF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAncHJlZml4JykgIT0gbnVsbCA/IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdwcmVmaXgnKSArICcgJyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21pbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtYXgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbkZyYWN0aW9uRGlnaXRzXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlSW50ZWdlcicpICE9IG51bGwgJiYgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGVJbnRlZ2VyJykgPT0gdHJ1ZSA/IDAgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWluRGVjaW1hbGVzJykgIT0gbnVsbCA/IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtaW5EZWNpbWFsZXMnKSA6IDBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhGcmFjdGlvbkRpZ2l0c109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZUludGVnZXInKSAhPSBudWxsICYmIGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlSW50ZWdlcicpID09IHRydWUgPyAwIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21heERlY2ltYWxlcycpICE9IG51bGwgPyBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWF4RGVjaW1hbGVzJykgOiAyIFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQmx1cik9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uS2V5RG93bik9XCJvbktleURvd24oJGV2ZW50LCByb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkZvY3VzKT1cIm9uRWRpdEluaXRDZWxsKCRldmVudCwgcm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RlcF09XCIwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWlucHV0TnVtYmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJvdXRwdXRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwid2hpdGUtc3BhY2U6IHByZTtcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgZ2V0Rm9ybWF0dGVkTnVtYmVyKGNvbCwgcm93RGF0YSwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWNlbGxFZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ051bWJlcicsIGNvbCkgJiYgKHJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgPyByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS50b29sdGlwICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udG9vbHRpcCA6IHJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IHZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWxlZnQnOiBjb2wucG9zaXRpb24gPT0gJ2xlZnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcmlnaHQnOiBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNlbnRlcic6IGNvbC5wb3NpdGlvbiA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWJvbGQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCI+e3sgZ2V0Rm9ybWF0dGVkTnVtYmVyKGNvbCwgcm93RGF0YSwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRGF0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ0RhdGUnLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS50b29sdGlwIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAneWVhcicgPyAocm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgZGF0ZTogJ3l5eXknKSA6IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ21vbnRoJyA/IChyb3dEYXRhW2NvbC5pZF0udmFsdWUgfCBkYXRlOiAnTU0veXknKSA6IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ2hvdXInID8gKHJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IGRhdGU6ICdISDptbScpIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAnZGF0ZWhvdXInID8gKHJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IGRhdGU6ICdkZC9NTS95eSBISDptbScpIDogKHJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IGRhdGU6ICdkZC9NTS95eXl5JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpZXddPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSBudWxsIHx8IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ2RhdGUnIHx8IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ2hvdXInID8gJ2RhdGUnIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAnZGF0ZWhvdXInID8gJ2RhdGUnIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ3llYXInID8gJ3l5JyA6IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ21vbnRoJyA/ICdtbS95eScgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICdob3VyJyB8fCBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICdkYXRlaG91cicgPyAnZGQvbW0veXknIDogJ2RkL21tL3l5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VGltZV09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICdkYXRlaG91cidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGltZU9ubHldPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAnaG91cidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaG91ckZvcm1hdF09XCIyNFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RGF5T2ZXZWVrPVwiMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkJsdXIpPVwib25FZGl0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DbGVhcik9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dFN0eWxlQ2xhc3NdPVwiY29sLnBvc2l0aW9uID09IG51bGwgfHwgY29sLnBvc2l0aW9uID09ICdyaWdodCcgPyAndGV4dC1yaWdodCcgOiBjb2wucG9zaXRpb24gPT0gJ2xlZnQnID8gJ3RleHQtbGVmdCcgOiAndGV4dC1jZW50ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0U3R5bGVdPVwieyAnZm9udC13ZWlnaHQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlID8gJ2JvbGQnIDogbnVsbCwgJ2ZvbnQtc3R5bGUnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSA/ICdpdGFsaWMnIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnY2xlYXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5EYXRlXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtaW5EYXRlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4RGF0ZV09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWF4RGF0ZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmF1bHREYXRlXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdkZWZhdWx0RGF0ZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnRGF0ZScsIGNvbCkgJiYgKHJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaW4td2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgOiByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yID8gcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiByb3dEYXRhW2NvbC5pZF0udmFsdWUgfCBkYXRlOiAnZGQvTU0veXl5eSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY2VudGVyJzogY29sLnBvc2l0aW9uID09ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgfCBkYXRlOiAoZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAneWVhcicgPyAneXl5eScgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICdtb250aCcgPyAnTU0veXl5eScgOiAnZGQvTU0veXl5eScpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBNdWx0aVNlbGVjdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ011bHRpU2VsZWN0JywgY29sKSAmJiBpc01vZGVFZGl0aW9uKCkgJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWxlZnQnOiBjb2wucG9zaXRpb24gPT0gJ2xlZnQnIHx8IGNvbC5wb3NpdGlvbiA9PSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcmlnaHQnOiBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNlbnRlcic6IGNvbC5wb3NpdGlvbiA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiBnZXRNdWx0aVNlbGVjdENvbmNhdChyb3dEYXRhW2NvbC5pZF0udmFsdWUsIGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInBhZGRpbmdDZWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLW11bHRpU2VsZWN0ICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9ucycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnZmlsdGVyJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uTGFiZWxdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFLZXk9XCJJRFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5RmlsdGVyTWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5TWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtiYXNlWkluZGV4XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdiYXNlWkluZGV4JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlydHVhbFNjcm9sbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAndmlydHVhbFNjcm9sbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5XT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpcnR1YWxTY3JvbGxJdGVtU2l6ZV09XCIzMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXNMYWJlbD1cInswfSBzZWxlY3Rpb25uw6lzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cImVkaXRNdWx0aXNlbGVjdChyb3dEYXRhLCBjb2wsICRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd1RvZ2dsZUFsbF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93SGVhZGVyXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdmaWx0ZXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uR3JvdXBDaGlsZHJlbicpICE9IG51bGwgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uR3JvdXBMYWJlbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uR3JvdXBMYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkdyb3VwQ2hpbGRyZW5dPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkdyb3VwQ2hpbGRyZW4nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWRhdGEgcFRlbXBsYXRlPVwic2VsZWN0ZWRJdGVtc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZGF0YSwgbGV0IGkgPSBpbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvcHRpb25bZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJyldICsgKGkgIT0gZGF0YS5sZW5ndGggLSAxID8gJywnIDogJycpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZ3JvdXAgcFRlbXBsYXRlPVwiZ3JvdXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pnt7Z3JvdXBbY29sLm9wdGlvbnMub3B0aW9uR3JvdXBMYWJlbF19fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLW11bHRpU2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdNdWx0aVNlbGVjdCcsIGNvbCkgJiYgKHJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgPyByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmIG9uU2VsZWN0Q2VsbChyb3dEYXRhW2NvbC5pZF0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS50b29sdGlwICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udG9vbHRpcCA6IGdldE11bHRpU2VsZWN0Q29uY2F0KHJvd0RhdGFbY29sLmlkXS52YWx1ZSwgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWxlZnQnOiBjb2wucG9zaXRpb24gPT0gJ2xlZnQnIHx8IGNvbC5wb3NpdGlvbiA9PSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcmlnaHQnOiBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNlbnRlcic6IGNvbC5wb3NpdGlvbiA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWJvbGQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCI+e3sgZ2V0TXVsdGlTZWxlY3RDb25jYXQocm93RGF0YVtjb2wuaWRdLnZhbHVlLCBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKSkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEltYWdlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnSW1hZ2UnLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW1nICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCIgc3R5bGU9XCJ2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyB3aWR0aDogNDBweDtcIiBzcmM9XCJ7eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgfX1cIiAvPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gQnV0dG9uIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnQnV0dG9uJywgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGFkZGluZ0NlbGwgdGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHBCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInJvd0RhdGFbY29sLmlkXS52YWx1ZSAhPSBudWxsICYmIGlzVmFsdWVCdXR0b25CeVR5cGUocm93RGF0YVtjb2wuaWRdLnZhbHVlLCAnZnVuY3Rpb24nKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdsYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnaWNvbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbGFiZWwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCIncC1idXR0b24tJyArIGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdzZXZlcml0eScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWJvbGQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJpc1ZhbHVlQnV0dG9uQnlUeXBlKHJvd0RhdGFbY29sLmlkXS52YWx1ZSwgJ3N0cmluZycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcmlnaHQnOiBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jZW50ZXInOiBjb2wucG9zaXRpb24gPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiByb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTZWxlY3RCdXR0b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdTZWxlY3RCdXR0b24nLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1zZWxlY3RCdXR0b24gKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9ucycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uVmFsdWVdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvblZhbHVlJykgIT0gbnVsbCA/IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25WYWx1ZScpIDogJ3ZhbHVlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWl0ZW0gcFRlbXBsYXRlPVwiaXRlbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1jZW50ZXIgdy1mdWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWJvbGQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1zZWxlY3RCdXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ1NlbGVjdEJ1dHRvbicsIGNvbCkgJiYgKHJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgPyByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmIG9uU2VsZWN0Q2VsbChyb3dEYXRhW2NvbC5pZF0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyBnZXRTZWxlY3RMaWJlbGxlQnlWYWx1ZShyb3dEYXRhLCBjb2wpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd2l0Y2ggLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdTd2l0Y2gnLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1pbnB1dFN3aXRjaCAqbmdJZj1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8IChnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnYWN0aW9uJykgPT0gbnVsbCAmJiAhaXNNb2RlRWRpdGlvbigpKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5nRGVmYXVsdENvbnRyb2w+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1pbnB1dFN3aXRjaD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIEZpbGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdGaWxlJywgY29sKSAmJiBpc01vZGVFZGl0aW9uKCkgJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmIG9uU2VsZWN0Q2VsbChyb3dEYXRhW2NvbC5pZF0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtaW5wdXRncm91cFwiICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcFJpcHBsZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdXBsb2FkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsaWNrQnlJZCgnaW5wdXRfJyArIHJvd0RhdGFbY29sLmlkXS5pZClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGlkPVwie3snb3V0cHV0XycgKyByb3dEYXRhW2NvbC5pZF0uaWR9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcElucHV0VGV4dFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1sZWZ0JzogY29sLnBvc2l0aW9uID09ICdsZWZ0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXJpZ2h0JzogY29sLnBvc2l0aW9uID09ICdyaWdodCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jZW50ZXInOiBjb2wucG9zaXRpb24gPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJ7eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZSA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFkb25seVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiByb3dEYXRhW2NvbC5pZF0udmFsdWUgPyByb3dEYXRhW2NvbC5pZF0udmFsdWUgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKm5nSWY9XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnZG93bmxvYWRQYXRoJykgJiYgcm93RGF0YVtjb2wuaWRdLnZhbHVlICE9IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS1kb3dubG9hZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZEZpbGUocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIiBpZD1cInt7J2lucHV0XycgKyByb3dEYXRhW2NvbC5pZF0uaWR9fVwiICNpbnB1dEZpbGUgcElucHV0VGV4dCB0eXBlPVwiZmlsZVwiIGhpZGRlbiAoY2hhbmdlKT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZSA9IGlucHV0RmlsZS5maWxlc1swXS5uYW1lOyBvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgaW5wdXRGaWxlLmZpbGVzWzBdKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdGaWxlJywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS50b29sdGlwIDogcm93RGF0YVtjb2wuaWRdLnZhbHVlID8gcm93RGF0YVtjb2wuaWRdLnZhbHVlIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWxlZnQnOiBjb2wucG9zaXRpb24gPT0gJ2xlZnQnIHx8IGNvbC5wb3NpdGlvbiA9PSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcmlnaHQnOiBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNlbnRlcic6IGNvbC5wb3NpdGlvbiA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWJvbGQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgPyByb3dEYXRhW2NvbC5pZF0udmFsdWUgOiAnJyB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gU3RhdGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdTdGF0ZScsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmIG9uU2VsZWN0Q2VsbChyb3dEYXRhW2NvbC5pZF0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXRhZyAqbmdJZj1cInJvd0RhdGFbY29sLmlkXS52YWx1ZSAhPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVbZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJyldXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZXZlcml0eV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWUuc2V2ZXJpdHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlLmljb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0udmFsdWUuYmFja2dyb3VuZENvbG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InOiByb3dEYXRhW2NvbC5pZF0udmFsdWUudGV4dENvbG9yLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC13ZWlnaHQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlID8gJ2JvbGQnIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtc3R5bGUnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSA/ICdpdGFsaWMnIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3AtdGFnPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgPCEtLSBEZWxldGlvbiAtLT5cclxuICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIm9wdGlvbnMucm93c0RlbGV0YWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjZWxsRGVsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJyb3dEYXRhLmRlbGV0YWJsZSA/ICdwYWRkaW5nQ2VsbCcgOiBudWxsXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cInJvd0RhdGEuZGVsZXRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLXRpbWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicC1idXR0b24tZGFuZ2VyIGJ1dHRvbkRlbGV0ZSBwLWJ1dHRvbi10ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkRlbGV0ZUxpbmUocm93RGF0YSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICA8L3RyPlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L3AtdGFibGU+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
677
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvdGFibGUvdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2lsb2ctbGliL3NyYy9saWIvdmlld3MvdGFibGUvdGFibGUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBSzdHLE9BQU8sRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBVXpFLE1BQU0sT0FBTyxtQkFBbUI7SUFxQzVCLFlBQ1ksbUJBQXdDLEVBQ3hDLGFBQTRCLEVBQzVCLEtBQXdCLEVBQ3hCLGFBQTRCO1FBSDVCLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsa0JBQWEsR0FBYixhQUFhLENBQWU7UUFDNUIsVUFBSyxHQUFMLEtBQUssQ0FBbUI7UUFDeEIsa0JBQWEsR0FBYixhQUFhLENBQWU7UUF2Q3hDLGVBQVUsR0FBWSxJQUFJLENBQUM7UUFHakIsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBYSxDQUFDO1FBRzlDLGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQU0xQyxXQUFNLEdBQTJCLElBQUksWUFBWSxFQUFZLENBQUM7UUFDOUQsZUFBVSxHQUEyQixJQUFJLFlBQVksRUFBWSxDQUFDO1FBQ2xFLGFBQVEsR0FBK0IsSUFBSSxZQUFZLEVBQWdCLENBQUM7UUFDeEUsYUFBUSxHQUE2QixJQUFJLFlBQVksRUFBYyxDQUFDO1FBQ3BFLGVBQVUsR0FBNkIsSUFBSSxZQUFZLEVBQWMsQ0FBQztRQUN0RSxhQUFRLEdBQTBCLElB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QUFLLEVBQUUsQ0FBQztRQUNqRCxDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7K0dBMXBCUSxtQkFBbUI7bUdBQW5CLG1CQUFtQiw4dEJDZmhDLHFrckVBMDZCQTs7NEZEMzVCYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0ksYUFBYTtnTEFRZCxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTTtnQkFFRSxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxPQUFPO3NCQUFmLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVJLE1BQU07c0JBQWYsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csUUFBUTtzQkFBakIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csTUFBTTtzQkFBZixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFVK0IsS0FBSztzQkFBMUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNuQixFQUFFO3NCQUFsQixTQUFTO3VCQUFDLElBQUk7Z0JBQ1csV0FBVztzQkFBcEMsU0FBUzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgVmlld0NoaWxkLCBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb25maXJtYXRpb25TZXJ2aWNlLCBGaWx0ZXJTZXJ2aWNlLCBMYXp5TG9hZEV2ZW50LCBTb3J0RXZlbnQgfSBmcm9tICdwcmltZW5nL2FwaSc7XHJcbmltcG9ydCB7IElFZGl0aW9uLCBJU3VwcHJlc3Npb24sIElTZWxlY3Rpb24sIElGaWx0ZXIsIElTb3J0LCBJUGFnZSwgSVNvcnRDdXN0b20gfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ludGVyZmFjZXMvZWRpdGlvbi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBJQ29sdW1uLCBJUm93LCBJT3B0aW9uc0dyaWxsZSwgSUNlbGwsIElPcHRpb25zRmlsZSwgSU9wdGlvbnNNdWx0aVNlbGVjdCwgSU9wdGlvbnNEcm9wZG93biwgSU9wdGlvbnNOdW1iZXIgfSBmcm9tICcuLi8uLi9oZWxwZXJzL2ludGVyZmFjZXMvZ3JpbGxlLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IFRhYmxlIH0gZnJvbSAncHJpbWVuZy90YWJsZSc7XHJcbmltcG9ydCB7IENvbFR5cGUsIE1vZGVTZWxlY3Rpb24gfSBmcm9tICcuLi8uLi9oZWxwZXJzL2VudW1zL2dyaWxsZS5lbnVtJztcclxuaW1wb3J0IHsgRXhwb3J0U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2V4Y2VsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb250ZXh0TWVudSB9IGZyb20gJ3ByaW1lbmcvY29udGV4dG1lbnUnO1xyXG5pbXBvcnQgeyBJbnB1dE51bWJlciB9IGZyb20gJ3ByaW1lbmcvaW5wdXRudW1iZXInO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ2NpbG9nLXRhYmxlJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi90YWJsZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDaWxvZ1RhYmxlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgICBpbml0RmlsdGVyOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKSBjb2x1bW5zOiBJQ29sdW1uW107XHJcbiAgICBAT3V0cHV0KCkgY29sdW1uc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvbHVtbltdPigpO1xyXG5cclxuICAgIEBJbnB1dCgpIHZhbHVlczogSVJvd1tdO1xyXG4gICAgQE91dHB1dCgpIHZhbHVlc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8SVJvd1tdPigpO1xyXG5cclxuICAgIEBJbnB1dCgpIG9wdGlvbnM6IElPcHRpb25zR3JpbGxlO1xyXG5cclxuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XHJcblxyXG4gICAgQE91dHB1dCgpIG9uRWRpdDogRXZlbnRFbWl0dGVyPElFZGl0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUVkaXRpb24+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25FZGl0SW5pdDogRXZlbnRFbWl0dGVyPElFZGl0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUVkaXRpb24+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25EZWxldGU6IEV2ZW50RW1pdHRlcjxJU3VwcHJlc3Npb24+ID0gbmV3IEV2ZW50RW1pdHRlcjxJU3VwcHJlc3Npb24+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25TZWxlY3Q6IEV2ZW50RW1pdHRlcjxJU2VsZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlbGVjdGlvbj4oKTtcclxuICAgIEBPdXRwdXQoKSBvblVuc2VsZWN0OiBFdmVudEVtaXR0ZXI8SVNlbGVjdGlvbj4gPSBuZXcgRXZlbnRFbWl0dGVyPElTZWxlY3Rpb24+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxJRmlsdGVyPiA9IG5ldyBFdmVudEVtaXR0ZXI8SUZpbHRlcj4oKTtcclxuICAgIEBPdXRwdXQoKSBvbkZpbHRlckluaXQ6IEV2ZW50RW1pdHRlcjxJUm93W10+ID0gbmV3IEV2ZW50RW1pdHRlcjxJUm93W10+KCk7XHJcbiAgICBAT3V0cHV0KCkgb25Tb3J0OiBFdmVudEVtaXR0ZXI8SVNvcnQ+ID0gbmV3IEV2ZW50RW1pdHRlcjxJU29ydD4oKTtcclxuICAgIEBPdXRwdXQoKSBvblBhZ2U6IEV2ZW50RW1pdHRlcjxJUGFnZT4gPSBuZXcgRXZlbnRFbWl0dGVyPElQYWdlPigpO1xyXG4gICAgQE91dHB1dCgpIG9uUm93RG91YmxlQ2xpY2s6IEV2ZW50RW1pdHRlcjxJU2VsZWN0aW9uPiA9IG5ldyBFdmVudEVtaXR0ZXI8SVNlbGVjdGlvbj4oKTtcclxuXHJcbiAgICBzZWxlY3RlZFJvd3M6IElSb3dbXSB8IElSb3c7XHJcblxyXG4gICAgZmlsdGVyRGF0ZXNSYW5nZTogRGF0ZVtdO1xyXG5cclxuICAgIG9wdGlvbnNTd2l0Y2g6IGFueVtdO1xyXG5cclxuICAgIGNvbnRleHRNZW51U2VsZWN0ZWRJdGVtOiBJUm93O1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3RhYmxlJywgeyBzdGF0aWM6IHRydWUgfSkgdGFibGU6IFRhYmxlO1xyXG4gICAgQFZpZXdDaGlsZCgnY20nKSBjbTogQ29udGV4dE1lbnU7XHJcbiAgICBAVmlld0NoaWxkKCdpbnB1dE51bWJlcicpIGlucHV0TnVtYmVyOiBJbnB1dE51bWJlcjtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNvbmZpcm1hdGlvblNlcnZpY2U6IENvbmZpcm1hdGlvblNlcnZpY2UsXHJcbiAgICAgICAgcHJpdmF0ZSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlLFxyXG4gICAgICAgIHByaXZhdGUgY2RSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgZXhwb3J0U2VydmljZTogRXhwb3J0U2VydmljZVxyXG4gICAgKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLm9wdGlvbnNTd2l0Y2ggPSBbXHJcbiAgICAgICAgICAgIHsgbGFiZWw6ICdPdWknLCB2YWx1ZTogdHJ1ZSB9LFxyXG4gICAgICAgICAgICB7IGxhYmVsOiAnTm9uJywgdmFsdWU6IGZhbHNlIH0sXHJcbiAgICAgICAgXVxyXG5cclxuICAgICAgICAvLyBEYXRlXHJcbiAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKCdkYXRlUmFuZ2VGaWx0ZXInLCAoY2VsbCwgZmlsdGVyKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChmaWx0ZXIgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IHN0YXJ0OiBudW1iZXIgPSBmaWx0ZXJbMF0uZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBsZXQgZW5kOiBudW1iZXI7XHJcbiAgICAgICAgICAgIGxldCBlbmREYXRlOiBEYXRlO1xyXG4gICAgICAgICAgICBpZiAoZmlsdGVyWzFdKSB7XHJcbiAgICAgICAgICAgICAgICBlbmREYXRlID0gbmV3IERhdGUoZmlsdGVyWzFdLmdldEZ1bGxZZWFyKCksIGZpbHRlclsxXS5nZXRNb250aCgpLCBmaWx0ZXJbMV0uZ2V0RGF0ZSgpLCAyMywgNTksIDU5KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVuZERhdGUgPSBuZXcgRGF0ZShmaWx0ZXJbMF0uZ2V0RnVsbFllYXIoKSwgZmlsdGVyWzBdLmdldE1vbnRoKCksIGZpbHRlclswXS5nZXREYXRlKCksIDIzLCA1OSwgNTkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVuZCA9IGVuZERhdGUuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICByZXR1cm4gY2VsbC52YWx1ZSA9PSBudWxsID8gZmFsc2UgOiBjZWxsLnZhbHVlLmdldFRpbWUoKSA+PSBzdGFydCAmJiBjZWxsLnZhbHVlLmdldFRpbWUoKSA8PSBlbmQ7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gT2JqZXRcclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ29iamV0RmlsdGVyJywgKGNlbGwsIGZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZmlsdGVyLmZpbmQodmFsID0+IHZhbC5JRCA9PSBjZWxsLnZhbHVlPy5JRCkgIT0gbnVsbDtcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBTZWxlY3QgQnV0dG9uXHJcbiAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKCdzZWxlY3RCdXR0b25GaWx0ZXInLCAoY2VsbCwgZmlsdGVyKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiBmaWx0ZXIuZmluZCh2YWwgPT4gdmFsLnZhbHVlID09IGNlbGwudmFsdWUpICE9IG51bGw7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gTGlzdGVcclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ2xpc3RlRmlsdGVyJywgKGNlbGwsIGZpbHRlcikgPT4ge1xyXG4gICAgICAgICAgICBsZXQgb2s6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgICAgICAgICAgZmlsdGVyLmZvckVhY2godmFsID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChjZWxsLnZhbHVlLmluZGV4T2YodmFsKSAhPSAtMSkge1xyXG4gICAgICAgICAgICAgICAgICAgIG9rID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBvaztcclxuICAgICAgICB9KTtcclxuICAgICAgICAvLyBTd2l0Y2hcclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ3N3aXRjaEZpbHRlcicsIChjZWxsLCBmaWx0ZXIpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuIChmaWx0ZXIuaW5kZXhPZihjZWxsLnZhbHVlKSAhPSAtMSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gQnV0dG9uXHJcbiAgICAgICAgdGhpcy5maWx0ZXJTZXJ2aWNlLnJlZ2lzdGVyKCdidXR0b25GaWx0ZXInLCAoY2VsbCwgZmlsdGVyKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBsZXQgZmlsdGVyT2JqRmllbGQ6IHN0cmluZyA9IGNlbGwub3B0aW9uc1snZmlsdGVyT2JqRmllbGQnXTtcclxuICAgICAgICAgICAgbGV0IGZpbHRlck9ialN1YkZpZWxkOiBzdHJpbmcgPSBjZWxsLm9wdGlvbnNbJ2ZpbHRlck9ialN1YkZpZWxkJ107XHJcblxyXG4gICAgICAgICAgICBpZiAoY2VsbC5vYmogPT0gbnVsbCB8fCBmaWx0ZXIgPT0gbnVsbCB8fCBmaWx0ZXIudHJpbSgpID09ICcnIHx8IGZpbHRlck9iakZpZWxkID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZmlsdGVyT2JqU3ViRmllbGQgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNlbGwub2JqW2ZpbHRlck9iakZpZWxkXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlci50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjZWxsLm9ialtmaWx0ZXJPYmpGaWVsZF0uZmluZCh2YWwgPT4gdmFsW2ZpbHRlck9ialN1YkZpZWxkXS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlci50b0xvd2VyQ2FzZSgpKSkgIT0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIFRleHRcclxuICAgICAgICB0aGlzLmZpbHRlclNlcnZpY2UucmVnaXN0ZXIoJ3RleHRGaWx0ZXInLCAoY2VsbCwgZmlsdGVyKSA9PiB7XHJcblxyXG4gICAgICAgICAgICBpZiAoZmlsdGVyID09IG51bGwgfHwgZmlsdGVyLnRyaW0oKSA9PSAnJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNlbGwudmFsdWUgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBsZXQgdmFsdWU6IHN0cmluZztcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZWxsLnZhbHVlID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICB2YWx1ZSA9IGNlbGwudmFsdWU7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGNlbGwudmFsdWUgPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgICAgIHZhbHVlID0gY2VsbC52YWx1ZS50b1N0cmluZygpLnJlcGxhY2UoJy4nLCAnLCcpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoY2VsbC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICAgIGlmIChjZWxsLm9wdGlvbnMgPT0gbnVsbCB8fCBjZWxsLm9wdGlvbnNbJ29wdGlvbkxhYmVsRmlsdGVyVGV4dCddID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdGhpcy5nZXRNdWx0aVNlbGVjdENvbmNhdChjZWxsLnZhbHVlLCBjZWxsLm9wdGlvbnNbJ29wdGlvbkxhYmVsRmlsdGVyVGV4dCddKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChjZWxsLm9wdGlvbnMgPT0gbnVsbCB8fCBjZWxsLm9wdGlvbnNbJ29wdGlvbkxhYmVsRmlsdGVyVGV4dCddID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gY2VsbC52YWx1ZVtjZWxsLm9wdGlvbnNbJ29wdGlvbkxhYmVsRmlsdGVyVGV4dCddXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGZpbHRlci50b0xvd2VyQ2FzZSgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmNvbHVtbnMuZm9yRWFjaChjb2wgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY29sLm9wdGlvbnMgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29sLm9wdGlvbnMgPSB7IGRlZmF1bHRGaWx0ZXJzOiBudWxsIH07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGNvbC5vcHRpb25zWydvbmx5TGlzdFZhbHVlcyddICYmIGNvbC5vcHRpb25zWydvcHRpb25Hcm91cExhYmVsJ10gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgY29sLm9wdGlvbnNbJ29wdGlvbnMnXSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgdGhpcy52YWx1ZXMuZm9yRWFjaCh2YWwgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLk11bHRpU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbFtjb2wuaWRdLnZhbHVlLmZvckVhY2godmFsMiA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sLm9wdGlvbnNbJ29wdGlvbnMnXS5maW5kKG9wdCA9PiBvcHQuSUQgPT0gdmFsMi5JRCkgPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbC5vcHRpb25zWydvcHRpb25zJ10ucHVzaCh2YWwyKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLkRyb3Bkb3duKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWxbY29sLmlkXS52YWx1ZSAhPSBudWxsICYmIGNvbC5vcHRpb25zWydvcHRpb25zJ10uZmluZChvcHQgPT4gb3B0LklEID09IHZhbFtjb2wuaWRdLnZhbHVlLklEKSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2wub3B0aW9uc1snb3B0aW9ucyddLnB1c2godmFsW2NvbC5pZF0udmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBjb2wub3B0aW9uc1snb3B0aW9ucyddID0gWy4uLmNvbC5vcHRpb25zWydvcHRpb25zJ10uc29ydCgoYSwgYikgPT4gYVtjb2wub3B0aW9uc1snb3B0aW9uTGFiZWwnXV0ubG9jYWxlQ29tcGFyZShhW2NvbC5vcHRpb25zWydvcHRpb25MYWJlbCddXSkpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuY29sdW1uc0NoYW5nZS5lbWl0KHRoaXMuY29sdW1ucyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVycyAhPSBudWxsKS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRGaWx0ZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKGNvbCA9PiB7XHJcbiAgICAgICAgICAgIGlmICghY29sLmludmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGNvbC5vcHRpb25zLmRlZmF1bHRGaWx0ZXJzICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlcihjb2wsIGNvbC5vcHRpb25zLmRlZmF1bHRGaWx0ZXJzLCB0aGlzLmdldEZpbHRlckJ5Q29sKGNvbCkpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlLnNjcm9sbGVyICYmIHRoaXMub3B0aW9ucy5tb2RlQXBwZW5kT25seSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLnNjcm9sbGVyLmFwcGVuZE9ubHkgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5jZFJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgb25GaWx0ZXJUYWJsZShldmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLmluaXRGaWx0ZXIgPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRmlsdGVySW5pdC5lbWl0KGV2ZW50LmZpbHRlcmVkVmFsdWUpO1xyXG4gICAgICAgICAgICB0aGlzLmluaXRGaWx0ZXIgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb25JbnB1dE51bWJlcihldmVudCkge1xyXG5cclxuICAgIH1cclxuXHJcbiAgICBsb2FkTGF6eShldmVudDogTGF6eUxvYWRFdmVudCkge1xyXG4gICAgICAgIC8vdGhpcy52YWx1ZXMgPSBldmVudC5yb3dzLnNsaWNlKGV2ZW50LmZpcnN0LCAoZXZlbnQuZmlyc3QgKyBldmVudC5yb3dzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU29ydFxyXG4gICAgc29ydEdyaWxsZShldmVudDogU29ydEV2ZW50KSB7XHJcblxyXG4gICAgICAgIGxldCBjb2w6IElDb2x1bW4gPSB0aGlzLmNvbHVtbnMuZmluZChjb2wgPT4gY29sLmlkID09IGV2ZW50LmZpZWxkKTtcclxuICAgICAgICB0aGlzLm9uU29ydC5lbWl0KHsgY29sdW1uOiBjb2wsIG9yZGVyOiBldmVudC5vcmRlciB9KVxyXG4gICAgICAgIGxldCB0eXBlQ29sOiBDb2xUeXBlID0gY29sLnR5cGU7XHJcblxyXG4gICAgICAgIGV2ZW50LmRhdGEuc29ydCgoZGF0YTEsIGRhdGEyKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTEgPSBkYXRhMVtldmVudC5maWVsZF0udmFsdWU7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTIgPSBkYXRhMltldmVudC5maWVsZF0udmFsdWU7XHJcblxyXG4gICAgICAgICAgICBpZiAoY29sLm9wdGlvbnMuY3VzdG9tU29ydCAmJiBjb2wub3B0aW9ucy5zb3J0RnVuY3Rpb24gIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbC5vcHRpb25zLnNvcnRGdW5jdGlvbih7IGNvbHVtbjogY29sLCBvcmRlcjogZXZlbnQub3JkZXIsIHZhbHVlMTogdmFsdWUxLCB2YWx1ZTI6IHZhbHVlMiB9IGFzIElTb3J0Q3VzdG9tKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCByZXN1bHQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiAhPSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0xO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUxICE9IG51bGwgJiYgdmFsdWUyID09IG51bGwpXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTtcclxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlMSA9PSBudWxsICYmIHZhbHVlMiA9PSBudWxsKVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IDA7XHJcbiAgICAgICAgICAgICAgICBlbHNlIGlmICh0eXBlQ29sID09IENvbFR5cGUuVGV4dCB8fCB0eXBlQ29sID09IENvbFR5cGUuRmlsZSlcclxuICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTEubG9jYWxlQ29tcGFyZSh2YWx1ZTIpO1xyXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAodHlwZUNvbCA9PSBDb2xUeXBlLk11bHRpU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlMVt0aGlzLmdldE9wdGlvbihjb2wsIGRhdGExLCAnb3B0aW9uTGFiZWwnKV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAtMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlMlt0aGlzLmdldE9wdGlvbihjb2wsIGRhdGEyLCAnb3B0aW9uTGFiZWwnKV0gPT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAxO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRoaXMuZ2V0TXVsdGlTZWxlY3RDb25jYXQodmFsdWUxLCB0aGlzLmdldE9wdGlvbihjb2wsIGRhdGExLCAnb3B0aW9uTGFiZWwnKSkubG9jYWxlQ29tcGFyZSh0aGlzLmdldE11bHRpU2VsZWN0Q29uY2F0KHZhbHVlMiwgdGhpcy5nZXRPcHRpb24oY29sLCBkYXRhMiwgJ29wdGlvbkxhYmVsJykpKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVDb2wgPT0gQ29sVHlwZS5Ecm9wZG93biB8fCB0eXBlQ29sID09IENvbFR5cGUuU2VsZWN0QnV0dG9uIHx8IHR5cGVDb2wgPT0gQ29sVHlwZS5TdGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZTFbdGhpcy5nZXRPcHRpb24oY29sLCBkYXRhMSwgJ29wdGlvbkxhYmVsJyldID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gLTE7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZTJbdGhpcy5nZXRPcHRpb24oY29sLCBkYXRhMiwgJ29wdGlvbkxhYmVsJyldID09IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB2YWx1ZTFbdGhpcy5nZXRPcHRpb24oY29sLCBkYXRhMSwgJ29wdGlvbkxhYmVsJyldLmxvY2FsZUNvbXBhcmUodmFsdWUyW3RoaXMuZ2V0T3B0aW9uKGNvbCwgZGF0YTIsICdvcHRpb25MYWJlbCcpXSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlQ29sID09IENvbFR5cGUuTnVtYmVyIHx8IHR5cGVDb2wgPT0gQ29sVHlwZS5DaWxvZ051bWJlciB8fCB0eXBlQ29sID09IENvbFR5cGUuRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICh2YWx1ZTEgPCB2YWx1ZTIpID8gLTEgOiAodmFsdWUxID4gdmFsdWUyKSA/IDEgOiAwO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlQ29sID09IENvbFR5cGUuU3dpdGNoKVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9ICh2YWx1ZTEgPT09IHZhbHVlMikgPyAwIDogdmFsdWUxID8gLTEgOiAxO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9PSAwO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChldmVudC5vcmRlciAqIHJlc3VsdCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBjaGVja1R5cGUodHlwZUNvbDogc3RyaW5nLCBjb2w6IElDb2x1bW4pIHtcclxuICAgICAgICByZXR1cm4gY29sWyd0eXBlJ10gPT0gdHlwZUNvbDtcclxuICAgIH1cclxuXHJcbiAgICBjbGlja0J5SWQoaWQ6IHN0cmluZykge1xyXG4gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS5jbGljaygpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRWRpdENlbGwocm93OiBJUm93LCBjb2x1bW46IElDb2x1bW4sIHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZ2V0T3B0aW9uKGNvbHVtbiwgcm93LCAnYWN0aW9uJykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICB0aGlzLmdldE9wdGlvbihjb2x1bW4sIHJvdywgJ2FjdGlvbicpKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5vbkVkaXQuZW1pdCh7IHJvdzogcm93LCBjb2x1bW46IGNvbHVtbiwgdmFsdWU6IHZhbHVlIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gRGVzdHJveSBGb2N1c1xyXG4gICAgICAgIHRoaXMudmFsdWVzLmZvckVhY2godmFsID0+IHtcclxuICAgICAgICAgICAgdmFsW2NvbHVtbi5pZF0uZm9jdXMgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQsIHJvdzogSVJvdywgY29sdW1uOiBJQ29sdW1uLCB2YWx1ZTogYW55KSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PSAnRW50ZXInKSB7XHJcbiAgICAgICAgICAgIHRoaXMub25FZGl0Q2VsbChyb3csIGNvbHVtbiwgdmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBlZGl0TXVsdGlzZWxlY3Qocm93OiBJUm93LCBjb2x1bW46IElDb2x1bW4sIGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5vbkVkaXRDZWxsKHJvdywgY29sdW1uLCB7IGxpc3RTZWxlY3RlZDogZXZlbnQudmFsdWUsIGl0ZW1TZWxlY3RlZDogZXZlbnQuaXRlbVZhbHVlLCBzZWxlY3RlZDogZXZlbnQudmFsdWUuaW5kZXhPZihldmVudC5pdGVtVmFsdWUpICE9IC0xIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0QWxsKGV2ZW50KSB7XHJcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KHsgcm93OiBudWxsLCBzZWxlY3RlZFJvd3M6IHRoaXMuc2VsZWN0ZWRSb3dzLCBjaGVja2VkOiBldmVudC5jaGVja2VkIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0Um93KHJvdzogSVJvdykge1xyXG4gICAgICAgIHRoaXMub25TZWxlY3QuZW1pdCh7IHJvdzogcm93LCBzZWxlY3RlZFJvd3M6IHRoaXMuc2VsZWN0ZWRSb3dzLCBjaGVja2VkOiB0cnVlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU2VsZWN0Q2VsbChjZWxsOiBJQ2VsbCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGNlbGwpXHJcbiAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KHsgY2VsbDogY2VsbCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBvblVuc2VsZWN0Um93KHJvdzogSVJvdykge1xyXG4gICAgICAgIHRoaXMub25VbnNlbGVjdC5lbWl0KHsgcm93OiByb3csIHNlbGVjdGVkUm93czogdGhpcy5zZWxlY3RlZFJvd3MsIGNoZWNrZWQ6IGZhbHNlIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHJlZnJlc2hEYXRhKCkge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuc29ydGFibGUgJiYgdGhpcy5vcHRpb25zLnZpcnR1YWxTY3JvbGwpIHtcclxuICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSBbLi4udGhpcy52YWx1ZXNdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblBhZ2VUYWJsZShldmVudDogSVBhZ2UpIHtcclxuICAgICAgICB0aGlzLm9uUGFnZS5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBvbkRlbGV0ZUxpbmUocm93OiBJUm93KSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5tYW51YWxseURlbGV0YWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLm9uRGVsZXRlLmVtaXQoeyByb3c6IHJvdyB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbmZpcm1hdGlvblNlcnZpY2UuY29uZmlybSh7XHJcbiAgICAgICAgICAgICAgICBrZXk6ICdjb25maXJtJyxcclxuICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICfDinRlcy12b3VzIHPDu3IgZGUgdm91bG9pciBzdXBwcmltZXIgY2V0dGUgbGlnbmUgPycsXHJcbiAgICAgICAgICAgICAgICBhY2NlcHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlcy5zcGxpY2UodGhpcy52YWx1ZXMuaW5kZXhPZihyb3cpLCAxKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnZhbHVlcyA9IFsuLi50aGlzLnZhbHVlc107XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy52YWx1ZXNDaGFuZ2UuZW1pdCh0aGlzLnZhbHVlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZS5lbWl0KHsgcm93OiByb3cgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbkVkaXRJbml0Q2VsbChldmVudCwgcm93OiBJUm93LCBjb2x1bW46IElDb2x1bW4sIHZhbHVlOiBhbnkpIHtcclxuICAgICAgICBpZiAoZXZlbnQgIT0gbnVsbCAmJiBldmVudC50YXJnZXQgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBldmVudC50YXJnZXQuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMub25FZGl0SW5pdC5lbWl0KHsgcm93OiByb3csIGNvbHVtbjogY29sdW1uLCB2YWx1ZTogdmFsdWUgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Sb3dEb3VibGVDbGlja0V2ZW50KHJvdzogSVJvdykge1xyXG4gICAgICAgIHRoaXMub25Sb3dEb3VibGVDbGljay5lbWl0KHsgcm93OiByb3cgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0T3B0aW9uKGNvbCwgcm93LCBvcHRpb246IHN0cmluZykge1xyXG4gICAgICAgIGlmIChyb3cgIT0gbnVsbCAmJiByb3dbY29sLmlkXS5vcHRpb25zICE9IG51bGwpIHtcclxuICAgICAgICAgICAgaWYgKHJvd1tjb2wuaWRdLm9wdGlvbnNbb3B0aW9uXSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gcm93W2NvbC5pZF0ub3B0aW9uc1tvcHRpb25dO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjb2wgIT0gbnVsbCAmJiBjb2wub3B0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGlmIChjb2wub3B0aW9uc1tvcHRpb25dICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjb2wub3B0aW9uc1tvcHRpb25dXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0TXVsdGlTZWxlY3RDb25jYXQodmFsdWUsIGxhYmVsOiBzdHJpbmcpIHtcclxuICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICByZXR1cm4gdmFsdWUubWFwKHZhbCA9PiB7IHJldHVybiB2YWxbbGFiZWxdOyB9KS5qb2luKCcsICcpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0U2VsZWN0TGliZWxsZUJ5VmFsdWUocm93LCBjb2wpIHtcclxuICAgICAgICBsZXQgbGFiZWw6IHN0cmluZyA9ICcnO1xyXG4gICAgICAgIGlmIChyb3dbY29sLmlkXS52YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBsYWJlbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHJvd1tjb2wuaWRdLm9wdGlvbnMgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICBsYWJlbCA9IHJvd1tjb2wuaWRdLm9wdGlvbnNbJ29wdGlvbnMnXS5maW5kKG9wdCA9PiBvcHQudmFsdWUgPT0gcm93W2NvbC5pZF0udmFsdWUpW3Jvd1tjb2wuaWRdLm9wdGlvbnMub3B0aW9uTGFiZWxdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChjb2wub3B0aW9ucyAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBsYWJlbCA9IGNvbC5vcHRpb25zWydvcHRpb25zJ10uZmluZChvcHQgPT4gb3B0LnZhbHVlID09IHJvd1tjb2wuaWRdLnZhbHVlKVtjb2wub3B0aW9ucy5vcHRpb25MYWJlbF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEZpbHRlckJ5Q29sKGNvbDogSUNvbHVtbikge1xyXG4gICAgICAgIC8vIERhdGVzIChyYW5nZSlcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5EYXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnZGF0ZVJhbmdlRmlsdGVyJztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gT2JqZXRcclxuICAgICAgICBpZiAoKGNvbC50eXBlID09IENvbFR5cGUuRHJvcGRvd24gJiYgISg8SU9wdGlvbnNEcm9wZG93bj5jb2wub3B0aW9ucykuZmlsdGVyVGV4dCkgfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5TdGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gJ29iamV0RmlsdGVyJztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gTGlzdGVcclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5NdWx0aVNlbGVjdCAmJiAhKDxJT3B0aW9uc011bHRpU2VsZWN0PmNvbC5vcHRpb25zKS5maWx0ZXJUZXh0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnbGlzdGVGaWx0ZXInO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUZXh0ZVxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLkZpbGVcclxuICAgICAgICAgICAgfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5UZXh0XHJcbiAgICAgICAgICAgIHx8IGNvbC50eXBlID09IENvbFR5cGUuTnVtYmVyXHJcbiAgICAgICAgICAgIHx8IGNvbC50eXBlID09IENvbFR5cGUuQ2lsb2dOdW1iZXJcclxuICAgICAgICAgICAgfHwgKGNvbC50eXBlID09IENvbFR5cGUuTXVsdGlTZWxlY3QgJiYgKDxJT3B0aW9uc011bHRpU2VsZWN0PmNvbC5vcHRpb25zKS5maWx0ZXJUZXh0KVxyXG4gICAgICAgICAgICB8fCAoY29sLnR5cGUgPT0gQ29sVHlwZS5Ecm9wZG93biAmJiAoPElPcHRpb25zRHJvcGRvd24+Y29sLm9wdGlvbnMpLmZpbHRlclRleHQpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAndGV4dEZpbHRlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFN3aXRjaFxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLlN3aXRjaCkge1xyXG4gICAgICAgICAgICByZXR1cm4gJ3N3aXRjaEZpbHRlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFN3aXRjaFxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLlNlbGVjdEJ1dHRvbikge1xyXG4gICAgICAgICAgICByZXR1cm4gJ3NlbGVjdEJ1dHRvbkZpbHRlcic7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIG9uRmlsdGVyQ29sKGV2ZW50LCBjb2w6IElDb2x1bW4pIHtcclxuICAgICAgICBsZXQgdmFsdWU6IGFueTtcclxuXHJcbiAgICAgICAgLy8gRGF0ZXMgKHJhbmdlKVxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLkRhdGUpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVycztcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gT2JqZXRcclxuICAgICAgICBpZiAoKGNvbC50eXBlID09IENvbFR5cGUuRHJvcGRvd24gJiYgISg8SU9wdGlvbnNEcm9wZG93bj5jb2wub3B0aW9ucykuZmlsdGVyVGV4dCkgfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5TdGF0ZSkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGV2ZW50ID09IG51bGwgPyBudWxsIDogZXZlbnQudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIExpc3RlXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuTXVsdGlTZWxlY3QgJiYgISg8SU9wdGlvbnNNdWx0aVNlbGVjdD5jb2wub3B0aW9ucykuZmlsdGVyVGV4dCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGV2ZW50ID09IG51bGwgPyBudWxsIDogZXZlbnQudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFRleHRlXHJcbiAgICAgICAgaWYgKGNvbC50eXBlID09IENvbFR5cGUuRmlsZVxyXG4gICAgICAgICAgICB8fCBjb2wudHlwZSA9PSBDb2xUeXBlLlRleHRcclxuICAgICAgICAgICAgfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5OdW1iZXJcclxuICAgICAgICAgICAgfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5DaWxvZ051bWJlclxyXG4gICAgICAgICAgICB8fCAoY29sLnR5cGUgPT0gQ29sVHlwZS5NdWx0aVNlbGVjdCAmJiAoPElPcHRpb25zTXVsdGlTZWxlY3Q+Y29sLm9wdGlvbnMpLmZpbHRlclRleHQpXHJcbiAgICAgICAgICAgIHx8IChjb2wudHlwZSA9PSBDb2xUeXBlLkRyb3Bkb3duICYmICg8SU9wdGlvbnNEcm9wZG93bj5jb2wub3B0aW9ucykuZmlsdGVyVGV4dCkpIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIFN3aXRjaFxyXG4gICAgICAgIGlmIChjb2wudHlwZSA9PSBDb2xUeXBlLlN3aXRjaCkge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGV2ZW50LnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTZWxlY3RCdXR0b25cclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5TZWxlY3RCdXR0b24pIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBldmVudCA9PSBudWxsID8gbnVsbCA6IGV2ZW50LnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBCdXR0b25cclxuICAgICAgICBpZiAoY29sLnR5cGUgPT0gQ29sVHlwZS5CdXR0b24pIHtcclxuICAgICAgICAgICAgdmFsdWUgPSBldmVudC50YXJnZXQudmFsdWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmZpbHRlcihjb2wsIHZhbHVlLCB0aGlzLmdldEZpbHRlckJ5Q29sKGNvbCkpO1xyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlLnNjcm9sbGVyICE9IG51bGwpIHtcclxuICAgICAgICAgICAgdGhpcy50YWJsZS5zY3JvbGxlci5zZXRJbml0aWFsU3RhdGUoKTtcclxuICAgICAgICAgICAgdGhpcy50YWJsZS5zY3JvbGxlci5pbml0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm9uRmlsdGVyLmVtaXQoeyBjb2x1bW46IGNvbCwgdmFsdWU6IHZhbHVlLCBmaWx0ZXJlZFZhbHVlOiB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWUgfSlcclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXIoY29sOiBJQ29sdW1uLCB2YWw6IGFueSwgZmlsdGVyOiBzdHJpbmcpIHtcclxuXHJcbiAgICAgICAgLy8gQ29waWVyIC0gQ29sbGVyIGRlIGxhIG3DqXRob2RlIGZpbHRlcigpIGRlIHRhYmxlLnRzIGRlIFByaW1lTkcgc2FucyBsYSBkw6lzeW5jaHJvbmlzYXRpb24gY2F1c8OpZSBwYXIgZmlsdGVyRGVsYXkgKHNldFRpbWVvdXQpXHJcbiAgICAgICAgaWYgKHRoaXMudGFibGUuZmlsdGVyVGltZW91dCkge1xyXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50YWJsZS5maWx0ZXJUaW1lb3V0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlLmlzRmlsdGVyQmxhbmsodmFsKSkge1xyXG4gICAgICAgICAgICB0aGlzLnRhYmxlLmZpbHRlcnNbY29sLmlkXSA9IHsgdmFsdWU6IHZhbCwgbWF0Y2hNb2RlOiBmaWx0ZXIgfTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMudGFibGUuZmlsdGVyc1tjb2wuaWRdKSB7XHJcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRhYmxlLmZpbHRlcnNbY29sLmlkXTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMudGFibGUuX2ZpbHRlcigpO1xyXG4gICAgICAgIHRoaXMudGFibGUuZmlsdGVyVGltZW91dCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy50YWJsZS5hbmNob3JSb3dJbmRleCA9IG51bGw7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnRhYmxlLnNjcm9sbGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGFibGUuc2Nyb2xsZXIudmlld0luaXQoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VG90YWwoY29sOiBJQ29sdW1uKSB7XHJcbiAgICAgICAgaWYgKGNvbC5kaXNwbGF5VG90YWwgJiYgKGNvbC50eXBlID09IENvbFR5cGUuTnVtYmVyIHx8IGNvbC50eXBlID09IENvbFR5cGUuQ2lsb2dOdW1iZXIpKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZXM6IElSb3dbXSA9IHRoaXMudmFsdWVzO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnRvdGFsQnlGaWx0ZXIgPT0gdHJ1ZSAmJiB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgdmFsdWVzID0gdGhpcy50YWJsZS5maWx0ZXJlZFZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxldCB0b3RhbDogbnVtYmVyID0gMDtcclxuICAgICAgICAgICAgdmFsdWVzLmZvckVhY2godmFsID0+IHtcclxuICAgICAgICAgICAgICAgIGlmICghdmFsLmV4Y2x1c2lvblRvdGFsICYmICF2YWxbY29sLmlkXS5leGNsdXNpb25Ub3RhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubW9kZVNlbGVjdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubW9kZVNlbGVjdGlvbiA9PSBNb2RlU2VsZWN0aW9uLkNoZWNrYm94ICYmIHRoaXMub3B0aW9ucy50b3RhbEJ5U2VsZWN0aW9uID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkUm93cyAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRSb3dzLmZpbmQocm93ID0+IHJvdy5pZCA9PSB2YWwuaWQpICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCArPSAodmFsW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHZhbFtjb2wuaWRdLnZhbHVlIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCArPSAodmFsW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHZhbFtjb2wuaWRdLnZhbHVlIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCArPSAodmFsW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHZhbFtjb2wuaWRdLnZhbHVlIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHRvdGFsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAwO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRUb3RhbFN0cihjb2w6IElDb2x1bW4pIHtcclxuICAgICAgICBpZiAoY29sLmRpc3BsYXlUb3RhbCAmJiAoY29sLnR5cGUgPT0gQ29sVHlwZS5OdW1iZXIgfHwgY29sLnR5cGUgPT0gQ29sVHlwZS5DaWxvZ051bWJlcikpIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChjb2wubWV0aG9kVG90YWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Rm9ybWF0dGVkTnVtYmVyKGNvbCwgbnVsbCwgY29sLm1ldGhvZFRvdGFsKCksIHRydWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlczogSVJvd1tdID0gdGhpcy52YWx1ZXM7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnRvdGFsQnlGaWx0ZXIgPT0gdHJ1ZSAmJiB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWUgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IHRoaXMudGFibGUuZmlsdGVyZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCB0b3RhbDogbnVtYmVyID0gMDtcclxuICAgICAgICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWwuZXhjbHVzaW9uVG90YWwgJiYgIXZhbFtjb2wuaWRdLmV4Y2x1c2lvblRvdGFsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9wdGlvbnMubW9kZVNlbGVjdGlvbiAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24gPT0gTW9kZVNlbGVjdGlvbi5DaGVja2JveCAmJiB0aGlzLm9wdGlvbnMudG90YWxCeVNlbGVjdGlvbiA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSb3dzICE9IG51bGwgJiYgdGhpcy5zZWxlY3RlZFJvd3MuZmluZChyb3cgPT4gcm93LmlkID09IHZhbC5pZCkgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCArPSAodmFsW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHZhbFtjb2wuaWRdLnZhbHVlIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCArPSAodmFsW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHZhbFtjb2wuaWRdLnZhbHVlIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3RhbCArPSAodmFsW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHZhbFtjb2wuaWRdLnZhbHVlIDogMCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmdldEZvcm1hdHRlZE51bWJlcihjb2wsIG51bGwsIHRvdGFsLCB0cnVlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtYXR0ZWRUZXh0KGNvbDogSUNvbHVtbiwgcm93RGF0YTogSVJvdykge1xyXG4gICAgICAgIGxldCB2YWx1ZTogc3RyaW5nID0gcm93RGF0YVtjb2wuaWRdLnZhbHVlO1xyXG4gICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRlbnRhdGlvbjogbnVtYmVyID0gdGhpcy5nZXRPcHRpb24oY29sLCByb3dEYXRhLCAnaW5kZW50YXRpb24nKTtcclxuICAgICAgICAgICAgaWYgKGluZGVudGF0aW9uICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAnICAgICAgICcucmVwZWF0KGluZGVudGF0aW9uKSArIHZhbHVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXRGb3JtYXR0ZWROdW1iZXIoY29sOiBJQ29sdW1uLCByb3dEYXRhOiBJUm93LCB2YWx1ZTogbnVtYmVyLCB0b3RhbDogYm9vbGVhbiA9IGZhbHNlKSB7XHJcblxyXG4gICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAnJztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsZXQgZmluYWxWYWx1ZTogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgICAgICAgIC8vIFByw6lmaXhlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdwcmVmaXgnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBmaW5hbFZhbHVlLnB1c2godGhpcy5nZXRPcHRpb24oY29sLCByb3dEYXRhLCAncHJlZml4JykpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBWYWxldXJcclxuICAgICAgICAgICAgaWYgKHRvdGFsKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWluRGVjaW1hbGVzVG90YWw6IG51bWJlciA9IDI7XHJcbiAgICAgICAgICAgICAgICBsZXQgbWF4RGVjaW1hbGVzVG90YWw6IG51bWJlciA9IDI7XHJcbiAgICAgICAgICAgICAgICBpZiAoKDxJT3B0aW9uc051bWJlcj5jb2wub3B0aW9ucykubWluRGVjaW1hbGVzVG90YWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbkRlY2ltYWxlc1RvdGFsID0gKDxJT3B0aW9uc051bWJlcj5jb2wub3B0aW9ucykubWluRGVjaW1hbGVzVG90YWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoKDxJT3B0aW9uc051bWJlcj5jb2wub3B0aW9ucykubWF4RGVjaW1hbGVzVG90YWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1heERlY2ltYWxlc1RvdGFsID0gKDxJT3B0aW9uc051bWJlcj5jb2wub3B0aW9ucykubWF4RGVjaW1hbGVzVG90YWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAobWF4RGVjaW1hbGVzVG90YWwgPCBtaW5EZWNpbWFsZXNUb3RhbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1heERlY2ltYWxlc1RvdGFsID0gbWluRGVjaW1hbGVzVG90YWw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBmaW5hbFZhbHVlLnB1c2godmFsdWUudG9Mb2NhbGVTdHJpbmcoJ2ZyLUZSJywgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG1heERlY2ltYWxlc1RvdGFsLCBtaW5pbXVtRnJhY3Rpb25EaWdpdHM6IG1pbkRlY2ltYWxlc1RvdGFsIH0pKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGxldCBtaW5EZWNpbWFsZXM6IG51bWJlcjtcclxuICAgICAgICAgICAgICAgIGxldCBtYXhEZWNpbWFsZXM6IG51bWJlcjtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtYXhEZWNpbWFsZXMnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgbWF4RGVjaW1hbGVzID0gdGhpcy5nZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWF4RGVjaW1hbGVzJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5nZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWluRGVjaW1hbGVzJykgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1pbkRlY2ltYWxlcyA9IHRoaXMuZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21pbkRlY2ltYWxlcycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgLy9maW5hbFZhbHVlLnB1c2godmFsdWUudG9Mb2NhbGVTdHJpbmcoJ2ZyLUZSJykpXHJcbiAgICAgICAgICAgICAgICBmaW5hbFZhbHVlLnB1c2godmFsdWUudG9Mb2NhbGVTdHJpbmcoJ2ZyLUZSJywgeyBtYXhpbXVtRnJhY3Rpb25EaWdpdHM6IG1heERlY2ltYWxlcywgbWluaW11bUZyYWN0aW9uRGlnaXRzOiBtaW5EZWNpbWFsZXMgfSkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBTdWZmaXhlXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdzdWZmaXgnKSAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICBmaW5hbFZhbHVlLnB1c2godGhpcy5nZXRPcHRpb24oY29sLCByb3dEYXRhLCAnc3VmZml4JykpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXR1cm4gZmluYWxWYWx1ZS5qb2luKCcgJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGRvd25sb2FkRmlsZShjZWxsOiBJQ2VsbCkge1xyXG4gICAgICAgIGxldCBwYXRoOiBzdHJpbmcgPSAoPElPcHRpb25zRmlsZT5jZWxsLm9wdGlvbnMpLmRvd25sb2FkUGF0aDtcclxuICAgICAgICBsZXQgZmlsZU5hbWUgPSBjZWxsLnZhbHVlO1xyXG4gICAgICAgIGNvbnN0IGE6IEhUTUxBbmNob3JFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpIGFzIEhUTUxBbmNob3JFbGVtZW50O1xyXG4gICAgICAgIGEuaHJlZiA9IHBhdGg7XHJcbiAgICAgICAgYS5kb3dubG9hZCA9IGZpbGVOYW1lO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoYSk7XHJcbiAgICAgICAgYS5jbGljaygpO1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICAgICAgVVJMLnJldm9rZU9iamVjdFVSTChwYXRoKTtcclxuICAgIH1cclxuXHJcbiAgICBoYXNGcm96ZW5Db2x1bW5zKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbnMuZmlsdGVyKGNvbCA9PiBjb2wuZnJvemVuID09IHRydWUpLmxlbmd0aCA+IDA7XHJcbiAgICB9XHJcblxyXG4gICAgdHJhY2tCeUZ1bmN0aW9uKGluZGV4LCBpdGVtKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0/LmlkO1xyXG4gICAgfVxyXG5cclxuICAgIGlzVmFsdWVCdXR0b25CeVR5cGUodmFsdWU6IGFueSwgdHlwZTogc3RyaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09IHR5cGU7XHJcbiAgICB9XHJcblxyXG4gICAgaXNNb2RlRWRpdGlvbigpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmVkaXRhYmxlO1xyXG4gICAgfVxyXG5cclxuICAgIGdldE1vZGVTZWxlY3Rpb24oKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNlbGVjdGFibGUgIT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc3dpdGNoICh0aGlzLm9wdGlvbnMubW9kZVNlbGVjdGlvbikge1xyXG4gICAgICAgICAgICBjYXNlIE1vZGVTZWxlY3Rpb24uQ2hlY2tib3g6XHJcbiAgICAgICAgICAgIGNhc2UgTW9kZVNlbGVjdGlvbi5NZXRha2V5OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdtdWx0aXBsZSc7XHJcbiAgICAgICAgICAgIGNhc2UgTW9kZVNlbGVjdGlvbi5DZWxsOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIGNhc2UgTW9kZVNlbGVjdGlvbi5Sb3c6XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3NpbmdsZSc7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlzTW9kZUNoZWNrYm94U2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2VsZWN0YWJsZSA9PSB0cnVlICYmIHRoaXMub3B0aW9ucy5tb2RlU2VsZWN0aW9uICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24gPT0gTW9kZVNlbGVjdGlvbi5DaGVja2JveDtcclxuICAgIH1cclxuXHJcbiAgICBpc01vZGVDZWxsU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuc2VsZWN0YWJsZSA9PSB0cnVlICYmIHRoaXMub3B0aW9ucy5tb2RlU2VsZWN0aW9uICE9IG51bGwgJiYgdGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24gPT0gTW9kZVNlbGVjdGlvbi5DZWxsO1xyXG4gICAgfVxyXG5cclxuICAgIGlzTW9kZU1ldGFrZXlTZWxlY3Rpb24oKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5zZWxlY3RhYmxlID09IHRydWUgJiYgdGhpcy5vcHRpb25zLm1vZGVTZWxlY3Rpb24gIT0gbnVsbCAmJiB0aGlzLm9wdGlvbnMubW9kZVNlbGVjdGlvbiA9PSBNb2RlU2VsZWN0aW9uLk1ldGFrZXk7XHJcbiAgICB9XHJcblxyXG4gICAgZXhwb3J0RXhjZWwoYnlGaWx0cmU6IGJvb2xlYW4gPSBmYWxzZSwgd2l0aENvbG9yczogYm9vbGVhbiA9IHRydWUpIHtcclxuICAgICAgICB0aGlzLmV4cG9ydFNlcnZpY2UuZXhwb3J0RXhjZWwodGhpcy50YWJsZS5maWx0ZXJlZFZhbHVlICE9IG51bGwgPyB0aGlzLnRhYmxlLmZpbHRlcmVkVmFsdWUgOiB0aGlzLnZhbHVlcywgdGhpcy5jb2x1bW5zLCBieUZpbHRyZSwgd2l0aENvbG9ycyk7XHJcbiAgICB9XHJcblxyXG4gICAgb25DbGlja0NlbGxOdW1iZXIocm93OiBJUm93LCBjb2w6IElDb2x1bW4pIHtcclxuICAgICAgICB0aGlzLnZhbHVlcy5mb3JFYWNoKHZhbCA9PiB7XHJcbiAgICAgICAgICAgIHZhbFtjb2wuaWRdLmZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcm93W2NvbC5pZF0uZm9jdXMgPSB0cnVlO1xyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmlucHV0TnVtYmVyLmlucHV0Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IFtuZ1N0eWxlXT1cInsgJ2hlaWdodCc6IG9wdGlvbnMuc2Nyb2xsSGVpZ2h0ICE9IG51bGwgPyBvcHRpb25zLnNjcm9sbEhlaWdodCA6ICcxMDAlJyB9XCI+XHJcblxyXG4gICAgPGJ1dHRvbiBwQnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwib3B0aW9ucy5leHBvcnRFeGNlbFwiXHJcbiAgICAgICAgICAgIGljb249XCJwaSBwaS1maWxlLWV4Y2VsXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1zdWNjZXNzIGFic29sdXRlIHotNSB3LTJyZW0gaC0ycmVtIGJvcmRlci1yb3VuZC1yaWdodCBib3JkZXItbm9yb3VuZC10b3BcIlxyXG4gICAgICAgICAgICBwVG9vbHRpcD1cIkV4cG9ydGVyIGxlIGNvbnRlbnUgZGUgbGEgZ3JpbGxlIGF1IGZvcm1hdCBFeGNlbFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJleHBvcnRFeGNlbChvcHRpb25zLmV4cG9ydEV4Y2VsQnlGaWx0cmUsICFvcHRpb25zLmV4cG9ydEV4Y2VsTm9Db2xvcnMpXCI+XHJcbiAgICA8L2J1dHRvbj5cclxuXHJcbiAgICA8cC1jb250ZXh0TWVudSAjY20gW21vZGVsXT1cIm9wdGlvbnMuY29udGV4dE1lbnVJdGVtc1wiIC8+XHJcblxyXG4gICAgPHAtdGFibGUgI3RhYmxlXHJcbiAgICAgICAgICAgICBbY29sdW1uc109XCJjb2x1bW5zXCJcclxuICAgICAgICAgICAgIFt2YWx1ZV09XCJ2YWx1ZXNcIlxyXG4gICAgICAgICAgICAgZGF0YUtleT1cImlkXCJcclxuICAgICAgICAgICAgIFtzZWxlY3Rpb25Nb2RlXT1cImdldE1vZGVTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgICBbbWV0YUtleVNlbGVjdGlvbl09XCJpc01vZGVNZXRha2V5U2VsZWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgWyhzZWxlY3Rpb24pXT1cInNlbGVjdGVkUm93c1wiXHJcbiAgICAgICAgICAgICAob25Sb3dTZWxlY3QpPVwib25TZWxlY3RSb3coJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAob25Sb3dVbnNlbGVjdCk9XCJvblVuc2VsZWN0Um93KCRldmVudClcIlxyXG4gICAgICAgICAgICAgKG9uSGVhZGVyQ2hlY2tib3hUb2dnbGUpPVwib25TZWxlY3RBbGwoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAoc29ydEZ1bmN0aW9uKT1cInNvcnRHcmlsbGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICBbY3VzdG9tU29ydF09XCJvcHRpb25zLmdyb3VwaW5nID09IG51bGwgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgW3Njcm9sbGFibGVdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nXCJcclxuICAgICAgICAgICAgIFtzY3JvbGxIZWlnaHRdPVwiJ2ZsZXgnXCJcclxuICAgICAgICAgICAgIFtyb3dHcm91cE1vZGVdPVwib3B0aW9ucy5ncm91cGluZyAhPSBudWxsID8gJ3N1YmhlYWRlcicgOiBudWxsXCJcclxuICAgICAgICAgICAgIFtncm91cFJvd3NCeV09XCJvcHRpb25zLmdyb3VwaW5nICE9IG51bGwgPyBvcHRpb25zLmdyb3VwaW5nLm9iaiArICcuJyArIG9wdGlvbnMuZ3JvdXBpbmcuaWQgOiBudWxsXCJcclxuICAgICAgICAgICAgIFtncm91cFJvd3NCeU9yZGVyXT1cIjBcIlxyXG4gICAgICAgICAgICAgW3ZpcnR1YWxTY3JvbGxdPVwib3B0aW9ucy52aXJ0dWFsU2Nyb2xsID09IHRydWUgJiYgb3B0aW9ucy5zY3JvbGxIZWlnaHQgIT0gbnVsbCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICBbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cIm9wdGlvbnMudmlydHVhbFNjcm9sbEl0ZW1TaXplICE9IG51bGwgPyBvcHRpb25zLnZpcnR1YWxTY3JvbGxJdGVtU2l6ZSA6IDM1XCJcclxuICAgICAgICAgICAgIFtwYWdpbmF0b3JdPVwib3B0aW9ucy5wYWdpbmF0b3IgPT0gbnVsbCA/IGZhbHNlIDogdHJ1ZVwiXHJcbiAgICAgICAgICAgICBbcm93c109XCJvcHRpb25zLnBhZ2luYXRvclJvd3NcIlxyXG4gICAgICAgICAgICAgKG9uUGFnZSk9XCJvblBhZ2VUYWJsZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgIFt0YWJsZVN0eWxlQ2xhc3NdPVwiIW9wdGlvbnMudGhlbWVHcmlsbGUgPyAnZ3JpZF9ncmV5JyA6IG9wdGlvbnMudGhlbWVHcmlsbGVcIlxyXG4gICAgICAgICAgICAgW2xhenldPVwib3B0aW9ucy5sYXp5ID09IHRydWUgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgKG9uRmlsdGVyKT1cIm9uRmlsdGVyVGFibGUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICBbcm93VHJhY2tCeV09XCJ0cmFja0J5RnVuY3Rpb25cIlxyXG4gICAgICAgICAgICAgWyhjb250ZXh0TWVudVNlbGVjdGlvbildPVwiY29udGV4dE1lbnVTZWxlY3RlZEl0ZW1cIlxyXG4gICAgICAgICAgICAgW2NvbnRleHRNZW51XT1cImNtXCI+XHJcblxyXG4gICAgICAgIDwhLS0gSEVBREVSIC0tPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gSEVBREVSUyAtLT5cclxuICAgICAgICAgICAgPHRyIGNsYXNzPVwicm93SGVhZGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjZWxsRGVsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTW9kZUNoZWNrYm94U2VsZWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveCAqbmdJZj1cIiFvcHRpb25zLmZpbHRlcmFibGUgJiYgb3B0aW9ucy50b2dnbGVBbGxcIj48L3AtdGFibGVIZWFkZXJDaGVja2JveD5cclxuICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjb2wgb2YgY29sdW1uc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiBjb2wuYmFja2dyb3VuZENvbG9yID8gY29sLmJhY2tncm91bmRDb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQtY2VudGVyJyA6IG9wdGlvbnMuY2VudGVySGVhZGVycywgJ2hlYWRlckFmZmljaGFnZVNpbXBsZSc6ICFvcHRpb25zLmhlYWRlcnNBZmZpY2hhZ2VFbnRpZXIsICdoZWFkZXJBZmZpY2hhZ2VFbnRpZXInOiBvcHRpb25zLmhlYWRlcnNBZmZpY2hhZ2VFbnRpZXIgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwU29ydGFibGVDb2x1bW5dPVwiY29sLmlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BTb3J0YWJsZUNvbHVtbkRpc2FibGVkXT1cIiFvcHRpb25zLnNvcnRhYmxlIHx8IG9wdGlvbnMuZ3JvdXBpbmcgIT0gbnVsbCB8fCBjb2wubGliZWxsZSA9PSBudWxsIHx8IGNvbC5saWJlbGxlID09ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyBjb2wuaWQgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwicmVmcmVzaERhdGEoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cImNvbC5saWJlbGxlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBIZWFkZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdTdHlsZV09XCJ7ICdjb2xvcic6IGNvbC50ZXh0Q29sb3IgPyBjb2wudGV4dENvbG9yIDogbnVsbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wubGliZWxsZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtc29ydEljb24gKm5nSWY9XCJvcHRpb25zLnNvcnRhYmxlICYmIG9wdGlvbnMuZ3JvdXBpbmcgPT0gbnVsbCAmJiBjb2wubGliZWxsZSAhPSBudWxsICYmIGNvbC5saWJlbGxlICE9ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpZWxkXT1cImNvbC5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3Atc29ydEljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPHRoIGNsYXNzPVwiY2VsbERlbGV0ZVwiICpuZ0lmPVwib3B0aW9ucy5yb3dzRGVsZXRhYmxlXCI+PC90aD5cclxuICAgICAgICAgICAgPC90cj5cclxuXHJcbiAgICAgICAgICAgIDwhLS0gRklMVFJFUyAtLT5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwib3B0aW9ucy5maWx0ZXJhYmxlXCIgY2xhc3M9XCJyb3dGaWx0ZXJcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjZWxsRGVsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTW9kZUNoZWNrYm94U2VsZWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVIZWFkZXJDaGVja2JveCAqbmdJZj1cIm9wdGlvbnMudG9nZ2xlQWxsXCI+PC9wLXRhYmxlSGVhZGVyQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBUZXh0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0aCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmICgoY2hlY2tUeXBlKCdEcm9wZG93bicsIGNvbCkgJiYgY29sLm9wdGlvbnMuZmlsdGVyVGV4dClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGNoZWNrVHlwZSgnTXVsdGlTZWxlY3QnLCBjb2wpICYmIGNvbC5vcHRpb25zLmZpbHRlclRleHQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IGNoZWNrVHlwZSgnVGV4dCcsIGNvbClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgY2hlY2tUeXBlKCdGaWxlJywgY29sKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCAoY2hlY2tUeXBlKCdCdXR0b24nLCBjb2wpICYmIGNvbC5vcHRpb25zLmZpbHRlckNvbCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHx8IGNoZWNrVHlwZSgnTnVtYmVyJywgY29sKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB8fCBjaGVja1R5cGUoJ0NpbG9nTnVtYmVyJywgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cIiFjb2wuZGlzYWJsZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5wdXQpPVwib25GaWx0ZXJDb2woJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY29sLm9wdGlvbnMuZGVmYXVsdEZpbHRlcnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIERhdGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdEYXRlJywgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWNhbGVuZGFyICpuZ0lmPVwiIWNvbC5kaXNhYmxlRmlsdGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpZXddPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSBudWxsID8gJ2RhdGUnIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRlRm9ybWF0XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ3llYXInID8gJ3l5JyA6IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ21vbnRoJyA/ICdtbS95eScgOiAnZGQvbW0veXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0SWRdPVwiY29sLmlkICsgJ19maWx0ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3REYXlPZldlZWs9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3JlYWRvbmx5SW5wdXRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbk1vZGU9XCJyYW5nZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblNlbGVjdCk9XCJvbkZpbHRlckNvbCgkZXZlbnQsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93QnV0dG9uQmFyPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsZWFyQ2xpY2spPVwib25GaWx0ZXJDb2woJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVyc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3AtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBMaXN0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiAoKGNoZWNrVHlwZSgnRHJvcGRvd24nLCBjb2wpICYmICFjb2wub3B0aW9ucy5maWx0ZXJUZXh0KSB8fCAoY2hlY2tUeXBlKCdNdWx0aVNlbGVjdCcsIGNvbCkgJiYgIWNvbC5vcHRpb25zLmZpbHRlclRleHQpIHx8IGNoZWNrVHlwZSgnU2VsZWN0QnV0dG9uJywgY29sKSB8fCBjaGVja1R5cGUoJ1N0YXRlJywgY29sKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1tdWx0aVNlbGVjdCAqbmdJZj1cIiFjb2wuZGlzYWJsZUZpbHRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImNvbC5vcHRpb25zPy5vcHRpb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpbHRlcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUtleT1cIklEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImNvbC5vcHRpb25zPy5vcHRpb25MYWJlbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5RmlsdGVyTWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5TWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aXJ0dWFsU2Nyb2xsXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cIjM1XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtc0xhYmVsPVwiezB9IHNlbGVjdGlvbm7DqXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25GaWx0ZXJDb2woJGV2ZW50LCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJjb2wub3B0aW9ucy5kZWZhdWx0RmlsdGVyc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtncm91cF09XCJjb2wub3B0aW9ucy5vcHRpb25Hcm91cENoaWxkcmVuICE9IG51bGwgPyB0cnVlIDogZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uR3JvdXBMYWJlbF09XCJjb2wub3B0aW9ucy5vcHRpb25Hcm91cExhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkdyb3VwQ2hpbGRyZW5dPVwiY29sLm9wdGlvbnMub3B0aW9uR3JvdXBDaGlsZHJlblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2xlYXIpPVwib25GaWx0ZXJDb2wobnVsbCwgY29sKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1ncm91cCBwVGVtcGxhdGU9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tncm91cFtjb2wub3B0aW9ucy5vcHRpb25Hcm91cExhYmVsXX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90aD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTd2l0Y2ggLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdTd2l0Y2gnLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgKm5nSWY9XCIhY29sLmRpc2FibGVGaWx0ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJvcHRpb25zU3dpdGNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25MYWJlbD1cImxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uVmFsdWU9XCJ2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5RmlsdGVyTWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5TWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aXJ0dWFsU2Nyb2xsSXRlbVNpemVdPVwiMzBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZEl0ZW1zTGFiZWw9XCJ7MH0gc2VsZWN0aW9ubsOpc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkZpbHRlckNvbCgkZXZlbnQsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNvbC5vcHRpb25zLmRlZmF1bHRGaWx0ZXJzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1tdWx0aVNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIE5vbiBmaWx0cmFibGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRoICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgKGNoZWNrVHlwZSgnSW1hZ2UnLCBjb2wpIHx8IChjaGVja1R5cGUoJ0J1dHRvbicsIGNvbCkgJiYgIWNvbC5vcHRpb25zLmZpbHRlckNvbCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjZWxsRGVsZXRlXCIgKm5nSWY9XCJvcHRpb25zLnJvd3NEZWxldGFibGVcIj48L3RoPlxyXG4gICAgICAgICAgICA8L3RyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSBUT1RBTCAtLT5cclxuICAgICAgICAgICAgPHRyICpuZ0lmPVwib3B0aW9ucy5yb3dUb3RhbFwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJvd1RvdGFsXCI+XHJcbiAgICAgICAgICAgICAgICA8dGggY2xhc3M9XCJjZWxsRGVsZXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTW9kZUNoZWNrYm94U2VsZWN0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW4+XHJcbiAgICAgICAgICAgICAgICA8L3RoPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY29sIG9mIGNvbHVtbnNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dGggKm5nSWY9XCIhY29sLmludmlzaWJsZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ3RleHQtY2VudGVyJyA6IHRydWUgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3sgZ2V0VG90YWxTdHIoY29sKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGg+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDx0aCBjbGFzcz1cImNlbGxEZWxldGVcIiAqbmdJZj1cIm9wdGlvbnMucm93c0RlbGV0YWJsZVwiPjwvdGg+XHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgPCEtLUdyb3VwaGVhZGVyLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImdyb3VwaGVhZGVyXCIgbGV0LXJvd0RhdGE+XHJcbiAgICAgICAgICAgIDx0ciBwUm93R3JvdXBIZWFkZXIgY2xhc3M9XCJyb3dHcm91cGluZ1wiPlxyXG4gICAgICAgICAgICAgICAgPHRkIFthdHRyLmNvbHNwYW5dPVwiY29sdW1ucy5sZW5ndGhcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dF9ib2xkXCI+e3sgcm93RGF0YVtvcHRpb25zLmdyb3VwaW5nLm9ial1bb3B0aW9ucy5ncm91cGluZy5saWJlbGxlXSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgPC90cj5cclxuICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICA8IS0tIEJvZHkgLS0+XHJcbiAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImJvZHlcIiBsZXQtcm93RGF0YSBsZXQtY29sdW1ucz1cImNvbHVtbnNcIj5cclxuICAgICAgICAgICAgPHRyIGlkPVwie3sgcm93RGF0YS5pZCB9fVwiXHJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YS5jb2xvciA/IHJvd0RhdGEuY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgW3BTZWxlY3RhYmxlUm93XT1cInJvd0RhdGFcIlxyXG4gICAgICAgICAgICAgICAgW3BTZWxlY3RhYmxlUm93RGlzYWJsZWRdPVwiIW9wdGlvbnMuc2VsZWN0YWJsZSB8fCBpc01vZGVDaGVja2JveFNlbGVjdGlvbigpIHx8IGlzTW9kZUNlbGxTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAoZGJsY2xpY2spPVwib25Sb3dEb3VibGVDbGlja0V2ZW50KHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgICAgIFtwQ29udGV4dE1lbnVSb3ddPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgICAgICBbcENvbnRleHRNZW51Um93RGlzYWJsZWRdPVwib3B0aW9ucy5jb250ZXh0TWVudUl0ZW1zID09IG51bGxcIj5cclxuXHJcbiAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCJpc01vZGVDaGVja2JveFNlbGVjdGlvbigpXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxEZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPHAtdGFibGVDaGVja2JveCBbdmFsdWVdPVwicm93RGF0YVwiIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5XCI+PC9wLXRhYmxlQ2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGNvbCBvZiBjb2x1bW5zXCI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gVGV4dCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ1RleHQnLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BFZGl0YWJsZUNvbHVtbl09XCJyb3dEYXRhXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BFZGl0YWJsZUNvbHVtbkZpZWxkXT1cImNvbC5pZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiByb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1sZWZ0JzogY29sLnBvc2l0aW9uID09ICdsZWZ0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNlbnRlcic6IGNvbC5wb3NpdGlvbiA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2VsbEVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJpbnB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYmx1cik9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChrZXlkb3duLmVudGVyKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24udGFiKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRWRpdEluaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1sZWZ0JzogY29sLnBvc2l0aW9uID09ICdsZWZ0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNlbnRlcic6IGNvbC5wb3NpdGlvbiA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCIgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwib3V0cHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGdldEZvcm1hdHRlZFRleHQoY29sLCByb3dEYXRhKSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWNlbGxFZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ1RleHQnLCBjb2wpICYmICghaXNNb2RlRWRpdGlvbigpIHx8IHJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJyA6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmIG9uU2VsZWN0Q2VsbChyb3dEYXRhW2NvbC5pZF0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS50b29sdGlwICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udG9vbHRpcCA6IHJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1sZWZ0JzogY29sLnBvc2l0aW9uID09ICdsZWZ0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXJpZ2h0JzogY29sLnBvc2l0aW9uID09ICdyaWdodCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jZW50ZXInOiBjb2wucG9zaXRpb24gPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjb2wubGliZWxsZSB9fSA6XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cIndoaXRlLXNwYWNlOiBwcmU7XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRGb3JtYXR0ZWRUZXh0KGNvbCwgcm93RGF0YSkgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEcm9wZG93biAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ0Ryb3Bkb3duJywgY29sKSAmJiBpc01vZGVFZGl0aW9uKCkgJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWxlZnQnOiBjb2wucG9zaXRpb24gPT0gJ2xlZnQnIHx8IGNvbC5wb3NpdGlvbiA9PSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcmlnaHQnOiBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNlbnRlcic6IGNvbC5wb3NpdGlvbiA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwRWRpdGFibGVDb2x1bW5dPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwRWRpdGFibGVDb2x1bW5GaWVsZF09XCJjb2wuaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS50b29sdGlwIDogcm93RGF0YVtjb2wuaWRdLnZhbHVlICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udmFsdWVbZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJyldIDogJydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwYWRkaW5nQ2VsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1jZWxsRWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtZHJvcGRvd24gKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUtleT1cIklEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9ucycpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdmaWx0ZXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9EaXNwbGF5Rmlyc3RdPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhcl09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnZGVsZXRhYmxlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtcHR5RmlsdGVyTWVzc2FnZT1cIkF1Y3VuIHLDqXN1bHRhdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlNZXNzYWdlPVwiQXVjdW4gcsOpc3VsdGF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYmFzZVpJbmRleF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnYmFzZVpJbmRleCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlydHVhbFNjcm9sbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAndmlydHVhbFNjcm9sbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cIjMwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25FZGl0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsZWFyKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZGF0YSBwVGVtcGxhdGU9XCJzZWxlY3RlZEl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZGF0YSAhPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWJvbGQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGRhdGFbZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJyldIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEgPT0gbnVsbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtZHJvcGRvd24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIm91dHB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogcHJlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyByb3dEYXRhW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZVtnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKV0gOiAnJyB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWNlbGxFZGl0b3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS08cC1kcm9wZG93biAqbmdJZj1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUtleT1cIklEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbnNdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbnMnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaWx0ZXJdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2ZpbHRlcicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXV0b0Rpc3BsYXlGaXJzdF09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2RlbGV0YWJsZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlGaWx0ZXJNZXNzYWdlPVwiQXVjdW4gcsOpc3VsdGF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlNZXNzYWdlPVwiQXVjdW4gcsOpc3VsdGF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jhc2VaSW5kZXhdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2Jhc2VaSW5kZXgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aXJ0dWFsU2Nyb2xsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICd2aXJ0dWFsU2Nyb2xsJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZpcnR1YWxTY3JvbGxJdGVtU2l6ZV09XCIzMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNoYW5nZSk9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsZWFyKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgbGV0LWRhdGEgcFRlbXBsYXRlPVwic2VsZWN0ZWRJdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJkYXRhICE9IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWJvbGQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBkYXRhW2dldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImRhdGEgPT0gbnVsbFwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC1kcm9wZG93bj4tLT5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnRHJvcGRvd24nLCBjb2wpICYmIChyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgOiByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yID8gcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiByb3dEYXRhW2NvbC5pZF0udmFsdWUgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZVtnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKV0gOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1sZWZ0JzogY29sLnBvc2l0aW9uID09ICdsZWZ0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXJpZ2h0JzogY29sLnBvc2l0aW9uID09ICdyaWdodCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jZW50ZXInOiBjb2wucG9zaXRpb24gPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiPnt7IHJvd0RhdGFbY29sLmlkXS52YWx1ZSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnZhbHVlW2dldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXSA6ICcnIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBDaWxvZyBOdW1iZXIgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdDaWxvZ051bWJlcicsIGNvbCkgJiYgaXNNb2RlRWRpdGlvbigpICYmICFyb3dEYXRhLnJlYWRvbmx5ICYmICFyb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiByb3dEYXRhW2NvbC5pZF0udmFsdWUgfCB2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGNpbG9nLWlucHV0LW51bWJlciAqbmdJZj1cInJvd0RhdGFbY29sLmlkXSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uSW5wdXQpPVwib25JbnB1dE51bWJlcigkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0U3R5bGVDbGFzc109XCJjb2wucG9zaXRpb24gPT0gbnVsbCB8fCBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyA/ICd0ZXh0LXJpZ2h0JyA6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgPyAndGV4dC1sZWZ0JyA6ICd0ZXh0LWNlbnRlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZXh0Q29sb3JdPVwicm93RGF0YVtjb2wuaWRdLnRleHRDb2xvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2JvbGRdPVwicm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2l0YWxpY109XCJyb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N1ZmZpeGVdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3N1ZmZpeCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4ZV09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAncHJlZml4JykgIT0gbnVsbCA/IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdwcmVmaXgnKSArICcgJyA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21pbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtYXgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heERlY2ltYWxzXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlSW50ZWdlcicpICE9IG51bGwgJiYgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGVJbnRlZ2VyJykgPT0gdHJ1ZSA/IDAgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWF4RGVjaW1hbGVzJykgIT0gbnVsbCA/IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtYXhEZWNpbWFsZXMnKSA6IDIgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25FZGl0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkZvY3VzKT1cIm9uRWRpdEluaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2NpbG9nLWlucHV0LW51bWJlcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnQ2lsb2dOdW1iZXInLCBjb2wpICYmIChyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgOiByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yID8gcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiByb3dEYXRhW2NvbC5pZF0udmFsdWUgfCB2YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1sZWZ0JzogY29sLnBvc2l0aW9uID09ICdsZWZ0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXJpZ2h0JzogY29sLnBvc2l0aW9uID09ICdyaWdodCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jZW50ZXInOiBjb2wucG9zaXRpb24gPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiPnt7IGdldEZvcm1hdHRlZE51bWJlcihjb2wsIHJvd0RhdGEsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIE51bWJlciAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ051bWJlcicsIGNvbCkgJiYgaXNNb2RlRWRpdGlvbigpICYmICFyb3dEYXRhLnJlYWRvbmx5ICYmICFyb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS50b29sdGlwIDogcm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwRWRpdGFibGVDb2x1bW5dPVwicm93RGF0YVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwRWRpdGFibGVDb2x1bW5GaWVsZF09XCJjb2wuaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWxlZnQnOiBjb2wucG9zaXRpb24gPT0gJ2xlZnQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcmlnaHQnOiBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNlbnRlcic6IGNvbC5wb3NpdGlvbiA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWJvbGQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8cC1jZWxsRWRpdG9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImlucHV0XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAtaW5wdXROdW1iZXIgI2lucHV0TnVtYmVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gJiYgIXJvd0RhdGEucmVhZG9ubHkgJiYgIXJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZT1cImZyLUZSXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25JbnB1dCk9XCJvbklucHV0TnVtYmVyKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0J1dHRvbnNdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3Nob3dCdXR0b25zJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpbnB1dFN0eWxlQ2xhc3NdPVwiY29sLnBvc2l0aW9uID09IG51bGwgfHwgY29sLnBvc2l0aW9uID09ICdyaWdodCcgPyAndGV4dC1yaWdodCcgOiBjb2wucG9zaXRpb24gPT0gJ2xlZnQnID8gJ3RleHQtbGVmdCcgOiAndGV4dC1jZW50ZXInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRTdHlsZV09XCJ7ICdmb250LXdlaWdodCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUgPyAnYm9sZCcgOiBudWxsLCAnZm9udC1zdHlsZSc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlID8gJ2l0YWxpYycgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdWZmaXhdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3N1ZmZpeCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJlZml4XT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdwcmVmaXgnKSAhPSBudWxsID8gZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3ByZWZpeCcpICsgJyAnIDogbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWluJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21heCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluRnJhY3Rpb25EaWdpdHNdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGVJbnRlZ2VyJykgIT0gbnVsbCAmJiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZUludGVnZXInKSA9PSB0cnVlID8gMCA6IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtaW5EZWNpbWFsZXMnKSAhPSBudWxsID8gZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21pbkRlY2ltYWxlcycpIDogMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heEZyYWN0aW9uRGlnaXRzXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlSW50ZWdlcicpICE9IG51bGwgJiYgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGVJbnRlZ2VyJykgPT0gdHJ1ZSA/IDAgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbWF4RGVjaW1hbGVzJykgIT0gbnVsbCA/IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtYXhEZWNpbWFsZXMnKSA6IDIgXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25CbHVyKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25LZXlEb3duKT1cIm9uS2V5RG93bigkZXZlbnQsIHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uRm9jdXMpPVwib25FZGl0SW5pdENlbGwoJGV2ZW50LCByb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdGVwXT1cIjBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3AtaW5wdXROdW1iZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cIm91dHB1dFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ3aGl0ZS1zcGFjZTogcHJlO1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBnZXRGb3JtYXR0ZWROdW1iZXIoY29sLCByb3dEYXRhLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3AtY2VsbEVkaXRvcj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnTnVtYmVyJywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS50b29sdGlwIDogcm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgdmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnIHx8IGNvbC5wb3NpdGlvbiA9PSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY2VudGVyJzogY29sLnBvc2l0aW9uID09ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyBnZXRGb3JtYXR0ZWROdW1iZXIoY29sLCByb3dEYXRhLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBEYXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnRGF0ZScsIGNvbCkgJiYgaXNNb2RlRWRpdGlvbigpICYmICFyb3dEYXRhLnJlYWRvbmx5ICYmICFyb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICd5ZWFyJyA/IChyb3dEYXRhW2NvbC5pZF0udmFsdWUgfCBkYXRlOiAneXl5eScpIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAnbW9udGgnID8gKHJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IGRhdGU6ICdNTS95eScpIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAnaG91cicgPyAocm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgZGF0ZTogJ0hIOm1tJykgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICdkYXRlaG91cicgPyAocm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgZGF0ZTogJ2RkL01NL3l5IEhIOm1tJykgOiAocm93RGF0YVtjb2wuaWRdLnZhbHVlIHwgZGF0ZTogJ2RkL01NL3l5eXknKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtY2FsZW5kYXIgWyhuZ01vZGVsKV09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlld109XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09IG51bGwgfHwgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAnZGF0ZScgfHwgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAnaG91cicgPyAnZGF0ZScgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICdkYXRlaG91cicgPyAnZGF0ZScgOiBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGVGb3JtYXRdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAneWVhcicgPyAneXknIDogZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21vZGUnKSA9PSAnbW9udGgnID8gJ21tL3l5JyA6IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ2hvdXInIHx8IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ2RhdGVob3VyJyA/ICdkZC9tbS95eScgOiAnZGQvbW0veXknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dUaW1lXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ2RhdGVob3VyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0aW1lT25seV09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICdob3VyJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtob3VyRm9ybWF0XT1cIjI0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3REYXlPZldlZWs9XCIxXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uU2VsZWN0KT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQmx1cik9XCJvbkVkaXRDZWxsKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuaWRdLnZhbHVlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkNsZWFyKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lucHV0U3R5bGVDbGFzc109XCJjb2wucG9zaXRpb24gPT0gbnVsbCB8fCBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyA/ICd0ZXh0LXJpZ2h0JyA6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgPyAndGV4dC1sZWZ0JyA6ICd0ZXh0LWNlbnRlcidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5wdXRTdHlsZV09XCJ7ICdmb250LXdlaWdodCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUgPyAnYm9sZCcgOiBudWxsLCAnZm9udC1zdHlsZSc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlID8gJ2l0YWxpYycgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdjbGVhcicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbkRhdGVdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ21pbkRhdGUnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhEYXRlXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtYXhEYXRlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGVmYXVsdERhdGVdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2RlZmF1bHREYXRlJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdEYXRlJywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbi13aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbG9yJyA6IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgPyByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yIDogbnVsbFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmIG9uU2VsZWN0Q2VsbChyb3dEYXRhW2NvbC5pZF0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS50b29sdGlwICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udG9vbHRpcCA6IHJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IGRhdGU6ICdkZC9NTS95eXl5J1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1sZWZ0JzogY29sLnBvc2l0aW9uID09ICdsZWZ0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LXJpZ2h0JzogY29sLnBvc2l0aW9uID09ICdyaWdodCcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1jZW50ZXInOiBjb2wucG9zaXRpb24gPT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiPnt7IHJvd0RhdGFbY29sLmlkXS52YWx1ZSB8IGRhdGU6IChnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnbW9kZScpID09ICd5ZWFyJyA/ICd5eXl5JyA6IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdtb2RlJykgPT0gJ21vbnRoJyA/ICdNTS95eXl5JyA6ICdkZC9NTS95eXl5JykgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIE11bHRpU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnTXVsdGlTZWxlY3QnLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY2VudGVyJzogY29sLnBvc2l0aW9uID09ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmIG9uU2VsZWN0Q2VsbChyb3dEYXRhW2NvbC5pZF0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS50b29sdGlwICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udG9vbHRpcCA6IGdldE11bHRpU2VsZWN0Q29uY2F0KHJvd0RhdGFbY29sLmlkXS52YWx1ZSwgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvbkxhYmVsJykpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0b29sdGlwUG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGFkZGluZ0NlbGxcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtbXVsdGlTZWxlY3QgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25zJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlsdGVyXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdmaWx0ZXInKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25MYWJlbF09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVG89XCJib2R5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUtleT1cIklEXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlGaWx0ZXJNZXNzYWdlPVwiQXVjdW4gcsOpc3VsdGF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1wdHlNZXNzYWdlPVwiQXVjdW4gcsOpc3VsdGF0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Jhc2VaSW5kZXhdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2Jhc2VaSW5kZXgnKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2aXJ0dWFsU2Nyb2xsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICd2aXJ0dWFsU2Nyb2xsJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVhZG9ubHldPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmlydHVhbFNjcm9sbEl0ZW1TaXplXT1cIjMwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtc0xhYmVsPVwiezB9IHNlbGVjdGlvbm7DqXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwiZWRpdE11bHRpc2VsZWN0KHJvd0RhdGEsIGNvbCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93VG9nZ2xlQWxsXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dIZWFkZXJdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2ZpbHRlcicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2dyb3VwXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25Hcm91cENoaWxkcmVuJykgIT0gbnVsbCA/IHRydWUgOiBmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25Hcm91cExhYmVsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25Hcm91cExhYmVsJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uR3JvdXBDaGlsZHJlbl09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uR3JvdXBDaGlsZHJlbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdEZWZhdWx0Q29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtZGF0YSBwVGVtcGxhdGU9XCJzZWxlY3RlZEl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkYXRhLCBsZXQgaSA9IGluZGV4XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbltnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKV0gKyAoaSAhPSBkYXRhLmxlbmd0aCAtIDEgPyAnLCcgOiAnJykgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIGxldC1ncm91cCBwVGVtcGxhdGU9XCJncm91cFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+e3tncm91cFtjb2wub3B0aW9ucy5vcHRpb25Hcm91cExhYmVsXX19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3AtbXVsdGlTZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ011bHRpU2VsZWN0JywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwicm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS50b29sdGlwIDogZ2V0TXVsdGlTZWxlY3RDb25jYXQocm93RGF0YVtjb2wuaWRdLnZhbHVlLCBnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvb2x0aXBQb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY2VudGVyJzogY29sLnBvc2l0aW9uID09ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIj57eyBnZXRNdWx0aVNlbGVjdENvbmNhdChyb3dEYXRhW2NvbC5pZF0udmFsdWUsIGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpKSB9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gSW1hZ2UgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdJbWFnZScsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbGVjdGFibGVfY2VsbCcgOiBvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uICYmIG9uU2VsZWN0Q2VsbChyb3dEYXRhW2NvbC5pZF0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF1cIiBzdHlsZT1cInZlcnRpY2FsLWFsaWduOiBtaWRkbGU7IHdpZHRoOiA0MHB4O1wiIHNyYz1cInt7IHJvd0RhdGFbY29sLmlkXS52YWx1ZSB9fVwiIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBCdXR0b24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwiIWNvbC5pbnZpc2libGUgJiYgY2hlY2tUeXBlKCdCdXR0b24nLCBjb2wpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwYWRkaW5nQ2VsbCB0ZXh0LWNlbnRlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlICE9IG51bGwgJiYgaXNWYWx1ZUJ1dHRvbkJ5VHlwZShyb3dEYXRhW2NvbC5pZF0udmFsdWUsICdmdW5jdGlvbicpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ2xhYmVsJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdpY29uJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJyb3dEYXRhW2NvbC5pZF0udmFsdWUoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS50b29sdGlwICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udG9vbHRpcCA6IGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdsYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidwLWJ1dHRvbi0nICsgZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ3NldmVyaXR5JylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cImlzVmFsdWVCdXR0b25CeVR5cGUocm93RGF0YVtjb2wuaWRdLnZhbHVlLCAnc3RyaW5nJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1sZWZ0JzogY29sLnBvc2l0aW9uID09ICdsZWZ0JyB8fCBjb2wucG9zaXRpb24gPT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNlbnRlcic6IGNvbC5wb3NpdGlvbiA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1ib2xkJzogcm93RGF0YS5ib2xkID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLmJvbGQgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS50b29sdGlwICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udG9vbHRpcCA6IHJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Rvb2x0aXBEaXNhYmxlZF09XCIhY29sLnRvb2x0aXBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sLmlkXS52YWx1ZSB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFNlbGVjdEJ1dHRvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ1NlbGVjdEJ1dHRvbicsIGNvbCkgJiYgaXNNb2RlRWRpdGlvbigpICYmICFyb3dEYXRhLnJlYWRvbmx5ICYmICFyb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwieyAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCwgJ2JhY2tncm91bmQtY29sb3InOiByb3dEYXRhW2NvbC5pZF0uY29sb3IgPyByb3dEYXRhW2NvbC5pZF0uY29sb3IgOiBudWxsIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLXNlbGVjdEJ1dHRvbiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXSAhPSBudWxsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25zXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25zJylcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29wdGlvbkxhYmVsXT1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdvcHRpb25MYWJlbCcpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvcHRpb25WYWx1ZV09XCJnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uVmFsdWUnKSAhPSBudWxsID8gZ2V0T3B0aW9uKGNvbCwgcm93RGF0YSwgJ29wdGlvblZhbHVlJykgOiAndmFsdWUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25DaGFuZ2UpPVwib25FZGl0Q2VsbChyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmlkXS52YWx1ZSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBsZXQtaXRlbSBwVGVtcGxhdGU9XCJpdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWNlbnRlciB3LWZ1bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWl0YWxpYyc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmxhYmVsIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLXNlbGVjdEJ1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG4gICAgICAgICAgICAgICAgICAgIDx0ZCAqbmdJZj1cIiFjb2wuaW52aXNpYmxlICYmIGNoZWNrVHlwZSgnU2VsZWN0QnV0dG9uJywgY29sKSAmJiAocm93RGF0YS5yZWFkb25seSB8fCByb3dEYXRhW2NvbC5pZF0/LnJlYWRvbmx5IHx8ICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29sb3InIDogcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA/IHJvd0RhdGFbY29sLmlkXS50ZXh0Q29sb3IgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWJvbGQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiPnt7IGdldFNlbGVjdExpYmVsbGVCeVZhbHVlKHJvd0RhdGEsIGNvbCkgfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L3RkPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tIFN3aXRjaCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ1N3aXRjaCcsIGNvbClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7ICd3aWR0aCcgOiBjb2wud2lkdGggPyBjb2wud2lkdGggOiBudWxsLCAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS5jb2xvciA/IHJvd0RhdGFbY29sLmlkXS5jb2xvciA6IG51bGwgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGV4dC1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cInt7IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLmlkIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFkZGluZ0NlbGwnOiByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBGcm96ZW5Db2x1bW5cclxuICAgICAgICAgICAgICAgICAgICAgICAgW2Zyb3plbl09XCJjb2wuZnJvemVuXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwLWNvbHVtbi10aXRsZVwiPnt7IGNvbC5saWJlbGxlIH19IDogPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxwLWlucHV0U3dpdGNoICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdICE9IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgKGdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdhY3Rpb24nKSA9PSBudWxsICYmICFpc01vZGVFZGl0aW9uKCkpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uQ2hhbmdlKT1cIm9uRWRpdENlbGwocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5pZF0udmFsdWUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmdEZWZhdWx0Q29udHJvbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9wLWlucHV0U3dpdGNoPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvdGQ+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gRmlsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ0ZpbGUnLCBjb2wpICYmIGlzTW9kZUVkaXRpb24oKSAmJiAhcm93RGF0YS5yZWFkb25seSAmJiAhcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBwRnJvemVuQ29sdW1uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmcm96ZW5dPVwiY29sLmZyb3plblwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1jb2x1bW4tdGl0bGVcIj57eyBjb2wubGliZWxsZSB9fSA6IDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicC1pbnB1dGdyb3VwXCIgKm5nSWY9XCJyb3dEYXRhW2NvbC5pZF0gIT0gbnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwUmlwcGxlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb249XCJwaSBwaS11cGxvYWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xpY2tCeUlkKCdpbnB1dF8nICsgcm93RGF0YVtjb2wuaWRdLmlkKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaWQ9XCJ7eydvdXRwdXRfJyArIHJvd0RhdGFbY29sLmlkXS5pZH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWxlZnQnOiBjb2wucG9zaXRpb24gPT0gJ2xlZnQnIHx8IGNvbC5wb3NpdGlvbiA9PSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtcmlnaHQnOiBjb2wucG9zaXRpb24gPT0gJ3JpZ2h0JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0LWNlbnRlcic6IGNvbC5wb3NpdGlvbiA9PSAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LWJvbGQnOiByb3dEYXRhLmJvbGQgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uYm9sZCA9PSB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtaXRhbGljJzogcm93RGF0YS5pdGFsaWMgPT0gdHJ1ZSB8fCByb3dEYXRhW2NvbC5pZF0uaXRhbGljID09IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT1cInt7IHJvd0RhdGFbY29sLmlkXS52YWx1ZSAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnZhbHVlIDogJycgfX1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRvbmx5XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cInJvd0RhdGFbY29sLmlkXS50b29sdGlwICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0udG9vbHRpcCA6IHJvd0RhdGFbY29sLmlkXS52YWx1ZSA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZSA6ICcnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdG9vbHRpcERpc2FibGVkXT1cIiFjb2wudG9vbHRpcFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImdldE9wdGlvbihjb2wsIHJvd0RhdGEsICdkb3dubG9hZFBhdGgnKSAmJiByb3dEYXRhW2NvbC5pZF0udmFsdWUgIT0gbnVsbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwQnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBSaXBwbGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbj1cInBpIHBpLWRvd25sb2FkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRvd25sb2FkRmlsZShyb3dEYXRhW2NvbC5pZF0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd0RhdGEucmVhZG9ubHkgfHwgcm93RGF0YVtjb2wuaWRdPy5yZWFkb25seSB8fCAhaXNNb2RlRWRpdGlvbigpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiIGlkPVwie3snaW5wdXRfJyArIHJvd0RhdGFbY29sLmlkXS5pZH19XCIgI2lucHV0RmlsZSBwSW5wdXRUZXh0IHR5cGU9XCJmaWxlXCIgaGlkZGVuIChjaGFuZ2UpPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlID0gaW5wdXRGaWxlLmZpbGVzWzBdLm5hbWU7IG9uRWRpdENlbGwocm93RGF0YSwgY29sLCBpbnB1dEZpbGUuZmlsZXNbMF0pXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ0ZpbGUnLCBjb2wpICYmIChyb3dEYXRhLnJlYWRvbmx5IHx8IHJvd0RhdGFbY29sLmlkXT8ucmVhZG9ubHkgfHwgIWlzTW9kZUVkaXRpb24oKSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2lkdGgnIDogY29sLndpZHRoID8gY29sLndpZHRoIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcicgOiByb3dEYXRhW2NvbC5pZF0udGV4dENvbG9yID8gcm93RGF0YVtjb2wuaWRdLnRleHRDb2xvciA6IG51bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcHRpb25zLnNlbGVjdGFibGUgJiYgaXNNb2RlQ2VsbFNlbGVjdGlvbigpICYmICFyb3dEYXRhW2NvbC5pZF0uZGlzYWJsZVNlbGVjdGlvbiAmJiBvblNlbGVjdENlbGwocm93RGF0YVtjb2wuaWRdKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwie3sgcm93RGF0YVtjb2wuaWRdICE9IG51bGwgPyByb3dEYXRhW2NvbC5pZF0uaWQgOiAnJyB9fVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJyb3dEYXRhW2NvbC5pZF0udG9vbHRpcCAhPSBudWxsID8gcm93RGF0YVtjb2wuaWRdLnRvb2x0aXAgOiByb3dEYXRhW2NvbC5pZF0udmFsdWUgPyByb3dEYXRhW2NvbC5pZF0udmFsdWUgOiAnJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYWRkaW5nQ2VsbCc6IHJvd0RhdGFbY29sLmlkXSAhPSBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtbGVmdCc6IGNvbC5wb3NpdGlvbiA9PSAnbGVmdCcgfHwgY29sLnBvc2l0aW9uID09IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC1yaWdodCc6IGNvbC5wb3NpdGlvbiA9PSAncmlnaHQnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQtY2VudGVyJzogY29sLnBvc2l0aW9uID09ICdjZW50ZXInLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZvbnQtYm9sZCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1pdGFsaWMnOiByb3dEYXRhLml0YWxpYyA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5pdGFsaWMgPT0gdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZWxlY3RhYmxlX2NlbGwnIDogb3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0b29sdGlwRGlzYWJsZWRdPVwiIWNvbC50b29sdGlwXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHRpcFBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInJvd0RhdGFbY29sLmlkXVwiPnt7IHJvd0RhdGFbY29sLmlkXS52YWx1ZSA/IHJvd0RhdGFbY29sLmlkXS52YWx1ZSA6ICcnIH19PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSBTdGF0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8dGQgKm5nSWY9XCIhY29sLmludmlzaWJsZSAmJiBjaGVja1R5cGUoJ1N0YXRlJywgY29sKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cInsgJ3dpZHRoJyA6IGNvbC53aWR0aCA/IGNvbC53aWR0aCA6IG51bGwsICdiYWNrZ3JvdW5kLWNvbG9yJzogcm93RGF0YVtjb2wuaWRdLmNvbG9yID8gcm93RGF0YVtjb2wuaWRdLmNvbG9yIDogbnVsbCB9XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJ7eyByb3dEYXRhW2NvbC5pZF0gIT0gbnVsbCA/IHJvd0RhdGFbY29sLmlkXS5pZCA6ICcnIH19XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhZGRpbmdDZWxsJzogcm93RGF0YVtjb2wuaWRdICE9IG51bGwsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2VsZWN0YWJsZV9jZWxsJyA6IG9wdGlvbnMuc2VsZWN0YWJsZSAmJiBpc01vZGVDZWxsU2VsZWN0aW9uKCkgJiYgIXJvd0RhdGFbY29sLmlkXS5kaXNhYmxlU2VsZWN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3B0aW9ucy5zZWxlY3RhYmxlICYmIGlzTW9kZUNlbGxTZWxlY3Rpb24oKSAmJiAhcm93RGF0YVtjb2wuaWRdLmRpc2FibGVTZWxlY3Rpb24gJiYgb25TZWxlY3RDZWxsKHJvd0RhdGFbY29sLmlkXSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInRleHQtY2VudGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgcEZyb3plbkNvbHVtblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBbZnJvemVuXT1cImNvbC5mcm96ZW5cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInAtY29sdW1uLXRpdGxlXCI+e3sgY29sLmxpYmVsbGUgfX0gOiA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPHAtdGFnICpuZ0lmPVwicm93RGF0YVtjb2wuaWRdLnZhbHVlICE9IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZVtnZXRPcHRpb24oY29sLCByb3dEYXRhLCAnb3B0aW9uTGFiZWwnKV1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NldmVyaXR5XT1cInJvd0RhdGFbY29sLmlkXS52YWx1ZS5zZXZlcml0eVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWNvbl09XCJyb3dEYXRhW2NvbC5pZF0udmFsdWUuaWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmFja2dyb3VuZC1jb2xvcic6IHJvd0RhdGFbY29sLmlkXS52YWx1ZS5iYWNrZ3JvdW5kQ29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb2xvcic6IHJvd0RhdGFbY29sLmlkXS52YWx1ZS50ZXh0Q29sb3IsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmb250LXdlaWdodCc6IHJvd0RhdGEuYm9sZCA9PSB0cnVlIHx8IHJvd0RhdGFbY29sLmlkXS5ib2xkID09IHRydWUgPyAnYm9sZCcgOiBudWxsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9udC1zdHlsZSc6IHJvd0RhdGEuaXRhbGljID09IHRydWUgfHwgcm93RGF0YVtjb2wuaWRdLml0YWxpYyA9PSB0cnVlID8gJ2l0YWxpYycgOiBudWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvcC10YWc+XHJcbiAgICAgICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICA8IS0tIERlbGV0aW9uIC0tPlxyXG4gICAgICAgICAgICAgICAgPHRkICpuZ0lmPVwib3B0aW9ucy5yb3dzRGVsZXRhYmxlXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNlbGxEZWxldGVcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInJvd0RhdGEuZGVsZXRhYmxlID8gJ3BhZGRpbmdDZWxsJyA6IG51bGxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uICpuZ0lmPVwicm93RGF0YS5kZWxldGFibGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uPVwicGkgcGktdGltZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwLWJ1dHRvbi1kYW5nZXIgYnV0dG9uRGVsZXRlIHAtYnV0dG9uLXRleHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInJvd0RhdGEucmVhZG9ubHlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uRGVsZXRlTGluZShyb3dEYXRhKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC90ZD5cclxuXHJcbiAgICAgICAgICAgIDwvdHI+XHJcbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwvcC10YWJsZT5cclxuPC9kaXY+XHJcbiJdfQ==
|