@spicainternational/ngx-sds-components 2.22.0 → 2.22.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -203,6 +203,10 @@ export class SdsDatePickerComponent {
203
203
  this.translations = translations;
204
204
  this.updateCustomText();
205
205
  }
206
+ setLocales(locales) {
207
+ this.locales = locales;
208
+ this.setSelectedDateRangeText();
209
+ }
206
210
  get selectedDateStartFocus() {
207
211
  return this.selectedDateFocus;
208
212
  }
@@ -601,4 +605,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
601
605
  type: HostListener,
602
606
  args: ['document:keydown', ['$event']]
603
607
  }] } });
604
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUixHQUFHLEdBQ04sTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxHQUNiLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhFLE9BQU8sRUFDSCxxQkFBcUIsR0FHeEIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFTN0IsTUFBTSxPQUFPLHNCQUFzQjtJQXVGL0IsaUJBQWlCO0lBQ2pCLFlBQ1ksU0FBNEIsRUFDNUIsaUJBQXVDO1FBRHZDLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUF6Rm5ELG1CQUFtQjtRQUNWLGtCQUFhLEdBQXdCLFFBQVEsQ0FBQztRQUU5Qyx5QkFBb0IsR0FBMkMsRUFBRSxDQUFDO1FBRTNFLHVCQUF1QjtRQUNkLGlCQUFZLEdBQVMsSUFBSSxJ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aEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFFRyxhQUFhO3NCQUFyQixLQUFLO2dCQUVVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsVUFBVTtzQkFBekIsS0FBSztnQkFFVSxZQUFZO3NCQUEzQixLQUFLO2dCQUVVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBRVUseUJBQXlCO3NCQUF4QyxLQUFLO2dCQUNVLDBCQUEwQjtzQkFBekMsS0FBSztnQkFFVSxLQUFLO3NCQUFwQixLQUFLO2dCQTBDRSxtQkFBbUI7c0JBRDFCLFNBQVM7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUczQyxvQkFBb0I7c0JBRDNCLFNBQVM7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQUVGLFFBQVE7c0JBQXpELFNBQVM7dUJBQUMsVUFBVSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkE0TE0sZ0JBQWdCO3NCQUE3RCxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICBDb21wb25lbnQsXHJcbiAgICBFdmVudEVtaXR0ZXIsXHJcbiAgICBIb3N0TGlzdGVuZXIsXHJcbiAgICBJbnB1dCxcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIE9uSW5pdCxcclxuICAgIE91dHB1dCxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBWaWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IER4Q2FsZW5kYXJDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvY2FsZW5kYXInO1xyXG5pbXBvcnQgeyBEeERhdGVCb3hDb21wb25lbnQgfSBmcm9tICdkZXZleHRyZW1lLWFuZ3VsYXIvdWkvZGF0ZS1ib3gnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIGlzU2FtZURheSxcclxuICAgIGlzU2FtZVllYXIsXHJcbiAgICBpc1NhbWVNb250aCxcclxuICAgIHN0YXJ0T2ZEYXksXHJcbiAgICBzdGFydE9mTW9udGgsXHJcbiAgICBlbmRPZk1vbnRoLFxyXG4gICAgaXNBZnRlcixcclxuICAgIGlzQmVmb3JlLFxyXG4gICAgYWRkLFxyXG59IGZyb20gJ2RhdGUtZm5zJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBmYUFuZ2xlTGVmdCxcclxuICAgIGZhQW5nbGVSaWdodCxcclxuICAgIGZhQ2FsZW5kYXIsXHJcbn0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1yZWd1bGFyLXN2Zy1pY29ucyc7XHJcblxyXG5pbXBvcnQgeyBmYUFycm93UmlnaHQgfSBmcm9tICdAZm9ydGF3ZXNvbWUvcHJvLWxpZ2h0LXN2Zy1pY29ucyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgUGVyaW9kUGlja2VyRGF0ZVJhbmdlLFxyXG4gICAgUGVyaW9kUGlja2VyRGF0ZVJhbmdlRGVmaW5pdGlvbixcclxuICAgIFBlcmlvZFBpY2tlclRyYW5zbGF0aW9ucyxcclxufSBmcm9tICcuL2RhdGUtcGlja2VyLm1vZGVsJztcclxuaW1wb3J0IHsgU2RzRGF0ZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuL3Nkcy1kYXRlLXBpY2tlci5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdzZHMtZGF0ZS1waWNrZXInLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5zY3NzJ10sXHJcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxufSlcclxuZXhwb3J0IGNsYXNzIFNkc0RhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XHJcbiAgICAvLyBwdWJsaWMgaW50ZXJmYWNlXHJcbiAgICBASW5wdXQoKSBzZWxlY3Rpb25LaW5kOiAncGVyaW9kJyB8ICdzaW5nbGUnID0gJ3BlcmlvZCc7XHJcblxyXG4gICAgQElucHV0KCkgZGF0ZVJhbmdlRGVmaW5pdGlvbnM6IEFycmF5PFBlcmlvZFBpY2tlckRhdGVSYW5nZURlZmluaXRpb24+ID0gW107XHJcblxyXG4gICAgLy8gc2luZ2xlIGRhdGUgc2VsZWN0b3JcclxuICAgIEBJbnB1dCgpIHNlbGVjdGVkRGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBAT3V0cHV0KCkgcHVibGljIHNlbGVjdGVkRGF0ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICAvLyBwZXJpb2Qgc2VsZWN0b3JcclxuICAgIEBJbnB1dCgpIHNlbGVjdGVkRGF0ZVN0YXJ0OiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlO1xyXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkRGF0ZVN0YXJ0Q2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBJbnB1dCgpIHNlbGVjdGVkRGF0ZUVuZDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZERhdGVFbmRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgICBAT3V0cHV0KCkgcGVyaW9kQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIEBJbnB1dCgpIG1pbkRhdGU/OiBEYXRlO1xyXG4gICAgQElucHV0KCkgbWF4RGF0ZT86IERhdGU7XHJcblxyXG4gICAgQElucHV0KCkgbG9jYWxlcz86IHN0cmluZyB8IEFycmF5PHN0cmluZz47XHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgQElucHV0KCkgdmFsaWRhdGlvbkVycm9yOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIGlzVmFsaWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG4gICAgXHJcbiAgICBASW5wdXQoKSBkaXNhYmxlZERhdGVzOiBEYXRlW10gPSBbXTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXBwbHlUZXh0Pzogc3RyaW5nID0gJ2Nsb3NlJztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBjYW5jZWxUZXh0Pzogc3RyaW5nID0gJ2Nsb3NlJztcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgdHJhbnNsYXRpb25zOiBQZXJpb2RQaWNrZXJUcmFuc2xhdGlvbnM7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGZpcnN0RGF5T2ZXZWVrOiAwIHwgMSB8IDIgfCAzIHwgNCB8IDUgfCA2ID0gMTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZGF0ZVJhbmdlRGVmaW5pdGlvbnNXaWR0aDogc3RyaW5nID0gJzExcmVtJztcclxuICAgIEBJbnB1dCgpIHB1YmxpYyBzaG93UHJldmlvdXNBbmROZXh0QnV0dG9uczogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHdpZHRoOiBzdHJpbmcgPSAnMzByZW0nO1xyXG4gICAgXHJcblxyXG4gICAgLy8gcHVibGljIHByb3BlcnRpZXNcclxuICAgIHByZXZpb3VzUGVyaW9kSWNvbiA9IGZhQW5nbGVMZWZ0O1xyXG4gICAgbmV4dFBlcmlvZEljb24gPSBmYUFuZ2xlUmlnaHQ7XHJcbiAgICBjYWxlbmRhckljb24gPSBmYUNhbGVuZGFyO1xyXG4gICAgdG9JY29uID0gZmFBcnJvd1JpZ2h0O1xyXG5cclxuICAgIHByZWRlZmluZWREYXRlUmFuZ2VzOiBBcnJheTxQZXJpb2RQaWNrZXJEYXRlUmFuZ2U+ID0gW107XHJcbiAgICBwcmVkZWZpbmVkRGF0ZVJhbmdlc0dlbmVyYXRlZERhdGU6IERhdGUgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBzZWxlY3RlZERhdGVSYW5nZTogUGVyaW9kUGlja2VyRGF0ZVJhbmdlO1xyXG4gICAgZGF0ZVJhbmdlczogQXJyYXk8UGVyaW9kUGlja2VyRGF0ZVJhbmdlPiA9IFtdO1xyXG5cclxuICAgIHNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQxOiBzdHJpbmcgPSAnJztcclxuICAgIHNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgICBtaW5EYXRlRGVmYXVsdDogRGF0ZTtcclxuICAgIG1heERhdGVEZWZhdWx0OiBEYXRlO1xyXG5cclxuICAgIHNlbGVjdGVkRGF0ZUNhbGVuZGFyOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgIHNlbGVjdGVkRGF0ZUludGVybmFsOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gbmV3IERhdGUoKTtcclxuXHJcbiAgICBkYXRlU3RhcnRPbGQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuICAgIGRhdGVTdGFydDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9ICcnO1xyXG4gICAgZGF0ZUVuZE9sZDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9ICcnO1xyXG4gICAgZGF0ZUVuZDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9ICcnO1xyXG5cclxuICAgIHNob3dEYXRlcGlja2VyOiBib29sZWFuO1xyXG4gICAgc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3I6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBoaWRpbmdDb25maXJtZWREYXRlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaXNTZXR0aW5nTm90UHJlcHJvY2Vzc2VkRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaXNTZWxlY3RlZFByZWRlZmluZWRQZXJpb2Q6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIHNlbGVjdGVkRGF0ZUZvY3VzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICAvLyBwcml2YXRlIGZpZWxkc1xyXG4gICAgcHJpdmF0ZSBjdXN0b21EYXRlUmFuZ2U6IFBlcmlvZFBpY2tlckRhdGVSYW5nZTtcclxuICAgIHByaXZhdGUgaW5pdENhbGVuZGFyVmFsdWU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3NpbmdsZURhdGVQaWNrZXJCb3gnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICAgIHByaXZhdGUgc2luZ2xlRGF0ZVBpY2tlckJveDogRHhEYXRlQm94Q29tcG9uZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgQFZpZXdDaGlsZCgnc2VsZWN0ZWREYXRlU3RhcnRCb3gnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuICAgIHByaXZhdGUgc2VsZWN0ZWREYXRlU3RhcnRCb3g6IER4RGF0ZUJveENvbXBvbmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgIEBWaWV3Q2hpbGQoJ2NhbGVuZGFyJywgeyBzdGF0aWM6IGZhbHNlIH0pIHByaXZhdGUgY2FsZW5kYXI6XHJcbiAgICAgICAgfCBEeENhbGVuZGFyQ29tcG9uZW50XHJcbiAgICAgICAgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcblxyXG4gICAgLy8gcHVibGljIG1ldGhvZHNcclxuICAgIGNvbnN0cnVjdG9yKFxyXG4gICAgICAgIHByaXZhdGUgY2hhbmdlUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgICAgICBwcml2YXRlIGRhdGVQaWNrZXJTZXJ2aWNlOiBTZHNEYXRlUGlja2VyU2VydmljZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5kYXRlUmFuZ2VEZWZpbml0aW9ucyA9IFtdO1xyXG5cclxuICAgICAgICB0aGlzLm1pbkRhdGVEZWZhdWx0ID0gbmV3IERhdGUoMTkwMCwgMSwgMSk7XHJcbiAgICAgICAgdGhpcy5tYXhEYXRlRGVmYXVsdCA9IGFkZChzdGFydE9mRGF5KG5ldyBEYXRlKCkpLCB7IHllYXJzOiA1MCB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IGZhbHNlO1xyXG5cclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9ucyA9IHtcclxuICAgICAgICAgICAgY2FuY2VsOiAnQ2FuY2VsJyxcclxuICAgICAgICAgICAgYXBwbHk6ICdBcHBseScsXHJcbiAgICAgICAgICAgIGN1c3RvbTogJ0N1c3RvbScsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5jdXN0b21EYXRlUmFuZ2UgPSBuZXcgUGVyaW9kUGlja2VyRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0aW9ucy5jdXN0b20sXHJcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgdW5kZWZpbmVkXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IHRoaXMuY3VzdG9tRGF0ZVJhbmdlO1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc3RhcnRPZkRheShuZXcgRGF0ZSgpKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IHN0YXJ0T2ZNb250aChuZXcgRGF0ZSgpKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHN0YXJ0T2ZEYXkoZW5kT2ZNb250aChuZXcgRGF0ZSgpKSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlUmFuZ2VUZXh0KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge31cclxuXHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2RhdGVSYW5nZURlZmluaXRpb25zJ10pIHtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXModHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2VsZWN0aW9uS2luZCddKXtcclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoZGF0ZSwgZGF0ZSk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKGRhdGUsIGRhdGUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZTEgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUyID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChkYXRlMSwgZGF0ZTIpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShkYXRlMSwgZGF0ZTIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3RyYW5zbGF0aW9ucyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlQ3VzdG9tVGV4dCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2xvY2FsZXMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZVJhbmdlVGV4dCgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZVN0YXJ0J10gfHwgY2hhbmdlc1snc2VsZWN0ZWREYXRlRW5kJ10pIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnRPbGQgPSB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0O1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVFbmRPbGQgPSB0aGlzLnNlbGVjdGVkRGF0ZUVuZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZERhdGUnXSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlKGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZSddLmN1cnJlbnRWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc3RhcnRPZkRheSh2YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWREYXRlU3RhcnQnXSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZVN0YXJ0J10uY3VycmVudFZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdwZXJpb2QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NldHRpbmdOb3RQcmVwcm9jZXNzZWREYXRlICYmIHRoaXMuc2hvd0RhdGVwaWNrZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NldHRpbmdOb3RQcmVwcm9jZXNzZWREYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnRGb2N1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmQgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNTYW1lRGF5KHNlbGVjdGVkVmFsdWUsIHRoaXMuZGF0ZUVuZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FmdGVyKHNlbGVjdGVkVmFsdWUsIHRoaXMuZGF0ZUVuZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyPy5pbnN0YW5jZT8ucmVwYWludCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVEeERlZmF1bHRDYWxlbmRhckZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWREYXRlRW5kJ10pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjaGFuZ2VzWydzZWxlY3RlZERhdGVFbmQnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUVuZEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzZWxlY3RlZFZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNTYW1lRGF5KHNlbGVjdGVkVmFsdWUsIHRoaXMuZGF0ZVN0YXJ0KSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQWZ0ZXIodGhpcy5kYXRlU3RhcnQsIHNlbGVjdGVkVmFsdWUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUR4RGVmYXVsdENhbGVuZGFyRm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kIGluc3RhbmNlb2YgRGF0ZVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snZmlyc3REYXlPZldlZWsnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlRGF0ZVJhbmdlcyh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5zaG93RGF0ZXBpY2tlcikge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZURhdGVwaWNrZXJQb3B1cChmYWxzZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJyB8fCBldmVudC5jb2RlID09PSAnTnVtcGFkRW50ZXInKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlQZXJpb2RQaWNrZXIoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBcclxuICAgICAgICB9XHJcbiAgICB9ICAgIFxyXG5cclxuICAgIHB1YmxpYyByYW5kb21JZFJlZmVyZW5jZTogbnVtYmVyID0gTWF0aC5mbG9vcihcclxuICAgICAgICBNYXRoLnJhbmRvbSgpICogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcclxuICAgICk7XHJcblxyXG4gICAgcHVibGljIHNldERhdGVSYW5nZURlZmluaXRpb25zKGRlZmluaXRpb25zOiBBcnJheTxQZXJpb2RQaWNrZXJEYXRlUmFuZ2VEZWZpbml0aW9uPik6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlRGVmaW5pdGlvbnMgPSBkZWZpbml0aW9ucztcclxuICAgICAgICB0aGlzLmdlbmVyYXRlRGF0ZVJhbmdlcyh0cnVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0VHJhbnNsYXRpb25zKHRyYW5zbGF0aW9uczogUGVyaW9kUGlja2VyVHJhbnNsYXRpb25zKXtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0aW9ucztcclxuICAgICAgICB0aGlzLnVwZGF0ZUN1c3RvbVRleHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkRGF0ZVN0YXJ0Rm9jdXMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXM7XHJcbiAgICB9XHJcbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkRGF0ZUVuZEZvY3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAhdGhpcy5zZWxlY3RlZERhdGVGb2N1cztcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzTWluaW11bUxpbWl0KCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5taW5EYXRlIGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsIGluc3RhbmNlb2YgRGF0ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsIHRoaXMubWluRGF0ZSkgfHxcclxuICAgICAgICAgICAgICAgIGlzQmVmb3JlKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsIHRoaXMubWluRGF0ZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgaXNNYXhpbXVtTGltaXQoKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLm1heERhdGUgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgaW5zdGFuY2VvZiBEYXRlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCwgdGhpcy5tYXhEYXRlKSB8fFxyXG4gICAgICAgICAgICAgICAgaXNBZnRlcih0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLCB0aGlzLm1heERhdGUpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25EYXRlQ2hhbmdlKGV2ZW50OiBhbnkpIHtcclxuICAgICAgICBsZXQgc2VsZWN0ZWREYXRlRnJvbUV2ZW50ID0gbmV3IERhdGUoZXZlbnQudmFsdWUpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdwZXJpb2QnKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0Rm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgPSBzZWxlY3RlZERhdGVGcm9tRXZlbnQ7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRDYWxlbmRhclZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kID0gc2VsZWN0ZWREYXRlRnJvbUV2ZW50O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWREYXRlRW5kRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICBpc0FmdGVyKHNlbGVjdGVkRGF0ZUZyb21FdmVudCwgdGhpcy5zZWxlY3RlZERhdGVFbmQgYXMgRGF0ZSlcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kID0gc2VsZWN0ZWREYXRlRnJvbUV2ZW50O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAgICAgICBpc0JlZm9yZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlRnJvbUV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGFzIERhdGVcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gc2VsZWN0ZWREYXRlRnJvbUV2ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNTYW1lRGF5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGVGcm9tRXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kIGFzIERhdGVcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gc2VsZWN0ZWREYXRlRnJvbUV2ZW50O1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNTYW1lRGF5KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGVGcm9tRXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgYXMgRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kID0gc2VsZWN0ZWREYXRlRnJvbUV2ZW50O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGUoXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQsXHJcbiAgICAgICAgICAgICAgICBmYWxzZVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25TdGFydERhdGVGb2N1cygpIHtcclxuICAgICAgICB0aGlzLmluaXRDYWxlbmRhclZhbHVlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUNhbGVuZGFyID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5pbml0Q2FsZW5kYXJWYWx1ZSA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkVuZERhdGVGb2N1cygpIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUVuZCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUNhbGVuZGFyID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgYXBwbHlQZXJpb2RQaWNrZXIoKSB7XHJcbiAgICAgICAgdGhpcy5oaWRpbmdDb25maXJtZWREYXRlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLnNob3dEYXRlcGlja2VyID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGUoXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kLFxyXG4gICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb3BlbkRhdGVwaWNrZXJQb3B1cCgpIHtcclxuICAgICAgICB0aGlzLnNob3dEYXRlcGlja2VyID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlRGF0ZVBpY2tlckJveD8uaW5zdGFuY2UuZm9jdXMoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnRPbGQgPSB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0O1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVFbmRPbGQgPSB0aGlzLnNlbGVjdGVkRGF0ZUVuZDtcclxuICAgICAgICAgICAgdGhpcy5pc1NldHRpbmdOb3RQcmVwcm9jZXNzZWREYXRlID0gdHJ1ZTtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0Qm94Py5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vblN0YXJ0RGF0ZUZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgY2xvc2VEYXRlcGlja2VyUG9wdXAoZW1pdENoYW5nZSA9IHRydWUpIHtcclxuICAgICAgICBpZiAodGhpcy5zaG93RGF0ZXBpY2tlcikge1xyXG4gICAgICAgICAgICB0aGlzLnNob3dEYXRlcGlja2VyID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCxcclxuICAgICAgICAgICAgICAgICAgICBlbWl0Q2hhbmdlXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmhpZGluZ0NvbmZpcm1lZERhdGUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZSh0aGlzLmRhdGVTdGFydE9sZCwgdGhpcy5kYXRlRW5kT2xkLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuaGlkaW5nQ29uZmlybWVkRGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRTZWxlY3RlZERhdGUoXHJcbiAgICAgICAgZGF0ZVN0YXJ0OiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLFxyXG4gICAgICAgIGRhdGVFbmQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUsXHJcbiAgICAgICAgZW1pdENoYW5nZSA9IHRydWVcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgPSBkYXRlU3RhcnQ7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBkYXRlRW5kO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBkYXRlU3RhcnQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kIGluc3RhbmNlb2YgRGF0ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQodGhpcy5zZWxlY3RlZERhdGVTdGFydCwgdGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsIHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFByZWRlZmluZWRQZXJpb2QgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKGVtaXRDaGFuZ2UpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlU3RhcnROZXcgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVFbmROZXcgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3Qgc3RhcnREYXRlQ2hhbmdlZCA9XHJcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZGF0ZVN0YXJ0T2xkIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNTYW1lRGF5KHRoaXMuZGF0ZVN0YXJ0T2xkLCBkYXRlU3RhcnROZXcpKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgdGhpcy5kYXRlU3RhcnRPbGQgPT09ICdzdHJpbmcnICYmIHRoaXMuZGF0ZVN0YXJ0T2xkID09PSAnJyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBlbmREYXRlQ2hhbmdlZCA9XHJcbiAgICAgICAgICAgICAgICAgICAgKHRoaXMuZGF0ZUVuZE9sZCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzU2FtZURheSh0aGlzLmRhdGVFbmRPbGQsIGRhdGVFbmROZXcpKSB8fCBcclxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHRoaXMuZGF0ZUVuZE9sZCA9PT0gJ3N0cmluZycgJiYgdGhpcy5kYXRlRW5kT2xkID09PSAnJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZUNoYW5nZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydE9sZCA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZW5kRGF0ZUNoYW5nZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmRPbGQgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmRDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXJ0RGF0ZUNoYW5nZWQgfHwgZW5kRGF0ZUNoYW5nZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBlcmlvZENoYW5nZS5lbWl0KFtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQsXHJcbiAgICAgICAgICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnb1RvTmV4dERhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNldE5leHRQcmV2aW91c0RheSh0cnVlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldE5leHRQcmV2aW91c1JhbmdlKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ29Ub1ByZXZpb3VzRGF0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TmV4dFByZXZpb3VzRGF5KGZhbHNlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldE5leHRQcmV2aW91c1JhbmdlKGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldE5leHRQcmV2aW91c0RheShzZXROZXh0OiBhbnkpIHtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kID0gdHJ1ZTtcclxuICAgICAgICBsZXQgbmV3RGF0ZSA9IHNldE5leHRcclxuICAgICAgICAgICAgPyBhZGQodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCBhcyBEYXRlLCB7IGRheXM6IDEgfSlcclxuICAgICAgICAgICAgOiBhZGQodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCBhcyBEYXRlLCB7IGRheXM6IC0xIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gbmV3IERhdGUobmV3RGF0ZSk7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGUobmV3RGF0ZSwgbmV3RGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldE5leHRQcmV2aW91c1JhbmdlKHNldE5leHQ6IGJvb2xlYW4pIHtcclxuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kID0gdHJ1ZTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICEodGhpcy5zZWxlY3RlZERhdGVTdGFydCBpbnN0YW5jZW9mIERhdGUpIHx8XHJcbiAgICAgICAgICAgICEodGhpcy5zZWxlY3RlZERhdGVFbmQgaW5zdGFuY2VvZiBEYXRlKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByYW5nZSA9IHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZ2V0UmFuZ2UoXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kLFxyXG4gICAgICAgICAgICBzZXROZXh0ID8gJ25leHQnIDogJ3ByZXZpb3VzJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGUocmFuZ2VbMF0sIHJhbmdlWzFdKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0Q2VsbENzc0NsYXNzKGRhdGU6IGFueSkge1xyXG4gICAgICAgIGNvbnN0IGNhbGVuZGFyRGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xyXG4gICAgICAgIGxldCBjc3MgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJykge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGVTdGFydEFzRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGVFbmRBc0RhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBpc0FmdGVyKGNhbGVuZGFyRGF0ZSwgc3RhcnRPZkRheShzZWxlY3RlZERhdGVTdGFydEFzRGF0ZSkpICYmXHJcbiAgICAgICAgICAgICAgICBpc0JlZm9yZShjYWxlbmRhckRhdGUsIHN0YXJ0T2ZEYXkoc2VsZWN0ZWREYXRlRW5kQXNEYXRlKSkgJiZcclxuICAgICAgICAgICAgICAgICF0aGlzLmRpc2FibGVkRGF0ZXMuc29tZSgoZGF5KSA9PiBpc1NhbWVEYXkoY2FsZW5kYXJEYXRlLCBkYXkpKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgIGNzcyArPSAnIGJnLXNlY29uZGFyeSB0ZXh0LWRhcmsgcm91bmRlZC0wJztcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChpc1NhbWVEYXkoY2FsZW5kYXJEYXRlLCBzZWxlY3RlZERhdGVTdGFydEFzRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjc3MgKz0gJyBiZy1wcmltYXJ5IHRleHQtd2hpdGUgcm91bmRlZC1sZWZ0JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChpc1NhbWVEYXkoY2FsZW5kYXJEYXRlLCBzZWxlY3RlZERhdGVFbmRBc0RhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3NzICs9ICcgYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHJvdW5kZWQtcmlnaHQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjc3M7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVDdXN0b21UZXh0KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuY3VzdG9tRGF0ZVJhbmdlLm5hbWUgPSB0aGlzLnRyYW5zbGF0aW9ucz8uY3VzdG9tXHJcbiAgICAgICAgICAgID8gdGhpcy50cmFuc2xhdGlvbnMuY3VzdG9tXHJcbiAgICAgICAgICAgIDogJyc7ICAgICAgICBcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHJlbW92ZUR4RGVmYXVsdENhbGVuZGFyRm9jdXMoKSB7XHJcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXHJcbiAgICAgICAgICAgICcjZGF0ZXBpY2tlcmNvbXBvbmVudCAuZHgtY2FsZW5kYXItc2VsZWN0ZWQtZGF0ZSdcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgZWxlbWVudCAmJlxyXG4gICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3Q/LmNvbnRhaW5zKCdkeC1jYWxlbmRhci1zZWxlY3RlZC1kYXRlJylcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0Py5yZW1vdmUoJ2R4LWNhbGVuZGFyLXNlbGVjdGVkLWRhdGUnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRTZWxlY3RlZERhdGVSYW5nZVRleHQoKXtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwpLFxyXG4gICAgICAgICAgICAgICAgbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwpLFxyXG4gICAgICAgICAgICAgICAgbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KSxcclxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICAgICAgbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCksXHJcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUVuZClcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZURhdGVSYW5nZVNlbGVjdG9yVmlzaWJpbGl0eSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3IpIHtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3IgPVxyXG4gICAgICAgICAgICAhdGhpcy5zaG93UHJlZGVmaW5lZE9wdGlvbnNTZWxlY3RvcjtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ0RhdGVSYW5nZShyYW5nZTogUGVyaW9kUGlja2VyRGF0ZVJhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93UHJlZGVmaW5lZE9wdGlvbnNTZWxlY3RvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSByYW5nZTtcclxuXHJcbiAgICAgICAgaWYgKHJhbmdlID09PSB0aGlzLmN1c3RvbURhdGVSYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5EYXRlcGlja2VyUG9wdXAoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHJhbmdlLmRhdGVGcm9tXHJcbiAgICAgICAgICAgICAgICA/IHJhbmdlLmRhdGVGcm9tXHJcbiAgICAgICAgICAgICAgICA6IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSk7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCA9IHJhbmdlLmRhdGVUbyA/IHJhbmdlLmRhdGVUbyA6IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSk7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKHRoaXMuZGF0ZVN0YXJ0LCB0aGlzLmRhdGVFbmQsIHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBtYXRjaERhdGVSYW5nZShkYXRlRnJvbT86IERhdGUsIGRhdGVUbz86IERhdGUpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIWRhdGVGcm9tIHx8ICFkYXRlVG8pIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IHRoaXMuY3VzdG9tRGF0ZVJhbmdlO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmdlbmVyYXRlRGF0ZVJhbmdlcygpO1xyXG5cclxuICAgICAgICBjb25zdCBkYXRlUmFuZ2UgPSB0aGlzLnByZWRlZmluZWREYXRlUmFuZ2VzLmZpbHRlcihcclxuICAgICAgICAgICAgKHgpID0+XHJcbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkoeC5kYXRlRnJvbSBhcyBEYXRlLCBkYXRlRnJvbSkgJiZcclxuICAgICAgICAgICAgICAgIGlzU2FtZURheSh4LmRhdGVUbyBhcyBEYXRlLCBkYXRlVG8pXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoZGF0ZVJhbmdlLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gZGF0ZVJhbmdlWzBdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB0aGlzLmN1c3RvbURhdGVSYW5nZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXREYXRlUmFuZ2VUZXh0KGRhdGVGcm9tPzogRGF0ZSwgZGF0ZVRvPzogRGF0ZSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gbmV3IERhdGUoKTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQxID0gJyc7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MiA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoIShkYXRlRnJvbSBpbnN0YW5jZW9mIERhdGUpIHx8ICEoZGF0ZVRvIGluc3RhbmNlb2YgRGF0ZSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZnVsbCBtb250aFxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXNTYW1lRGF5KGRhdGVGcm9tLCBzdGFydE9mTW9udGgoZGF0ZUZyb20pKSAmJlxyXG4gICAgICAgICAgICBpc1NhbWVEYXkoZGF0ZVRvLCBlbmRPZk1vbnRoKGRhdGVUbykpICYmXHJcbiAgICAgICAgICAgIGlzU2FtZU1vbnRoKGRhdGVGcm9tLCBkYXRlVG8pXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDEgPSB0aGlzLmZvcm1hdERhdGUoXHJcbiAgICAgICAgICAgICAgICBkYXRlRnJvbSxcclxuICAgICAgICAgICAgICAgICdtb250aCdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgLy8gb25lIGRheVxyXG4gICAgICAgIH0gZWxzZSBpZiAoaXNTYW1lRGF5KGRhdGVGcm9tLCBkYXRlVG8pKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDEgPSB0aGlzLmZvcm1hdERhdGUoXHJcbiAgICAgICAgICAgICAgICBkYXRlRnJvbSxcclxuICAgICAgICAgICAgICAgICdkYXktbG9uZydcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQxID0gdGhpcy5mb3JtYXREYXRlKFxyXG4gICAgICAgICAgICAgICAgZGF0ZUZyb20sXHJcbiAgICAgICAgICAgICAgICBpc1NhbWVZZWFyKGRhdGVGcm9tLCB0b2RheSkgPyAnZGF5LXNob3J0JyA6ICdkYXknXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDIgPSB0aGlzLmZvcm1hdERhdGUoXHJcbiAgICAgICAgICAgICAgICBkYXRlVG8sXHJcbiAgICAgICAgICAgICAgICBpc1NhbWVZZWFyKGRhdGVUbywgdG9kYXkpID8gJ2RheS1zaG9ydCcgOiAnZGF5J1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmb3JtYXREYXRlKFxyXG4gICAgICAgIGRhdGU6IERhdGUsXHJcbiAgICAgICAgdHlwZT86ICdtb250aCcgfCAnZGF5JyB8ICdkYXktbG9uZycgfCAnZGF5LXNob3J0JyB8IHVuZGVmaW5lZFxyXG4gICAgKTogc3RyaW5nIHtcclxuICAgICAgICBzd2l0Y2ggKHR5cGUpIHtcclxuICAgICAgICAgICAgY2FzZSAnbW9udGgnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlcywge1xyXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiAnbG9uZycsXHJcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgICAgIGRheTogdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RheS1sb25nJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZXMsIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICBtb250aDogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICB3ZWVrZGF5OiAnbG9uZycsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY2FzZSAnZGF5LXNob3J0JzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZXMsIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjYXNlICdkYXknOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlcywge1xyXG4gICAgICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiAnc2hvcnQnLFxyXG4gICAgICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlcywge1xyXG4gICAgICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdlbmVyYXRlRGF0ZVJhbmdlcyhmb3JjZT86IGJvb2xlYW4pIHtcclxuICAgICAgICBjb25zdCB0b2RheSA9IHN0YXJ0T2ZEYXkobmV3IERhdGUoKSk7XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgZm9yY2UgfHxcclxuICAgICAgICAgICAgIXRoaXMucHJlZGVmaW5lZERhdGVSYW5nZXNHZW5lcmF0ZWREYXRlIHx8XHJcbiAgICAgICAgICAgICFpc1NhbWVEYXkodGhpcy5wcmVkZWZpbmVkRGF0ZVJhbmdlc0dlbmVyYXRlZERhdGUsIHRvZGF5KVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnByZWRlZmluZWREYXRlUmFuZ2VzR2VuZXJhdGVkRGF0ZSA9IHRvZGF5O1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wcmVkZWZpbmVkRGF0ZVJhbmdlcyA9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFByZWRlZmluZWREYXRlUmFuZ2VzKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVJhbmdlRGVmaW5pdGlvbnMsXHJcbiAgICAgICAgICAgICAgICAgICAgdG9kYXksXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maXJzdERheU9mV2Vla1xyXG4gICAgICAgICAgICAgICAgKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVJhbmdlcyA9IFsuLi50aGlzLnByZWRlZmluZWREYXRlUmFuZ2VzXTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlUmFuZ2VzLnB1c2godGhpcy5jdXN0b21EYXRlUmFuZ2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBwcml2YXRlIG1ldGhvZHNcclxufVxyXG4iLCI8IS0tIDxkaXYgaWQ9XCJkYXRlcGlja2VyYnV0dG9uc1wiPiAtLT5cclxuICAgIDxkaXYgXHJcbiAgICAgICAgY2xhc3M9XCJkYXRlcGlja2VyIGQtZmxleCBiZy13aGl0ZVwiXHJcbiAgICAgICAgcm9sZT1cImdyb3VwXCJcclxuICAgICAgICBhcmlhLWxhYmVsPVwiRGF0ZSBwaWNrZXJcIlxyXG4gICAgICAgIFtzdHlsZS53aWR0aF09XCJ3aWR0aFwiXHJcbiAgICA+XHJcbiAgICAgICAgPCEtLSA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuLWdyb3VwXCJcclxuICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcclxuICAgICAgICA+IC0tPlxyXG4gICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAqbmdJZj1cImRhdGVSYW5nZURlZmluaXRpb25zICYmIGRhdGVSYW5nZURlZmluaXRpb25zLmxlbmd0aCA+IDBcIlxyXG4gICAgICAgICAgICAgICAgaWQ9XCJwaWNrZXJQcmVkZWZpbmVkUmFuZ2VEcm9wZG93bnt7IHJhbmRvbUlkUmVmZXJlbmNlIH19XCJcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiXHJcbiAgICAgICAgICAgICAgICAgICAgYnRuIGJ0bi13aGl0ZVxyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlclxyXG4gICAgICAgICAgICAgICAgICAgIHJvdW5kZWQtbGVmdFxyXG4gICAgICAgICAgICAgICAgICAgIGJvcmRlci1yaWdodCBcclxuICAgICAgICAgICAgICAgICAgICBwLTBcIlxyXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJkYXRlUmFuZ2VEZWZpbml0aW9uc1dpZHRoXCJcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVEYXRlUmFuZ2VTZWxlY3RvclZpc2liaWxpdHkoKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwbC0yIG1sLTEgbXItMSBkYXRlLXJhbmdlLXRleHQgdGV4dC10cnVuY2F0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7c2VsZWN0ZWREYXRlUmFuZ2UubmFtZX19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJidG4gYnRuLWxpZ2h0IGRhdGUtcmFuZ2UtZHJvcGRvd24tYnV0dG9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wZG93bi10b2dnbGVcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPGR4LXBvcG92ZXJcclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVJhbmdlRGVmaW5pdGlvbnMgJiYgZGF0ZVJhbmdlRGVmaW5pdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICB0YXJnZXQ9XCIjcGlja2VyUHJlZGVmaW5lZFJhbmdlRHJvcGRvd257eyByYW5kb21JZFJlZmVyZW5jZSB9fVwiXHJcbiAgICAgICAgICAgICAgICBwb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICBbKHZpc2libGUpXT1cInNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yXCJcclxuICAgICAgICAgICAgICAgIFt3cmFwcGVyQXR0cl09XCJ7IGNsYXNzOiAnc2RzLWRhdGVwaWNrZXItcmFuZ2VzLXBvcG92ZXInIH1cIlxyXG4gICAgICAgICAgICAgICAgW21pbldpZHRoXT1cImRhdGVSYW5nZURlZmluaXRpb25zV2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY29udGVudCdcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCByYW5nZSBvZiBkYXRlUmFuZ2VzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZHJvcGRvd24taXRlbSBib3JkZXItMFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc2VsZWN0ZWRdID0gXCJyYW5nZSA9PT0gc2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nRGF0ZVJhbmdlKHJhbmdlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4ge3tyYW5nZS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9keC1wb3BvdmVyPlxyXG4gICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4td2hpdGUgYm9yZGVyIGJvcmRlci1yaWdodC0wIHByLTJcIlxyXG4gICAgICAgICAgICBbY2xhc3Mucm91bmRlZC1sZWZ0XSA9IFwiIWRhdGVSYW5nZURlZmluaXRpb25zIHx8IGRhdGVSYW5nZURlZmluaXRpb25zLmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItbGVmdC0wXSA9IFwiZGF0ZVJhbmdlRGVmaW5pdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNNaW5pbXVtTGltaXQgfHwgZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzRGF0ZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cInByZXZpb3VzUGVyaW9kSWNvblwiPjwvZmEtaWNvbj5cclxuXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgaWQ9XCJwaWNrZXJEcm9wZG93bnt7IHJhbmRvbUlkUmVmZXJlbmNlIH19XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGJvcmRlci10b3AgYm9yZGVyLWJvdHRvbSB0ZXh0LXRydW5jYXRlIHB4LTAgc2VsZWN0ZWQtcGVyaW9kXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdW5kZWQtbGVmdF0gPSBcIighZGF0ZVJhbmdlRGVmaW5pdGlvbnMgfHwgZGF0ZVJhbmdlRGVmaW5pdGlvbnMubGVuZ3RoID09PSAwKSAmJiAhc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWxlZnRdID0gXCIoIWRhdGVSYW5nZURlZmluaXRpb25zIHx8IGRhdGVSYW5nZURlZmluaXRpb25zLmxlbmd0aCA9PT0gMCkgJiYgIXNob3dQcmV2aW91c0FuZE5leHRCdXR0b25zXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdW5kZWQtcmlnaHRdID0gXCIhc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XSA9IFwiIXNob3dQcmV2aW91c0FuZE5leHRCdXR0b25zXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93RGF0ZXBpY2tlciA/IGNsb3NlRGF0ZXBpY2tlclBvcHVwKCkgOiBvcGVuRGF0ZXBpY2tlclBvcHVwKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXgtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImNhbGVuZGFySWNvblwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0xIHRleHQtdHJ1bmNhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQxfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZhLWljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cInRvSWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93UHJldmlvdXNBbmROZXh0QnV0dG9uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBib3JkZXIgcm91bmRlZC1yaWdodCBib3JkZXItbGVmdC0wIHBsLTJcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTWF4aW11bUxpbWl0IHx8IGRpc2FibGVkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9OZXh0RGF0ZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIm5leHRQZXJpb2RJY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGR4LXBvcG92ZXJcclxuICAgICAgICB0YXJnZXQ9XCIjcGlja2VyRHJvcGRvd257eyByYW5kb21JZFJlZmVyZW5jZSB9fVwiXHJcbiAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgIFsodmlzaWJsZSldPVwic2hvd0RhdGVwaWNrZXJcIlxyXG4gICAgICAgIGNsYXNzPVwibS0wIHAtMFwiXHJcbiAgICAgICAgW3dyYXBwZXJBdHRyXT1cInsgY2xhc3M6ICdzZHMtZGF0ZXBpY2tlci1wb3BvdmVyJyB9XCJcclxuICAgID5cclxuICAgICAgICA8ZHhvLWFuaW1hdGlvbj5cclxuICAgICAgICAgICAgPGR4by1zaG93XHJcbiAgICAgICAgICAgICAgICB0eXBlPVwicG9wXCJcclxuICAgICAgICAgICAgICAgIFtmcm9tXT1cInsgc2NhbGU6IDAuOSB9XCJcclxuICAgICAgICAgICAgICAgIFt0b109XCJ7IHNjYWxlOiAxIH1cIlxyXG4gICAgICAgICAgICA+PC9keG8tc2hvdz5cclxuICAgICAgICAgICAgPGR4by1oaWRlXHJcbiAgICAgICAgICAgICAgICB0eXBlPVwiZmFkZVwiXHJcbiAgICAgICAgICAgICAgICBbZnJvbV09XCIxXCJcclxuICAgICAgICAgICAgICAgIFt0b109XCIwXCJcclxuICAgICAgICAgICAgPjwvZHhvLWhpZGU+XHJcbiAgICAgICAgPC9keG8tYW5pbWF0aW9uPlxyXG4gICAgICAgIDxkaXYgKmR4VGVtcGxhdGU9XCJsZXQgZGF0YSBvZiAnY29udGVudCdcIj5cclxuICAgICAgICAgICAgPGR4LXNjcm9sbC12aWV3PlxyXG4gICAgICAgICAgICAgICAgPGRpdiBpZD1cImRhdGVwaWNrZXJjb21wb25lbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGhpcy5zZWxlY3Rpb25LaW5kID09ICdwZXJpb2QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkYXRlLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBweC00IHB5LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NlbGVjdGVkRGF0ZVN0YXJ0Qm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXIgcC0xIG0tMCB0ZXh0LWNlbnRlciByb3VuZGVkIGRhdGVwaWNrZXItaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVJbnB1dF09XCJzZWxlY3RlZERhdGVGb2N1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dEcm9wRG93bkJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZU1hc2tCZWhhdmlvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0PVwic2hvcnRkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5EYXRlIHx8IG1pbkRhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heERhdGUgfHwgbWF4RGF0ZURlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1ZhbGlkXT1cImlzVmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInNlbGVjdGVkRGF0ZVN0YXJ0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25Gb2N1c0luKT1cIm9uU3RhcnREYXRlRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtMlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwidG9JY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1kYXRlLWJveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzZWxlY3RlZERhdGVFbmRCb3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlciBwLTEgbS0wIHRleHQtY2VudGVyIHJvdW5kZWQgZGF0ZXBpY2tlci1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZUlucHV0XT1cIiFzZWxlY3RlZERhdGVGb2N1c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dEcm9wRG93bkJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZU1hc2tCZWhhdmlvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0PVwic2hvcnRkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5EYXRlIHx8IG1pbkRhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heERhdGUgfHwgbWF4RGF0ZURlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1ZhbGlkXT1cImlzVmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInNlbGVjdGVkRGF0ZUVuZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uRm9jdXNJbik9XCJvbkVuZERhdGVGb2N1cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtZGF0ZS1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmctd2hpdGUgcHgtNCBweS0zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZGF0ZS1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHAtMiBtYi0zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1kYXRlLWJveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc2luZ2xlRGF0ZVBpY2tlckJveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlciBwLTEgbS0wIHRleHQtY2VudGVyIHJvdW5kZWQgZGF0ZXBpY2tlci1pbnB1dCBkYXRlcGlja2VyLWlucHV0LWxhcmdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZUlucHV0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dEcm9wRG93bkJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VNYXNrQmVoYXZpb3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9XCJzaG9ydGRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluRGF0ZSB8fCBtaW5EYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwibWF4RGF0ZSB8fCBtYXhEYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1ZhbGlkXT1cImlzVmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInNlbGVjdGVkRGF0ZUludGVybmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cImNsb3NlRGF0ZXBpY2tlclBvcHVwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWNhbGVuZGFyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2NhbGVuZGFyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5EYXRlIHx8IG1pbkRhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heERhdGUgfHwgbWF4RGF0ZURlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZERhdGVzXT1cImRpc2FibGVkRGF0ZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1ZhbGlkXT1cImlzVmFsaWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsodmFsdWUpXT1cInRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJyA/IHNlbGVjdGVkRGF0ZUNhbGVuZGFyIDogc2VsZWN0ZWREYXRlSW50ZXJuYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJvbkRhdGVDaGFuZ2UoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2ZpcnN0RGF5T2ZXZWVrXT1cImZpcnN0RGF5T2ZXZWVrXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkeFRlbXBsYXRlPVwibGV0IGNlbGxEYXRhIG9mICdjZWxsJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzc109XCInaC0xMDAgcHQtMScgKyBnZXRDZWxsQ3NzQ2xhc3MoY2VsbERhdGEuZGF0ZSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgY2VsbERhdGEudGV4dCB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1jYWxlbmRhcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtZW5kIGFsaWduLWl0ZW1zLWNlbnRlciBweC00IHB5LTNcIlxyXG4gICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNsb3NlRGF0ZXBpY2tlclBvcHVwKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9ucy5jYW5jZWx9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgbWwtMVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImFwcGx5UGVyaW9kUGlja2VyKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHRyYW5zbGF0aW9ucy5hcHBseX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZHgtc2Nyb2xsLXZpZXc+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2R4LXBvcG92ZXI+XHJcbjwhLS0gPC9kaXY+IC0tPiJdfQ==
608
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUixHQUFHLEdBQ04sTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxHQUNiLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhFLE9BQU8sRUFDSCxxQkFBcUIsR0FHeEIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFTN0IsTUFBTSxPQUFPLHNCQUFzQjtJQXVGL0IsaUJBQWlCO0lBQ2pCLFlBQ1ksU0FBNEIsRUFDNUIsaUJBQXVDO1FBRHZDLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUF6Rm5ELG1CQUFtQjtRQUNWLGtCQUFhLEdBQXdCLFFBQVEsQ0FBQztRQUU5Qyx5QkFBb0IsR0FBMkMsRUFBRSxDQUFDO1FBRTNFLHVCQUF1QjtRQUNkLGlCQUFZLEdBQVMsSUFBSSxJ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Q0csWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRVUsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRVUsY0FBYztzQkFBN0IsS0FBSztnQkFFVSx5QkFBeUI7c0JBQXhDLEtBQUs7Z0JBQ1UsMEJBQTBCO3NCQUF6QyxLQUFLO2dCQUVVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBMENFLG1CQUFtQjtzQkFEMUIsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRzNDLG9CQUFvQjtzQkFEM0IsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRUYsUUFBUTtzQkFBekQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQTRMTSxnQkFBZ0I7c0JBQTdELFlBQVk7dUJBQUMsa0JBQWtCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICAgIENvbXBvbmVudCxcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIEhvc3RMaXN0ZW5lcixcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT25Jbml0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRHhDYWxlbmRhckNvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9jYWxlbmRhcic7XHJcbmltcG9ydCB7IER4RGF0ZUJveENvbXBvbmVudCB9IGZyb20gJ2RldmV4dHJlbWUtYW5ndWxhci91aS9kYXRlLWJveCc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgaXNTYW1lRGF5LFxyXG4gICAgaXNTYW1lWWVhcixcclxuICAgIGlzU2FtZU1vbnRoLFxyXG4gICAgc3RhcnRPZkRheSxcclxuICAgIHN0YXJ0T2ZNb250aCxcclxuICAgIGVuZE9mTW9udGgsXHJcbiAgICBpc0FmdGVyLFxyXG4gICAgaXNCZWZvcmUsXHJcbiAgICBhZGQsXHJcbn0gZnJvbSAnZGF0ZS1mbnMnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIGZhQW5nbGVMZWZ0LFxyXG4gICAgZmFBbmdsZVJpZ2h0LFxyXG4gICAgZmFDYWxlbmRhcixcclxufSBmcm9tICdAZm9ydGF3ZXNvbWUvcHJvLXJlZ3VsYXItc3ZnLWljb25zJztcclxuXHJcbmltcG9ydCB7IGZhQXJyb3dSaWdodCB9IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tbGlnaHQtc3ZnLWljb25zJztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBQZXJpb2RQaWNrZXJEYXRlUmFuZ2UsXHJcbiAgICBQZXJpb2RQaWNrZXJEYXRlUmFuZ2VEZWZpbml0aW9uLFxyXG4gICAgUGVyaW9kUGlja2VyVHJhbnNsYXRpb25zLFxyXG59IGZyb20gJy4vZGF0ZS1waWNrZXIubW9kZWwnO1xyXG5pbXBvcnQgeyBTZHNEYXRlUGlja2VyU2VydmljZSB9IGZyb20gJy4vc2RzLWRhdGUtcGlja2VyLnNlcnZpY2UnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgICBzZWxlY3RvcjogJ3Nkcy1kYXRlLXBpY2tlcicsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF0ZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2RzRGF0ZVBpY2tlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcclxuICAgIC8vIHB1YmxpYyBpbnRlcmZhY2VcclxuICAgIEBJbnB1dCgpIHNlbGVjdGlvbktpbmQ6ICdwZXJpb2QnIHwgJ3NpbmdsZScgPSAncGVyaW9kJztcclxuXHJcbiAgICBASW5wdXQoKSBkYXRlUmFuZ2VEZWZpbml0aW9uczogQXJyYXk8UGVyaW9kUGlja2VyRGF0ZVJhbmdlRGVmaW5pdGlvbj4gPSBbXTtcclxuXHJcbiAgICAvLyBzaW5nbGUgZGF0ZSBzZWxlY3RvclxyXG4gICAgQElucHV0KCkgc2VsZWN0ZWREYXRlOiBEYXRlID0gbmV3IERhdGUoKTtcclxuICAgIEBPdXRwdXQoKSBwdWJsaWMgc2VsZWN0ZWREYXRlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICAgIC8vIHBlcmlvZCBzZWxlY3RvclxyXG4gICAgQElucHV0KCkgc2VsZWN0ZWREYXRlU3RhcnQ6IHN0cmluZyB8IG51bWJlciB8IERhdGU7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWREYXRlU3RhcnRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgQElucHV0KCkgc2VsZWN0ZWREYXRlRW5kOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlO1xyXG4gICAgQE91dHB1dCgpIHNlbGVjdGVkRGF0ZUVuZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSBwZXJpb2RDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgQElucHV0KCkgbWluRGF0ZT86IERhdGU7XHJcbiAgICBASW5wdXQoKSBtYXhEYXRlPzogRGF0ZTtcclxuXHJcbiAgICBASW5wdXQoKSBsb2NhbGVzPzogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPjtcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB2YWxpZGF0aW9uRXJyb3I6IHN0cmluZyA9ICcnO1xyXG4gICAgQElucHV0KCkgaXNWYWxpZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBcclxuICAgIEBJbnB1dCgpIGRpc2FibGVkRGF0ZXM6IERhdGVbXSA9IFtdO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBhcHBseVRleHQ/OiBzdHJpbmcgPSAnY2xvc2UnO1xyXG4gICAgQElucHV0KCkgcHVibGljIGNhbmNlbFRleHQ/OiBzdHJpbmcgPSAnY2xvc2UnO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB0cmFuc2xhdGlvbnM6IFBlcmlvZFBpY2tlclRyYW5zbGF0aW9ucztcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgZmlyc3REYXlPZldlZWs6IDAgfCAxIHwgMiB8IDMgfCA0IHwgNSB8IDYgPSAxO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBkYXRlUmFuZ2VEZWZpbml0aW9uc1dpZHRoOiBzdHJpbmcgPSAnMTFyZW0nO1xyXG4gICAgQElucHV0KCkgcHVibGljIHNob3dQcmV2aW91c0FuZE5leHRCdXR0b25zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgd2lkdGg6IHN0cmluZyA9ICczMHJlbSc7XHJcbiAgICBcclxuXHJcbiAgICAvLyBwdWJsaWMgcHJvcGVydGllc1xyXG4gICAgcHJldmlvdXNQZXJpb2RJY29uID0gZmFBbmdsZUxlZnQ7XHJcbiAgICBuZXh0UGVyaW9kSWNvbiA9IGZhQW5nbGVSaWdodDtcclxuICAgIGNhbGVuZGFySWNvbiA9IGZhQ2FsZW5kYXI7XHJcbiAgICB0b0ljb24gPSBmYUFycm93UmlnaHQ7XHJcblxyXG4gICAgcHJlZGVmaW5lZERhdGVSYW5nZXM6IEFycmF5PFBlcmlvZFBpY2tlckRhdGVSYW5nZT4gPSBbXTtcclxuICAgIHByZWRlZmluZWREYXRlUmFuZ2VzR2VuZXJhdGVkRGF0ZTogRGF0ZSB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgIHNlbGVjdGVkRGF0ZVJhbmdlOiBQZXJpb2RQaWNrZXJEYXRlUmFuZ2U7XHJcbiAgICBkYXRlUmFuZ2VzOiBBcnJheTxQZXJpb2RQaWNrZXJEYXRlUmFuZ2U+ID0gW107XHJcblxyXG4gICAgc2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDE6IHN0cmluZyA9ICcnO1xyXG4gICAgc2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDI6IHN0cmluZyA9ICcnO1xyXG5cclxuICAgIG1pbkRhdGVEZWZhdWx0OiBEYXRlO1xyXG4gICAgbWF4RGF0ZURlZmF1bHQ6IERhdGU7XHJcblxyXG4gICAgc2VsZWN0ZWREYXRlQ2FsZW5kYXI6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgc2VsZWN0ZWREYXRlSW50ZXJuYWw6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG5cclxuICAgIGRhdGVTdGFydE9sZDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9ICcnO1xyXG4gICAgZGF0ZVN0YXJ0OiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gJyc7XHJcbiAgICBkYXRlRW5kT2xkOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gJyc7XHJcbiAgICBkYXRlRW5kOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gJyc7XHJcblxyXG4gICAgc2hvd0RhdGVwaWNrZXI6IGJvb2xlYW47XHJcbiAgICBzaG93UHJlZGVmaW5lZE9wdGlvbnNTZWxlY3RvcjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGhpZGluZ0NvbmZpcm1lZERhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBpc1NldHRpbmdOb3RQcmVwcm9jZXNzZWREYXRlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgc2VsZWN0ZWREYXRlRm9jdXM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIC8vIHByaXZhdGUgZmllbGRzXHJcbiAgICBwcml2YXRlIGN1c3RvbURhdGVSYW5nZTogUGVyaW9kUGlja2VyRGF0ZVJhbmdlO1xyXG4gICAgcHJpdmF0ZSBpbml0Q2FsZW5kYXJWYWx1ZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnc2luZ2xlRGF0ZVBpY2tlckJveCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gICAgcHJpdmF0ZSBzaW5nbGVEYXRlUGlja2VyQm94OiBEeERhdGVCb3hDb21wb25lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdzZWxlY3RlZERhdGVTdGFydEJveCcsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG4gICAgcHJpdmF0ZSBzZWxlY3RlZERhdGVTdGFydEJveDogRHhEYXRlQm94Q29tcG9uZW50IHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgQFZpZXdDaGlsZCgnY2FsZW5kYXInLCB7IHN0YXRpYzogZmFsc2UgfSkgcHJpdmF0ZSBjYWxlbmRhcjpcclxuICAgICAgICB8IER4Q2FsZW5kYXJDb21wb25lbnRcclxuICAgICAgICB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuXHJcbiAgICAvLyBwdWJsaWMgbWV0aG9kc1xyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJpdmF0ZSBjaGFuZ2VSZWY6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgZGF0ZVBpY2tlclNlcnZpY2U6IFNkc0RhdGVQaWNrZXJTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLmRhdGVSYW5nZURlZmluaXRpb25zID0gW107XHJcblxyXG4gICAgICAgIHRoaXMubWluRGF0ZURlZmF1bHQgPSBuZXcgRGF0ZSgxOTAwLCAxLCAxKTtcclxuICAgICAgICB0aGlzLm1heERhdGVEZWZhdWx0ID0gYWRkKHN0YXJ0T2ZEYXkobmV3IERhdGUoKSksIHsgeWVhcnM6IDUwIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnNob3dEYXRlcGlja2VyID0gZmFsc2U7XHJcblxyXG4gICAgICAgIHRoaXMudHJhbnNsYXRpb25zID0ge1xyXG4gICAgICAgICAgICBjYW5jZWw6ICdDYW5jZWwnLFxyXG4gICAgICAgICAgICBhcHBseTogJ0FwcGx5JyxcclxuICAgICAgICAgICAgY3VzdG9tOiAnQ3VzdG9tJyxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICB0aGlzLmN1c3RvbURhdGVSYW5nZSA9IG5ldyBQZXJpb2RQaWNrZXJEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgIHRoaXMudHJhbnNsYXRpb25zLmN1c3RvbSxcclxuICAgICAgICAgICAgdW5kZWZpbmVkLFxyXG4gICAgICAgICAgICB1bmRlZmluZWRcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gdGhpcy5jdXN0b21EYXRlUmFuZ2U7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG5cclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gc3RhcnRPZk1vbnRoKG5ldyBEYXRlKCkpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kID0gc3RhcnRPZkRheShlbmRPZk1vbnRoKG5ldyBEYXRlKCkpKTtcclxuXHJcbiAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGVSYW5nZVRleHQoKTtcclxuXHJcbiAgICB9XHJcblxyXG4gICAgbmdPbkluaXQoKSB7fVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBpZiAoY2hhbmdlc1snZGF0ZVJhbmdlRGVmaW5pdGlvbnMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlRGF0ZVJhbmdlcyh0cnVlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3Rpb25LaW5kJ10pe1xyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChkYXRlLCBkYXRlKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoZGF0ZSwgZGF0ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlMSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZTIgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KGRhdGUxLCBkYXRlMik7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKGRhdGUxLCBkYXRlMik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1sndHJhbnNsYXRpb25zJ10pIHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVDdXN0b21UZXh0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snbG9jYWxlcyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlUmFuZ2VUZXh0KCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWREYXRlU3RhcnQnXSB8fCBjaGFuZ2VzWydzZWxlY3RlZERhdGVFbmQnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVTdGFydE9sZCA9IHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQ7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUVuZE9sZCA9IHRoaXMuc2VsZWN0ZWREYXRlRW5kO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZSddKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGUoY2hhbmdlc1snc2VsZWN0ZWREYXRlJ10uY3VycmVudFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzdGFydE9mRGF5KHZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCA9IHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWw7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZERhdGVTdGFydCddKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlc1snc2VsZWN0ZWREYXRlU3RhcnQnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2V0dGluZ05vdFByZXByb2Nlc3NlZERhdGUgJiYgdGhpcy5zaG93RGF0ZXBpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2V0dGluZ05vdFByZXByb2Nlc3NlZERhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuaXNTZWxlY3RlZFByZWRlZmluZWRQZXJpb2QgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVTdGFydEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1NhbWVEYXkoc2VsZWN0ZWRWYWx1ZSwgdGhpcy5kYXRlRW5kKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQWZ0ZXIoc2VsZWN0ZWRWYWx1ZSwgdGhpcy5kYXRlRW5kKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXI/Lmluc3RhbmNlPy5yZXBhaW50KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUR4RGVmYXVsdENhbGVuZGFyRm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kIGluc3RhbmNlb2YgRGF0ZVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZERhdGVFbmQnXSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZUVuZCddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlRW5kRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IHNlbGVjdGVkVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1NhbWVEYXkoc2VsZWN0ZWRWYWx1ZSwgdGhpcy5kYXRlU3RhcnQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBZnRlcih0aGlzLmRhdGVTdGFydCwgc2VsZWN0ZWRWYWx1ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRHhEZWZhdWx0Q2FsZW5kYXJGb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgaW5zdGFuY2VvZiBEYXRlXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydmaXJzdERheU9mV2VlayddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEYXRlUmFuZ2VzKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDprZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlkb3duSGFuZGxlcihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNob3dEYXRlcGlja2VyKSB7XHJcbiAgICAgICAgICAgIGlmIChldmVudC5jb2RlID09PSAnRXNjYXBlJykge1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRGF0ZXBpY2tlclBvcHVwKGZhbHNlKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5jb2RlID09PSAnRW50ZXInIHx8IGV2ZW50LmNvZGUgPT09ICdOdW1wYWRFbnRlcicpIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hcHBseVBlcmlvZFBpY2tlcigpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IFxyXG4gICAgICAgIH1cclxuICAgIH0gICAgXHJcblxyXG4gICAgcHVibGljIHJhbmRvbUlkUmVmZXJlbmNlOiBudW1iZXIgPSBNYXRoLmZsb29yKFxyXG4gICAgICAgIE1hdGgucmFuZG9tKCkgKiBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUlxyXG4gICAgKTtcclxuXHJcbiAgICBwdWJsaWMgc2V0RGF0ZVJhbmdlRGVmaW5pdGlvbnMoZGVmaW5pdGlvbnM6IEFycmF5PFBlcmlvZFBpY2tlckRhdGVSYW5nZURlZmluaXRpb24+KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5kYXRlUmFuZ2VEZWZpbml0aW9ucyA9IGRlZmluaXRpb25zO1xyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEYXRlUmFuZ2VzKHRydWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXRUcmFuc2xhdGlvbnModHJhbnNsYXRpb25zOiBQZXJpb2RQaWNrZXJUcmFuc2xhdGlvbnMpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnRyYW5zbGF0aW9ucyA9IHRyYW5zbGF0aW9ucztcclxuICAgICAgICB0aGlzLnVwZGF0ZUN1c3RvbVRleHQoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0TG9jYWxlcyhsb2NhbGVzOiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5sb2NhbGVzID0gbG9jYWxlcztcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZVJhbmdlVGV4dCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWREYXRlU3RhcnRGb2N1cygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZERhdGVGb2N1cztcclxuICAgIH1cclxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWREYXRlRW5kRm9jdXMoKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuICF0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXQgaXNNaW5pbXVtTGltaXQoKSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLm1pbkRhdGUgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgaW5zdGFuY2VvZiBEYXRlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCwgdGhpcy5taW5EYXRlKSB8fFxyXG4gICAgICAgICAgICAgICAgaXNCZWZvcmUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCwgdGhpcy5taW5EYXRlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpc01heGltdW1MaW1pdCgpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMubWF4RGF0ZSBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIGlzU2FtZURheSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLCB0aGlzLm1heERhdGUpIHx8XHJcbiAgICAgICAgICAgICAgICBpc0FmdGVyKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsIHRoaXMubWF4RGF0ZSlcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvbkRhdGVDaGFuZ2UoZXZlbnQ6IGFueSkge1xyXG4gICAgICAgIGxldCBzZWxlY3RlZERhdGVGcm9tRXZlbnQgPSBuZXcgRGF0ZShldmVudC52YWx1ZSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcpIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnRGb2N1cykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5pdENhbGVuZGFyVmFsdWUpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBzZWxlY3RlZERhdGVGcm9tRXZlbnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZERhdGVFbmRGb2N1cykge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzQWZ0ZXIoc2VsZWN0ZWREYXRlRnJvbUV2ZW50LCB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBhcyBEYXRlKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBzZWxlY3RlZERhdGVGcm9tRXZlbnQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzQmVmb3JlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGVGcm9tRXZlbnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgYXMgRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgPSBzZWxlY3RlZERhdGVGcm9tRXZlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAgICAgICBpc1NhbWVEYXkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZUZyb21FdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgYXMgRGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIClcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgPSBzZWxlY3RlZERhdGVGcm9tRXZlbnQ7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAgICAgICBpc1NhbWVEYXkoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZUZyb21FdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCBhcyBEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBzZWxlY3RlZERhdGVGcm9tRXZlbnQ7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kID0gc2VsZWN0ZWREYXRlRnJvbUV2ZW50O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZShcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCxcclxuICAgICAgICAgICAgICAgIGZhbHNlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvblN0YXJ0RGF0ZUZvY3VzKCkge1xyXG4gICAgICAgIHRoaXMuaW5pdENhbGVuZGFyVmFsdWUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVTdGFydCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2FsZW5kYXIgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmluaXRDYWxlbmRhclZhbHVlID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRW5kRGF0ZUZvY3VzKCkge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlRW5kKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlQ2FsZW5kYXIgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhcHBseVBlcmlvZFBpY2tlcigpIHtcclxuICAgICAgICB0aGlzLmhpZGluZ0NvbmZpcm1lZERhdGUgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZShcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQsXHJcbiAgICAgICAgICAgIHRydWVcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBvcGVuRGF0ZXBpY2tlclBvcHVwKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSB0cnVlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zaW5nbGVEYXRlUGlja2VyQm94Py5pbnN0YW5jZS5mb2N1cygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVTdGFydE9sZCA9IHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQ7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUVuZE9sZCA9IHRoaXMuc2VsZWN0ZWREYXRlRW5kO1xyXG4gICAgICAgICAgICB0aGlzLmlzU2V0dGluZ05vdFByZXByb2Nlc3NlZERhdGUgPSB0cnVlO1xyXG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnRCb3g/Lmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uU3RhcnREYXRlRm9jdXMoKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBjbG9zZURhdGVwaWNrZXJQb3B1cChlbWl0Q2hhbmdlID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICh0aGlzLnNob3dEYXRlcGlja2VyKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGUoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLFxyXG4gICAgICAgICAgICAgICAgICAgIGVtaXRDaGFuZ2VcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaGlkaW5nQ29uZmlybWVkRGF0ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKHRoaXMuZGF0ZVN0YXJ0T2xkLCB0aGlzLmRhdGVFbmRPbGQsIHRydWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWRpbmdDb25maXJtZWREYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFNlbGVjdGVkRGF0ZShcclxuICAgICAgICBkYXRlU3RhcnQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUsXHJcbiAgICAgICAgZGF0ZUVuZDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSxcclxuICAgICAgICBlbWl0Q2hhbmdlID0gdHJ1ZVxyXG4gICAgKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IGRhdGVTdGFydDtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IGRhdGVFbmQ7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IGRhdGVTdGFydDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgaW5zdGFuY2VvZiBEYXRlXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dCh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LCB0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcbiAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UodGhpcy5zZWxlY3RlZERhdGVTdGFydCwgdGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAoZW1pdENoYW5nZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDaGFuZ2UuZW1pdCh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGVTdGFydE5ldyA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZUVuZE5ldyA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuXHJcbiAgICAgICAgICAgICAgICBjb25zdCBzdGFydERhdGVDaGFuZ2VkID1cclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5kYXRlU3RhcnRPbGQgaW5zdGFuY2VvZiBEYXRlICYmICFpc1NhbWVEYXkodGhpcy5kYXRlU3RhcnRPbGQsIGRhdGVTdGFydE5ldykpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB0aGlzLmRhdGVTdGFydE9sZCA9PT0gJ3N0cmluZycgJiYgdGhpcy5kYXRlU3RhcnRPbGQgPT09ICcnKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGVuZERhdGVDaGFuZ2VkID1cclxuICAgICAgICAgICAgICAgICAgICAodGhpcy5kYXRlRW5kT2xkIGluc3RhbmNlb2YgRGF0ZSAmJiAhaXNTYW1lRGF5KHRoaXMuZGF0ZUVuZE9sZCwgZGF0ZUVuZE5ldykpIHx8IFxyXG4gICAgICAgICAgICAgICAgICAgICh0eXBlb2YgdGhpcy5kYXRlRW5kT2xkID09PSAnc3RyaW5nJyAmJiB0aGlzLmRhdGVFbmRPbGQgPT09ICcnKTtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnREYXRlQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0T2xkID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChlbmREYXRlQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZE9sZCA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZENoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhcnREYXRlQ2hhbmdlZCB8fCBlbmREYXRlQ2hhbmdlZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucGVyaW9kQ2hhbmdlLmVtaXQoW1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCxcclxuICAgICAgICAgICAgICAgICAgICBdKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmNoYW5nZVJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdvVG9OZXh0RGF0ZSgpIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TmV4dFByZXZpb3VzRGF5KHRydWUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TmV4dFByZXZpb3VzUmFuZ2UodHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnb1RvUHJldmlvdXNEYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNEYXkoZmFsc2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0TmV4dFByZXZpb3VzUmFuZ2UoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0TmV4dFByZXZpb3VzRGF5KHNldE5leHQ6IGFueSkge1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFByZWRlZmluZWRQZXJpb2QgPSB0cnVlO1xyXG4gICAgICAgIGxldCBuZXdEYXRlID0gc2V0TmV4dFxyXG4gICAgICAgICAgICA/IGFkZCh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsIGFzIERhdGUsIHsgZGF5czogMSB9KVxyXG4gICAgICAgICAgICA6IGFkZCh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsIGFzIERhdGUsIHsgZGF5czogLTEgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBuZXcgRGF0ZShuZXdEYXRlKTtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZShuZXdEYXRlLCBuZXdEYXRlKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0TmV4dFByZXZpb3VzUmFuZ2Uoc2V0TmV4dDogYm9vbGVhbikge1xyXG4gICAgICAgIHRoaXMuaXNTZWxlY3RlZFByZWRlZmluZWRQZXJpb2QgPSB0cnVlO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgISh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSkgfHxcclxuICAgICAgICAgICAgISh0aGlzLnNlbGVjdGVkRGF0ZUVuZCBpbnN0YW5jZW9mIERhdGUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRSYW5nZShcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQsXHJcbiAgICAgICAgICAgIHNldE5leHQgPyAnbmV4dCcgOiAncHJldmlvdXMnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZShyYW5nZVswXSwgcmFuZ2VbMV0pO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRDZWxsQ3NzQ2xhc3MoZGF0ZTogYW55KSB7XHJcbiAgICAgICAgY29uc3QgY2FsZW5kYXJEYXRlID0gbmV3IERhdGUoZGF0ZSk7XHJcbiAgICAgICAgbGV0IGNzcyA9ICcnO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdwZXJpb2QnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZVN0YXJ0QXNEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkRGF0ZUVuZEFzRGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuXHJcbiAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgIGlzQWZ0ZXIoY2FsZW5kYXJEYXRlLCBzdGFydE9mRGF5KHNlbGVjdGVkRGF0ZVN0YXJ0QXNEYXRlKSkgJiZcclxuICAgICAgICAgICAgICAgIGlzQmVmb3JlKGNhbGVuZGFyRGF0ZSwgc3RhcnRPZkRheShzZWxlY3RlZERhdGVFbmRBc0RhdGUpKSAmJlxyXG4gICAgICAgICAgICAgICAgIXRoaXMuZGlzYWJsZWREYXRlcy5zb21lKChkYXkpID0+IGlzU2FtZURheShjYWxlbmRhckRhdGUsIGRheSkpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgY3NzICs9ICcgYmctc2Vjb25kYXJ5IHRleHQtZGFyayByb3VuZGVkLTAnO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGlzU2FtZURheShjYWxlbmRhckRhdGUsIHNlbGVjdGVkRGF0ZVN0YXJ0QXNEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNzcyArPSAnIGJnLXByaW1hcnkgdGV4dC13aGl0ZSByb3VuZGVkLWxlZnQnO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGlzU2FtZURheShjYWxlbmRhckRhdGUsIHNlbGVjdGVkRGF0ZUVuZEFzRGF0ZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBjc3MgKz0gJyBiZy1wcmltYXJ5IHRleHQtd2hpdGUgcm91bmRlZC1yaWdodCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGNzcztcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHVwZGF0ZUN1c3RvbVRleHQoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5jdXN0b21EYXRlUmFuZ2UubmFtZSA9IHRoaXMudHJhbnNsYXRpb25zPy5jdXN0b21cclxuICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0aW9ucy5jdXN0b21cclxuICAgICAgICAgICAgOiAnJzsgICAgICAgIFxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlRHhEZWZhdWx0Q2FsZW5kYXJGb2N1cygpIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgICAgJyNkYXRlcGlja2VyY29tcG9uZW50IC5keC1jYWxlbmRhci1zZWxlY3RlZC1kYXRlJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBlbGVtZW50ICYmXHJcbiAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdD8uY29udGFpbnMoJ2R4LWNhbGVuZGFyLXNlbGVjdGVkLWRhdGUnKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3Q/LnJlbW92ZSgnZHgtY2FsZW5kYXItc2VsZWN0ZWQtZGF0ZScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFNlbGVjdGVkRGF0ZVJhbmdlVGV4dCgpe1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KFxyXG4gICAgICAgICAgICAgICAgbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCksXHJcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICAgICAgbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCksXHJcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpLFxyXG4gICAgICAgICAgICAgICAgbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KSxcclxuICAgICAgICAgICAgICAgIG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICB9XHJcblxyXG4gICAgdG9nZ2xlRGF0ZVJhbmdlU2VsZWN0b3JWaXNpYmlsaXR5KCkge1xyXG4gICAgICAgIGlmICghdGhpcy5zaG93UHJlZGVmaW5lZE9wdGlvbnNTZWxlY3Rvcikge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlRGF0ZVJhbmdlcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5zaG93UHJlZGVmaW5lZE9wdGlvbnNTZWxlY3RvciA9XHJcbiAgICAgICAgICAgICF0aGlzLnNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yO1xyXG4gICAgfVxyXG5cclxuICAgIGNoYW5nRGF0ZVJhbmdlKHJhbmdlOiBQZXJpb2RQaWNrZXJEYXRlUmFuZ2UpIHtcclxuICAgICAgICB0aGlzLnNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IHJhbmdlO1xyXG5cclxuICAgICAgICBpZiAocmFuZ2UgPT09IHRoaXMuY3VzdG9tRGF0ZVJhbmdlKSB7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbkRhdGVwaWNrZXJQb3B1cCgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gcmFuZ2UuZGF0ZUZyb21cclxuICAgICAgICAgICAgICAgID8gcmFuZ2UuZGF0ZUZyb21cclxuICAgICAgICAgICAgICAgIDogc3RhcnRPZkRheShuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgdGhpcy5kYXRlRW5kID0gcmFuZ2UuZGF0ZVRvID8gcmFuZ2UuZGF0ZVRvIDogc3RhcnRPZkRheShuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGUodGhpcy5kYXRlU3RhcnQsIHRoaXMuZGF0ZUVuZCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG1hdGNoRGF0ZVJhbmdlKGRhdGVGcm9tPzogRGF0ZSwgZGF0ZVRvPzogRGF0ZSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghZGF0ZUZyb20gfHwgIWRhdGVUbykge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gdGhpcy5jdXN0b21EYXRlUmFuZ2U7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZ2VuZXJhdGVEYXRlUmFuZ2VzKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGVSYW5nZSA9IHRoaXMucHJlZGVmaW5lZERhdGVSYW5nZXMuZmlsdGVyKFxyXG4gICAgICAgICAgICAoeCkgPT5cclxuICAgICAgICAgICAgICAgIGlzU2FtZURheSh4LmRhdGVGcm9tIGFzIERhdGUsIGRhdGVGcm9tKSAmJlxyXG4gICAgICAgICAgICAgICAgaXNTYW1lRGF5KHguZGF0ZVRvIGFzIERhdGUsIGRhdGVUbylcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChkYXRlUmFuZ2UubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSBkYXRlUmFuZ2VbMF07XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IHRoaXMuY3VzdG9tRGF0ZVJhbmdlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldERhdGVSYW5nZVRleHQoZGF0ZUZyb20/OiBEYXRlLCBkYXRlVG8/OiBEYXRlKTogdm9pZCB7XHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDEgPSAnJztcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQyID0gJyc7XHJcblxyXG4gICAgICAgIGlmICghKGRhdGVGcm9tIGluc3RhbmNlb2YgRGF0ZSkgfHwgIShkYXRlVG8gaW5zdGFuY2VvZiBEYXRlKSkge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBmdWxsIG1vbnRoXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBpc1NhbWVEYXkoZGF0ZUZyb20sIHN0YXJ0T2ZNb250aChkYXRlRnJvbSkpICYmXHJcbiAgICAgICAgICAgIGlzU2FtZURheShkYXRlVG8sIGVuZE9mTW9udGgoZGF0ZVRvKSkgJiZcclxuICAgICAgICAgICAgaXNTYW1lTW9udGgoZGF0ZUZyb20sIGRhdGVUbylcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MSA9IHRoaXMuZm9ybWF0RGF0ZShcclxuICAgICAgICAgICAgICAgIGRhdGVGcm9tLFxyXG4gICAgICAgICAgICAgICAgJ21vbnRoJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAvLyBvbmUgZGF5XHJcbiAgICAgICAgfSBlbHNlIGlmIChpc1NhbWVEYXkoZGF0ZUZyb20sIGRhdGVUbykpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MSA9IHRoaXMuZm9ybWF0RGF0ZShcclxuICAgICAgICAgICAgICAgIGRhdGVGcm9tLFxyXG4gICAgICAgICAgICAgICAgJ2RheS1sb25nJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDEgPSB0aGlzLmZvcm1hdERhdGUoXHJcbiAgICAgICAgICAgICAgICBkYXRlRnJvbSxcclxuICAgICAgICAgICAgICAgIGlzU2FtZVllYXIoZGF0ZUZyb20sIHRvZGF5KSA/ICdkYXktc2hvcnQnIDogJ2RheSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MiA9IHRoaXMuZm9ybWF0RGF0ZShcclxuICAgICAgICAgICAgICAgIGRhdGVUbyxcclxuICAgICAgICAgICAgICAgIGlzU2FtZVllYXIoZGF0ZVRvLCB0b2RheSkgPyAnZGF5LXNob3J0JyA6ICdkYXknXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGZvcm1hdERhdGUoXHJcbiAgICAgICAgZGF0ZTogRGF0ZSxcclxuICAgICAgICB0eXBlPzogJ21vbnRoJyB8ICdkYXknIHwgJ2RheS1sb25nJyB8ICdkYXktc2hvcnQnIHwgdW5kZWZpbmVkXHJcbiAgICApOiBzdHJpbmcge1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlICdtb250aCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGVzLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6ICdsb25nJyxcclxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF5OiB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY2FzZSAnZGF5LWxvbmcnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlcywge1xyXG4gICAgICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgICAgIHdlZWtkYXk6ICdsb25nJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjYXNlICdkYXktc2hvcnQnOlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMubG9jYWxlcywge1xyXG4gICAgICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgICAgIG1vbnRoOiAnc2hvcnQnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RheSc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGVzLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6ICdzaG9ydCcsXHJcbiAgICAgICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGVzLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZ2VuZXJhdGVEYXRlUmFuZ2VzKGZvcmNlPzogYm9vbGVhbikge1xyXG4gICAgICAgIGNvbnN0IHRvZGF5ID0gc3RhcnRPZkRheShuZXcgRGF0ZSgpKTtcclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBmb3JjZSB8fFxyXG4gICAgICAgICAgICAhdGhpcy5wcmVkZWZpbmVkRGF0ZVJhbmdlc0dlbmVyYXRlZERhdGUgfHxcclxuICAgICAgICAgICAgIWlzU2FtZURheSh0aGlzLnByZWRlZmluZWREYXRlUmFuZ2VzR2VuZXJhdGVkRGF0ZSwgdG9kYXkpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlZGVmaW5lZERhdGVSYW5nZXNHZW5lcmF0ZWREYXRlID0gdG9kYXk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnByZWRlZmluZWREYXRlUmFuZ2VzID1cclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVBpY2tlclNlcnZpY2UuZ2V0UHJlZGVmaW5lZERhdGVSYW5nZXMoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlUmFuZ2VEZWZpbml0aW9ucyxcclxuICAgICAgICAgICAgICAgICAgICB0b2RheSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpcnN0RGF5T2ZXZWVrXHJcbiAgICAgICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5kYXRlUmFuZ2VzID0gWy4uLnRoaXMucHJlZGVmaW5lZERhdGVSYW5nZXNdO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVSYW5nZXMucHVzaCh0aGlzLmN1c3RvbURhdGVSYW5nZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIHByaXZhdGUgbWV0aG9kc1xyXG59XHJcbiIsIjwhLS0gPGRpdiBpZD1cImRhdGVwaWNrZXJidXR0b25zXCI+IC0tPlxyXG4gICAgPGRpdiBcclxuICAgICAgICBjbGFzcz1cImRhdGVwaWNrZXIgZC1mbGV4IGJnLXdoaXRlXCJcclxuICAgICAgICByb2xlPVwiZ3JvdXBcIlxyXG4gICAgICAgIGFyaWEtbGFiZWw9XCJEYXRlIHBpY2tlclwiXHJcbiAgICAgICAgW3N0eWxlLndpZHRoXT1cIndpZHRoXCJcclxuICAgID5cclxuICAgICAgICA8IS0tIDxkaXZcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4tZ3JvdXBcIlxyXG4gICAgICAgICAgICByb2xlPVwiZ3JvdXBcIlxyXG4gICAgICAgID4gLS0+XHJcbiAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICpuZ0lmPVwiZGF0ZVJhbmdlRGVmaW5pdGlvbnMgJiYgZGF0ZVJhbmdlRGVmaW5pdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgICAgICBpZD1cInBpY2tlclByZWRlZmluZWRSYW5nZURyb3Bkb3due3sgcmFuZG9tSWRSZWZlcmVuY2UgfX1cIlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJcclxuICAgICAgICAgICAgICAgICAgICBidG4gYnRuLXdoaXRlXHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgcm91bmRlZC1sZWZ0XHJcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyLXJpZ2h0IFxyXG4gICAgICAgICAgICAgICAgICAgIHAtMFwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImRhdGVSYW5nZURlZmluaXRpb25zV2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURhdGVSYW5nZVNlbGVjdG9yVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInBsLTIgbWwtMSBtci0xIGRhdGUtcmFuZ2UtdGV4dCB0ZXh0LXRydW5jYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3tzZWxlY3RlZERhdGVSYW5nZS5uYW1lfX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tbGlnaHQgZGF0ZS1yYW5nZS1kcm9wZG93bi1idXR0b25cIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImRyb3Bkb3duLXRvZ2dsZVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8ZHgtcG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUmFuZ2VEZWZpbml0aW9ucyAmJiBkYXRlUmFuZ2VEZWZpbml0aW9ucy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgIHRhcmdldD1cIiNwaWNrZXJQcmVkZWZpbmVkUmFuZ2VEcm9wZG93bnt7IHJhbmRvbUlkUmVmZXJlbmNlIH19XCJcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgIFsodmlzaWJsZSldPVwic2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3JcIlxyXG4gICAgICAgICAgICAgICAgW3dyYXBwZXJBdHRyXT1cInsgY2xhc3M6ICdzZHMtZGF0ZXBpY2tlci1yYW5nZXMtcG9wb3ZlcicgfVwiXHJcbiAgICAgICAgICAgICAgICBbbWluV2lkdGhdPVwiZGF0ZVJhbmdlRGVmaW5pdGlvbnNXaWR0aFwiXHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjb250ZW50J1wiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IHJhbmdlIG9mIGRhdGVSYW5nZXNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkcm9wZG93bi1pdGVtIGJvcmRlci0wXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZF0gPSBcInJhbmdlID09PSBzZWxlY3RlZERhdGVSYW5nZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2hhbmdEYXRlUmFuZ2UocmFuZ2UpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPiB7e3JhbmdlLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2R4LXBvcG92ZXI+XHJcbiAgICAgICAgPCEtLSA8L2Rpdj4gLS0+XHJcblxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93UHJldmlvdXNBbmROZXh0QnV0dG9uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBib3JkZXIgYm9yZGVyLXJpZ2h0LTAgcHItMlwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5yb3VuZGVkLWxlZnRdID0gXCIhZGF0ZVJhbmdlRGVmaW5pdGlvbnMgfHwgZGF0ZVJhbmdlRGVmaW5pdGlvbnMubGVuZ3RoID09PSAwXCJcclxuICAgICAgICAgICAgW2NsYXNzLmJvcmRlci1sZWZ0LTBdID0gXCJkYXRlUmFuZ2VEZWZpbml0aW9ucy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc01pbmltdW1MaW1pdCB8fCBkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJnb1RvUHJldmlvdXNEYXRlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwicHJldmlvdXNQZXJpb2RJY29uXCI+PC9mYS1pY29uPlxyXG5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICBpZD1cInBpY2tlckRyb3Bkb3due3sgcmFuZG9tSWRSZWZlcmVuY2UgfX1cIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4td2hpdGUgYm9yZGVyLXRvcCBib3JkZXItYm90dG9tIHRleHQtdHJ1bmNhdGUgcHgtMCBzZWxlY3RlZC1wZXJpb2RcIlxyXG4gICAgICAgICAgICBbY2xhc3Mucm91bmRlZC1sZWZ0XSA9IFwiKCFkYXRlUmFuZ2VEZWZpbml0aW9ucyB8fCBkYXRlUmFuZ2VEZWZpbml0aW9ucy5sZW5ndGggPT09IDApICYmICFzaG93UHJldmlvdXNBbmROZXh0QnV0dG9uc1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItbGVmdF0gPSBcIighZGF0ZVJhbmdlRGVmaW5pdGlvbnMgfHwgZGF0ZVJhbmdlRGVmaW5pdGlvbnMubGVuZ3RoID09PSAwKSAmJiAhc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBbY2xhc3Mucm91bmRlZC1yaWdodF0gPSBcIiFzaG93UHJldmlvdXNBbmROZXh0QnV0dG9uc1wiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItcmlnaHRdID0gXCIhc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cInNob3dEYXRlcGlja2VyID8gY2xvc2VEYXRlcGlja2VyUG9wdXAoKSA6IG9wZW5EYXRlcGlja2VyUG9wdXAoKVwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJteC0xXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwiY2FsZW5kYXJJY29uXCIgc2l6ZT1cInNtXCI+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm14LTEgdGV4dC10cnVuY2F0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7c2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDF9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJteC0yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgW2ljb25dPVwidG9JY29uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtXCJcclxuICAgICAgICAgICAgICAgICAgICA+PC9mYS1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7c2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDJ9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuXHJcbiAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAqbmdJZj1cInNob3dQcmV2aW91c0FuZE5leHRCdXR0b25zXCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGJvcmRlciByb3VuZGVkLXJpZ2h0IGJvcmRlci1sZWZ0LTAgcGwtMlwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNNYXhpbXVtTGltaXQgfHwgZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub05leHREYXRlKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGZhLWljb24gW2ljb25dPVwibmV4dFBlcmlvZEljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICA8ZHgtcG9wb3ZlclxyXG4gICAgICAgIHRhcmdldD1cIiNwaWNrZXJEcm9wZG93bnt7IHJhbmRvbUlkUmVmZXJlbmNlIH19XCJcclxuICAgICAgICBwb3NpdGlvbj1cImJvdHRvbVwiXHJcbiAgICAgICAgWyh2aXNpYmxlKV09XCJzaG93RGF0ZXBpY2tlclwiXHJcbiAgICAgICAgY2xhc3M9XCJtLTAgcC0wXCJcclxuICAgICAgICBbd3JhcHBlckF0dHJdPVwieyBjbGFzczogJ3Nkcy1kYXRlcGlja2VyLXBvcG92ZXInIH1cIlxyXG4gICAgPlxyXG4gICAgICAgIDxkeG8tYW5pbWF0aW9uPlxyXG4gICAgICAgICAgICA8ZHhvLXNob3dcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJwb3BcIlxyXG4gICAgICAgICAgICAgICAgW2Zyb21dPVwieyBzY2FsZTogMC45IH1cIlxyXG4gICAgICAgICAgICAgICAgW3RvXT1cInsgc2NhbGU6IDEgfVwiXHJcbiAgICAgICAgICAgID48L2R4by1zaG93PlxyXG4gICAgICAgICAgICA8ZHhvLWhpZGVcclxuICAgICAgICAgICAgICAgIHR5cGU9XCJmYWRlXCJcclxuICAgICAgICAgICAgICAgIFtmcm9tXT1cIjFcIlxyXG4gICAgICAgICAgICAgICAgW3RvXT1cIjBcIlxyXG4gICAgICAgICAgICA+PC9keG8taGlkZT5cclxuICAgICAgICA8L2R4by1hbmltYXRpb24+XHJcbiAgICAgICAgPGRpdiAqZHhUZW1wbGF0ZT1cImxldCBkYXRhIG9mICdjb250ZW50J1wiPlxyXG4gICAgICAgICAgICA8ZHgtc2Nyb2xsLXZpZXc+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGlkPVwiZGF0ZXBpY2tlcmNvbXBvbmVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRhdGUtaW5wdXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXggZmxleC13cmFwIGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHB4LTQgcHktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc2VsZWN0ZWREYXRlU3RhcnRCb3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJvcmRlciBwLTEgbS0wIHRleHQtY2VudGVyIHJvdW5kZWQgZGF0ZXBpY2tlci1pbnB1dFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZUlucHV0XT1cInNlbGVjdGVkRGF0ZUZvY3VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0Ryb3BEb3duQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlTWFza0JlaGF2aW9yXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9XCJzaG9ydGRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGUgfHwgbWluRGF0ZURlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwibWF4RGF0ZSB8fCBtYXhEYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzVmFsaWRdPVwiaXNWYWxpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25FcnJvcl09XCJ2YWxpZGF0aW9uRXJyb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwic2VsZWN0ZWREYXRlU3RhcnRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkZvY3VzSW4pPVwib25TdGFydERhdGVGb2N1cygpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtZGF0ZS1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBweC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmEtaWNvbiBbaWNvbl09XCJ0b0ljb25cIj48L2ZhLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NlbGVjdGVkRGF0ZUVuZEJveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyIHAtMSBtLTAgdGV4dC1jZW50ZXIgcm91bmRlZCBkYXRlcGlja2VyLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlSW5wdXRdPVwiIXNlbGVjdGVkRGF0ZUZvY3VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0NsZWFyQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0Ryb3BEb3duQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlTWFza0JlaGF2aW9yXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlGb3JtYXQ9XCJzaG9ydGRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGUgfHwgbWluRGF0ZURlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwibWF4RGF0ZSB8fCBtYXhEYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzVmFsaWRdPVwiaXNWYWxpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25FcnJvcl09XCJ2YWxpZGF0aW9uRXJyb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwic2VsZWN0ZWREYXRlRW5kXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25Gb2N1c0luKT1cIm9uRW5kRGF0ZUZvY3VzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiZy13aGl0ZSBweC00IHB5LTNcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJ0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJkYXRlLWlucHV0c1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgcC0yIG1iLTNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGR4LWRhdGUtYm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzaW5nbGVEYXRlUGlja2VyQm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyIHAtMSBtLTAgdGV4dC1jZW50ZXIgcm91bmRlZCBkYXRlcGlja2VyLWlucHV0IGRhdGVwaWNrZXItaW5wdXQtbGFyZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlSW5wdXRdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2hvd0Ryb3BEb3duQnV0dG9uXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3VzZU1hc2tCZWhhdmlvcl09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cInNob3J0ZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pbl09XCJtaW5EYXRlIHx8IG1pbkRhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhEYXRlIHx8IG1heERhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzVmFsaWRdPVwiaXNWYWxpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWxpZGF0aW9uRXJyb3JdPVwidmFsaWRhdGlvbkVycm9yXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwic2VsZWN0ZWREYXRlSW50ZXJuYWxcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwiY2xvc2VEYXRlcGlja2VyUG9wdXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtZGF0ZS1ib3g+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtY2FsZW5kYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjY2FsZW5kYXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGUgfHwgbWluRGF0ZURlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttYXhdPVwibWF4RGF0ZSB8fCBtYXhEYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkRGF0ZXNdPVwiZGlzYWJsZWREYXRlc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzVmFsaWRdPVwiaXNWYWxpZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25FcnJvcl09XCJ2YWxpZGF0aW9uRXJyb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyh2YWx1ZSldPVwidGhpcy5zZWxlY3Rpb25LaW5kID09ICdwZXJpb2QnID8gc2VsZWN0ZWREYXRlQ2FsZW5kYXIgOiBzZWxlY3RlZERhdGVJbnRlcm5hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uVmFsdWVDaGFuZ2VkKT1cIm9uRGF0ZUNoYW5nZSgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmlyc3REYXlPZldlZWtdPVwiZmlyc3REYXlPZldlZWtcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmR4VGVtcGxhdGU9XCJsZXQgY2VsbERhdGEgb2YgJ2NlbGwnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzXT1cIidoLTEwMCBwdC0xJyArIGdldENlbGxDc3NDbGFzcyhjZWxsRGF0YS5kYXRlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBjZWxsRGF0YS50ZXh0IH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1lbmQgYWxpZ24taXRlbXMtY2VudGVyIHB4LTQgcHktM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tc2Vjb25kYXJ5XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2VEYXRlcGlja2VyUG9wdXAoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdHJhbnNsYXRpb25zLmNhbmNlbH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtbC0xXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwiYXBwbHlQZXJpb2RQaWNrZXIoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgdHJhbnNsYXRpb25zLmFwcGx5fX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9keC1zY3JvbGwtdmlldz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgIDwvZHgtcG9wb3Zlcj5cclxuPCEtLSA8L2Rpdj4gLS0+Il19
@@ -363,6 +363,10 @@ class SdsDatePickerComponent {
363
363
  this.translations = translations;
364
364
  this.updateCustomText();
365
365
  }
366
+ setLocales(locales) {
367
+ this.locales = locales;
368
+ this.setSelectedDateRangeText();
369
+ }
366
370
  get selectedDateStartFocus() {
367
371
  return this.selectedDateFocus;
368
372
  }