@spicainternational/ngx-sds-components 2.21.0 → 2.21.1
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.
- package/esm2020/src/lib/date-picker/date-picker.component.mjs +2 -5
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +1 -4
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +1 -4
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -107,9 +107,6 @@ export class SdsDatePickerComponent {
|
|
|
107
107
|
}
|
|
108
108
|
if (changes['translations']) {
|
|
109
109
|
this.updateCustomText();
|
|
110
|
-
// this.customDateRange.name = this.translations?.custom
|
|
111
|
-
// ? this.translations.custom
|
|
112
|
-
// : '';
|
|
113
110
|
}
|
|
114
111
|
if (changes['selectedDateStart'] || changes['selectedDateEnd']) {
|
|
115
112
|
this.dateStartOld = this.selectedDateStart;
|
|
@@ -198,7 +195,7 @@ export class SdsDatePickerComponent {
|
|
|
198
195
|
event.stopPropagation();
|
|
199
196
|
this.closeDatepickerPopup(false);
|
|
200
197
|
}
|
|
201
|
-
else if (event.code === 'Enter') {
|
|
198
|
+
else if (event.code === 'Enter' || event.code === 'NumpadEnter') {
|
|
202
199
|
event.stopPropagation();
|
|
203
200
|
if (!this.disabled) {
|
|
204
201
|
this.applyPeriodPicker();
|
|
@@ -602,4 +599,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
|
|
|
602
599
|
type: HostListener,
|
|
603
600
|
args: ['document:keydown', ['$event']]
|
|
604
601
|
}] } });
|
|
605
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUixHQUFHLEdBQ04sTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxHQUNiLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhFLE9BQU8sRUFDSCxxQkFBcUIsR0FHeEIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFTN0IsTUFBTSxPQUFPLHNCQUFzQjtJQXVGL0IsaUJBQWlCO0lBQ2pCLFlBQ1ksU0FBNEIsRUFDNUIsaUJBQXVDO1FBRHZDLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUF6Rm5ELG1CQUFtQjtRQUNWLGtCQUFhLEdBQXdCLFFBQVEsQ0FBQztRQUU5Qyx5QkFBb0IsR0FBMkMsRUFBRSxDQUFDO1FBRTNFLHVCQUF1QjtRQUNkLGlCQUFZLEdBQVMsSUFBSSxJ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QkEwQ0UsbUJBQW1CO3NCQUQxQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHM0Msb0JBQW9CO3NCQUQzQixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFRixRQUFRO3NCQUF6RCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBaU5NLGdCQUFnQjtzQkFBN0QsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL2NhbGVuZGFyJztcclxuaW1wb3J0IHsgRHhEYXRlQm94Q29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL2RhdGUtYm94JztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBpc1NhbWVEYXksXHJcbiAgICBpc1NhbWVZZWFyLFxyXG4gICAgaXNTYW1lTW9udGgsXHJcbiAgICBzdGFydE9mRGF5LFxyXG4gICAgc3RhcnRPZk1vbnRoLFxyXG4gICAgZW5kT2ZNb250aCxcclxuICAgIGlzQWZ0ZXIsXHJcbiAgICBpc0JlZm9yZSxcclxuICAgIGFkZCxcclxufSBmcm9tICdkYXRlLWZucyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgZmFBbmdsZUxlZnQsXHJcbiAgICBmYUFuZ2xlUmlnaHQsXHJcbiAgICBmYUNhbGVuZGFyLFxyXG59IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tcmVndWxhci1zdmctaWNvbnMnO1xyXG5cclxuaW1wb3J0IHsgZmFBcnJvd1JpZ2h0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1saWdodC1zdmctaWNvbnMnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIFBlcmlvZFBpY2tlckRhdGVSYW5nZSxcclxuICAgIFBlcmlvZFBpY2tlckRhdGVSYW5nZURlZmluaXRpb24sXHJcbiAgICBQZXJpb2RQaWNrZXJUcmFuc2xhdGlvbnMsXHJcbn0gZnJvbSAnLi9kYXRlLXBpY2tlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkc0RhdGVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZHMtZGF0ZS1waWNrZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2RzLWRhdGUtcGlja2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZHNEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgLy8gcHVibGljIGludGVyZmFjZVxyXG4gICAgQElucHV0KCkgc2VsZWN0aW9uS2luZDogJ3BlcmlvZCcgfCAnc2luZ2xlJyA9ICdwZXJpb2QnO1xyXG5cclxuICAgIEBJbnB1dCgpIGRhdGVSYW5nZURlZmluaXRpb25zOiBBcnJheTxQZXJpb2RQaWNrZXJEYXRlUmFuZ2VEZWZpbml0aW9uPiA9IFtdO1xyXG5cclxuICAgIC8vIHNpbmdsZSBkYXRlIHNlbGVjdG9yXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLy8gcGVyaW9kIHNlbGVjdG9yXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGVTdGFydDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZERhdGVTdGFydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGVFbmQ6IHN0cmluZyB8IG51bWJlciB8IERhdGU7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWREYXRlRW5kQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIHBlcmlvZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBtaW5EYXRlPzogRGF0ZTtcclxuICAgIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xyXG5cclxuICAgIEBJbnB1dCgpIGxvY2FsZXM/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHZhbGlkYXRpb25FcnJvcjogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBpc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIFxyXG4gICAgQElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGFwcGx5VGV4dD86IHN0cmluZyA9ICdjbG9zZSc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY2FuY2VsVGV4dD86IHN0cmluZyA9ICdjbG9zZSc7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHRyYW5zbGF0aW9uczogUGVyaW9kUGlja2VyVHJhbnNsYXRpb25zO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBmaXJzdERheU9mV2VlazogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiA9IDE7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGRhdGVSYW5nZURlZmluaXRpb25zV2lkdGg6IHN0cmluZyA9ICcxMXJlbSc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB3aWR0aDogc3RyaW5nID0gJzMwcmVtJztcclxuICAgIFxyXG5cclxuICAgIC8vIHB1YmxpYyBwcm9wZXJ0aWVzXHJcbiAgICBwcmV2aW91c1BlcmlvZEljb24gPSBmYUFuZ2xlTGVmdDtcclxuICAgIG5leHRQZXJpb2RJY29uID0gZmFBbmdsZVJpZ2h0O1xyXG4gICAgY2FsZW5kYXJJY29uID0gZmFDYWxlbmRhcjtcclxuICAgIHRvSWNvbiA9IGZhQXJyb3dSaWdodDtcclxuXHJcbiAgICBwcmVkZWZpbmVkRGF0ZVJhbmdlczogQXJyYXk8UGVyaW9kUGlja2VyRGF0ZVJhbmdlPiA9IFtdO1xyXG4gICAgcHJlZGVmaW5lZERhdGVSYW5nZXNHZW5lcmF0ZWREYXRlOiBEYXRlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgc2VsZWN0ZWREYXRlUmFuZ2U6IFBlcmlvZFBpY2tlckRhdGVSYW5nZTtcclxuICAgIGRhdGVSYW5nZXM6IEFycmF5PFBlcmlvZFBpY2tlckRhdGVSYW5nZT4gPSBbXTtcclxuXHJcbiAgICBzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MTogc3RyaW5nID0gJyc7XHJcbiAgICBzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50Mjogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgbWluRGF0ZURlZmF1bHQ6IERhdGU7XHJcbiAgICBtYXhEYXRlRGVmYXVsdDogRGF0ZTtcclxuXHJcbiAgICBzZWxlY3RlZERhdGVDYWxlbmRhcjogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBzZWxlY3RlZERhdGVJbnRlcm5hbDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgZGF0ZVN0YXJ0T2xkOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gJyc7XHJcbiAgICBkYXRlU3RhcnQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuICAgIGRhdGVFbmRPbGQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuICAgIGRhdGVFbmQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuXHJcbiAgICBzaG93RGF0ZXBpY2tlcjogYm9vbGVhbjtcclxuICAgIHNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaGlkaW5nQ29uZmlybWVkRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlzU2V0dGluZ05vdFByZXByb2Nlc3NlZERhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZERhdGVGb2N1czogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSBmaWVsZHNcclxuICAgIHByaXZhdGUgY3VzdG9tRGF0ZVJhbmdlOiBQZXJpb2RQaWNrZXJEYXRlUmFuZ2U7XHJcbiAgICBwcml2YXRlIGluaXRDYWxlbmRhclZhbHVlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdzaW5nbGVEYXRlUGlja2VyQm94JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHNpbmdsZURhdGVQaWNrZXJCb3g6IER4RGF0ZUJveENvbXBvbmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdGVkRGF0ZVN0YXJ0Qm94JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHNlbGVjdGVkRGF0ZVN0YXJ0Qm94OiBEeERhdGVCb3hDb21wb25lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGNhbGVuZGFyOlxyXG4gICAgICAgIHwgRHhDYWxlbmRhckNvbXBvbmVudFxyXG4gICAgICAgIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIC8vIHB1YmxpYyBtZXRob2RzXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBkYXRlUGlja2VyU2VydmljZTogU2RzRGF0ZVBpY2tlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlRGVmaW5pdGlvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5taW5EYXRlRGVmYXVsdCA9IG5ldyBEYXRlKDE5MDAsIDEsIDEpO1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZURlZmF1bHQgPSBhZGQoc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgeyB5ZWFyczogNTAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGNhbmNlbDogJ0NhbmNlbCcsXHJcbiAgICAgICAgICAgIGFwcGx5OiAnQXBwbHknLFxyXG4gICAgICAgICAgICBjdXN0b206ICdDdXN0b20nLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY3VzdG9tRGF0ZVJhbmdlID0gbmV3IFBlcmlvZFBpY2tlckRhdGVSYW5nZShcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMuY3VzdG9tLFxyXG4gICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHVuZGVmaW5lZFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB0aGlzLmN1c3RvbURhdGVSYW5nZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzaW5nbGVEYXRlU2VsZWN0b3JEZWZhdWx0RGF0ZTtcclxuXHJcbiAgICAgICAgY29uc3QgcGVyaW9kU2VsZWN0b3JEZWZhdWx0U3RhcnREYXRlID0gc3RhcnRPZk1vbnRoKG5ldyBEYXRlKCkpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgPSBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGU7XHJcbiAgICAgICAgY29uc3QgcGVyaW9kU2VsZWN0b3JEZWZhdWx0RW5kRGF0ZSA9IHN0YXJ0T2ZEYXkoZW5kT2ZNb250aChuZXcgRGF0ZSgpKSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgIHNpbmdsZURhdGVTZWxlY3RvckRlZmF1bHREYXRlLFxyXG4gICAgICAgICAgICAgICAgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgIHNpbmdsZURhdGVTZWxlY3RvckRlZmF1bHREYXRlLFxyXG4gICAgICAgICAgICAgICAgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGlzLmRhdGVSYW5nZVRyYW5zbGF0aW9ucyA9IG5ldyBEYXRlUmFuZ2VUcmFuc2xhdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkYXRlUmFuZ2VEZWZpbml0aW9ucyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEYXRlUmFuZ2VzKHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGlvbktpbmQnXSl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KGRhdGUsIGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShkYXRlLCBkYXRlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUxID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlMiA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoZGF0ZTEsIGRhdGUyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoZGF0ZTEsIGRhdGUyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWyd0cmFuc2xhdGlvbnMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUN1c3RvbVRleHQoKTtcclxuICAgICAgICAgICAgLy8gdGhpcy5jdXN0b21EYXRlUmFuZ2UubmFtZSA9IHRoaXMudHJhbnNsYXRpb25zPy5jdXN0b21cclxuICAgICAgICAgICAgLy8gICAgID8gdGhpcy50cmFuc2xhdGlvbnMuY3VzdG9tXHJcbiAgICAgICAgICAgIC8vICAgICA6ICcnO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZVN0YXJ0J10gfHwgY2hhbmdlc1snc2VsZWN0ZWREYXRlRW5kJ10pIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnRPbGQgPSB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0O1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVFbmRPbGQgPSB0aGlzLnNlbGVjdGVkRGF0ZUVuZDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZERhdGUnXSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IG5ldyBEYXRlKGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZSddLmN1cnJlbnRWYWx1ZSk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc3RhcnRPZkRheSh2YWx1ZSk7XHJcblxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWw7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWREYXRlU3RhcnQnXSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZVN0YXJ0J10uY3VycmVudFZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdwZXJpb2QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1NldHRpbmdOb3RQcmVwcm9jZXNzZWREYXRlICYmIHRoaXMuc2hvd0RhdGVwaWNrZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1NldHRpbmdOb3RQcmVwcm9jZXNzZWREYXRlID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlclxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnRGb2N1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmQgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNTYW1lRGF5KHNlbGVjdGVkVmFsdWUsIHRoaXMuZGF0ZUVuZCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FmdGVyKHNlbGVjdGVkVmFsdWUsIHRoaXMuZGF0ZUVuZCkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyPy5pbnN0YW5jZT8ucmVwYWludCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVEeERlZmF1bHRDYWxlbmRhckZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmNoYW5nZVJlZi5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWREYXRlRW5kJ10pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjaGFuZ2VzWydzZWxlY3RlZERhdGVFbmQnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUVuZEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzZWxlY3RlZFZhbHVlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaXNTYW1lRGF5KHNlbGVjdGVkVmFsdWUsIHRoaXMuZGF0ZVN0YXJ0KSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQWZ0ZXIodGhpcy5kYXRlU3RhcnQsIHNlbGVjdGVkVmFsdWUpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUR4RGVmYXVsdENhbGVuZGFyRm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kIGluc3RhbmNlb2YgRGF0ZVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snZmlyc3REYXlPZldlZWsnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRlRGF0ZVJhbmdlcyh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5ZG93bkhhbmRsZXIoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5zaG93RGF0ZXBpY2tlcikge1xyXG4gICAgICAgICAgICBpZiAoZXZlbnQuY29kZSA9PT0gJ0VzY2FwZScpIHtcclxuICAgICAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZURhdGVwaWNrZXJQb3B1cChmYWxzZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuY29kZSA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UGVyaW9kUGlja2VyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfVxyXG4gICAgfSAgICBcclxuXHJcbiAgICBwdWJsaWMgcmFuZG9tSWRSZWZlcmVuY2U6IG51bWJlciA9IE1hdGguZmxvb3IoXHJcbiAgICAgICAgTWF0aC5yYW5kb20oKSAqIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXHJcbiAgICApO1xyXG5cclxuICAgIHB1YmxpYyBzZXREYXRlUmFuZ2VEZWZpbml0aW9ucyhkZWZpbml0aW9uczogQXJyYXk8UGVyaW9kUGlja2VyRGF0ZVJhbmdlRGVmaW5pdGlvbj4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRhdGVSYW5nZURlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXModHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFRyYW5zbGF0aW9ucyh0cmFuc2xhdGlvbnM6IFBlcmlvZFBpY2tlclRyYW5zbGF0aW9ucyl7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMgPSB0cmFuc2xhdGlvbnM7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDdXN0b21UZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzZWxlY3RlZERhdGVTdGFydEZvY3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBzZWxlY3RlZERhdGVFbmRGb2N1cygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWREYXRlRm9jdXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpc01pbmltdW1MaW1pdCgpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMubWluRGF0ZSBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIGlzU2FtZURheSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLCB0aGlzLm1pbkRhdGUpIHx8XHJcbiAgICAgICAgICAgICAgICBpc0JlZm9yZSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLCB0aGlzLm1pbkRhdGUpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzTWF4aW11bUxpbWl0KCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5tYXhEYXRlIGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsIGluc3RhbmNlb2YgRGF0ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsIHRoaXMubWF4RGF0ZSkgfHxcclxuICAgICAgICAgICAgICAgIGlzQWZ0ZXIodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCwgdGhpcy5tYXhEYXRlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRGF0ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZUZyb21FdmVudCA9IG5ldyBEYXRlKGV2ZW50LnZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVTdGFydEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gc2VsZWN0ZWREYXRlRnJvbUV2ZW50O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0Q2FsZW5kYXJWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUVuZEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNBZnRlcihzZWxlY3RlZERhdGVGcm9tRXZlbnQsIHRoaXMuc2VsZWN0ZWREYXRlRW5kIGFzIERhdGUpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNCZWZvcmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZUZyb21FdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCBhcyBEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzU2FtZURheShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlRnJvbUV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBhcyBEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzU2FtZURheShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlRnJvbUV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGFzIERhdGVcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBzZWxlY3RlZERhdGVGcm9tRXZlbnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kLFxyXG4gICAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU3RhcnREYXRlRm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0Q2FsZW5kYXJWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDYWxlbmRhciA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdENhbGVuZGFyVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25FbmREYXRlRm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVFbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDYWxlbmRhciA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFwcGx5UGVyaW9kUGlja2VyKCkge1xyXG4gICAgICAgIHRoaXMuaGlkaW5nQ29uZmlybWVkRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCxcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW5EYXRlcGlja2VyUG9wdXAoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJCb3g/Lmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0T2xkID0gdGhpcy5zZWxlY3RlZERhdGVTdGFydDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlRW5kT2xkID0gdGhpcy5zZWxlY3RlZERhdGVFbmQ7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTZXR0aW5nTm90UHJlcHJvY2Vzc2VkRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydEJveD8uaW5zdGFuY2UuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdGFydERhdGVGb2N1cygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlRGF0ZXBpY2tlclBvcHVwKGVtaXRDaGFuZ2UgPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0RhdGVwaWNrZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZShcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdENoYW5nZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oaWRpbmdDb25maXJtZWREYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGUodGhpcy5kYXRlU3RhcnRPbGQsIHRoaXMuZGF0ZUVuZE9sZCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGluZ0NvbmZpcm1lZERhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgIGRhdGVTdGFydDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSxcclxuICAgICAgICBkYXRlRW5kOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLFxyXG4gICAgICAgIGVtaXRDaGFuZ2UgPSB0cnVlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gZGF0ZVN0YXJ0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kID0gZGF0ZUVuZDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gZGF0ZVN0YXJ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsIHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LCB0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChlbWl0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVN0YXJ0TmV3ID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlRW5kTmV3ID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZUNoYW5nZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmRhdGVTdGFydE9sZCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzU2FtZURheSh0aGlzLmRhdGVTdGFydE9sZCwgZGF0ZVN0YXJ0TmV3KSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHRoaXMuZGF0ZVN0YXJ0T2xkID09PSAnc3RyaW5nJyAmJiB0aGlzLmRhdGVTdGFydE9sZCA9PT0gJycpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kRGF0ZUNoYW5nZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmRhdGVFbmRPbGQgaW5zdGFuY2VvZiBEYXRlICYmICFpc1NhbWVEYXkodGhpcy5kYXRlRW5kT2xkLCBkYXRlRW5kTmV3KSkgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB0aGlzLmRhdGVFbmRPbGQgPT09ICdzdHJpbmcnICYmIHRoaXMuZGF0ZUVuZE9sZCA9PT0gJycpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdGFydERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnRPbGQgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGVuZERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kT2xkID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdGFydERhdGVDaGFuZ2VkIHx8IGVuZERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJpb2RDaGFuZ2UuZW1pdChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kLFxyXG4gICAgICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ29Ub05leHREYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNEYXkodHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNSYW5nZSh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdvVG9QcmV2aW91c0RhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNldE5leHRQcmV2aW91c0RheShmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNSYW5nZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROZXh0UHJldmlvdXNEYXkoc2V0TmV4dDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCA9IHRydWU7XHJcbiAgICAgICAgbGV0IG5ld0RhdGUgPSBzZXROZXh0XHJcbiAgICAgICAgICAgID8gYWRkKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgYXMgRGF0ZSwgeyBkYXlzOiAxIH0pXHJcbiAgICAgICAgICAgIDogYWRkKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgYXMgRGF0ZSwgeyBkYXlzOiAtMSB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IG5ldyBEYXRlKG5ld0RhdGUpO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUsIG5ld0RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROZXh0UHJldmlvdXNSYW5nZShzZXROZXh0OiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAhKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlKSB8fFxyXG4gICAgICAgICAgICAhKHRoaXMuc2VsZWN0ZWREYXRlRW5kIGluc3RhbmNlb2YgRGF0ZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFJhbmdlKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCxcclxuICAgICAgICAgICAgc2V0TmV4dCA/ICduZXh0JyA6ICdwcmV2aW91cydcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKHJhbmdlWzBdLCByYW5nZVsxXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENlbGxDc3NDbGFzcyhkYXRlOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgICAgICBsZXQgY3NzID0gJyc7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlRW5kQXNEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgaXNBZnRlcihjYWxlbmRhckRhdGUsIHN0YXJ0T2ZEYXkoc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUpKSAmJlxyXG4gICAgICAgICAgICAgICAgaXNCZWZvcmUoY2FsZW5kYXJEYXRlLCBzdGFydE9mRGF5KHNlbGVjdGVkRGF0ZUVuZEFzRGF0ZSkpICYmXHJcbiAgICAgICAgICAgICAgICAhdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoKGRheSkgPT4gaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgZGF5KSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBjc3MgKz0gJyBiZy1zZWNvbmRhcnkgdGV4dC1kYXJrIHJvdW5kZWQtMCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3NzICs9ICcgYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHJvdW5kZWQtbGVmdCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgc2VsZWN0ZWREYXRlRW5kQXNEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNzcyArPSAnIGJnLXByaW1hcnkgdGV4dC13aGl0ZSByb3VuZGVkLXJpZ2h0JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3NzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlQ3VzdG9tVGV4dCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1c3RvbURhdGVSYW5nZS5uYW1lID0gdGhpcy50cmFuc2xhdGlvbnM/LmN1c3RvbVxyXG4gICAgICAgICAgICA/IHRoaXMudHJhbnNsYXRpb25zLmN1c3RvbVxyXG4gICAgICAgICAgICA6ICcnOyAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVEeERlZmF1bHRDYWxlbmRhckZvY3VzKCkge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgICAnI2RhdGVwaWNrZXJjb21wb25lbnQgLmR4LWNhbGVuZGFyLXNlbGVjdGVkLWRhdGUnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGVsZW1lbnQgJiZcclxuICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0Py5jb250YWlucygnZHgtY2FsZW5kYXItc2VsZWN0ZWQtZGF0ZScpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdD8ucmVtb3ZlKCdkeC1jYWxlbmRhci1zZWxlY3RlZC1kYXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZURhdGVSYW5nZVNlbGVjdG9yVmlzaWJpbGl0eSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3IpIHtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3IgPVxyXG4gICAgICAgICAgICAhdGhpcy5zaG93UHJlZGVmaW5lZE9wdGlvbnNTZWxlY3RvcjtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ0RhdGVSYW5nZShyYW5nZTogUGVyaW9kUGlja2VyRGF0ZVJhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93UHJlZGVmaW5lZE9wdGlvbnNTZWxlY3RvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSByYW5nZTtcclxuXHJcbiAgICAgICAgaWYgKHJhbmdlID09PSB0aGlzLmN1c3RvbURhdGVSYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5EYXRlcGlja2VyUG9wdXAoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHJhbmdlLmRhdGVGcm9tXHJcbiAgICAgICAgICAgICAgICA/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==
|
|
602
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUixHQUFHLEdBQ04sTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxHQUNiLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhFLE9BQU8sRUFDSCxxQkFBcUIsR0FHeEIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFTN0IsTUFBTSxPQUFPLHNCQUFzQjtJQXVGL0IsaUJBQWlCO0lBQ2pCLFlBQ1ksU0FBNEIsRUFDNUIsaUJBQXVDO1FBRHZDLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUF6Rm5ELG1CQUFtQjtRQUNWLGtCQUFhLEdBQXdCLFFBQVEsQ0FBQztRQUU5Qyx5QkFBb0IsR0FBMkMsRUFBRSxDQUFDO1FBRTNFLHVCQUF1QjtRQUNkLGlCQUFZLEdBQVMsSUFBSSxJ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bUJBQW1CO3NCQUQxQixTQUFTO3VCQUFDLHFCQUFxQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFHM0Msb0JBQW9CO3NCQUQzQixTQUFTO3VCQUFDLHNCQUFzQixFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtnQkFFRixRQUFRO3NCQUF6RCxTQUFTO3VCQUFDLFVBQVUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBOE1NLGdCQUFnQjtzQkFBN0QsWUFBWTt1QkFBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL2NhbGVuZGFyJztcclxuaW1wb3J0IHsgRHhEYXRlQm94Q29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL2RhdGUtYm94JztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBpc1NhbWVEYXksXHJcbiAgICBpc1NhbWVZZWFyLFxyXG4gICAgaXNTYW1lTW9udGgsXHJcbiAgICBzdGFydE9mRGF5LFxyXG4gICAgc3RhcnRPZk1vbnRoLFxyXG4gICAgZW5kT2ZNb250aCxcclxuICAgIGlzQWZ0ZXIsXHJcbiAgICBpc0JlZm9yZSxcclxuICAgIGFkZCxcclxufSBmcm9tICdkYXRlLWZucyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgZmFBbmdsZUxlZnQsXHJcbiAgICBmYUFuZ2xlUmlnaHQsXHJcbiAgICBmYUNhbGVuZGFyLFxyXG59IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tcmVndWxhci1zdmctaWNvbnMnO1xyXG5cclxuaW1wb3J0IHsgZmFBcnJvd1JpZ2h0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1saWdodC1zdmctaWNvbnMnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIFBlcmlvZFBpY2tlckRhdGVSYW5nZSxcclxuICAgIFBlcmlvZFBpY2tlckRhdGVSYW5nZURlZmluaXRpb24sXHJcbiAgICBQZXJpb2RQaWNrZXJUcmFuc2xhdGlvbnMsXHJcbn0gZnJvbSAnLi9kYXRlLXBpY2tlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkc0RhdGVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZHMtZGF0ZS1waWNrZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2RzLWRhdGUtcGlja2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZHNEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgLy8gcHVibGljIGludGVyZmFjZVxyXG4gICAgQElucHV0KCkgc2VsZWN0aW9uS2luZDogJ3BlcmlvZCcgfCAnc2luZ2xlJyA9ICdwZXJpb2QnO1xyXG5cclxuICAgIEBJbnB1dCgpIGRhdGVSYW5nZURlZmluaXRpb25zOiBBcnJheTxQZXJpb2RQaWNrZXJEYXRlUmFuZ2VEZWZpbml0aW9uPiA9IFtdO1xyXG5cclxuICAgIC8vIHNpbmdsZSBkYXRlIHNlbGVjdG9yXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLy8gcGVyaW9kIHNlbGVjdG9yXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGVTdGFydDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZERhdGVTdGFydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGVFbmQ6IHN0cmluZyB8IG51bWJlciB8IERhdGU7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWREYXRlRW5kQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIHBlcmlvZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBtaW5EYXRlPzogRGF0ZTtcclxuICAgIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xyXG5cclxuICAgIEBJbnB1dCgpIGxvY2FsZXM/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHZhbGlkYXRpb25FcnJvcjogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBpc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIFxyXG4gICAgQElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGFwcGx5VGV4dD86IHN0cmluZyA9ICdjbG9zZSc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY2FuY2VsVGV4dD86IHN0cmluZyA9ICdjbG9zZSc7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHRyYW5zbGF0aW9uczogUGVyaW9kUGlja2VyVHJhbnNsYXRpb25zO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBmaXJzdERheU9mV2VlazogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiA9IDE7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGRhdGVSYW5nZURlZmluaXRpb25zV2lkdGg6IHN0cmluZyA9ICcxMXJlbSc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB3aWR0aDogc3RyaW5nID0gJzMwcmVtJztcclxuICAgIFxyXG5cclxuICAgIC8vIHB1YmxpYyBwcm9wZXJ0aWVzXHJcbiAgICBwcmV2aW91c1BlcmlvZEljb24gPSBmYUFuZ2xlTGVmdDtcclxuICAgIG5leHRQZXJpb2RJY29uID0gZmFBbmdsZVJpZ2h0O1xyXG4gICAgY2FsZW5kYXJJY29uID0gZmFDYWxlbmRhcjtcclxuICAgIHRvSWNvbiA9IGZhQXJyb3dSaWdodDtcclxuXHJcbiAgICBwcmVkZWZpbmVkRGF0ZVJhbmdlczogQXJyYXk8UGVyaW9kUGlja2VyRGF0ZVJhbmdlPiA9IFtdO1xyXG4gICAgcHJlZGVmaW5lZERhdGVSYW5nZXNHZW5lcmF0ZWREYXRlOiBEYXRlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgc2VsZWN0ZWREYXRlUmFuZ2U6IFBlcmlvZFBpY2tlckRhdGVSYW5nZTtcclxuICAgIGRhdGVSYW5nZXM6IEFycmF5PFBlcmlvZFBpY2tlckRhdGVSYW5nZT4gPSBbXTtcclxuXHJcbiAgICBzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MTogc3RyaW5nID0gJyc7XHJcbiAgICBzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50Mjogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgbWluRGF0ZURlZmF1bHQ6IERhdGU7XHJcbiAgICBtYXhEYXRlRGVmYXVsdDogRGF0ZTtcclxuXHJcbiAgICBzZWxlY3RlZERhdGVDYWxlbmRhcjogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBzZWxlY3RlZERhdGVJbnRlcm5hbDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgZGF0ZVN0YXJ0T2xkOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gJyc7XHJcbiAgICBkYXRlU3RhcnQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuICAgIGRhdGVFbmRPbGQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuICAgIGRhdGVFbmQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuXHJcbiAgICBzaG93RGF0ZXBpY2tlcjogYm9vbGVhbjtcclxuICAgIHNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaGlkaW5nQ29uZmlybWVkRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlzU2V0dGluZ05vdFByZXByb2Nlc3NlZERhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZERhdGVGb2N1czogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSBmaWVsZHNcclxuICAgIHByaXZhdGUgY3VzdG9tRGF0ZVJhbmdlOiBQZXJpb2RQaWNrZXJEYXRlUmFuZ2U7XHJcbiAgICBwcml2YXRlIGluaXRDYWxlbmRhclZhbHVlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdzaW5nbGVEYXRlUGlja2VyQm94JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHNpbmdsZURhdGVQaWNrZXJCb3g6IER4RGF0ZUJveENvbXBvbmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdGVkRGF0ZVN0YXJ0Qm94JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHNlbGVjdGVkRGF0ZVN0YXJ0Qm94OiBEeERhdGVCb3hDb21wb25lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGNhbGVuZGFyOlxyXG4gICAgICAgIHwgRHhDYWxlbmRhckNvbXBvbmVudFxyXG4gICAgICAgIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIC8vIHB1YmxpYyBtZXRob2RzXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBkYXRlUGlja2VyU2VydmljZTogU2RzRGF0ZVBpY2tlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlRGVmaW5pdGlvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5taW5EYXRlRGVmYXVsdCA9IG5ldyBEYXRlKDE5MDAsIDEsIDEpO1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZURlZmF1bHQgPSBhZGQoc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgeyB5ZWFyczogNTAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGNhbmNlbDogJ0NhbmNlbCcsXHJcbiAgICAgICAgICAgIGFwcGx5OiAnQXBwbHknLFxyXG4gICAgICAgICAgICBjdXN0b206ICdDdXN0b20nLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY3VzdG9tRGF0ZVJhbmdlID0gbmV3IFBlcmlvZFBpY2tlckRhdGVSYW5nZShcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMuY3VzdG9tLFxyXG4gICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHVuZGVmaW5lZFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB0aGlzLmN1c3RvbURhdGVSYW5nZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzaW5nbGVEYXRlU2VsZWN0b3JEZWZhdWx0RGF0ZTtcclxuXHJcbiAgICAgICAgY29uc3QgcGVyaW9kU2VsZWN0b3JEZWZhdWx0U3RhcnREYXRlID0gc3RhcnRPZk1vbnRoKG5ldyBEYXRlKCkpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgPSBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGU7XHJcbiAgICAgICAgY29uc3QgcGVyaW9kU2VsZWN0b3JEZWZhdWx0RW5kRGF0ZSA9IHN0YXJ0T2ZEYXkoZW5kT2ZNb250aChuZXcgRGF0ZSgpKSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgIHNpbmdsZURhdGVTZWxlY3RvckRlZmF1bHREYXRlLFxyXG4gICAgICAgICAgICAgICAgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgIHNpbmdsZURhdGVTZWxlY3RvckRlZmF1bHREYXRlLFxyXG4gICAgICAgICAgICAgICAgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGlzLmRhdGVSYW5nZVRyYW5zbGF0aW9ucyA9IG5ldyBEYXRlUmFuZ2VUcmFuc2xhdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkYXRlUmFuZ2VEZWZpbml0aW9ucyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEYXRlUmFuZ2VzKHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGlvbktpbmQnXSl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KGRhdGUsIGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShkYXRlLCBkYXRlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUxID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlMiA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoZGF0ZTEsIGRhdGUyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoZGF0ZTEsIGRhdGUyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWyd0cmFuc2xhdGlvbnMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUN1c3RvbVRleHQoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZERhdGVTdGFydCddIHx8IGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZUVuZCddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0T2xkID0gdGhpcy5zZWxlY3RlZERhdGVTdGFydDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlRW5kT2xkID0gdGhpcy5zZWxlY3RlZERhdGVFbmQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWREYXRlJ10pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXcgRGF0ZShjaGFuZ2VzWydzZWxlY3RlZERhdGUnXS5jdXJyZW50VmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IHN0YXJ0T2ZEYXkodmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kID0gdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZVN0YXJ0J10pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjaGFuZ2VzWydzZWxlY3RlZERhdGVTdGFydCddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZXR0aW5nTm90UHJlcHJvY2Vzc2VkRGF0ZSAmJiB0aGlzLnNob3dEYXRlcGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTZXR0aW5nTm90UHJlcHJvY2Vzc2VkRGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0Rm9jdXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kIGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzU2FtZURheShzZWxlY3RlZFZhbHVlLCB0aGlzLmRhdGVFbmQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBZnRlcihzZWxlY3RlZFZhbHVlLCB0aGlzLmRhdGVFbmQpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhcj8uaW5zdGFuY2U/LnJlcGFpbnQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRHhEZWZhdWx0Q2FsZW5kYXJGb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgaW5zdGFuY2VvZiBEYXRlXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZUVuZCddKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlc1snc2VsZWN0ZWREYXRlRW5kJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdwZXJpb2QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZFByZWRlZmluZWRQZXJpb2QpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVFbmRGb2N1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc2VsZWN0ZWRWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzU2FtZURheShzZWxlY3RlZFZhbHVlLCB0aGlzLmRhdGVTdGFydCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FmdGVyKHRoaXMuZGF0ZVN0YXJ0LCBzZWxlY3RlZFZhbHVlKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVEeERlZmF1bHRDYWxlbmRhckZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2ZpcnN0RGF5T2ZXZWVrJ10pIHtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXModHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24nLCBbJyRldmVudCddKSBvbktleWRvd25IYW5kbGVyKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0RhdGVwaWNrZXIpIHtcclxuICAgICAgICAgICAgaWYgKGV2ZW50LmNvZGUgPT09ICdFc2NhcGUnKSB7XHJcbiAgICAgICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEYXRlcGlja2VyUG9wdXAoZmFsc2UpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmNvZGUgPT09ICdFbnRlcicgfHwgZXZlbnQuY29kZSA9PT0gJ051bXBhZEVudGVyJykge1xyXG4gICAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmFwcGx5UGVyaW9kUGlja2VyKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gXHJcbiAgICAgICAgfVxyXG4gICAgfSAgICBcclxuXHJcbiAgICBwdWJsaWMgcmFuZG9tSWRSZWZlcmVuY2U6IG51bWJlciA9IE1hdGguZmxvb3IoXHJcbiAgICAgICAgTWF0aC5yYW5kb20oKSAqIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXHJcbiAgICApO1xyXG5cclxuICAgIHB1YmxpYyBzZXREYXRlUmFuZ2VEZWZpbml0aW9ucyhkZWZpbml0aW9uczogQXJyYXk8UGVyaW9kUGlja2VyRGF0ZVJhbmdlRGVmaW5pdGlvbj4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRhdGVSYW5nZURlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXModHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldFRyYW5zbGF0aW9ucyh0cmFuc2xhdGlvbnM6IFBlcmlvZFBpY2tlclRyYW5zbGF0aW9ucyl7XHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMgPSB0cmFuc2xhdGlvbnM7XHJcbiAgICAgICAgdGhpcy51cGRhdGVDdXN0b21UZXh0KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzZWxlY3RlZERhdGVTdGFydEZvY3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBzZWxlY3RlZERhdGVFbmRGb2N1cygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWREYXRlRm9jdXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpc01pbmltdW1MaW1pdCgpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMubWluRGF0ZSBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIGlzU2FtZURheSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLCB0aGlzLm1pbkRhdGUpIHx8XHJcbiAgICAgICAgICAgICAgICBpc0JlZm9yZSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLCB0aGlzLm1pbkRhdGUpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzTWF4aW11bUxpbWl0KCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5tYXhEYXRlIGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsIGluc3RhbmNlb2YgRGF0ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsIHRoaXMubWF4RGF0ZSkgfHxcclxuICAgICAgICAgICAgICAgIGlzQWZ0ZXIodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCwgdGhpcy5tYXhEYXRlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRGF0ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZUZyb21FdmVudCA9IG5ldyBEYXRlKGV2ZW50LnZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVTdGFydEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gc2VsZWN0ZWREYXRlRnJvbUV2ZW50O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0Q2FsZW5kYXJWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUVuZEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNBZnRlcihzZWxlY3RlZERhdGVGcm9tRXZlbnQsIHRoaXMuc2VsZWN0ZWREYXRlRW5kIGFzIERhdGUpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNCZWZvcmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZUZyb21FdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCBhcyBEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzU2FtZURheShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlRnJvbUV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBhcyBEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzU2FtZURheShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlRnJvbUV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGFzIERhdGVcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBzZWxlY3RlZERhdGVGcm9tRXZlbnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kLFxyXG4gICAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU3RhcnREYXRlRm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0Q2FsZW5kYXJWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDYWxlbmRhciA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdENhbGVuZGFyVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25FbmREYXRlRm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVFbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDYWxlbmRhciA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFwcGx5UGVyaW9kUGlja2VyKCkge1xyXG4gICAgICAgIHRoaXMuaGlkaW5nQ29uZmlybWVkRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCxcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW5EYXRlcGlja2VyUG9wdXAoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJCb3g/Lmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0T2xkID0gdGhpcy5zZWxlY3RlZERhdGVTdGFydDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlRW5kT2xkID0gdGhpcy5zZWxlY3RlZERhdGVFbmQ7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTZXR0aW5nTm90UHJlcHJvY2Vzc2VkRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydEJveD8uaW5zdGFuY2UuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdGFydERhdGVGb2N1cygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlRGF0ZXBpY2tlclBvcHVwKGVtaXRDaGFuZ2UgPSB0cnVlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2hvd0RhdGVwaWNrZXIpIHtcclxuICAgICAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IGZhbHNlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZShcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgZW1pdENoYW5nZVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5oaWRpbmdDb25maXJtZWREYXRlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTZWxlY3RlZERhdGUodGhpcy5kYXRlU3RhcnRPbGQsIHRoaXMuZGF0ZUVuZE9sZCwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLmhpZGluZ0NvbmZpcm1lZERhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgIGRhdGVTdGFydDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSxcclxuICAgICAgICBkYXRlRW5kOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLFxyXG4gICAgICAgIGVtaXRDaGFuZ2UgPSB0cnVlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gZGF0ZVN0YXJ0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kID0gZGF0ZUVuZDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gZGF0ZVN0YXJ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsIHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LCB0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChlbWl0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVN0YXJ0TmV3ID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlRW5kTmV3ID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZUNoYW5nZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmRhdGVTdGFydE9sZCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzU2FtZURheSh0aGlzLmRhdGVTdGFydE9sZCwgZGF0ZVN0YXJ0TmV3KSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHRoaXMuZGF0ZVN0YXJ0T2xkID09PSAnc3RyaW5nJyAmJiB0aGlzLmRhdGVTdGFydE9sZCA9PT0gJycpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kRGF0ZUNoYW5nZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmRhdGVFbmRPbGQgaW5zdGFuY2VvZiBEYXRlICYmICFpc1NhbWVEYXkodGhpcy5kYXRlRW5kT2xkLCBkYXRlRW5kTmV3KSkgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB0aGlzLmRhdGVFbmRPbGQgPT09ICdzdHJpbmcnICYmIHRoaXMuZGF0ZUVuZE9sZCA9PT0gJycpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdGFydERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnRPbGQgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGVuZERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kT2xkID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdGFydERhdGVDaGFuZ2VkIHx8IGVuZERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJpb2RDaGFuZ2UuZW1pdChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kLFxyXG4gICAgICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ29Ub05leHREYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNEYXkodHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNSYW5nZSh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdvVG9QcmV2aW91c0RhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNldE5leHRQcmV2aW91c0RheShmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNSYW5nZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROZXh0UHJldmlvdXNEYXkoc2V0TmV4dDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCA9IHRydWU7XHJcbiAgICAgICAgbGV0IG5ld0RhdGUgPSBzZXROZXh0XHJcbiAgICAgICAgICAgID8gYWRkKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgYXMgRGF0ZSwgeyBkYXlzOiAxIH0pXHJcbiAgICAgICAgICAgIDogYWRkKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgYXMgRGF0ZSwgeyBkYXlzOiAtMSB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IG5ldyBEYXRlKG5ld0RhdGUpO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUsIG5ld0RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROZXh0UHJldmlvdXNSYW5nZShzZXROZXh0OiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAhKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlKSB8fFxyXG4gICAgICAgICAgICAhKHRoaXMuc2VsZWN0ZWREYXRlRW5kIGluc3RhbmNlb2YgRGF0ZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFJhbmdlKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCxcclxuICAgICAgICAgICAgc2V0TmV4dCA/ICduZXh0JyA6ICdwcmV2aW91cydcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKHJhbmdlWzBdLCByYW5nZVsxXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENlbGxDc3NDbGFzcyhkYXRlOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgICAgICBsZXQgY3NzID0gJyc7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlRW5kQXNEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgaXNBZnRlcihjYWxlbmRhckRhdGUsIHN0YXJ0T2ZEYXkoc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUpKSAmJlxyXG4gICAgICAgICAgICAgICAgaXNCZWZvcmUoY2FsZW5kYXJEYXRlLCBzdGFydE9mRGF5KHNlbGVjdGVkRGF0ZUVuZEFzRGF0ZSkpICYmXHJcbiAgICAgICAgICAgICAgICAhdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoKGRheSkgPT4gaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgZGF5KSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBjc3MgKz0gJyBiZy1zZWNvbmRhcnkgdGV4dC1kYXJrIHJvdW5kZWQtMCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3NzICs9ICcgYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHJvdW5kZWQtbGVmdCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgc2VsZWN0ZWREYXRlRW5kQXNEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNzcyArPSAnIGJnLXByaW1hcnkgdGV4dC13aGl0ZSByb3VuZGVkLXJpZ2h0JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3NzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlQ3VzdG9tVGV4dCgpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmN1c3RvbURhdGVSYW5nZS5uYW1lID0gdGhpcy50cmFuc2xhdGlvbnM/LmN1c3RvbVxyXG4gICAgICAgICAgICA/IHRoaXMudHJhbnNsYXRpb25zLmN1c3RvbVxyXG4gICAgICAgICAgICA6ICcnOyAgICAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZW1vdmVEeERlZmF1bHRDYWxlbmRhckZvY3VzKCkge1xyXG4gICAgICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFxyXG4gICAgICAgICAgICAnI2RhdGVwaWNrZXJjb21wb25lbnQgLmR4LWNhbGVuZGFyLXNlbGVjdGVkLWRhdGUnXHJcbiAgICAgICAgKTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGVsZW1lbnQgJiZcclxuICAgICAgICAgICAgZWxlbWVudD8uY2xhc3NMaXN0Py5jb250YWlucygnZHgtY2FsZW5kYXItc2VsZWN0ZWQtZGF0ZScpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdD8ucmVtb3ZlKCdkeC1jYWxlbmRhci1zZWxlY3RlZC1kYXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZURhdGVSYW5nZVNlbGVjdG9yVmlzaWJpbGl0eSgpIHtcclxuICAgICAgICBpZiAoIXRoaXMuc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3IpIHtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3IgPVxyXG4gICAgICAgICAgICAhdGhpcy5zaG93UHJlZGVmaW5lZE9wdGlvbnNTZWxlY3RvcjtcclxuICAgIH1cclxuXHJcbiAgICBjaGFuZ0RhdGVSYW5nZShyYW5nZTogUGVyaW9kUGlja2VyRGF0ZVJhbmdlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93UHJlZGVmaW5lZE9wdGlvbnNTZWxlY3RvciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSByYW5nZTtcclxuXHJcbiAgICAgICAgaWYgKHJhbmdlID09PSB0aGlzLmN1c3RvbURhdGVSYW5nZSkge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5EYXRlcGlja2VyUG9wdXAoKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHJhbmdlLmRhdGVGcm9tXHJcbiAgICAgICAgICAgICAgICA/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==
|
|
@@ -267,9 +267,6 @@ class SdsDatePickerComponent {
|
|
|
267
267
|
}
|
|
268
268
|
if (changes['translations']) {
|
|
269
269
|
this.updateCustomText();
|
|
270
|
-
// this.customDateRange.name = this.translations?.custom
|
|
271
|
-
// ? this.translations.custom
|
|
272
|
-
// : '';
|
|
273
270
|
}
|
|
274
271
|
if (changes['selectedDateStart'] || changes['selectedDateEnd']) {
|
|
275
272
|
this.dateStartOld = this.selectedDateStart;
|
|
@@ -358,7 +355,7 @@ class SdsDatePickerComponent {
|
|
|
358
355
|
event.stopPropagation();
|
|
359
356
|
this.closeDatepickerPopup(false);
|
|
360
357
|
}
|
|
361
|
-
else if (event.code === 'Enter') {
|
|
358
|
+
else if (event.code === 'Enter' || event.code === 'NumpadEnter') {
|
|
362
359
|
event.stopPropagation();
|
|
363
360
|
if (!this.disabled) {
|
|
364
361
|
this.applyPeriodPicker();
|