@spicainternational/ngx-sds-components 2.17.2 → 2.18.0
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 +18 -1
- package/fesm2015/spicainternational-ngx-sds-components-src-lib-date-picker.mjs +17 -0
- 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 +17 -0
- package/fesm2020/spicainternational-ngx-sds-components-src-lib-date-picker.mjs.map +1 -1
- package/package.json +1 -1
- package/src/lib/date-picker/date-picker.component.d.ts +1 -0
|
@@ -92,6 +92,19 @@ export class SdsDatePickerComponent {
|
|
|
92
92
|
if (changes['dateRangeDefinitions']) {
|
|
93
93
|
this.generateDateRanges(true);
|
|
94
94
|
}
|
|
95
|
+
if (changes['selectionKind']) {
|
|
96
|
+
if (this.selectionKind == 'single') {
|
|
97
|
+
const date = new Date(this.selectedDateInternal);
|
|
98
|
+
this.setDateRangeText(date, date);
|
|
99
|
+
this.matchDateRange(date, date);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const date1 = new Date(this.selectedDateStart);
|
|
103
|
+
const date2 = new Date(this.selectedDateEnd);
|
|
104
|
+
this.setDateRangeText(date1, date2);
|
|
105
|
+
this.matchDateRange(date1, date2);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
95
108
|
if (changes['translations']) {
|
|
96
109
|
this.customDateRange.name = this.translations?.custom
|
|
97
110
|
? this.translations.custom
|
|
@@ -178,6 +191,10 @@ export class SdsDatePickerComponent {
|
|
|
178
191
|
this.generateDateRanges(true);
|
|
179
192
|
}
|
|
180
193
|
}
|
|
194
|
+
setDateRangeDefinitions(definitions) {
|
|
195
|
+
this.dateRangeDefinitions = definitions;
|
|
196
|
+
this.generateDateRanges(true);
|
|
197
|
+
}
|
|
181
198
|
get selectedDateStartFocus() {
|
|
182
199
|
return this.selectedDateFocus;
|
|
183
200
|
}
|
|
@@ -564,4 +581,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.1", ngImpor
|
|
|
564
581
|
type: HostListener,
|
|
565
582
|
args: ['document:keyup', ['$event']]
|
|
566
583
|
}] } });
|
|
567
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUixHQUFHLEdBQ04sTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxHQUNiLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhFLE9BQU8sRUFDSCxxQkFBcUIsR0FHeEIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFTN0IsTUFBTSxPQUFPLHNCQUFzQjtJQXVGL0IsaUJBQWlCO0lBQ2pCLFlBQ1ksU0FBNEIsRUFDNUIsaUJBQXVDO1FBRHZDLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUF6Rm5ELG1CQUFtQjtRQUNWLGtCQUFhLEdBQXdCLFFBQVEsQ0FBQztRQUU5Qyx5QkFBb0IsR0FBMkMsRUFBRSxDQUFDO1FBRTNFLHVCQUF1QjtRQUNkLGlCQUFZLEdBQVMsSUFBSSxJ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QXFuQkksY0FBYztzQkFBekQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL2NhbGVuZGFyJztcclxuaW1wb3J0IHsgRHhEYXRlQm94Q29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL2RhdGUtYm94JztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBpc1NhbWVEYXksXHJcbiAgICBpc1NhbWVZZWFyLFxyXG4gICAgaXNTYW1lTW9udGgsXHJcbiAgICBzdGFydE9mRGF5LFxyXG4gICAgc3RhcnRPZk1vbnRoLFxyXG4gICAgZW5kT2ZNb250aCxcclxuICAgIGlzQWZ0ZXIsXHJcbiAgICBpc0JlZm9yZSxcclxuICAgIGFkZCxcclxufSBmcm9tICdkYXRlLWZucyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgZmFBbmdsZUxlZnQsXHJcbiAgICBmYUFuZ2xlUmlnaHQsXHJcbiAgICBmYUNhbGVuZGFyLFxyXG59IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tcmVndWxhci1zdmctaWNvbnMnO1xyXG5cclxuaW1wb3J0IHsgZmFBcnJvd1JpZ2h0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1saWdodC1zdmctaWNvbnMnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIFBlcmlvZFBpY2tlckRhdGVSYW5nZSxcclxuICAgIFBlcmlvZFBpY2tlckRhdGVSYW5nZURlZmluaXRpb24sXHJcbiAgICBQZXJpb2RQaWNrZXJUcmFuc2xhdGlvbnMsXHJcbn0gZnJvbSAnLi9kYXRlLXBpY2tlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkc0RhdGVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZHMtZGF0ZS1waWNrZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2RzLWRhdGUtcGlja2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZHNEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgLy8gcHVibGljIGludGVyZmFjZVxyXG4gICAgQElucHV0KCkgc2VsZWN0aW9uS2luZDogJ3BlcmlvZCcgfCAnc2luZ2xlJyA9ICdwZXJpb2QnO1xyXG5cclxuICAgIEBJbnB1dCgpIGRhdGVSYW5nZURlZmluaXRpb25zOiBBcnJheTxQZXJpb2RQaWNrZXJEYXRlUmFuZ2VEZWZpbml0aW9uPiA9IFtdO1xyXG5cclxuICAgIC8vIHNpbmdsZSBkYXRlIHNlbGVjdG9yXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLy8gcGVyaW9kIHNlbGVjdG9yXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGVTdGFydDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZERhdGVTdGFydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGVFbmQ6IHN0cmluZyB8IG51bWJlciB8IERhdGU7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWREYXRlRW5kQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIHBlcmlvZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBtaW5EYXRlPzogRGF0ZTtcclxuICAgIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xyXG5cclxuICAgIEBJbnB1dCgpIGxvY2FsZXM/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHZhbGlkYXRpb25FcnJvcjogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBpc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIFxyXG4gICAgQElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGFwcGx5VGV4dD86IHN0cmluZyA9ICdjbG9zZSc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY2FuY2VsVGV4dD86IHN0cmluZyA9ICdjbG9zZSc7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHRyYW5zbGF0aW9uczogUGVyaW9kUGlja2VyVHJhbnNsYXRpb25zO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBmaXJzdERheU9mV2VlazogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiA9IDE7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGRhdGVSYW5nZURlZmluaXRpb25zV2lkdGg6IHN0cmluZyA9ICcxMHJlbSc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB3aWR0aDogc3RyaW5nID0gJzMwcmVtJztcclxuICAgIFxyXG5cclxuICAgIC8vIHB1YmxpYyBwcm9wZXJ0aWVzXHJcbiAgICBwcmV2aW91c1BlcmlvZEljb24gPSBmYUFuZ2xlTGVmdDtcclxuICAgIG5leHRQZXJpb2RJY29uID0gZmFBbmdsZVJpZ2h0O1xyXG4gICAgY2FsZW5kYXJJY29uID0gZmFDYWxlbmRhcjtcclxuICAgIHRvSWNvbiA9IGZhQXJyb3dSaWdodDtcclxuXHJcbiAgICBwcmVkZWZpbmVkRGF0ZVJhbmdlczogQXJyYXk8UGVyaW9kUGlja2VyRGF0ZVJhbmdlPiA9IFtdO1xyXG4gICAgcHJlZGVmaW5lZERhdGVSYW5nZXNHZW5lcmF0ZWREYXRlOiBEYXRlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgc2VsZWN0ZWREYXRlUmFuZ2U6IFBlcmlvZFBpY2tlckRhdGVSYW5nZTtcclxuICAgIGRhdGVSYW5nZXM6IEFycmF5PFBlcmlvZFBpY2tlckRhdGVSYW5nZT4gPSBbXTtcclxuXHJcbiAgICBzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MTogc3RyaW5nID0gJyc7XHJcbiAgICBzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50Mjogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgbWluRGF0ZURlZmF1bHQ6IERhdGU7XHJcbiAgICBtYXhEYXRlRGVmYXVsdDogRGF0ZTtcclxuXHJcbiAgICBzZWxlY3RlZERhdGVDYWxlbmRhcjogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBzZWxlY3RlZERhdGVJbnRlcm5hbDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgZGF0ZVN0YXJ0T2xkOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gJyc7XHJcbiAgICBkYXRlU3RhcnQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuICAgIGRhdGVFbmRPbGQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuICAgIGRhdGVFbmQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuXHJcbiAgICBzaG93RGF0ZXBpY2tlcjogYm9vbGVhbjtcclxuICAgIHNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaGlkaW5nQ29uZmlybWVkRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlzU2V0dGluZ05vdFByZXByb2Nlc3NlZERhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZERhdGVGb2N1czogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSBmaWVsZHNcclxuICAgIHByaXZhdGUgY3VzdG9tRGF0ZVJhbmdlOiBQZXJpb2RQaWNrZXJEYXRlUmFuZ2U7XHJcbiAgICBwcml2YXRlIGluaXRDYWxlbmRhclZhbHVlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdzaW5nbGVEYXRlUGlja2VyQm94JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHNpbmdsZURhdGVQaWNrZXJCb3g6IER4RGF0ZUJveENvbXBvbmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdGVkRGF0ZVN0YXJ0Qm94JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHNlbGVjdGVkRGF0ZVN0YXJ0Qm94OiBEeERhdGVCb3hDb21wb25lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGNhbGVuZGFyOlxyXG4gICAgICAgIHwgRHhDYWxlbmRhckNvbXBvbmVudFxyXG4gICAgICAgIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIC8vIHB1YmxpYyBtZXRob2RzXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBkYXRlUGlja2VyU2VydmljZTogU2RzRGF0ZVBpY2tlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlRGVmaW5pdGlvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5taW5EYXRlRGVmYXVsdCA9IG5ldyBEYXRlKDE5MDAsIDEsIDEpO1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZURlZmF1bHQgPSBhZGQoc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgeyB5ZWFyczogNTAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGNhbmNlbDogJ0NhbmNlbCcsXHJcbiAgICAgICAgICAgIGFwcGx5OiAnQXBwbHknLFxyXG4gICAgICAgICAgICBjdXN0b206ICdDdXN0b20nLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY3VzdG9tRGF0ZVJhbmdlID0gbmV3IFBlcmlvZFBpY2tlckRhdGVSYW5nZShcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMuY3VzdG9tLFxyXG4gICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHVuZGVmaW5lZFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB0aGlzLmN1c3RvbURhdGVSYW5nZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzaW5nbGVEYXRlU2VsZWN0b3JEZWZhdWx0RGF0ZTtcclxuXHJcbiAgICAgICAgY29uc3QgcGVyaW9kU2VsZWN0b3JEZWZhdWx0U3RhcnREYXRlID0gc3RhcnRPZk1vbnRoKG5ldyBEYXRlKCkpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgPSBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGU7XHJcbiAgICAgICAgY29uc3QgcGVyaW9kU2VsZWN0b3JEZWZhdWx0RW5kRGF0ZSA9IHN0YXJ0T2ZEYXkoZW5kT2ZNb250aChuZXcgRGF0ZSgpKSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgIHNpbmdsZURhdGVTZWxlY3RvckRlZmF1bHREYXRlLFxyXG4gICAgICAgICAgICAgICAgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgIHNpbmdsZURhdGVTZWxlY3RvckRlZmF1bHREYXRlLFxyXG4gICAgICAgICAgICAgICAgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGlzLmRhdGVSYW5nZVRyYW5zbGF0aW9ucyA9IG5ldyBEYXRlUmFuZ2VUcmFuc2xhdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkYXRlUmFuZ2VEZWZpbml0aW9ucyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEYXRlUmFuZ2VzKHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3RyYW5zbGF0aW9ucyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VzdG9tRGF0ZVJhbmdlLm5hbWUgPSB0aGlzLnRyYW5zbGF0aW9ucz8uY3VzdG9tXHJcbiAgICAgICAgICAgICAgICA/IHRoaXMudHJhbnNsYXRpb25zLmN1c3RvbVxyXG4gICAgICAgICAgICAgICAgOiAnJztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZERhdGVTdGFydCddIHx8IGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZUVuZCddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0T2xkID0gdGhpcy5zZWxlY3RlZERhdGVTdGFydDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlRW5kT2xkID0gdGhpcy5zZWxlY3RlZERhdGVFbmQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWREYXRlJ10pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBuZXcgRGF0ZShjaGFuZ2VzWydzZWxlY3RlZERhdGUnXS5jdXJyZW50VmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IHN0YXJ0T2ZEYXkodmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kID0gdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbDtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWxcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZVN0YXJ0J10pIHtcclxuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBjaGFuZ2VzWydzZWxlY3RlZERhdGVTdGFydCddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTZXR0aW5nTm90UHJlcHJvY2Vzc2VkRGF0ZSAmJiB0aGlzLnNob3dEYXRlcGlja2VyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTZXR0aW5nTm90UHJlcHJvY2Vzc2VkRGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXJcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0Rm9jdXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kIGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzU2FtZURheShzZWxlY3RlZFZhbHVlLCB0aGlzLmRhdGVFbmQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBZnRlcihzZWxlY3RlZFZhbHVlLCB0aGlzLmRhdGVFbmQpKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhcj8uaW5zdGFuY2U/LnJlcGFpbnQoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRHhEZWZhdWx0Q2FsZW5kYXJGb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgaW5zdGFuY2VvZiBEYXRlXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhpcy5jaGFuZ2VSZWYuZGV0ZWN0Q2hhbmdlcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZUVuZCddKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlc1snc2VsZWN0ZWREYXRlRW5kJ10uY3VycmVudFZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZFZhbHVlID0gdmFsdWUgaW5zdGFuY2VvZiBEYXRlID8gdmFsdWUgOiBuZXcgRGF0ZSgpO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdwZXJpb2QnKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZFByZWRlZmluZWRQZXJpb2QpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVFbmRGb2N1cykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc2VsZWN0ZWRWYWx1ZTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlzU2FtZURheShzZWxlY3RlZFZhbHVlLCB0aGlzLmRhdGVTdGFydCkgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0FmdGVyKHRoaXMuZGF0ZVN0YXJ0LCBzZWxlY3RlZFZhbHVlKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVEeERlZmF1bHRDYWxlbmRhckZvY3VzKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2ZpcnN0RGF5T2ZXZWVrJ10pIHtcclxuICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXModHJ1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyByYW5kb21JZFJlZmVyZW5jZTogbnVtYmVyID0gTWF0aC5mbG9vcihcclxuICAgICAgICBNYXRoLnJhbmRvbSgpICogTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVJcclxuICAgICk7XHJcblxyXG4gICAgcHVibGljIGdldCBzZWxlY3RlZERhdGVTdGFydEZvY3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBzZWxlY3RlZERhdGVFbmRGb2N1cygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWREYXRlRm9jdXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpc01pbmltdW1MaW1pdCgpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMubWluRGF0ZSBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIGlzU2FtZURheSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLCB0aGlzLm1pbkRhdGUpIHx8XHJcbiAgICAgICAgICAgICAgICBpc0JlZm9yZSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLCB0aGlzLm1pbkRhdGUpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzTWF4aW11bUxpbWl0KCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5tYXhEYXRlIGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsIGluc3RhbmNlb2YgRGF0ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsIHRoaXMubWF4RGF0ZSkgfHxcclxuICAgICAgICAgICAgICAgIGlzQWZ0ZXIodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCwgdGhpcy5tYXhEYXRlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRGF0ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZUZyb21FdmVudCA9IG5ldyBEYXRlKGV2ZW50LnZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVTdGFydEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gc2VsZWN0ZWREYXRlRnJvbUV2ZW50O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0Q2FsZW5kYXJWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUVuZEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNBZnRlcihzZWxlY3RlZERhdGVGcm9tRXZlbnQsIHRoaXMuc2VsZWN0ZWREYXRlRW5kIGFzIERhdGUpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNCZWZvcmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZUZyb21FdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCBhcyBEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzU2FtZURheShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlRnJvbUV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBhcyBEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzU2FtZURheShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlRnJvbUV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGFzIERhdGVcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBzZWxlY3RlZERhdGVGcm9tRXZlbnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kLFxyXG4gICAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU3RhcnREYXRlRm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0Q2FsZW5kYXJWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDYWxlbmRhciA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdENhbGVuZGFyVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25FbmREYXRlRm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVFbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDYWxlbmRhciA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFwcGx5UGVyaW9kUGlja2VyKCkge1xyXG4gICAgICAgIHRoaXMuaGlkaW5nQ29uZmlybWVkRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCxcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW5EYXRlcGlja2VyUG9wdXAoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJCb3g/Lmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0T2xkID0gdGhpcy5zZWxlY3RlZERhdGVTdGFydDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlRW5kT2xkID0gdGhpcy5zZWxlY3RlZERhdGVFbmQ7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTZXR0aW5nTm90UHJlcHJvY2Vzc2VkRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydEJveD8uaW5zdGFuY2UuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdGFydERhdGVGb2N1cygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlRGF0ZXBpY2tlclBvcHVwKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsXHJcbiAgICAgICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmhpZGluZ0NvbmZpcm1lZERhdGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKHRoaXMuZGF0ZVN0YXJ0T2xkLCB0aGlzLmRhdGVFbmRPbGQsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaGlkaW5nQ29uZmlybWVkRGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgIGRhdGVTdGFydDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSxcclxuICAgICAgICBkYXRlRW5kOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLFxyXG4gICAgICAgIGVtaXRDaGFuZ2UgPSB0cnVlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gZGF0ZVN0YXJ0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kID0gZGF0ZUVuZDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gZGF0ZVN0YXJ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsIHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LCB0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChlbWl0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVN0YXJ0TmV3ID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlRW5kTmV3ID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZUNoYW5nZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmRhdGVTdGFydE9sZCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzU2FtZURheSh0aGlzLmRhdGVTdGFydE9sZCwgZGF0ZVN0YXJ0TmV3KSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHRoaXMuZGF0ZVN0YXJ0T2xkID09PSAnc3RyaW5nJyAmJiB0aGlzLmRhdGVTdGFydE9sZCA9PT0gJycpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kRGF0ZUNoYW5nZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmRhdGVFbmRPbGQgaW5zdGFuY2VvZiBEYXRlICYmICFpc1NhbWVEYXkodGhpcy5kYXRlRW5kT2xkLCBkYXRlRW5kTmV3KSkgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB0aGlzLmRhdGVFbmRPbGQgPT09ICdzdHJpbmcnICYmIHRoaXMuZGF0ZUVuZE9sZCA9PT0gJycpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdGFydERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnRPbGQgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGVuZERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kT2xkID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdGFydERhdGVDaGFuZ2VkIHx8IGVuZERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJpb2RDaGFuZ2UuZW1pdChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kLFxyXG4gICAgICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ29Ub05leHREYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNEYXkodHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNSYW5nZSh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdvVG9QcmV2aW91c0RhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNldE5leHRQcmV2aW91c0RheShmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNSYW5nZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROZXh0UHJldmlvdXNEYXkoc2V0TmV4dDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCA9IHRydWU7XHJcbiAgICAgICAgbGV0IG5ld0RhdGUgPSBzZXROZXh0XHJcbiAgICAgICAgICAgID8gYWRkKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgYXMgRGF0ZSwgeyBkYXlzOiAxIH0pXHJcbiAgICAgICAgICAgIDogYWRkKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgYXMgRGF0ZSwgeyBkYXlzOiAtMSB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IG5ldyBEYXRlKG5ld0RhdGUpO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUsIG5ld0RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROZXh0UHJldmlvdXNSYW5nZShzZXROZXh0OiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAhKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlKSB8fFxyXG4gICAgICAgICAgICAhKHRoaXMuc2VsZWN0ZWREYXRlRW5kIGluc3RhbmNlb2YgRGF0ZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFJhbmdlKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCxcclxuICAgICAgICAgICAgc2V0TmV4dCA/ICduZXh0JyA6ICdwcmV2aW91cydcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKHJhbmdlWzBdLCByYW5nZVsxXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENlbGxDc3NDbGFzcyhkYXRlOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgICAgICBsZXQgY3NzID0gJyc7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlRW5kQXNEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgaXNBZnRlcihjYWxlbmRhckRhdGUsIHN0YXJ0T2ZEYXkoc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUpKSAmJlxyXG4gICAgICAgICAgICAgICAgaXNCZWZvcmUoY2FsZW5kYXJEYXRlLCBzdGFydE9mRGF5KHNlbGVjdGVkRGF0ZUVuZEFzRGF0ZSkpICYmXHJcbiAgICAgICAgICAgICAgICAhdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoKGRheSkgPT4gaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgZGF5KSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBjc3MgKz0gJyBiZy1zZWNvbmRhcnkgdGV4dC1kYXJrIHJvdW5kZWQtMCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3NzICs9ICcgYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHJvdW5kZWQtbGVmdCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgc2VsZWN0ZWREYXRlRW5kQXNEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNzcyArPSAnIGJnLXByaW1hcnkgdGV4dC13aGl0ZSByb3VuZGVkLXJpZ2h0JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3NzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlRHhEZWZhdWx0Q2FsZW5kYXJGb2N1cygpIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgICAgJyNkYXRlcGlja2VyY29tcG9uZW50IC5keC1jYWxlbmRhci1zZWxlY3RlZC1kYXRlJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBlbGVtZW50ICYmXHJcbiAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdD8uY29udGFpbnMoJ2R4LWNhbGVuZGFyLXNlbGVjdGVkLWRhdGUnKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3Q/LnJlbW92ZSgnZHgtY2FsZW5kYXItc2VsZWN0ZWQtZGF0ZScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVEYXRlUmFuZ2VTZWxlY3RvclZpc2liaWxpdHkoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEYXRlUmFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yID1cclxuICAgICAgICAgICAgIXRoaXMuc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdEYXRlUmFuZ2UocmFuZ2U6IFBlcmlvZFBpY2tlckRhdGVSYW5nZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gcmFuZ2U7XHJcblxyXG4gICAgICAgIGlmIChyYW5nZSA9PT0gdGhpcy5jdXN0b21EYXRlUmFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuRGF0ZXBpY2tlclBvcHVwKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSByYW5nZS5kYXRlRnJvbVxyXG4gICAgICAgICAgICAgICAgPyByYW5nZS5kYXRlRnJvbVxyXG4gICAgICAgICAgICAgICAgOiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSByYW5nZS5kYXRlVG8gPyByYW5nZS5kYXRlVG8gOiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZSh0aGlzLmRhdGVTdGFydCwgdGhpcy5kYXRlRW5kLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbWF0Y2hEYXRlUmFuZ2UoZGF0ZUZyb20/OiBEYXRlLCBkYXRlVG8/OiBEYXRlKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFkYXRlRnJvbSB8fCAhZGF0ZVRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB0aGlzLmN1c3RvbURhdGVSYW5nZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXMoKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGF0ZVJhbmdlID0gdGhpcy5wcmVkZWZpbmVkRGF0ZVJhbmdlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh4KSA9PlxyXG4gICAgICAgICAgICAgICAgaXNTYW1lRGF5KHguZGF0ZUZyb20gYXMgRGF0ZSwgZGF0ZUZyb20pICYmXHJcbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkoeC5kYXRlVG8gYXMgRGF0ZSwgZGF0ZVRvKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGRhdGVSYW5nZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IGRhdGVSYW5nZVswXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gdGhpcy5jdXN0b21EYXRlUmFuZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0RGF0ZVJhbmdlVGV4dChkYXRlRnJvbT86IERhdGUsIGRhdGVUbz86IERhdGUpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MSA9ICcnO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDIgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKCEoZGF0ZUZyb20gaW5zdGFuY2VvZiBEYXRlKSB8fCAhKGRhdGVUbyBpbnN0YW5jZW9mIERhdGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGZ1bGwgbW9udGhcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGlzU2FtZURheShkYXRlRnJvbSwgc3RhcnRPZk1vbnRoKGRhdGVGcm9tKSkgJiZcclxuICAgICAgICAgICAgaXNTYW1lRGF5KGRhdGVUbywgZW5kT2ZNb250aChkYXRlVG8pKSAmJlxyXG4gICAgICAgICAgICBpc1NhbWVNb250aChkYXRlRnJvbSwgZGF0ZVRvKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQxID0gdGhpcy5mb3JtYXREYXRlKFxyXG4gICAgICAgICAgICAgICAgZGF0ZUZyb20sXHJcbiAgICAgICAgICAgICAgICAnbW9udGgnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIG9uZSBkYXlcclxuICAgICAgICB9IGVsc2UgaWYgKGlzU2FtZURheShkYXRlRnJvbSwgZGF0ZVRvKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQxID0gdGhpcy5mb3JtYXREYXRlKFxyXG4gICAgICAgICAgICAgICAgZGF0ZUZyb20sXHJcbiAgICAgICAgICAgICAgICAnZGF5LWxvbmcnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MSA9IHRoaXMuZm9ybWF0RGF0ZShcclxuICAgICAgICAgICAgICAgIGRhdGVGcm9tLFxyXG4gICAgICAgICAgICAgICAgaXNTYW1lWWVhcihkYXRlRnJvbSwgdG9kYXkpID8gJ2RheS1zaG9ydCcgOiAnZGF5J1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQyID0gdGhpcy5mb3JtYXREYXRlKFxyXG4gICAgICAgICAgICAgICAgZGF0ZVRvLFxyXG4gICAgICAgICAgICAgICAgaXNTYW1lWWVhcihkYXRlVG8sIHRvZGF5KSA/ICdkYXktc2hvcnQnIDogJ2RheSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9ybWF0RGF0ZShcclxuICAgICAgICBkYXRlOiBEYXRlLFxyXG4gICAgICAgIHR5cGU/OiAnbW9udGgnIHwgJ2RheScgfCAnZGF5LWxvbmcnIHwgJ2RheS1zaG9ydCcgfCB1bmRlZmluZWRcclxuICAgICk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZXMsIHtcclxuICAgICAgICAgICAgICAgICAgICBtb250aDogJ2xvbmcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXk6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjYXNlICdkYXktbG9uZyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGVzLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheTogJ2xvbmcnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RheS1zaG9ydCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGVzLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6ICdzaG9ydCcsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZXMsIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcclxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZXMsIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICBtb250aDogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZURhdGVSYW5nZXMoZm9yY2U/OiBib29sZWFuKSB7XHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGZvcmNlIHx8XHJcbiAgICAgICAgICAgICF0aGlzLnByZWRlZmluZWREYXRlUmFuZ2VzR2VuZXJhdGVkRGF0ZSB8fFxyXG4gICAgICAgICAgICAhaXNTYW1lRGF5KHRoaXMucHJlZGVmaW5lZERhdGVSYW5nZXNHZW5lcmF0ZWREYXRlLCB0b2RheSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVkZWZpbmVkRGF0ZVJhbmdlc0dlbmVyYXRlZERhdGUgPSB0b2RheTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucHJlZGVmaW5lZERhdGVSYW5nZXMgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRQcmVkZWZpbmVkRGF0ZVJhbmdlcyhcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVSYW5nZURlZmluaXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvZGF5LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3REYXlPZldlZWtcclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRhdGVSYW5nZXMgPSBbLi4udGhpcy5wcmVkZWZpbmVkRGF0ZVJhbmdlc107XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVJhbmdlcy5wdXNoKHRoaXMuY3VzdG9tRGF0ZVJhbmdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKSBvbktleXVwSGFuZGxlcihcclxuICAgICAgICBldmVudDogS2V5Ym9hcmRFdmVudFxyXG4gICAgKSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDI3KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEYXRlcGlja2VyUG9wdXAoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJpdmF0ZSBtZXRob2RzXHJcbn1cclxuIiwiPCEtLSA8ZGl2IGlkPVwiZGF0ZXBpY2tlcmJ1dHRvbnNcIj4gLS0+XHJcbiAgICA8ZGl2IFxyXG4gICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlciBkLWZsZXggYmctd2hpdGVcIlxyXG4gICAgICAgIHJvbGU9XCJncm91cFwiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkRhdGUgcGlja2VyXCJcclxuICAgICAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxyXG4gICAgPlxyXG4gICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1ncm91cFwiXHJcbiAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXHJcbiAgICAgICAgPiAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUmFuZ2VEZWZpbml0aW9ucyAmJiBkYXRlUmFuZ2VEZWZpbml0aW9ucy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgIGlkPVwicGlja2VyUHJlZGVmaW5lZFJhbmdlRHJvcGRvd257eyByYW5kb21JZFJlZmVyZW5jZSB9fVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGJ0biBidG4td2hpdGVcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXJcclxuICAgICAgICAgICAgICAgICAgICByb3VuZGVkLWxlZnRcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQgXHJcbiAgICAgICAgICAgICAgICAgICAgZHJvcGRvd24tdG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC10cnVuY2F0ZVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImRhdGVSYW5nZURlZmluaXRpb25zV2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURhdGVSYW5nZVNlbGVjdG9yVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3tzZWxlY3RlZERhdGVSYW5nZS5uYW1lfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8ZHgtcG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUmFuZ2VEZWZpbml0aW9ucyAmJiBkYXRlUmFuZ2VEZWZpbml0aW9ucy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgIHRhcmdldD1cIiNwaWNrZXJQcmVkZWZpbmVkUmFuZ2VEcm9wZG93bnt7IHJhbmRvbUlkUmVmZXJlbmNlIH19XCJcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgIFsodmlzaWJsZSldPVwic2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3JcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NvbnRlbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcmFuZ2Ugb2YgZGF0ZVJhbmdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZvbnQtd2VpZ2h0LTUwMF09XCJyYW5nZSA9PT0gc2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nRGF0ZVJhbmdlKHJhbmdlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4ge3tyYW5nZS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9keC1wb3BvdmVyPlxyXG4gICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4td2hpdGUgYm9yZGVyIGJvcmRlci1yaWdodC0wIHByLTJcIlxyXG4gICAgICAgICAgICBbY2xhc3Mucm91bmRlZC1sZWZ0XSA9IFwiIWRhdGVSYW5nZURlZmluaXRpb25zIHx8IGRhdGVSYW5nZURlZmluaXRpb25zLmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItbGVmdC0wXSA9IFwiZGF0ZVJhbmdlRGVmaW5pdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNNaW5pbXVtTGltaXQgfHwgZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzRGF0ZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cInByZXZpb3VzUGVyaW9kSWNvblwiPjwvZmEtaWNvbj5cclxuXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgaWQ9XCJwaWNrZXJEcm9wZG93bnt7IHJhbmRvbUlkUmVmZXJlbmNlIH19XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGJvcmRlci10b3AgYm9yZGVyLWJvdHRvbSB0ZXh0LXRydW5jYXRlIHB4LTAgc2VsZWN0ZWQtcGVyaW9kXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdW5kZWQtbGVmdF0gPSBcIighZGF0ZVJhbmdlRGVmaW5pdGlvbnMgfHwgZGF0ZVJhbmdlRGVmaW5pdGlvbnMubGVuZ3RoID09PSAwKSAmJiAhc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWxlZnRdID0gXCIoIWRhdGVSYW5nZURlZmluaXRpb25zIHx8IGRhdGVSYW5nZURlZmluaXRpb25zLmxlbmd0aCA9PT0gMCkgJiYgIXNob3dQcmV2aW91c0FuZE5leHRCdXR0b25zXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdW5kZWQtcmlnaHRdID0gXCIhc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XSA9IFwiIXNob3dQcmV2aW91c0FuZE5leHRCdXR0b25zXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93RGF0ZXBpY2tlciA/IGNsb3NlRGF0ZXBpY2tlclBvcHVwKCkgOiBvcGVuRGF0ZXBpY2tlclBvcHVwKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXgtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImNhbGVuZGFySWNvblwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0xIHRleHQtdHJ1bmNhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQxfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZhLWljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cInRvSWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93UHJldmlvdXNBbmROZXh0QnV0dG9uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBib3JkZXIgcm91bmRlZC1yaWdodCBib3JkZXItbGVmdC0wIHBsLTJcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTWF4aW11bUxpbWl0IHx8IGRpc2FibGVkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9OZXh0RGF0ZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIm5leHRQZXJpb2RJY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGR4LXBvcG92ZXJcclxuICAgICAgICB0YXJnZXQ9XCIjcGlja2VyRHJvcGRvd257eyByYW5kb21JZFJlZmVyZW5jZSB9fVwiXHJcbiAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgIFsodmlzaWJsZSldPVwic2hvd0RhdGVwaWNrZXJcIlxyXG4gICAgICAgIChvbkhpZGluZyk9XCJjbG9zZURhdGVwaWNrZXJQb3B1cCgpXCJcclxuICAgICAgICBjbGFzcz1cIm0tMCBwLTBcIlxyXG4gICAgICAgIFt3cmFwcGVyQXR0cl09XCJ7IGNsYXNzOiAnc2RzLWRhdGVwaWNrZXItcG9wb3ZlcicgfVwiXHJcbiAgICA+XHJcbiAgICAgICAgPGR4by1hbmltYXRpb24+XHJcbiAgICAgICAgICAgIDxkeG8tc2hvd1xyXG4gICAgICAgICAgICAgICAgdHlwZT1cInBvcFwiXHJcbiAgICAgICAgICAgICAgICBbZnJvbV09XCJ7IHNjYWxlOiAwLjkgfVwiXHJcbiAgICAgICAgICAgICAgICBbdG9dPVwieyBzY2FsZTogMSB9XCJcclxuICAgICAgICAgICAgPjwvZHhvLXNob3c+XHJcbiAgICAgICAgICAgIDxkeG8taGlkZVxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImZhZGVcIlxyXG4gICAgICAgICAgICAgICAgW2Zyb21dPVwiMVwiXHJcbiAgICAgICAgICAgICAgICBbdG9dPVwiMFwiXHJcbiAgICAgICAgICAgID48L2R4by1oaWRlPlxyXG4gICAgICAgIDwvZHhvLWFuaW1hdGlvbj5cclxuICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NvbnRlbnQnXCI+XHJcbiAgICAgICAgICAgIDxkeC1zY3JvbGwtdmlldz5cclxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJkYXRlcGlja2VyY29tcG9uZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZGF0ZS1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtNCBweS0zXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1kYXRlLWJveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzZWxlY3RlZERhdGVTdGFydEJveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyIHAtMSBtLTAgdGV4dC1jZW50ZXIgcm91bmRlZCBkYXRlcGlja2VyLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlSW5wdXRdPVwic2VsZWN0ZWREYXRlRm9jdXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93RHJvcERvd25CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VNYXNrQmVoYXZpb3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cInNob3J0ZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluRGF0ZSB8fCBtaW5EYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhEYXRlIHx8IG1heERhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNWYWxpZF09XCJpc1ZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJzZWxlY3RlZERhdGVTdGFydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uRm9jdXNJbik9XCJvblN0YXJ0RGF0ZUZvY3VzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHB4LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cInRvSWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc2VsZWN0ZWREYXRlRW5kQm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXIgcC0xIG0tMCB0ZXh0LWNlbnRlciByb3VuZGVkIGRhdGVwaWNrZXItaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVJbnB1dF09XCIhc2VsZWN0ZWREYXRlRm9jdXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93RHJvcERvd25CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VNYXNrQmVoYXZpb3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cInNob3J0ZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluRGF0ZSB8fCBtaW5EYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhEYXRlIHx8IG1heERhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNWYWxpZF09XCJpc1ZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJzZWxlY3RlZERhdGVFbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkZvY3VzSW4pPVwib25FbmREYXRlRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIHB4LTQgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRhdGUtaW5wdXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBwLTIgbWItM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NpbmdsZURhdGVQaWNrZXJCb3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXIgcC0xIG0tMCB0ZXh0LWNlbnRlciByb3VuZGVkIGRhdGVwaWNrZXItaW5wdXQgZGF0ZXBpY2tlci1pbnB1dC1sYXJnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVJbnB1dF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93RHJvcERvd25CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlTWFza0JlaGF2aW9yXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0PVwic2hvcnRkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGUgfHwgbWluRGF0ZURlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heERhdGUgfHwgbWF4RGF0ZURlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNWYWxpZF09XCJpc1ZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25FcnJvcl09XCJ2YWxpZGF0aW9uRXJyb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJzZWxlY3RlZERhdGVJbnRlcm5hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJjbG9zZURhdGVwaWNrZXJQb3B1cCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jYWxlbmRhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNjYWxlbmRhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluRGF0ZSB8fCBtaW5EYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhEYXRlIHx8IG1heERhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWREYXRlc109XCJkaXNhYmxlZERhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNWYWxpZF09XCJpc1ZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJ0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcgPyBzZWxlY3RlZERhdGVDYWxlbmRhciA6IHNlbGVjdGVkRGF0ZUludGVybmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZHhUZW1wbGF0ZT1cImxldCBjZWxsRGF0YSBvZiAnY2VsbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2gtMTAwIHB0LTEnICsgZ2V0Q2VsbENzc0NsYXNzKGNlbGxEYXRhLmRhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNlbGxEYXRhLnRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGhpcy5zZWxlY3Rpb25LaW5kID09ICdwZXJpb2QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtNCBweS0zXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVwaWNrZXJQb3B1cCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGlvbnMuY2FuY2VsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1sLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVBlcmlvZFBpY2tlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGlvbnMuYXBwbHl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2R4LXNjcm9sbC12aWV3PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9keC1wb3BvdmVyPlxyXG48IS0tIDwvZGl2PiAtLT4iXX0=
|
|
584
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXNkcy1jb21wb25lbnRzL3NyYy9saWIvZGF0ZS1waWNrZXIvZGF0ZS1waWNrZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLFlBQVksRUFDWixLQUFLLEVBR0wsTUFBTSxFQUVOLFNBQVMsR0FDWixNQUFNLGVBQWUsQ0FBQztBQUl2QixPQUFPLEVBQ0gsU0FBUyxFQUNULFVBQVUsRUFDVixXQUFXLEVBQ1gsVUFBVSxFQUNWLFlBQVksRUFDWixVQUFVLEVBQ1YsT0FBTyxFQUNQLFFBQVEsRUFDUixHQUFHLEdBQ04sTUFBTSxVQUFVLENBQUM7QUFFbEIsT0FBTyxFQUNILFdBQVcsRUFDWCxZQUFZLEVBQ1osVUFBVSxHQUNiLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBRWhFLE9BQU8sRUFDSCxxQkFBcUIsR0FHeEIsTUFBTSxxQkFBcUIsQ0FBQzs7Ozs7Ozs7QUFTN0IsTUFBTSxPQUFPLHNCQUFzQjtJQXVGL0IsaUJBQWlCO0lBQ2pCLFlBQ1ksU0FBNEIsRUFDNUIsaUJBQXVDO1FBRHZDLGNBQVMsR0FBVCxTQUFTLENBQW1CO1FBQzVCLHNCQUFpQixHQUFqQixpQkFBaUIsQ0FBc0I7UUF6Rm5ELG1CQUFtQjtRQUNWLGtCQUFhLEdBQXdCLFFBQVEsQ0FBQztRQUU5Qyx5QkFBb0IsR0FBMkMsRUFBRSxDQUFDO1FBRTNFLHVCQUF1QjtRQUNkLGlCQUFZLEdBQVMsSUFBSSxJ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QkFBdUI7c0JBQWhDLE1BQU07Z0JBRUUsZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxxQkFBcUI7c0JBQTlCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFFRSxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUVHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBRVUsU0FBUztzQkFBeEIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLO2dCQUVVLFlBQVk7c0JBQTNCLEtBQUs7Z0JBRVUsY0FBYztzQkFBN0IsS0FBSztnQkFFVSx5QkFBeUI7c0JBQXhDLEtBQUs7Z0JBQ1UsMEJBQTBCO3NCQUF6QyxLQUFLO2dCQUVVLEtBQUs7c0JBQXBCLEtBQUs7Z0JBMENFLG1CQUFtQjtzQkFEMUIsU0FBUzt1QkFBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRzNDLG9CQUFvQjtzQkFEM0IsU0FBUzt1QkFBQyxzQkFBc0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBRUYsUUFBUTtzQkFBekQsU0FBUzt1QkFBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFO2dCQTJvQkksY0FBYztzQkFBekQsWUFBWTt1QkFBQyxnQkFBZ0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdExpc3RlbmVyLFxyXG4gICAgSW5wdXQsXHJcbiAgICBPbkNoYW5nZXMsXHJcbiAgICBPbkluaXQsXHJcbiAgICBPdXRwdXQsXHJcbiAgICBTaW1wbGVDaGFuZ2VzLFxyXG4gICAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBEeENhbGVuZGFyQ29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL2NhbGVuZGFyJztcclxuaW1wb3J0IHsgRHhEYXRlQm94Q29tcG9uZW50IH0gZnJvbSAnZGV2ZXh0cmVtZS1hbmd1bGFyL3VpL2RhdGUtYm94JztcclxuXHJcbmltcG9ydCB7XHJcbiAgICBpc1NhbWVEYXksXHJcbiAgICBpc1NhbWVZZWFyLFxyXG4gICAgaXNTYW1lTW9udGgsXHJcbiAgICBzdGFydE9mRGF5LFxyXG4gICAgc3RhcnRPZk1vbnRoLFxyXG4gICAgZW5kT2ZNb250aCxcclxuICAgIGlzQWZ0ZXIsXHJcbiAgICBpc0JlZm9yZSxcclxuICAgIGFkZCxcclxufSBmcm9tICdkYXRlLWZucyc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgZmFBbmdsZUxlZnQsXHJcbiAgICBmYUFuZ2xlUmlnaHQsXHJcbiAgICBmYUNhbGVuZGFyLFxyXG59IGZyb20gJ0Bmb3J0YXdlc29tZS9wcm8tcmVndWxhci1zdmctaWNvbnMnO1xyXG5cclxuaW1wb3J0IHsgZmFBcnJvd1JpZ2h0IH0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1saWdodC1zdmctaWNvbnMnO1xyXG5cclxuaW1wb3J0IHtcclxuICAgIFBlcmlvZFBpY2tlckRhdGVSYW5nZSxcclxuICAgIFBlcmlvZFBpY2tlckRhdGVSYW5nZURlZmluaXRpb24sXHJcbiAgICBQZXJpb2RQaWNrZXJUcmFuc2xhdGlvbnMsXHJcbn0gZnJvbSAnLi9kYXRlLXBpY2tlci5tb2RlbCc7XHJcbmltcG9ydCB7IFNkc0RhdGVQaWNrZXJTZXJ2aWNlIH0gZnJvbSAnLi9zZHMtZGF0ZS1waWNrZXIuc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnc2RzLWRhdGUtcGlja2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTZHNEYXRlUGlja2VyQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xyXG4gICAgLy8gcHVibGljIGludGVyZmFjZVxyXG4gICAgQElucHV0KCkgc2VsZWN0aW9uS2luZDogJ3BlcmlvZCcgfCAnc2luZ2xlJyA9ICdwZXJpb2QnO1xyXG5cclxuICAgIEBJbnB1dCgpIGRhdGVSYW5nZURlZmluaXRpb25zOiBBcnJheTxQZXJpb2RQaWNrZXJEYXRlUmFuZ2VEZWZpbml0aW9uPiA9IFtdO1xyXG5cclxuICAgIC8vIHNpbmdsZSBkYXRlIHNlbGVjdG9yXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xyXG4gICAgQE91dHB1dCgpIHB1YmxpYyBzZWxlY3RlZERhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gICAgLy8gcGVyaW9kIHNlbGVjdG9yXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGVTdGFydDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZTtcclxuICAgIEBPdXRwdXQoKSBzZWxlY3RlZERhdGVTdGFydENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBzZWxlY3RlZERhdGVFbmQ6IHN0cmluZyB8IG51bWJlciB8IERhdGU7XHJcbiAgICBAT3V0cHV0KCkgc2VsZWN0ZWREYXRlRW5kQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIHBlcmlvZENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBASW5wdXQoKSBtaW5EYXRlPzogRGF0ZTtcclxuICAgIEBJbnB1dCgpIG1heERhdGU/OiBEYXRlO1xyXG5cclxuICAgIEBJbnB1dCgpIGxvY2FsZXM/OiBzdHJpbmcgfCBBcnJheTxzdHJpbmc+O1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIEBJbnB1dCgpIHZhbGlkYXRpb25FcnJvcjogc3RyaW5nID0gJyc7XHJcbiAgICBASW5wdXQoKSBpc1ZhbGlkOiBib29sZWFuID0gdHJ1ZTtcclxuICAgIFxyXG4gICAgQElucHV0KCkgZGlzYWJsZWREYXRlczogRGF0ZVtdID0gW107XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGFwcGx5VGV4dD86IHN0cmluZyA9ICdjbG9zZSc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgY2FuY2VsVGV4dD86IHN0cmluZyA9ICdjbG9zZSc7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIHRyYW5zbGF0aW9uczogUGVyaW9kUGlja2VyVHJhbnNsYXRpb25zO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBmaXJzdERheU9mV2VlazogMCB8IDEgfCAyIHwgMyB8IDQgfCA1IHwgNiA9IDE7XHJcblxyXG4gICAgQElucHV0KCkgcHVibGljIGRhdGVSYW5nZURlZmluaXRpb25zV2lkdGg6IHN0cmluZyA9ICcxMHJlbSc7XHJcbiAgICBASW5wdXQoKSBwdWJsaWMgc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB3aWR0aDogc3RyaW5nID0gJzMwcmVtJztcclxuICAgIFxyXG5cclxuICAgIC8vIHB1YmxpYyBwcm9wZXJ0aWVzXHJcbiAgICBwcmV2aW91c1BlcmlvZEljb24gPSBmYUFuZ2xlTGVmdDtcclxuICAgIG5leHRQZXJpb2RJY29uID0gZmFBbmdsZVJpZ2h0O1xyXG4gICAgY2FsZW5kYXJJY29uID0gZmFDYWxlbmRhcjtcclxuICAgIHRvSWNvbiA9IGZhQXJyb3dSaWdodDtcclxuXHJcbiAgICBwcmVkZWZpbmVkRGF0ZVJhbmdlczogQXJyYXk8UGVyaW9kUGlja2VyRGF0ZVJhbmdlPiA9IFtdO1xyXG4gICAgcHJlZGVmaW5lZERhdGVSYW5nZXNHZW5lcmF0ZWREYXRlOiBEYXRlIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gICAgc2VsZWN0ZWREYXRlUmFuZ2U6IFBlcmlvZFBpY2tlckRhdGVSYW5nZTtcclxuICAgIGRhdGVSYW5nZXM6IEFycmF5PFBlcmlvZFBpY2tlckRhdGVSYW5nZT4gPSBbXTtcclxuXHJcbiAgICBzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MTogc3RyaW5nID0gJyc7XHJcbiAgICBzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50Mjogc3RyaW5nID0gJyc7XHJcblxyXG4gICAgbWluRGF0ZURlZmF1bHQ6IERhdGU7XHJcbiAgICBtYXhEYXRlRGVmYXVsdDogRGF0ZTtcclxuXHJcbiAgICBzZWxlY3RlZERhdGVDYWxlbmRhcjogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IG5ldyBEYXRlKCk7XHJcbiAgICBzZWxlY3RlZERhdGVJbnRlcm5hbDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSA9IG5ldyBEYXRlKCk7XHJcblxyXG4gICAgZGF0ZVN0YXJ0T2xkOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlID0gJyc7XHJcbiAgICBkYXRlU3RhcnQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuICAgIGRhdGVFbmRPbGQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuICAgIGRhdGVFbmQ6IHN0cmluZyB8IG51bWJlciB8IERhdGUgPSAnJztcclxuXHJcbiAgICBzaG93RGF0ZXBpY2tlcjogYm9vbGVhbjtcclxuICAgIHNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgaGlkaW5nQ29uZmlybWVkRGF0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIGlzU2V0dGluZ05vdFByZXByb2Nlc3NlZERhdGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBzZWxlY3RlZERhdGVGb2N1czogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gICAgLy8gcHJpdmF0ZSBmaWVsZHNcclxuICAgIHByaXZhdGUgY3VzdG9tRGF0ZVJhbmdlOiBQZXJpb2RQaWNrZXJEYXRlUmFuZ2U7XHJcbiAgICBwcml2YXRlIGluaXRDYWxlbmRhclZhbHVlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgICBAVmlld0NoaWxkKCdzaW5nbGVEYXRlUGlja2VyQm94JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHNpbmdsZURhdGVQaWNrZXJCb3g6IER4RGF0ZUJveENvbXBvbmVudCB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcclxuICAgIEBWaWV3Q2hpbGQoJ3NlbGVjdGVkRGF0ZVN0YXJ0Qm94JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcbiAgICBwcml2YXRlIHNlbGVjdGVkRGF0ZVN0YXJ0Qm94OiBEeERhdGVCb3hDb21wb25lbnQgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XHJcbiAgICBAVmlld0NoaWxkKCdjYWxlbmRhcicsIHsgc3RhdGljOiBmYWxzZSB9KSBwcml2YXRlIGNhbGVuZGFyOlxyXG4gICAgICAgIHwgRHhDYWxlbmRhckNvbXBvbmVudFxyXG4gICAgICAgIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG5cclxuICAgIC8vIHB1YmxpYyBtZXRob2RzXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIGNoYW5nZVJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgcHJpdmF0ZSBkYXRlUGlja2VyU2VydmljZTogU2RzRGF0ZVBpY2tlclNlcnZpY2VcclxuICAgICkge1xyXG4gICAgICAgIHRoaXMuZGF0ZVJhbmdlRGVmaW5pdGlvbnMgPSBbXTtcclxuXHJcbiAgICAgICAgdGhpcy5taW5EYXRlRGVmYXVsdCA9IG5ldyBEYXRlKDE5MDAsIDEsIDEpO1xyXG4gICAgICAgIHRoaXMubWF4RGF0ZURlZmF1bHQgPSBhZGQoc3RhcnRPZkRheShuZXcgRGF0ZSgpKSwgeyB5ZWFyczogNTAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMgPSB7XHJcbiAgICAgICAgICAgIGNhbmNlbDogJ0NhbmNlbCcsXHJcbiAgICAgICAgICAgIGFwcGx5OiAnQXBwbHknLFxyXG4gICAgICAgICAgICBjdXN0b206ICdDdXN0b20nLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMuY3VzdG9tRGF0ZVJhbmdlID0gbmV3IFBlcmlvZFBpY2tlckRhdGVSYW5nZShcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGlvbnMuY3VzdG9tLFxyXG4gICAgICAgICAgICB1bmRlZmluZWQsXHJcbiAgICAgICAgICAgIHVuZGVmaW5lZFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB0aGlzLmN1c3RvbURhdGVSYW5nZTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGUgPSBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzaW5nbGVEYXRlU2VsZWN0b3JEZWZhdWx0RGF0ZTtcclxuXHJcbiAgICAgICAgY29uc3QgcGVyaW9kU2VsZWN0b3JEZWZhdWx0U3RhcnREYXRlID0gc3RhcnRPZk1vbnRoKG5ldyBEYXRlKCkpO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgPSBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGU7XHJcbiAgICAgICAgY29uc3QgcGVyaW9kU2VsZWN0b3JEZWZhdWx0RW5kRGF0ZSA9IHN0YXJ0T2ZEYXkoZW5kT2ZNb250aChuZXcgRGF0ZSgpKSk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVJhbmdlVGV4dChcclxuICAgICAgICAgICAgICAgIHNpbmdsZURhdGVTZWxlY3RvckRlZmF1bHREYXRlLFxyXG4gICAgICAgICAgICAgICAgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgIHNpbmdsZURhdGVTZWxlY3RvckRlZmF1bHREYXRlLFxyXG4gICAgICAgICAgICAgICAgc2luZ2xlRGF0ZVNlbGVjdG9yRGVmYXVsdERhdGVcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRTdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICBwZXJpb2RTZWxlY3RvckRlZmF1bHRFbmREYXRlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0aGlzLmRhdGVSYW5nZVRyYW5zbGF0aW9ucyA9IG5ldyBEYXRlUmFuZ2VUcmFuc2xhdGlvbnMoKTtcclxuICAgIH1cclxuXHJcbiAgICBuZ09uSW5pdCgpIHt9XHJcblxyXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xyXG4gICAgICAgIGlmIChjaGFuZ2VzWydkYXRlUmFuZ2VEZWZpbml0aW9ucyddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEYXRlUmFuZ2VzKHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGlvbktpbmQnXSl7XHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KGRhdGUsIGRhdGUpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShkYXRlLCBkYXRlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRhdGUxID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlMiA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoZGF0ZTEsIGRhdGUyKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoZGF0ZTEsIGRhdGUyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWyd0cmFuc2xhdGlvbnMnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1c3RvbURhdGVSYW5nZS5uYW1lID0gdGhpcy50cmFuc2xhdGlvbnM/LmN1c3RvbVxyXG4gICAgICAgICAgICAgICAgPyB0aGlzLnRyYW5zbGF0aW9ucy5jdXN0b21cclxuICAgICAgICAgICAgICAgIDogJyc7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY2hhbmdlc1snc2VsZWN0ZWREYXRlU3RhcnQnXSB8fCBjaGFuZ2VzWydzZWxlY3RlZERhdGVFbmQnXSkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVTdGFydE9sZCA9IHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQ7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUVuZE9sZCA9IHRoaXMuc2VsZWN0ZWREYXRlRW5kO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZSddKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbmV3IERhdGUoY2hhbmdlc1snc2VsZWN0ZWREYXRlJ10uY3VycmVudFZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzdGFydE9mRGF5KHZhbHVlKTtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbDtcclxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCA9IHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWw7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbFxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHRoaXMubWF0Y2hEYXRlUmFuZ2UoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZERhdGVTdGFydCddKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2hhbmdlc1snc2VsZWN0ZWREYXRlU3RhcnQnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkVmFsdWUgPSB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPyB2YWx1ZSA6IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2V0dGluZ05vdFByZXByb2Nlc3NlZERhdGUgJiYgdGhpcy5zaG93RGF0ZXBpY2tlcikge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2V0dGluZ05vdFByZXByb2Nlc3NlZERhdGUgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgIXRoaXMuaXNTZWxlY3RlZFByZWRlZmluZWRQZXJpb2QgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dEYXRlcGlja2VyXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVTdGFydEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0ID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUVuZCBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1NhbWVEYXkoc2VsZWN0ZWRWYWx1ZSwgdGhpcy5kYXRlRW5kKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQWZ0ZXIoc2VsZWN0ZWRWYWx1ZSwgdGhpcy5kYXRlRW5kKSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCA9IHNlbGVjdGVkVmFsdWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXI/Lmluc3RhbmNlPy5yZXBhaW50KCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUR4RGVmYXVsdENhbGVuZGFyRm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kIGluc3RhbmNlb2YgRGF0ZVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZShcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzZWxlY3RlZERhdGVFbmQnXSkge1xyXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNoYW5nZXNbJ3NlbGVjdGVkRGF0ZUVuZCddLmN1cnJlbnRWYWx1ZTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRWYWx1ZSA9IHZhbHVlIGluc3RhbmNlb2YgRGF0ZSA/IHZhbHVlIDogbmV3IERhdGUoKTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJykge1xyXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlRW5kRm9jdXMpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kID0gc2VsZWN0ZWRWYWx1ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IHNlbGVjdGVkVmFsdWU7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVTdGFydCBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc1NhbWVEYXkoc2VsZWN0ZWRWYWx1ZSwgdGhpcy5kYXRlU3RhcnQpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBZnRlcih0aGlzLmRhdGVTdGFydCwgc2VsZWN0ZWRWYWx1ZSkpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBzZWxlY3RlZFZhbHVlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlRHhEZWZhdWx0Q2FsZW5kYXJGb2N1cygpO1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgaW5zdGFuY2VvZiBEYXRlXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERhdGVSYW5nZVRleHQoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kXHJcbiAgICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm1hdGNoRGF0ZVJhbmdlKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydmaXJzdERheU9mV2VlayddKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEYXRlUmFuZ2VzKHRydWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgcmFuZG9tSWRSZWZlcmVuY2U6IG51bWJlciA9IE1hdGguZmxvb3IoXHJcbiAgICAgICAgTWF0aC5yYW5kb20oKSAqIE51bWJlci5NQVhfU0FGRV9JTlRFR0VSXHJcbiAgICApO1xyXG5cclxuICAgIHB1YmxpYyBzZXREYXRlUmFuZ2VEZWZpbml0aW9ucyhkZWZpbml0aW9uczogQXJyYXk8UGVyaW9kUGlja2VyRGF0ZVJhbmdlRGVmaW5pdGlvbj4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmRhdGVSYW5nZURlZmluaXRpb25zID0gZGVmaW5pdGlvbnM7XHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXModHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBzZWxlY3RlZERhdGVTdGFydEZvY3VzKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGdldCBzZWxlY3RlZERhdGVFbmRGb2N1cygpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gIXRoaXMuc2VsZWN0ZWREYXRlRm9jdXM7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldCBpc01pbmltdW1MaW1pdCgpIHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMubWluRGF0ZSBpbnN0YW5jZW9mIERhdGUgJiZcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIGlzU2FtZURheSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLCB0aGlzLm1pbkRhdGUpIHx8XHJcbiAgICAgICAgICAgICAgICBpc0JlZm9yZSh0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsLCB0aGlzLm1pbkRhdGUpXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ2V0IGlzTWF4aW11bUxpbWl0KCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5tYXhEYXRlIGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsIGluc3RhbmNlb2YgRGF0ZVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgaXNTYW1lRGF5KHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsIHRoaXMubWF4RGF0ZSkgfHxcclxuICAgICAgICAgICAgICAgIGlzQWZ0ZXIodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCwgdGhpcy5tYXhEYXRlKVxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uRGF0ZUNoYW5nZShldmVudDogYW55KSB7XHJcbiAgICAgICAgbGV0IHNlbGVjdGVkRGF0ZUZyb21FdmVudCA9IG5ldyBEYXRlKGV2ZW50LnZhbHVlKTtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVTdGFydEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gc2VsZWN0ZWREYXRlRnJvbUV2ZW50O1xyXG5cclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0Q2FsZW5kYXJWYWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRm9jdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkRGF0ZUVuZEZvY3VzKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNBZnRlcihzZWxlY3RlZERhdGVGcm9tRXZlbnQsIHRoaXMuc2VsZWN0ZWREYXRlRW5kIGFzIERhdGUpXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgaXNCZWZvcmUoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0ZUZyb21FdmVudCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCBhcyBEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzU2FtZURheShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlRnJvbUV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBhcyBEYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUZvY3VzID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGlzU2FtZURheShcclxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRlRnJvbUV2ZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGFzIERhdGVcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCA9IHNlbGVjdGVkRGF0ZUZyb21FdmVudDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVFbmQgPSBzZWxlY3RlZERhdGVGcm9tRXZlbnQ7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydCxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kLFxyXG4gICAgICAgICAgICAgICAgZmFsc2VcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9uU3RhcnREYXRlRm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5pbml0Q2FsZW5kYXJWYWx1ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDYWxlbmRhciA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdENhbGVuZGFyVmFsdWUgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgb25FbmREYXRlRm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVGb2N1cyA9IGZhbHNlO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGVFbmQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVDYWxlbmRhciA9IG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFwcGx5UGVyaW9kUGlja2VyKCkge1xyXG4gICAgICAgIHRoaXMuaGlkaW5nQ29uZmlybWVkRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCxcclxuICAgICAgICAgICAgdHJ1ZVxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG9wZW5EYXRlcGlja2VyUG9wdXAoKSB7XHJcbiAgICAgICAgdGhpcy5zaG93RGF0ZXBpY2tlciA9IHRydWU7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZURhdGVQaWNrZXJCb3g/Lmluc3RhbmNlLmZvY3VzKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVN0YXJ0T2xkID0gdGhpcy5zZWxlY3RlZERhdGVTdGFydDtcclxuICAgICAgICAgICAgdGhpcy5kYXRlRW5kT2xkID0gdGhpcy5zZWxlY3RlZERhdGVFbmQ7XHJcbiAgICAgICAgICAgIHRoaXMuaXNTZXR0aW5nTm90UHJlcHJvY2Vzc2VkRGF0ZSA9IHRydWU7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVTdGFydEJveD8uaW5zdGFuY2UuZm9jdXMoKTtcclxuICAgICAgICAgICAgICAgIHRoaXMub25TdGFydERhdGVGb2N1cygpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGNsb3NlRGF0ZXBpY2tlclBvcHVwKCkge1xyXG4gICAgICAgIHRoaXMuc2hvd0RhdGVwaWNrZXIgPSBmYWxzZTtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25LaW5kID09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwsXHJcbiAgICAgICAgICAgICAgICB0cnVlXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmhpZGluZ0NvbmZpcm1lZERhdGUpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKHRoaXMuZGF0ZVN0YXJ0T2xkLCB0aGlzLmRhdGVFbmRPbGQsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuaGlkaW5nQ29uZmlybWVkRGF0ZSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0U2VsZWN0ZWREYXRlKFxyXG4gICAgICAgIGRhdGVTdGFydDogc3RyaW5nIHwgbnVtYmVyIHwgRGF0ZSxcclxuICAgICAgICBkYXRlRW5kOiBzdHJpbmcgfCBudW1iZXIgfCBEYXRlLFxyXG4gICAgICAgIGVtaXRDaGFuZ2UgPSB0cnVlXHJcbiAgICApIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0ID0gZGF0ZVN0YXJ0O1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kID0gZGF0ZUVuZDtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUludGVybmFsID0gZGF0ZVN0YXJ0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0IGluc3RhbmNlb2YgRGF0ZSAmJlxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCBpbnN0YW5jZW9mIERhdGVcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRlUmFuZ2VUZXh0KHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsIHRoaXMuc2VsZWN0ZWREYXRlRW5kKTtcclxuICAgICAgICAgICAgdGhpcy5tYXRjaERhdGVSYW5nZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LCB0aGlzLnNlbGVjdGVkRGF0ZUVuZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLmlzU2VsZWN0ZWRQcmVkZWZpbmVkUGVyaW9kID0gZmFsc2U7XHJcblxyXG4gICAgICAgIGlmIChlbWl0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUNoYW5nZS5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZGF0ZVN0YXJ0TmV3ID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkYXRlRW5kTmV3ID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG5cclxuICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZUNoYW5nZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmRhdGVTdGFydE9sZCBpbnN0YW5jZW9mIERhdGUgJiYgIWlzU2FtZURheSh0aGlzLmRhdGVTdGFydE9sZCwgZGF0ZVN0YXJ0TmV3KSkgfHxcclxuICAgICAgICAgICAgICAgICAgICAodHlwZW9mIHRoaXMuZGF0ZVN0YXJ0T2xkID09PSAnc3RyaW5nJyAmJiB0aGlzLmRhdGVTdGFydE9sZCA9PT0gJycpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZW5kRGF0ZUNoYW5nZWQgPVxyXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmRhdGVFbmRPbGQgaW5zdGFuY2VvZiBEYXRlICYmICFpc1NhbWVEYXkodGhpcy5kYXRlRW5kT2xkLCBkYXRlRW5kTmV3KSkgfHwgXHJcbiAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiB0aGlzLmRhdGVFbmRPbGQgPT09ICdzdHJpbmcnICYmIHRoaXMuZGF0ZUVuZE9sZCA9PT0gJycpO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdGFydERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnRPbGQgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0Q2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGVTdGFydCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGVuZERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlRW5kT2xkID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kQ2hhbmdlLmVtaXQodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChzdGFydERhdGVDaGFuZ2VkIHx8IGVuZERhdGVDaGFuZ2VkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wZXJpb2RDaGFuZ2UuZW1pdChbXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlRW5kLFxyXG4gICAgICAgICAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuY2hhbmdlUmVmLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgZ29Ub05leHREYXRlKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3NpbmdsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNEYXkodHJ1ZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNSYW5nZSh0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdvVG9QcmV2aW91c0RhdGUoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICB0aGlzLnNldE5leHRQcmV2aW91c0RheShmYWxzZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZXROZXh0UHJldmlvdXNSYW5nZShmYWxzZSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROZXh0UHJldmlvdXNEYXkoc2V0TmV4dDogYW55KSB7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCA9IHRydWU7XHJcbiAgICAgICAgbGV0IG5ld0RhdGUgPSBzZXROZXh0XHJcbiAgICAgICAgICAgID8gYWRkKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgYXMgRGF0ZSwgeyBkYXlzOiAxIH0pXHJcbiAgICAgICAgICAgIDogYWRkKHRoaXMuc2VsZWN0ZWREYXRlSW50ZXJuYWwgYXMgRGF0ZSwgeyBkYXlzOiAtMSB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVJbnRlcm5hbCA9IG5ldyBEYXRlKG5ld0RhdGUpO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKG5ld0RhdGUsIG5ld0RhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXROZXh0UHJldmlvdXNSYW5nZShzZXROZXh0OiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5pc1NlbGVjdGVkUHJlZGVmaW5lZFBlcmlvZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAhKHRoaXMuc2VsZWN0ZWREYXRlU3RhcnQgaW5zdGFuY2VvZiBEYXRlKSB8fFxyXG4gICAgICAgICAgICAhKHRoaXMuc2VsZWN0ZWREYXRlRW5kIGluc3RhbmNlb2YgRGF0ZSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgcmFuZ2UgPSB0aGlzLmRhdGVQaWNrZXJTZXJ2aWNlLmdldFJhbmdlKFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0LFxyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZUVuZCxcclxuICAgICAgICAgICAgc2V0TmV4dCA/ICduZXh0JyA6ICdwcmV2aW91cydcclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMuc2V0U2VsZWN0ZWREYXRlKHJhbmdlWzBdLCByYW5nZVsxXSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldENlbGxDc3NDbGFzcyhkYXRlOiBhbnkpIHtcclxuICAgICAgICBjb25zdCBjYWxlbmRhckRhdGUgPSBuZXcgRGF0ZShkYXRlKTtcclxuICAgICAgICBsZXQgY3NzID0gJyc7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcpIHtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUgPSBuZXcgRGF0ZSh0aGlzLnNlbGVjdGVkRGF0ZVN0YXJ0KTtcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWREYXRlRW5kQXNEYXRlID0gbmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGVFbmQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgaXNBZnRlcihjYWxlbmRhckRhdGUsIHN0YXJ0T2ZEYXkoc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUpKSAmJlxyXG4gICAgICAgICAgICAgICAgaXNCZWZvcmUoY2FsZW5kYXJEYXRlLCBzdGFydE9mRGF5KHNlbGVjdGVkRGF0ZUVuZEFzRGF0ZSkpICYmXHJcbiAgICAgICAgICAgICAgICAhdGhpcy5kaXNhYmxlZERhdGVzLnNvbWUoKGRheSkgPT4gaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgZGF5KSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBjc3MgKz0gJyBiZy1zZWNvbmRhcnkgdGV4dC1kYXJrIHJvdW5kZWQtMCc7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgc2VsZWN0ZWREYXRlU3RhcnRBc0RhdGUpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY3NzICs9ICcgYmctcHJpbWFyeSB0ZXh0LXdoaXRlIHJvdW5kZWQtbGVmdCc7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNTYW1lRGF5KGNhbGVuZGFyRGF0ZSwgc2VsZWN0ZWREYXRlRW5kQXNEYXRlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNzcyArPSAnIGJnLXByaW1hcnkgdGV4dC13aGl0ZSByb3VuZGVkLXJpZ2h0JztcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY3NzO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgcmVtb3ZlRHhEZWZhdWx0Q2FsZW5kYXJGb2N1cygpIHtcclxuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihcclxuICAgICAgICAgICAgJyNkYXRlcGlja2VyY29tcG9uZW50IC5keC1jYWxlbmRhci1zZWxlY3RlZC1kYXRlJ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBlbGVtZW50ICYmXHJcbiAgICAgICAgICAgIGVsZW1lbnQ/LmNsYXNzTGlzdD8uY29udGFpbnMoJ2R4LWNhbGVuZGFyLXNlbGVjdGVkLWRhdGUnKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBlbGVtZW50Py5jbGFzc0xpc3Q/LnJlbW92ZSgnZHgtY2FsZW5kYXItc2VsZWN0ZWQtZGF0ZScpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICB0b2dnbGVEYXRlUmFuZ2VTZWxlY3RvclZpc2liaWxpdHkoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVEYXRlUmFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnNob3dQcmVkZWZpbmVkT3B0aW9uc1NlbGVjdG9yID1cclxuICAgICAgICAgICAgIXRoaXMuc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3I7XHJcbiAgICB9XHJcblxyXG4gICAgY2hhbmdEYXRlUmFuZ2UocmFuZ2U6IFBlcmlvZFBpY2tlckRhdGVSYW5nZSkge1xyXG4gICAgICAgIHRoaXMuc2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3IgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gcmFuZ2U7XHJcblxyXG4gICAgICAgIGlmIChyYW5nZSA9PT0gdGhpcy5jdXN0b21EYXRlUmFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy5vcGVuRGF0ZXBpY2tlclBvcHVwKCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlU3RhcnQgPSByYW5nZS5kYXRlRnJvbVxyXG4gICAgICAgICAgICAgICAgPyByYW5nZS5kYXRlRnJvbVxyXG4gICAgICAgICAgICAgICAgOiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVFbmQgPSByYW5nZS5kYXRlVG8gPyByYW5nZS5kYXRlVG8gOiBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG4gICAgICAgICAgICB0aGlzLnNldFNlbGVjdGVkRGF0ZSh0aGlzLmRhdGVTdGFydCwgdGhpcy5kYXRlRW5kLCB0cnVlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgbWF0Y2hEYXRlUmFuZ2UoZGF0ZUZyb20/OiBEYXRlLCBkYXRlVG8/OiBEYXRlKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCFkYXRlRnJvbSB8fCAhZGF0ZVRvKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2UgPSB0aGlzLmN1c3RvbURhdGVSYW5nZTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5nZW5lcmF0ZURhdGVSYW5nZXMoKTtcclxuXHJcbiAgICAgICAgY29uc3QgZGF0ZVJhbmdlID0gdGhpcy5wcmVkZWZpbmVkRGF0ZVJhbmdlcy5maWx0ZXIoXHJcbiAgICAgICAgICAgICh4KSA9PlxyXG4gICAgICAgICAgICAgICAgaXNTYW1lRGF5KHguZGF0ZUZyb20gYXMgRGF0ZSwgZGF0ZUZyb20pICYmXHJcbiAgICAgICAgICAgICAgICBpc1NhbWVEYXkoeC5kYXRlVG8gYXMgRGF0ZSwgZGF0ZVRvKVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGRhdGVSYW5nZS5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZSA9IGRhdGVSYW5nZVswXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlID0gdGhpcy5jdXN0b21EYXRlUmFuZ2U7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2V0RGF0ZVJhbmdlVGV4dChkYXRlRnJvbT86IERhdGUsIGRhdGVUbz86IERhdGUpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0b2RheSA9IG5ldyBEYXRlKCk7XHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MSA9ICcnO1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlUmFuZ2VUZXh0U2VnbWVudDIgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKCEoZGF0ZUZyb20gaW5zdGFuY2VvZiBEYXRlKSB8fCAhKGRhdGVUbyBpbnN0YW5jZW9mIERhdGUpKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGZ1bGwgbW9udGhcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGlzU2FtZURheShkYXRlRnJvbSwgc3RhcnRPZk1vbnRoKGRhdGVGcm9tKSkgJiZcclxuICAgICAgICAgICAgaXNTYW1lRGF5KGRhdGVUbywgZW5kT2ZNb250aChkYXRlVG8pKSAmJlxyXG4gICAgICAgICAgICBpc1NhbWVNb250aChkYXRlRnJvbSwgZGF0ZVRvKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQxID0gdGhpcy5mb3JtYXREYXRlKFxyXG4gICAgICAgICAgICAgICAgZGF0ZUZyb20sXHJcbiAgICAgICAgICAgICAgICAnbW9udGgnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIC8vIG9uZSBkYXlcclxuICAgICAgICB9IGVsc2UgaWYgKGlzU2FtZURheShkYXRlRnJvbSwgZGF0ZVRvKSkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQxID0gdGhpcy5mb3JtYXREYXRlKFxyXG4gICAgICAgICAgICAgICAgZGF0ZUZyb20sXHJcbiAgICAgICAgICAgICAgICAnZGF5LWxvbmcnXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MSA9IHRoaXMuZm9ybWF0RGF0ZShcclxuICAgICAgICAgICAgICAgIGRhdGVGcm9tLFxyXG4gICAgICAgICAgICAgICAgaXNTYW1lWWVhcihkYXRlRnJvbSwgdG9kYXkpID8gJ2RheS1zaG9ydCcgOiAnZGF5J1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQyID0gdGhpcy5mb3JtYXREYXRlKFxyXG4gICAgICAgICAgICAgICAgZGF0ZVRvLFxyXG4gICAgICAgICAgICAgICAgaXNTYW1lWWVhcihkYXRlVG8sIHRvZGF5KSA/ICdkYXktc2hvcnQnIDogJ2RheSdcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgZm9ybWF0RGF0ZShcclxuICAgICAgICBkYXRlOiBEYXRlLFxyXG4gICAgICAgIHR5cGU/OiAnbW9udGgnIHwgJ2RheScgfCAnZGF5LWxvbmcnIHwgJ2RheS1zaG9ydCcgfCB1bmRlZmluZWRcclxuICAgICk6IHN0cmluZyB7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ21vbnRoJzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZXMsIHtcclxuICAgICAgICAgICAgICAgICAgICBtb250aDogJ2xvbmcnLFxyXG4gICAgICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICBkYXk6IHVuZGVmaW5lZCxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBjYXNlICdkYXktbG9uZyc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGVzLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgd2Vla2RheTogJ2xvbmcnLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIGNhc2UgJ2RheS1zaG9ydCc6XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gZGF0ZS50b0xvY2FsZURhdGVTdHJpbmcodGhpcy5sb2NhbGVzLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICAgICAgbW9udGg6ICdzaG9ydCcsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgY2FzZSAnZGF5JzpcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZXMsIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICBtb250aDogJ3Nob3J0JyxcclxuICAgICAgICAgICAgICAgICAgICB5ZWFyOiAnbnVtZXJpYycsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmxvY2FsZXMsIHtcclxuICAgICAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgICAgICBtb250aDogJ251bWVyaWMnLFxyXG4gICAgICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZW5lcmF0ZURhdGVSYW5nZXMoZm9yY2U/OiBib29sZWFuKSB7XHJcbiAgICAgICAgY29uc3QgdG9kYXkgPSBzdGFydE9mRGF5KG5ldyBEYXRlKCkpO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGZvcmNlIHx8XHJcbiAgICAgICAgICAgICF0aGlzLnByZWRlZmluZWREYXRlUmFuZ2VzR2VuZXJhdGVkRGF0ZSB8fFxyXG4gICAgICAgICAgICAhaXNTYW1lRGF5KHRoaXMucHJlZGVmaW5lZERhdGVSYW5nZXNHZW5lcmF0ZWREYXRlLCB0b2RheSlcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgdGhpcy5wcmVkZWZpbmVkRGF0ZVJhbmdlc0dlbmVyYXRlZERhdGUgPSB0b2RheTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMucHJlZGVmaW5lZERhdGVSYW5nZXMgPVxyXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlUGlja2VyU2VydmljZS5nZXRQcmVkZWZpbmVkRGF0ZVJhbmdlcyhcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVSYW5nZURlZmluaXRpb25zLFxyXG4gICAgICAgICAgICAgICAgICAgIHRvZGF5LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZmlyc3REYXlPZldlZWtcclxuICAgICAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICB0aGlzLmRhdGVSYW5nZXMgPSBbLi4udGhpcy5wcmVkZWZpbmVkRGF0ZVJhbmdlc107XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVJhbmdlcy5wdXNoKHRoaXMuY3VzdG9tRGF0ZVJhbmdlKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6a2V5dXAnLCBbJyRldmVudCddKSBvbktleXVwSGFuZGxlcihcclxuICAgICAgICBldmVudDogS2V5Ym9hcmRFdmVudFxyXG4gICAgKSB7XHJcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDI3KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEYXRlcGlja2VyUG9wdXAoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJpdmF0ZSBtZXRob2RzXHJcbn1cclxuIiwiPCEtLSA8ZGl2IGlkPVwiZGF0ZXBpY2tlcmJ1dHRvbnNcIj4gLS0+XHJcbiAgICA8ZGl2IFxyXG4gICAgICAgIGNsYXNzPVwiZGF0ZXBpY2tlciBkLWZsZXggYmctd2hpdGVcIlxyXG4gICAgICAgIHJvbGU9XCJncm91cFwiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cIkRhdGUgcGlja2VyXCJcclxuICAgICAgICBbc3R5bGUud2lkdGhdPVwid2lkdGhcIlxyXG4gICAgPlxyXG4gICAgICAgIDwhLS0gPGRpdlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0bi1ncm91cFwiXHJcbiAgICAgICAgICAgIHJvbGU9XCJncm91cFwiXHJcbiAgICAgICAgPiAtLT5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUmFuZ2VEZWZpbml0aW9ucyAmJiBkYXRlUmFuZ2VEZWZpbml0aW9ucy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgIGlkPVwicGlja2VyUHJlZGVmaW5lZFJhbmdlRHJvcGRvd257eyByYW5kb21JZFJlZmVyZW5jZSB9fVwiXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGJ0biBidG4td2hpdGVcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXJcclxuICAgICAgICAgICAgICAgICAgICByb3VuZGVkLWxlZnRcclxuICAgICAgICAgICAgICAgICAgICBib3JkZXItcmlnaHQgXHJcbiAgICAgICAgICAgICAgICAgICAgZHJvcGRvd24tdG9nZ2xlXHJcbiAgICAgICAgICAgICAgICAgICAgdGV4dC10cnVuY2F0ZVwiXHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgW3N0eWxlLndpZHRoXT1cImRhdGVSYW5nZURlZmluaXRpb25zV2lkdGhcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURhdGVSYW5nZVNlbGVjdG9yVmlzaWJpbGl0eSgpXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge3tzZWxlY3RlZERhdGVSYW5nZS5uYW1lfX1cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgICAgICA8ZHgtcG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkYXRlUmFuZ2VEZWZpbml0aW9ucyAmJiBkYXRlUmFuZ2VEZWZpbml0aW9ucy5sZW5ndGggPiAwXCJcclxuICAgICAgICAgICAgICAgIHRhcmdldD1cIiNwaWNrZXJQcmVkZWZpbmVkUmFuZ2VEcm9wZG93bnt7IHJhbmRvbUlkUmVmZXJlbmNlIH19XCJcclxuICAgICAgICAgICAgICAgIHBvc2l0aW9uPVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgIFsodmlzaWJsZSldPVwic2hvd1ByZWRlZmluZWRPcHRpb25zU2VsZWN0b3JcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NvbnRlbnQnXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgcmFuZ2Ugb2YgZGF0ZVJhbmdlc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImRyb3Bkb3duLWl0ZW1cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZvbnQtd2VpZ2h0LTUwMF09XCJyYW5nZSA9PT0gc2VsZWN0ZWREYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImNoYW5nRGF0ZVJhbmdlKHJhbmdlKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID4ge3tyYW5nZS5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9keC1wb3BvdmVyPlxyXG4gICAgICAgIDwhLS0gPC9kaXY+IC0tPlxyXG5cclxuICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICpuZ0lmPVwic2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBjbGFzcz1cImJ0biBidG4td2hpdGUgYm9yZGVyIGJvcmRlci1yaWdodC0wIHByLTJcIlxyXG4gICAgICAgICAgICBbY2xhc3Mucm91bmRlZC1sZWZ0XSA9IFwiIWRhdGVSYW5nZURlZmluaXRpb25zIHx8IGRhdGVSYW5nZURlZmluaXRpb25zLmxlbmd0aCA9PT0gMFwiXHJcbiAgICAgICAgICAgIFtjbGFzcy5ib3JkZXItbGVmdC0wXSA9IFwiZGF0ZVJhbmdlRGVmaW5pdGlvbnMubGVuZ3RoID4gMFwiXHJcbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNNaW5pbXVtTGltaXQgfHwgZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAoY2xpY2spPVwiZ29Ub1ByZXZpb3VzRGF0ZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cInByZXZpb3VzUGVyaW9kSWNvblwiPjwvZmEtaWNvbj5cclxuXHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgaWQ9XCJwaWNrZXJEcm9wZG93bnt7IHJhbmRvbUlkUmVmZXJlbmNlIH19XCJcclxuICAgICAgICAgICAgY2xhc3M9XCJidG4gYnRuLXdoaXRlIGJvcmRlci10b3AgYm9yZGVyLWJvdHRvbSB0ZXh0LXRydW5jYXRlIHB4LTAgc2VsZWN0ZWQtcGVyaW9kXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdW5kZWQtbGVmdF0gPSBcIighZGF0ZVJhbmdlRGVmaW5pdGlvbnMgfHwgZGF0ZVJhbmdlRGVmaW5pdGlvbnMubGVuZ3RoID09PSAwKSAmJiAhc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLWxlZnRdID0gXCIoIWRhdGVSYW5nZURlZmluaXRpb25zIHx8IGRhdGVSYW5nZURlZmluaXRpb25zLmxlbmd0aCA9PT0gMCkgJiYgIXNob3dQcmV2aW91c0FuZE5leHRCdXR0b25zXCJcclxuICAgICAgICAgICAgW2NsYXNzLnJvdW5kZWQtcmlnaHRdID0gXCIhc2hvd1ByZXZpb3VzQW5kTmV4dEJ1dHRvbnNcIlxyXG4gICAgICAgICAgICBbY2xhc3MuYm9yZGVyLXJpZ2h0XSA9IFwiIXNob3dQcmV2aW91c0FuZE5leHRCdXR0b25zXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXHJcbiAgICAgICAgICAgIChjbGljayk9XCJzaG93RGF0ZXBpY2tlciA/IGNsb3NlRGF0ZXBpY2tlclBvcHVwKCkgOiBvcGVuRGF0ZXBpY2tlclBvcHVwKClcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwibXgtMVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cImNhbGVuZGFySWNvblwiIHNpemU9XCJzbVwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJteC0xIHRleHQtdHJ1bmNhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQxfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgPGZhLWljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWxlY3RlZERhdGVSYW5nZVRleHRTZWdtZW50MlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwibXgtMlwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtpY29uXT1cInRvSWNvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNpemU9XCJzbVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8c3Bhbj57e3NlbGVjdGVkRGF0ZVJhbmdlVGV4dFNlZ21lbnQyfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9idXR0b24+XHJcblxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgKm5nSWY9XCJzaG93UHJldmlvdXNBbmROZXh0QnV0dG9uc1wiXHJcbiAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi13aGl0ZSBib3JkZXIgcm91bmRlZC1yaWdodCBib3JkZXItbGVmdC0wIHBsLTJcIlxyXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcclxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzTWF4aW11bUxpbWl0IHx8IGRpc2FibGVkXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cImdvVG9OZXh0RGF0ZSgpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cIm5leHRQZXJpb2RJY29uXCI+PC9mYS1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGR4LXBvcG92ZXJcclxuICAgICAgICB0YXJnZXQ9XCIjcGlja2VyRHJvcGRvd257eyByYW5kb21JZFJlZmVyZW5jZSB9fVwiXHJcbiAgICAgICAgcG9zaXRpb249XCJib3R0b21cIlxyXG4gICAgICAgIFsodmlzaWJsZSldPVwic2hvd0RhdGVwaWNrZXJcIlxyXG4gICAgICAgIChvbkhpZGluZyk9XCJjbG9zZURhdGVwaWNrZXJQb3B1cCgpXCJcclxuICAgICAgICBjbGFzcz1cIm0tMCBwLTBcIlxyXG4gICAgICAgIFt3cmFwcGVyQXR0cl09XCJ7IGNsYXNzOiAnc2RzLWRhdGVwaWNrZXItcG9wb3ZlcicgfVwiXHJcbiAgICA+XHJcbiAgICAgICAgPGR4by1hbmltYXRpb24+XHJcbiAgICAgICAgICAgIDxkeG8tc2hvd1xyXG4gICAgICAgICAgICAgICAgdHlwZT1cInBvcFwiXHJcbiAgICAgICAgICAgICAgICBbZnJvbV09XCJ7IHNjYWxlOiAwLjkgfVwiXHJcbiAgICAgICAgICAgICAgICBbdG9dPVwieyBzY2FsZTogMSB9XCJcclxuICAgICAgICAgICAgPjwvZHhvLXNob3c+XHJcbiAgICAgICAgICAgIDxkeG8taGlkZVxyXG4gICAgICAgICAgICAgICAgdHlwZT1cImZhZGVcIlxyXG4gICAgICAgICAgICAgICAgW2Zyb21dPVwiMVwiXHJcbiAgICAgICAgICAgICAgICBbdG9dPVwiMFwiXHJcbiAgICAgICAgICAgID48L2R4by1oaWRlPlxyXG4gICAgICAgIDwvZHhvLWFuaW1hdGlvbj5cclxuICAgICAgICA8ZGl2ICpkeFRlbXBsYXRlPVwibGV0IGRhdGEgb2YgJ2NvbnRlbnQnXCI+XHJcbiAgICAgICAgICAgIDxkeC1zY3JvbGwtdmlldz5cclxuICAgICAgICAgICAgICAgIDxkaXYgaWQ9XCJkYXRlcGlja2VyY29tcG9uZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuc2VsZWN0aW9uS2luZCA9PSAncGVyaW9kJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiZGF0ZS1pbnB1dHNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImQtZmxleCBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtNCBweS0zXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1kYXRlLWJveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNzZWxlY3RlZERhdGVTdGFydEJveFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyIHAtMSBtLTAgdGV4dC1jZW50ZXIgcm91bmRlZCBkYXRlcGlja2VyLWlucHV0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWN0aXZlSW5wdXRdPVwic2VsZWN0ZWREYXRlRm9jdXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93RHJvcERvd25CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VNYXNrQmVoYXZpb3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cInNob3J0ZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluRGF0ZSB8fCBtaW5EYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhEYXRlIHx8IG1heERhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNWYWxpZF09XCJpc1ZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJzZWxlY3RlZERhdGVTdGFydFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9uRm9jdXNJbik9XCJvblN0YXJ0RGF0ZUZvY3VzKClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyIHB4LTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmYS1pY29uIFtpY29uXT1cInRvSWNvblwiPjwvZmEtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjc2VsZWN0ZWREYXRlRW5kQm94XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXIgcC0xIG0tMCB0ZXh0LWNlbnRlciByb3VuZGVkIGRhdGVwaWNrZXItaW5wdXRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVJbnB1dF09XCIhc2VsZWN0ZWREYXRlRm9jdXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93Q2xlYXJCdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93RHJvcERvd25CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt1c2VNYXNrQmVoYXZpb3JdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGxheUZvcm1hdD1cInNob3J0ZGF0ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluRGF0ZSB8fCBtaW5EYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhEYXRlIHx8IG1heERhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNWYWxpZF09XCJpc1ZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJzZWxlY3RlZERhdGVFbmRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbkZvY3VzSW4pPVwib25FbmREYXRlRm9jdXMoKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2R4LWRhdGUtYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJnLXdoaXRlIHB4LTQgcHktM1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cInRoaXMuc2VsZWN0aW9uS2luZCA9PSAnc2luZ2xlJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImRhdGUtaW5wdXRzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZC1mbGV4IGZsZXgtd3JhcCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBwLTIgbWItM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZHgtZGF0ZS1ib3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI3NpbmdsZURhdGVQaWNrZXJCb3hcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXIgcC0xIG0tMCB0ZXh0LWNlbnRlciByb3VuZGVkIGRhdGVwaWNrZXItaW5wdXQgZGF0ZXBpY2tlci1pbnB1dC1sYXJnZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5hY3RpdmVJbnB1dF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3Nob3dDbGVhckJ1dHRvbl09XCJmYWxzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaG93RHJvcERvd25CdXR0b25dPVwiZmFsc2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdXNlTWFza0JlaGF2aW9yXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwbGF5Rm9ybWF0PVwic2hvcnRkYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImRhdGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWluXT1cIm1pbkRhdGUgfHwgbWluRGF0ZURlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbWF4XT1cIm1heERhdGUgfHwgbWF4RGF0ZURlZmF1bHRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNWYWxpZF09XCJpc1ZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbGlkYXRpb25FcnJvcl09XCJ2YWxpZGF0aW9uRXJyb3JcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJzZWxlY3RlZERhdGVJbnRlcm5hbFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvblZhbHVlQ2hhbmdlZCk9XCJjbG9zZURhdGVwaWNrZXJQb3B1cCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9keC1kYXRlLWJveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkeC1jYWxlbmRhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNjYWxlbmRhclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5dPVwibWluRGF0ZSB8fCBtaW5EYXRlRGVmYXVsdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21heF09XCJtYXhEYXRlIHx8IG1heERhdGVEZWZhdWx0XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWREYXRlc109XCJkaXNhYmxlZERhdGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNWYWxpZF09XCJpc1ZhbGlkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsaWRhdGlvbkVycm9yXT1cInZhbGlkYXRpb25FcnJvclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKHZhbHVlKV09XCJ0aGlzLnNlbGVjdGlvbktpbmQgPT0gJ3BlcmlvZCcgPyBzZWxlY3RlZERhdGVDYWxlbmRhciA6IHNlbGVjdGVkRGF0ZUludGVybmFsXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25WYWx1ZUNoYW5nZWQpPVwib25EYXRlQ2hhbmdlKCRldmVudClcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCJmaXJzdERheU9mV2Vla1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqZHhUZW1wbGF0ZT1cImxldCBjZWxsRGF0YSBvZiAnY2VsbCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3NdPVwiJ2gtMTAwIHB0LTEnICsgZ2V0Q2VsbENzc0NsYXNzKGNlbGxEYXRhLmRhdGUpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IGNlbGxEYXRhLnRleHQgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZHgtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGhpcy5zZWxlY3Rpb25LaW5kID09ICdwZXJpb2QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJkLWZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXIgcHgtNCBweS0zXCJcclxuICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1zZWNvbmRhcnlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJjbG9zZURhdGVwaWNrZXJQb3B1cCgpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGlvbnMuY2FuY2VsfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1sLTFcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJhcHBseVBlcmlvZFBpY2tlcigpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyB0cmFuc2xhdGlvbnMuYXBwbHl9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2R4LXNjcm9sbC12aWV3PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9keC1wb3BvdmVyPlxyXG48IS0tIDwvZGl2PiAtLT4iXX0=
|
|
@@ -252,6 +252,19 @@ class SdsDatePickerComponent {
|
|
|
252
252
|
if (changes['dateRangeDefinitions']) {
|
|
253
253
|
this.generateDateRanges(true);
|
|
254
254
|
}
|
|
255
|
+
if (changes['selectionKind']) {
|
|
256
|
+
if (this.selectionKind == 'single') {
|
|
257
|
+
const date = new Date(this.selectedDateInternal);
|
|
258
|
+
this.setDateRangeText(date, date);
|
|
259
|
+
this.matchDateRange(date, date);
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
const date1 = new Date(this.selectedDateStart);
|
|
263
|
+
const date2 = new Date(this.selectedDateEnd);
|
|
264
|
+
this.setDateRangeText(date1, date2);
|
|
265
|
+
this.matchDateRange(date1, date2);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
255
268
|
if (changes['translations']) {
|
|
256
269
|
this.customDateRange.name = ((_a = this.translations) === null || _a === void 0 ? void 0 : _a.custom)
|
|
257
270
|
? this.translations.custom
|
|
@@ -338,6 +351,10 @@ class SdsDatePickerComponent {
|
|
|
338
351
|
this.generateDateRanges(true);
|
|
339
352
|
}
|
|
340
353
|
}
|
|
354
|
+
setDateRangeDefinitions(definitions) {
|
|
355
|
+
this.dateRangeDefinitions = definitions;
|
|
356
|
+
this.generateDateRanges(true);
|
|
357
|
+
}
|
|
341
358
|
get selectedDateStartFocus() {
|
|
342
359
|
return this.selectedDateFocus;
|
|
343
360
|
}
|