ctt-babylon 0.22.114 → 0.22.116

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.
@@ -224,7 +224,7 @@ export class BabylonHeMeSvgTextCtaMotComponent {
224
224
  event.subscribe(() => {
225
225
  dialogRef.close();
226
226
  });
227
- dialogRef.componentInstance.locale = this.locale;
227
+ dialogRef.componentInstance.locale = this.locale?.selected?.code;
228
228
  dialogRef.componentInstance.widgetConfig = this.widgetConfig;
229
229
  dialogRef.componentInstance.ticker = this.ticker;
230
230
  dialogRef.componentInstance.globalInfo = this.globalInfo;
@@ -324,4 +324,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
324
324
  type: HostListener,
325
325
  args: ['window:resize']
326
326
  }] } });
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1oZS1tZS1zdmctdGV4dC1jdGEtbW90LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1oZS1tZS1zdmctdGV4dC1jdGEtbW90L2JhYnlsb24taGUtbWUtc3ZnLXRleHQtY3RhLW1vdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24taGUtbWUtc3ZnLXRleHQtY3RhLW1vdC9iYWJ5bG9uLWhlLW1lLXN2Zy10ZXh0LWN0YS1tb3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBUTdGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDOzs7OztBQVNwSCxNQUFNLE9BQU8saUNBQWlDO0lBbUQxQyxJQUFhLFlBQVksQ0FBQyxLQUEwQjtRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssSUFBSSxLQUFLLENB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QVc7OERBM0V2QixVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJekMsU0FBUztzQkFEUixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXhDLGVBQWU7c0JBRGQsU0FBUzt1QkFBQyxpQkFBaUI7Z0JBR25CLElBQUk7c0JBQVosS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsZUFBZTtzQkFBdkIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNHLGtCQUFrQjtzQkFBMUIsS0FBSztnQkF1QkcsVUFBVTtzQkFBbEIsS0FBSztnQkFNTyxZQUFZO3NCQUF4QixLQUFLO2dCQWFJLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQTBDUCxjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZTtnQkFrSjdCLFVBQVU7c0JBRFQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFrQzFDLFFBQVE7c0JBRFAsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlLCBET0NVTUVOVCwgaXNQbGF0Zm9ybUJyb3dzZXIgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBhZnRlck5leHRSZW5kZXIsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFBMQVRGT1JNX0lELFxuICAgIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblN0YXJ0LCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgZmlsdGVyLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IEJhYnlsb25MaW5rVHlwZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uLy4uL2RpcmVjdGl2ZXMvbGluay10eXBlL2xpbmstdHlwZS5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgTG9nb1R5cGUgfSBmcm9tICcuLi8uLi8uLi9FbnVtJztcbmltcG9ydCB7XG4gICAgQmFieWxvbkJ1dHRvbkksXG4gICAgQmFieWxvbkZsb2F0aW5nQnV0dG9uc0ksXG4gICAgQmFieWxvbkdsb2JhbCxcbiAgICBCYWJ5bG9uSW1hZ2VJLFxufSBmcm9tICcuLi8uLi8uLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IEJhYnlsb25FbmdpbmVXaWRnZXRNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2JhYnlsb24tZW5naW5lLXdpZGdldC1tb2RhbCc7XG5pbXBvcnQgeyBCYWJ5bG9uTW9kQzJJbWdUeHRDdGFDb21wb25lbnQgfSBmcm9tICcuLi9iYWJ5bG9uLW1vZC1jMi1pbWctdHh0LWN0YS9iYWJ5bG9uLW1vZC1jMi1pbWctdHh0LWN0YS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2xpYi1iYWJ5bG9uLWhlLW1lLXN2Zy10ZXh0LWN0YS1tb3QnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vYmFieWxvbi1oZS1tZS1zdmctdGV4dC1jdGEtbW90LmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybDogJy4vYmFieWxvbi1oZS1tZS1zdmctdGV4dC1jdGEtbW90LmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQmFieWxvbkhlTWVTdmdUZXh0Q3RhTW90Q29tcG9uZW50IHtcbiAgICBAVmlld0NoaWxkKCdtYWluSGVhZGVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBtYWluSGVhZGVyITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdtb2RhbE1lbnUnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIG1vZGFsTWVudSE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgQFZpZXdDaGlsZCgnc2Nyb2xsQ29udGFpbmVyJylcbiAgICBzY3JvbGxDb250YWluZXIhOiBFbGVtZW50UmVmPEhUTUxVTGlzdEVsZW1lbnQ+O1xuXG4gICAgQElucHV0KCkgbWVudT86IEJhYnlsb25CdXR0b25JW107XG4gICAgQElucHV0KCkgbG9nb3M/OiBSZWNvcmQ8TG9nb1R5cGUsIEJhYnlsb25JbWFnZUkgfCB1bmRlZmluZWQ+O1xuXG4gICAgQElucHV0KCkgZmxvYXRpbmdCdXR0b25zPzogQmFieWxvbkZsb2F0aW5nQnV0dG9uc0k7XG4gICAgQElucHV0KCkgbGlua3M/OiBCYWJ5bG9uQnV0dG9uSVtdO1xuICAgIEBJbnB1dCgpIGxvY2FsZT86IGFueTtcbiAgICBASW5wdXQoKSB0aWNrZXI/OiBzdHJpbmc7XG4gICAgQElucHV0KCkgd2lkZ2V0Q29uZmlnPzogYW55O1xuICAgIEBJbnB1dCgpIGJ0bkJvb2tMYWJlbD86IHN0cmluZztcbiAgICBASW5wdXQoKSBoZWFkZXJEYXRhPzogYW55O1xuICAgIEBJbnB1dCgpIG1lbnVPdXRPbkRlc2t0b3A6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSB1c2VGbGFnc1NlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgYXZhaWxhYmxlTGFuZ3VhZ2VzOiB7XG4gICAgICAgIGNvZGU6IHN0cmluZztcbiAgICAgICAgbGFiZWw6IHN0cmluZztcbiAgICAgICAgZmxhZ1VybDogc3RyaW5nO1xuICAgIH1bXSA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2VzJyxcbiAgICAgICAgICAgIGxhYmVsOiAnRXNwYcOxb2wnLFxuICAgICAgICAgICAgZmxhZ1VybDogJ2h0dHBzOi8vZmxhZ2Nkbi5jb20vdzQwL2VzLnBuZycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdlbicsXG4gICAgICAgICAgICBsYWJlbDogJ0VuZ2xpc2gnLFxuICAgICAgICAgICAgZmxhZ1VybDogJ2h0dHBzOi8vZmxhZ2Nkbi5jb20vdzQwL2diLnBuZycsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGNvZGU6ICdkZScsXG4gICAgICAgICAgICBsYWJlbDogJ0RldXRzY2gnLFxuICAgICAgICAgICAgZmxhZ1VybDogJ2h0dHBzOi8vZmxhZ2Nkbi5jb20vdzQwL2RlLnBuZycsXG4gICAgICAgIH0sXG4gICAgXTtcbiAgICBpc0xhbmdEcm9wZG93bk9wZW4gPSBmYWxzZTtcblxuICAgIEBJbnB1dCgpIGdsb2JhbEluZm8/OiBCYWJ5bG9uR2xvYmFsO1xuXG4gICAgcHJpdmF0ZSBhY3RpdmVNb2RhbE5hbWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIHByaXZhdGUgcm91dGVyU3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG5cbiAgICBwcml2YXRlIF9kaW5hbXlIZWFkZXI6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBzZXQgZGluYW15SGVhZGVyKHZhbHVlOiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuX2RpbmFteUhlYWRlciA9IHZhbHVlID8/IGZhbHNlO1xuXG4gICAgICAgIGlmICghdGhpcy5fZGluYW15SGVhZGVyKSB7XG4gICAgICAgICAgICB0aGlzLmFwcGx5U3RpY2t5KHRydWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5vbldpbmRvd1Njcm9sbCgpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCBkaW5hbXlIZWFkZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaW5hbXlIZWFkZXI7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIG9wZW5FbmdpbmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9wZW5MYW5ndWFnZXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9wZW5OZXdzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBvcGVuU2VsZWN0b3JNb2RhbCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBsYW5ndWFnZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gICAgdGh1bWJQb3NpdGlvbiA9IDA7XG4gICAgdGh1bWJIZWlnaHQgPSAyMDtcbiAgICBzaG93U2Nyb2xsYmFyID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBkaWFsb2c6IE1hdERpYWxvZyxcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIEBJbmplY3QoUExBVEZPUk1fSUQpIHByaXZhdGUgcGxhdGZvcm1JZDogT2JqZWN0LFxuICAgICAgICBwcml2YXRlIHJvdXRlcjogUm91dGVyXG4gICAgKSB7XG4gICAgICAgIHRoaXMucm91dGVyU3Vic2NyaXB0aW9uID0gdGhpcy5yb3V0ZXIuZXZlbnRzXG4gICAgICAgICAgICAucGlwZShmaWx0ZXIoKGV2ZW50KSA9PiBldmVudCBpbnN0YW5jZW9mIE5hdmlnYXRpb25TdGFydCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcmNlQ2xvc2VBbGxNb2RhbHMoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgIGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNhbGN1bGF0ZVNjcm9sbERpbWVuc2lvbnMoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcHBseVN0aWNreShpc1N0aWNreTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5kb2N1bWVudC5ib2R5O1xuICAgICAgICBjb25zdCBoZWFkZXIgPSB0aGlzLm1haW5IZWFkZXI/Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICAgICAgaWYgKGlzU3RpY2t5KSB7XG4gICAgICAgICAgICBib2R5LmNsYXNzTGlzdC5hZGQoJ2hlYWRlcl9fc3RpY2t5JywgJ2hlYWRlcl9zdGlja3knKTtcbiAgICAgICAgICAgIGhlYWRlcj8uY2xhc3NMaXN0LmFkZCgnaGVhZGVyX19zdGlja3knKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnaGVhZGVyX19zdGlja3knLCAnaGVhZGVyX3N0aWNreScpO1xuICAgICAgICAgICAgaGVhZGVyPy5jbGFzc0xpc3QucmVtb3ZlKCdoZWFkZXJfX3N0aWNreScpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaXNCcm93c2VyKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNQbGF0Zm9ybUJyb3dzZXIodGhpcy5wbGF0Zm9ybUlkKTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT0gU1RJQ0tZIEhFQURFUiA9PT09PT1cbiAgICBASG9zdExpc3RlbmVyKCd3aW5kb3c6c2Nyb2xsJylcbiAgICBvbldpbmRvd1Njcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3NlcikgcmV0dXJuO1xuXG4gICAgICAgIGlmICghdGhpcy5kaW5hbXlIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlTdGlja3kodHJ1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aW5Qb3MgPVxuICAgICAgICAgICAgdGhpcy5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIHx8XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wIHx8XG4gICAgICAgICAgICAwO1xuICAgICAgICB0aGlzLmFwcGx5U3RpY2t5KHdpblBvcyA+PSAxKTtcbiAgICB9XG5cbiAgICAvLyA9PT09PT0gTU9EQUxFUyA9PT09PT1cbiAgICBvcGVuTW9kYWwobW9kYWxOYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3NlcikgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmRvY3VtZW50LmJvZHk7XG4gICAgICAgIGNvbnN0IG1vZGFsTWVudSA9IHRoaXMubW9kYWxNZW51Py5uYXRpdmVFbGVtZW50O1xuICAgICAgICBib2R5LmNsYXNzTGlzdC5hZGQobW9kYWxOYW1lLCAnbW9kYWwtLW9wZW4nKTtcbiAgICAgICAgbW9kYWxNZW51LmNsYXNzTGlzdC5hZGQoJ21vZGFsLS1vcGVuJyk7XG4gICAgfVxuXG4gICAgY2xvc2VNb2RhbChtb2RhbE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuZG9jdW1lbnQuYm9keTtcbiAgICAgICAgY29uc3QgbW9kYWxNZW51ID0gdGhpcy5tb2RhbE1lbnU/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGJvZHkuY2xhc3NMaXN0LnJlbW92ZShtb2RhbE5hbWUsICdtb2RhbC0tb3BlbicpO1xuICAgICAgICBtb2RhbE1lbnUuY2xhc3NMaXN0LnJlbW92ZSgnbW9kYWwtLW9wZW4nKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcmNlQ2xvc2VBbGxNb2RhbHMoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHJldHVybjtcblxuICAgICAgICBpZiAodGhpcy5hY3RpdmVNb2RhbE5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMuY2xvc2VNb2RhbCh0aGlzLmFjdGl2ZU1vZGFsTmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgnbW9kYWwtLW9wZW4nKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm1vZGFsTWVudT8ubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHRoaXMubW9kYWxNZW51Lm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgnbW9kYWwtLW9wZW4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZGlhbG9nLmNsb3NlQWxsKCk7XG4gICAgfVxuXG4gICAgLy8gU2kgcXVpZXJlcyB1bmEgdmVyc2nDs24gZ2Vuw6lyaWNhIHVzYW5kbyBkYXRhLW1vZGFsX25hbWU6XG4gICAgaGFuZGxlT3BlbkZyb21FdmVudChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3NlcikgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQgYXMgSFRNTEVsZW1lbnQgfCBudWxsO1xuICAgICAgICBjb25zdCBtb2RhbE5hbWUgPSB0YXJnZXQ/LmRhdGFzZXRbJ21vZGFsX25hbWUnXTtcbiAgICAgICAgaWYgKCFtb2RhbE5hbWUpIHJldHVybjtcblxuICAgICAgICB0aGlzLm9wZW5Nb2RhbChtb2RhbE5hbWUpO1xuICAgIH1cblxuICAgIGhhbmRsZUNsb3NlRnJvbUV2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICAgIGNvbnN0IG1vZGFsTmFtZSA9IHRhcmdldD8uZGF0YXNldFsnbW9kYWxfbmFtZSddO1xuICAgICAgICBpZiAoIW1vZGFsTmFtZSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMuY2xvc2VNb2RhbChtb2RhbE5hbWUpO1xuICAgIH1cbiAgICBvcGVuRGlzY292ZXJNb2RhbCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgZGlhbG9nUmVmID0gdGhpcy5kaWFsb2cub3BlbihCYWJ5bG9uTW9kQzJJbWdUeHRDdGFDb21wb25lbnQsIHtcbiAgICAgICAgICAgIHdpZHRoOiAnMTAwdncnLFxuICAgICAgICAgICAgaGVpZ2h0OiAnMTAwdmgnLFxuICAgICAgICAgICAgbWF4V2lkdGg6ICcxMDB2dycsXG4gICAgICAgICAgICBwYW5lbENsYXNzOiBbJ2Z1bGwtc2NyZWVuJywgJ21vZGFsLWJnLWJhZ2UnXSxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBvcGVuTGFuZ3VhZ2VzTW9kYWwoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3Blbkxhbmd1YWdlcy5lbWl0KCk7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRMb2NhbGVDb2RlKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICghdGhpcy5sb2NhbGUpIHJldHVybiAnZXMnO1xuXG4gICAgICAgIGlmICh0aGlzLmxvY2FsZS5zZWxlY3RlZD8uY29kZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMubG9jYWxlLnNlbGVjdGVkLmNvZGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubG9jYWxlID09PSAnc3RyaW5nJykgcmV0dXJuIHRoaXMubG9jYWxlO1xuICAgICAgICBpZiAodGhpcy5sb2NhbGUuY29kZSkgcmV0dXJuIHRoaXMubG9jYWxlLmNvZGU7XG4gICAgICAgIGlmICh0aGlzLmxvY2FsZS5pc28pIHJldHVybiB0aGlzLmxvY2FsZS5pc287XG5cbiAgICAgICAgcmV0dXJuICdlcyc7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRGbGFnVXJsKGNvZGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIGlmICghY29kZSkgcmV0dXJuICdodHRwczovL2ZsYWdjZG4uY29tL3c0MC9lcy5wbmcnO1xuICAgICAgICBjb25zdCBub3JtYWxpemVkQ29kZSA9IGNvZGUudG9Mb3dlckNhc2UoKTtcblxuICAgICAgICBjb25zdCBmbGFnTWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICAgZW46ICdnYicsXG4gICAgICAgICAgICBqYTogJ2pwJyxcbiAgICAgICAgICAgIHpoOiAnY24nLFxuICAgICAgICAgICAgY2E6ICdlcy1jdCcsXG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY291bnRyeUNvZGUgPSBmbGFnTWFwW25vcm1hbGl6ZWRDb2RlXSB8fCBub3JtYWxpemVkQ29kZTtcbiAgICAgICAgcmV0dXJuIGBodHRwczovL2ZsYWdjZG4uY29tL3c0MC8ke2NvdW50cnlDb2RlfS5wbmdgO1xuICAgIH1cblxuICAgIGdldCBwYXJzZWRMYW5ndWFnZXMoKTogeyBjb2RlOiBzdHJpbmc7IGxhYmVsOiBzdHJpbmc7IGZsYWdVcmw6IHN0cmluZyB9W10ge1xuICAgICAgICBpZiAodGhpcy5sb2NhbGUgJiYgQXJyYXkuaXNBcnJheSh0aGlzLmxvY2FsZS5pdGVtcykpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkSXRlbXMgPSB0aGlzLmxvY2FsZS5pdGVtcy5maWx0ZXIoXG4gICAgICAgICAgICAgICAgKGl0ZW06IGFueSkgPT4gaXRlbSAmJiB0eXBlb2YgaXRlbS5jb2RlID09PSAnc3RyaW5nJ1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgaWYgKHZhbGlkSXRlbXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWxpZEl0ZW1zLm1hcCgoaXRlbTogYW55KSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBjb2RlOiBpdGVtLmNvZGUsXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBpdGVtLm5hbWUgfHwgaXRlbS5jb2RlLnRvVXBwZXJDYXNlKCksXG4gICAgICAgICAgICAgICAgICAgIGZsYWdVcmw6IHRoaXMuZ2V0RmxhZ1VybChpdGVtLmNvZGUpLFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5hdmFpbGFibGVMYW5ndWFnZXM7XG4gICAgfVxuXG4gICAgZ2V0IGN1cnJlbnRGbGFnKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEZsYWdVcmwodGhpcy5jdXJyZW50TG9jYWxlQ29kZSk7XG4gICAgfVxuXG4gICAgdG9nZ2xlTGFuZ0Ryb3Bkb3duKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5pc0xhbmdEcm9wZG93bk9wZW4gPSAhdGhpcy5pc0xhbmdEcm9wZG93bk9wZW47XG4gICAgfVxuXG4gICAgc2VsZWN0TGFuZ3VhZ2UobGFuZzogYW55LCBldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMubGFuZ3VhZ2VDaGFuZ2UuZW1pdChsYW5nKTtcbiAgICAgICAgdGhpcy5pc0xhbmdEcm9wZG93bk9wZW4gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50J10pXG4gICAgb25DbGlja091dChldmVudDogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNMYW5nRHJvcGRvd25PcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmlzTGFuZ0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb3BlbkVuZ2luZU1vZGFsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEJhYnlsb25FbmdpbmVXaWRnZXRNb2RhbENvbXBvbmVudCwge1xuICAgICAgICAgICAgd2lkdGg6ICcxMDB2dycsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDB2aCcsXG4gICAgICAgICAgICBtYXhXaWR0aDogJzEwMHZ3JyxcbiAgICAgICAgICAgIGhhc0JhY2tkcm9wOiB0cnVlLFxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBldmVudCA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAgICAgICBldmVudC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgZGlhbG9nUmVmLmNsb3NlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5sb2NhbGUgPSB0aGlzLmxvY2FsZTtcbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLndpZGdldENvbmZpZyA9IHRoaXMud2lkZ2V0Q29uZmlnO1xuICAgICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UudGlja2VyID0gdGhpcy50aWNrZXI7XG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5nbG9iYWxJbmZvID0gdGhpcy5nbG9iYWxJbmZvO1xuICAgICAgICAvKiAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5zdHlsZXMgPSB0aGlzLnN0eWxlcztcbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsb3NlID0gZXZlbjsgKi9cbiAgICB9XG5cbiAgICBvcGVuTmV3c2xldHRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuTmV3cy5lbWl0KCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgb25SZXNpemUoKSB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlU2Nyb2xsRGltZW5zaW9ucygpO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZVNjcm9sbERpbWVuc2lvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5zY3JvbGxDb250YWluZXIpIHJldHVybjtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbGFibGVSYXRpbyA9IGVsLmNsaWVudEhlaWdodCAvIGVsLnNjcm9sbEhlaWdodDtcblxuICAgICAgICAgICAgdGhpcy5zaG93U2Nyb2xsYmFyID0gc2Nyb2xsYWJsZVJhdGlvIDwgMTtcbiAgICAgICAgICAgIHRoaXMudGh1bWJIZWlnaHQgPSBNYXRoLm1heChzY3JvbGxhYmxlUmF0aW8gKiAxMDAsIDEwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBtYXhTY3JvbGxUb3AgPSBlbC5zY3JvbGxIZWlnaHQgLSBlbC5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgaWYgKG1heFNjcm9sbFRvcCA8PSAwKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc2Nyb2xsUmF0aW8gPSBlbC5zY3JvbGxUb3AgLyBtYXhTY3JvbGxUb3A7XG4gICAgICAgIHRoaXMudGh1bWJQb3NpdGlvbiA9IHNjcm9sbFJhdGlvICogKDEwMCAtIHRoaXMudGh1bWJIZWlnaHQpO1xuICAgIH1cbn1cbiIsIjxoZWFkZXJcbiAgICAjbWFpbkhlYWRlclxuICAgIGNsYXNzPVwiTWVTdmdUeHRDdGFNb3RcIlxuICAgIFtjbGFzcy5oaWRlLWRlc2t0b3AtbWVudV09XCIhbWVudU91dE9uRGVza3RvcFwiXG4+XG4gICAgPGRpdiBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19sb2dvXCI+XG4gICAgICAgIDxhIGhyZWY9XCJcIiBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19sb2dvLS1pbWdcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cImxvZ29zPy5sb2dvRGVza3RvcD8uc3JjXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJMb2dvIERlc2t0b3BcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxhIGhyZWY9XCJcIiBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19sb2dvLS1zdGlja3lcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cImxvZ29zPy5sb2dvPy5zcmNcIlxuICAgICAgICAgICAgICAgIGFsdD1cIkxvZ28gU3RpY2t5XCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJNZVN2Z1R4dEN0YU1vdF9fbmF2XCI+XG4gICAgICAgIEBpZiAobWVudSkge1xuICAgICAgICAgICAgPHVsIGNsYXNzPVwiTWVTdmdUeHRDdGFNb3RfX25hdi1saW5rc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbWVudTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiaXRlbS51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJpdGVtLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RhbENsaWNrXT1cIm9wZW5TZWxlY3Rvck1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj48L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPCEtLSAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJqcy1hY3RpdmUtbW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwiZGlzY292ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5EaXNjb3Zlck1vZGFsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjxzcGFuPkRlc2N1YnJlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9saT4gLS0+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICB9XG4gICAgICAgIDx1bCBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19uYXYtaWNvbnNcIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiTWVTdmdUeHRDdGFNb3RfX25hdi1pY29ucy0tbWVudSBqcy1hY3RpdmUtbW9kYWxcIlxuICAgICAgICAgICAgICAgIGRhdGEtbW9kYWxfbmFtZT1cIm1lbnVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcGVuRnJvbUV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvbWVudS1pY29uLnN2ZyNtZW51LWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwib3Blbk5ld3NsZXR0ZXIoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nQnV0dG9ucz8udGV4dHNCdXR0b25zPy5uZXdzbGV0dGVyXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvbWFpbC1pY29uLnN2ZyNtYWlsLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgQGlmICghdXNlRmxhZ3NTZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgIDxsaSByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5MYW5ndWFnZXNNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdCdXR0b25zPy50ZXh0c0J1dHRvbnM/Lmxhbmd1YWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9nbG9iZS1pY29uLnN2ZyNnbG9iZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYW5nLXNlbGVjdG9yLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYW5nLXNlbGVjdG9yLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTGFuZ0Ryb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGN1cnJlbnRGbGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImN1cnJlbnRGbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGFuZy1mbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpc0xhbmdEcm9wZG93bk9wZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxhbmctZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZyBvZiBsb2NhbGU/Lml0ZW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBsYW5nLmNvZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RMYW5ndWFnZShsYW5nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlPy5zZWxlY3RlZD8uY29kZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZy5jb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF2YWlsYWJsZUxhbmd1YWdlc1tpXS5mbGFnVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJmbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxhbmctZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgbGFuZy5sYWJlbCA/PyBsYW5nLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhlYWRlckRhdGE/LmxpbmtzPy5bMV07IGFzIGJ0bikge1xuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19uYXYtaWNvbnMtLWFnZW5jaWVzIGFnZW5jaWFcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJ0bi51cmxcIiBbbGlua1R5cGVdPVwiYnRuLmxpbmtUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvYXNzZXRzL2JhYnlsb24vc3ZnL2FnZW5jaWVzLWljb24uc3ZnI2FnZW5jaWVzLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGhlYWRlckRhdGE/LmxpbmtzPy5bMl07IGFzIGJ0bikge1xuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19uYXYtaWNvbnMtLWNhbGxcIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJ0bi51cmxcIiBbbGlua1R5cGVdPVwiYnRuLmxpbmtUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvYXNzZXRzL2JhYnlsb24vc3ZnL2NhbGwtaWNvbi5zdmcjY2FsbC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiTWVTdmdUeHRDdGFNb3RfX2J0blwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuRW5naW5lTW9kYWwoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyBoZWFkZXJEYXRhPy5idG5Cb29rPy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIEBpZiAoaGVhZGVyRGF0YT8ubGlua3M/LlsxXTsgYXMgYnRuKSB7XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFtocmVmXT1cImJ0bi51cmxcIlxuICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJidG4ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rIGFnZW5jaWFcIlxuICAgICAgICAgICAgICAgID48c3Bhbj57eyBidG4/LmxhYmVsIH19PC9zcGFuPjwvYVxuICAgICAgICAgICAgPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19idG4tLW1vYmlsZVwiPlxuICAgICAgICA8YVxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19idG4tLW1vYmlsZS1saW5rcyBqcy1hY3RpdmUtbW9kYWxcIlxuICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwibWVudVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlT3BlbkZyb21FdmVudCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChmbG9hdGluZ0J1dHRvbnM/LnRleHRzQnV0dG9ucz8ubWVudVRleHQpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBmbG9hdGluZ0J1dHRvbnM/LnRleHRzQnV0dG9ucz8ubWVudVRleHQgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJNZVN2Z1R4dEN0YU1vdF9fYnRuLS1tb2JpbGUtbGlua3MtaWNvbk1lbnVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx1c2VcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvbWVudS1pY29uLTIuc3ZnI21lbnUtaWNvbi0yXCJcbiAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIEBpZiAoaGVhZGVyRGF0YT8uYnRuQm9vaz8ubGFiZWwpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkVuZ2luZU1vZGFsKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiTWVTdmdUeHRDdGFNb3RfX2J0bi0tbW9iaWxlLWxpbmtzIGJ0biBidG5fX3ByaW1hcnlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGhlYWRlckRhdGE/LmJ0bkJvb2s/LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvaGVhZGVyPlxuXG48ZGl2IGNsYXNzPVwibW9kYWwgbW9kYWxfX21lbnVcIiAjbW9kYWxNZW51PlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbF9faW5uZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtb2RhbF9fY2xvc2UganMtY2xvc2VcIlxuICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwibWVudVwiXG4gICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbG9zZUZyb21FdmVudCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2ZyBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvY2xvc2UtaWNvbi5zdmcjY2xvc2UtaWNvblwiPjwvdXNlPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YSBocmVmPVwiXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vZGFsX19sb2dvXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9jYW5ib3Jkb3ktbG9nby5zdmcjY2FuYm9yZG95LWxvZ29cIlxuICAgICAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsX19tZW51LW5hdlwiPlxuICAgICAgICAgICAgQGlmIChtZW51KSB7XG4gICAgICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW9kYWxfX21lbnUtbmF2LS1saW5rc1wiXG4gICAgICAgICAgICAgICAgICAgICNzY3JvbGxDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbWVudTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiaXRlbS51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwiaXRlbS5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RhbENsaWNrXT1cIm9wZW5TZWxlY3Rvck1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+PC9hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3dTY3JvbGxiYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC10cmFja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsLXRodW1iXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLiVdPVwidGh1bWJQb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC4lXT1cInRodW1iSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibW9kYWxfX21lbnUtbmF2LS1pY29uc1wiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsX19tZW51LW5hdi0taWNvbnMtbmV3c2xldHRlclwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbk5ld3NsZXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvYXNzZXRzL2JhYnlsb24vc3ZnL21haWwtaWNvbi5zdmcjbWFpbC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgQGlmICghdXNlRmxhZ3NTZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW9kYWxfX21lbnUtbmF2LS1pY29ucy1sYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTGFuZ3VhZ2VzTW9kYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvZ2xvYmUtaWNvbi5zdmcjZ2xvYmUtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3VzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsX19tZW51LW5hdi0taWNvbnMtbGFuZ3VhZ2UgbGFuZy1zZWxlY3Rvci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYW5nLXNlbGVjdG9yLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUxhbmdEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGN1cnJlbnRGbGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY3VycmVudEZsYWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxhbmctZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzTGFuZ0Ryb3Bkb3duT3Blbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxhbmctZHJvcGRvd24gZHJvcGRvd24tbW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZyBvZiBsb2NhbGU/Lml0ZW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgbGFuZy5jb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxhbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RMYW5ndWFnZShsYW5nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlPy5zZWxlY3RlZD8uY29kZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmcuY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNbaV0uZmxhZ1VybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJmbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYW5nLWZsYWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZy5sYWJlbCA/PyBsYW5nLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBpZiAoaGVhZGVyRGF0YT8ubGlua3M/LlsxXTsgYXMgYnRuKSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbF9fbWVudS1uYXYtLWljb25zLWFnZW5jaWVzIGFnZW5jaWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJ0bi51cmxcIiBbbGlua1R5cGVdPVwiYnRuLmxpbmtUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9hZ2VuY2llcy1pY29uLnN2ZyNhZ2VuY2llcy1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3VzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGhlYWRlckRhdGE/LmxpbmtzPy5bMl07IGFzIGJ0bikge1xuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtb2RhbF9fbWVudS1uYXYtLWljb25zLWNhbGxcIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImJ0bi51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJidG4ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IGluaGVyaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvY2FsbC1pY29uLnN2ZyNjYWxsLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFieWxvbi1oZS1tZS1zdmctdGV4dC1jdGEtbW90LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JhYnlsb24vc3JjL2xpYi9jb21wb25lbnRzL2NvcmUvYmFieWxvbi1oZS1tZS1zdmctdGV4dC1jdGEtbW90L2JhYnlsb24taGUtbWUtc3ZnLXRleHQtY3RhLW1vdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYWJ5bG9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL2JhYnlsb24taGUtbWUtc3ZnLXRleHQtY3RhLW1vdC9iYWJ5bG9uLWhlLW1lLXN2Zy10ZXh0LWN0YS1tb3QuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUM1RSxPQUFPLEVBQ0gsZUFBZSxFQUNmLFNBQVMsRUFFVCxZQUFZLEVBQ1osWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsRUFDWCxTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBVSxNQUFNLGlCQUFpQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBUTdGLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG9FQUFvRSxDQUFDOzs7OztBQVNwSCxNQUFNLE9BQU8saUNBQWlDO0lBbUQxQyxJQUFhLFlBQVksQ0FBQyxLQUEwQjtRQUNoRCxJQUFJLENBQUMsYUFBYSxHQUFHLEtBQUssSUFBSSxLQUFLLENB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OzBCQUNmLE1BQU07MkJBQUMsV0FBVzs4REEzRXZCLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl6QyxTQUFTO3NCQURSLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJeEMsZUFBZTtzQkFEZCxTQUFTO3VCQUFDLGlCQUFpQjtnQkFHbkIsSUFBSTtzQkFBWixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQXVCRyxVQUFVO3NCQUFsQixLQUFLO2dCQU1PLFlBQVk7c0JBQXhCLEtBQUs7Z0JBYUksVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csaUJBQWlCO3NCQUExQixNQUFNO2dCQUNHLGNBQWM7c0JBQXZCLE1BQU07Z0JBMENQLGNBQWM7c0JBRGIsWUFBWTt1QkFBQyxlQUFlO2dCQWtKN0IsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWtDMUMsUUFBUTtzQkFEUCxZQUFZO3VCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUsIERPQ1VNRU5ULCBpc1BsYXRmb3JtQnJvd3NlciB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIGFmdGVyTmV4dFJlbmRlcixcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgUExBVEZPUk1fSUQsXG4gICAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uU3RhcnQsIFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBmaWx0ZXIsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgQmFieWxvbkxpbmtUeXBlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9saW5rLXR5cGUvbGluay10eXBlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBMb2dvVHlwZSB9IGZyb20gJy4uLy4uLy4uL0VudW0nO1xuaW1wb3J0IHtcbiAgICBCYWJ5bG9uQnV0dG9uSSxcbiAgICBCYWJ5bG9uRmxvYXRpbmdCdXR0b25zSSxcbiAgICBCYWJ5bG9uR2xvYmFsLFxuICAgIEJhYnlsb25JbWFnZUksXG59IGZyb20gJy4uLy4uLy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgQmFieWxvbkVuZ2luZVdpZGdldE1vZGFsQ29tcG9uZW50IH0gZnJvbSAnLi4vYmFieWxvbi1lbmdpbmUtd2lkZ2V0LW1vZGFsJztcbmltcG9ydCB7IEJhYnlsb25Nb2RDMkltZ1R4dEN0YUNvbXBvbmVudCB9IGZyb20gJy4uL2JhYnlsb24tbW9kLWMyLWltZy10eHQtY3RhL2JhYnlsb24tbW9kLWMyLWltZy10eHQtY3RhLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnbGliLWJhYnlsb24taGUtbWUtc3ZnLXRleHQtY3RhLW1vdCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBCYWJ5bG9uTGlua1R5cGVEaXJlY3RpdmVdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYWJ5bG9uLWhlLW1lLXN2Zy10ZXh0LWN0YS1tb3QuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsOiAnLi9iYWJ5bG9uLWhlLW1lLXN2Zy10ZXh0LWN0YS1tb3QuY29tcG9uZW50LnNjc3MnLFxufSlcbmV4cG9ydCBjbGFzcyBCYWJ5bG9uSGVNZVN2Z1RleHRDdGFNb3RDb21wb25lbnQge1xuICAgIEBWaWV3Q2hpbGQoJ21haW5IZWFkZXInLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIG1haW5IZWFkZXIhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIEBWaWV3Q2hpbGQoJ21vZGFsTWVudScsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgbW9kYWxNZW51ITogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICBAVmlld0NoaWxkKCdzY3JvbGxDb250YWluZXInKVxuICAgIHNjcm9sbENvbnRhaW5lciE6IEVsZW1lbnRSZWY8SFRNTFVMaXN0RWxlbWVudD47XG5cbiAgICBASW5wdXQoKSBtZW51PzogQmFieWxvbkJ1dHRvbklbXTtcbiAgICBASW5wdXQoKSBsb2dvcz86IFJlY29yZDxMb2dvVHlwZSwgQmFieWxvbkltYWdlSSB8IHVuZGVmaW5lZD47XG5cbiAgICBASW5wdXQoKSBmbG9hdGluZ0J1dHRvbnM/OiBCYWJ5bG9uRmxvYXRpbmdCdXR0b25zSTtcbiAgICBASW5wdXQoKSBsaW5rcz86IEJhYnlsb25CdXR0b25JW107XG4gICAgQElucHV0KCkgbG9jYWxlPzogYW55O1xuICAgIEBJbnB1dCgpIHRpY2tlcj86IHN0cmluZztcbiAgICBASW5wdXQoKSB3aWRnZXRDb25maWc/OiBhbnk7XG4gICAgQElucHV0KCkgYnRuQm9va0xhYmVsPzogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGhlYWRlckRhdGE/OiBhbnk7XG4gICAgQElucHV0KCkgbWVudU91dE9uRGVza3RvcDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHVzZUZsYWdzU2VsZWN0b3I6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBhdmFpbGFibGVMYW5ndWFnZXM6IHtcbiAgICAgICAgY29kZTogc3RyaW5nO1xuICAgICAgICBsYWJlbDogc3RyaW5nO1xuICAgICAgICBmbGFnVXJsOiBzdHJpbmc7XG4gICAgfVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgICBjb2RlOiAnZXMnLFxuICAgICAgICAgICAgbGFiZWw6ICdFc3Bhw7FvbCcsXG4gICAgICAgICAgICBmbGFnVXJsOiAnaHR0cHM6Ly9mbGFnY2RuLmNvbS93NDAvZXMucG5nJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2VuJyxcbiAgICAgICAgICAgIGxhYmVsOiAnRW5nbGlzaCcsXG4gICAgICAgICAgICBmbGFnVXJsOiAnaHR0cHM6Ly9mbGFnY2RuLmNvbS93NDAvZ2IucG5nJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgY29kZTogJ2RlJyxcbiAgICAgICAgICAgIGxhYmVsOiAnRGV1dHNjaCcsXG4gICAgICAgICAgICBmbGFnVXJsOiAnaHR0cHM6Ly9mbGFnY2RuLmNvbS93NDAvZGUucG5nJyxcbiAgICAgICAgfSxcbiAgICBdO1xuICAgIGlzTGFuZ0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuXG4gICAgQElucHV0KCkgZ2xvYmFsSW5mbz86IEJhYnlsb25HbG9iYWw7XG5cbiAgICBwcml2YXRlIGFjdGl2ZU1vZGFsTmFtZTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gICAgcHJpdmF0ZSByb3V0ZXJTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcblxuICAgIHByaXZhdGUgX2RpbmFteUhlYWRlcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHNldCBkaW5hbXlIZWFkZXIodmFsdWU6IGJvb2xlYW4gfCB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5fZGluYW15SGVhZGVyID0gdmFsdWUgPz8gZmFsc2U7XG5cbiAgICAgICAgaWYgKCF0aGlzLl9kaW5hbXlIZWFkZXIpIHtcbiAgICAgICAgICAgIHRoaXMuYXBwbHlTdGlja3kodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm9uV2luZG93U2Nyb2xsKCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IGRpbmFteUhlYWRlcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RpbmFteUhlYWRlcjtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgb3BlbkVuZ2luZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb3Blbkxhbmd1YWdlcyA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgb3Blbk5ld3MgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9wZW5TZWxlY3Rvck1vZGFsID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGxhbmd1YWdlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgICB0aHVtYlBvc2l0aW9uID0gMDtcbiAgICB0aHVtYkhlaWdodCA9IDIwO1xuICAgIHNob3dTY3JvbGxiYXIgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGRpYWxvZzogTWF0RGlhbG9nLFxuICAgICAgICBASW5qZWN0KERPQ1VNRU5UKSBwcml2YXRlIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChQTEFURk9STV9JRCkgcHJpdmF0ZSBwbGF0Zm9ybUlkOiBPYmplY3QsXG4gICAgICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXJcbiAgICApIHtcbiAgICAgICAgdGhpcy5yb3V0ZXJTdWJzY3JpcHRpb24gPSB0aGlzLnJvdXRlci5ldmVudHNcbiAgICAgICAgICAgIC5waXBlKGZpbHRlcigoZXZlbnQpID0+IGV2ZW50IGluc3RhbmNlb2YgTmF2aWdhdGlvblN0YXJ0KSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9yY2VDbG9zZUFsbE1vZGFscygpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgYWZ0ZXJOZXh0UmVuZGVyKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2FsY3VsYXRlU2Nyb2xsRGltZW5zaW9ucygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5U3RpY2t5KGlzU3RpY2t5OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB0aGlzLmRvY3VtZW50LmJvZHk7XG4gICAgICAgIGNvbnN0IGhlYWRlciA9IHRoaXMubWFpbkhlYWRlcj8ubmF0aXZlRWxlbWVudDtcblxuICAgICAgICBpZiAoaXNTdGlja3kpIHtcbiAgICAgICAgICAgIGJvZHkuY2xhc3NMaXN0LmFkZCgnaGVhZGVyX19zdGlja3knLCAnaGVhZGVyX3N0aWNreScpO1xuICAgICAgICAgICAgaGVhZGVyPy5jbGFzc0xpc3QuYWRkKCdoZWFkZXJfX3N0aWNreScpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdoZWFkZXJfX3N0aWNreScsICdoZWFkZXJfc3RpY2t5Jyk7XG4gICAgICAgICAgICBoZWFkZXI/LmNsYXNzTGlzdC5yZW1vdmUoJ2hlYWRlcl9fc3RpY2t5Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBpc0Jyb3dzZXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpc1BsYXRmb3JtQnJvd3Nlcih0aGlzLnBsYXRmb3JtSWQpO1xuICAgIH1cblxuICAgIC8vID09PT09PSBTVElDS1kgSEVBREVSID09PT09PVxuICAgIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpzY3JvbGwnKVxuICAgIG9uV2luZG93U2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm47XG5cbiAgICAgICAgaWYgKCF0aGlzLmRpbmFteUhlYWRlcikge1xuICAgICAgICAgICAgdGhpcy5hcHBseVN0aWNreSh0cnVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdpblBvcyA9XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgfHxcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgfHxcbiAgICAgICAgICAgIDA7XG4gICAgICAgIHRoaXMuYXBwbHlTdGlja3kod2luUG9zID49IDEpO1xuICAgIH1cblxuICAgIC8vID09PT09PSBNT0RBTEVTID09PT09PVxuICAgIG9wZW5Nb2RhbChtb2RhbE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgYm9keSA9IHRoaXMuZG9jdW1lbnQuYm9keTtcbiAgICAgICAgY29uc3QgbW9kYWxNZW51ID0gdGhpcy5tb2RhbE1lbnU/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGJvZHkuY2xhc3NMaXN0LmFkZChtb2RhbE5hbWUsICdtb2RhbC0tb3BlbicpO1xuICAgICAgICBtb2RhbE1lbnUuY2xhc3NMaXN0LmFkZCgnbW9kYWwtLW9wZW4nKTtcbiAgICB9XG5cbiAgICBjbG9zZU1vZGFsKG1vZGFsTmFtZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHJldHVybjtcblxuICAgICAgICBjb25zdCBib2R5ID0gdGhpcy5kb2N1bWVudC5ib2R5O1xuICAgICAgICBjb25zdCBtb2RhbE1lbnUgPSB0aGlzLm1vZGFsTWVudT8ubmF0aXZlRWxlbWVudDtcbiAgICAgICAgYm9keS5jbGFzc0xpc3QucmVtb3ZlKG1vZGFsTmFtZSwgJ21vZGFsLS1vcGVuJyk7XG4gICAgICAgIG1vZGFsTWVudS5jbGFzc0xpc3QucmVtb3ZlKCdtb2RhbC0tb3BlbicpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9yY2VDbG9zZUFsbE1vZGFscygpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzQnJvd3NlcikgcmV0dXJuO1xuXG4gICAgICAgIGlmICh0aGlzLmFjdGl2ZU1vZGFsTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZU1vZGFsKHRoaXMuYWN0aXZlTW9kYWxOYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCdtb2RhbC0tb3BlbicpO1xuICAgICAgICAgICAgaWYgKHRoaXMubW9kYWxNZW51Py5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5tb2RhbE1lbnUubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCdtb2RhbC0tb3BlbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kaWFsb2cuY2xvc2VBbGwoKTtcbiAgICB9XG5cbiAgICAvLyBTaSBxdWllcmVzIHVuYSB2ZXJzacOzbiBnZW7DqXJpY2EgdXNhbmRvIGRhdGEtbW9kYWxfbmFtZTpcbiAgICBoYW5kbGVPcGVuRnJvbUV2ZW50KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXNCcm93c2VyKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQuY3VycmVudFRhcmdldCBhcyBIVE1MRWxlbWVudCB8IG51bGw7XG4gICAgICAgIGNvbnN0IG1vZGFsTmFtZSA9IHRhcmdldD8uZGF0YXNldFsnbW9kYWxfbmFtZSddO1xuICAgICAgICBpZiAoIW1vZGFsTmFtZSkgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMub3Blbk1vZGFsKG1vZGFsTmFtZSk7XG4gICAgfVxuXG4gICAgaGFuZGxlQ2xvc2VGcm9tRXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc0Jyb3dzZXIpIHJldHVybjtcblxuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC5jdXJyZW50VGFyZ2V0IGFzIEhUTUxFbGVtZW50IHwgbnVsbDtcbiAgICAgICAgY29uc3QgbW9kYWxOYW1lID0gdGFyZ2V0Py5kYXRhc2V0Wydtb2RhbF9uYW1lJ107XG4gICAgICAgIGlmICghbW9kYWxOYW1lKSByZXR1cm47XG5cbiAgICAgICAgdGhpcy5jbG9zZU1vZGFsKG1vZGFsTmFtZSk7XG4gICAgfVxuICAgIG9wZW5EaXNjb3Zlck1vZGFsKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKEJhYnlsb25Nb2RDMkltZ1R4dEN0YUNvbXBvbmVudCwge1xuICAgICAgICAgICAgd2lkdGg6ICcxMDB2dycsXG4gICAgICAgICAgICBoZWlnaHQ6ICcxMDB2aCcsXG4gICAgICAgICAgICBtYXhXaWR0aDogJzEwMHZ3JyxcbiAgICAgICAgICAgIHBhbmVsQ2xhc3M6IFsnZnVsbC1zY3JlZW4nLCAnbW9kYWwtYmctYmFnZSddLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIG9wZW5MYW5ndWFnZXNNb2RhbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuTGFuZ3VhZ2VzLmVtaXQoKTtcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudExvY2FsZUNvZGUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLmxvY2FsZSkgcmV0dXJuICdlcyc7XG5cbiAgICAgICAgaWYgKHRoaXMubG9jYWxlLnNlbGVjdGVkPy5jb2RlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5sb2NhbGUuc2VsZWN0ZWQuY29kZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5sb2NhbGUgPT09ICdzdHJpbmcnKSByZXR1cm4gdGhpcy5sb2NhbGU7XG4gICAgICAgIGlmICh0aGlzLmxvY2FsZS5jb2RlKSByZXR1cm4gdGhpcy5sb2NhbGUuY29kZTtcbiAgICAgICAgaWYgKHRoaXMubG9jYWxlLmlzbykgcmV0dXJuIHRoaXMubG9jYWxlLmlzbztcblxuICAgICAgICByZXR1cm4gJ2VzJztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZsYWdVcmwoY29kZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFjb2RlKSByZXR1cm4gJ2h0dHBzOi8vZmxhZ2Nkbi5jb20vdzQwL2VzLnBuZyc7XG4gICAgICAgIGNvbnN0IG5vcm1hbGl6ZWRDb2RlID0gY29kZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGNvbnN0IGZsYWdNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgICAgICAgICBlbjogJ2diJyxcbiAgICAgICAgICAgIGphOiAnanAnLFxuICAgICAgICAgICAgemg6ICdjbicsXG4gICAgICAgICAgICBjYTogJ2VzLWN0JyxcbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBjb3VudHJ5Q29kZSA9IGZsYWdNYXBbbm9ybWFsaXplZENvZGVdIHx8IG5vcm1hbGl6ZWRDb2RlO1xuICAgICAgICByZXR1cm4gYGh0dHBzOi8vZmxhZ2Nkbi5jb20vdzQwLyR7Y291bnRyeUNvZGV9LnBuZ2A7XG4gICAgfVxuXG4gICAgZ2V0IHBhcnNlZExhbmd1YWdlcygpOiB7IGNvZGU6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgZmxhZ1VybDogc3RyaW5nIH1bXSB7XG4gICAgICAgIGlmICh0aGlzLmxvY2FsZSAmJiBBcnJheS5pc0FycmF5KHRoaXMubG9jYWxlLml0ZW1zKSkge1xuICAgICAgICAgICAgY29uc3QgdmFsaWRJdGVtcyA9IHRoaXMubG9jYWxlLml0ZW1zLmZpbHRlcihcbiAgICAgICAgICAgICAgICAoaXRlbTogYW55KSA9PiBpdGVtICYmIHR5cGVvZiBpdGVtLmNvZGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRJdGVtcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbGlkSXRlbXMubWFwKChpdGVtOiBhbnkpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIGNvZGU6IGl0ZW0uY29kZSxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGl0ZW0ubmFtZSB8fCBpdGVtLmNvZGUudG9VcHBlckNhc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgZmxhZ1VybDogdGhpcy5nZXRGbGFnVXJsKGl0ZW0uY29kZSksXG4gICAgICAgICAgICAgICAgfSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmF2YWlsYWJsZUxhbmd1YWdlcztcbiAgICB9XG5cbiAgICBnZXQgY3VycmVudEZsYWcoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0RmxhZ1VybCh0aGlzLmN1cnJlbnRMb2NhbGVDb2RlKTtcbiAgICB9XG5cbiAgICB0b2dnbGVMYW5nRHJvcGRvd24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmlzTGFuZ0Ryb3Bkb3duT3BlbiA9ICF0aGlzLmlzTGFuZ0Ryb3Bkb3duT3BlbjtcbiAgICB9XG5cbiAgICBzZWxlY3RMYW5ndWFnZShsYW5nOiBhbnksIGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy5sYW5ndWFnZUNoYW5nZS5lbWl0KGxhbmcpO1xuICAgICAgICB0aGlzLmlzTGFuZ0Ryb3Bkb3duT3BlbiA9IGZhbHNlO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcbiAgICBvbkNsaWNrT3V0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc0xhbmdEcm9wZG93bk9wZW4pIHtcbiAgICAgICAgICAgIHRoaXMuaXNMYW5nRHJvcGRvd25PcGVuID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvcGVuRW5naW5lTW9kYWwoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQmFieWxvbkVuZ2luZVdpZGdldE1vZGFsQ29tcG9uZW50LCB7XG4gICAgICAgICAgICB3aWR0aDogJzEwMHZ3JyxcbiAgICAgICAgICAgIGhlaWdodDogJzEwMHZoJyxcbiAgICAgICAgICAgIG1heFdpZHRoOiAnMTAwdncnLFxuICAgICAgICAgICAgaGFzQmFja2Ryb3A6IHRydWUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gICAgICAgIGV2ZW50LnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBkaWFsb2dSZWYuY2xvc2UoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmxvY2FsZSA9IHRoaXMubG9jYWxlPy5zZWxlY3RlZD8uY29kZTtcbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLndpZGdldENvbmZpZyA9IHRoaXMud2lkZ2V0Q29uZmlnO1xuICAgICAgICBkaWFsb2dSZWYuY29tcG9uZW50SW5zdGFuY2UudGlja2VyID0gdGhpcy50aWNrZXI7XG4gICAgICAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5nbG9iYWxJbmZvID0gdGhpcy5nbG9iYWxJbmZvO1xuICAgICAgICAvKiAgIGRpYWxvZ1JlZi5jb21wb25lbnRJbnN0YW5jZS5zdHlsZXMgPSB0aGlzLnN0eWxlcztcbiAgICAgICAgZGlhbG9nUmVmLmNvbXBvbmVudEluc3RhbmNlLmNsb3NlID0gZXZlbjsgKi9cbiAgICB9XG5cbiAgICBvcGVuTmV3c2xldHRlcigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5vcGVuTmV3cy5lbWl0KCk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignd2luZG93OnJlc2l6ZScpXG4gICAgb25SZXNpemUoKSB7XG4gICAgICAgIHRoaXMuY2FsY3VsYXRlU2Nyb2xsRGltZW5zaW9ucygpO1xuICAgIH1cblxuICAgIGNhbGN1bGF0ZVNjcm9sbERpbWVuc2lvbnMoKSB7XG4gICAgICAgIGlmICghdGhpcy5zY3JvbGxDb250YWluZXIpIHJldHVybjtcblxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGVsID0gdGhpcy5zY3JvbGxDb250YWluZXIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgICAgIGNvbnN0IHNjcm9sbGFibGVSYXRpbyA9IGVsLmNsaWVudEhlaWdodCAvIGVsLnNjcm9sbEhlaWdodDtcblxuICAgICAgICAgICAgdGhpcy5zaG93U2Nyb2xsYmFyID0gc2Nyb2xsYWJsZVJhdGlvIDwgMTtcbiAgICAgICAgICAgIHRoaXMudGh1bWJIZWlnaHQgPSBNYXRoLm1heChzY3JvbGxhYmxlUmF0aW8gKiAxMDAsIDEwKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25TY3JvbGwoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIGNvbnN0IGVsID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgICAgICBjb25zdCBtYXhTY3JvbGxUb3AgPSBlbC5zY3JvbGxIZWlnaHQgLSBlbC5jbGllbnRIZWlnaHQ7XG5cbiAgICAgICAgaWYgKG1heFNjcm9sbFRvcCA8PSAwKSByZXR1cm47XG5cbiAgICAgICAgY29uc3Qgc2Nyb2xsUmF0aW8gPSBlbC5zY3JvbGxUb3AgLyBtYXhTY3JvbGxUb3A7XG4gICAgICAgIHRoaXMudGh1bWJQb3NpdGlvbiA9IHNjcm9sbFJhdGlvICogKDEwMCAtIHRoaXMudGh1bWJIZWlnaHQpO1xuICAgIH1cbn1cbiIsIjxoZWFkZXJcbiAgICAjbWFpbkhlYWRlclxuICAgIGNsYXNzPVwiTWVTdmdUeHRDdGFNb3RcIlxuICAgIFtjbGFzcy5oaWRlLWRlc2t0b3AtbWVudV09XCIhbWVudU91dE9uRGVza3RvcFwiXG4+XG4gICAgPGRpdiBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19sb2dvXCI+XG4gICAgICAgIDxhIGhyZWY9XCJcIiBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19sb2dvLS1pbWdcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cImxvZ29zPy5sb2dvRGVza3RvcD8uc3JjXCJcbiAgICAgICAgICAgICAgICBhbHQ9XCJMb2dvIERlc2t0b3BcIlxuICAgICAgICAgICAgICAgIGFyaWEtaGlkZGVuPVwidHJ1ZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2E+XG4gICAgICAgIDxhIGhyZWY9XCJcIiBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19sb2dvLS1zdGlja3lcIj5cbiAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICBbc3JjXT1cImxvZ29zPy5sb2dvPy5zcmNcIlxuICAgICAgICAgICAgICAgIGFsdD1cIkxvZ28gU3RpY2t5XCJcbiAgICAgICAgICAgICAgICBhcmlhLWhpZGRlbj1cInRydWVcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9hPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJNZVN2Z1R4dEN0YU1vdF9fbmF2XCI+XG4gICAgICAgIEBpZiAobWVudSkge1xuICAgICAgICAgICAgPHVsIGNsYXNzPVwiTWVTdmdUeHRDdGFNb3RfX25hdi1saW5rc1wiPlxuICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbWVudTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiaXRlbS51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJpdGVtLmxpbmtUeXBlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIml0ZW0ubGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RhbENsaWNrXT1cIm9wZW5TZWxlY3Rvck1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PHNwYW4+e3sgaXRlbS5sYWJlbCB9fTwvc3Bhbj48L2FcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPCEtLSAgIDxsaT5cbiAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJqcy1hY3RpdmUtbW9kYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwiZGlzY292ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9wZW5EaXNjb3Zlck1vZGFsKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjxzcGFuPkRlc2N1YnJlPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9saT4gLS0+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICB9XG4gICAgICAgIDx1bCBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19uYXYtaWNvbnNcIj5cbiAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiTWVTdmdUeHRDdGFNb3RfX25hdi1pY29ucy0tbWVudSBqcy1hY3RpdmUtbW9kYWxcIlxuICAgICAgICAgICAgICAgIGRhdGEtbW9kYWxfbmFtZT1cIm1lbnVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVPcGVuRnJvbUV2ZW50KCRldmVudClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvbWVudS1pY29uLnN2ZyNtZW51LWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgPGxpIHJvbGU9XCJidXR0b25cIiAoY2xpY2spPVwib3Blbk5ld3NsZXR0ZXIoKVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdG9vbHRpcF09XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nQnV0dG9ucz8udGV4dHNCdXR0b25zPy5uZXdzbGV0dGVyXG4gICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvbWFpbC1pY29uLnN2ZyNtYWlsLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgQGlmICghdXNlRmxhZ3NTZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgIDxsaSByb2xlPVwiYnV0dG9uXCIgKGNsaWNrKT1cIm9wZW5MYW5ndWFnZXNNb2RhbCgpXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRvb2x0aXBdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmdCdXR0b25zPy50ZXh0c0J1dHRvbnM/Lmxhbmd1YWdlXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9nbG9iZS1pY29uLnN2ZyNnbG9iZS1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYW5nLXNlbGVjdG9yLXdyYXBwZXJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiJGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYW5nLXNlbGVjdG9yLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlTGFuZ0Ryb3Bkb3duKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGN1cnJlbnRGbGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImN1cnJlbnRGbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibGFuZy1mbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgQGlmIChpc0xhbmdEcm9wZG93bk9wZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxhbmctZHJvcGRvd25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAZm9yIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZyBvZiBsb2NhbGU/Lml0ZW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjayBsYW5nLmNvZGU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gJGluZGV4XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RMYW5ndWFnZShsYW5nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlPy5zZWxlY3RlZD8uY29kZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZy5jb2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3JjXT1cImF2YWlsYWJsZUxhbmd1YWdlc1tpXS5mbGFnVXJsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJmbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxhbmctZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgbGFuZy5sYWJlbCA/PyBsYW5nLm5hbWUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAaWYgKGhlYWRlckRhdGE/LmxpbmtzPy5bMV07IGFzIGJ0bikge1xuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19uYXYtaWNvbnMtLWFnZW5jaWVzIGFnZW5jaWFcIlxuICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJ0bi51cmxcIiBbbGlua1R5cGVdPVwiYnRuLmxpbmtUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvYXNzZXRzL2JhYnlsb24vc3ZnL2FnZW5jaWVzLWljb24uc3ZnI2FnZW5jaWVzLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBAaWYgKGhlYWRlckRhdGE/LmxpbmtzPy5bMl07IGFzIGJ0bikge1xuICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19uYXYtaWNvbnMtLWNhbGxcIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJ0bi51cmxcIiBbbGlua1R5cGVdPVwiYnRuLmxpbmtUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvYXNzZXRzL2JhYnlsb24vc3ZnL2NhbGwtaWNvbi5zdmcjY2FsbC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC91bD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiTWVTdmdUeHRDdGFNb3RfX2J0blwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJvcGVuRW5naW5lTW9kYWwoKVwiXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG5fX3ByaW1hcnlcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8c3Bhbj57eyBoZWFkZXJEYXRhPy5idG5Cb29rPy5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIEBpZiAoaGVhZGVyRGF0YT8ubGlua3M/LlsxXTsgYXMgYnRuKSB7XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIFtocmVmXT1cImJ0bi51cmxcIlxuICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJidG4ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuX19saW5rIGFnZW5jaWFcIlxuICAgICAgICAgICAgICAgID48c3Bhbj57eyBidG4/LmxhYmVsIH19PC9zcGFuPjwvYVxuICAgICAgICAgICAgPlxuICAgICAgICB9XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19idG4tLW1vYmlsZVwiPlxuICAgICAgICA8YVxuICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzcz1cIk1lU3ZnVHh0Q3RhTW90X19idG4tLW1vYmlsZS1saW5rcyBqcy1hY3RpdmUtbW9kYWxcIlxuICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwibWVudVwiXG4gICAgICAgICAgICAoY2xpY2spPVwiaGFuZGxlT3BlbkZyb21FdmVudCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChmbG9hdGluZ0J1dHRvbnM/LnRleHRzQnV0dG9ucz8ubWVudVRleHQpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBmbG9hdGluZ0J1dHRvbnM/LnRleHRzQnV0dG9ucz8ubWVudVRleHQgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBmb2N1c2FibGU9XCJmYWxzZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJNZVN2Z1R4dEN0YU1vdF9fYnRuLS1tb2JpbGUtbGlua3MtaWNvbk1lbnVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx1c2VcbiAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvbWVudS1pY29uLTIuc3ZnI21lbnUtaWNvbi0yXCJcbiAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgPC9hPlxuXG4gICAgICAgIEBpZiAoaGVhZGVyRGF0YT8uYnRuQm9vaz8ubGFiZWwpIHtcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwib3BlbkVuZ2luZU1vZGFsKClcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiTWVTdmdUeHRDdGFNb3RfX2J0bi0tbW9iaWxlLWxpbmtzIGJ0biBidG5fX3ByaW1hcnlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzcGFuPnt7IGhlYWRlckRhdGE/LmJ0bkJvb2s/LmxhYmVsIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIH1cbiAgICA8L2Rpdj5cbjwvaGVhZGVyPlxuXG48ZGl2IGNsYXNzPVwibW9kYWwgbW9kYWxfX21lbnVcIiAjbW9kYWxNZW51PlxuICAgIDxkaXYgY2xhc3M9XCJtb2RhbF9faW5uZXJcIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJtb2RhbF9fY2xvc2UganMtY2xvc2VcIlxuICAgICAgICAgICAgZGF0YS1tb2RhbF9uYW1lPVwibWVudVwiXG4gICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJoYW5kbGVDbG9zZUZyb21FdmVudCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHN2ZyBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgIDx1c2UgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvY2xvc2UtaWNvbi5zdmcjY2xvc2UtaWNvblwiPjwvdXNlPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8YSBocmVmPVwiXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1vZGFsX19sb2dvXCI+XG4gICAgICAgICAgICAgICAgPHN2ZyBhcmlhLWhpZGRlbj1cInRydWVcIiBmb2N1c2FibGU9XCJmYWxzZVwiPlxuICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9jYW5ib3Jkb3ktbG9nby5zdmcjY2FuYm9yZG95LWxvZ29cIlxuICAgICAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvYT5cbiAgICAgICAgPGRpdiBjbGFzcz1cIm1vZGFsX19tZW51LW5hdlwiPlxuICAgICAgICAgICAgQGlmIChtZW51KSB7XG4gICAgICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW9kYWxfX21lbnUtbmF2LS1saW5rc1wiXG4gICAgICAgICAgICAgICAgICAgICNzY3JvbGxDb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgKHNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKGl0ZW0gb2YgbWVudTsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hyZWZdPVwiaXRlbS51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGlua1R5cGVdPVwiaXRlbS5saW5rVHlwZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiaXRlbS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RhbENsaWNrXT1cIm9wZW5TZWxlY3Rvck1vZGFsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjxzcGFuPnt7IGl0ZW0ubGFiZWwgfX08L3NwYW4+PC9hXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdWw+XG5cbiAgICAgICAgICAgICAgICBAaWYgKHNob3dTY3JvbGxiYXIpIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNjcm9sbC10cmFja1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwic2Nyb2xsLXRodW1iXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUudG9wLiVdPVwidGh1bWJQb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmhlaWdodC4lXT1cInRodW1iSGVpZ2h0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgPHVsIGNsYXNzPVwibW9kYWxfX21lbnUtbmF2LS1pY29uc1wiPlxuICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsX19tZW51LW5hdi0taWNvbnMtbmV3c2xldHRlclwiXG4gICAgICAgICAgICAgICAgICAgIHJvbGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib3Blbk5ld3NsZXR0ZXIoKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyZWY9XCIvYXNzZXRzL2JhYnlsb24vc3ZnL21haWwtaWNvbi5zdmcjbWFpbC1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC91c2U+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgQGlmICghdXNlRmxhZ3NTZWxlY3Rvcikge1xuICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibW9kYWxfX21lbnUtbmF2LS1pY29ucy1sYW5ndWFnZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTGFuZ3VhZ2VzTW9kYWwoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvZ2xvYmUtaWNvbi5zdmcjZ2xvYmUtaWNvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3VzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIm1vZGFsX19tZW51LW5hdi0taWNvbnMtbGFuZ3VhZ2UgbGFuZy1zZWxlY3Rvci13cmFwcGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYW5nLXNlbGVjdG9yLWJ0blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUxhbmdEcm9wZG93bigkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGN1cnJlbnRGbGFnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiY3VycmVudEZsYWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWx0PVwiZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxhbmctZmxhZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICBAaWYgKGlzTGFuZ0Ryb3Bkb3duT3Blbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz1cImxhbmctZHJvcGRvd24gZHJvcGRvd24tbW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBmb3IgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZyBvZiBsb2NhbGU/Lml0ZW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sgbGFuZy5jb2RlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGkgPSAkaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImxhbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RMYW5ndWFnZShsYW5nLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlPy5zZWxlY3RlZD8uY29kZSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbmcuY29kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzcmNdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGVMYW5ndWFnZXNbaV0uZmxhZ1VybFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHQ9XCJmbGFnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJsYW5nLWZsYWdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZy5sYWJlbCA/PyBsYW5nLm5hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIEBpZiAoaGVhZGVyRGF0YT8ubGlua3M/LlsxXTsgYXMgYnRuKSB7XG4gICAgICAgICAgICAgICAgICAgIDxsaVxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJtb2RhbF9fbWVudS1uYXYtLWljb25zLWFnZW5jaWVzIGFnZW5jaWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIFtocmVmXT1cImJ0bi51cmxcIiBbbGlua1R5cGVdPVwiYnRuLmxpbmtUeXBlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgYXJpYS1oaWRkZW49XCJ0cnVlXCIgZm9jdXNhYmxlPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1c2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBocmVmPVwiL2Fzc2V0cy9iYWJ5bG9uL3N2Zy9hZ2VuY2llcy1pY29uLnN2ZyNhZ2VuY2llcy1pY29uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L3VzZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9hPlxuICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBAaWYgKGhlYWRlckRhdGE/LmxpbmtzPy5bMl07IGFzIGJ0bikge1xuICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJtb2RhbF9fbWVudS1uYXYtLWljb25zLWNhbGxcIiByb2xlPVwiYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtocmVmXT1cImJ0bi51cmxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5rVHlwZV09XCJidG4ubGlua1R5cGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwiY29sb3I6IGluaGVyaXRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGFyaWEtaGlkZGVuPVwidHJ1ZVwiIGZvY3VzYWJsZT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJlZj1cIi9hc3NldHMvYmFieWxvbi9zdmcvY2FsbC1pY29uLnN2ZyNjYWxsLWljb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvdXNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==