@snabcentr/client-ui 3.36.8 → 3.36.9
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/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +9 -1
- package/esm2022/verification/verification-phone-check-form/sc-verification-phone-check-form.component.mjs +2 -2
- package/feedback/feedback-form/sc-feedback-form.component.d.ts +4 -0
- package/fesm2022/snabcentr-client-ui.mjs +9 -1
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/release_notes.tmp +5 -3
@@ -131,6 +131,7 @@ export class ScFeedbackFormComponent {
|
|
131
131
|
}
|
132
132
|
else {
|
133
133
|
this.resetForm();
|
134
|
+
this.onRemoveAll();
|
134
135
|
this.sendSuccess.emit();
|
135
136
|
}
|
136
137
|
}),
|
@@ -252,6 +253,13 @@ export class ScFeedbackFormComponent {
|
|
252
253
|
this.rejected = this.rejected.filter((rejected) => rejected !== file);
|
253
254
|
this.loadedFile.setValue(this.loadedFile.value?.filter((current) => current !== file) ?? []);
|
254
255
|
}
|
256
|
+
/**
|
257
|
+
* Очищает список файлов.
|
258
|
+
*/
|
259
|
+
onRemoveAll() {
|
260
|
+
this.rejected = [];
|
261
|
+
this.loadedFile.setValue([]);
|
262
|
+
}
|
255
263
|
/**
|
256
264
|
* Загружает файл в форму обратной связи.
|
257
265
|
*
|
@@ -333,4 +341,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
333
341
|
TuiSortCountriesPipe,
|
334
342
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let fieldsList = fields();\n<form\n *ngIf=\"fieldsList.length > 0\"\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit.next()\"\n class=\"flex flex-col justify-between gap-4\"\n>\n <!-- \u0424\u0418\u041E -->\n <label\n *ngIf=\"fieldsList.includes('name')\"\n tuiLabel\n >\n \u0424\u0418\u041E\n <tui-input formControlName=\"name\"> \u0423\u043A\u0430\u0436\u0438\u0442\u0435 \u0412\u0430\u0448\u0438 \u0424.\u0418.\u041E. </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u0422\u0435\u043B\u0435\u0444\u043E\u043D -->\n @if (fieldsList.includes('phone')) {\n <label tuiLabel>\n \u0422\u0435\u043B\u0435\u0444\u043E\u043D\n <tui-textfield>\n <input\n formControlName=\"phone\"\n tuiInputPhoneInternational\n [countrySearch]=\"true\"\n [countries]=\"(countries | tuiSortCountries | async) || []\"\n autocomplete=\"phone\"\n />\n </tui-textfield>\n <tui-error\n formControlName=\"phone\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <label\n *ngIf=\"fieldsList.includes('isShouldUseMessenger') && form.controls.phone.value && isValidPhoneNumberForMessenger(form.controls.phone.value)\"\n tuiLabel\n >\n <input\n formControlName=\"isShouldUseMessenger\"\n tuiCheckbox\n type=\"checkbox\"\n />\n <span tuiTitle> \u041D\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 \u043C\u0435\u0441\u0441\u0435\u043D\u0434\u0436\u0435\u0440\u0430\u0445, \u0430 \u043D\u0435 \u0437\u0432\u043E\u043D\u0438\u0442\u044C </span>\n </label>\n }\n <!-- \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B -->\n <label\n *ngIf=\"fieldsList.includes('email')\"\n tuiLabel\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input formControlName=\"email\">\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 -->\n <label\n *ngIf=\"fieldsList.includes('message')\"\n tuiLabel\n >\n \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439\n <tui-textarea formControlName=\"message\"> \u041A\u043E\u043C\u043C\u0435\u043D\u0442\u0430\u0440\u0438\u0439 </tui-textarea>\n <tui-error\n formControlName=\"message\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n\n <!-- \u0424\u0430\u0439\u043B\u044B -->\n <div\n *ngIf=\"fieldsList.includes('files')\"\n class=\"flex flex-col gap-1\"\n >\n <label tuiInputFiles>\n <input\n #validator=\"tuiInputFilesValidator\"\n accept=\".doc,.docx,.pdf,image/*\"\n tuiInputFiles\n [formControl]=\"loadedFile\"\n [multiple]=\"true\"\n (reject)=\"onReject($event)\"\n />\n </label>\n\n <tui-error\n *ngIf=\"loadedFile.invalid\"\n [error]=\"['maxLength'] | tuiFieldError | async\"\n [formControl]=\"loadedFile\"\n />\n\n @let accepted = accepted$ | async;\n <tui-files\n *ngIf=\"accepted?.length || rejected.length\"\n class=\"tui-space_top-1\"\n >\n <tui-file\n *ngFor=\"let file of accepted\"\n [file]=\"file\"\n (remove)=\"onRemove(file)\"\n />\n <tui-file\n *ngFor=\"let file of rejected\"\n state=\"error\"\n [file]=\"(file | tuiFileRejected: validator | async) || file\"\n (remove)=\"onRemove(file)\"\n />\n </tui-files>\n </div>\n\n <!-- recaptcha -->\n @if (form.get('recaptcha')) {\n <div\n class=\"mb-3 max-h-20 overflow-hidden duration-500\"\n [ngClass]=\"{ '!max-h-0 !-m-2': form.get('recaptcha')?.valid }\"\n >\n <re-captcha formControlName=\"recaptcha\" />\n </div>\n }\n\n <!-- \u042D\u043B\u0435\u043C\u0435\u043D\u0442\u044B \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F -->\n <div class=\"flex flex-wrap items-center gap-3\">\n <button\n tuiButton\n [disabled]=\"form.invalid\"\n [loading]=\"!!(loading$ | async)\"\n type=\"submit\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n >\n \u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C\n </button>\n <div class=\"grow basis-60 text-body-s\">\n \u041D\u0430\u0436\u0438\u043C\u0430\u044F \u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0443, \u0432\u044B \u0441\u043E\u0433\u043B\u0430\u0448\u0430\u0435\u0442\u0435\u0441\u044C \u0441\n <button\n tuiLink\n [pseudo]=\"true\"\n type=\"button\"\n (click)=\"context?.data?.onClickOfferHandler(); clickOffer.emit()\"\n >\n \u041F\u043E\u043B\u0438\u0442\u0438\u043A\u043E\u0439 \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u0438\n </button>\n </div>\n </div>\n</form>\n" }]
|
335
343
|
}], ctorParameters: () => [], propDecorators: { isValidPhoneNumberForMessenger: [] } });
|
336
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZmVlZGJhY2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZmVlZGJhY2svZmVlZGJhY2stZm9ybS9zYy1mZWVkYmFjay1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9mZWVkYmFjay9mZWVkYmFjay1mb3JtL3NjLWZlZWRiYWNrLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZFQUE2RTtBQUU3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUNILG1CQUFtQixFQUVuQixpQkFBaUIsRUFFakIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxjQUFjLEVBRWQsYUFBYSxHQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBaUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRSxPQUFP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bUdBQXZCLHVCQUF1QiwrWkNyRXBDLHVnTUErSkEsdUNEcEhRLFNBQVMsNkNBQ1QsbUJBQW1CLGl6Q0FDbkIsT0FBTyxvRkFDUCxLQUFLLG1IQUNMLFFBQVEsb0VBQ1IsaUJBQWlCLHFEQUNqQixrQkFBa0IseUtBQ2xCLGNBQWMsa0xBQ2QsbUJBQW1CLCtCQUNuQixTQUFTLG9JQUNULGdCQUFnQix1SEFDaEIsUUFBUSwyREFDUixvQkFBb0Isb0xBQ3BCLGVBQWUscVFBQ2YsT0FBTyw0RkFDUCxJQUFJLDRGQUNKLGlCQUFpQiw0T0FDakIsV0FBVyxvR0FDWCxRQUFRLHFwQkFFUiwwQkFBMEIscVFBRTFCLG9CQUFvQjs7QUEyVWQ7SUFEVCxPQUFPOzZFQUdQOzRGQXpVUSx1QkFBdUI7a0JBL0JuQyxTQUFTO2lDQUNNLElBQUksWUFDTixrQkFBa0IsV0FFbkI7d0JBQ0wsU0FBUzt3QkFDVCxtQkFBbUI7d0JBQ25CLE9BQU87d0JBQ1AsS0FBSzt3QkFDTCxRQUFRO3dCQUNSLGlCQUFpQjt3QkFDakIsa0JBQWtCO3dCQUNsQixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsU0FBUzt3QkFDVCxnQkFBZ0I7d0JBQ2hCLFFBQVE7d0JBQ1Isb0JBQW9CO3dCQUNwQixlQUFlO3dCQUNmLE9BQU87d0JBQ1AsSUFBSTt3QkFDSixpQkFBaUI7d0JBQ2pCLFdBQVc7d0JBQ1gsUUFBUTt3QkFDUixRQUFRO3dCQUNSLDBCQUEwQjt3QkFDMUIsR0FBRyxZQUFZO3dCQUNmLG9CQUFvQjtxQkFDdkIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU07d0RBeVVyQyw4QkFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzLEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAqL1xuXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nQ2xhc3MsIE5nRm9yLCBOZ0lmIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgY29tcHV0ZWQsIGVmZmVjdCwgaW5qZWN0LCBpbnB1dCwgSW5wdXRTaWduYWwsIG91dHB1dCwgT3V0cHV0RW1pdHRlclJlZiwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvckZuLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgICBTY0NvbnZlcnRlcnNTZXJ2aWNlLFxuICAgIFNjRmVlZGJhY2tGb3JtcyxcbiAgICBTY0ZlZWRiYWNrU2VydmljZSxcbiAgICBTY0lGZWVkYmFja01lc3NhZ2UsXG4gICAgU2NJU3VnZ2VzdGlvblR5cGUsXG4gICAgU2NQaG9uZVNlcnZpY2UsXG4gICAgU2NVcGxvYWRlZEZpbGUsXG4gICAgU2NVc2VyLFxuICAgIFNjVXNlclNlcnZpY2UsXG59IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpTG9vc2VVbmlvbiwgdHVpUHVyZSwgVHVpVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aURpYWxvZ0NvbnRleHQsIFR1aUVycm9yLCBUdWlMYWJlbCwgVHVpTGluaywgVHVpVGV4dGZpZWxkLCBUdWlUaXRsZSB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsIH0gZnJvbSAnQHRhaWdhLXVpL2V4cGVyaW1lbnRhbCc7XG5pbXBvcnQgeyBUdWlDb3VudHJ5SXNvQ29kZSB9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7IFR1aUJ1dHRvbkxvYWRpbmcsIFR1aUNoZWNrYm94LCBUdWlGaWVsZEVycm9yUGlwZSwgVHVpRmlsZUxpa2UsIFR1aUZpbGVzLCB0dWlGaWxlc0FjY2VwdGVkLCBUdWlTb3J0Q291bnRyaWVzUGlwZSB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgVHVpSW5wdXRNb2R1bGUsIFR1aUlucHV0UGhvbmVNb2R1bGUsIFR1aVRleHRhcmVhTW9kdWxlIH0gZnJvbSAnQHRhaWdhLXVpL2xlZ2FjeSc7XG5pbXBvcnQgeyBQT0xZTU9SUEhFVVNfQ09OVEVYVCB9IGZyb20gJ0B0YWlnYS11aS9wb2x5bW9ycGhldXMnO1xuaW1wb3J0IHsgZ2V0Q291bnRyaWVzIH0gZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xuaW1wb3J0IHsgUmVjYXB0Y2hhQ29tcG9uZW50LCBSZWNhcHRjaGFGb3Jtc01vZHVsZSwgUmVjYXB0Y2hhTW9kdWxlIH0gZnJvbSAnbmctcmVjYXB0Y2hhLTInO1xuaW1wb3J0IHsgY2F0Y2hFcnJvciwgZmlsdGVyLCBtYXAsIG1lcmdlLCBPYnNlcnZhYmxlLCBvZiwgc2hhcmUsIHN0YXJ0V2l0aCwgU3ViamVjdCwgc3dpdGNoTWFwLCB0YXAgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgnO1xuaW1wb3J0IHsgU2NGb3JtRmllbGRzTW9kdWxlIH0gZnJvbSAnLi4vLi4vZm9ybS1maWVsZHMnO1xuaW1wb3J0IHsgTUFYX0ZJTEVTX0lOX0ZPUk1fSU5QVVQgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc2MtbWF4LWZpbGVzLWluLWZvcm0taW5wdXQnO1xuaW1wb3J0IHsgcGhvbmVWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3NjLXBob25lLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBTY0ZlZWRiYWNrRm9ybUNvbmZpZywgU2NGZWVkYmFja0Zvcm1GaWVsZFR5cGUgfSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YTQvtGA0LzRiyDQvtCx0YDQsNGC0L3QvtC5INGB0LLRj9C30LguXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgc2VsZWN0b3I6ICdzYy1mZWVkYmFjay1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtZmVlZGJhY2stZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIE5nQ2xhc3MsXG4gICAgICAgIE5nRm9yLFxuICAgICAgICBUdWlFcnJvcixcbiAgICAgICAgVHVpRmllbGRFcnJvclBpcGUsXG4gICAgICAgIFNjRm9ybUZpZWxkc01vZHVsZSxcbiAgICAgICAgVHVpSW5wdXRNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0UGhvbmVNb2R1bGUsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpQnV0dG9uTG9hZGluZyxcbiAgICAgICAgVHVpTGFiZWwsXG4gICAgICAgIFJlY2FwdGNoYUZvcm1zTW9kdWxlLFxuICAgICAgICBSZWNhcHRjaGFNb2R1bGUsXG4gICAgICAgIFR1aUxpbmssXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFR1aVRleHRhcmVhTW9kdWxlLFxuICAgICAgICBUdWlDaGVja2JveCxcbiAgICAgICAgVHVpVGl0bGUsXG4gICAgICAgIFR1aUZpbGVzLFxuICAgICAgICBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbCxcbiAgICAgICAgLi4uVHVpVGV4dGZpZWxkLFxuICAgICAgICBUdWlTb3J0Q291bnRyaWVzUGlwZSxcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY0ZlZWRiYWNrRm9ybUNvbXBvbmVudCB7XG4gICAgLyoqXG4gICAgICog0JrQvtC90YLQtdC60YHRgiDQtNC40LDQu9C+0LPQvtCy0L7Qs9C+INC+0LrQvdCwLCDQsiDQutC+0YLQvtGA0L7QvCDQvtGC0LrRgNGL0YIg0LrQvtC80L/QvtC90LXQvdGCLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb250ZXh0OiBUdWlEaWFsb2dDb250ZXh0PHZvaWQsIHsgb25DbGlja09mZmVySGFuZGxlcjogKCkgPT4gdm9pZCB9ICYgU2NGZWVkYmFja0Zvcm1Db25maWc+IHwgbnVsbCA9IGluamVjdDxcbiAgICAgICAgVHVpRGlhbG9nQ29udGV4dDx2b2lkLCB7IG9uQ2xpY2tPZmZlckhhbmRsZXI6ICgpID0+IHZvaWQgfSAmIFNjRmVlZGJhY2tGb3JtQ29uZmlnPlxuICAgID4oUE9MWU1PUlBIRVVTX0NPTlRFWFQsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgcHVibGljIHJlYWRvbmx5IHNsdWdJbnB1dDogSW5wdXRTaWduYWw8VHVpTG9vc2VVbmlvbjxTY0ZlZWRiYWNrRm9ybXM+PiA9IGlucHV0PFR1aUxvb3NlVW5pb248U2NGZWVkYmFja0Zvcm1zPj4oJ2NvbW1vbicsIHsgYWxpYXM6ICdzbHVnJyB9KTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQv9C+0LvQtdC5LCDQtNC+0YHRgtGD0L/QvdGL0YUg0LIg0LTQsNC90L3QvtC5INGE0L7RgNC80LUuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1pbnB1dC1yZW5hbWVcbiAgICBwdWJsaWMgcmVhZG9ubHkgZmllbGRzSW5wdXQ6IElucHV0U2lnbmFsPFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW10+ID0gaW5wdXQ8U2NGZWVkYmFja0Zvcm1GaWVsZFR5cGVbXT4oWyduYW1lJywgJ2VtYWlsJywgJ3Bob25lJywgJ21lc3NhZ2UnLCAnZmlsZXMnXSwgeyBhbGlhczogJ2ZpZWxkcycgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LzQstC+0LvRjNC90L7QtSDQvtCx0L7Qt9C90LDRh9C10L3QuNC1IChzbHVnKSDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzbHVnOiBTaWduYWw8VHVpTG9vc2VVbmlvbjxTY0ZlZWRiYWNrRm9ybXM+PiA9IGNvbXB1dGVkKCgpID0+IHRoaXMuY29udGV4dD8uZGF0YS5zbHVnID8/IHRoaXMuc2x1Z0lucHV0KCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC/0L7Qu9C10LksINC00L7RgdGC0YPQv9C90YvRhSDQsiDQtNCw0L3QvdC+0Lkg0YTQvtGA0LzQtS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZmllbGRzOiBTaWduYWw8U2NGZWVkYmFja0Zvcm1GaWVsZFR5cGVbXT4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbnRleHQ/LmRhdGEuZmllbGRzID8/IHRoaXMuZmllbGRzSW5wdXQoKSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC+0LHRi9GC0LjQtSDQvdCw0LbQsNGC0LjRjyDQvdCwINC60L3QvtC/0LrRgyDQtNC+0LPQvtCy0L7RgNCwINC+0YTQtdGA0YLRiy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgY2xpY2tPZmZlcjogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0YPRgdC/0LXRiNC90L7QuSDQvtGC0L/RgNCw0LLQutC4INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNlbmRTdWNjZXNzOiBPdXRwdXRFbWl0dGVyUmVmPHZvaWQ+ID0gb3V0cHV0KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmVlZGJhY2tTZXJ2aWNlOiBTY0ZlZWRiYWNrU2VydmljZSA9IGluamVjdChTY0ZlZWRiYWNrU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0ZXJzU2VydmljZTogU2NDb252ZXJ0ZXJzU2VydmljZSA9IGluamVjdChTY0NvbnZlcnRlcnNTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDQutGB0LjQvNCw0LvRjNC90L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRhNCw0LnQu9C+0LIsINC+0YLQv9GA0LDQstC70Y/QtdC80YvRhSDQsiDRhNC+0YDQvNC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF4RmlsZXNJbkZvcm06IG51bWJlciA9IGluamVjdChNQVhfRklMRVNfSU5fRk9STV9JTlBVVCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQsNC90L3Ri9GFINC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXIkOiBPYnNlcnZhYmxlPFNjVXNlcj4gPSBpbmplY3QoU2NVc2VyU2VydmljZSlcbiAgICAgICAgLmdldFVzZXJDaGFuZ2UkKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHVzZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodXNlci5pc0d1ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZvcm0gYXMgRm9ybUdyb3VwKS5hZGRDb250cm9sKCdyZWNhcHRjaGEnLCB0aGlzLnJlY2FwdGNoYUNvbnRyb2wpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZvcm0gYXMgRm9ybUdyb3VwKS5yZW1vdmVDb250cm9sKCdyZWNhcHRjaGEnKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCBmaWVsZHMgPSB0aGlzLmZpZWxkcygpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBmaWVsZHMuaW5jbHVkZXMoJ25hbWUnKSA/IHVzZXIubmFtZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogZmllbGRzLmluY2x1ZGVzKCdwaG9uZScpID8gdXNlci5jb250YWN0cy5waG9uZS52YWx1ZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgICBlbWFpbDogZmllbGRzLmluY2x1ZGVzKCdlbWFpbCcpID8gdXNlci5jb250YWN0cy5lbWFpbC52YWx1ZSA6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LvQtSDQstCy0L7QtNCwINC00LvRjyByZWNhcHRjaGEuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlY2FwdGNoYUNvbnRyb2w6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+ID0gbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQtNC70Y8g0YTQvtGA0LzRiyDCq9Cf0L7QttC10LvQsNC90LjRjyDQuCDQv9GA0LXQtNC70L7QttC10L3QuNGPINC/0L4g0YPQu9GD0YfRiNC10L3QuNGOINGB0LDQudGC0LDCuy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgZm9ybSA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBuYW1lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICAgIHBob25lOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICAgIG1lc3NhZ2U6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsKSxcbiAgICAgICAgZmlsZXM6IG5ldyBGb3JtQ29udHJvbDxTY1VwbG9hZGVkRmlsZVtdIHwgbnVsbD4oW10pLFxuICAgICAgICBpc1Nob3VsZFVzZU1lc3NlbmdlcjogbmV3IEZvcm1Db250cm9sPGJvb2xlYW4gfCBudWxsPihmYWxzZSksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YLQuNC/0L7QsiDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1Z2dlc3Rpb25UeXBlOiB0eXBlb2YgU2NJU3VnZ2VzdGlvblR5cGUgPSBTY0lTdWdnZXN0aW9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uU3VibWl0OiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQvdCwINC+0YLQv9GA0LDQstC60YMg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByZXF1ZXN0JDogT2JzZXJ2YWJsZTx1bmRlZmluZWQgfCBudWxsPiA9IHRoaXMub25TdWJtaXQucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmZvcm0udmFsdWUgYXMgU2NJRmVlZGJhY2tNZXNzYWdlKSxcbiAgICAgICAgdGFwKCh2YWx1ZTogU2NJRmVlZGJhY2tNZXNzYWdlKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUucGhvbmUgJiYgIVNjUGhvbmVTZXJ2aWNlLmlzVmFsaWRQaG9uZU51bWJlckZvck1lc3Nlbmdlcih2YWx1ZS5waG9uZSkpIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcGFyYW0tcmVhc3NpZ25cbiAgICAgICAgICAgICAgICBkZWxldGUgdmFsdWUuaXNTaG91bGRVc2VNZXNzZW5nZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy5mZWVkYmFja1NlcnZpY2Uuc2VuZEZlZWRiYWNrKHRoaXMuc2x1ZygpIGFzIFNjRmVlZGJhY2tGb3JtcywgdGhpcy5jb252ZXJ0ZXJzU2VydmljZS5yZW1vdmVOdWxsUmVjdXJzaXZlKHZhbHVlKSkucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuY29tcGxldGVXaXRoKCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2V0Rm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kU3VjY2Vzcy5lbWl0KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcnhqcy9uby1pbXBsaWNpdC1hbnktY2F0Y2hcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm1hcmtBbGxBc1RvdWNoZWQoKTtcblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGVycm9ycywgbWVzc2FnZSB9ID0gZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3JSZXNwb25zZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhlcnJvcnMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGtleSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udHJvbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbC5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JzW2tleV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YobnVsbCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tdXNlbGVzcy11bmRlZmluZWRcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodW5kZWZpbmVkKVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMucmVxdWVzdCQucGlwZShtYXAoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gdW5kZWZpbmVkKSk7XG5cbiAgICAvKipcbiAgICAgKiDQo9C/0YDQsNCy0LvRj9C10YIg0YHQvtGB0YLQvtGP0L3QuNC10Lwg0LfQsNCz0YDRg9C20LXQvdC90YvRhSDRhNCw0LnQu9C+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRlZEZpbGU6IEZvcm1Db250cm9sPFR1aUZpbGVMaWtlW10gfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxUdWlGaWxlTGlrZVtdIHwgbnVsbD4oW10sIFt0aGlzLm1heEZpbGVzTGVuZ3RoKCldKTtcblxuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUsINC60L7RgtC+0YDRi9C5INC+0YLRgdC70LXQttC40LLQsNC10YIsINC/0YDQuNC90Y/RgtGLINC70Lgg0YTQsNC50LvRiyDQsiDRgdC+0L7RgtCy0LXRgtGB0YLQstC40Lgg0YEg0YLRgNC10LHQvtCy0LDQvdC40Y/QvNC4INC/0L4g0YLQuNC/0YMg0YDQsNC30LzQtdGA0YMg0Lgg0YIu0LQuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGFjY2VwdGVkJDogT2JzZXJ2YWJsZTxGaWxlW10+ID0gdGhpcy5sb2FkZWRGaWxlLnZhbHVlQ2hhbmdlcy5waXBlKG1hcCgoKSA9PiB0dWlGaWxlc0FjY2VwdGVkKHRoaXMubG9hZGVkRmlsZSkpKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRhNCw0LnQu9C+0LIsINC60L7RgtC+0YDRi9C1INCx0YvQu9C4INC+0YLQutC70L7QvdC10L3RiyDQv9GA0Lgg0LfQsNCz0YDRg9C30LrQtS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVqZWN0ZWQ6IHJlYWRvbmx5IEZpbGVbXSA9IFtdO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INGB0YLRgNCw0L0uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvdW50cmllczogcmVhZG9ubHkgVHVpQ291bnRyeUlzb0NvZGVbXSA9IGdldENvdW50cmllcygpO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY0ZlZWRiYWNrRm9ybUNvbXBvbmVudH0uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICAvKipcbiAgICAgICAgICog0K3RgtC+INGA0LXRiNC10L3QuNC1INC+0YjQuNCx0LrQuCAjNDk0MCwg0LHRi9C70L4gQHNlZSBb0L/RgNC10LTQu9C+0LbQtdC90L5dKGh0dHBzOi8vZ2l0aHViLmNvbS9EZXRoQXJpZWwvbmctcmVjYXB0Y2hhL2lzc3Vlcy8xMjMjaXNzdWVjb21tZW50LTQyNjExMjEwMSkg0LDQstGC0L7RgNC+0Lwge0BsaW5rIFJlY2FwdGNoYUNvbXBvbmVudH0uXG4gICAgICAgICAqL1xuICAgICAgICBSZWNhcHRjaGFDb21wb25lbnQucHJvdG90eXBlLm5nT25EZXN0cm95ID0gZnVuY3Rpb24gKCk6IHZvaWQge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cbiAgICAgICAgICAgIGlmICh0aGlzWydzdWJzY3JpcHRpb24nXSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLW1lbWJlci1hY2Nlc3MsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtY2FsbCwgQHR5cGVzY3JpcHQtZXNsaW50L2RvdC1ub3RhdGlvblxuICAgICAgICAgICAgICAgIHRoaXNbJ3N1YnNjcmlwdGlvbiddLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgbWVyZ2UoXG4gICAgICAgICAgICB0aGlzLmFjY2VwdGVkJCxcbiAgICAgICAgICAgIHRoaXMudXNlciQsXG4gICAgICAgICAgICB0aGlzLmxvYWRlZEZpbGUudmFsdWVDaGFuZ2VzLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKChmaWxlcykgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMuZmlsZXMucmVzZXQoW10pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVXBsb2FkRmlsZShmaWxlcyk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpXG4gICAgICAgICAgICAuc3Vic2NyaWJlKCk7XG5cbiAgICAgICAgLy8g0JLQsNC70LjQtNCw0YbQuNGPINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0YTQvtGA0LzRiy5cbiAgICAgICAgZWZmZWN0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuY2xlYXJBbGxWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICB0aGlzLnNldEFsbFZhbGlkYXRvcnModGhpcy5maWVsZHMoKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINCy0LDQu9C40LTQsNGG0LjRjiDRgdC+INCy0YHQtdGFINC/0L7Qu9C10Lkg0LLQstC+0LTQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIGNsZWFyQWxsVmFsaWRhdG9ycygpOiB2b2lkIHtcbiAgICAgICAgT2JqZWN0LmtleXModGhpcy5mb3JtLmNvbnRyb2xzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm0uZ2V0KGtleSk7XG5cbiAgICAgICAgICAgIGlmIChjb250cm9sICYmIGNvbnRyb2wgIT09IHRoaXMucmVjYXB0Y2hhQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIGNvbnRyb2wuY2xlYXJWYWxpZGF0b3JzKCk7XG4gICAgICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0YHRgtCw0L3QsNCy0LvQuNCy0LDQtdGCINCy0LDQu9C40LTQsNGG0LjRjiDRgdC+INC00LvRjyDRg9C60LDQt9Cw0L3QvdGL0YUg0L/QvtC70LXQuSDQstCy0L7QtNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpZWxkcyDQn9C+0LvRjywg0LTQu9GPINC60L7RgtC+0YDRi9GFINC90YPQttC90L4g0YPRgdGC0LDQvdC+0LLQuNGC0Ywg0LLQsNC70LjQtNCw0YbQuNGOLlxuICAgICAqL1xuICAgIHByaXZhdGUgc2V0QWxsVmFsaWRhdG9ycyhmaWVsZHM6IFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW10pOiB2b2lkIHtcbiAgICAgICAgZmllbGRzLmZvckVhY2goKGZpbGVkOiBTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZSkgPT4ge1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGRlZmF1bHQtY2FzZVxuICAgICAgICAgICAgc3dpdGNoIChmaWxlZCkge1xuICAgICAgICAgICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCduYW1lJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDMpXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ3Bob25lJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgncGhvbmUnKT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgcGhvbmVWYWxpZGF0b3IoKV0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdlbWFpbCc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2VtYWlsJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnbWVzc2FnZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ21lc3NhZ2UnKT8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZF0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdmaWxlcyc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ2ZpbGVzJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHRoaXMubWF4RmlsZXNMZW5ndGgoNSldKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0LHRgNCw0LHQsNGC0YvQstCw0LXRgiDQvtGC0LrQu9C+0L3QtdC90L3Ri9C1INGE0LDQudC70YsuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZXMg0KHQv9C40YHQvtC6INGE0LDQudC70L7Qsiwg0LrQvtGC0L7RgNGL0LUg0LHRi9C70Lgg0L7RgtC60LvQvtC90LXQvdGLLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblJlamVjdChmaWxlczogcmVhZG9ubHkgRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVqZWN0ZWQgPSBbLi4ubmV3IFNldChbLi4udGhpcy5yZWplY3RlZCwgLi4uZmlsZXNdKV07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KPQtNCw0LvRj9C10YIg0YTQsNC50Lsg0LjQtyDRgdC/0LjRgdC60LAg0LfQsNCz0YDRg9C20LXQvdC90YvRhSDQuCDQvtGC0LrQu9C+0L3QtdC90L3Ri9GFINGE0LDQudC70L7Qsi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWxlINCk0LDQudC7LCDQutC+0YLQvtGA0YvQuSDQvdGD0LbQvdC+INGD0LTQsNC70LjRgtGMLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvblJlbW92ZShmaWxlOiBGaWxlKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVqZWN0ZWQgPSB0aGlzLnJlamVjdGVkLmZpbHRlcigocmVqZWN0ZWQpID0+IHJlamVjdGVkICE9PSBmaWxlKTtcbiAgICAgICAgdGhpcy5sb2FkZWRGaWxlLnNldFZhbHVlKHRoaXMubG9hZGVkRmlsZS52YWx1ZT8uZmlsdGVyKChjdXJyZW50KSA9PiBjdXJyZW50ICE9PSBmaWxlKSA/PyBbXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JfQsNCz0YDRg9C20LDQtdGCINGE0LDQudC7INCyINGE0L7RgNC80YMg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzINCd0LDQsdC+0YAg0YTQsNC50LvQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgb25VcGxvYWRGaWxlKGZpbGVzOiBUdWlGaWxlTGlrZVtdIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBmaWxlcz8uZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlYWRlci5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1iYXNlLXRvLXN0cmluZyxzb25hcmpzL25vLWJhc2UtdG8tc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5maWxlcy5zZXRWYWx1ZShbLi4uKHRoaXMuZm9ybS5jb250cm9scy5maWxlcy52YWx1ZSA/PyBbXSksIG5ldyBTY1VwbG9hZGVkRmlsZShmaWxlLm5hbWUsIHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSBhcyB1bmtub3duIGFzIEJsb2IpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YTQsNC50LvQvtCyINC30LDQs9GA0YPQttC10L3QvdGL0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWF4TGVuZ3RoINC80LDQutGB0LjQvNCw0LvRjNC90L7QtSDQtNC+0L/Rg9GB0YLQuNC80L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRhNCw0LnQu9C+0LIg0LTQu9GPINC+0YLQv9GA0LDQstC60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSBtYXhGaWxlc0xlbmd0aChtYXhMZW5ndGg6IG51bWJlciA9IHRoaXMubWF4RmlsZXNJbkZvcm0pOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2w8VHVpRmlsZUxpa2VbXT4pID0+XG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGggPyB7IG1heExlbmd0aDogbmV3IFR1aVZhbGlkYXRpb25FcnJvcihg0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGE0LDQudC70L7QsiAtICR7bWF4TGVuZ3RofWApIH0gOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDQvtGH0LjRgdGC0LrRgyDQv9C+0LvQtdC5INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCh7XG4gICAgICAgICAgICBlbWFpbDogbnVsbCxcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBwaG9uZTogbnVsbCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsXG4gICAgICAgICAgICBmaWxlczogW10sXG4gICAgICAgICAgICBpc1Nob3VsZFVzZU1lc3NlbmdlcjogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiwg0YfRgtC+INC90L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCDQv9C+0LTRhdC+0LTQuNGCINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQsiDQvNC10YHRgdC10L3QtNC20LXRgNCw0YUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUg0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwLCDQutC+0YLQvtGA0YvQuSDQvdC10L7QsdGF0L7QtNC40LzQviDQv9GA0L7QstC10YDQuNGC0YwuXG4gICAgICogQHJldHVybnMg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINGH0YLQviDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L/QvtC00YXQvtC00LjRgiDQtNC70Y8g0LzQtdGB0YHQtdC90LTQttC10YDQvtCyLlxuICAgICAqL1xuICAgIEB0dWlQdXJlXG4gICAgcHJvdGVjdGVkIGlzVmFsaWRQaG9uZU51bWJlckZvck1lc3Nlbmdlcih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBTY1Bob25lU2VydmljZS5pc1ZhbGlkUGhvbmVOdW1iZXJGb3JNZXNzZW5nZXIodmFsdWUpO1xuICAgIH1cbn1cbiIsIkBsZXQgZmllbGRzTGlzdCA9IGZpZWxkcygpO1xuPGZvcm1cbiAgICAqbmdJZj1cImZpZWxkc0xpc3QubGVuZ3RoID4gMFwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAobmdTdWJtaXQpPVwib25TdWJtaXQubmV4dCgpXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGdhcC00XCJcbj5cbiAgICA8IS0tINCk0JjQniAtLT5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCduYW1lJylcIlxuICAgICAgICB0dWlMYWJlbFxuICAgID5cbiAgICAgICAg0KTQmNCeXG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPiDQo9C60LDQttC40YLQtSDQktCw0YjQuCDQpC7QmC7Qni4gPC90dWktaW5wdXQ+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQotC10LvQtdGE0L7QvSAtLT5cbiAgICBAaWYgKGZpZWxkc0xpc3QuaW5jbHVkZXMoJ3Bob25lJykpIHtcbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0KLQtdC70LXRhNC+0L1cbiAgICAgICAgICAgIDx0dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiXG4gICAgICAgICAgICAgICAgICAgIHR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsXG4gICAgICAgICAgICAgICAgICAgIFtjb3VudHJ5U2VhcmNoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbY291bnRyaWVzXT1cIihjb3VudHJpZXMgfCB0dWlTb3J0Q291bnRyaWVzIHwgYXN5bmMpIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdpc1Nob3VsZFVzZU1lc3NlbmdlcicpICYmIGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUgJiYgaXNWYWxpZFBob25lTnVtYmVyRm9yTWVzc2VuZ2VyKGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUpXCJcbiAgICAgICAgICAgIHR1aUxhYmVsXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzU2hvdWxkVXNlTWVzc2VuZ2VyXCJcbiAgICAgICAgICAgICAgICB0dWlDaGVja2JveFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gdHVpVGl0bGU+INCd0LDQv9C40YHQsNGC0Ywg0LIg0LzQtdGB0YHQtdC90LTQttC10YDQsNGFLCDQsCDQvdC1INC30LLQvtC90LjRgtGMIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICB9XG4gICAgPCEtLSDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiyAtLT5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdlbWFpbCcpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIj5cbiAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmVtYWlsXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8IS0tINCa0L7QvNC80LXQvdGC0LDRgNC40LkgLS0+XG4gICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnbWVzc2FnZScpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCa0L7QvNC80LXQvdGC0LDRgNC40LlcbiAgICAgICAgPHR1aS10ZXh0YXJlYSBmb3JtQ29udHJvbE5hbWU9XCJtZXNzYWdlXCI+INCa0L7QvNC80LXQvdGC0LDRgNC40LkgPC90dWktdGV4dGFyZWE+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQpNCw0LnQu9GLIC0tPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdmaWxlcycpXCJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xXCJcbiAgICA+XG4gICAgICAgIDxsYWJlbCB0dWlJbnB1dEZpbGVzPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI3ZhbGlkYXRvcj1cInR1aUlucHV0RmlsZXNWYWxpZGF0b3JcIlxuICAgICAgICAgICAgICAgIGFjY2VwdD1cIi5kb2MsLmRvY3gsLnBkZixpbWFnZS8qXCJcbiAgICAgICAgICAgICAgICB0dWlJbnB1dEZpbGVzXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImxvYWRlZEZpbGVcIlxuICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAocmVqZWN0KT1cIm9uUmVqZWN0KCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAqbmdJZj1cImxvYWRlZEZpbGUuaW52YWxpZFwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiWydtYXhMZW5ndGgnXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibG9hZGVkRmlsZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGxldCBhY2NlcHRlZCA9IGFjY2VwdGVkJCB8IGFzeW5jO1xuICAgICAgICA8dHVpLWZpbGVzXG4gICAgICAgICAgICAqbmdJZj1cImFjY2VwdGVkPy5sZW5ndGggfHwgcmVqZWN0ZWQubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwidHVpLXNwYWNlX3RvcC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHR1aS1maWxlXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2YgYWNjZXB0ZWRcIlxuICAgICAgICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxuICAgICAgICAgICAgICAgIChyZW1vdmUpPVwib25SZW1vdmUoZmlsZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx0dWktZmlsZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIHJlamVjdGVkXCJcbiAgICAgICAgICAgICAgICBzdGF0ZT1cImVycm9yXCJcbiAgICAgICAgICAgICAgICBbZmlsZV09XCIoZmlsZSB8IHR1aUZpbGVSZWplY3RlZDogdmFsaWRhdG9yIHwgYXN5bmMpIHx8IGZpbGVcIlxuICAgICAgICAgICAgICAgIChyZW1vdmUpPVwib25SZW1vdmUoZmlsZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90dWktZmlsZXM+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIHJlY2FwdGNoYSAtLT5cbiAgICBAaWYgKGZvcm0uZ2V0KCdyZWNhcHRjaGEnKSkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1iLTMgbWF4LWgtMjAgb3ZlcmZsb3ctaGlkZGVuIGR1cmF0aW9uLTUwMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICchbWF4LWgtMCAhLW0tMic6IGZvcm0uZ2V0KCdyZWNhcHRjaGEnKT8udmFsaWQgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxyZS1jYXB0Y2hhIGZvcm1Db250cm9sTmFtZT1cInJlY2FwdGNoYVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0g0K3Qu9C10LzQtdC90YLRiyDRg9C/0YDQsNCy0LvQtdC90LjRjyAgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiISEobG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNjLnNlbmRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCe0YLQv9GA0LDQstC40YLRjFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyb3cgYmFzaXMtNjAgdGV4dC1ib2R5LXNcIj5cbiAgICAgICAgICAgINCd0LDQttC40LzQsNGPINC90LAg0LrQvdC+0L/QutGDLCDQstGLINGB0L7Qs9C70LDRiNCw0LXRgtC10YHRjCDRgVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICBbcHNldWRvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250ZXh0Py5kYXRhPy5vbkNsaWNrT2ZmZXJIYW5kbGVyKCk7IGNsaWNrT2ZmZXIuZW1pdCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQn9C+0LvQuNGC0LjQutC+0Lkg0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0YHRgtC4XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
344
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtZmVlZGJhY2stZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvZmVlZGJhY2svZmVlZGJhY2stZm9ybS9zYy1mZWVkYmFjay1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9mZWVkYmFjay9mZWVkYmFjay1mb3JtL3NjLWZlZWRiYWNrLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDZFQUE2RTtBQUU3RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFbEUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQWUsTUFBTSxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUNuSixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNoRSxPQUFPLEVBQW1CLFdBQVcsRUFBRSxTQUFTLEVBQUUsbUJBQW1CLEVBQWUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkgsT0FBTyxFQUNILG1CQUFtQixFQUVuQixpQkFBaUIsRUFFakIsaUJBQWlCLEVBQ2pCLGNBQWMsRUFDZCxjQUFjLEVBRWQsYUFBYSxHQUNoQixNQUFNLHdCQUF3QixDQUFDO0FBQ2hDLE9BQU8sRUFBaUIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsSCxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRSxPQUFP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cy11c2UtdGhpcyxAdHlwZXNjcmlwdC1lc2xpbnQvdW5ib3VuZC1tZXRob2QgKi9cblxuaW1wb3J0IHsgQXN5bmNQaXBlLCBOZ0NsYXNzLCBOZ0ZvciwgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGNvbXB1dGVkLCBlZmZlY3QsIGluamVjdCwgaW5wdXQsIElucHV0U2lnbmFsLCBvdXRwdXQsIE91dHB1dEVtaXR0ZXJSZWYsIFNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7XG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0ZlZWRiYWNrRm9ybXMsXG4gICAgU2NGZWVkYmFja1NlcnZpY2UsXG4gICAgU2NJRmVlZGJhY2tNZXNzYWdlLFxuICAgIFNjSVN1Z2dlc3Rpb25UeXBlLFxuICAgIFNjUGhvbmVTZXJ2aWNlLFxuICAgIFNjVXBsb2FkZWRGaWxlLFxuICAgIFNjVXNlcixcbiAgICBTY1VzZXJTZXJ2aWNlLFxufSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aUxvb3NlVW5pb24sIHR1aVB1cmUsIFR1aVZhbGlkYXRpb25FcnJvciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQnV0dG9uLCBUdWlEaWFsb2dDb250ZXh0LCBUdWlFcnJvciwgVHVpTGFiZWwsIFR1aUxpbmssIFR1aVRleHRmaWVsZCwgVHVpVGl0bGUgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlJbnB1dFBob25lSW50ZXJuYXRpb25hbCB9IGZyb20gJ0B0YWlnYS11aS9leHBlcmltZW50YWwnO1xuaW1wb3J0IHsgVHVpQ291bnRyeUlzb0NvZGUgfSBmcm9tICdAdGFpZ2EtdWkvaTE4bic7XG5pbXBvcnQgeyBUdWlCdXR0b25Mb2FkaW5nLCBUdWlDaGVja2JveCwgVHVpRmllbGRFcnJvclBpcGUsIFR1aUZpbGVMaWtlLCBUdWlGaWxlcywgdHVpRmlsZXNBY2NlcHRlZCwgVHVpU29ydENvdW50cmllc1BpcGUgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IFR1aUlucHV0TW9kdWxlLCBUdWlJbnB1dFBob25lTW9kdWxlLCBUdWlUZXh0YXJlYU1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IGdldENvdW50cmllcyB9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB7IFJlY2FwdGNoYUNvbXBvbmVudCwgUmVjYXB0Y2hhRm9ybXNNb2R1bGUsIFJlY2FwdGNoYU1vZHVsZSB9IGZyb20gJ25nLXJlY2FwdGNoYS0yJztcbmltcG9ydCB7IGNhdGNoRXJyb3IsIGZpbHRlciwgbWFwLCBtZXJnZSwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9hdXRoJztcbmltcG9ydCB7IFNjRm9ybUZpZWxkc01vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGRzJztcbmltcG9ydCB7IE1BWF9GSUxFU19JTl9GT1JNX0lOUFVUIH0gZnJvbSAnLi4vLi4vcHJvdmlkZXJzL3NjLW1heC1maWxlcy1pbi1mb3JtLWlucHV0JztcbmltcG9ydCB7IHBob25lVmFsaWRhdG9yIH0gZnJvbSAnLi4vLi4vdmFsaWRhdG9ycy9zYy1waG9uZS12YWxpZGF0b3InO1xuaW1wb3J0IHsgU2NGZWVkYmFja0Zvcm1Db25maWcsIFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlIH0gZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGE0L7RgNC80Ysg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAnc2MtZmVlZGJhY2stZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLWZlZWRiYWNrLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQXN5bmNQaXBlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICBOZ0NsYXNzLFxuICAgICAgICBOZ0ZvcixcbiAgICAgICAgVHVpRXJyb3IsXG4gICAgICAgIFR1aUZpZWxkRXJyb3JQaXBlLFxuICAgICAgICBTY0Zvcm1GaWVsZHNNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0TW9kdWxlLFxuICAgICAgICBUdWlJbnB1dFBob25lTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIFR1aUJ1dHRvbkxvYWRpbmcsXG4gICAgICAgIFR1aUxhYmVsLFxuICAgICAgICBSZWNhcHRjaGFGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVjYXB0Y2hhTW9kdWxlLFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBOZ0lmLFxuICAgICAgICBUdWlUZXh0YXJlYU1vZHVsZSxcbiAgICAgICAgVHVpQ2hlY2tib3gsXG4gICAgICAgIFR1aVRpdGxlLFxuICAgICAgICBUdWlGaWxlcyxcbiAgICAgICAgVHVpSW5wdXRQaG9uZUludGVybmF0aW9uYWwsXG4gICAgICAgIC4uLlR1aVRleHRmaWVsZCxcbiAgICAgICAgVHVpU29ydENvdW50cmllc1BpcGUsXG4gICAgXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NGZWVkYmFja0Zvcm1Db21wb25lbnQge1xuICAgIC8qKlxuICAgICAqINCa0L7QvdGC0LXQutGB0YIg0LTQuNCw0LvQvtCz0L7QstC+0LPQviDQvtC60L3QsCwg0LIg0LrQvtGC0L7RgNC+0Lwg0L7RgtC60YDRi9GCINC60L7QvNC/0L7QvdC10L3Rgi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29udGV4dDogVHVpRGlhbG9nQ29udGV4dDx2b2lkLCB7IG9uQ2xpY2tPZmZlckhhbmRsZXI6ICgpID0+IHZvaWQgfSAmIFNjRmVlZGJhY2tGb3JtQ29uZmlnPiB8IG51bGwgPSBpbmplY3Q8XG4gICAgICAgIFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgeyBvbkNsaWNrT2ZmZXJIYW5kbGVyOiAoKSA9PiB2b2lkIH0gJiBTY0ZlZWRiYWNrRm9ybUNvbmZpZz5cbiAgICA+KFBPTFlNT1JQSEVVU19DT05URVhULCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNC80LLQvtC70YzQvdC+0LUg0L7QsdC+0LfQvdCw0YfQtdC90LjQtSAoc2x1Zykg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLWlucHV0LXJlbmFtZVxuICAgIHB1YmxpYyByZWFkb25seSBzbHVnSW5wdXQ6IElucHV0U2lnbmFsPFR1aUxvb3NlVW5pb248U2NGZWVkYmFja0Zvcm1zPj4gPSBpbnB1dDxUdWlMb29zZVVuaW9uPFNjRmVlZGJhY2tGb3Jtcz4+KCdjb21tb24nLCB7IGFsaWFzOiAnc2x1ZycgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0L/QvtC70LXQuSwg0LTQvtGB0YLRg9C/0L3Ri9GFINCyINC00LDQvdC90L7QuSDRhNC+0YDQvNC1LlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8taW5wdXQtcmVuYW1lXG4gICAgcHVibGljIHJlYWRvbmx5IGZpZWxkc0lucHV0OiBJbnB1dFNpZ25hbDxTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZVtdPiA9IGlucHV0PFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW10+KFsnbmFtZScsICdlbWFpbCcsICdwaG9uZScsICdtZXNzYWdlJywgJ2ZpbGVzJ10sIHsgYWxpYXM6ICdmaWVsZHMnIH0pO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNC80LLQvtC70YzQvdC+0LUg0L7QsdC+0LfQvdCw0YfQtdC90LjQtSAoc2x1Zykg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2x1ZzogU2lnbmFsPFR1aUxvb3NlVW5pb248U2NGZWVkYmFja0Zvcm1zPj4gPSBjb21wdXRlZCgoKSA9PiB0aGlzLmNvbnRleHQ/LmRhdGEuc2x1ZyA/PyB0aGlzLnNsdWdJbnB1dCgpKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDQv9C+0LvQtdC5LCDQtNC+0YHRgtGD0L/QvdGL0YUg0LIg0LTQsNC90L3QvtC5INGE0L7RgNC80LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZpZWxkczogU2lnbmFsPFNjRmVlZGJhY2tGb3JtRmllbGRUeXBlW10+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5jb250ZXh0Py5kYXRhLmZpZWxkcyA/PyB0aGlzLmZpZWxkc0lucHV0KCkpO1xuXG4gICAgLyoqXG4gICAgICog0KHQvtCx0YvRgtC40LUg0L3QsNC20LDRgtC40Y8g0L3QsCDQutC90L7Qv9C60YMg0LTQvtCz0L7QstC+0YDQsCDQvtGE0LXRgNGC0YsuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGNsaWNrT2ZmZXI6IE91dHB1dEVtaXR0ZXJSZWY8dm9pZD4gPSBvdXRwdXQoKTtcblxuICAgIC8qKlxuICAgICAqINCh0L7QsdGL0YLQuNC1INGD0YHQv9C10YjQvdC+0Lkg0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzZW5kU3VjY2VzczogT3V0cHV0RW1pdHRlclJlZjx2b2lkPiA9IG91dHB1dCgpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGZlZWRiYWNrU2VydmljZTogU2NGZWVkYmFja1NlcnZpY2UgPSBpbmplY3QoU2NGZWVkYmFja1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UgPSBpbmplY3QoU2NDb252ZXJ0ZXJzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0YTQsNC50LvQvtCyLCDQvtGC0L/RgNCw0LLQu9GP0LXQvNGL0YUg0LIg0YTQvtGA0LzQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IG1heEZpbGVzSW5Gb3JtOiBudW1iZXIgPSBpbmplY3QoTUFYX0ZJTEVTX0lOX0ZPUk1fSU5QVVQpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC00LDQvdC90YvRhSDQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70LUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXI+ID0gaW5qZWN0KFNjVXNlclNlcnZpY2UpXG4gICAgICAgIC5nZXRVc2VyQ2hhbmdlJCgpXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgICAgdGFwKCh1c2VyKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHVzZXIuaXNHdWVzdCkge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5mb3JtIGFzIEZvcm1Hcm91cCkuYWRkQ29udHJvbCgncmVjYXB0Y2hhJywgdGhpcy5yZWNhcHRjaGFDb250cm9sKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAodGhpcy5mb3JtIGFzIEZvcm1Hcm91cCkucmVtb3ZlQ29udHJvbCgncmVjYXB0Y2hhJyk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmllbGRzID0gdGhpcy5maWVsZHMoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnBhdGNoVmFsdWUoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogZmllbGRzLmluY2x1ZGVzKCduYW1lJykgPyB1c2VyLm5hbWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmU6IGZpZWxkcy5pbmNsdWRlcygncGhvbmUnKSA/IHVzZXIuY29udGFjdHMucGhvbmUudmFsdWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IGZpZWxkcy5pbmNsdWRlcygnZW1haWwnKSA/IHVzZXIuY29udGFjdHMuZW1haWwudmFsdWUgOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgLyoqXG4gICAgICog0J/QvtC70LUg0LLQstC+0LTQsCDQtNC70Y8gcmVjYXB0Y2hhLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSByZWNhcHRjaGFDb250cm9sOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPiA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INCy0LLQvtC00LAg0LTQu9GPINGE0L7RgNC80YsgwqvQn9C+0LbQtdC70LDQvdC40Y8g0Lgg0L/RgNC10LTQu9C+0LbQtdC90LjRjyDQv9C+INGD0LvRg9GH0YjQtdC90LjRjiDRgdCw0LnRgtCwwrsuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgICBwaG9uZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgICBlbWFpbDogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwpLFxuICAgICAgICBtZXNzYWdlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgICAgIGZpbGVzOiBuZXcgRm9ybUNvbnRyb2w8U2NVcGxvYWRlZEZpbGVbXSB8IG51bGw+KFtdKSxcbiAgICAgICAgaXNTaG91bGRVc2VNZXNzZW5nZXI6IG5ldyBGb3JtQ29udHJvbDxib29sZWFuIHwgbnVsbD4oZmFsc2UpLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INGC0LjQv9C+0LIg0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzdWdnZXN0aW9uVHlwZTogdHlwZW9mIFNjSVN1Z2dlc3Rpb25UeXBlID0gU2NJU3VnZ2VzdGlvblR5cGU7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvblN1Ym1pdDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0L3QsCDQvtGC0L/RgNCw0LLQutGDINC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWVzdCQ6IE9ic2VydmFibGU8dW5kZWZpbmVkIHwgbnVsbD4gPSB0aGlzLm9uU3VibWl0LnBpcGUoXG4gICAgICAgIGZpbHRlcigoKSA9PiB0aGlzLmZvcm0udmFsaWQpLFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5mb3JtLnZhbHVlIGFzIFNjSUZlZWRiYWNrTWVzc2FnZSksXG4gICAgICAgIHRhcCgodmFsdWU6IFNjSUZlZWRiYWNrTWVzc2FnZSkgPT4ge1xuICAgICAgICAgICAgaWYgKHZhbHVlLnBob25lICYmICFTY1Bob25lU2VydmljZS5pc1ZhbGlkUGhvbmVOdW1iZXJGb3JNZXNzZW5nZXIodmFsdWUucGhvbmUpKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgICAgICAgICAgICAgZGVsZXRlIHZhbHVlLmlzU2hvdWxkVXNlTWVzc2VuZ2VyO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMuZmVlZGJhY2tTZXJ2aWNlLnNlbmRGZWVkYmFjayh0aGlzLnNsdWcoKSBhcyBTY0ZlZWRiYWNrRm9ybXMsIHRoaXMuY29udmVydGVyc1NlcnZpY2UucmVtb3ZlTnVsbFJlY3Vyc2l2ZSh2YWx1ZSkpLnBpcGUoXG4gICAgICAgICAgICAgICAgdGFwKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmNvbXBsZXRlV2l0aCgpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZXNldEZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25SZW1vdmVBbGwoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZFN1Y2Nlc3MuZW1pdCgpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJ4anMvbm8taW1wbGljaXQtYW55LWNhdGNoXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5tYXJrQWxsQXNUb3VjaGVkKCk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9ycykge1xuICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoZXJyb3JzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yc1trZXldIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogW21lc3NhZ2VdIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKG51bGwpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLXVzZWxlc3MtdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKHVuZGVmaW5lZClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZyQ6IE9ic2VydmFibGU8Ym9vbGVhbj4gPSB0aGlzLnJlcXVlc3QkLnBpcGUobWFwKCh2YWx1ZSkgPT4gdmFsdWUgPT09IHVuZGVmaW5lZCkpO1xuXG4gICAgLyoqXG4gICAgICog0KPQv9GA0LDQstC70Y/QtdGCINGB0L7RgdGC0L7Rj9C90LjQtdC8INC30LDQs9GA0YPQttC10L3QvdGL0YUg0YTQsNC50LvQvtCyLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2FkZWRGaWxlOiBGb3JtQ29udHJvbDxUdWlGaWxlTGlrZVtdIHwgbnVsbD4gPSBuZXcgRm9ybUNvbnRyb2w8VHVpRmlsZUxpa2VbXSB8IG51bGw+KFtdLCBbdGhpcy5tYXhGaWxlc0xlbmd0aCgpXSk7XG5cbiAgICAvKipcbiAgICAgKiBPYnNlcnZhYmxlLCDQutC+0YLQvtGA0YvQuSDQvtGC0YHQu9C10LbQuNCy0LDQtdGCLCDQv9GA0LjQvdGP0YLRiyDQu9C4INGE0LDQudC70Ysg0LIg0YHQvtC+0YLQstC10YLRgdGC0LLQuNC4INGBINGC0YDQtdCx0L7QstCw0L3QuNGP0LzQuCDQv9C+INGC0LjQv9GDINGA0LDQt9C80LXRgNGDINC4INGCLtC0LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBhY2NlcHRlZCQ6IE9ic2VydmFibGU8RmlsZVtdPiA9IHRoaXMubG9hZGVkRmlsZS52YWx1ZUNoYW5nZXMucGlwZShtYXAoKCkgPT4gdHVpRmlsZXNBY2NlcHRlZCh0aGlzLmxvYWRlZEZpbGUpKSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YTQsNC50LvQvtCyLCDQutC+0YLQvtGA0YvQtSDQsdGL0LvQuCDQvtGC0LrQu9C+0L3QtdC90Ysg0L/RgNC4INC30LDQs9GA0YPQt9C60LUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlamVjdGVkOiByZWFkb25seSBGaWxlW10gPSBbXTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGC0YDQsNC9LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb3VudHJpZXM6IHJlYWRvbmx5IFR1aUNvdW50cnlJc29Db2RlW10gPSBnZXRDb3VudHJpZXMoKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NGZWVkYmFja0Zvcm1Db21wb25lbnR9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqINCt0YLQviDRgNC10YjQtdC90LjQtSDQvtGI0LjQsdC60LggIzQ5NDAsINCx0YvQu9C+IEBzZWUgW9C/0YDQtdC00LvQvtC20LXQvdC+XShodHRwczovL2dpdGh1Yi5jb20vRGV0aEFyaWVsL25nLXJlY2FwdGNoYS9pc3N1ZXMvMTIzI2lzc3VlY29tbWVudC00MjYxMTIxMDEpINCw0LLRgtC+0YDQvtC8IHtAbGluayBSZWNhcHRjaGFDb21wb25lbnR9LlxuICAgICAgICAgKi9cbiAgICAgICAgUmVjYXB0Y2hhQ29tcG9uZW50LnByb3RvdHlwZS5uZ09uRGVzdHJveSA9IGZ1bmN0aW9uICgpOiB2b2lkIHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvZG90LW5vdGF0aW9uXG4gICAgICAgICAgICBpZiAodGhpc1snc3Vic2NyaXB0aW9uJ10pIHtcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1tZW1iZXItYWNjZXNzLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLWNhbGwsIEB0eXBlc2NyaXB0LWVzbGludC9kb3Qtbm90YXRpb25cbiAgICAgICAgICAgICAgICB0aGlzWydzdWJzY3JpcHRpb24nXS51bnN1YnNjcmliZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIG1lcmdlKFxuICAgICAgICAgICAgdGhpcy5hY2NlcHRlZCQsXG4gICAgICAgICAgICB0aGlzLnVzZXIkLFxuICAgICAgICAgICAgdGhpcy5sb2FkZWRGaWxlLnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoZmlsZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLmZpbGVzLnJlc2V0KFtdKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblVwbG9hZEZpbGUoZmlsZXMpO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgpO1xuXG4gICAgICAgIC8vINCS0LDQu9C40LTQsNGG0LjRjyDQv9C+0LvQtdC5INCy0LLQvtC00LAg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINGE0L7RgNC80YsuXG4gICAgICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmNsZWFyQWxsVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgdGhpcy5zZXRBbGxWYWxpZGF0b3JzKHRoaXMuZmllbGRzKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9C00LDQu9GP0LXRgiDQstCw0LvQuNC00LDRhtC40Y4g0YHQviDQstGB0LXRhSDQv9C+0LvQtdC5INCy0LLQvtC00LAuXG4gICAgICovXG4gICAgcHJpdmF0ZSBjbGVhckFsbFZhbGlkYXRvcnMoKTogdm9pZCB7XG4gICAgICAgIE9iamVjdC5rZXlzKHRoaXMuZm9ybS5jb250cm9scykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gdGhpcy5mb3JtLmdldChrZXkpO1xuXG4gICAgICAgICAgICBpZiAoY29udHJvbCAmJiBjb250cm9sICE9PSB0aGlzLnJlY2FwdGNoYUNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBjb250cm9sLmNsZWFyVmFsaWRhdG9ycygpO1xuICAgICAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDQstCw0LvQuNC00LDRhtC40Y4g0YHQviDQtNC70Y8g0YPQutCw0LfQsNC90L3Ri9GFINC/0L7Qu9C10Lkg0LLQstC+0LTQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmaWVsZHMg0J/QvtC70Y8sINC00LvRjyDQutC+0YLQvtGA0YvRhSDQvdGD0LbQvdC+INGD0YHRgtCw0L3QvtCy0LjRgtGMINCy0LDQu9C40LTQsNGG0LjRji5cbiAgICAgKi9cbiAgICBwcml2YXRlIHNldEFsbFZhbGlkYXRvcnMoZmllbGRzOiBTY0ZlZWRiYWNrRm9ybUZpZWxkVHlwZVtdKTogdm9pZCB7XG4gICAgICAgIGZpZWxkcy5mb3JFYWNoKChmaWxlZDogU2NGZWVkYmFja0Zvcm1GaWVsZFR5cGUpID0+IHtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBkZWZhdWx0LWNhc2VcbiAgICAgICAgICAgIHN3aXRjaCAoZmlsZWQpIHtcbiAgICAgICAgICAgICAgICBjYXNlICduYW1lJzpcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldCgnbmFtZScpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgzKV0pO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlICdwaG9uZSc6XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoJ3Bob25lJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIHBob25lVmFsaWRhdG9yKCldKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZW1haWwnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdlbWFpbCcpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLmVtYWlsXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGNhc2UgJ21lc3NhZ2UnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdtZXNzYWdlJyk/LnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWRdKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSAnZmlsZXMnOlxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KCdmaWxlcycpPy5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCB0aGlzLm1heEZpbGVzTGVuZ3RoKDUpXSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQntCx0YDQsNCx0LDRgtGL0LLQsNC10YIg0L7RgtC60LvQvtC90LXQvdC90YvQtSDRhNCw0LnQu9GLLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzINCh0L/QuNGB0L7QuiDRhNCw0LnQu9C+0LIsINC60L7RgtC+0YDRi9C1INCx0YvQu9C4INC+0YLQutC70L7QvdC10L3Riy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25SZWplY3QoZmlsZXM6IHJlYWRvbmx5IEZpbGVbXSk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlamVjdGVkID0gWy4uLm5ldyBTZXQoWy4uLnRoaXMucmVqZWN0ZWQsIC4uLmZpbGVzXSldO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCj0LTQsNC70Y/QtdGCINGE0LDQudC7INC40Lcg0YHQv9C40YHQutCwINC30LDQs9GA0YPQttC10L3QvdGL0YUg0Lgg0L7RgtC60LvQvtC90LXQvdC90YvRhSDRhNCw0LnQu9C+0LIuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZmlsZSDQpNCw0LnQuywg0LrQvtGC0L7RgNGL0Lkg0L3Rg9C20L3QviDRg9C00LDQu9C40YLRjC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25SZW1vdmUoZmlsZTogRmlsZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlamVjdGVkID0gdGhpcy5yZWplY3RlZC5maWx0ZXIoKHJlamVjdGVkKSA9PiByZWplY3RlZCAhPT0gZmlsZSk7XG4gICAgICAgIHRoaXMubG9hZGVkRmlsZS5zZXRWYWx1ZSh0aGlzLmxvYWRlZEZpbGUudmFsdWU/LmZpbHRlcigoY3VycmVudCkgPT4gY3VycmVudCAhPT0gZmlsZSkgPz8gW10pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCe0YfQuNGJ0LDQtdGCINGB0L/QuNGB0L7QuiDRhNCw0LnQu9C+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIG9uUmVtb3ZlQWxsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnJlamVjdGVkID0gW107XG4gICAgICAgIHRoaXMubG9hZGVkRmlsZS5zZXRWYWx1ZShbXSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JfQsNCz0YDRg9C20LDQtdGCINGE0LDQudC7INCyINGE0L7RgNC80YMg0L7QsdGA0LDRgtC90L7QuSDRgdCy0Y/Qt9C4LlxuICAgICAqXG4gICAgICogQHBhcmFtIGZpbGVzINCd0LDQsdC+0YAg0YTQsNC50LvQvtCyLlxuICAgICAqL1xuICAgIHByaXZhdGUgb25VcGxvYWRGaWxlKGZpbGVzOiBUdWlGaWxlTGlrZVtdIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBmaWxlcz8uZm9yRWFjaCgoZmlsZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcblxuICAgICAgICAgICAgcmVhZGVyLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlYWRlci5yZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1iYXNlLXRvLXN0cmluZyxzb25hcmpzL25vLWJhc2UtdG8tc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy5maWxlcy5zZXRWYWx1ZShbLi4uKHRoaXMuZm9ybS5jb250cm9scy5maWxlcy52YWx1ZSA/PyBbXSksIG5ldyBTY1VwbG9hZGVkRmlsZShmaWxlLm5hbWUsIHJlYWRlci5yZXN1bHQudG9TdHJpbmcoKSldKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmVhZGVyLnJlYWRBc0RhdGFVUkwoZmlsZSBhcyB1bmtub3duIGFzIEJsb2IpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0L7QstC10YDRj9C10YIg0LrQvtC70LjRh9C10YHRgtCy0L4g0YTQsNC50LvQvtCyINC30LDQs9GA0YPQttC10L3QvdGL0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LwuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gbWF4TGVuZ3RoINC80LDQutGB0LjQvNCw0LvRjNC90L7QtSDQtNC+0L/Rg9GB0YLQuNC80L7QtSDQutC+0LvQuNGH0LXRgdGC0LLQviDRhNCw0LnQu9C+0LIg0LTQu9GPINC+0YLQv9GA0LDQstC60LguXG4gICAgICovXG4gICAgcHJpdmF0ZSBtYXhGaWxlc0xlbmd0aChtYXhMZW5ndGg6IG51bWJlciA9IHRoaXMubWF4RmlsZXNJbkZvcm0pOiBWYWxpZGF0b3JGbiB7XG4gICAgICAgIHJldHVybiAoeyB2YWx1ZSB9OiBBYnN0cmFjdENvbnRyb2w8VHVpRmlsZUxpa2VbXT4pID0+XG4gICAgICAgICAgICB2YWx1ZS5sZW5ndGggPiBtYXhMZW5ndGggPyB7IG1heExlbmd0aDogbmV3IFR1aVZhbGlkYXRpb25FcnJvcihg0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INGE0LDQudC70L7QsiAtICR7bWF4TGVuZ3RofWApIH0gOiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvQv9C+0LvQvdGP0LXRgiDQvtGH0LjRgdGC0LrRgyDQv9C+0LvQtdC5INGE0L7RgNC80YsuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZXNldEZvcm0oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5yZXNldCh7XG4gICAgICAgICAgICBlbWFpbDogbnVsbCxcbiAgICAgICAgICAgIG5hbWU6IG51bGwsXG4gICAgICAgICAgICBwaG9uZTogbnVsbCxcbiAgICAgICAgICAgIG1lc3NhZ2U6IG51bGwsXG4gICAgICAgICAgICBmaWxlczogW10sXG4gICAgICAgICAgICBpc1Nob3VsZFVzZU1lc3NlbmdlcjogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiwg0YfRgtC+INC90L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCDQv9C+0LTRhdC+0LTQuNGCINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDQsiDQvNC10YHRgdC10L3QtNC20LXRgNCw0YUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUg0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwLCDQutC+0YLQvtGA0YvQuSDQvdC10L7QsdGF0L7QtNC40LzQviDQv9GA0L7QstC10YDQuNGC0YwuXG4gICAgICogQHJldHVybnMg0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINGH0YLQviDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0L/QvtC00YXQvtC00LjRgiDQtNC70Y8g0LzQtdGB0YHQtdC90LTQttC10YDQvtCyLlxuICAgICAqL1xuICAgIEB0dWlQdXJlXG4gICAgcHJvdGVjdGVkIGlzVmFsaWRQaG9uZU51bWJlckZvck1lc3Nlbmdlcih2YWx1ZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBTY1Bob25lU2VydmljZS5pc1ZhbGlkUGhvbmVOdW1iZXJGb3JNZXNzZW5nZXIodmFsdWUpO1xuICAgIH1cbn1cbiIsIkBsZXQgZmllbGRzTGlzdCA9IGZpZWxkcygpO1xuPGZvcm1cbiAgICAqbmdJZj1cImZpZWxkc0xpc3QubGVuZ3RoID4gMFwiXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAobmdTdWJtaXQpPVwib25TdWJtaXQubmV4dCgpXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wganVzdGlmeS1iZXR3ZWVuIGdhcC00XCJcbj5cbiAgICA8IS0tINCk0JjQniAtLT5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCduYW1lJylcIlxuICAgICAgICB0dWlMYWJlbFxuICAgID5cbiAgICAgICAg0KTQmNCeXG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiPiDQo9C60LDQttC40YLQtSDQktCw0YjQuCDQpC7QmC7Qni4gPC90dWktaW5wdXQ+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQotC10LvQtdGE0L7QvSAtLT5cbiAgICBAaWYgKGZpZWxkc0xpc3QuaW5jbHVkZXMoJ3Bob25lJykpIHtcbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0KLQtdC70LXRhNC+0L1cbiAgICAgICAgICAgIDx0dWktdGV4dGZpZWxkPlxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaG9uZVwiXG4gICAgICAgICAgICAgICAgICAgIHR1aUlucHV0UGhvbmVJbnRlcm5hdGlvbmFsXG4gICAgICAgICAgICAgICAgICAgIFtjb3VudHJ5U2VhcmNoXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbY291bnRyaWVzXT1cIihjb3VudHJpZXMgfCB0dWlTb3J0Q291bnRyaWVzIHwgYXN5bmMpIHx8IFtdXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGhvbmVcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuXG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdpc1Nob3VsZFVzZU1lc3NlbmdlcicpICYmIGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUgJiYgaXNWYWxpZFBob25lTnVtYmVyRm9yTWVzc2VuZ2VyKGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUpXCJcbiAgICAgICAgICAgIHR1aUxhYmVsXG4gICAgICAgID5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImlzU2hvdWxkVXNlTWVzc2VuZ2VyXCJcbiAgICAgICAgICAgICAgICB0dWlDaGVja2JveFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPHNwYW4gdHVpVGl0bGU+INCd0LDQv9C40YHQsNGC0Ywg0LIg0LzQtdGB0YHQtdC90LTQttC10YDQsNGFLCDQsCDQvdC1INC30LLQvtC90LjRgtGMIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICB9XG4gICAgPCEtLSDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiyAtLT5cbiAgICA8bGFiZWxcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdlbWFpbCcpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIj5cbiAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmVtYWlsXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgIDwvbGFiZWw+XG5cbiAgICA8IS0tINCa0L7QvNC80LXQvdGC0LDRgNC40LkgLS0+XG4gICAgPGxhYmVsXG4gICAgICAgICpuZ0lmPVwiZmllbGRzTGlzdC5pbmNsdWRlcygnbWVzc2FnZScpXCJcbiAgICAgICAgdHVpTGFiZWxcbiAgICA+XG4gICAgICAgINCa0L7QvNC80LXQvdGC0LDRgNC40LlcbiAgICAgICAgPHR1aS10ZXh0YXJlYSBmb3JtQ29udHJvbE5hbWU9XCJtZXNzYWdlXCI+INCa0L7QvNC80LXQvdGC0LDRgNC40LkgPC90dWktdGV4dGFyZWE+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm1lc3NhZ2VcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuXG4gICAgPCEtLSDQpNCw0LnQu9GLIC0tPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJmaWVsZHNMaXN0LmluY2x1ZGVzKCdmaWxlcycpXCJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0xXCJcbiAgICA+XG4gICAgICAgIDxsYWJlbCB0dWlJbnB1dEZpbGVzPlxuICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgI3ZhbGlkYXRvcj1cInR1aUlucHV0RmlsZXNWYWxpZGF0b3JcIlxuICAgICAgICAgICAgICAgIGFjY2VwdD1cIi5kb2MsLmRvY3gsLnBkZixpbWFnZS8qXCJcbiAgICAgICAgICAgICAgICB0dWlJbnB1dEZpbGVzXG4gICAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImxvYWRlZEZpbGVcIlxuICAgICAgICAgICAgICAgIFttdWx0aXBsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAocmVqZWN0KT1cIm9uUmVqZWN0KCRldmVudClcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cblxuICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAqbmdJZj1cImxvYWRlZEZpbGUuaW52YWxpZFwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiWydtYXhMZW5ndGgnXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwibG9hZGVkRmlsZVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGxldCBhY2NlcHRlZCA9IGFjY2VwdGVkJCB8IGFzeW5jO1xuICAgICAgICA8dHVpLWZpbGVzXG4gICAgICAgICAgICAqbmdJZj1cImFjY2VwdGVkPy5sZW5ndGggfHwgcmVqZWN0ZWQubGVuZ3RoXCJcbiAgICAgICAgICAgIGNsYXNzPVwidHVpLXNwYWNlX3RvcC0xXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPHR1aS1maWxlXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGZpbGUgb2YgYWNjZXB0ZWRcIlxuICAgICAgICAgICAgICAgIFtmaWxlXT1cImZpbGVcIlxuICAgICAgICAgICAgICAgIChyZW1vdmUpPVwib25SZW1vdmUoZmlsZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDx0dWktZmlsZVxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBmaWxlIG9mIHJlamVjdGVkXCJcbiAgICAgICAgICAgICAgICBzdGF0ZT1cImVycm9yXCJcbiAgICAgICAgICAgICAgICBbZmlsZV09XCIoZmlsZSB8IHR1aUZpbGVSZWplY3RlZDogdmFsaWRhdG9yIHwgYXN5bmMpIHx8IGZpbGVcIlxuICAgICAgICAgICAgICAgIChyZW1vdmUpPVwib25SZW1vdmUoZmlsZSlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC90dWktZmlsZXM+XG4gICAgPC9kaXY+XG5cbiAgICA8IS0tIHJlY2FwdGNoYSAtLT5cbiAgICBAaWYgKGZvcm0uZ2V0KCdyZWNhcHRjaGEnKSkge1xuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cIm1iLTMgbWF4LWgtMjAgb3ZlcmZsb3ctaGlkZGVuIGR1cmF0aW9uLTUwMFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICchbWF4LWgtMCAhLW0tMic6IGZvcm0uZ2V0KCdyZWNhcHRjaGEnKT8udmFsaWQgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxyZS1jYXB0Y2hhIGZvcm1Db250cm9sTmFtZT1cInJlY2FwdGNoYVwiIC8+XG4gICAgICAgIDwvZGl2PlxuICAgIH1cblxuICAgIDwhLS0g0K3Qu9C10LzQtdC90YLRiyDRg9C/0YDQsNCy0LvQtdC90LjRjyAgLS0+XG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWRcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwiISEobG9hZGluZyQgfCBhc3luYylcIlxuICAgICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgICBpY29uU3RhcnQ9XCJAdHVpLnNjLnNlbmRcIlxuICAgICAgICAgICAgY2xhc3M9XCJzZWxmLWNlbnRlclwiXG4gICAgICAgID5cbiAgICAgICAgICAgINCe0YLQv9GA0LDQstC40YLRjFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImdyb3cgYmFzaXMtNjAgdGV4dC1ib2R5LXNcIj5cbiAgICAgICAgICAgINCd0LDQttC40LzQsNGPINC90LAg0LrQvdC+0L/QutGDLCDQstGLINGB0L7Qs9C70LDRiNCw0LXRgtC10YHRjCDRgVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICBbcHNldWRvXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJjb250ZXh0Py5kYXRhPy5vbkNsaWNrT2ZmZXJIYW5kbGVyKCk7IGNsaWNrT2ZmZXIuZW1pdCgpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQn9C+0LvQuNGC0LjQutC+0Lkg0LrQvtC90YTQuNC00LXQvdGG0LjQsNC70YzQvdC+0YHRgtC4XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L2Zvcm0+XG4iXX0=
|
@@ -187,7 +187,7 @@ export class ScVerificationPhoneCheckFormComponent {
|
|
187
187
|
return this.verificationService.getPhoneCheck$(value).pipe(
|
188
188
|
// eslint-disable-next-line sonarjs/cognitive-complexity
|
189
189
|
map((result) => {
|
190
|
-
if (this.shouldBeBusy() === undefined && !isNil(this.shouldBeConfirmed()) &&
|
190
|
+
if (this.shouldBeBusy() === undefined && !isNil(this.shouldBeConfirmed()) && result.isConfirmed !== null) {
|
191
191
|
this.isBusyChange.emit(result.isBusy);
|
192
192
|
if (!isNil(result.isConfirmed)) {
|
193
193
|
this.isConfirmedChange.emit(result.isConfirmed);
|
@@ -256,4 +256,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
256
256
|
}], propDecorators: { showCodeFields: [{
|
257
257
|
type: Input
|
258
258
|
}] } });
|
259
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3ZlcmlmaWNhdGlvbi92ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmVyaWZpY2F0aW9uL3ZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtL3NjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZSxLQUFLLEVBQXVCLE1BQU0sRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBMEIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQWlCLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQ0gsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLElBQUksRUFD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QUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNyQixDQUFDLENBQUMsRUFDRixLQUFLLEVBQUUsQ0FDVixDQUFDO1FBRUYsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNPLFdBQVcsQ0FBQyxRQUFpQjtRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDNUQsQ0FBQzsrR0FyVFEscUNBQXFDO21HQUFyQyxxQ0FBcUMseTBDQy9DbEQsNG9KQTBIQTs7NEZEM0VhLHFDQUFxQztrQkFOakQsU0FBUzsrQkFDSSxrQ0FBa0MsUUFFdEMsRUFBRSxlQUFlLEVBQUUsTUFBTSxFQUFFLG1CQUNoQix1QkFBdUIsQ0FBQyxNQUFNOzhCQU9wQyxjQUFjO3NCQUR4QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tdW5kZXJzY29yZS1kYW5nbGUsbG9kYXNoL3ByZWZlci1jb25zdGFudCAqL1xuXG5pbXBvcnQgeyBIdHRwQ2xpZW50LCBIdHRwRXJyb3JSZXNwb25zZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIGlucHV0LCBJbnB1dFNpZ25hbCwgbW9kZWwsIE1vZGVsU2lnbmFsLCBPbkluaXQsIG91dHB1dCwgT3V0cHV0RW1pdHRlclJlZiwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0b1NpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1Hcm91cERpcmVjdGl2ZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hc2tpdG9PcHRpb25zIH0gZnJvbSAnQG1hc2tpdG8vY29yZSc7XG5pbXBvcnQgeyBTY0lPcmdDb250YWN0LCBTY1ZlcmlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IHR1aUNvbnRyb2xWYWx1ZSB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHR5cGUgeyBUdWlDb3VudHJ5SXNvQ29kZSB9IGZyb20gJ0B0YWlnYS11aS9pMThuJztcbmltcG9ydCB7IGdldENvdW50cmllcyB9IGZyb20gJ2xpYnBob25lbnVtYmVyLWpzJztcbmltcG9ydCB7IGlzTmlsIH0gZnJvbSAnbG9kYXNoLWVzJztcbmltcG9ydCB7XG4gICAgY2F0Y2hFcnJvcixcbiAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCxcbiAgICBlbmRXaXRoLFxuICAgIGZpbHRlcixcbiAgICBmaW5hbGl6ZSxcbiAgICBtYXAsXG4gICAgT2JzZXJ2YWJsZSxcbiAgICBvZixcbiAgICBzY2FuLFxuICAgIHNoYXJlLFxuICAgIHNoYXJlUmVwbGF5LFxuICAgIHN0YXJ0V2l0aCxcbiAgICBTdWJqZWN0LFxuICAgIHN3aXRjaE1hcCxcbiAgICB0YWtlV2hpbGUsXG4gICAgdGFwLFxuICAgIHRpbWVyLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQXBpRXJyb3JSZXNwb25zZSB9IGZyb20gJy4uLy4uL2F1dGgvaW50ZXJmYWNlcy9hcGktZXJyb3ItcmVzcG9uc2UnO1xuaW1wb3J0IHsgU0NfU0hPV19IRUxQX05PVElGSUNBVElPTl9JTl9QSE9ORV9JTlBVVCB9IGZyb20gJy4uLy4uL2NvbnRhY3RzL3Rva2Vucy9zYy1zaG93LWhlbHAtbm90aWZpY2F0aW9uLWluLXBob25lLWlucHV0LnRva2VuJztcbmltcG9ydCB7IHNjUGhvbmVWZXJpZmljYXRpb25Db2RlTWFzayB9IGZyb20gJy4uLy4uL21hc2tzJztcbmltcG9ydCB7IFNDX1ZFUklGSUNBVElPTl9DT0RFX1RJTUVPVVQgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMvc2MtdmVyaWZpY2F0aW9uLWNvZGUtdGltZW91dCc7XG5pbXBvcnQgeyBTY0hlbHBOb3RpZmljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMnO1xuXG4vKipcbiAqINCa0L7QvNC/0L7QvdC10L3RgiDRhNC+0YDQvNGLINC/0YDQvtCy0LXRgNC60Lgg0YLQtdC70LXRhNC+0L3QsCDQuCDQv9C+0LvRg9GH0LXQvdC40Y8g0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnc2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgaG9zdDogeyBuZ1NraXBIeWRyYXRpb246ICd0cnVlJyB9LFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY1ZlcmlmaWNhdGlvblBob25lQ2hlY2tGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDQvtGC0L7QsdGA0LDQttCw0YLRjCDRhNGD0L3QutGG0LjQvtC90LDQuyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgc2hvd0NvZGVGaWVsZHMoc2hvd0NvZGVGaWVsZHM6IGJvb2xlYW4pIHtcbiAgICAgICAgdGhpcy5fc2hvd0NvZGVGaWVsZHMgPSBzaG93Q29kZUZpZWxkcztcbiAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLnZlcmlmaWNhdGlvbkNvZGVbc2hvd0NvZGVGaWVsZHMgPyAnZW5hYmxlJyA6ICdkaXNhYmxlJ10oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDQvtGC0L7QsdGA0LDQttCw0YLRjCDRhNGD0L3QutGG0LjQvtC90LDQuyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHNob3dDb2RlRmllbGRzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0NvZGVGaWVsZHM7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINCy0LXRgNC40YTQuNC60LDRhtC40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZlcmlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoU2NWZXJpZmljYXRpb25TZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqINCU0LjRgNC10LrRgtC40LLQsCBjIGBGb3JtR3JvdXBgINC40LcgRE9NLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmb3JtR3JvdXBEaXJlY3RpdmUgPSBpbmplY3QoRm9ybUdyb3VwRGlyZWN0aXZlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICogSFRUUC3QutC70LjQtdC90YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGh0dHAgPSBpbmplY3QoSHR0cENsaWVudCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC/0L7Qu9C1INCy0LLQvtC00LAg0YLQtdC70LXRhNC+0L3QsCDRgtC+0LvRjNC60L4g0LTQu9GPINGH0YLQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVhZE9ubHk6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQv9C+0LvQtSDQstCy0L7QtNCwINGC0LXQu9C10YTQvtC90LAg0L/RgdC10LLQtNC+LdC90LXQstCw0LvQuNC00L3QvtC1LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBwc2V1ZG9JbnZhbGlkOiBJbnB1dFNpZ25hbDxib29sZWFuPiA9IGlucHV0KGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L/QvtC70LUg0LLQstC+0LTQsCDRgtC10LvQtdGE0L7QvdCwINC4INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINC+0LHRj9C30LDRgtC10LvRjNC90YvQtS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcmVxdWlyZWQ6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICog0KLQtdC60YHRgiDQv9C+0LTRgdC60LDQt9C60LguXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHN1YnRpdGxlOiBJbnB1dFNpZ25hbDxzdHJpbmc+ID0gaW5wdXQoJycpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0YLQtdC70LXRhNC+0L3RgyDQsdGL0YLRjCDQsiDRgdC40YHRgtC10LzQtS4g0J7RgiDRjdGC0L7Qs9C+INC/0YDQuNC30L3QsNC60LAg0LfQsNCy0LjRgdC40YIsINCyINC60LDQutC40YUg0YHQu9GD0YfQsNGP0YUg0LLRi9C00LDQstCw0YLRjCDQvtGI0LjQsdC60YMg0L/RgNC4INC/0YDQvtCy0LXRgNC60LUg0LfQsNC90Y/RgtC+0YHRgtC4INGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNob3VsZEJlQnVzeTogSW5wdXRTaWduYWw8Ym9vbGVhbiB8IHVuZGVmaW5lZD4gPSBpbnB1dDxib29sZWFuIHwgdW5kZWZpbmVkPigpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0L/RgNC+0LLQtdGA0Y/RgtGMLCDQv9C+0LTRgtCy0LXRgNC20LTRkdC9INC70Lgg0YLQtdC70LXRhNC+0L0g0LIg0YHQuNGB0YLQtdC80LUuINCf0YDQuCBgdHJ1ZWAg0LHRg9C00LXRgiDQstGL0LfRi9Cy0LDRgtGMINC+0YjQuNCx0LrRgyDQv9GA0Lgg0L3QsNC70LjRh9C40Lgg0YLQtdC70LXRhNC+0L3QsCDQsiDRgdC40YHRgtC10LzQtSDQsdC10Lcg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHNob3VsZEJlQ29uZmlybWVkOiBJbnB1dFNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPiA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHRgtGA0LDQvS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY291bnRyaWVzOiByZWFkb25seSBUdWlDb3VudHJ5SXNvQ29kZVtdID0gZ2V0Q291bnRyaWVzKCk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8gUHVzaC3Rg9Cy0LXQtNC+0LzQu9C10L3QuNC5INGBINC60L7QvdGC0LDQutGC0LDQvNC4INC00LvRjyDQv9C+0LzQvtGJ0Lgg0LrQu9C40LXQvdGC0YMuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGhlbHBOb3RpZmljYXRpb25TZXJ2aWNlOiBTY0hlbHBOb3RpZmljYXRpb25TZXJ2aWNlID0gaW5qZWN0KFNjSGVscE5vdGlmaWNhdGlvblNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQv9C40YHQvtC6INC60L7QvdGC0LDQutGC0L7QsiDQtNC70Y8g0L7RgtC/0YDQsNCy0LrQuCBwdXNoLdGD0LLQtdC00L7QvNC70LXQvdC40LkuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHB1c2hDb250YWN0czogU2lnbmFsPFNjSU9yZ0NvbnRhY3RbXSB8IHVuZGVmaW5lZD4gPSB0b1NpZ25hbCh0aGlzLmhlbHBOb3RpZmljYXRpb25TZXJ2aWNlLmdldENvbnRhY3RzU2hvdyQoKSk7XG5cbiAgICAvKipcbiAgICAgKiDQndCw0LvQuNGH0LjQtSDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjyDRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8uXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGhhdmVDb2RlOiBNb2RlbFNpZ25hbDxib29sZWFuPiA9IG1vZGVsKGZhbHNlKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQv9GA0L7QstC10YDQutC4INC90L7QvNC10YDQsCDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBwaG9uZUNoZWNrJD86IE9ic2VydmFibGU8Ym9vbGVhbiB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE91dHB1dEVtaXR0ZXJ9INGB0L7QsdGL0YLQuNGPINC40LfQvNC10L3QtdC90LjRjyDQv9GA0LjQt9C90LDQutCwINC30LDQvdGP0YLQvtGB0YLQuCDRgtC10LvQtdGE0L7QvdCwLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBpc0J1c3lDaGFuZ2U6IE91dHB1dEVtaXR0ZXJSZWY8Ym9vbGVhbiB8IG51bGw+ID0gb3V0cHV0PGJvb2xlYW4gfCBudWxsPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE91dHB1dEVtaXR0ZXJ9INGB0L7QsdGL0YLQuNGPINC40LfQvNC10L3QtdC90LjRjyDQv9GA0LjQt9C90LDQutCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzQ29uZmlybWVkQ2hhbmdlOiBPdXRwdXRFbWl0dGVyUmVmPGJvb2xlYW4gfCBudWxsPiA9IG91dHB1dDxib29sZWFuIHwgbnVsbD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQvtGC0L/RgNCw0LLQutC4INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvblNlbmRDb2RlOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCi0LDQudC80LDRg9GCINC+0YLQv9GA0LDQstC60Lgg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvZGVUaW1lb3V0OiBudW1iZXIgPSBpbmplY3QoU0NfVkVSSUZJQ0FUSU9OX0NPREVfVElNRU9VVCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LfQsNC/0YDQvtGB0LAg0LTQsNC90L3Ri9GFINC/0L7Qu9GD0YfQtdC90LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZ0FwcHJvdmVDb2RlJDogT2JzZXJ2YWJsZTxib29sZWFuPiA9IHRoaXMub25TZW5kQ29kZS5waXBlKFxuICAgICAgICBtYXAoKCkgPT4gdGhpcy5waG9uZUNvbnRyb2wudmFsdWUpLFxuICAgICAgICBmaWx0ZXIoKHZhbHVlKTogdmFsdWUgaXMgc3RyaW5nID0+IHRoaXMucGhvbmVDb250cm9sLnZhbGlkKSxcbiAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT5cbiAgICAgICAgICAgIHRoaXMudmVyaWZpY2F0aW9uU2VydmljZS5zZW5kUGhvbmVBcHByb3ZlQ29kZSh2YWx1ZSkucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZFRpbWVyJC5uZXh0KHRoaXMuY29kZVRpbWVvdXQpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIG1hcCgoKSA9PiBmYWxzZSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGVycm9yUmVzcG9uc2UgPSBlcnJvci5lcnJvciBhcyBBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCByZWdleCA9IC8oXFxkezJ9KTpcXGR7Mn0vO1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2ggPSByZWdleC5leGVjKGVycm9yUmVzcG9uc2UubWVzc2FnZSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRjaCAmJiBtYXRjaC5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdGltZVBhcnRzID0gbWF0Y2hbMF0uc3BsaXQoJzonKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRzID0gTnVtYmVyLnBhcnNlSW50KHRpbWVQYXJ0c1sxXSwgMTApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRUaW1lciQubmV4dChzZWNvbmRzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yUmVzcG9uc2UuZXJyb3JzPy5bJ3Bob25lJ10gPz8gW2Vycm9yUmVzcG9uc2UubWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoZmFsc2UpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIGZpbmFsaXplKCgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRIYXZlQ29kZSh0cnVlKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgodHJ1ZSksXG4gICAgICAgICAgICAgICAgc2hhcmVSZXBsYXkoeyByZWZDb3VudDogdHJ1ZSwgYnVmZmVyU2l6ZTogMSB9KVxuICAgICAgICAgICAgKVxuICAgICAgICApLFxuICAgICAgICBzdGFydFdpdGgoZmFsc2UpLFxuICAgICAgICBzaGFyZSgpXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdC60LAg0L/QvtC70Y8g0LLQstC+0LTQsCDQutC+0LTQsCDQtNC70Y8g0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHZlcmlmaWNhdGlvbkNvZGVNYXNrOiBNYXNraXRvT3B0aW9ucyA9IHNjUGhvbmVWZXJpZmljYXRpb25Db2RlTWFzaztcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBTdWJqZWN0fSDRgdC+0LHRi9GC0LjRjyDQt9Cw0L/Rg9GB0LrQsC/QvtGB0YLQsNC90L7QstC60Lgg0YLQsNC50LzQtdGA0LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlbG9hZFRpbWVyJDogU3ViamVjdDxudW1iZXI+ID0gbmV3IFN1YmplY3Q8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INCi0LDQudC80LXRgNCwLlxuICAgICAqXG4gICAgICogVE9ETzog0JLRi9C90LXRgdGC0Lgg0YLQsNC50LzQtdGAINCyINC+0YLQtNC10LvRjNC90YPRjiDQtNC40YDQtdC60YLQuNCy0YMgVEFTSzpbIzkyNjBdLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB0aW1lciQ6IE9ic2VydmFibGU8c3RyaW5nIHwgbnVsbD4gPSB0aGlzLnJlbG9hZFRpbWVyJC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHNlYykgPT5cbiAgICAgICAgICAgIHRpbWVyKDAsIDEwMDApLnBpcGUoXG4gICAgICAgICAgICAgICAgc2NhbigodG90YWwpID0+IC0xICsgdG90YWwsIHNlYyksXG4gICAgICAgICAgICAgICAgdGFrZVdoaWxlKCh0b3RhbCkgPT4gdG90YWwgPj0gMCksXG4gICAgICAgICAgICAgICAgbWFwKCh0b3RhbCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcih0b3RhbCAvIDYwKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2Vjb25kcyA9IHRvdGFsICUgNjA7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke01hdGgucm91bmQobWludXRlcykudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfToke01hdGgucm91bmQoc2Vjb25kcykudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAnMCcpfWA7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZW5kV2l0aChudWxsKSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqINCi0L7QutC10L0g0L/QvtC60LDQt9CwINGD0LLQtdC00L7QvNC70LXQvdC40Y8g0L/QvtC80L7RidC4LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBzaG93SGVscE5vdGlmaWNhdGlvbiA9IGluamVjdChTQ19TSE9XX0hFTFBfTk9USUZJQ0FUSU9OX0lOX1BIT05FX0lOUFVUKTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRgdC70LXQtNGD0LXRgiDQu9C4INC+0YLQvtCx0YDQsNC20LDRgtGMINGE0YPQvdC60YbQuNC+0L3QsNC7INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHByaXZhdGUgX3Nob3dDb2RlRmllbGRzOiBib29sZWFuID0gdHJ1ZTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INCy0LLQvtC00LAg0LTQu9GPINGE0L7RgNC80YsgwqvQktGF0L7QtCDQvdCwINGB0LDQudGCwrsuXG4gICAgICovXG4gICAgcHVibGljIGdldCBmb3JtKCk6IEZvcm1Hcm91cDx7XG4gICAgICAgIHBob25lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgdmVyaWZpY2F0aW9uQ29kZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgfT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtR3JvdXBEaXJlY3RpdmU/LmZvcm0gYXMgRm9ybUdyb3VwPHtcbiAgICAgICAgICAgIHBob25lOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICAgICAgICAgIHZlcmlmaWNhdGlvbkNvZGU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICB9PjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9C+0LvQtSDQstCy0L7QtNCwICfQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAnLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcGhvbmVDb250cm9sKCk6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jb250cm9scy5waG9uZTtcbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGhvbmVDaGVjayQgPSB0dWlDb250cm9sVmFsdWU8c3RyaW5nIHwgbnVsbD4odGhpcy5waG9uZUNvbnRyb2wpLnBpcGUoXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkVGltZXIkLm5leHQoMCk7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0J1c3lDaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQ29uZmlybWVkQ2hhbmdlLmVtaXQobnVsbCk7XG4gICAgICAgICAgICAgICAgdGhpcy5oZWxwTm90aWZpY2F0aW9uU2VydmljZS5jbG9zZUFsbEhlbHBOb3RpZmljYXRpb24oKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmZvcm0uY29udHJvbHMudmVyaWZpY2F0aW9uQ29kZS52YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudmVyaWZpY2F0aW9uQ29kZS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5waG9uZUNvbnRyb2wudmFsaWQgJiYgISF2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy52ZXJpZmljYXRpb25TZXJ2aWNlLmdldFBob25lQ2hlY2skKHZhbHVlKS5waXBlKFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNvbmFyanMvY29nbml0aXZlLWNvbXBsZXhpdHlcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcCgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmVCdXN5KCkgPT09IHVuZGVmaW5lZCAmJiAhaXNOaWwodGhpcy5zaG91bGRCZUNvbmZpcm1lZCgpKSAmJiAhcmVzdWx0LmlzQnVzeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQnVzeUNoYW5nZS5lbWl0KHJlc3VsdC5pc0J1c3kpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNOaWwocmVzdWx0LmlzQ29uZmlybWVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbmZpcm1lZENoYW5nZS5lbWl0KHJlc3VsdC5pc0NvbmZpcm1lZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNob3VsZEJlQ29uZmlybWVkKCkgPT09IHJlc3VsdC5pc0NvbmZpcm1lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3VsZEJlQnVzeSgpICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zaG91bGRCZUJ1c3koKSAhPT0gcmVzdWx0LmlzQnVzeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2U6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXNCdXN5ID8gJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRgSDRgtCw0LrQuNC8INC90L7QvNC10YDQvtC8INGC0LXQu9C10YTQvtC90LAg0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCJyA6ICfQn9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0YEg0YLQsNC60LjQvCDQvdC+0LzQtdGA0L7QvCDRgtC10LvQtdGE0L7QvdCwINC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmVDb25maXJtZWQoKSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2hvdWxkQmVDb25maXJtZWQoKSAhPT0gcmVzdWx0LmlzQ29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLnNldEVycm9ycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pc0NvbmZpcm1lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICfQotC10LvQtdGE0L7QvSDRg9C20LUg0L/QvtC00YLQstC10YDQttC00ZHQvSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwINC90LUg0L/QvtC00YLQstC10YDQttC00ZHQvSDQuNC70Lgg0LLRhdC+0LQg0L/QviDQvdC10LzRgyDQvdC10LLQvtC30LzQvtC20LXQvS4g0J7QsdGA0LDRgtC40YLQtdGB0Ywg0Log0LLQsNGI0LXQvNGDINC/0LXRgNGB0L7QvdCw0LvRjNC90L7QvNGDINC80LXQvdC10LTQttC10YDRgyDQuNC70Lgg0LLQvtC50LTQuNGC0LUg0YEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvCBlLW1haWwg0Lgg0L/QsNGA0L7Qu9GPLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvclJlc3BvbnNlID0gZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3JSZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yUmVzcG9uc2UuZXJyb3JzPy5bJ3Bob25lJ10gPz8gW2Vycm9yUmVzcG9uc2UubWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKChjaGVjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWxwTm90aWZpY2F0aW9uU2VydmljZS5oZWxwTm90aWZpY2F0aW9uQnlQaG9uZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldEhhdmVDb2RlKGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNoYXJlKClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNldEhhdmVDb2RlKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgdC+0YHRgtC+0Y/QvdC40LUg0L3QsNC70LjRh9C40Y8g0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YMg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqXG4gICAgICogQHBhcmFtIGhhdmVDb2RlINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+INC10YHRgtGMINC70Lgg0LrQvtC0INC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINC40LvQuCDQvdC10YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldEhhdmVDb2RlKGhhdmVDb2RlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGF2ZUNvZGUuc2V0KGhhdmVDb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQl9Cw0LrRgNGL0YLQuNC1INGD0LLQtdC00L7QvNC70LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNsb3NlTm90aWZpY2F0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhlbHBOb3RpZmljYXRpb25TZXJ2aWNlLmNsb3NlQWxsSGVscE5vdGlmaWNhdGlvbigpO1xuICAgIH1cbn1cbiIsIkBsZXQgcGhvbmVDaGVjayA9IHBob25lQ2hlY2skIHwgYXN5bmM7XG5cbjxmb3JtXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAqdHVpTGV0PVwibG9hZGluZ0FwcHJvdmVDb2RlJCB8IGFzeW5jIGFzIGxvYWRpbmdBcHByb3ZlQ29kZVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCJcbj5cbiAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgINCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsFxuICAgICAgICA8dHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBob25lXCJcbiAgICAgICAgICAgICAgICB0dWlJbnB1dFBob25lSW50ZXJuYXRpb25hbFxuICAgICAgICAgICAgICAgIFtpbnZhbGlkXT1cInBzZXVkb0ludmFsaWQoKSB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICBbY291bnRyeVNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbY291bnRyaWVzXT1cIihjb3VudHJpZXMgfCB0dWlTb3J0Q291bnRyaWVzIHwgYXN5bmMpIHx8IFtdXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJwaG9uZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cInN1YnRpdGxlKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktcyB0ZXh0LXR1aS10ZXh0LXRlcnRpYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgc3VidGl0bGUoKSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBob25lXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoc2hvd0hlbHBOb3RpZmljYXRpb24gJiYgcHVzaENvbnRhY3RzKCkpIHtcbiAgICAgICAgICAgIEBmb3IgKG1hbmFnZXIgb2YgcHVzaENvbnRhY3RzKCk7IHRyYWNrIG1hbmFnZXIuaWQpIHtcbiAgICAgICAgICAgICAgICA8dHVpLXB1c2hcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cItCh0LLRj9C20LjRgtC10YHRjCDRgSDQvdCw0LzQuCDQtNC70Y8g0YDQtdGI0LXQvdC40Y8g0LLQvtC30L3QuNC60YjQuNGFINCy0L7Qv9GA0L7RgdC+0LJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VOb3RpZmljYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIXctYXV0b1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dHVpLWljb24gaWNvbj1cIkB0dWkubWVzc2FnZS1zcXVhcmVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c2MtbWFuYWdlci1jYXJkIFttYW5hZ2VyXT1cIm1hbmFnZXJcIiAvPlxuICAgICAgICAgICAgICAgIDwvdHVpLXB1c2g+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2xhYmVsPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dDb2RlRmllbGRzICYmIGZvcm0uZW5hYmxlZCAmJiBwaG9uZUNoZWNrXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZ0FwcHJvdmVDb2RlICYmIGhhdmVDb2RlKClcIlxuICAgICAgICAgICAgdHVpTGFiZWxcbiAgICAgICAgPlxuICAgICAgICAgICAg0JrQvtC0INC40Lcg0KHQnNChXG4gICAgICAgICAgICA8dHVpLWlucHV0XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkKCkgfHwgc2hvd0NvZGVGaWVsZHNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCa0L7QtCDQuNC3INCh0JzQoVxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0dWlBdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkTGVnYWN5XG4gICAgICAgICAgICAgICAgICAgIFttYXNraXRvXT1cInZlcmlmaWNhdGlvbkNvZGVNYXNrXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKnR1aUxldD1cIiEhbG9hZGluZ0FwcHJvdmVDb2RlIGFzIGxvYWRpbmdBcHByb3ZlQ29kZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLTRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaGF2ZUNvZGUoKVwiXG4gICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VuZENvZGUubmV4dCgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ0FwcHJvdmVDb2RlIHx8ICFwaG9uZUNoZWNrIHx8IHBob25lQ29udHJvbC5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nQXBwcm92ZUNvZGVcIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuc2Muc2VuZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0J/QvtC70YPRh9C40YLRjCDQutC+0LRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmdBcHByb3ZlQ29kZSAmJiAhaGF2ZUNvZGUoKVwiXG4gICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgIFtwc2V1ZG9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwaG9uZUNoZWNrIHx8IHBob25lQ29udHJvbC5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0SGF2ZUNvZGUodHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCjINC80LXQvdGPINC10YHRgtGMINC60L7QtFxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnR1aUxldD1cInRpbWVyJCB8IGFzeW5jIGFzIHRpbWVyXCI+XG4gICAgICAgICAgICAgICAgPHR1aS1sb2FkZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXZlQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dMb2FkZXJdPVwibG9hZGluZ0FwcHJvdmVDb2RlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwc2V1ZG9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ0FwcHJvdmVDb2RlIHx8IHRpbWVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbmRDb2RlLm5leHQoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgINCf0L7QstGC0L7RgNC90L4g0L7RgtC/0YDQsNCy0LjRgtGMINC60L7QtFxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGltZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIXRleHQtdHVpLWJhc2UtMDhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICjRh9C10YDQtdC3IHt7IHRpbWVyIH19KVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdHVpLWxvYWRlcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cblxuPG5nLXRlbXBsYXRlICNjaGVja2luZ1Bob25lPlxuICAgIDx0dWktbG9hZGVyXG4gICAgICAgICpuZ0lmPVwiIXBob25lQ2hlY2sgJiYgcGhvbmVDb250cm9sLnZhbGlkXCJcbiAgICAgICAgY2xhc3M9XCJzaXplLTRcIlxuICAgIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
|
259
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtdmVyaWZpY2F0aW9uLXBob25lLWNoZWNrLWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL3ZlcmlmaWNhdGlvbi92ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS9zYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvdmVyaWZpY2F0aW9uL3ZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtL3NjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGdFQUFnRTtBQUVoRSxPQUFPLEVBQUUsVUFBVSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBZSxLQUFLLEVBQXVCLE1BQU0sRUFBNEIsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQ3RELE9BQU8sRUFBMEIsa0JBQWtCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU1RSxPQUFPLEVBQWlCLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDOUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNsQyxPQUFPLEVBQ0gsVUFBVSxFQUNWLG9CQUFvQixFQUNwQixPQUFPLEVBQ1AsTUFBTSxFQUNOLFFBQVEsRUFDUixHQUFHLEVBRUgsRUFBRSxFQUNGLElBQUksRUFD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QU8sRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3JCLENBQUMsQ0FBQyxFQUNGLEtBQUssRUFBRSxDQUNWLENBQUM7UUFFRixJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7OztPQUlHO0lBQ08sV0FBVyxDQUFDLFFBQWlCO1FBQ25DLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsdUJBQXVCLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUM1RCxDQUFDOytHQXJUUSxxQ0FBcUM7bUdBQXJDLHFDQUFxQyx5MENDL0NsRCw0b0pBMEhBOzs0RkQzRWEscUNBQXFDO2tCQU5qRCxTQUFTOytCQUNJLGtDQUFrQyxRQUV0QyxFQUFFLGVBQWUsRUFBRSxNQUFNLEVBQUUsbUJBQ2hCLHVCQUF1QixDQUFDLE1BQU07OEJBT3BDLGNBQWM7c0JBRHhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby11bmRlcnNjb3JlLWRhbmdsZSxsb2Rhc2gvcHJlZmVyLWNvbnN0YW50ICovXG5cbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgaW5wdXQsIElucHV0U2lnbmFsLCBtb2RlbCwgTW9kZWxTaWduYWwsIE9uSW5pdCwgb3V0cHV0LCBPdXRwdXRFbWl0dGVyUmVmLCBTaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWFza2l0b09wdGlvbnMgfSBmcm9tICdAbWFza2l0by9jb3JlJztcbmltcG9ydCB7IFNjSU9yZ0NvbnRhY3QsIFNjVmVyaWZpY2F0aW9uU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgdHVpQ29udHJvbFZhbHVlIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgdHlwZSB7IFR1aUNvdW50cnlJc29Db2RlIH0gZnJvbSAnQHRhaWdhLXVpL2kxOG4nO1xuaW1wb3J0IHsgZ2V0Q291bnRyaWVzIH0gZnJvbSAnbGlicGhvbmVudW1iZXItanMnO1xuaW1wb3J0IHsgaXNOaWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgICBjYXRjaEVycm9yLFxuICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkLFxuICAgIGVuZFdpdGgsXG4gICAgZmlsdGVyLFxuICAgIGZpbmFsaXplLFxuICAgIG1hcCxcbiAgICBPYnNlcnZhYmxlLFxuICAgIG9mLFxuICAgIHNjYW4sXG4gICAgc2hhcmUsXG4gICAgc2hhcmVSZXBsYXksXG4gICAgc3RhcnRXaXRoLFxuICAgIFN1YmplY3QsXG4gICAgc3dpdGNoTWFwLFxuICAgIHRha2VXaGlsZSxcbiAgICB0YXAsXG4gICAgdGltZXIsXG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBBcGlFcnJvclJlc3BvbnNlIH0gZnJvbSAnLi4vLi4vYXV0aC9pbnRlcmZhY2VzL2FwaS1lcnJvci1yZXNwb25zZSc7XG5pbXBvcnQgeyBTQ19TSE9XX0hFTFBfTk9USUZJQ0FUSU9OX0lOX1BIT05FX0lOUFVUIH0gZnJvbSAnLi4vLi4vY29udGFjdHMvdG9rZW5zL3NjLXNob3ctaGVscC1ub3RpZmljYXRpb24taW4tcGhvbmUtaW5wdXQudG9rZW4nO1xuaW1wb3J0IHsgc2NQaG9uZVZlcmlmaWNhdGlvbkNvZGVNYXNrIH0gZnJvbSAnLi4vLi4vbWFza3MnO1xuaW1wb3J0IHsgU0NfVkVSSUZJQ0FUSU9OX0NPREVfVElNRU9VVCB9IGZyb20gJy4uLy4uL3Byb3ZpZGVycy9zYy12ZXJpZmljYXRpb24tY29kZS10aW1lb3V0JztcbmltcG9ydCB7IFNjSGVscE5vdGlmaWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcyc7XG5cbi8qKlxuICog0JrQvtC80L/QvtC90LXQvdGCINGE0L7RgNC80Ysg0L/RgNC+0LLQtdGA0LrQuCDRgtC10LvQtdGE0L7QvdCwINC4INC/0L7Qu9GD0YfQtdC90LjRjyDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtLmNvbXBvbmVudC5odG1sJyxcbiAgICBob3N0OiB7IG5nU2tpcEh5ZHJhdGlvbjogJ3RydWUnIH0sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjVmVyaWZpY2F0aW9uUGhvbmVDaGVja0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRgdC70LXQtNGD0LXRgiDQu9C4INC+0YLQvtCx0YDQsNC20LDRgtGMINGE0YPQvdC60YbQuNC+0L3QsNC7INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBzaG93Q29kZUZpZWxkcyhzaG93Q29kZUZpZWxkczogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9zaG93Q29kZUZpZWxkcyA9IHNob3dDb2RlRmllbGRzO1xuICAgICAgICB0aGlzLmZvcm0uY29udHJvbHMudmVyaWZpY2F0aW9uQ29kZVtzaG93Q29kZUZpZWxkcyA/ICdlbmFibGUnIDogJ2Rpc2FibGUnXSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRgdC70LXQtNGD0LXRgiDQu9C4INC+0YLQvtCx0YDQsNC20LDRgtGMINGE0YPQvdC60YbQuNC+0L3QsNC7INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2hvd0NvZGVGaWVsZHMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93Q29kZUZpZWxkcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LLQtdGA0LjRhNC40LrQsNGG0LjQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmVyaWZpY2F0aW9uU2VydmljZSA9IGluamVjdChTY1ZlcmlmaWNhdGlvblNlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0JTQuNGA0LXQutGC0LjQstCwIGMgYEZvcm1Hcm91cGAg0LjQtyBET00uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm1Hcm91cERpcmVjdGl2ZSA9IGluamVjdChGb3JtR3JvdXBEaXJlY3RpdmUsIHsgb3B0aW9uYWw6IHRydWUgfSk7XG5cbiAgICAvKipcbiAgICAgKiBIVFRQLdC60LvQuNC10L3Rgi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaHR0cCA9IGluamVjdChIdHRwQ2xpZW50KTtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6LCDRh9GC0L4g0L/QvtC70LUg0LLQstC+0LTQsCDRgtC10LvQtdGE0L7QvdCwINGC0L7Qu9GM0LrQviDQtNC70Y8g0YfRgtC10L3QuNGPLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSByZWFkT25seTogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YfRgtC+INC/0L7Qu9C1INCy0LLQvtC00LAg0YLQtdC70LXRhNC+0L3QsCDQv9GB0LXQstC00L4t0L3QtdCy0LDQu9C40LTQvdC+0LUuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHBzZXVkb0ludmFsaWQ6IElucHV0U2lnbmFsPGJvb2xlYW4+ID0gaW5wdXQoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGH0YLQviDQv9C+0LvQtSDQstCy0L7QtNCwINGC0LXQu9C10YTQvtC90LAg0Lgg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0L7QsdGP0LfQsNGC0LXQu9GM0L3Ri9C1LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSByZXF1aXJlZDogSW5wdXRTaWduYWw8Ym9vbGVhbj4gPSBpbnB1dChmYWxzZSk7XG5cbiAgICAvKipcbiAgICAgKiDQotC10LrRgdGCINC/0L7QtNGB0LrQsNC30LrQuC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc3VidGl0bGU6IElucHV0U2lnbmFsPHN0cmluZz4gPSBpbnB1dCgnJyk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDRgtC10LvQtdGE0L7QvdGDINCx0YvRgtGMINCyINGB0LjRgdGC0LXQvNC1LiDQntGCINGN0YLQvtCz0L4g0L/RgNC40LfQvdCw0LrQsCDQt9Cw0LLQuNGB0LjRgiwg0LIg0LrQsNC60LjRhSDRgdC70YPRh9Cw0Y/RhSDQstGL0LTQsNCy0LDRgtGMINC+0YjQuNCx0LrRgyDQv9GA0Lgg0L/RgNC+0LLQtdGA0LrQtSDQt9Cw0L3Rj9GC0L7RgdGC0Lgg0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2hvdWxkQmVCdXN5OiBJbnB1dFNpZ25hbDxib29sZWFuIHwgdW5kZWZpbmVkPiA9IGlucHV0PGJvb2xlYW4gfCB1bmRlZmluZWQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LjQt9C90LDQuiwg0YHQu9C10LTRg9C10YIg0LvQuCDQv9GA0L7QstC10YDRj9GC0YwsINC/0L7QtNGC0LLQtdGA0LbQtNGR0L0g0LvQuCDRgtC10LvQtdGE0L7QvSDQsiDRgdC40YHRgtC10LzQtS4g0J/RgNC4IGB0cnVlYCDQsdGD0LTQtdGCINCy0YvQt9GL0LLQsNGC0Ywg0L7RiNC40LHQutGDINC/0YDQuCDQvdCw0LvQuNGH0LjQuCDRgtC10LvQtdGE0L7QvdCwINCyINGB0LjRgdGC0LXQvNC1INCx0LXQtyDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2hvdWxkQmVDb25maXJtZWQ6IElucHV0U2lnbmFsPGJvb2xlYW4gfCB1bmRlZmluZWQ+ID0gaW5wdXQ8Ym9vbGVhbiB8IHVuZGVmaW5lZD4oKTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdGC0YDQsNC9LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBjb3VudHJpZXM6IHJlYWRvbmx5IFR1aUNvdW50cnlJc29Db2RlW10gPSBnZXRDb3VudHJpZXMoKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0L7RgtC+0LHRgNCw0LbQtdC90LjRjyBQdXNoLdGD0LLQtdC00L7QvNC70LXQvdC40Lkg0YEg0LrQvtC90YLQsNC60YLQsNC80Lgg0LTQu9GPINC/0L7QvNC+0YnQuCDQutC70LjQtdC90YLRgy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgaGVscE5vdGlmaWNhdGlvblNlcnZpY2U6IFNjSGVscE5vdGlmaWNhdGlvblNlcnZpY2UgPSBpbmplY3QoU2NIZWxwTm90aWZpY2F0aW9uU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0LrQvtC90YLQsNC60YLQvtCyINC00LvRjyDQvtGC0L/RgNCw0LLQutC4IHB1c2gt0YPQstC10LTQvtC80LvQtdC90LjQuS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHVzaENvbnRhY3RzOiBTaWduYWw8U2NJT3JnQ29udGFjdFtdIHwgdW5kZWZpbmVkPiA9IHRvU2lnbmFsKHRoaXMuaGVscE5vdGlmaWNhdGlvblNlcnZpY2UuZ2V0Q29udGFjdHNTaG93JCgpKTtcblxuICAgIC8qKlxuICAgICAqINCd0LDQu9C40YfQuNC1INC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINGDINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaGF2ZUNvZGU6IE1vZGVsU2lnbmFsPGJvb2xlYW4+ID0gbW9kZWwoZmFsc2UpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC/0YDQvtCy0LXRgNC60Lgg0L3QvtC80LXRgNCwINGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHBob25lQ2hlY2skPzogT2JzZXJ2YWJsZTxib29sZWFuIHwgbnVsbD47XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT3V0cHV0RW1pdHRlcn0g0YHQvtCx0YvRgtC40Y8g0LjQt9C80LXQvdC10L3QuNGPINC/0YDQuNC30L3QsNC60LAg0LfQsNC90Y/RgtC+0YHRgtC4INGC0LXQu9C10YTQvtC90LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzQnVzeUNoYW5nZTogT3V0cHV0RW1pdHRlclJlZjxib29sZWFuIHwgbnVsbD4gPSBvdXRwdXQ8Ym9vbGVhbiB8IG51bGw+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT3V0cHV0RW1pdHRlcn0g0YHQvtCx0YvRgtC40Y8g0LjQt9C80LXQvdC10L3QuNGPINC/0YDQuNC30L3QsNC60LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YLQtdC70LXRhNC+0L3QsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNDb25maXJtZWRDaGFuZ2U6IE91dHB1dEVtaXR0ZXJSZWY8Ym9vbGVhbiB8IG51bGw+ID0gb3V0cHV0PGJvb2xlYW4gfCBudWxsPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG9uU2VuZENvZGU6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICog0KLQsNC50LzQsNGD0YIg0L7RgtC/0YDQsNCy0LrQuCDQutC+0LTQsCDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29kZVRpbWVvdXQ6IG51bWJlciA9IGluamVjdChTQ19WRVJJRklDQVRJT05fQ09ERV9USU1FT1VUKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0L/QvtC70YPRh9C10L3QuNGPINC60L7QtNCwINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBsb2FkaW5nQXBwcm92ZUNvZGUkOiBPYnNlcnZhYmxlPGJvb2xlYW4+ID0gdGhpcy5vblNlbmRDb2RlLnBpcGUoXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLnBob25lQ29udHJvbC52YWx1ZSksXG4gICAgICAgIGZpbHRlcigodmFsdWUpOiB2YWx1ZSBpcyBzdHJpbmcgPT4gdGhpcy5waG9uZUNvbnRyb2wudmFsaWQpLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy52ZXJpZmljYXRpb25TZXJ2aWNlLnNlbmRQaG9uZUFwcHJvdmVDb2RlKHZhbHVlKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMucmVsb2FkVGltZXIkLm5leHQodGhpcy5jb2RlVGltZW91dCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgbWFwKCgpID0+IGZhbHNlKSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXJyb3JSZXNwb25zZSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlZ2V4ID0gLyhcXGR7Mn0pOlxcZHsyfS87XG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXRjaCA9IHJlZ2V4LmV4ZWMoZXJyb3JSZXNwb25zZS5tZXNzYWdlKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoICYmIG1hdGNoLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aW1lUGFydHMgPSBtYXRjaFswXS5zcGxpdCgnOicpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNlY29uZHMgPSBOdW1iZXIucGFyc2VJbnQodGltZVBhcnRzWzFdLCAxMCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbG9hZFRpbWVyJC5uZXh0KHNlY29uZHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lQ29udHJvbC5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogZXJyb3JSZXNwb25zZS5lcnJvcnM/LlsncGhvbmUnXSA/PyBbZXJyb3JSZXNwb25zZS5tZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEhhdmVDb2RlKHRydWUpO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aCh0cnVlKSxcbiAgICAgICAgICAgICAgICBzaGFyZVJlcGxheSh7IHJlZkNvdW50OiB0cnVlLCBidWZmZXJTaXplOiAxIH0pXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHN0YXJ0V2l0aChmYWxzZSksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0JzQsNGB0LrQsCDQv9C+0LvRjyDQstCy0L7QtNCwINC60L7QtNCwINC00LvRjyDQv9C+0LTRgtCy0LXRgNC20LTQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdmVyaWZpY2F0aW9uQ29kZU1hc2s6IE1hc2tpdG9PcHRpb25zID0gc2NQaG9uZVZlcmlmaWNhdGlvbkNvZGVNYXNrO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC30LDQv9GD0YHQutCwL9C+0YHRgtCw0L3QvtCy0LrQuCDRgtCw0LnQvNC10YDQsC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVsb2FkVGltZXIkOiBTdWJqZWN0PG51bWJlcj4gPSBuZXcgU3ViamVjdDxudW1iZXI+KCk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0KLQsNC50LzQtdGA0LAuXG4gICAgICpcbiAgICAgKiBUT0RPOiDQktGL0L3QtdGB0YLQuCDRgtCw0LnQvNC10YAg0LIg0L7RgtC00LXQu9GM0L3Rg9GOINC00LjRgNC10LrRgtC40LLRgyBUQVNLOlsjOTI2MF0uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRpbWVyJDogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiA9IHRoaXMucmVsb2FkVGltZXIkLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgoc2VjKSA9PlxuICAgICAgICAgICAgdGltZXIoMCwgMTAwMCkucGlwZShcbiAgICAgICAgICAgICAgICBzY2FuKCh0b3RhbCkgPT4gLTEgKyB0b3RhbCwgc2VjKSxcbiAgICAgICAgICAgICAgICB0YWtlV2hpbGUoKHRvdGFsKSA9PiB0b3RhbCA+PSAwKSxcbiAgICAgICAgICAgICAgICBtYXAoKHRvdGFsKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHRvdGFsIC8gNjApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzZWNvbmRzID0gdG90YWwgJSA2MDtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7TWF0aC5yb3VuZChtaW51dGVzKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OiR7TWF0aC5yb3VuZChzZWNvbmRzKS50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9YDtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBlbmRXaXRoKG51bGwpLFxuICAgICAgICAgICAgICAgIHN0YXJ0V2l0aChudWxsKSxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0KLQvtC60LXQvSDQv9C+0LrQsNC30LAg0YPQstC10LTQvtC80LvQtdC90LjRjyDQv9C+0LzQvtGJ0LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHNob3dIZWxwTm90aWZpY2F0aW9uID0gaW5qZWN0KFNDX1NIT1dfSEVMUF9OT1RJRklDQVRJT05fSU5fUEhPTkVfSU5QVVQpO1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0LosINGB0LvQtdC00YPQtdGCINC70Lgg0L7RgtC+0LHRgNCw0LbQsNGC0Ywg0YTRg9C90LrRhtC40L7QvdCw0Lsg0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJpdmF0ZSBfc2hvd0NvZGVGaWVsZHM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LLQstC+0LTQsCDQtNC70Y8g0YTQvtGA0LzRiyDCq9CS0YXQvtC0INC90LAg0YHQsNC50YLCuy5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGZvcm0oKTogRm9ybUdyb3VwPHtcbiAgICAgICAgcGhvbmU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICB2ZXJpZmljYXRpb25Db2RlOiBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPjtcbiAgICB9PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1Hcm91cERpcmVjdGl2ZT8uZm9ybSBhcyBGb3JtR3JvdXA8e1xuICAgICAgICAgICAgcGhvbmU6IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+O1xuICAgICAgICAgICAgdmVyaWZpY2F0aW9uQ29kZTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD47XG4gICAgICAgIH0+O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0L7Qu9C1INCy0LLQvtC00LAgJ9Cd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCcuXG4gICAgICovXG4gICAgcHVibGljIGdldCBwaG9uZUNvbnRyb2woKTogRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLmNvbnRyb2xzLnBob25lO1xuICAgIH1cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5waG9uZUNoZWNrJCA9IHR1aUNvbnRyb2xWYWx1ZTxzdHJpbmcgfCBudWxsPih0aGlzLnBob25lQ29udHJvbCkucGlwZShcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWRUaW1lciQubmV4dCgwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmlzQnVzeUNoYW5nZS5lbWl0KG51bGwpO1xuICAgICAgICAgICAgICAgIHRoaXMuaXNDb25maXJtZWRDaGFuZ2UuZW1pdChudWxsKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhlbHBOb3RpZmljYXRpb25TZXJ2aWNlLmNsb3NlQWxsSGVscE5vdGlmaWNhdGlvbigpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuZm9ybS5jb250cm9scy52ZXJpZmljYXRpb25Db2RlLnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5jb250cm9scy52ZXJpZmljYXRpb25Db2RlLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgc3dpdGNoTWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLnBob25lQ29udHJvbC52YWxpZCAmJiAhIXZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnZlcmlmaWNhdGlvblNlcnZpY2UuZ2V0UGhvbmVDaGVjayQodmFsdWUpLnBpcGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc29uYXJqcy9jb2duaXRpdmUtY29tcGxleGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgbWFwKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zaG91bGRCZUJ1c3koKSA9PT0gdW5kZWZpbmVkICYmICFpc05pbCh0aGlzLnNob3VsZEJlQ29uZmlybWVkKCkpICYmIHJlc3VsdC5pc0NvbmZpcm1lZCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzQnVzeUNoYW5nZS5lbWl0KHJlc3VsdC5pc0J1c3kpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNOaWwocmVzdWx0LmlzQ29uZmlybWVkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc0NvbmZpcm1lZENoYW5nZS5lbWl0KHJlc3VsdC5pc0NvbmZpcm1lZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnNob3VsZEJlQ29uZmlybWVkKCkgPT09IHJlc3VsdC5pc0NvbmZpcm1lZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNob3VsZEJlQnVzeSgpICE9PSB1bmRlZmluZWQgJiYgdGhpcy5zaG91bGRCZUJ1c3koKSAhPT0gcmVzdWx0LmlzQnVzeSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBob25lQ29udHJvbC5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyUmVzcG9uc2U6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaXNCdXN5ID8gJ9Cf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRgSDRgtCw0LrQuNC8INC90L7QvNC10YDQvtC8INGC0LXQu9C10YTQvtC90LAg0YPQttC1INGB0YPRidC10YHRgtCy0YPQtdGCJyA6ICfQn9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0YEg0YLQsNC60LjQvCDQvdC+0LzQtdGA0L7QvCDRgtC10LvQtdGE0L7QvdCwINC90LUg0YHRg9GJ0LXRgdGC0LLRg9C10YInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLm1hcmtBc1RvdWNoZWQoKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2hvdWxkQmVDb25maXJtZWQoKSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuc2hvdWxkQmVDb25maXJtZWQoKSAhPT0gcmVzdWx0LmlzQ29uZmlybWVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGhvbmVDb250cm9sLnNldEVycm9ycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJSZXNwb25zZTogW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pc0NvbmZpcm1lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICfQotC10LvQtdGE0L7QvSDRg9C20LUg0L/QvtC00YLQstC10YDQttC00ZHQvSdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwINC90LUg0L/QvtC00YLQstC10YDQttC00ZHQvSDQuNC70Lgg0LLRhdC+0LQg0L/QviDQvdC10LzRgyDQvdC10LLQvtC30LzQvtC20LXQvS4g0J7QsdGA0LDRgtC40YLQtdGB0Ywg0Log0LLQsNGI0LXQvNGDINC/0LXRgNGB0L7QvdCw0LvRjNC90L7QvNGDINC80LXQvdC10LTQttC10YDRgyDQuNC70Lgg0LLQvtC50LTQuNGC0LUg0YEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvCBlLW1haWwg0Lgg0L/QsNGA0L7Qu9GPLicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wubWFya0FzVG91Y2hlZCgpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBlcnJvclJlc3BvbnNlID0gZXJyb3IuZXJyb3IgYXMgQXBpRXJyb3JSZXNwb25zZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5waG9uZUNvbnRyb2wuc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IGVycm9yUmVzcG9uc2UuZXJyb3JzPy5bJ3Bob25lJ10gPz8gW2Vycm9yUmVzcG9uc2UubWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgICAgdGFwKChjaGVjaykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2spIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oZWxwTm90aWZpY2F0aW9uU2VydmljZS5oZWxwTm90aWZpY2F0aW9uQnlQaG9uZSh2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbClcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLnNldEhhdmVDb2RlKGZhbHNlKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBvZihmYWxzZSk7XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHNoYXJlKClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNldEhhdmVDb2RlKGZhbHNlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQo9GB0YLQsNC90LDQstC70LjQstCw0LXRgiDRgdC+0YHRgtC+0Y/QvdC40LUg0L3QsNC70LjRh9C40Y8g0LrQvtC00LAg0L/QvtC00YLQstC10YDQttC00LXQvdC40Y8g0YMg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLlxuICAgICAqXG4gICAgICogQHBhcmFtIGhhdmVDb2RlINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+INC10YHRgtGMINC70Lgg0LrQvtC0INC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNGPINC40LvQuCDQvdC10YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHNldEhhdmVDb2RlKGhhdmVDb2RlOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGF2ZUNvZGUuc2V0KGhhdmVDb2RlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQl9Cw0LrRgNGL0YLQuNC1INGD0LLQtdC00L7QvNC70LXQvdC40Y8uXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGNsb3NlTm90aWZpY2F0aW9uKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhlbHBOb3RpZmljYXRpb25TZXJ2aWNlLmNsb3NlQWxsSGVscE5vdGlmaWNhdGlvbigpO1xuICAgIH1cbn1cbiIsIkBsZXQgcGhvbmVDaGVjayA9IHBob25lQ2hlY2skIHwgYXN5bmM7XG5cbjxmb3JtXG4gICAgW2Zvcm1Hcm91cF09XCJmb3JtXCJcbiAgICAqdHVpTGV0PVwibG9hZGluZ0FwcHJvdmVDb2RlJCB8IGFzeW5jIGFzIGxvYWRpbmdBcHByb3ZlQ29kZVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCJcbj5cbiAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgINCd0L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsFxuICAgICAgICA8dHVpLXRleHRmaWVsZD5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBob25lXCJcbiAgICAgICAgICAgICAgICB0dWlJbnB1dFBob25lSW50ZXJuYXRpb25hbFxuICAgICAgICAgICAgICAgIFtpbnZhbGlkXT1cInBzZXVkb0ludmFsaWQoKSB8fCBudWxsXCJcbiAgICAgICAgICAgICAgICBbY291bnRyeVNlYXJjaF09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbY291bnRyaWVzXT1cIihjb3VudHJpZXMgfCB0dWlTb3J0Q291bnRyaWVzIHwgYXN5bmMpIHx8IFtdXCJcbiAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJwaG9uZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L3R1aS10ZXh0ZmllbGQ+XG4gICAgICAgIDxwXG4gICAgICAgICAgICAqbmdJZj1cInN1YnRpdGxlKClcIlxuICAgICAgICAgICAgY2xhc3M9XCJ0ZXh0LWJvZHktcyB0ZXh0LXR1aS10ZXh0LXRlcnRpYXJ5XCJcbiAgICAgICAgPlxuICAgICAgICAgICAge3sgc3VidGl0bGUoKSB9fVxuICAgICAgICA8L3A+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBob25lXCJcbiAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgIC8+XG4gICAgICAgIEBpZiAoc2hvd0hlbHBOb3RpZmljYXRpb24gJiYgcHVzaENvbnRhY3RzKCkpIHtcbiAgICAgICAgICAgIEBmb3IgKG1hbmFnZXIgb2YgcHVzaENvbnRhY3RzKCk7IHRyYWNrIG1hbmFnZXIuaWQpIHtcbiAgICAgICAgICAgICAgICA8dHVpLXB1c2hcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cItCh0LLRj9C20LjRgtC10YHRjCDRgSDQvdCw0LzQuCDQtNC70Y8g0YDQtdGI0LXQvdC40Y8g0LLQvtC30L3QuNC60YjQuNGFINCy0L7Qv9GA0L7RgdC+0LJcIlxuICAgICAgICAgICAgICAgICAgICAoY2xvc2UpPVwiY2xvc2VOb3RpZmljYXRpb24oKVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIXctYXV0b1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8dHVpLWljb24gaWNvbj1cIkB0dWkubWVzc2FnZS1zcXVhcmVcIiAvPlxuICAgICAgICAgICAgICAgICAgICA8c2MtbWFuYWdlci1jYXJkIFttYW5hZ2VyXT1cIm1hbmFnZXJcIiAvPlxuICAgICAgICAgICAgICAgIDwvdHVpLXB1c2g+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICA8L2xhYmVsPlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInNob3dDb2RlRmllbGRzICYmIGZvcm0uZW5hYmxlZCAmJiBwaG9uZUNoZWNrXCI+XG4gICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgKm5nSWY9XCIhbG9hZGluZ0FwcHJvdmVDb2RlICYmIGhhdmVDb2RlKClcIlxuICAgICAgICAgICAgdHVpTGFiZWxcbiAgICAgICAgPlxuICAgICAgICAgICAg0JrQvtC0INC40Lcg0KHQnNChXG4gICAgICAgICAgICA8dHVpLWlucHV0XG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cInJlcXVpcmVkKCkgfHwgc2hvd0NvZGVGaWVsZHNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCa0L7QtCDQuNC3INCh0JzQoVxuICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICB0dWlBdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkTGVnYWN5XG4gICAgICAgICAgICAgICAgICAgIFttYXNraXRvXT1cInZlcmlmaWNhdGlvbkNvZGVNYXNrXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwibmV3LXBhc3N3b3JkXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwidmVyaWZpY2F0aW9uQ29kZVwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG5cbiAgICAgICAgPGRpdlxuICAgICAgICAgICAgKnR1aUxldD1cIiEhbG9hZGluZ0FwcHJvdmVDb2RlIGFzIGxvYWRpbmdBcHByb3ZlQ29kZVwiXG4gICAgICAgICAgICBjbGFzcz1cImZsZXgganVzdGlmeS1jZW50ZXIgZ2FwLTRcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCIhaGF2ZUNvZGUoKVwiXG4gICAgICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VuZENvZGUubmV4dCgpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ0FwcHJvdmVDb2RlIHx8ICFwaG9uZUNoZWNrIHx8IHBob25lQ29udHJvbC5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nQXBwcm92ZUNvZGVcIlxuICAgICAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuc2Muc2VuZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0J/QvtC70YPRh9C40YLRjCDQutC+0LRcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWxvYWRpbmdBcHByb3ZlQ29kZSAmJiAhaGF2ZUNvZGUoKVwiXG4gICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgIFtwc2V1ZG9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFwaG9uZUNoZWNrIHx8IHBob25lQ29udHJvbC5pbnZhbGlkXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwic2V0SGF2ZUNvZGUodHJ1ZSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCjINC80LXQvdGPINC10YHRgtGMINC60L7QtFxuICAgICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnR1aUxldD1cInRpbWVyJCB8IGFzeW5jIGFzIHRpbWVyXCI+XG4gICAgICAgICAgICAgICAgPHR1aS1sb2FkZXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJoYXZlQ29kZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dMb2FkZXJdPVwibG9hZGluZ0FwcHJvdmVDb2RlXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aUxpbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIFtwc2V1ZG9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwibG9hZGluZ0FwcHJvdmVDb2RlIHx8IHRpbWVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbmRDb2RlLm5leHQoKVwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgINCf0L7QstGC0L7RgNC90L4g0L7RgtC/0YDQsNCy0LjRgtGMINC60L7QtFxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwidGltZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiIXRleHQtdHVpLWJhc2UtMDhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICjRh9C10YDQtdC3IHt7IHRpbWVyIH19KVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvdHVpLWxvYWRlcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvZm9ybT5cblxuPG5nLXRlbXBsYXRlICNjaGVja2luZ1Bob25lPlxuICAgIDx0dWktbG9hZGVyXG4gICAgICAgICpuZ0lmPVwiIXBob25lQ2hlY2sgJiYgcGhvbmVDb250cm9sLnZhbGlkXCJcbiAgICAgICAgY2xhc3M9XCJzaXplLTRcIlxuICAgIC8+XG48L25nLXRlbXBsYXRlPlxuIl19
|
@@ -131,6 +131,10 @@ export declare class ScFeedbackFormComponent {
|
|
131
131
|
* @param file Файл, который нужно удалить.
|
132
132
|
*/
|
133
133
|
protected onRemove(file: File): void;
|
134
|
+
/**
|
135
|
+
* Очищает список файлов.
|
136
|
+
*/
|
137
|
+
protected onRemoveAll(): void;
|
134
138
|
/**
|
135
139
|
* Загружает файл в форму обратной связи.
|
136
140
|
*
|
@@ -1093,7 +1093,7 @@ class ScVerificationPhoneCheckFormComponent {
|
|
1093
1093
|
return this.verificationService.getPhoneCheck$(value).pipe(
|
1094
1094
|
// eslint-disable-next-line sonarjs/cognitive-complexity
|
1095
1095
|
map((result) => {
|
1096
|
-
if (this.shouldBeBusy() === undefined && !isNil(this.shouldBeConfirmed()) &&
|
1096
|
+
if (this.shouldBeBusy() === undefined && !isNil(this.shouldBeConfirmed()) && result.isConfirmed !== null) {
|
1097
1097
|
this.isBusyChange.emit(result.isBusy);
|
1098
1098
|
if (!isNil(result.isConfirmed)) {
|
1099
1099
|
this.isConfirmedChange.emit(result.isConfirmed);
|
@@ -6994,6 +6994,7 @@ class ScFeedbackFormComponent {
|
|
6994
6994
|
}
|
6995
6995
|
else {
|
6996
6996
|
this.resetForm();
|
6997
|
+
this.onRemoveAll();
|
6997
6998
|
this.sendSuccess.emit();
|
6998
6999
|
}
|
6999
7000
|
}),
|
@@ -7115,6 +7116,13 @@ class ScFeedbackFormComponent {
|
|
7115
7116
|
this.rejected = this.rejected.filter((rejected) => rejected !== file);
|
7116
7117
|
this.loadedFile.setValue(this.loadedFile.value?.filter((current) => current !== file) ?? []);
|
7117
7118
|
}
|
7119
|
+
/**
|
7120
|
+
* Очищает список файлов.
|
7121
|
+
*/
|
7122
|
+
onRemoveAll() {
|
7123
|
+
this.rejected = [];
|
7124
|
+
this.loadedFile.setValue([]);
|
7125
|
+
}
|
7118
7126
|
/**
|
7119
7127
|
* Загружает файл в форму обратной связи.
|
7120
7128
|
*
|