@tsi-developpement/tsi-shared-ui 1.2.2 → 1.2.3

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.
@@ -97,7 +97,6 @@ export class ReportingComponent {
97
97
  //#endregion
98
98
  this.onSave = new EventEmitter();
99
99
  this.isFormEndpointPaged = false;
100
- this.httpMethodType = HttpMethodType.POST;
101
100
  this._nombreDocumentsJoints = 0;
102
101
  this.configModeButtonId = 'show-hide-config-button';
103
102
  this._selectedItemUids = [];
@@ -506,7 +505,7 @@ export class ReportingComponent {
506
505
  order: order,
507
506
  shortName: shortName,
508
507
  display: display,
509
- httpMethodType: this.httpMethodType
508
+ httpMethodType: this.getHttpMethodType()
510
509
  };
511
510
  return newReportToPrint;
512
511
  }
@@ -727,4 +726,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
727
726
  type: ViewChild,
728
727
  args: ['wrapper', { read: ElementRef }]
729
728
  }] } });
730
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9yZXBvcnRpbmcvcmVwb3J0aW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9yZXBvcnRpbmcvcmVwb3J0aW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQXVCLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0UsT0FBTyxFQUE2QyxPQUFPLEVBQThCLE1BQU0sY0FBYyxDQUFDO0FBRTlHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU96RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsNEJBQTRCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLCtCQUErQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFJckwsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BE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QyxVQUFVLDZCQ3RJMUMsNHVNQW1MQTs7NEZEdkphLGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlO3djQWNoQixzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFNRiwwQkFBMEI7c0JBRDdCLEtBQUs7Z0JBU0ksTUFBTTtzQkFBZixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRixtQkFBbUI7c0JBRHRCLEtBQUs7Z0JBWUYscUJBQXFCO3NCQUR4QixLQUFLO2dCQWNGLEVBQUU7c0JBREwsS0FBSztnQkFTRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBSUssZ0JBQWdCO3NCQUQxQixLQUFLO2dCQVlLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBWUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUtQLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL3Rvb2x0aXBQb3NpdGlvbi5lbnVtJztcclxuaW1wb3J0IHsgU2VnbWVudCB9IGZyb20gJy4uLy4uL2VuZC1wb2ludHMnO1xyXG5pbXBvcnQgeyBNb2RhbFNpemVFbnVtLCBIdHRwTWV0aG9kVHlwZSwgVHNpUmVwb3J0VHlwZSB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgSU1vZGFsU2l6ZSwgSVBhZ2VkUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBPcHRpb25hbEVuZHBvaW50cywgUmVwb3J0VGVtcGxhdGVSZXNwb25zZSwgRmljaGllciwgUmVwb3J0VG9QcmludCwgU2VhcmNoRmllbGQgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBGaWNoaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpY2hpZXIvZmljaGllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgcXVlcnlQYXJhbU5hbWVzQ29uc3QgfSBmcm9tICcuLi8uLi9jb25zdHMvcXVlcnlQYXJhbU5hbWVzLmNvbnN0JztcclxuaW1wb3J0IHsgTG9jYWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvbG9jYWxpemUucGlwZSc7XHJcbmltcG9ydCB7IExheW91dEhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQvbGF5b3V0LWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVjb3JkSW5mb1BvcHVwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY29yZC1pbmZvLXBvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUc2lNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi90c2ktbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi90c2ktbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJZGVudGl0eU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aG9yaXphdGlvbi9pZGVudGl0eS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXBvcnRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVwb3J0aW5nL3JlcG9ydGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgb3Blbk1hbmFnZUltcG9ydEV4cG9ydE1vZGFsLCBvcGVuTWFuYWdlUmVwb3J0aW5nQ29tcG9uZW50LCBvcGVuTW9kYWxVcGxvYWRHcmlkLCBvcGVuTm90ZXNMaXN0LCBvcGVuVHNpUG9wdXBUZXh0Vmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL21vZGFsLW9wZW4uZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL2Vycm9yLXJlc3BvbnNlLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcFJvdXRlcyB9IGZyb20gJy4uLy4uL3JvdXRlcy9hcHAucm91dGVzJztcclxuaW1wb3J0IHsgTWFuYWdlUmVwb3J0aW5nUm91dGVzIH0gZnJvbSAnLi4vLi4vcm91dGVzL21hbmFnZS1yZXBvcnRpbmcucm91dGVzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVwb3J0aW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0aW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXBvcnRpbmcuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcG9ydGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvLyNyZWdpb24gcHJvcGVydGllc1xyXG4gIHJlcG9ydFRvUHJpbnRJZDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIHRvU2VuZEVtYWlsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGxvY2FsaXplPyA9IGluamVjdChMb2NhbGl6ZVBpcGUpXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvck1lc3NhZ2VLZXk6IHN0cmluZyA9ICdzaGFyZWRfcmVwb3J0aW5nX2Vycm9yX29jY3VyZWQnO1xyXG4gIG1vZGFsU2l6ZTogSU1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uTGFyZ2U7XHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuICBwcml2YXRlIF9yZXBvcnREaXNjcmltaW5hdG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLy8gcGFyYW1ldHJlOiBQYXJhbWV0cmVzQXBwbGljYXRpb25QYWllID0gbmV3IFBhcmFtZXRyZXNBcHBsaWNhdGlvblBhaWUoKTtcclxuICBASW5wdXQoKSBzaG93SW1wb3J0RXhwb3J0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Tm90ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0luZm9CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dVcGxvYWRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBzaG93UHJlc2VudGF0aW9uRGVzaWduZXJDb25maWdCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaXZhdGUgX2lzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgc2V0IGlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZCA9IHZhbHVlO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgLy8jcmVnaW9uIElucHV0IHByb3BlcnRpZXNcclxuICBASW5wdXQoKSBmb3JtTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvL2Zvcm1JZGVudGlmaWVyXHJcbiAgQElucHV0KCkgZm9ybUVuZHBvaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7IC8vPSBgJHtHZXN0aW9uQ29tbWVyY2lhbGVTZWdtZW50cy5mYWN0dXJlVmVudGV9LzE2NWVjNWZkLTRkMzQtNDU0Ni1hZTE1LTAwNDRlNzA4YjlkOWA7XHJcbiAgQElucHV0KCkgZm9ybUVuZHBvaW50Qm9keTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvL2Zvcm1JZGVudGlmaWVyXHJcbiAgQElucHV0KCkgaXNGb3JtRW5kcG9pbnRQYWdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnNIdG1sVGVtcGxhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBvcHRpb25hbEVuZHBvaW50cz86IE9wdGlvbmFsRW5kcG9pbnRzO1xyXG4gIEBJbnB1dCgpIGJ1c2luZXNzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3VkQ29tcG9uZW50OiBhbnk7XHJcbiAgQElucHV0KCkgaHR0cE1ldGhvZFR5cGU/OiBIdHRwTWV0aG9kVHlwZSA9IEh0dHBNZXRob2RUeXBlLlBPU1Q7XHJcbiAgQElucHV0KCkgcmVxdWVzdERhdGE/OiBhbnk7XHJcbiAgQElucHV0KCkgY3VzdG9tUmVwb3J0aW5nTW9kZT86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGFnZWRSZXF1ZXN0PzogSVBhZ2VkUmVxdWVzdDtcclxuICBASW5wdXQoKVxyXG4gIGdldCByZXBvcnREaXNjcmltaW5hdG9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVwb3J0RGlzY3JpbWluYXRvcjtcclxuICB9XHJcblxyXG4gIHNldCByZXBvcnREaXNjcmltaW5hdG9yKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX3JlcG9ydERpc2NyaW1pbmF0b3IgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIF9ub21icmVEb2N1bWVudHNKb2ludHM6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KClcclxuICBnZXQgbm9tYnJlRG9jdW1lbnRzSm9pbnRzKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbm9tYnJlRG9jdW1lbnRzSm9pbnRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IG5vbWJyZURvY3VtZW50c0pvaW50cyh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuX25vbWJyZURvY3VtZW50c0pvaW50cyA9IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9ub21icmVEb2N1bWVudHNKb2ludHMgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2lkID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9pZDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ01vZGVCdXR0b25JZDogc3RyaW5nID0gJ3Nob3ctaGlkZS1jb25maWctYnV0dG9uJztcclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtVWlkczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZWxlY3RlZEl0ZW1VaWRzKGxpc3RVaWRzOiBBcnJheTxhbnk+W10pIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkSXRlbVVpZHMgPSBsaXN0VWlkcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRJdGVtVWlkcygpOiBBcnJheTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1VaWRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZnJvbVRzaUZvcm0gOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmcm9tVHNpRm9ybSh2YWx1ZSA6IGJvb2xlYW4pe1xyXG4gICAgdGhpcy5fZnJvbVRzaUZvcm0gPSB2YWx1ZVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmcm9tVHNpRm9ybSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zyb21Uc2lGb3JtXHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dCBwcm9wZXJ0aWVzXHJcbiAgQE91dHB1dCgpIHJlZnJlc2hEYXRhOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlZE1vZGFsRmlsZVVwbG9hZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSB0b2dnbGVEZXNpZ25Nb2RlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxyXG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBAVmlld0NoaWxkKCd3cmFwcGVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgd3JhcHBlclJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICByZXBvcnRzOiBSZXBvcnRUZW1wbGF0ZVJlc3BvbnNlW10gPSBbXTtcclxuICBzaG93Q29udGV4dE1lbnUgPSBmYWxzZTtcclxuICBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAwLCB5OiAwIH07XHJcblxyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5Ub3A7XHJcblxyXG4gIGdldCBpc1JlcG9ydEZvckZpY2hlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmZvcm1FbmRwb2ludD8uaW5jbHVkZXMoJ2dldGFsbHBhZ2VkJyk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gY3RvclxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVwb3J0aW5nU2VydmljZTogUmVwb3J0aW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgaWRlbnRpdHlNYW5hZ2VyU2VydmljZTogSWRlbnRpdHlNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogVHNpTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IFRzaU1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhbGl6YXRpb246IExvY2FsaXplUGlwZSxcclxuICAgIHByaXZhdGUgcmVjb3JkSW5mb1BvcHVwU2VydmljZTogUmVjb3JkSW5mb1BvcHVwU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nRGF0YVNlcnZpY2U6IERpYWxvZ0RhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbGF5b3V0SGVscGVyU2VydmljZTogTGF5b3V0SGVscGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBfZmljaGllclNlcnZpY2U6IEZpY2hpZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3JcclxuICApIHsgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy9oYW5kbGUgTGlmZWN5Y2xlIEhvb2tzXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIGhhbmRsZSBldmVudHNcclxuICBvblByaW50RGVmYXVsdChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtTmFtZSkge1xyXG4gICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2VcclxuICAgICAgICAuZ2V0RGVmYXVsdFJlcG9ydCh0aGlzLmZvcm1OYW1lLCB0aGlzLnJlcG9ydERpc2NyaW1pbmF0b3IpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YTogUmVwb3J0VGVtcGxhdGVSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgLy8gbGV0IGRlZmF1bHRSZXBvcnRJZDogc3RyaW5nID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5fdmlld1JlcG9ydChkYXRhPy51aWQsIGRhdGEpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gSHR0cFN0YXR1c0NvZGUuTm90Rm91bmQpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRXhwb3J0UGRmKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1OYW1lKSB7XHJcbiAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZS5nZXREZWZhdWx0UmVwb3J0KHRoaXMuZm9ybU5hbWUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgICAgLy8gbGV0IGRlZmF1bHRSZXBvcnRJZDogc3RyaW5nID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuX2V4cG9ydFBkZihkYXRhLnVpZCwgZGF0YSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX25vX2RlZmF1bHRfcmVwb3J0X2ZvdW5kJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtTmFtZShmb3JtTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5yZXBvcnREaXNjcmltaW5hdG9yKVxyXG4gICAgICByZXR1cm4gYCR7Zm9ybU5hbWV9XyR7dGhpcy5yZXBvcnREaXNjcmltaW5hdG9yfWA7XHJcbiAgICBlbHNlIHJldHVybiBmb3JtTmFtZTtcclxuICB9XHJcblxyXG4gIG9uU2VuZFBkZihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAvLyBpZiAodGhpcy5mb3JtTmFtZSA9PSAnYXBwLWNyZWF0ZS1vci1lZGl0LWdlc2MtZG9jdW1lbnRzJykge1xyXG4gICAgLy8gICB0aGlzLl9kb2N1bWVudFNlcnZpY2UuZ2V0QnlJZCh0aGlzLmlkISkuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgICB0aGlzLl90aWVyU2VydmljZS5nZXRCeUlkKGRhdGEudGllcikuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgLy8gICAgICAgICAgIHRoaXMudG9TZW5kRW1haWwgPSBkYXRhLmVtYWlsO1xyXG4gICAgLy8gICAgICAgICB9LFxyXG4gICAgLy8gICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgLy8gICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gSHR0cFN0YXR1c0NvZGUuTm90Rm91bmQpIHtcclxuICAgIC8vICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoJ3NlbGVjdGVkX3RpZXJfbm90X2ZvdW5kJyk7XHJcbiAgICAvLyAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICB9LFxyXG4gICAgLy8gICAgICAgfSk7XHJcbiAgICAvLyAgICAgfSxcclxuICAgIC8vICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgLy8gICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZCkge1xyXG4gICAgLy8gICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKCdzZWxlY3RlZF9kb2N1bWVudF9ub3RfZm91bmQnKTtcclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICB9LFxyXG4gICAgLy8gICB9KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICh0aGlzLmZvcm1OYW1lKSB7XHJcbiAgICAvLyAgIHRoaXMucmVwb3J0aW5nU2VydmljZVxyXG4gICAgLy8gICAgIC5nZXREZWZhdWx0UmVwb3J0KHRoaXMuZm9ybU5hbWUsIHRoaXMucmVwb3J0RGlzY3JpbWluYXRvcilcclxuICAgIC8vICAgICAuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgLy8gICAgICAgICAvLyBsZXQgZGVmYXVsdFJlcG9ydElkOiBzdHJpbmcgPSBkYXRhO1xyXG4gICAgLy8gICAgICAgICB0aGlzLl9zZW5kUGRmKGRhdGEudWlkLCBkYXRhKTtcclxuICAgIC8vICAgICAgIH0sXHJcbiAgICAvLyAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgLy8gICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IEh0dHBTdGF0dXNDb2RlLk5vdEZvdW5kKSB7XHJcbiAgICAvLyAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5pbmZvTWVzc2FnZShcclxuICAgIC8vICAgICAgICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX25vX2RlZmF1bHRfcmVwb3J0X2ZvdW5kJ1xyXG4gICAgLy8gICAgICAgICAgICk7XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH0sXHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZW5kUGRmKFxyXG4gICAgaWQ6IHN0cmluZyxcclxuICAgIHJlcG9ydEluZm9ybWF0aW9uPzogUmVwb3J0VGVtcGxhdGVSZXNwb25zZVxyXG4gICk6IHZvaWQge1xyXG4gICAgLy8gaWYgKGlkICE9IHVuZGVmaW5lZCAmJiBpZCAhPSBudWxsKSB7XHJcbiAgICAvLyAgIC8vZ2V0IGVtYWlsIHBhcmFtZXRlcnNcclxuICAgIC8vICAgdGhpcy5fcGFyYW1ldHJlc0FwcGxpY2F0aW9uUGFpZVNlcnZpY2VcclxuICAgIC8vICAgICAuZ2V0UGFyYW1ldHJlQXBwbGljYXRpb25QYWllKClcclxuICAgIC8vICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAvLyAgICAgICB0aGlzLnBhcmFtZXRyZSA9IGRhdGE7XHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyAgIC8vIGNhc2UgdGhlcmUgaXMgZGVmYXVsdCByZXBvcnRcclxuICAgIC8vICAgaWYgKHRoaXMuZm9ybUVuZHBvaW50ICE9IHVuZGVmaW5lZCAmJiB0aGlzLmZvcm1FbmRwb2ludCAhPSBudWxsKSB7XHJcbiAgICAvLyAgICAgaWYgKCFyZXBvcnRJbmZvcm1hdGlvbikge1xyXG4gICAgLy8gICAgICAgcmVwb3J0SW5mb3JtYXRpb24gPSB0aGlzLnJlcG9ydHMuZmluZCgoeCkgPT4geC51aWQgPT0gaWQpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2VcclxuICAgIC8vICAgICAgIC5hZGRSZXBvcnRUb1ByaW50KFxyXG4gICAgLy8gICAgICAgICB0aGlzLl9uZXdSZXBvcnRUb1ByaW50KFxyXG4gICAgLy8gICAgICAgICAgIGlkLFxyXG4gICAgLy8gICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uPy5yZXBvcnRUeXBlLFxyXG4gICAgLy8gICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uPy5yZXN0RW5kcG9pbnRcclxuICAgIC8vICAgICAgICAgKVxyXG4gICAgLy8gICAgICAgKVxyXG4gICAgLy8gICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAvLyAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgIC8vICAgICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmIGRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAvLyAgICAgICAgICAgICB0aGlzLnJlcG9ydFRvUHJpbnRJZCA9IGRhdGEudWlkO1xyXG4gICAgLy8gICAgICAgICAgICAgbGV0IHNhdmVTdWJqZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgLy8gICAgICAgICAgICAgbGV0IG1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uRXh0cmFMYXJnZTtcclxuICAgIC8vICAgICAgICAgICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgLy8gICAgICAgICAgICAgICBkYXRhOiB7IHNhdmVTdWJqZWN0LCBlbWFpbDogdGhpcy50b1NlbmRFbWFpbCB9LFxyXG4gICAgLy8gICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgIC8vICAgICAgICAgICAgICAgd2lkdGg6IG1vZGFsU2l6ZS53aWR0aCxcclxuICAgIC8vICAgICAgICAgICAgICAgaGVpZ2h0OiBtb2RhbFNpemUuaGVpZ2h0LFxyXG4gICAgLy8gICAgICAgICAgICAgfTtcclxuICAgIC8vICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbihcclxuICAgIC8vICAgICAgICAgICAgICAgVHNpU2VuZE1haWxDb21wb25lbnQsXHJcbiAgICAvLyAgICAgICAgICAgICAgIGNvbmZcclxuICAgIC8vICAgICAgICAgICAgICk7XHJcbiAgICAvLyAgICAgICAgICAgICBzYXZlU3ViamVjdC5zdWJzY3JpYmUoKHZhbDogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZVxyXG4gICAgLy8gICAgICAgICAgICAgICAgIC5leHBvcnRSZXBvcnRGaWxlVG9QZGYodGhpcy5yZXBvcnRUb1ByaW50SWQhLnRvU3RyaW5nKCkpXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgIC8vICAgICAgICAgICAgICAgICAgIChibG9iKSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYXJhbWV0cmUuYXR0YWNobWVudHMpIHtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRyZS5hdHRhY2htZW50cyA9IFtdO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBuZXcgRmlsZShbYmxvYl0sICdSZXBvcnQucGRmJywge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGJsb2IudHlwZSxcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRyZS5hdHRhY2htZW50cy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJhbWV0cmVzQXBwbGljYXRpb25QYWllU2VydmljZVxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgIC5zZW5kTWFpbChcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1ldHJlLmZyb21BZGRyZXNzLFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nRGF0YVNlcnZpY2UuZ2V0RGF0YSgpPy50b0FkZHJlc3MsXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dEYXRhU2VydmljZS5nZXREYXRhKCk/Lm9iamV0LFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nRGF0YVNlcnZpY2UuZ2V0RGF0YSgpPy5tZXNzYWdlLFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0cmUuYXR0YWNobWVudHMsXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRyZS5ob3N0LFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0cmUuY3JlZGVudGlhbFVzZXIsXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRyZS5jcmVkZW50aWFsUFdELFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0cmUucG9ydCxcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1ldHJlLmZyb21OYW1lLFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nRGF0YVNlcnZpY2UuZ2V0RGF0YSgpPy5jY0FkZHJlc3NcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5pbmZvKFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxpemF0aW9uLnRyYW5zZm9ybShcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsaXphdGlvbktleXMuc2F2ZWRTdWNjZXNzZnVsbHlcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZG93bmxvYWRpbmcgdGhlIFBERicsIGVycm9yKTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgIC8vICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfcmVkaXJlY3RlZF90b19wcmludF9yZXBvcnRfc3VjY2Vzc2Z1bGx5J1xyXG4gICAgLy8gICAgICAgICAgICAgICApO1xyXG4gICAgLy8gICAgICAgICAgICAgfSk7XHJcbiAgICAvLyAgICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4ge1xyXG4gICAgLy8gICAgICAgICAgICAgICB0aGlzLl9jbG9zZU1vZGFsKHZhbCk7XHJcbiAgICAvLyAgICAgICAgICAgICB9KTtcclxuICAgIC8vICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIH0sXHJcblxyXG4gICAgLy8gICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlS2V5KTtcclxuICAgIC8vICAgICAgICAgfSxcclxuXHJcbiAgICAvLyAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICAvLyAgICAgICB9KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS5pbmZvTWVzc2FnZShcclxuICAgIC8vICAgICAnc2hhcmVkX3JlcG9ydGluZ19ub19kZWZhdWx0X3JlcG9ydF9mb3VuZCdcclxuICAgIC8vICAgKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2V4cG9ydFBkZihcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICByZXBvcnRJbmZvcm1hdGlvbj86IFJlcG9ydFRlbXBsYXRlUmVzcG9uc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5mb3JtRW5kcG9pbnQgIT0gdW5kZWZpbmVkICYmIHRoaXMuZm9ybUVuZHBvaW50ICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXJlcG9ydEluZm9ybWF0aW9uKSB7XHJcbiAgICAgICAgICByZXBvcnRJbmZvcm1hdGlvbiA9IHRoaXMucmVwb3J0cy5maW5kKCh4KSA9PiB4LnVpZCA9PSBpZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZighcmVwb3J0SW5mb3JtYXRpb24gfHwgIXJlcG9ydEluZm9ybWF0aW9uLnJlc3RFbmRwb2ludCl7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2VcclxuICAgICAgICAgIC5hZGRSZXBvcnRUb1ByaW50KFxyXG4gICAgICAgICAgICB0aGlzLl9uZXdSZXBvcnRUb1ByaW50KFxyXG4gICAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uPy5yZXBvcnRUeXBlLFxyXG4gICAgICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uPy5yZXN0RW5kcG9pbnRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmIGRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydFRvUHJpbnRJZCA9IGRhdGEudWlkO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAuZXhwb3J0UmVwb3J0RmlsZVRvUGRmKHRoaXMucmVwb3J0VG9QcmludElkIS50b1N0cmluZygpKVxyXG4gICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgIChibG9iKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBhLmRvd25sb2FkID0gJ1JlcG9ydC5wZGYnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZG93bmxvYWRpbmcgdGhlIFBERicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAgICAgICAgICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX3JlZGlyZWN0ZWRfdG9fcHJpbnRfcmVwb3J0X3N1Y2Nlc3NmdWxseSdcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLmVycm9yTWVzc2FnZUtleSk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4geyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoXHJcbiAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldE5vbWJyZUZpY2hpZXIoKSB7XHJcbiAgICBpZiAodGhpcy5pZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2ZpY2hpZXJTZXJ2aWNlXHJcbiAgICAgICAgLkdldE5vbWJyZUZpY2hpZXJKb2ludEJ5SWQodGhpcy5pZCA/PyBcIlwiKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbm9tYnJlRG9jdW1lbnRzSm9pbnRzID0gZGF0YTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2hvd1VwbG9hZERpYWxvZygpIHtcclxuXHJcbiAgICBjb25zdCBjb25mID0ge1xyXG4gICAgICBkYXRhOiB7fSxcclxuICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgIHdpZHRoOiB0aGlzLm1vZGFsU2l6ZSEud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUhLmhlaWdodCxcclxuICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVmID0gYXdhaXQgb3Blbk1vZGFsVXBsb2FkR3JpZCh0aGlzLl9pbmplY3RvciwgY29uZilcclxuXHJcbiAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VGaWxlTWFuYWdlQ29tcG9uZW50KCkpO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IGZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcztcclxuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogUHJvZ3Jlc3NFdmVudDxGaWxlUmVhZGVyPikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gZS50YXJnZXQ/LnJlc3VsdCBhcyBBcnJheUJ1ZmZlcjtcclxuICAgICAgICBpZiAoIWFycmF5QnVmZmVyKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGJhc2U2NENvbnRlbnQgPSB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQoYXJyYXlCdWZmZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBmaWNoaWVyVG9TZW5kID0gbmV3IEZpY2hpZXIoKTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLmRhdGVGaWNoaWVyID0gbmV3IERhdGUoKTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLm5vbSA9IGZpbGUubmFtZTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLm9iamV0ID0gJyc7XHJcbiAgICAgICAgZmljaGllclRvU2VuZC5ub21GaWNoaWVyQ29tcGxldCA9IGZpbGUubmFtZTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLmRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgZmljaGllclRvU2VuZC5jb250ZW51ID0gYmFzZTY0Q29udGVudDtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLnRhYmxlTGllZSA9IHRoaXMuYnVzaW5lc3NDbGFzcztcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLnBrZXkgPSB0aGlzLmlkO1xyXG4gICAgICAgIGZpY2hpZXJUb1NlbmQudHlwZUZpY2hpZXIgPSAnNDM3QzA4RDUtQzE2OS00MTY3LThEMzctRjhBQzZDOTA1RTIzJzsgLy8gVE9ETzogTW9tb1xyXG5cclxuICAgICAgICB0aGlzLl9maWNoaWVyU2VydmljZS5jcmVhdGUoZmljaGllclRvU2VuZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3ModGhpcy5sKFwiRmljaGllciBlbnJlZ2lzdHLDqSAhXCIpKTtcclxuICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLmwoXCJFcnJldXIgbG9ycyBkZSBs4oCZZW5yZWdpc3RyZW1lbnQgIVwiKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3dEaWFsb2coKSB7XHJcbiAgICB0aGlzLl9vcGVuTW9kYWwoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNob3dFeHBvcnRJbXBvcnREaWFsb2coKSB7XHJcbiAgICB0aGlzLl9kaWFsb2dSZWYgPSBhd2FpdCBvcGVuTWFuYWdlSW1wb3J0RXhwb3J0TW9kYWwodGhpcy5faW5qZWN0b3IsIHRoaXMuYnVzaW5lc3NDbGFzcywgdGhpcy5mb3JtTmFtZSwgdGhpcy5wYWdlZFJlcXVlc3QpXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT5cclxuICAgICAgdGhpcy5fY2xvc2VNb2RhbCh2YWwsIHRydWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJlc2VudGF0aW9uRGVzaWduZXJDb25maWcoKSB7XHJcbiAgICBpZiAodGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5pc0Rlc2lnbk1vZGUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuZnJvbVRzaUZvcm0pIHtcclxuICAgICAgdGhpcy50b2dnbGVEZXNpZ25Nb2RlLmVtaXQodHJ1ZSk7XHJcbiAgICAgIHRoaXMuX2xheW91dEhlbHBlclNlcnZpY2UuX2Rlc2lnbk1vZGVGb3JtU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5fZGVzaWduTW9kZUxpc3RTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbiAgcHJpdmF0ZSBfdmlld1JlcG9ydChcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICByZXBvcnRJbmZvcm1hdGlvbj86IFJlcG9ydFRlbXBsYXRlUmVzcG9uc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICAvLyBjYXNlIHRoZXJlIGlzIGRlZmF1bHQgcmVwb3J0XHJcbiAgICAgIGlmICh0aGlzLmZvcm1FbmRwb2ludCAhPSB1bmRlZmluZWQgJiYgdGhpcy5mb3JtRW5kcG9pbnQgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghcmVwb3J0SW5mb3JtYXRpb24pIHtcclxuICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uID0gdGhpcy5yZXBvcnRzLmZpbmQoKHgpID0+IHgudWlkID09IGlkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKCFyZXBvcnRJbmZvcm1hdGlvbiB8fCAhcmVwb3J0SW5mb3JtYXRpb24ucmVzdEVuZHBvaW50KXtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZVxyXG4gICAgICAgICAgLmFkZFJlcG9ydFRvUHJpbnQoXHJcbiAgICAgICAgICAgIHRoaXMuX25ld1JlcG9ydFRvUHJpbnQoXHJcbiAgICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgICAgcmVwb3J0SW5mb3JtYXRpb24/LnJlcG9ydFR5cGUsXHJcbiAgICAgICAgICAgICAgcmVwb3J0SW5mb3JtYXRpb24/LnJlc3RFbmRwb2ludFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgZGF0YSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0VG9QcmludElkID0gZGF0YS51aWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXBvcnRpbmdTZXJ2aWNlLmdldFJlcG9ydFRlbXBsYXRlQnlJZChpZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVuYW50VWlkID0gdGhpcy5pZGVudGl0eU1hbmFnZXJTZXJ2aWNlLnBhcnNlTXlBdXRoVG9rZW4oKT8udGVuYW50VWlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmxWaWV3ZXIgPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVwb3J0VHlwZSA9PT0gVHNpUmVwb3J0VHlwZS5MaXN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB1cmxWaWV3ZXIgPSBgJHtTZWdtZW50LnJlcG9ydGluZ1NlcnZpY2VCYXNlfS9yZXBvcnQtdmlld2VyLyR7dGhpcy5yZXBvcnRUb1ByaW50SWR9PyR7cXVlcnlQYXJhbU5hbWVzQ29uc3QudGVuYW50VWlkfT0ke3RlbmFudFVpZH1gO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5yZXBvcnRUeXBlID09PSBUc2lSZXBvcnRUeXBlLkRhc2hib2FyZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdXJsVmlld2VyID0gYCR7U2VnbWVudC5hcHBCYXNlSHJlZn0vJHtBcHBSb3V0ZXMuYXBwfS8ke0FwcFJvdXRlcy5kYXNoYm9hcmR9LyR7TWFuYWdlUmVwb3J0aW5nUm91dGVzLmRhc2hib2FyZFZpZXdlcn0/JHtxdWVyeVBhcmFtTmFtZXNDb25zdC5yZXBvcnRUb1ByaW50fT0ke3RoaXMucmVwb3J0VG9QcmludElkfSYke3F1ZXJ5UGFyYW1OYW1lc0NvbnN0LnRlbmFudFVpZH09JHt0ZW5hbnRVaWR9YDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEucmVwb3J0VHlwZSA9PT0gVHNpUmVwb3J0VHlwZS5SVEYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHVybFZpZXdlciA9IGAke1NlZ21lbnQucmVwb3J0aW5nU2VydmljZUJhc2V9L21haWxtZXJnZS1yZWFkb25seW1vZGUvJHt0aGlzLnJlcG9ydFRvUHJpbnRJZH0/JHtxdWVyeVBhcmFtTmFtZXNDb25zdC50ZW5hbnRVaWR9PSR7dGVuYW50VWlkfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmxWaWV3ZXIsICdfYmxhbmsnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAgICAgICAgICAgICAgICAgICAnc2hhcmVkX3JlcG9ydGluZ19yZWRpcmVjdGVkX3RvX3ByaW50X3JlcG9ydF9zdWNjZXNzZnVsbHknXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLmVycm9yTWVzc2FnZUtleSk7XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlS2V5KTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gbm8gZGVmYXVsdCByZXBvcnRcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKFxyXG4gICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX25vX2RlZmF1bHRfcmVwb3J0X2ZvdW5kJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbmV3UmVwb3J0VG9QcmludChcclxuICAgIHVpZDogc3RyaW5nLFxyXG4gICAgcmVwb3J0VHlwZTogbnVtYmVyLFxyXG4gICAgcmVzdEVuZHBvaW50Pzogc3RyaW5nLFxyXG4gICAgbW9kdWxlPzogc3RyaW5nLFxyXG4gICAgb3JkZXI/OiBudW1iZXIsXHJcbiAgICBzaG9ydE5hbWU/OiBzdHJpbmcsXHJcbiAgICBkaXNwbGF5PzogYm9vbGVhblxyXG4gICk6IFJlcG9ydFRvUHJpbnQge1xyXG4gICAgbGV0IHRva2VuID0gdGhpcy5pZGVudGl0eU1hbmFnZXJTZXJ2aWNlLmdldEF1dGhUb2tlbigpO1xyXG4gICAgbGV0IHVzZXJuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxyXG4gICAgICB0aGlzLmlkZW50aXR5TWFuYWdlclNlcnZpY2UucGFyc2VNeUF1dGhUb2tlbigpLm5hbWU7XHJcbiAgICBpZiAodXNlcm5hbWUpIHtcclxuICAgICAgaWYgKHVpZCAmJiAvKnRoaXMub3RoZXJGb3JtRW5kcG9pbnQgJiYgdGhpcy5vdGhlckZvcm1OYW1lICYmKi8gdG9rZW4pIHtcclxuICAgICAgICBsZXQgbmV3UmVwb3J0VG9QcmludDogUmVwb3J0VG9QcmludCA9IHtcclxuICAgICAgICAgIHJlcG9ydFRlbXBsYXRlVWlkOiB1aWQsXHJcbiAgICAgICAgICByZXN0RW5kcG9pbnQ6IHRoaXMuaXNSZXBvcnRGb3JGaWNoZVxyXG4gICAgICAgICAgICA/IHRoaXMucmVwb3J0aW5nU2VydmljZS5pbnNlcnROZXdVaWRJblJlc3RFbmRQb2ludChyZXN0RW5kcG9pbnQsIHRoaXMuaWQpID8/XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUVuZHBvaW50XHJcbiAgICAgICAgICAgIDogdGhpcy5mb3JtRW5kcG9pbnQsXHJcbiAgICAgICAgICByZXF1ZXN0RGF0YTogIXRoaXMuY3VzdG9tUmVwb3J0aW5nTW9kZSA/IHRoaXMuZm9ybUVuZHBvaW50Qm9keSA6IHRoaXMucmVxdWVzdERhdGEsXHJcbiAgICAgICAgICBmb3JtTmFtZTogdGhpcy5mb3JtTmFtZSxcclxuICAgICAgICAgIHJlcG9ydFR5cGU6IHJlcG9ydFR5cGUsXHJcbiAgICAgICAgICB1c2VybmFtZTogdXNlcm5hbWUsXHJcbiAgICAgICAgICB1c2VyVG9rZW46IHJlcG9ydFR5cGUgPT0gVHNpUmVwb3J0VHlwZS5EYXNoYm9hcmQgPyB1bmRlZmluZWQgOiB0b2tlbixcclxuICAgICAgICAgIGlzUGFnZWQ6IHRoaXMuaXNGb3JtRW5kcG9pbnRQYWdlZCA9PSB0cnVlID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgICAgaHRtbEZpbHRlcnNUZXh0OiB0aGlzLmZpbHRlcnNIdG1sVGVtcGxhdGUsXHJcbiAgICAgICAgICBvcHRpb25hbEVuZHBvaW50c0pzb246IHRoaXMub3B0aW9uYWxFbmRwb2ludHMsXHJcbiAgICAgICAgICBtb2R1bGU6IG1vZHVsZSxcclxuICAgICAgICAgIG9yZGVyOiBvcmRlcixcclxuICAgICAgICAgIHNob3J0TmFtZTogc2hvcnROYW1lLFxyXG4gICAgICAgICAgZGlzcGxheTogZGlzcGxheSxcclxuICAgICAgICAgIGh0dHBNZXRob2RUeXBlOiB0aGlzLmh0dHBNZXRob2RUeXBlXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ld1JlcG9ydFRvUHJpbnQ7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoXHJcbiAgICAgICAgICAnc29tZSBvZiB0aGUgcmVxdWlyZWQgcHJvcGVydGllcyA6IHVzZXIgdG9rZW4sIGZvcm1OYW1lLCBmb3JtRW5kcG9pbnQgb3Igc2VsZWN0ZWRSZXBvcnQgaGF2ZSBub3QgYmVlbiBzZXQgISdcclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBFcnJvcihcInByb3BlcnR5ICdVc2VyTmFtZSAnIG9mIGN1cnJlbnQgdXNlciBoYXZlIG5vdCBiZWVuIHNldCAhXCIpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfb3Blbk1vZGFsKCkge1xyXG4gICAgbGV0IGNvbmY6IER5bmFtaWNEaWFsb2dDb25maWc7XHJcbiAgICBjb25mID0ge1xyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgb3RoZXJGb3JtTmFtZTogdGhpcy5mb3JtTmFtZSxcclxuICAgICAgICBvdGhlckZvcm1FbmRwb2ludDogdGhpcy5mb3JtRW5kcG9pbnQsXHJcbiAgICAgICAgZm9ybUVuZHBvaW50Qm9keTogdGhpcy5mb3JtRW5kcG9pbnRCb2R5LFxyXG4gICAgICAgIGlzRm9ybUVuZHBvaW50UGFnZWQ6IHRoaXMuaXNGb3JtRW5kcG9pbnRQYWdlZCxcclxuICAgICAgICBmaWx0ZXJzSHRtbFRlbXBsYXRlOiB0aGlzLmZpbHRlcnNIdG1sVGVtcGxhdGUsXHJcbiAgICAgICAgb3B0aW9uYWxFbmRwb2ludHM6IHRoaXMub3B0aW9uYWxFbmRwb2ludHMsXHJcbiAgICAgICAgYnVzaW5lc3NDbGFzczogdGhpcy5idXNpbmVzc0NsYXNzLFxyXG4gICAgICAgIHJlcG9ydERpc2NyaW1pbmF0b3I6IHRoaXMucmVwb3J0RGlzY3JpbWluYXRvcixcclxuICAgICAgICBpZDogdGhpcy5pZCxcclxuICAgICAgICByZXF1ZXN0RGF0YTogdGhpcy5yZXF1ZXN0RGF0YSxcclxuICAgICAgICBjdXN0b21SZXBvcnRpbmdNb2RlOiB0aGlzLmN1c3RvbVJlcG9ydGluZ01vZGUsXHJcbiAgICAgICAgaHR0cE1ldGhvZFR5cGU6IHRoaXMuZ2V0SHR0cE1ldGhvZFR5cGUoKSxcclxuICAgICAgfSxcclxuICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgIHdpZHRoOiB0aGlzLm1vZGFsU2l6ZS53aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0aGlzLm1vZGFsU2l6ZS5oZWlnaHQsXHJcbiAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYgPSBhd2FpdCBvcGVuTWFuYWdlUmVwb3J0aW5nQ29tcG9uZW50KHRoaXMuX2luamVjdG9yLCBjb25mKTtcclxuXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VNb2RhbCh2YWwpKTtcclxuICB9XHJcblxyXG4gIGdldEh0dHBNZXRob2RUeXBlKCkge1xyXG4gICAgaWYgKHRoaXMuaXNSZXBvcnRGb3JGaWNoZSAmJiAhdGhpcy5jdXN0b21SZXBvcnRpbmdNb2RlKSB7XHJcbiAgICAgIHJldHVybiBIdHRwTWV0aG9kVHlwZS5HRVQ7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuaHR0cE1ldGhvZFR5cGUgJiYgdGhpcy5jdXN0b21SZXBvcnRpbmdNb2RlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmh0dHBNZXRob2RUeXBlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEh0dHBNZXRob2RUeXBlLlBPU1Q7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZUZpbGVNYW5hZ2VDb21wb25lbnQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsb3NlZE1vZGFsRmlsZVVwbG9hZC5lbWl0KHRydWUpO1xyXG4gICAgdGhpcy5fZGlhbG9nUmVmPy5kZXN0cm95KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jbG9zZU1vZGFsKHZhbD86IGFueSwgcmVmcmVzaERhdGE6IGJvb2xlYW4gPSBmYWxzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5yZWZyZXNoRGF0YS5lbWl0KHJlZnJlc2hEYXRhKTtcclxuICAgIHRoaXMuX2RpYWxvZ1JlZj8uZGVzdHJveSgpO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgb25SaWdodENsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIHRoaXMuX2dldEFsbFJlcG9ydHMoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSk7XHJcbiAgfVxyXG5cclxuICBoaWRlQ29udGV4dE1lbnUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IGZhbHNlO1xyXG4gICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAwLCB5OiAwIH07XHJcbiAgICAvLyB0aGlzLnJlcG9ydHMgPSBbXTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0Q29udGV4dE9wdGlvbihpdGVtOiBSZXBvcnRUZW1wbGF0ZVJlc3BvbnNlKTogdm9pZCB7XHJcbiAgICB0aGlzLl92aWV3UmVwb3J0KGl0ZW0udWlkKTtcclxuICAgIHRoaXMuaGlkZUNvbnRleHRNZW51KCk7XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRSZXBvcnRzKCkge1xyXG4gICAgdHJ5IHtcclxuICAgICAgdGhpcy5yZXBvcnRzID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20oXHJcbiAgICAgICAgdGhpcy5yZXBvcnRpbmdTZXJ2aWNlLmdldFJlcG9ydHMoXHJcbiAgICAgICAgICB0aGlzLmZvcm1OYW1lID8/ICcnLFxyXG4gICAgICAgICAgdGhpcy5yZXBvcnREaXNjcmltaW5hdG9yXHJcbiAgICAgICAgKVxyXG4gICAgICApO1xyXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcclxuICAgICAgdGhpcy5oaWRlQ29udGV4dE1lbnUoKTtcclxuICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlS2V5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgX2dldEFsbFJlcG9ydHMoY2xpY2tYOiBudW1iZXIsIGNsaWNrWTogbnVtYmVyKSB7XHJcbiAgICBhd2FpdCB0aGlzLmdldFJlcG9ydHMoKTtcclxuXHJcbiAgICBpZiAodGhpcy5yZXBvcnRzLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29uc3QgcmVjdCA9IHRoaXMud3JhcHBlclJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG5cclxuICAgICAgdGhpcy5jb250ZXh0TWVudVBvc2l0aW9uID0ge1xyXG4gICAgICAgIHg6IGNsaWNrWCAtIHJlY3QubGVmdCxcclxuICAgICAgICB5OiBjbGlja1kgLSByZWN0LnRvcCxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zaG93Q29udGV4dE1lbnUgPSB0cnVlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zaG93Q29udGV4dE1lbnUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgYXN5bmMgdmlld05vdGVzKCkge1xyXG4gICAgY29uc3QgcmVmID0gYXdhaXQgb3Blbk5vdGVzTGlzdCh0aGlzLl9pbmplY3RvcilcclxuICAgIHJlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gIH1cclxuXHJcbiAgdmlld0luZm8oZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKHRoaXMuaWQgIT0gdW5kZWZpbmVkICYmIHRoaXMuaWQgIT0gbnVsbCkge1xyXG4gICAgICB0aGlzLnJlY29yZEluZm9Qb3B1cFNlcnZpY2VcclxuICAgICAgICAuZ2V0SW5mbyh0aGlzLmJ1c2luZXNzQ2xhc3MhLCB0aGlzLmlkKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoXHJcbiAgICAgICAgICBhc3luYyAoZGF0YSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgbW9kYWxTaXplID0gTW9kYWxTaXplRW51bS5FeHRyYUxhcmdlO1xyXG4gICAgICAgICAgICBsZXQgdGV4dCA9XHJcbiAgICAgICAgICAgICAgJ1VJRCA6ICAnICtcclxuICAgICAgICAgICAgICB0aGlzLmlkICtcclxuICAgICAgICAgICAgICAnPEJSPkNyZWF0ZWQgYnkgOiAgJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5jcmVhdGlvblVzZXIgK1xyXG4gICAgICAgICAgICAgICc8QlI+TW9kaWZpZWQgYnkgOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLm1vZGlmVXNlciArXHJcbiAgICAgICAgICAgICAgJzxCUj5DcmVhdGVkIG9uIDogJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5kYXRlU2Fpc2llICtcclxuICAgICAgICAgICAgICAnPEJSPk1vZGlmaWVkIG9uIDogJyArXHJcbiAgICAgICAgICAgICAgZGF0YS5kYXRlTW9kaWY7XHJcblxyXG4gICAgICAgICAgICBsZXQgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZyA9IHtcclxuICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICBVaWQ6IHRoaXMuaWQsXHJcbiAgICAgICAgICAgICAgICBjcmVhdGlvblVzZXI6IGRhdGEuY3JlYXRpb25Vc2VyLFxyXG4gICAgICAgICAgICAgICAgbW9kaWZVc2VyOiBkYXRhLm1vZGlmVXNlcixcclxuICAgICAgICAgICAgICAgIGRhdGVTYWlzaWU6IGRhdGEuZGF0ZVNhaXNpZSxcclxuICAgICAgICAgICAgICAgIGRhdGVNb2RpZjogZGF0YS5kYXRlTW9kaWYsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgICAgICAgICAgICB3aWR0aDogJzkwcmVtJyxcclxuICAgICAgICAgICAgICBoZWlnaHQ6ICc4MHJlbScsXHJcbiAgICAgICAgICAgIH07XHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYgPSBhd2FpdCBvcGVuVHNpUG9wdXBUZXh0Vmlld2VyQ29tcG9uZW50KHRoaXMuX2luamVjdG9yLCBjb25mKVxyXG5cclxuICAgICAgICAgICAgdGhpcy5fZGlhbG9nUmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+XHJcbiAgICAgICAgICAgICAgdGhpcy5fY2xvc2VNb2RhbCh2YWwpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICB9XHJcblxyXG5cclxuICBhcnJheUJ1ZmZlclRvQmFzZTY0KGJ1ZmZlcjogQXJyYXlCdWZmZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGJpbmFyeSA9ICcnO1xyXG4gICAgY29uc3QgYnl0ZXMgPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xyXG4gICAgY29uc3QgbGVuID0gYnl0ZXMuYnl0ZUxlbmd0aDtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcclxuICAgICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGJ0b2EoYmluYXJ5KTtcclxuICB9XHJcblxyXG4gIGhpZGUodmFsPzogYW55KSB7XHJcbiAgICBpZiAodGhpcy5fZGlhbG9nUmVmICE9IG51bGwgJiYgdGhpcy5fZGlhbG9nUmVmICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICBpZiAodmFsID09IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy5fZGlhbG9nUmVmLmRlc3Ryb3koKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLl9kaWFsb2dSZWYuY2xvc2UodmFsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbChrZXk6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBpZiAodGhpcy5sb2NhbGl6ZSAhPSBudWxsXHJcbiAgICAgICYmIHRoaXMubG9jYWxpemUgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxvY2FsaXplLnRyYW5zZm9ybShrZXkpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGtleTtcclxuICB9XHJcbn1cclxuIiwiPGRpdiBjbGFzcz1cImZsZXggZ2FwLTIgbXgtMlwiPlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiZm9ybUVuZHBvaW50IHx8IGJ1c2luZXNzQ2xhc3NcIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwibWFuYWdlX3JlcG9ydHNfYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgPlxyXG4gICAgPFRzaS1CdXR0b25cclxuICAgICAgW2Rpc2FibGVkXT1cImlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIFtpY29uU3JjXT1cIicuL2Fzc2V0cy9pY29ucy9pY29uLXByaW50ZXItZ3JvdXAtd2hpdGUucG5nJ1wiXHJcbiAgICAgIFtpY29uV2lkdGhdPVwiMjBcIlxyXG4gICAgICBbdG9vbHRpcFRleHRdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfbWFuYWdlX3JlcG9ydHMnXCJcclxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5IGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAoY2xpY2spPVwic2hvd0RpYWxvZygpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJmb3JtRW5kcG9pbnQgfHwgYnVzaW5lc3NDbGFzc1wiXHJcbiAgICBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJwcmludF9kZWZhdWx0X3JlcG9ydF9idXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGJ0bi13cmFwcGVyXCJcclxuICAgICN3cmFwcGVyXHJcbiAgPlxyXG4gICAgPFRzaS1CdXR0b25cclxuICAgICAgW2Rpc2FibGVkXT1cImlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGljb249XCJwaSBwaS1wcmludCBwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tbGVmdFwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX3JlcG9ydGluZ19yaWdodENsaWNrJ1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeSBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgKGNsaWNrKT1cIm9uUHJpbnREZWZhdWx0KCRldmVudClcIlxyXG4gICAgICAocmlnaHRDbGljayk9XCJvblJpZ2h0Q2xpY2soJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgICA8IS0tIGBzaGFyZWRfcmVwb3J0aW5nX3ByaW50X3JlcG9ydGAga2V5IGZvciBgSW1wcmltZXJgIHRleHQgIChyZXBsYWNlIGl0IGFzIHZhbHVlIG9yIHRvb2x0aXAgaWYgbmVlZCBpdCkgLS0+XHJcblxyXG4gICAgPGRpdlxyXG4gICAgICAqbmdJZj1cInNob3dDb250ZXh0TWVudVwiXHJcbiAgICAgIGNsYXNzPVwiY29udGV4dC1tZW51XCJcclxuICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICd0b3AucHgnOiBjb250ZXh0TWVudVBvc2l0aW9uLnksXHJcbiAgICAgICAgJ2xlZnQucHgnOiBjb250ZXh0TWVudVBvc2l0aW9uLnhcclxuICAgICAgfVwiXHJcbiAgICAgIChtb3VzZWxlYXZlKT1cImhpZGVDb250ZXh0TWVudSgpXCJcclxuICAgID5cclxuICAgICAgPGRpdlxyXG4gICAgICAgICpuZ0Zvcj1cImxldCByZXBvcnQgb2YgcmVwb3J0c1wiXHJcbiAgICAgICAgY2xhc3M9XCJtZW51LWl0ZW1cIlxyXG4gICAgICAgIChjbGljayk9XCJvblNlbGVjdENvbnRleHRPcHRpb24ocmVwb3J0KVwiXHJcbiAgICAgID5cclxuICAgICAgICB7eyByZXBvcnQubmFtZSB9fVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cImJ1c2luZXNzQ2xhc3MgJiYgc2hvd1VwbG9hZEJ1dHRvblwiXHJcbiAgICBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJhdHRhY2htZW50X2J1dHRvblwiXHJcbiAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gID5cclxuICAgIDxUc2ktQnV0dG9uXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktcGFwZXJjbGlwIHAtYnV0dG9uLWljb25cIlxyXG4gICAgICBbdG9vbHRpcFRleHRdPVwiJ3NoYXJlZF9hY3Rpb25zX2F0dGFjaG1lbnQnXCJcclxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5IGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAoY2xpY2spPVwic2hvd1VwbG9hZERpYWxvZygpXCJcclxuICAgICAgKGRyYWdvdmVyKT1cIm9uRHJhZ092ZXIoJGV2ZW50KVwiXHJcbiAgICAgIChkcm9wKT1cIm9uRHJvcCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgIDxzcGFuICpuZ0lmPVwibm9tYnJlRG9jdW1lbnRzSm9pbnRzICYmIG5vbWJyZURvY3VtZW50c0pvaW50cyA+IDBcIiBjbGFzcz1cImN1c3RvbS1iYWRnZVwiPlxyXG4gICAgICB7eyBub21icmVEb2N1bWVudHNKb2ludHMgfX1cclxuICAgIDwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJmb3JtRW5kcG9pbnQgfHwgYnVzaW5lc3NDbGFzc1wiXHJcbiAgICBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJzZW5kX3JlcG9ydF9ieV9lbWFpbF9idXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgaWNvbj1cInBpIHBpLXNlbmQgcC1idXR0b24taWNvbiBwLWJ1dHRvbi1pY29uLWxlZnRcIlxyXG4gICAgICBbdG9vbHRpcFRleHRdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfc2VuZF9tYWlsJ1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXNlY29uZGFyeSBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgKGNsaWNrKT1cIm9uU2VuZFBkZigkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cImJ1c2luZXNzQ2xhc3MgJiYgc2hvd0ltcG9ydEV4cG9ydEJ1dHRvblwiXHJcbiAgICBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJpbXBvcnRfZXhwb3J0X2J1dHRvblwiXHJcbiAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gID5cclxuICAgIDxUc2ktQnV0dG9uXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktYXJyb3ctcmlnaHQtYXJyb3ctbGVmdCBwLWJ1dHRvbi1pY29uXCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfcmVwb3J0aW5nX21hbmFnZV9leHBvcnRfaW1wb3J0J1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXN1Y2Nlc3MgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgIChjbGljayk9XCJzaG93RXhwb3J0SW1wb3J0RGlhbG9nKClcIlxyXG4gICAgPlxyXG4gICAgPC9Uc2ktQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInNob3dOb3RlQnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJzaGFyZWRfc2hvd19ub3Rlc19idXR0b25cIlxyXG4gID5cclxuICAgIDxUc2ktQnV0dG9uXHJcbiAgICAgIGlkPVwie3sgY29uZmlnTW9kZUJ1dHRvbklkIH19XCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGljb249XCJwaSBwaS1jb21tZW50IHAtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0XCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfdHNpX2NvbXBvbmVudF9nZXN0aW9uX2Rlc19ub3RlcydcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi13YXJuaW5nIGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHkgdGV4dC13aGl0ZVwiXHJcbiAgICAgIChjbGljayk9XCJ2aWV3Tm90ZXMoKVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJzaG93SW5mb0J1dHRvblwiXHJcbiAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gICAgcHJlc2VudGF0aW9uRGVzaWduZXJCYXNlPVwic2hhcmVkX3Nob3dfaW5mb19idXR0b25cIlxyXG4gID5cclxuICAgIDxUc2ktQnV0dG9uXHJcbiAgICAgIGlkPVwiJ3Nob3ctaW5mby1idXR0b24nXCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGljb249XCJwaSBwaS1pbmZvIHAtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0XCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfYWN0aW9uc19pbmZvJ1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLWluZm8gaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seSB0ZXh0LXdoaXRlXCJcclxuICAgICAgKGNsaWNrKT1cInZpZXdJbmZvKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9Uc2ktQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInNob3dQcmVzZW50YXRpb25EZXNpZ25lckNvbmZpZ0J1dHRvblwiXHJcbiAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gID5cclxuICAgIDxUc2ktQnV0dG9uXHJcbiAgICAgIGlkPVwie3sgY29uZmlnTW9kZUJ1dHRvbklkIH19XCJcclxuICAgICAgW2Rpc2FibGVkXT1cImlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGljb249XCJwaSBwaS1leWUgcC1idXR0b24taWNvbiBwLWJ1dHRvbi1pY29uLWxlZnRcIlxyXG4gICAgICBbdG9vbHRpcFRleHRdPVwiJ3NoYXJlZF90c2lfY29tcG9uZW50X2NvbmZpZ19zaG93X2hpZGUnXCJcclxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc3VjY2VzcyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgKGNsaWNrKT1cInByZXNlbnRhdGlvbkRlc2lnbmVyQ29uZmlnKClcIlxyXG4gICAgPlxyXG4gICAgPC9Uc2ktQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuPC9kaXY+XHJcblxyXG48IS0tIDxkaXYgKm5nSWY9XCJzaG93Q29udGV4dE1lbnVcIlxyXG4gIGNsYXNzPVwiY29udGV4dC1tZW51XCJcclxuICBbbmdTdHlsZV09XCJ7XHJcbiAgICAndG9wLnB4JzogY29udGV4dE1lbnVQb3NpdGlvbi55LFxyXG4gICAgJ2xlZnQucHgnOiBjb250ZXh0TWVudVBvc2l0aW9uLnhcclxuICB9XCJcclxuICAobW91c2VsZWF2ZSk9XCJoaWRlQ29udGV4dE1lbnUoKVwiPlxyXG4gIDxkaXYgKm5nRm9yPVwibGV0IHJlcG9ydCBvZiByZXBvcnRzXCJcclxuICAgIGNsYXNzPVwibWVudS1pdGVtXCJcclxuICAgIChjbGljayk9XCJvblNlbGVjdENvbnRleHRPcHRpb24ocmVwb3J0KVwiPlxyXG4gICAge3tyZXBvcnQubmFtZX19XHJcbiAgPC9kaXY+XHJcbjwvZGl2PiAtLT5cclxuIl19
729
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwb3J0aW5nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9yZXBvcnRpbmcvcmVwb3J0aW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RzaS1zaGFyZWQtdWkvc3JjL2xpYi90c2ktY29tcG9uZW50cy9yZXBvcnRpbmcvcmVwb3J0aW5nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBcUIsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQXVCLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlJLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUMzQyxPQUFPLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFM0UsT0FBTyxFQUE2QyxPQUFPLEVBQThCLE1BQU0sY0FBYyxDQUFDO0FBRTlHLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQU96RCxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsNEJBQTRCLEVBQUUsbUJBQW1CLEVBQUUsYUFBYSxFQUFFLCtCQUErQixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFJckwsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BE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LGtCQUFrQjtrQkFMOUIsU0FBUzsrQkFDRSxlQUFlO3djQWNoQixzQkFBc0I7c0JBQTlCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFNRiwwQkFBMEI7c0JBRDdCLEtBQUs7Z0JBU0ksTUFBTTtzQkFBZixNQUFNO2dCQUVFLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csbUJBQW1CO3NCQUEzQixLQUFLO2dCQUNHLG1CQUFtQjtzQkFBM0IsS0FBSztnQkFDRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRixtQkFBbUI7c0JBRHRCLEtBQUs7Z0JBWUYscUJBQXFCO3NCQUR4QixLQUFLO2dCQWNGLEVBQUU7c0JBREwsS0FBSztnQkFTRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBSUssZ0JBQWdCO3NCQUQxQixLQUFLO2dCQVlLLFdBQVc7c0JBRHJCLEtBQUs7Z0JBWUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUtQLFVBQVU7c0JBRFQsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UsIEh0dHBTdGF0dXNDb2RlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEVudmlyb25tZW50SW5qZWN0b3IsIEV2ZW50RW1pdHRlciwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFRvb2x0aXBQb3NpdGlvbiB9IGZyb20gJy4uLy4uL2VudW1zL3Rvb2x0aXBQb3NpdGlvbi5lbnVtJztcclxuaW1wb3J0IHsgU2VnbWVudCB9IGZyb20gJy4uLy4uL2VuZC1wb2ludHMnO1xyXG5pbXBvcnQgeyBNb2RhbFNpemVFbnVtLCBIdHRwTWV0aG9kVHlwZSwgVHNpUmVwb3J0VHlwZSB9IGZyb20gJy4uLy4uL2VudW1zJztcclxuaW1wb3J0IHsgSU1vZGFsU2l6ZSwgSVBhZ2VkUmVxdWVzdCB9IGZyb20gJy4uLy4uL2ludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBPcHRpb25hbEVuZHBvaW50cywgUmVwb3J0VGVtcGxhdGVSZXNwb25zZSwgRmljaGllciwgUmVwb3J0VG9QcmludCwgU2VhcmNoRmllbGQgfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xyXG5pbXBvcnQgeyBGaWNoaWVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpY2hpZXIvZmljaGllci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgcXVlcnlQYXJhbU5hbWVzQ29uc3QgfSBmcm9tICcuLi8uLi9jb25zdHMvcXVlcnlQYXJhbU5hbWVzLmNvbnN0JztcclxuaW1wb3J0IHsgTG9jYWxpemVQaXBlIH0gZnJvbSAnLi4vLi4vcGlwZXMvbG9jYWxpemUucGlwZSc7XHJcbmltcG9ydCB7IExheW91dEhlbHBlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9sYXlvdXQvbGF5b3V0LWhlbHBlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVjb3JkSW5mb1BvcHVwU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY29yZC1pbmZvLXBvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBUc2lNZXNzYWdlU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi90c2ktbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgVHNpTm90aWZpY2F0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL25vdGlmaWNhdGlvbi90c2ktbm90aWZpY2F0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJZGVudGl0eU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYXV0aG9yaXphdGlvbi9pZGVudGl0eS1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXBvcnRpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvcmVwb3J0aW5nL3JlcG9ydGluZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgb3Blbk1hbmFnZUltcG9ydEV4cG9ydE1vZGFsLCBvcGVuTWFuYWdlUmVwb3J0aW5nQ29tcG9uZW50LCBvcGVuTW9kYWxVcGxvYWRHcmlkLCBvcGVuTm90ZXNMaXN0LCBvcGVuVHNpUG9wdXBUZXh0Vmlld2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZnVuY3Rpb25zL21vZGFsLW9wZW4uZnVuY3Rpb24nO1xyXG5pbXBvcnQgeyBEaWFsb2dTZXJ2aWNlLCBEeW5hbWljRGlhbG9nQ29uZmlnLCBEeW5hbWljRGlhbG9nUmVmIH0gZnJvbSAncHJpbWVuZy9keW5hbWljZGlhbG9nJztcclxuaW1wb3J0IHsgRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbm90aWZpY2F0aW9uL2Vycm9yLXJlc3BvbnNlLW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IERpYWxvZ0RhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGlhbG9nLWRhdGEuc2VydmljZSc7XHJcbmltcG9ydCB7IEFwcFJvdXRlcyB9IGZyb20gJy4uLy4uL3JvdXRlcy9hcHAucm91dGVzJztcclxuaW1wb3J0IHsgTWFuYWdlUmVwb3J0aW5nUm91dGVzIH0gZnJvbSAnLi4vLi4vcm91dGVzL21hbmFnZS1yZXBvcnRpbmcucm91dGVzJztcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdhcHAtcmVwb3J0aW5nJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmVwb3J0aW5nLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yZXBvcnRpbmcuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIFJlcG9ydGluZ0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcclxuICAvLyNyZWdpb24gcHJvcGVydGllc1xyXG4gIHJlcG9ydFRvUHJpbnRJZDogbnVtYmVyIHwgdW5kZWZpbmVkO1xyXG4gIHRvU2VuZEVtYWlsOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIGxvY2FsaXplPyA9IGluamVjdChMb2NhbGl6ZVBpcGUpXHJcbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvck1lc3NhZ2VLZXk6IHN0cmluZyA9ICdzaGFyZWRfcmVwb3J0aW5nX2Vycm9yX29jY3VyZWQnO1xyXG4gIG1vZGFsU2l6ZTogSU1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uTGFyZ2U7XHJcbiAgcHJpdmF0ZSBfZGlhbG9nUmVmPzogRHluYW1pY0RpYWxvZ1JlZjtcclxuICBwcml2YXRlIF9yZXBvcnREaXNjcmltaW5hdG9yOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgLy8gcGFyYW1ldHJlOiBQYXJhbWV0cmVzQXBwbGljYXRpb25QYWllID0gbmV3IFBhcmFtZXRyZXNBcHBsaWNhdGlvblBhaWUoKTtcclxuICBASW5wdXQoKSBzaG93SW1wb3J0RXhwb3J0QnV0dG9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBASW5wdXQoKSBzaG93Tm90ZUJ1dHRvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0luZm9CdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dVcGxvYWRCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBzaG93UHJlc2VudGF0aW9uRGVzaWduZXJDb25maWdCdXR0b246IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHByaXZhdGUgX2lzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZ2V0IGlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkO1xyXG4gIH1cclxuXHJcbiAgc2V0IGlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZCA9IHZhbHVlO1xyXG4gIH1cclxuICAvLyNlbmRyZWdpb25cclxuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcbiAgLy8jcmVnaW9uIElucHV0IHByb3BlcnRpZXNcclxuICBASW5wdXQoKSBmb3JtTmFtZTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvL2Zvcm1JZGVudGlmaWVyXHJcbiAgQElucHV0KCkgZm9ybUVuZHBvaW50OiBzdHJpbmcgfCB1bmRlZmluZWQ7IC8vPSBgJHtHZXN0aW9uQ29tbWVyY2lhbGVTZWdtZW50cy5mYWN0dXJlVmVudGV9LzE2NWVjNWZkLTRkMzQtNDU0Ni1hZTE1LTAwNDRlNzA4YjlkOWA7XHJcbiAgQElucHV0KCkgZm9ybUVuZHBvaW50Qm9keTogc3RyaW5nIHwgdW5kZWZpbmVkOyAvL2Zvcm1JZGVudGlmaWVyXHJcbiAgQElucHV0KCkgaXNGb3JtRW5kcG9pbnRQYWdlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIGZpbHRlcnNIdG1sVGVtcGxhdGU6IHN0cmluZyB8IHVuZGVmaW5lZDtcclxuICBASW5wdXQoKSBvcHRpb25hbEVuZHBvaW50cz86IE9wdGlvbmFsRW5kcG9pbnRzO1xyXG4gIEBJbnB1dCgpIGJ1c2luZXNzQ2xhc3M/OiBzdHJpbmc7XHJcbiAgQElucHV0KCkgY3VkQ29tcG9uZW50OiBhbnk7XHJcbiAgQElucHV0KCkgaHR0cE1ldGhvZFR5cGUgPzogc3RyaW5nXHJcbiAgQElucHV0KCkgcmVxdWVzdERhdGE/OiBhbnk7XHJcbiAgQElucHV0KCkgY3VzdG9tUmVwb3J0aW5nTW9kZT86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcGFnZWRSZXF1ZXN0PzogSVBhZ2VkUmVxdWVzdDtcclxuICBASW5wdXQoKVxyXG4gIGdldCByZXBvcnREaXNjcmltaW5hdG9yKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fcmVwb3J0RGlzY3JpbWluYXRvcjtcclxuICB9XHJcblxyXG4gIHNldCByZXBvcnREaXNjcmltaW5hdG9yKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX3JlcG9ydERpc2NyaW1pbmF0b3IgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XHJcbiAgcHVibGljIF9ub21icmVEb2N1bWVudHNKb2ludHM6IG51bWJlciA9IDA7XHJcbiAgQElucHV0KClcclxuICBnZXQgbm9tYnJlRG9jdW1lbnRzSm9pbnRzKCk6IG51bWJlciB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5fbm9tYnJlRG9jdW1lbnRzSm9pbnRzO1xyXG4gIH1cclxuXHJcbiAgc2V0IG5vbWJyZURvY3VtZW50c0pvaW50cyh2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBpZiAodmFsdWUgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHRoaXMuX25vbWJyZURvY3VtZW50c0pvaW50cyA9IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLl9ub21icmVEb2N1bWVudHNKb2ludHMgPSB2YWx1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGlkKHZhbHVlOiBzdHJpbmcgfCB1bmRlZmluZWQpIHtcclxuICAgIHRoaXMuX2lkID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgaWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIHJldHVybiB0aGlzLl9pZDtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZ01vZGVCdXR0b25JZDogc3RyaW5nID0gJ3Nob3ctaGlkZS1jb25maWctYnV0dG9uJztcclxuXHJcbiAgcHJpdmF0ZSBfc2VsZWN0ZWRJdGVtVWlkczogQXJyYXk8YW55PiA9IFtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZWxlY3RlZEl0ZW1VaWRzKGxpc3RVaWRzOiBBcnJheTxhbnk+W10pIHtcclxuICAgIHRoaXMuX3NlbGVjdGVkSXRlbVVpZHMgPSBsaXN0VWlkcztcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRJdGVtVWlkcygpOiBBcnJheTxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEl0ZW1VaWRzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZnJvbVRzaUZvcm0gOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBmcm9tVHNpRm9ybSh2YWx1ZSA6IGJvb2xlYW4pe1xyXG4gICAgdGhpcy5fZnJvbVRzaUZvcm0gPSB2YWx1ZVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBmcm9tVHNpRm9ybSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuX2Zyb21Uc2lGb3JtXHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIE91dHB1dCBwcm9wZXJ0aWVzXHJcbiAgQE91dHB1dCgpIHJlZnJlc2hEYXRhOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcbiAgQE91dHB1dCgpIGNsb3NlZE1vZGFsRmlsZVVwbG9hZDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIEBPdXRwdXQoKSB0b2dnbGVEZXNpZ25Nb2RlOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxyXG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBAVmlld0NoaWxkKCd3cmFwcGVyJywgeyByZWFkOiBFbGVtZW50UmVmIH0pXHJcbiAgd3JhcHBlclJlZiE6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICByZXBvcnRzOiBSZXBvcnRUZW1wbGF0ZVJlc3BvbnNlW10gPSBbXTtcclxuICBzaG93Q29udGV4dE1lbnUgPSBmYWxzZTtcclxuICBjb250ZXh0TWVudVBvc2l0aW9uID0geyB4OiAwLCB5OiAwIH07XHJcblxyXG4gIHRvb2x0aXBQb3NpdGlvbiA9IFRvb2x0aXBQb3NpdGlvbi5Ub3A7XHJcblxyXG4gIGdldCBpc1JlcG9ydEZvckZpY2hlKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuICF0aGlzLmZvcm1FbmRwb2ludD8uaW5jbHVkZXMoJ2dldGFsbHBhZ2VkJyk7XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gY3RvclxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nU2VydmljZTogRGlhbG9nU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVwb3J0aW5nU2VydmljZTogUmVwb3J0aW5nU2VydmljZSxcclxuICAgIHByaXZhdGUgaWRlbnRpdHlNYW5hZ2VyU2VydmljZTogSWRlbnRpdHlNYW5hZ2VyU2VydmljZSxcclxuICAgIHByaXZhdGUgbm90aWZpY2F0aW9uU2VydmljZTogVHNpTm90aWZpY2F0aW9uU2VydmljZSxcclxuICAgIHByaXZhdGUgbWVzc2FnZVNlcnZpY2U6IFRzaU1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBsb2NhbGl6YXRpb246IExvY2FsaXplUGlwZSxcclxuICAgIHByaXZhdGUgcmVjb3JkSW5mb1BvcHVwU2VydmljZTogUmVjb3JkSW5mb1BvcHVwU2VydmljZSxcclxuICAgIHByaXZhdGUgX2Vycm9yUmVzcG9uc2VNYW5hZ2VyU2VydmljZTogRXJyb3JSZXNwb25zZU1hbmFnZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfZGlhbG9nRGF0YVNlcnZpY2U6IERpYWxvZ0RhdGFTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfbGF5b3V0SGVscGVyU2VydmljZTogTGF5b3V0SGVscGVyU2VydmljZSxcclxuICAgIHB1YmxpYyBfZmljaGllclNlcnZpY2U6IEZpY2hpZXJTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSBfaW5qZWN0b3I6IEVudmlyb25tZW50SW5qZWN0b3JcclxuICApIHsgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy9oYW5kbGUgTGlmZWN5Y2xlIEhvb2tzXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgfVxyXG5cclxuICAvLyNlbmRyZWdpb25cclxuXHJcbiAgLy8jcmVnaW9uIGhhbmRsZSBldmVudHNcclxuICBvblByaW50RGVmYXVsdChldmVudDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5mb3JtTmFtZSkge1xyXG4gICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2VcclxuICAgICAgICAuZ2V0RGVmYXVsdFJlcG9ydCh0aGlzLmZvcm1OYW1lLCB0aGlzLnJlcG9ydERpc2NyaW1pbmF0b3IpXHJcbiAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICBuZXh0OiAoZGF0YTogUmVwb3J0VGVtcGxhdGVSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhkYXRhKTtcclxuICAgICAgICAgICAgLy8gbGV0IGRlZmF1bHRSZXBvcnRJZDogc3RyaW5nID0gZGF0YTtcclxuICAgICAgICAgICAgdGhpcy5fdmlld1JlcG9ydChkYXRhPy51aWQsIGRhdGEpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAocmVzcG9uc2U6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gSHR0cFN0YXR1c0NvZGUuTm90Rm91bmQpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG9uRXhwb3J0UGRmKGV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmZvcm1OYW1lKSB7XHJcbiAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZS5nZXREZWZhdWx0UmVwb3J0KHRoaXMuZm9ybU5hbWUpLnN1YnNjcmliZSh7XHJcbiAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgICAgICAgLy8gbGV0IGRlZmF1bHRSZXBvcnRJZDogc3RyaW5nID0gZGF0YTtcclxuICAgICAgICAgIHRoaXMuX2V4cG9ydFBkZihkYXRhLnVpZCwgZGF0YSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZCkge1xyXG4gICAgICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKFxyXG4gICAgICAgICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX25vX2RlZmF1bHRfcmVwb3J0X2ZvdW5kJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRGb3JtTmFtZShmb3JtTmFtZTogc3RyaW5nKSB7XHJcbiAgICBpZiAodGhpcy5yZXBvcnREaXNjcmltaW5hdG9yKVxyXG4gICAgICByZXR1cm4gYCR7Zm9ybU5hbWV9XyR7dGhpcy5yZXBvcnREaXNjcmltaW5hdG9yfWA7XHJcbiAgICBlbHNlIHJldHVybiBmb3JtTmFtZTtcclxuICB9XHJcblxyXG4gIG9uU2VuZFBkZihldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAvLyBpZiAodGhpcy5mb3JtTmFtZSA9PSAnYXBwLWNyZWF0ZS1vci1lZGl0LWdlc2MtZG9jdW1lbnRzJykge1xyXG4gICAgLy8gICB0aGlzLl9kb2N1bWVudFNlcnZpY2UuZ2V0QnlJZCh0aGlzLmlkISkuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICBuZXh0OiAoZGF0YTogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgICB0aGlzLl90aWVyU2VydmljZS5nZXRCeUlkKGRhdGEudGllcikuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgLy8gICAgICAgICAgIHRoaXMudG9TZW5kRW1haWwgPSBkYXRhLmVtYWlsO1xyXG4gICAgLy8gICAgICAgICB9LFxyXG4gICAgLy8gICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgLy8gICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT0gSHR0cFN0YXR1c0NvZGUuTm90Rm91bmQpIHtcclxuICAgIC8vICAgICAgICAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoJ3NlbGVjdGVkX3RpZXJfbm90X2ZvdW5kJyk7XHJcbiAgICAvLyAgICAgICAgICAgfVxyXG4gICAgLy8gICAgICAgICB9LFxyXG4gICAgLy8gICAgICAgfSk7XHJcbiAgICAvLyAgICAgfSxcclxuICAgIC8vICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgLy8gICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PSBIdHRwU3RhdHVzQ29kZS5Ob3RGb3VuZCkge1xyXG4gICAgLy8gICAgICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKCdzZWxlY3RlZF9kb2N1bWVudF9ub3RfZm91bmQnKTtcclxuICAgIC8vICAgICAgIH1cclxuICAgIC8vICAgICB9LFxyXG4gICAgLy8gICB9KTtcclxuICAgIC8vIH1cclxuICAgIC8vIGlmICh0aGlzLmZvcm1OYW1lKSB7XHJcbiAgICAvLyAgIHRoaXMucmVwb3J0aW5nU2VydmljZVxyXG4gICAgLy8gICAgIC5nZXREZWZhdWx0UmVwb3J0KHRoaXMuZm9ybU5hbWUsIHRoaXMucmVwb3J0RGlzY3JpbWluYXRvcilcclxuICAgIC8vICAgICAuc3Vic2NyaWJlKHtcclxuICAgIC8vICAgICAgIG5leHQ6IChkYXRhKSA9PiB7XHJcbiAgICAvLyAgICAgICAgIGNvbnNvbGUubG9nKGRhdGEpO1xyXG4gICAgLy8gICAgICAgICAvLyBsZXQgZGVmYXVsdFJlcG9ydElkOiBzdHJpbmcgPSBkYXRhO1xyXG4gICAgLy8gICAgICAgICB0aGlzLl9zZW5kUGRmKGRhdGEudWlkLCBkYXRhKTtcclxuICAgIC8vICAgICAgIH0sXHJcbiAgICAvLyAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgLy8gICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09IEh0dHBTdGF0dXNDb2RlLk5vdEZvdW5kKSB7XHJcbiAgICAvLyAgICAgICAgICAgdGhpcy5tZXNzYWdlU2VydmljZS5pbmZvTWVzc2FnZShcclxuICAgIC8vICAgICAgICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX25vX2RlZmF1bHRfcmVwb3J0X2ZvdW5kJ1xyXG4gICAgLy8gICAgICAgICAgICk7XHJcbiAgICAvLyAgICAgICAgIH1cclxuICAgIC8vICAgICAgIH0sXHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZW5kUGRmKFxyXG4gICAgaWQ6IHN0cmluZyxcclxuICAgIHJlcG9ydEluZm9ybWF0aW9uPzogUmVwb3J0VGVtcGxhdGVSZXNwb25zZVxyXG4gICk6IHZvaWQge1xyXG4gICAgLy8gaWYgKGlkICE9IHVuZGVmaW5lZCAmJiBpZCAhPSBudWxsKSB7XHJcbiAgICAvLyAgIC8vZ2V0IGVtYWlsIHBhcmFtZXRlcnNcclxuICAgIC8vICAgdGhpcy5fcGFyYW1ldHJlc0FwcGxpY2F0aW9uUGFpZVNlcnZpY2VcclxuICAgIC8vICAgICAuZ2V0UGFyYW1ldHJlQXBwbGljYXRpb25QYWllKClcclxuICAgIC8vICAgICAuc3Vic2NyaWJlKChkYXRhKSA9PiB7XHJcbiAgICAvLyAgICAgICB0aGlzLnBhcmFtZXRyZSA9IGRhdGE7XHJcbiAgICAvLyAgICAgfSk7XHJcbiAgICAvLyAgIC8vIGNhc2UgdGhlcmUgaXMgZGVmYXVsdCByZXBvcnRcclxuICAgIC8vICAgaWYgKHRoaXMuZm9ybUVuZHBvaW50ICE9IHVuZGVmaW5lZCAmJiB0aGlzLmZvcm1FbmRwb2ludCAhPSBudWxsKSB7XHJcbiAgICAvLyAgICAgaWYgKCFyZXBvcnRJbmZvcm1hdGlvbikge1xyXG4gICAgLy8gICAgICAgcmVwb3J0SW5mb3JtYXRpb24gPSB0aGlzLnJlcG9ydHMuZmluZCgoeCkgPT4geC51aWQgPT0gaWQpO1xyXG4gICAgLy8gICAgIH1cclxuICAgIC8vICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2VcclxuICAgIC8vICAgICAgIC5hZGRSZXBvcnRUb1ByaW50KFxyXG4gICAgLy8gICAgICAgICB0aGlzLl9uZXdSZXBvcnRUb1ByaW50KFxyXG4gICAgLy8gICAgICAgICAgIGlkLFxyXG4gICAgLy8gICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uPy5yZXBvcnRUeXBlLFxyXG4gICAgLy8gICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uPy5yZXN0RW5kcG9pbnRcclxuICAgIC8vICAgICAgICAgKVxyXG4gICAgLy8gICAgICAgKVxyXG4gICAgLy8gICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAvLyAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgIC8vICAgICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmIGRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAvLyAgICAgICAgICAgICB0aGlzLnJlcG9ydFRvUHJpbnRJZCA9IGRhdGEudWlkO1xyXG4gICAgLy8gICAgICAgICAgICAgbGV0IHNhdmVTdWJqZWN0OiBTdWJqZWN0PGFueT4gPSBuZXcgU3ViamVjdCgpO1xyXG4gICAgLy8gICAgICAgICAgICAgbGV0IG1vZGFsU2l6ZSA9IE1vZGFsU2l6ZUVudW0uRXh0cmFMYXJnZTtcclxuICAgIC8vICAgICAgICAgICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgLy8gICAgICAgICAgICAgICBkYXRhOiB7IHNhdmVTdWJqZWN0LCBlbWFpbDogdGhpcy50b1NlbmRFbWFpbCB9LFxyXG4gICAgLy8gICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogdHJ1ZSxcclxuICAgIC8vICAgICAgICAgICAgICAgd2lkdGg6IG1vZGFsU2l6ZS53aWR0aCxcclxuICAgIC8vICAgICAgICAgICAgICAgaGVpZ2h0OiBtb2RhbFNpemUuaGVpZ2h0LFxyXG4gICAgLy8gICAgICAgICAgICAgfTtcclxuICAgIC8vICAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZiA9IHRoaXMuX2RpYWxvZ1NlcnZpY2Uub3BlbihcclxuICAgIC8vICAgICAgICAgICAgICAgVHNpU2VuZE1haWxDb21wb25lbnQsXHJcbiAgICAvLyAgICAgICAgICAgICAgIGNvbmZcclxuICAgIC8vICAgICAgICAgICAgICk7XHJcbiAgICAvLyAgICAgICAgICAgICBzYXZlU3ViamVjdC5zdWJzY3JpYmUoKHZhbDogYW55KSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZVxyXG4gICAgLy8gICAgICAgICAgICAgICAgIC5leHBvcnRSZXBvcnRGaWxlVG9QZGYodGhpcy5yZXBvcnRUb1ByaW50SWQhLnRvU3RyaW5nKCkpXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgLnN1YnNjcmliZShcclxuICAgIC8vICAgICAgICAgICAgICAgICAgIChibG9iKSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5wYXJhbWV0cmUuYXR0YWNobWVudHMpIHtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRyZS5hdHRhY2htZW50cyA9IFtdO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ld0ZpbGUgPSBuZXcgRmlsZShbYmxvYl0sICdSZXBvcnQucGRmJywge1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IGJsb2IudHlwZSxcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRyZS5hdHRhY2htZW50cy5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICB0aGlzLl9wYXJhbWV0cmVzQXBwbGljYXRpb25QYWllU2VydmljZVxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgIC5zZW5kTWFpbChcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1ldHJlLmZyb21BZGRyZXNzLFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nRGF0YVNlcnZpY2UuZ2V0RGF0YSgpPy50b0FkZHJlc3MsXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9kaWFsb2dEYXRhU2VydmljZS5nZXREYXRhKCk/Lm9iamV0LFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nRGF0YVNlcnZpY2UuZ2V0RGF0YSgpPy5tZXNzYWdlLFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0cmUuYXR0YWNobWVudHMsXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRyZS5ob3N0LFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0cmUuY3JlZGVudGlhbFVzZXIsXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmFtZXRyZS5jcmVkZW50aWFsUFdELFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJhbWV0cmUucG9ydCxcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyYW1ldHJlLmZyb21OYW1lLFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZGlhbG9nRGF0YVNlcnZpY2UuZ2V0RGF0YSgpPy5jY0FkZHJlc3NcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0OiAoKSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5pbmZvKFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubG9jYWxpemF0aW9uLnRyYW5zZm9ybShcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsaXphdGlvbktleXMuc2F2ZWRTdWNjZXNzZnVsbHlcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6IChyZXNwb25zZTogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2cocmVzcG9uc2UpO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZVxyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZG93bmxvYWRpbmcgdGhlIFBERicsIGVycm9yKTtcclxuICAgIC8vICAgICAgICAgICAgICAgICAgIH1cclxuICAgIC8vICAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgIC8vICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAvLyAgICAgICAgICAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfcmVkaXJlY3RlZF90b19wcmludF9yZXBvcnRfc3VjY2Vzc2Z1bGx5J1xyXG4gICAgLy8gICAgICAgICAgICAgICApO1xyXG4gICAgLy8gICAgICAgICAgICAgfSk7XHJcbiAgICAvLyAgICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4ge1xyXG4gICAgLy8gICAgICAgICAgICAgICB0aGlzLl9jbG9zZU1vZGFsKHZhbCk7XHJcbiAgICAvLyAgICAgICAgICAgICB9KTtcclxuICAgIC8vICAgICAgICAgICB9XHJcbiAgICAvLyAgICAgICAgIH0sXHJcblxyXG4gICAgLy8gICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAvLyAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlS2V5KTtcclxuICAgIC8vICAgICAgICAgfSxcclxuXHJcbiAgICAvLyAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICAvLyAgICAgICB9KTtcclxuICAgIC8vICAgfVxyXG4gICAgLy8gfSBlbHNlIHtcclxuICAgIC8vICAgdGhpcy5tZXNzYWdlU2VydmljZS5pbmZvTWVzc2FnZShcclxuICAgIC8vICAgICAnc2hhcmVkX3JlcG9ydGluZ19ub19kZWZhdWx0X3JlcG9ydF9mb3VuZCdcclxuICAgIC8vICAgKTtcclxuICAgIC8vIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2V4cG9ydFBkZihcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICByZXBvcnRJbmZvcm1hdGlvbj86IFJlcG9ydFRlbXBsYXRlUmVzcG9uc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICBpZiAodGhpcy5mb3JtRW5kcG9pbnQgIT0gdW5kZWZpbmVkICYmIHRoaXMuZm9ybUVuZHBvaW50ICE9IG51bGwpIHtcclxuICAgICAgICBpZiAoIXJlcG9ydEluZm9ybWF0aW9uKSB7XHJcbiAgICAgICAgICByZXBvcnRJbmZvcm1hdGlvbiA9IHRoaXMucmVwb3J0cy5maW5kKCh4KSA9PiB4LnVpZCA9PSBpZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZighcmVwb3J0SW5mb3JtYXRpb24gfHwgIXJlcG9ydEluZm9ybWF0aW9uLnJlc3RFbmRwb2ludCl7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2VcclxuICAgICAgICAgIC5hZGRSZXBvcnRUb1ByaW50KFxyXG4gICAgICAgICAgICB0aGlzLl9uZXdSZXBvcnRUb1ByaW50KFxyXG4gICAgICAgICAgICAgIGlkLFxyXG4gICAgICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uPy5yZXBvcnRUeXBlLFxyXG4gICAgICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uPy5yZXN0RW5kcG9pbnRcclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLnN1YnNjcmliZSh7XHJcbiAgICAgICAgICAgIG5leHQ6IChkYXRhOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmIGRhdGEgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlcG9ydFRvUHJpbnRJZCA9IGRhdGEudWlkO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZVxyXG4gICAgICAgICAgICAgICAgICAuZXhwb3J0UmVwb3J0RmlsZVRvUGRmKHRoaXMucmVwb3J0VG9QcmludElkIS50b1N0cmluZygpKVxyXG4gICAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxyXG4gICAgICAgICAgICAgICAgICAgIChibG9iKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1cmwgPSB3aW5kb3cuVVJMLmNyZWF0ZU9iamVjdFVSTChibG9iKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBhLmhyZWYgPSB1cmw7XHJcbiAgICAgICAgICAgICAgICAgICAgICBhLmRvd25sb2FkID0gJ1JlcG9ydC5wZGYnO1xyXG4gICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcclxuICAgICAgICAgICAgICAgICAgICAgIGEuY2xpY2soKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgd2luZG93LlVSTC5yZXZva2VPYmplY3RVUkwodXJsKTtcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZG93bmxvYWRpbmcgdGhlIFBERicsIGVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAgICAgICAgICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX3JlZGlyZWN0ZWRfdG9fcHJpbnRfcmVwb3J0X3N1Y2Nlc3NmdWxseSdcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLmVycm9yTWVzc2FnZUtleSk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBjb21wbGV0ZTogKCkgPT4geyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuaW5mb01lc3NhZ2UoXHJcbiAgICAgICAgJ3NoYXJlZF9yZXBvcnRpbmdfbm9fZGVmYXVsdF9yZXBvcnRfZm91bmQnXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldE5vbWJyZUZpY2hpZXIoKSB7XHJcbiAgICBpZiAodGhpcy5pZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2ZpY2hpZXJTZXJ2aWNlXHJcbiAgICAgICAgLkdldE5vbWJyZUZpY2hpZXJKb2ludEJ5SWQodGhpcy5pZCA/PyBcIlwiKVxyXG4gICAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgICAgbmV4dDogKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fbm9tYnJlRG9jdW1lbnRzSm9pbnRzID0gZGF0YTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBlcnJvcjogKHJlc3BvbnNlOiBIdHRwRXJyb3JSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9lcnJvclJlc3BvbnNlTWFuYWdlclNlcnZpY2Uuc2hvd0Vycm9yTWVzc2FnZShyZXNwb25zZSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgc2hvd1VwbG9hZERpYWxvZygpIHtcclxuXHJcbiAgICBjb25zdCBjb25mID0ge1xyXG4gICAgICBkYXRhOiB7fSxcclxuICAgICAgc3R5bGVDbGFzczogJycsXHJcbiAgICAgIHdpZHRoOiB0aGlzLm1vZGFsU2l6ZSEud2lkdGgsXHJcbiAgICAgIGhlaWdodDogdGhpcy5tb2RhbFNpemUhLmhlaWdodCxcclxuICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVmID0gYXdhaXQgb3Blbk1vZGFsVXBsb2FkR3JpZCh0aGlzLl9pbmplY3RvciwgY29uZilcclxuXHJcbiAgICByZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT4gdGhpcy5fY2xvc2VGaWxlTWFuYWdlQ29tcG9uZW50KCkpO1xyXG4gIH1cclxuXHJcbiAgb25EcmFnT3ZlcihldmVudDogRHJhZ0V2ZW50KSB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCkge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgIGNvbnN0IGZpbGVzID0gZXZlbnQuZGF0YVRyYW5zZmVyPy5maWxlcztcclxuICAgIGlmIChmaWxlcyAmJiBmaWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBmaWxlc1swXTtcclxuICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcclxuXHJcbiAgICAgIHJlYWRlci5vbmxvYWQgPSAoZTogUHJvZ3Jlc3NFdmVudDxGaWxlUmVhZGVyPikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0gZS50YXJnZXQ/LnJlc3VsdCBhcyBBcnJheUJ1ZmZlcjtcclxuICAgICAgICBpZiAoIWFycmF5QnVmZmVyKSByZXR1cm47XHJcblxyXG4gICAgICAgIGNvbnN0IGJhc2U2NENvbnRlbnQgPSB0aGlzLmFycmF5QnVmZmVyVG9CYXNlNjQoYXJyYXlCdWZmZXIpO1xyXG5cclxuICAgICAgICBjb25zdCBmaWNoaWVyVG9TZW5kID0gbmV3IEZpY2hpZXIoKTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLmRhdGVGaWNoaWVyID0gbmV3IERhdGUoKTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLm5vbSA9IGZpbGUubmFtZTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLm9iamV0ID0gJyc7XHJcbiAgICAgICAgZmljaGllclRvU2VuZC5ub21GaWNoaWVyQ29tcGxldCA9IGZpbGUubmFtZTtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLmRlc2NyaXB0aW9uID0gJyc7XHJcbiAgICAgICAgZmljaGllclRvU2VuZC5jb250ZW51ID0gYmFzZTY0Q29udGVudDtcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLnRhYmxlTGllZSA9IHRoaXMuYnVzaW5lc3NDbGFzcztcclxuICAgICAgICBmaWNoaWVyVG9TZW5kLnBrZXkgPSB0aGlzLmlkO1xyXG4gICAgICAgIGZpY2hpZXJUb1NlbmQudHlwZUZpY2hpZXIgPSAnNDM3QzA4RDUtQzE2OS00MTY3LThEMzctRjhBQzZDOTA1RTIzJzsgLy8gVE9ETzogTW9tb1xyXG5cclxuICAgICAgICB0aGlzLl9maWNoaWVyU2VydmljZS5jcmVhdGUoZmljaGllclRvU2VuZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgIG5leHQ6ICgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3ModGhpcy5sKFwiRmljaGllciBlbnJlZ2lzdHLDqSAhXCIpKTtcclxuICAgICAgICAgICAgdGhpcy5vblNhdmUuZW1pdCgpO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGVycm9yOiAoZXJyKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLmwoXCJFcnJldXIgbG9ycyBkZSBs4oCZZW5yZWdpc3RyZW1lbnQgIVwiKSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoZmlsZSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHNob3dEaWFsb2coKSB7XHJcbiAgICB0aGlzLl9vcGVuTW9kYWwoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIHNob3dFeHBvcnRJbXBvcnREaWFsb2coKSB7XHJcbiAgICB0aGlzLl9kaWFsb2dSZWYgPSBhd2FpdCBvcGVuTWFuYWdlSW1wb3J0RXhwb3J0TW9kYWwodGhpcy5faW5qZWN0b3IsIHRoaXMuYnVzaW5lc3NDbGFzcywgdGhpcy5mb3JtTmFtZSwgdGhpcy5wYWdlZFJlcXVlc3QpXHJcbiAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT5cclxuICAgICAgdGhpcy5fY2xvc2VNb2RhbCh2YWwsIHRydWUpXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgcHJlc2VudGF0aW9uRGVzaWduZXJDb25maWcoKSB7XHJcbiAgICBpZiAodGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5pc0Rlc2lnbk1vZGUpIHJldHVybjtcclxuXHJcbiAgICB0aGlzLl9sYXlvdXRIZWxwZXJTZXJ2aWNlLmlzRGVzaWduTW9kZSA9IHRydWU7XHJcblxyXG4gICAgaWYgKHRoaXMuZnJvbVRzaUZvcm0pIHtcclxuICAgICAgdGhpcy50b2dnbGVEZXNpZ25Nb2RlLmVtaXQodHJ1ZSk7XHJcbiAgICAgIHRoaXMuX2xheW91dEhlbHBlclNlcnZpY2UuX2Rlc2lnbk1vZGVGb3JtU3ViamVjdC5uZXh0KHRydWUpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fbGF5b3V0SGVscGVyU2VydmljZS5fZGVzaWduTW9kZUxpc3RTdWJqZWN0Lm5leHQodHJ1ZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbiAgcHJpdmF0ZSBfdmlld1JlcG9ydChcclxuICAgIGlkOiBzdHJpbmcsXHJcbiAgICByZXBvcnRJbmZvcm1hdGlvbj86IFJlcG9ydFRlbXBsYXRlUmVzcG9uc2VcclxuICApOiB2b2lkIHtcclxuICAgIGlmIChpZCAhPSB1bmRlZmluZWQgJiYgaWQgIT0gbnVsbCkge1xyXG4gICAgICAvLyBjYXNlIHRoZXJlIGlzIGRlZmF1bHQgcmVwb3J0XHJcbiAgICAgIGlmICh0aGlzLmZvcm1FbmRwb2ludCAhPSB1bmRlZmluZWQgJiYgdGhpcy5mb3JtRW5kcG9pbnQgIT0gbnVsbCkge1xyXG4gICAgICAgIGlmICghcmVwb3J0SW5mb3JtYXRpb24pIHtcclxuICAgICAgICAgIHJlcG9ydEluZm9ybWF0aW9uID0gdGhpcy5yZXBvcnRzLmZpbmQoKHgpID0+IHgudWlkID09IGlkKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmKCFyZXBvcnRJbmZvcm1hdGlvbiB8fCAhcmVwb3J0SW5mb3JtYXRpb24ucmVzdEVuZHBvaW50KXtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmVwb3J0aW5nU2VydmljZVxyXG4gICAgICAgICAgLmFkZFJlcG9ydFRvUHJpbnQoXHJcbiAgICAgICAgICAgIHRoaXMuX25ld1JlcG9ydFRvUHJpbnQoXHJcbiAgICAgICAgICAgICAgaWQsXHJcbiAgICAgICAgICAgICAgcmVwb3J0SW5mb3JtYXRpb24/LnJlcG9ydFR5cGUsXHJcbiAgICAgICAgICAgICAgcmVwb3J0SW5mb3JtYXRpb24/LnJlc3RFbmRwb2ludFxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgICAuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChkYXRhICE9IG51bGwgJiYgZGF0YSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVwb3J0VG9QcmludElkID0gZGF0YS51aWQ7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXBvcnRpbmdTZXJ2aWNlLmdldFJlcG9ydFRlbXBsYXRlQnlJZChpZCkuc3Vic2NyaWJlKHtcclxuICAgICAgICAgICAgICAgICAgbmV4dDogKGRhdGE6IGFueSkgPT4ge1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVuYW50VWlkID0gdGhpcy5pZGVudGl0eU1hbmFnZXJTZXJ2aWNlLnBhcnNlTXlBdXRoVG9rZW4oKT8udGVuYW50VWlkO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCB1cmxWaWV3ZXIgPSBcIlwiXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGEucmVwb3J0VHlwZSA9PT0gVHNpUmVwb3J0VHlwZS5MaXN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB1cmxWaWV3ZXIgPSBgJHtTZWdtZW50LnJlcG9ydGluZ1NlcnZpY2VCYXNlfS9yZXBvcnQtdmlld2VyLyR7dGhpcy5yZXBvcnRUb1ByaW50SWR9PyR7cXVlcnlQYXJhbU5hbWVzQ29uc3QudGVuYW50VWlkfT0ke3RlbmFudFVpZH1gO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGF0YS5yZXBvcnRUeXBlID09PSBUc2lSZXBvcnRUeXBlLkRhc2hib2FyZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdXJsVmlld2VyID0gYCR7U2VnbWVudC5hcHBCYXNlSHJlZn0vJHtBcHBSb3V0ZXMuYXBwfS8ke0FwcFJvdXRlcy5kYXNoYm9hcmR9LyR7TWFuYWdlUmVwb3J0aW5nUm91dGVzLmRhc2hib2FyZFZpZXdlcn0/JHtxdWVyeVBhcmFtTmFtZXNDb25zdC5yZXBvcnRUb1ByaW50fT0ke3RoaXMucmVwb3J0VG9QcmludElkfSYke3F1ZXJ5UGFyYW1OYW1lc0NvbnN0LnRlbmFudFVpZH09JHt0ZW5hbnRVaWR9YDtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRhdGEucmVwb3J0VHlwZSA9PT0gVHNpUmVwb3J0VHlwZS5SVEYpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHVybFZpZXdlciA9IGAke1NlZ21lbnQucmVwb3J0aW5nU2VydmljZUJhc2V9L21haWxtZXJnZS1yZWFkb25seW1vZGUvJHt0aGlzLnJlcG9ydFRvUHJpbnRJZH0/JHtxdWVyeVBhcmFtTmFtZXNDb25zdC50ZW5hbnRVaWR9PSR7dGVuYW50VWlkfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih1cmxWaWV3ZXIsICdfYmxhbmsnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLnN1Y2Nlc3MoXHJcbiAgICAgICAgICAgICAgICAgICAgICAnc2hhcmVkX3JlcG9ydGluZ19yZWRpcmVjdGVkX3RvX3ByaW50X3JlcG9ydF9zdWNjZXNzZnVsbHknXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uU2VydmljZS5lcnJvcih0aGlzLmVycm9yTWVzc2FnZUtleSk7XHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy5ub3RpZmljYXRpb25TZXJ2aWNlLmVycm9yKHRoaXMuZXJyb3JNZXNzYWdlS2V5KTtcclxuICAgICAgICAgICAgfSxcclxuXHJcbiAgICAgICAgICAgIGNvbXBsZXRlOiAoKSA9PiB7IH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8gbm8gZGVmYXVsdCByZXBvcnRcclxuICAgIGVsc2Uge1xyXG4gICAgICB0aGlzLm1lc3NhZ2VTZXJ2aWNlLmluZm9NZXNzYWdlKFxyXG4gICAgICAgICdzaGFyZWRfcmVwb3J0aW5nX25vX2RlZmF1bHRfcmVwb3J0X2ZvdW5kJ1xyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfbmV3UmVwb3J0VG9QcmludChcclxuICAgIHVpZDogc3RyaW5nLFxyXG4gICAgcmVwb3J0VHlwZTogbnVtYmVyLFxyXG4gICAgcmVzdEVuZHBvaW50Pzogc3RyaW5nLFxyXG4gICAgbW9kdWxlPzogc3RyaW5nLFxyXG4gICAgb3JkZXI/OiBudW1iZXIsXHJcbiAgICBzaG9ydE5hbWU/OiBzdHJpbmcsXHJcbiAgICBkaXNwbGF5PzogYm9vbGVhblxyXG4gICk6IFJlcG9ydFRvUHJpbnQge1xyXG4gICAgbGV0IHRva2VuID0gdGhpcy5pZGVudGl0eU1hbmFnZXJTZXJ2aWNlLmdldEF1dGhUb2tlbigpO1xyXG4gICAgbGV0IHVzZXJuYW1lOiBzdHJpbmcgfCB1bmRlZmluZWQgPVxyXG4gICAgICB0aGlzLmlkZW50aXR5TWFuYWdlclNlcnZpY2UucGFyc2VNeUF1dGhUb2tlbigpLm5hbWU7XHJcbiAgICBpZiAodXNlcm5hbWUpIHtcclxuICAgICAgaWYgKHVpZCAmJiAvKnRoaXMub3RoZXJGb3JtRW5kcG9pbnQgJiYgdGhpcy5vdGhlckZvcm1OYW1lICYmKi8gdG9rZW4pIHtcclxuICAgICAgICBsZXQgbmV3UmVwb3J0VG9QcmludDogUmVwb3J0VG9QcmludCA9IHtcclxuICAgICAgICAgIHJlcG9ydFRlbXBsYXRlVWlkOiB1aWQsXHJcbiAgICAgICAgICByZXN0RW5kcG9pbnQ6IHRoaXMuaXNSZXBvcnRGb3JGaWNoZVxyXG4gICAgICAgICAgICA/IHRoaXMucmVwb3J0aW5nU2VydmljZS5pbnNlcnROZXdVaWRJblJlc3RFbmRQb2ludChyZXN0RW5kcG9pbnQsIHRoaXMuaWQpID8/XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUVuZHBvaW50XHJcbiAgICAgICAgICAgIDogdGhpcy5mb3JtRW5kcG9pbnQsXHJcbiAgICAgICAgICByZXF1ZXN0RGF0YTogIXRoaXMuY3VzdG9tUmVwb3J0aW5nTW9kZSA/IHRoaXMuZm9ybUVuZHBvaW50Qm9keSA6IHRoaXMucmVxdWVzdERhdGEsXHJcbiAgICAgICAgICBmb3JtTmFtZTogdGhpcy5mb3JtTmFtZSxcclxuICAgICAgICAgIHJlcG9ydFR5cGU6IHJlcG9ydFR5cGUsXHJcbiAgICAgICAgICB1c2VybmFtZTogdXNlcm5hbWUsXHJcbiAgICAgICAgICB1c2VyVG9rZW46IHJlcG9ydFR5cGUgPT0gVHNpUmVwb3J0VHlwZS5EYXNoYm9hcmQgPyB1bmRlZmluZWQgOiB0b2tlbixcclxuICAgICAgICAgIGlzUGFnZWQ6IHRoaXMuaXNGb3JtRW5kcG9pbnRQYWdlZCA9PSB0cnVlID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICAgICAgaHRtbEZpbHRlcnNUZXh0OiB0aGlzLmZpbHRlcnNIdG1sVGVtcGxhdGUsXHJcbiAgICAgICAgICBvcHRpb25hbEVuZHBvaW50c0pzb246IHRoaXMub3B0aW9uYWxFbmRwb2ludHMsXHJcbiAgICAgICAgICBtb2R1bGU6IG1vZHVsZSxcclxuICAgICAgICAgIG9yZGVyOiBvcmRlcixcclxuICAgICAgICAgIHNob3J0TmFtZTogc2hvcnROYW1lLFxyXG4gICAgICAgICAgZGlzcGxheTogZGlzcGxheSxcclxuICAgICAgICAgIGh0dHBNZXRob2RUeXBlOiB0aGlzLmdldEh0dHBNZXRob2RUeXBlKClcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3UmVwb3J0VG9QcmludDtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aHJvdyBFcnJvcihcclxuICAgICAgICAgICdzb21lIG9mIHRoZSByZXF1aXJlZCBwcm9wZXJ0aWVzIDogdXNlciB0b2tlbiwgZm9ybU5hbWUsIGZvcm1FbmRwb2ludCBvciBzZWxlY3RlZFJlcG9ydCBoYXZlIG5vdCBiZWVuIHNldCAhJ1xyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRocm93IEVycm9yKFwicHJvcGVydHkgJ1VzZXJOYW1lICcgb2YgY3VycmVudCB1c2VyIGhhdmUgbm90IGJlZW4gc2V0ICFcIik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIF9vcGVuTW9kYWwoKSB7XHJcbiAgICBsZXQgY29uZjogRHluYW1pY0RpYWxvZ0NvbmZpZztcclxuICAgIGNvbmYgPSB7XHJcbiAgICAgIGRhdGE6IHtcclxuICAgICAgICBvdGhlckZvcm1OYW1lOiB0aGlzLmZvcm1OYW1lLFxyXG4gICAgICAgIG90aGVyRm9ybUVuZHBvaW50OiB0aGlzLmZvcm1FbmRwb2ludCxcclxuICAgICAgICBmb3JtRW5kcG9pbnRCb2R5OiB0aGlzLmZvcm1FbmRwb2ludEJvZHksXHJcbiAgICAgICAgaXNGb3JtRW5kcG9pbnRQYWdlZDogdGhpcy5pc0Zvcm1FbmRwb2ludFBhZ2VkLFxyXG4gICAgICAgIGZpbHRlcnNIdG1sVGVtcGxhdGU6IHRoaXMuZmlsdGVyc0h0bWxUZW1wbGF0ZSxcclxuICAgICAgICBvcHRpb25hbEVuZHBvaW50czogdGhpcy5vcHRpb25hbEVuZHBvaW50cyxcclxuICAgICAgICBidXNpbmVzc0NsYXNzOiB0aGlzLmJ1c2luZXNzQ2xhc3MsXHJcbiAgICAgICAgcmVwb3J0RGlzY3JpbWluYXRvcjogdGhpcy5yZXBvcnREaXNjcmltaW5hdG9yLFxyXG4gICAgICAgIGlkOiB0aGlzLmlkLFxyXG4gICAgICAgIHJlcXVlc3REYXRhOiB0aGlzLnJlcXVlc3REYXRhLFxyXG4gICAgICAgIGN1c3RvbVJlcG9ydGluZ01vZGU6IHRoaXMuY3VzdG9tUmVwb3J0aW5nTW9kZSxcclxuICAgICAgICBodHRwTWV0aG9kVHlwZTogdGhpcy5nZXRIdHRwTWV0aG9kVHlwZSgpLFxyXG4gICAgICB9LFxyXG4gICAgICBzdHlsZUNsYXNzOiAnJyxcclxuICAgICAgd2lkdGg6IHRoaXMubW9kYWxTaXplLndpZHRoLFxyXG4gICAgICBoZWlnaHQ6IHRoaXMubW9kYWxTaXplLmhlaWdodCxcclxuICAgICAgbWF4aW1pemFibGU6IHRydWUsXHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMuX2RpYWxvZ1JlZiA9IGF3YWl0IG9wZW5NYW5hZ2VSZXBvcnRpbmdDb21wb25lbnQodGhpcy5faW5qZWN0b3IsIGNvbmYpO1xyXG5cclxuICAgIHRoaXMuX2RpYWxvZ1JlZi5vbkNsb3NlLnN1YnNjcmliZSgodmFsPzogYW55KSA9PiB0aGlzLl9jbG9zZU1vZGFsKHZhbCkpO1xyXG4gIH1cclxuXHJcbiAgZ2V0SHR0cE1ldGhvZFR5cGUoKSB7XHJcbiAgICBpZiAodGhpcy5pc1JlcG9ydEZvckZpY2hlICYmICF0aGlzLmN1c3RvbVJlcG9ydGluZ01vZGUpIHtcclxuICAgICAgcmV0dXJuIEh0dHBNZXRob2RUeXBlLkdFVDtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5odHRwTWV0aG9kVHlwZSAmJiB0aGlzLmN1c3RvbVJlcG9ydGluZ01vZGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuaHR0cE1ldGhvZFR5cGU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gSHR0cE1ldGhvZFR5cGUuUE9TVDtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Nsb3NlRmlsZU1hbmFnZUNvbXBvbmVudCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xvc2VkTW9kYWxGaWxlVXBsb2FkLmVtaXQodHJ1ZSk7XHJcbiAgICB0aGlzLl9kaWFsb2dSZWY/LmRlc3Ryb3koKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2Nsb3NlTW9kYWwodmFsPzogYW55LCByZWZyZXNoRGF0YTogYm9vbGVhbiA9IGZhbHNlKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlZnJlc2hEYXRhLmVtaXQocmVmcmVzaERhdGEpO1xyXG4gICAgdGhpcy5fZGlhbG9nUmVmPy5kZXN0cm95KCk7XHJcbiAgfVxyXG4gIC8vI2VuZHJlZ2lvblxyXG5cclxuICBvblJpZ2h0Q2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdGhpcy5fZ2V0QWxsUmVwb3J0cyhldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKTtcclxuICB9XHJcblxyXG4gIGhpZGVDb250ZXh0TWVudSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NvbnRleHRNZW51ID0gZmFsc2U7XHJcbiAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24gPSB7IHg6IDAsIHk6IDAgfTtcclxuICAgIC8vIHRoaXMucmVwb3J0cyA9IFtdO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3RDb250ZXh0T3B0aW9uKGl0ZW06IFJlcG9ydFRlbXBsYXRlUmVzcG9uc2UpOiB2b2lkIHtcclxuICAgIHRoaXMuX3ZpZXdSZXBvcnQoaXRlbS51aWQpO1xyXG4gICAgdGhpcy5oaWRlQ29udGV4dE1lbnUoKTtcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFJlcG9ydHMoKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICB0aGlzLnJlcG9ydHMgPSBhd2FpdCBmaXJzdFZhbHVlRnJvbShcclxuICAgICAgICB0aGlzLnJlcG9ydGluZ1NlcnZpY2UuZ2V0UmVwb3J0cyhcclxuICAgICAgICAgIHRoaXMuZm9ybU5hbWUgPz8gJycsXHJcbiAgICAgICAgICB0aGlzLnJlcG9ydERpc2NyaW1pbmF0b3JcclxuICAgICAgICApXHJcbiAgICAgICk7XHJcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xyXG4gICAgICB0aGlzLmhpZGVDb250ZXh0TWVudSgpO1xyXG4gICAgICB0aGlzLm5vdGlmaWNhdGlvblNlcnZpY2UuZXJyb3IodGhpcy5lcnJvck1lc3NhZ2VLZXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfZ2V0QWxsUmVwb3J0cyhjbGlja1g6IG51bWJlciwgY2xpY2tZOiBudW1iZXIpIHtcclxuICAgIGF3YWl0IHRoaXMuZ2V0UmVwb3J0cygpO1xyXG5cclxuICAgIGlmICh0aGlzLnJlcG9ydHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCByZWN0ID0gdGhpcy53cmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICB0aGlzLmNvbnRleHRNZW51UG9zaXRpb24gPSB7XHJcbiAgICAgICAgeDogY2xpY2tYIC0gcmVjdC5sZWZ0LFxyXG4gICAgICAgIHk6IGNsaWNrWSAtIHJlY3QudG9wLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IHRydWU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNob3dDb250ZXh0TWVudSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBhc3luYyB2aWV3Tm90ZXMoKSB7XHJcbiAgICBjb25zdCByZWYgPSBhd2FpdCBvcGVuTm90ZXNMaXN0KHRoaXMuX2luamVjdG9yKVxyXG4gICAgcmVmLm9uQ2xvc2Uuc3Vic2NyaWJlKCh2YWw/OiBhbnkpID0+IHRoaXMuX2Nsb3NlTW9kYWwodmFsKSk7XHJcbiAgfVxyXG5cclxuICB2aWV3SW5mbyhldmVudDogYW55KSB7XHJcbiAgICBpZiAodGhpcy5pZCAhPSB1bmRlZmluZWQgJiYgdGhpcy5pZCAhPSBudWxsKSB7XHJcbiAgICAgIHRoaXMucmVjb3JkSW5mb1BvcHVwU2VydmljZVxyXG4gICAgICAgIC5nZXRJbmZvKHRoaXMuYnVzaW5lc3NDbGFzcyEsIHRoaXMuaWQpXHJcbiAgICAgICAgLnN1YnNjcmliZShcclxuICAgICAgICAgIGFzeW5jIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBtb2RhbFNpemUgPSBNb2RhbFNpemVFbnVtLkV4dHJhTGFyZ2U7XHJcbiAgICAgICAgICAgIGxldCB0ZXh0ID1cclxuICAgICAgICAgICAgICAnVUlEIDogICcgK1xyXG4gICAgICAgICAgICAgIHRoaXMuaWQgK1xyXG4gICAgICAgICAgICAgICc8QlI+Q3JlYXRlZCBieSA6ICAnICtcclxuICAgICAgICAgICAgICBkYXRhLmNyZWF0aW9uVXNlciArXHJcbiAgICAgICAgICAgICAgJzxCUj5Nb2RpZmllZCBieSA6ICcgK1xyXG4gICAgICAgICAgICAgIGRhdGEubW9kaWZVc2VyICtcclxuICAgICAgICAgICAgICAnPEJSPkNyZWF0ZWQgb24gOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLmRhdGVTYWlzaWUgK1xyXG4gICAgICAgICAgICAgICc8QlI+TW9kaWZpZWQgb24gOiAnICtcclxuICAgICAgICAgICAgICBkYXRhLmRhdGVNb2RpZjtcclxuXHJcbiAgICAgICAgICAgIGxldCBjb25mOiBEeW5hbWljRGlhbG9nQ29uZmlnID0ge1xyXG4gICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgIFVpZDogdGhpcy5pZCxcclxuICAgICAgICAgICAgICAgIGNyZWF0aW9uVXNlcjogZGF0YS5jcmVhdGlvblVzZXIsXHJcbiAgICAgICAgICAgICAgICBtb2RpZlVzZXI6IGRhdGEubW9kaWZVc2VyLFxyXG4gICAgICAgICAgICAgICAgZGF0ZVNhaXNpZTogZGF0YS5kYXRlU2Fpc2llLFxyXG4gICAgICAgICAgICAgICAgZGF0ZU1vZGlmOiBkYXRhLmRhdGVNb2RpZixcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG1heGltaXphYmxlOiB0cnVlLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnOTByZW0nLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzgwcmVtJyxcclxuICAgICAgICAgICAgfTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuX2RpYWxvZ1JlZiA9IGF3YWl0IG9wZW5Uc2lQb3B1cFRleHRWaWV3ZXJDb21wb25lbnQodGhpcy5faW5qZWN0b3IsIGNvbmYpXHJcblxyXG4gICAgICAgICAgICB0aGlzLl9kaWFsb2dSZWYub25DbG9zZS5zdWJzY3JpYmUoKHZhbD86IGFueSkgPT5cclxuICAgICAgICAgICAgICB0aGlzLl9jbG9zZU1vZGFsKHZhbClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAoZXJyb3IpID0+IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gIH1cclxuXHJcblxyXG4gIGFycmF5QnVmZmVyVG9CYXNlNjQoYnVmZmVyOiBBcnJheUJ1ZmZlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgYmluYXJ5ID0gJyc7XHJcbiAgICBjb25zdCBieXRlcyA9IG5ldyBVaW50OEFycmF5KGJ1ZmZlcik7XHJcbiAgICBjb25zdCBsZW4gPSBieXRlcy5ieXRlTGVuZ3RoO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBiaW5hcnkgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1tpXSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYnRvYShiaW5hcnkpO1xyXG4gIH1cclxuXHJcbiAgaGlkZSh2YWw/OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLl9kaWFsb2dSZWYgIT0gbnVsbCAmJiB0aGlzLl9kaWFsb2dSZWYgIT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmICh2YWwgPT0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLl9kaWFsb2dSZWYuZGVzdHJveSgpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHRoaXMuX2RpYWxvZ1JlZi5jbG9zZSh2YWwpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBsKGtleTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh0aGlzLmxvY2FsaXplICE9IG51bGxcclxuICAgICAgJiYgdGhpcy5sb2NhbGl6ZSAhPSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIHRoaXMubG9jYWxpemUudHJhbnNmb3JtKGtleSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4ga2V5O1xyXG4gIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMiBteC0yXCI+XHJcbiAgPGRpdlxyXG4gICAgKm5nSWY9XCJmb3JtRW5kcG9pbnQgfHwgYnVzaW5lc3NDbGFzc1wiXHJcbiAgICBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJtYW5hZ2VfcmVwb3J0c19idXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgW2ljb25TcmNdPVwiJy4vYXNzZXRzL2ljb25zL2ljb24tcHJpbnRlci1ncm91cC13aGl0ZS5wbmcnXCJcclxuICAgICAgW2ljb25XaWR0aF09XCIyMFwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX3JlcG9ydGluZ19tYW5hZ2VfcmVwb3J0cydcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnkgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgIChjbGljayk9XCJzaG93RGlhbG9nKClcIlxyXG4gICAgPlxyXG4gICAgPC9Uc2ktQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cImZvcm1FbmRwb2ludCB8fCBidXNpbmVzc0NsYXNzXCJcclxuICAgIHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cInByaW50X2RlZmF1bHRfcmVwb3J0X2J1dHRvblwiXHJcbiAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXIgYnRuLXdyYXBwZXJcIlxyXG4gICAgI3dyYXBwZXJcclxuICA+XHJcbiAgICA8VHNpLUJ1dHRvblxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgaWNvbj1cInBpIHBpLXByaW50IHAtYnV0dG9uLWljb24gcC1idXR0b24taWNvbi1sZWZ0XCJcclxuICAgICAgW3Rvb2x0aXBUZXh0XT1cIidzaGFyZWRfcmVwb3J0aW5nX3JpZ2h0Q2xpY2snXCJcclxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5IGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAoY2xpY2spPVwib25QcmludERlZmF1bHQoJGV2ZW50KVwiXHJcbiAgICAgIChyaWdodENsaWNrKT1cIm9uUmlnaHRDbGljaygkZXZlbnQpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICAgIDwhLS0gYHNoYXJlZF9yZXBvcnRpbmdfcHJpbnRfcmVwb3J0YCBrZXkgZm9yIGBJbXByaW1lcmAgdGV4dCAgKHJlcGxhY2UgaXQgYXMgdmFsdWUgb3IgdG9vbHRpcCBpZiBuZWVkIGl0KSAtLT5cclxuXHJcbiAgICA8ZGl2XHJcbiAgICAgICpuZ0lmPVwic2hvd0NvbnRleHRNZW51XCJcclxuICAgICAgY2xhc3M9XCJjb250ZXh0LW1lbnVcIlxyXG4gICAgICBbbmdTdHlsZV09XCJ7XHJcbiAgICAgICAgJ3RvcC5weCc6IGNvbnRleHRNZW51UG9zaXRpb24ueSxcclxuICAgICAgICAnbGVmdC5weCc6IGNvbnRleHRNZW51UG9zaXRpb24ueFxyXG4gICAgICB9XCJcclxuICAgICAgKG1vdXNlbGVhdmUpPVwiaGlkZUNvbnRleHRNZW51KClcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgKm5nRm9yPVwibGV0IHJlcG9ydCBvZiByZXBvcnRzXCJcclxuICAgICAgICBjbGFzcz1cIm1lbnUtaXRlbVwiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uU2VsZWN0Q29udGV4dE9wdGlvbihyZXBvcnQpXCJcclxuICAgICAgPlxyXG4gICAgICAgIHt7IHJlcG9ydC5uYW1lIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiYnVzaW5lc3NDbGFzcyAmJiBzaG93VXBsb2FkQnV0dG9uXCJcclxuICAgIHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cImF0dGFjaG1lbnRfYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgPlxyXG4gICAgPFRzaS1CdXR0b25cclxuICAgICAgW2Rpc2FibGVkXT1cImlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGljb249XCJwaSBwaS1wYXBlcmNsaXAgcC1idXR0b24taWNvblwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX2FjdGlvbnNfYXR0YWNobWVudCdcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zZWNvbmRhcnkgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seVwiXHJcbiAgICAgIChjbGljayk9XCJzaG93VXBsb2FkRGlhbG9nKClcIlxyXG4gICAgICAoZHJhZ292ZXIpPVwib25EcmFnT3ZlcigkZXZlbnQpXCJcclxuICAgICAgKGRyb3ApPVwib25Ecm9wKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9Uc2ktQnV0dG9uPlxyXG4gICAgPHNwYW4gKm5nSWY9XCJub21icmVEb2N1bWVudHNKb2ludHMgJiYgbm9tYnJlRG9jdW1lbnRzSm9pbnRzID4gMFwiIGNsYXNzPVwiY3VzdG9tLWJhZGdlXCI+XHJcbiAgICAgIHt7IG5vbWJyZURvY3VtZW50c0pvaW50cyB9fVxyXG4gICAgPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cImZvcm1FbmRwb2ludCB8fCBidXNpbmVzc0NsYXNzXCJcclxuICAgIHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cInNlbmRfcmVwb3J0X2J5X2VtYWlsX2J1dHRvblwiXHJcbiAgICBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIlxyXG4gID5cclxuICAgIDxUc2ktQnV0dG9uXHJcbiAgICAgIFtkaXNhYmxlZF09XCJpc1JlcG9ydGluZ1Rvb2xiYXJEaXNhYmxlZFwiXHJcbiAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICBpY29uPVwicGkgcGktc2VuZCBwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tbGVmdFwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX3JlcG9ydGluZ19zZW5kX21haWwnXCJcclxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc2Vjb25kYXJ5IGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAoY2xpY2spPVwib25TZW5kUGRmKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9Uc2ktQnV0dG9uPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwiYnVzaW5lc3NDbGFzcyAmJiBzaG93SW1wb3J0RXhwb3J0QnV0dG9uXCJcclxuICAgIHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cImltcG9ydF9leHBvcnRfYnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgPlxyXG4gICAgPFRzaS1CdXR0b25cclxuICAgICAgW2Rpc2FibGVkXT1cImlzUmVwb3J0aW5nVG9vbGJhckRpc2FibGVkXCJcclxuICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgIGljb249XCJwaSBwaS1hcnJvdy1yaWdodC1hcnJvdy1sZWZ0IHAtYnV0dG9uLWljb25cIlxyXG4gICAgICBbdG9vbHRpcFRleHRdPVwiJ3NoYXJlZF9yZXBvcnRpbmdfbWFuYWdlX2V4cG9ydF9pbXBvcnQnXCJcclxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24tc3VjY2VzcyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5XCJcclxuICAgICAgKGNsaWNrKT1cInNob3dFeHBvcnRJbXBvcnREaWFsb2coKVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwic2hvd05vdGVCdXR0b25cIlxyXG4gICAgY2xhc3M9XCJmbGV4IGFsaWduLWl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyXCJcclxuICAgIHByZXNlbnRhdGlvbkRlc2lnbmVyQmFzZT1cInNoYXJlZF9zaG93X25vdGVzX2J1dHRvblwiXHJcbiAgPlxyXG4gICAgPFRzaS1CdXR0b25cclxuICAgICAgaWQ9XCJ7eyBjb25maWdNb2RlQnV0dG9uSWQgfX1cIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgaWNvbj1cInBpIHBpLWNvbW1lbnQgcC1idXR0b24taWNvbiBwLWJ1dHRvbi1pY29uLWxlZnRcIlxyXG4gICAgICBbdG9vbHRpcFRleHRdPVwiJ3NoYXJlZF90c2lfY29tcG9uZW50X2dlc3Rpb25fZGVzX25vdGVzJ1wiXHJcbiAgICAgIFt0b29sdGlwUG9zaXRpb25dPVwidG9vbHRpcFBvc2l0aW9uXCJcclxuICAgICAgc3R5bGVDbGFzcz1cInAtYnV0dG9uLXdhcm5pbmcgaG92ZXI6c2hhZG93LTYgaC0ycmVtIHAtYnV0dG9uLWljb24tb25seSB0ZXh0LXdoaXRlXCJcclxuICAgICAgKGNsaWNrKT1cInZpZXdOb3RlcygpXCJcclxuICAgID5cclxuICAgIDwvVHNpLUJ1dHRvbj5cclxuICA8L2Rpdj5cclxuICA8ZGl2XHJcbiAgICAqbmdJZj1cInNob3dJbmZvQnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgICBwcmVzZW50YXRpb25EZXNpZ25lckJhc2U9XCJzaGFyZWRfc2hvd19pbmZvX2J1dHRvblwiXHJcbiAgPlxyXG4gICAgPFRzaS1CdXR0b25cclxuICAgICAgaWQ9XCInc2hvdy1pbmZvLWJ1dHRvbidcIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgaWNvbj1cInBpIHBpLWluZm8gcC1idXR0b24taWNvbiBwLWJ1dHRvbi1pY29uLWxlZnRcIlxyXG4gICAgICBbdG9vbHRpcFRleHRdPVwiJ3NoYXJlZF9hY3Rpb25zX2luZm8nXCJcclxuICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCJ0b29sdGlwUG9zaXRpb25cIlxyXG4gICAgICBzdHlsZUNsYXNzPVwicC1idXR0b24taW5mbyBob3ZlcjpzaGFkb3ctNiBoLTJyZW0gcC1idXR0b24taWNvbi1vbmx5IHRleHQtd2hpdGVcIlxyXG4gICAgICAoY2xpY2spPVwidmlld0luZm8oJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXZcclxuICAgICpuZ0lmPVwic2hvd1ByZXNlbnRhdGlvbkRlc2lnbmVyQ29uZmlnQnV0dG9uXCJcclxuICAgIGNsYXNzPVwiZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWNlbnRlclwiXHJcbiAgPlxyXG4gICAgPFRzaS1CdXR0b25cclxuICAgICAgaWQ9XCJ7eyBjb25maWdNb2RlQnV0dG9uSWQgfX1cIlxyXG4gICAgICBbZGlzYWJsZWRdPVwiaXNSZXBvcnRpbmdUb29sYmFyRGlzYWJsZWRcIlxyXG4gICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgaWNvbj1cInBpIHBpLWV5ZSBwLWJ1dHRvbi1pY29uIHAtYnV0dG9uLWljb24tbGVmdFwiXHJcbiAgICAgIFt0b29sdGlwVGV4dF09XCInc2hhcmVkX3RzaV9jb21wb25lbnRfY29uZmlnX3Nob3dfaGlkZSdcIlxyXG4gICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cInRvb2x0aXBQb3NpdGlvblwiXHJcbiAgICAgIHN0eWxlQ2xhc3M9XCJwLWJ1dHRvbi1zdWNjZXNzIGhvdmVyOnNoYWRvdy02IGgtMnJlbSBwLWJ1dHRvbi1pY29uLW9ubHlcIlxyXG4gICAgICAoY2xpY2spPVwicHJlc2VudGF0aW9uRGVzaWduZXJDb25maWcoKVwiXHJcbiAgICA+XHJcbiAgICA8L1RzaS1CdXR0b24+XHJcbiAgPC9kaXY+XHJcblxyXG48L2Rpdj5cclxuXHJcbjwhLS0gPGRpdiAqbmdJZj1cInNob3dDb250ZXh0TWVudVwiXHJcbiAgY2xhc3M9XCJjb250ZXh0LW1lbnVcIlxyXG4gIFtuZ1N0eWxlXT1cIntcclxuICAgICd0b3AucHgnOiBjb250ZXh0TWVudVBvc2l0aW9uLnksXHJcbiAgICAnbGVmdC5weCc6IGNvbnRleHRNZW51UG9zaXRpb24ueFxyXG4gIH1cIlxyXG4gIChtb3VzZWxlYXZlKT1cImhpZGVDb250ZXh0TWVudSgpXCI+XHJcbiAgPGRpdiAqbmdGb3I9XCJsZXQgcmVwb3J0IG9mIHJlcG9ydHNcIlxyXG4gICAgY2xhc3M9XCJtZW51LWl0ZW1cIlxyXG4gICAgKGNsaWNrKT1cIm9uU2VsZWN0Q29udGV4dE9wdGlvbihyZXBvcnQpXCI+XHJcbiAgICB7e3JlcG9ydC5uYW1lfX1cclxuICA8L2Rpdj5cclxuPC9kaXY+IC0tPlxyXG4iXX0=
@@ -8683,7 +8683,6 @@ class ReportingComponent {
8683
8683
  //#endregion
8684
8684
  this.onSave = new EventEmitter();
8685
8685
  this.isFormEndpointPaged = false;
8686
- this.httpMethodType = HttpMethodType.POST;
8687
8686
  this._nombreDocumentsJoints = 0;
8688
8687
  this.configModeButtonId = 'show-hide-config-button';
8689
8688
  this._selectedItemUids = [];
@@ -9092,7 +9091,7 @@ class ReportingComponent {
9092
9091
  order: order,
9093
9092
  shortName: shortName,
9094
9093
  display: display,
9095
- httpMethodType: this.httpMethodType
9094
+ httpMethodType: this.getHttpMethodType()
9096
9095
  };
9097
9096
  return newReportToPrint;
9098
9097
  }