@snabcentr/client-ui 3.24.0 → 3.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/contacts/new-contact-form/sc-new-contact-form.component.d.ts +5 -0
- package/contacts/sc-contacts.module.d.ts +3 -1
- package/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.d.ts +3 -1
- package/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.d.ts +11 -2
- package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +5 -0
- package/delivery-address/sc-delivery-address.module.d.ts +3 -1
- package/esm2022/auth/sc-sign-in-form/sc-sign-in-form-by-phone/sc-sign-in-form-by-phone.component.mjs +3 -3
- package/esm2022/auth/sign-up-form/sc-sign-up-form.component.mjs +3 -3
- package/esm2022/contacts/new-contact-form/sc-new-contact-form.component.mjs +13 -6
- package/esm2022/contacts/sc-contacts.module.mjs +12 -5
- package/esm2022/contragents/add-contragent-bank-account-dialog/sc-add-contragent-bank-account-dialog.component.mjs +3 -3
- package/esm2022/contragents/add-contragent-dialog/sc-add-contragent-dialog.component.mjs +3 -3
- package/esm2022/contragents/new-contragent-bank-account-form/sc-new-contragent-bank-account-form.component.mjs +13 -5
- package/esm2022/contragents/new-contragent-form/sc-new-contragent-form.component.mjs +3 -3
- package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +16 -9
- package/esm2022/delivery-address/sc-delivery-address.module.mjs +12 -5
- package/esm2022/feedback/feedback-form/sc-feedback-form.component.mjs +15 -5
- package/esm2022/user/update-user-info-dialog/sc-update-user-info-dialog.component.mjs +8 -5
- package/esm2022/user/user-phone-approve-dialog/sc-user-phone-approve-dialog.component.mjs +4 -2
- package/esm2022/verification/sc-verification.module.mjs +3 -13
- package/feedback/feedback-form/sc-feedback-form.component.d.ts +5 -0
- package/fesm2022/snabcentr-client-ui.mjs +97 -69
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/release_notes.tmp +3 -3
@@ -212,11 +212,11 @@ export class ScNewContragentFormComponent {
|
|
212
212
|
return this.locationsService.getCountries$().pipe(map((countries) => countries.find((country) => country.id === countryId)));
|
213
213
|
}
|
214
214
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScNewContragentFormComponent, deps: [{ token: i1.ScReferencesService }, { token: i1.ScLocationsService }, { token: FormGroupDirective, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
215
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScNewContragentFormComponent, selector: "sc-new-contragent-form", inputs: { opfControl: "opfControl" }, ngImport: i0, template: "<div\n [formGroup]=\"form\"\n *ngIf=\"selectOpf$ | async as selectOpf\"\n class=\"flex flex-col gap-3 pb-1\"\n>\n <p class=\"text-lg font-bold\">\u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</p>\n <label tuiLabel>\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-select\n formControlName=\"opf\"\n [valueContent]=\"opfContent\"\n [readOnly]=\"!!opfControl\"\n >\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"opf\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n {{ opfListEnum[selectOpf] === opfListEnum.individual ? '\u0424.\u0418.\u041E.' : '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438' }}\n <tui-input formControlName=\"name\">\n @if (opfListEnum[selectOpf] === opfListEnum.individual) {\n \u0424.\u0418.\u041E.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n } @else {\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] !== opfListEnum.individual) {\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <tui-input formControlName=\"inn\">\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <input\n tuiTextfieldLegacy\n [maskito]=\"innMask(selectOpf)\"\n autocomplete=\"inn\"\n />\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n </tui-input>\n <tui-error\n formControlName=\"inn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <tui-input formControlName=\"okpo\">\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <input\n tuiTextfieldLegacy\n [maskito]=\"okpoMask(selectOpf)\"\n autocomplete=\"okpo\"\n />\n </tui-input>\n <tui-error\n formControlName=\"okpo\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n <label tuiLabel>\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorName\">\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"directorName\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorPosition\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorPosition\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorActsOn\"> \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorActsOn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"legalAddress\">\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n </tui-input>\n <tui-error\n formControlName=\"legalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"postalAddress\">\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n </tui-input>\n <tui-error\n formControlName=\"postalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"actualAddress\">\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n </tui-input>\n <tui-error\n formControlName=\"actualAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <tui-input formControlName=\"kpp\">\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <input\n tuiTextfieldLegacy\n [maskito]=\"kppMask\"\n autocomplete=\"kpp\"\n />\n </tui-input>\n <tui-error\n formControlName=\"kpp\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n }\n @if (opfListEnum[selectOpf] === opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-select\n formControlName=\"registrationCountryId\"\n [valueContent]=\"CountryContent\"\n >\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getCountries$() | async; let index = index\"\n tuiOption\n [value]=\"item.id\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #CountryContent\n let-data\n >\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"registrationCountryId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"registrationNumber\"> \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"registrationNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"taxNumber\"> \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"taxNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n</div>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i5.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { kind: "directive", type: i5.TuiSelectDirective, selector: "tui-select" }, { kind: "component", type: i6.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "component", type: i4.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i7.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i4.TuiOption, selector: "button[tuiOption]:not([new]), a[tuiOption]:not([new]), label[tuiOption]:not([new])", inputs: ["disabled", "value"] }, { kind: "directive", type: i4.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i5.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i5.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i8.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i9.ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"], outputs: ["selectedClick"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
215
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ScNewContragentFormComponent, selector: "sc-new-contragent-form", inputs: { opfControl: "opfControl" }, ngImport: i0, template: "<div\n [formGroup]=\"form\"\n *ngIf=\"selectOpf$ | async as selectOpf\"\n class=\"flex flex-col gap-3 pb-1\"\n>\n <p class=\"text-lg font-bold\">\u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</p>\n <label tuiLabel>\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-select\n formControlName=\"opf\"\n [valueContent]=\"opfContent\"\n [readOnly]=\"!!opfControl\"\n >\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"opf\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n {{ opfListEnum[selectOpf] === opfListEnum.individual ? '\u0424.\u0418.\u041E.' : '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438' }}\n <tui-input formControlName=\"name\">\n @if (opfListEnum[selectOpf] === opfListEnum.individual || opfListEnum[selectOpf] === opfListEnum.non_resident_legal) {\n \u0424.\u0418.\u041E.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n } @else {\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] !== opfListEnum.individual) {\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <tui-input formControlName=\"inn\">\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <input\n tuiTextfieldLegacy\n [maskito]=\"innMask(selectOpf)\"\n autocomplete=\"inn\"\n />\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n </tui-input>\n <tui-error\n formControlName=\"inn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <tui-input formControlName=\"okpo\">\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <input\n tuiTextfieldLegacy\n [maskito]=\"okpoMask(selectOpf)\"\n autocomplete=\"okpo\"\n />\n </tui-input>\n <tui-error\n formControlName=\"okpo\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n <label tuiLabel>\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorName\">\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"directorName\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorPosition\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorPosition\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorActsOn\"> \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorActsOn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"legalAddress\">\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"legalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"postalAddress\">\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"postalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"actualAddress\">\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"actualAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <tui-input formControlName=\"kpp\">\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <input\n tuiTextfieldLegacy\n [maskito]=\"kppMask\"\n autocomplete=\"kpp\"\n />\n </tui-input>\n <tui-error\n formControlName=\"kpp\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n }\n @if (opfListEnum[selectOpf] === opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-select\n formControlName=\"registrationCountryId\"\n [valueContent]=\"CountryContent\"\n >\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getCountries$() | async; let index = index\"\n tuiOption\n [value]=\"item.id\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #CountryContent\n let-data\n >\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"registrationCountryId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"registrationNumber\"> \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"registrationNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"taxNumber\"> \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"taxNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n</div>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"], dependencies: [{ kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i4.TuiError, selector: "tui-error", inputs: ["error"] }, { kind: "component", type: i5.TuiSelectComponent, selector: "tui-select", inputs: ["stringify", "identityMatcher", "valueContent"] }, { kind: "directive", type: i5.TuiSelectDirective, selector: "tui-select" }, { kind: "component", type: i6.TuiTextfieldComponent, selector: "input[tuiTextfieldLegacy], textarea[tuiTextfieldLegacy]" }, { kind: "component", type: i4.TuiDataListComponent, selector: "tui-data-list", inputs: ["emptyContent", "size"] }, { kind: "directive", type: i7.TuiDataListDirective, selector: "ng-template[tuiDataList]" }, { kind: "component", type: i4.TuiOption, selector: "button[tuiOption]:not([new]), a[tuiOption]:not([new]), label[tuiOption]:not([new])", inputs: ["disabled", "value"] }, { kind: "directive", type: i4.TuiLabel, selector: "label[tuiLabel]" }, { kind: "component", type: i5.TuiInputComponent, selector: "tui-input" }, { kind: "directive", type: i5.TuiInputDirective, selector: "tui-input" }, { kind: "directive", type: i8.MaskitoDirective, selector: "[maskito]", inputs: ["maskito", "maskitoElement"] }, { kind: "component", type: i9.ScSuggestionFieldComponent, selector: "sc-suggestion-field", inputs: ["type"], outputs: ["selectedClick"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.TuiFieldErrorPipe, name: "tuiFieldError" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
216
216
|
}
|
217
217
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ScNewContragentFormComponent, decorators: [{
|
218
218
|
type: Component,
|
219
|
-
args: [{ selector: 'sc-new-contragent-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [formGroup]=\"form\"\n *ngIf=\"selectOpf$ | async as selectOpf\"\n class=\"flex flex-col gap-3 pb-1\"\n>\n <p class=\"text-lg font-bold\">\u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</p>\n <label tuiLabel>\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-select\n formControlName=\"opf\"\n [valueContent]=\"opfContent\"\n [readOnly]=\"!!opfControl\"\n >\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"opf\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n {{ opfListEnum[selectOpf] === opfListEnum.individual ? '\u0424.\u0418.\u041E.' : '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438' }}\n <tui-input formControlName=\"name\">\n @if (opfListEnum[selectOpf] === opfListEnum.individual) {\n \u0424.\u0418.\u041E.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n } @else {\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] !== opfListEnum.individual) {\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <tui-input formControlName=\"inn\">\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <input\n tuiTextfieldLegacy\n [maskito]=\"innMask(selectOpf)\"\n autocomplete=\"inn\"\n />\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n </tui-input>\n <tui-error\n formControlName=\"inn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <tui-input formControlName=\"okpo\">\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <input\n tuiTextfieldLegacy\n [maskito]=\"okpoMask(selectOpf)\"\n autocomplete=\"okpo\"\n />\n </tui-input>\n <tui-error\n formControlName=\"okpo\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n <label tuiLabel>\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorName\">\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"directorName\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorPosition\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorPosition\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorActsOn\"> \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorActsOn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"legalAddress\">\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n </tui-input>\n <tui-error\n formControlName=\"legalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"postalAddress\">\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n </tui-input>\n <tui-error\n formControlName=\"postalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"actualAddress\">\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n </tui-input>\n <tui-error\n formControlName=\"actualAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <tui-input formControlName=\"kpp\">\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <input\n tuiTextfieldLegacy\n [maskito]=\"kppMask\"\n autocomplete=\"kpp\"\n />\n </tui-input>\n <tui-error\n formControlName=\"kpp\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n }\n @if (opfListEnum[selectOpf] === opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-select\n formControlName=\"registrationCountryId\"\n [valueContent]=\"CountryContent\"\n >\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getCountries$() | async; let index = index\"\n tuiOption\n [value]=\"item.id\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #CountryContent\n let-data\n >\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"registrationCountryId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"registrationNumber\"> \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"registrationNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"taxNumber\"> \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"taxNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n</div>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"] }]
|
219
|
+
args: [{ selector: 'sc-new-contragent-form', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n [formGroup]=\"form\"\n *ngIf=\"selectOpf$ | async as selectOpf\"\n class=\"flex flex-col gap-3 pb-1\"\n>\n <p class=\"text-lg font-bold\">\u041E\u0431\u0449\u0438\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430</p>\n <label tuiLabel>\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-select\n formControlName=\"opf\"\n [valueContent]=\"opfContent\"\n [readOnly]=\"!!opfControl\"\n >\n \u0422\u0438\u043F \u043A\u043E\u043D\u0442\u0440\u0430\u0433\u0435\u043D\u0442\u0430 (\u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043F\u0440\u0430\u0432\u043E\u0432\u0430\u044F \u0444\u043E\u0440\u043C\u0430)\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getOpf$() | async; let index = index\"\n tuiOption\n [value]=\"item.slug\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #opfContent\n let-data\n >\n <div>{{ (getOpfBySlug$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"opf\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n {{ opfListEnum[selectOpf] === opfListEnum.individual ? '\u0424.\u0418.\u041E.' : '\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438' }}\n <tui-input formControlName=\"name\">\n @if (opfListEnum[selectOpf] === opfListEnum.individual || opfListEnum[selectOpf] === opfListEnum.non_resident_legal) {\n \u0424.\u0418.\u041E.\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n } @else {\n \u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"name\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] !== opfListEnum.individual) {\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <tui-input formControlName=\"inn\">\n \u0418\u041D\u041D \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438 \u0438\u043B\u0438 \u0418\u041F\n <input\n tuiTextfieldLegacy\n [maskito]=\"innMask(selectOpf)\"\n autocomplete=\"inn\"\n />\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.organization\"\n />\n </tui-input>\n <tui-error\n formControlName=\"inn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <tui-input formControlName=\"okpo\">\n \u041A\u043E\u0434 \u041E\u041A\u041F\u041E\n <input\n tuiTextfieldLegacy\n [maskito]=\"okpoMask(selectOpf)\"\n autocomplete=\"okpo\"\n />\n </tui-input>\n <tui-error\n formControlName=\"okpo\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n <label tuiLabel>\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorName\">\n \u0424.\u0418.\u041E. \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.fio\"\n />\n </tui-input>\n <tui-error\n formControlName=\"directorName\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorPosition\"> \u0414\u043E\u043B\u0436\u043D\u043E\u0441\u0442\u044C \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorPosition\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F\n <tui-input formControlName=\"directorActsOn\"> \u041E\u0441\u043D\u043E\u0432\u0430\u043D\u0438\u044F \u043F\u043E\u043B\u043D\u043E\u043C\u043E\u0447\u0438\u0439 \u0440\u0443\u043A\u043E\u0432\u043E\u0434\u0438\u0442\u0435\u043B\u044F </tui-input>\n <tui-error\n formControlName=\"directorActsOn\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"legalAddress\">\n \u042E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"legalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"postalAddress\">\n \u041F\u043E\u0447\u0442\u043E\u0432\u044B\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"postalAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n <tui-input formControlName=\"actualAddress\">\n \u0424\u0430\u043A\u0442\u0438\u0447\u0435\u0441\u043A\u0438\u0439 \u0430\u0434\u0440\u0435\u0441\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.address\"\n />\n }\n </tui-input>\n <tui-error\n formControlName=\"actualAddress\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n @if (opfListEnum[selectOpf] !== opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <tui-input formControlName=\"kpp\">\n \u041A\u041F\u041F \u043E\u0440\u0433\u0430\u043D\u0438\u0437\u0430\u0446\u0438\u0438\n <input\n tuiTextfieldLegacy\n [maskito]=\"kppMask\"\n autocomplete=\"kpp\"\n />\n </tui-input>\n <tui-error\n formControlName=\"kpp\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n }\n @if (opfListEnum[selectOpf] === opfListEnum.non_resident_legal) {\n <label tuiLabel>\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-select\n formControlName=\"registrationCountryId\"\n [valueContent]=\"CountryContent\"\n >\n \u0421\u0442\u0440\u0430\u043D\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u0438 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-data-list *tuiDataList>\n <button\n *ngFor=\"let item of getCountries$() | async; let index = index\"\n tuiOption\n [value]=\"item.id\"\n >\n {{ item.name }}\n </button>\n </tui-data-list>\n </tui-select>\n <ng-template\n #CountryContent\n let-data\n >\n <div>{{ (getCountriesById$(data) | async)?.name }}</div>\n </ng-template>\n <tui-error\n formControlName=\"registrationCountryId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"registrationNumber\"> \u0420\u0435\u0433\u0438\u0441\u0442\u0440\u0430\u0446\u0438\u043E\u043D\u043D\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"registrationNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n <label tuiLabel>\n \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430\n <tui-input formControlName=\"taxNumber\"> \u041D\u0430\u043B\u043E\u0433\u043E\u0432\u044B\u0439 \u043D\u043E\u043C\u0435\u0440 \u044E\u0440\u0438\u0434\u0438\u0447\u0435\u0441\u043A\u043E\u0433\u043E \u043B\u0438\u0446\u0430 </tui-input>\n <tui-error\n formControlName=\"taxNumber\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n }\n</div>\n", styles: ["tui-carousel{--tui-carousel-padding: .5rem}\n"] }]
|
220
220
|
}], ctorParameters: () => [{ type: i1.ScReferencesService }, { type: i1.ScLocationsService }, { type: i2.FormGroupDirective, decorators: [{
|
221
221
|
type: SkipSelf
|
222
222
|
}, {
|
@@ -225,4 +225,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
225
225
|
}] }], propDecorators: { opfControl: [{
|
226
226
|
type: Input
|
227
227
|
}] } });
|
228
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbmV3LWNvbnRyYWdlbnQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY29udHJhZ2VudHMvbmV3LWNvbnRyYWdlbnQtZm9ybS9zYy1uZXctY29udHJhZ2VudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9uZXctY29udHJhZ2VudC1mb3JtL3NjLW5ldy1jb250cmFnZW50LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBRTdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBcUQsaUJBQWlCLEVBQXNCLFNBQVMsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNsSyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxjQUFjLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FB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a0I7bUdBN0pyQiw0QkFBNEIsb0dDdEJ6QyxrOVdBdU9BOzs0RkRqTmEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTTs7MEJBOEoxQyxRQUFROzswQkFDUixNQUFNOzJCQUFDLGtCQUFrQjt5Q0F4SnZCLFVBQVU7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzLEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBJbmplY3QsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTY0lDb3VudHJ5LCBTY0lSZWZlcmVuY2VzVHlwZXMsIFNjSVNhbGVzRGlyZWN0aW9uLCBTY0lTdWdnZXN0aW9uVHlwZSwgU2NMb2NhdGlvbnNTZXJ2aWNlLCBTY09wZkxpc3QsIFNjUmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IHR1aUNvbnRyb2xWYWx1ZSwgdHVpSXNQcmVzZW50IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0JhbmtBY2NvdW50Rm9ybUdyb3VwLCBTY0NvbnRhY3RGb3JtR3JvdXAgfSBmcm9tICcuLi8uLi9hdXRoL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgc2NFbnRyZXByZW5ldXJJbm5NYXNrLCBzY0VudHJlcHJlbmV1ck9rcG9NYXNrLCBzY0twcE1hc2ssIHNjTGVnYWxJbm5NYXNrLCBzY0xlZ2FsT2twb01hc2sgfSBmcm9tICcuLi8uLi9tYXNrcyc7XG5pbXBvcnQgeyBzY0JpY1ZhbGlkYXRvciwgc2NDb3JyZXNwb25kZW50QWNjb3VudFZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMnO1xuXG4vKipcbiAqINCk0L7RgNC80LAg0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtCz0L4g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1uZXctY29udHJhZ2VudC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtbmV3LWNvbnRyYWdlbnQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2MtbmV3LWNvbnRyYWdlbnQtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY05ld0NvbnRyYWdlbnRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqINCf0L7Qu9C1INCy0YvQsdC+0YDQsCDQvtGA0LPQsNC90LjQt9Cw0YbQuNC+0L3QvdC+LdC/0YDQsNCy0L7QstC+0Lkg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvcGZDb250cm9sPzogRm9ybUNvbnRyb2w8a2V5b2YgdHlwZW9mIFNjT3BmTGlzdCB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LTQsNC90L3Ri9GFINC+INC60L7QvdGC0YDQsNCz0LXQvdGC0LUgLSDQuNC90LTQuNCy0LjQtNGD0LDQu9GM0L3QvtC8INC/0YDQtdC00L/RgNC40L3QuNC80LDRgtC10LvQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGVudHJlcHJlbmV1ckdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGlubjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBva3BvOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGRpcmVjdG9yTmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBkaXJlY3RvclBvc2l0aW9uOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGRpcmVjdG9yQWN0c09uOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGxlZ2FsQWRkcmVzczogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBwb3N0YWxBZGRyZXNzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGFjdHVhbEFkZHJlc3M6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgYmFua0FjY291bnRzOiBuZXcgRm9ybUFycmF5PFNjQmFua0FjY291bnRGb3JtR3JvdXA+KFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgICAgICAgICBiYW5rTmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgICAgICBiaWM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOSksIHNjQmljVmFsaWRhdG9yXSksXG4gICAgICAgICAgICAgICAgICAgIGFjY291bnROdW1iZXI6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMjApXSksXG4gICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRlbnRBY2NvdW50OiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIwKSwgc2NDb3JyZXNwb25kZW50QWNjb3VudFZhbGlkYXRvcl0pLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeUlkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICApLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LTQsNC90L3Ri9GFINC+INC60L7QvdGC0YDQsNCz0LXQvdGC0LUgLSDRjtGA0LjQtNC40YfQtdGB0LrQvtC8INC70LjRhtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbGVnYWxHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBrcHA6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOSldKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INC00LDQvdC90YvRhSDQviDQutC+0L3RgtGA0LDQs9C10L3RgtC1IC0g0Y7RgNC40LTQuNGH0LXRgdC60L7QvCDQu9C40YbQtSDQvdC10YDQtdC30LjQtNC10L3RgtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbm9uUmVzaWRlbnRMZWdhbEdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIHJlZ2lzdHJhdGlvbkNvdW50cnlJZDogbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICByZWdpc3RyYXRpb25OdW1iZXI6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgdGF4TnVtYmVyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQpNC+0YDQvNCwINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0LPQviDQutC+0L3RgtGA0LDQs9C10L3RgtCwINGE0LjQt9C40YfQtdGB0LrQvtCz0L4g0LvQuNGG0LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBvcGY6IG5ldyBGb3JtQ29udHJvbDxrZXlvZiB0eXBlb2YgU2NPcGZMaXN0PignaW5kaXZpZHVhbCcsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBzYWxlc0RpcmVjdGlvbklkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGNvbnRhY3RzOiBuZXcgRm9ybUFycmF5PFNjQ29udGFjdEZvcm1Hcm91cD4oXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTIpXSksXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5lbWFpbCksXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICApLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INGC0LjQv9C+0LIg0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzdWdnZXN0aW9uVHlwZTogdHlwZW9mIFNjSVN1Z2dlc3Rpb25UeXBlID0gU2NJU3VnZ2VzdGlvblR5cGU7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LLRi9Cx0L7RgNCwINCe0J/QpC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0T3BmJDogT2JzZXJ2YWJsZTxrZXlvZiB0eXBlb2YgU2NPcGZMaXN0PiA9IHR1aUNvbnRyb2xWYWx1ZTxrZXlvZiB0eXBlb2YgU2NPcGZMaXN0Pih0aGlzLmZvcm0uY29udHJvbHMub3BmKS5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YXAoKG9wZikgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoeyAuLi50aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLCAuLi50aGlzLmxlZ2FsR3JvdXAuY29udHJvbHMsIC4uLnRoaXMubm9uUmVzaWRlbnRMZWdhbEdyb3VwLmNvbnRyb2xzIH0pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8uZGlzYWJsZSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFkZENvbnRyb2xzID0gKGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoeyAuLi5mb3JtR3JvdXAuY29udHJvbHMgfSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoa2V5KT8uZW5hYmxlKCk7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZvcm0gYXMgRm9ybUdyb3VwKS5zZXRDb250cm9sPHR5cGVvZiBrZXk+KGtleSwgZm9ybUdyb3VwLmdldChrZXkpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgaWYgKFNjT3BmTGlzdFtvcGZdID4gU2NPcGZMaXN0LmluZGl2aWR1YWwpIHtcbiAgICAgICAgICAgICAgICBhZGRDb250cm9scyh0aGlzLmVudHJlcHJlbmV1ckdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLmlubi5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMildKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLm9rcG8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgaWYgKFNjT3BmTGlzdFtvcGZdID4gU2NPcGZMaXN0LmVudHJlcHJlbmV1cikge1xuICAgICAgICAgICAgICAgIGFkZENvbnRyb2xzKHRoaXMubGVnYWxHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyZXByZW5ldXJHcm91cC5jb250cm9scy5pbm4uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyZXByZW5ldXJHcm91cC5jb250cm9scy5va3BvLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgaWYgKFNjT3BmTGlzdFtvcGZdID4gU2NPcGZMaXN0LmxlZ2FsKSB7XG4gICAgICAgICAgICAgICAgYWRkQ29udHJvbHModGhpcy5ub25SZXNpZGVudExlZ2FsR3JvdXApO1xuICAgICAgICAgICAgICAgIHRoaXMubGVnYWxHcm91cC5jb250cm9scy5rcHAuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmVwcmVuZXVyR3JvdXAuY29udHJvbHMuaW5uLmRpc2FibGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLm9rcG8uZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0YHQutCwINC/0L7Qu9GPINCy0LLQvtC00LAg0JrQn9CfLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBrcHBNYXNrID0gc2NLcHBNYXNrO1xuXG4gICAgLyoqXG4gICAgICog0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INC+0YDQs9Cw0L3QuNC30LDRhtC40L7QvdC90L4t0L/RgNCw0LLQvtCy0YvRhSDRhNC+0YDQvC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3BmTGlzdEVudW06IHR5cGVvZiBTY09wZkxpc3QgPSBTY09wZkxpc3Q7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0LTQu9GPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LPQviDRg9C/0YDQsNCy0LvQtdC90LjRjyDRg9C90LjRh9GC0L7QttC10L3QuNC10Lwg0LfQsNCy0LjRgdC40LzQvtGB0YLQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdC60LAg0L/QvtC70Y8g0LLQstC+0LTQsCDQmNCd0J0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3BmINCe0YDQs9Cw0L3QuNC30LDRhtC40L7QvdC90L4t0L/RgNCw0LLQvtCy0LDRjyDRhNC+0YDQvNCwLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgIHB1YmxpYyByZWFkb25seSBpbm5NYXNrID0gKG9wZjoga2V5b2YgdHlwZW9mIFNjT3BmTGlzdCkgPT4gKFNjT3BmTGlzdFtvcGZdID4gU2NPcGZMaXN0LmVudHJlcHJlbmV1ciA/IHNjTGVnYWxJbm5NYXNrIDogc2NFbnRyZXByZW5ldXJJbm5NYXNrKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdC60LAg0L/QvtC70Y8g0LLQstC+0LTQsCDQntCa0J/Qni5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcGYg0J7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQsNGPINGE0L7RgNC80LAuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgcHVibGljIHJlYWRvbmx5IG9rcG9NYXNrID0gKG9wZjoga2V5b2YgdHlwZW9mIFNjT3BmTGlzdCkgPT4gKFNjT3BmTGlzdFtvcGZdID4gU2NPcGZMaXN0LmVudHJlcHJlbmV1ciA/IHNjTGVnYWxPa3BvTWFzayA6IHNjRW50cmVwcmVuZXVyT2twb01hc2spO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY05ld0NvbnRyYWdlbnRGb3JtQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VzU2VydmljZSDQodC10YDQstC40YEg0YHQv9GA0LDQstC+0YfQvdC40LrQvtCyLlxuICAgICAqIEBwYXJhbSBsb2NhdGlvbnNTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQvtCyINGB0YLRgNCw0L0sINGA0LXQs9C40L7QvdC+0LIsINCz0L7RgNC+0LTQvtCyLlxuICAgICAqIEBwYXJhbSBmb3JtR3JvdXBEaXJlY3RpdmUg0JTQuNGA0LXQutGC0LjQstCwIGMgYEZvcm1Hcm91cGAg0LjQtyBET00uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlZmVyZW5jZXNTZXJ2aWNlOiBTY1JlZmVyZW5jZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uc1NlcnZpY2U6IFNjTG9jYXRpb25zU2VydmljZSxcbiAgICAgICAgQFNraXBTZWxmKClcbiAgICAgICAgQEluamVjdChGb3JtR3JvdXBEaXJlY3RpdmUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUdyb3VwRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmUgfCBudWxsXG4gICAgKSB7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlc1NlcnZpY2UuZGlyZWN0aW9ucyRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZGlyZWN0aW9ucykgPT4gZGlyZWN0aW9ucy5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGlyZWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgc2FsZXNEaXJlY3Rpb25JZDogZGlyZWN0aW9uc1swXS5pZCB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCg0L7QtNC40YLQtdC70YzRgdC60LDRjyBgRm9ybUdyb3VwYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHBhcmVudEZvcm0oKTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwRGlyZWN0aXZlPy5mb3JtO1xuICAgIH1cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJlbnRGb3JtPy5zZXRDb250cm9sKCdjb250cmFnZW50JywgdGhpcy5mb3JtKTtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50Rm9ybSAmJiB0aGlzLm9wZkNvbnRyb2wpIHtcbiAgICAgICAgICAgIHR1aUNvbnRyb2xWYWx1ZTxrZXlvZiB0eXBlb2YgU2NPcGZMaXN0IHwgbnVsbD4odGhpcy5vcGZDb250cm9sKVxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcih0dWlJc1ByZXNlbnQpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChvcGYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm9wZi5wYXRjaFZhbHVlKG9wZik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFyZW50Rm9ybT8ucmVtb3ZlQ29udHJvbCgnY29udHJhZ2VudCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC/0LjRgdC60LAg0L3QsNC/0YDQsNCy0LvQtdC90LjQuSDQv9GA0L7QtNCw0LYuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGlyZWN0aW9uSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsNC/0YDQsNCy0LvQtdC90LjRjyDQv9GA0L7QtNCw0LYuXG4gICAgICovXG4gICAgcHVibGljIGdldERpcmVjdGlvbkJ5SWQkKGRpcmVjdGlvbklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSVNhbGVzRGlyZWN0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldERpcmVjdGlvbkJ5SWQkKGRpcmVjdGlvbklkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQvtC6INC+0YDQs9Cw0L3QuNC30LDRhtC40L7QvdC90L4t0L/RgNCw0LLQvtCy0YvRhSDRhNC+0YDQvC4uXG4gICAgICovXG4gICAgcHVibGljIGdldE9wZiQoKTogT2JzZXJ2YWJsZTxBcnJheTxTY0lSZWZlcmVuY2VzVHlwZXM8U2NPcGZMaXN0LCB0eXBlb2YgU2NPcGZMaXN0Pj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2Uub3BmJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQvtC5INGE0L7RgNC80YssINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQuSDRgdC40LzQstC+0LvRjNC90L7QvNGDINC+0LHQvtC30L3QsNGH0LXQvdC40Y4gKHNsdWcpINC90LAg0LLRhdC+0LTQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzbHVnINCh0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPcGZCeVNsdWckKHNsdWc6IGtleW9mIHR5cGVvZiBTY09wZkxpc3QpOiBPYnNlcnZhYmxlPFNjSVJlZmVyZW5jZXNUeXBlczxTY09wZkxpc3QsIHR5cGVvZiBTY09wZkxpc3Q+IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldE9wZkJ5U2x1ZyQoc2x1Zyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0LrQsCDRgdGC0YDQsNC9XG4gICAgICovXG4gICAgcHVibGljIGdldENvdW50cmllcyQoKTogT2JzZXJ2YWJsZTxTY0lDb3VudHJ5W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb25zU2VydmljZS5nZXRDb3VudHJpZXMkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0YLRgNCw0L3RiyDQv9C+INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY291bnRyeUlkIOKAlCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgdGC0YDQsNC90YsuXG4gICAgICovXG4gICAgcHVibGljIGdldENvdW50cmllc0J5SWQkKGNvdW50cnlJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxTY0lDb3VudHJ5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2F0aW9uc1NlcnZpY2UuZ2V0Q291bnRyaWVzJCgpLnBpcGUobWFwKChjb3VudHJpZXMpID0+IGNvdW50cmllcy5maW5kKChjb3VudHJ5KSA9PiBjb3VudHJ5LmlkID09PSBjb3VudHJ5SWQpKSk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKm5nSWY9XCJzZWxlY3RPcGYkIHwgYXN5bmMgYXMgc2VsZWN0T3BmXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTMgcGItMVwiXG4+XG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZFwiPtCe0LHRidC40LUg0LTQsNC90L3Ri9C1INC60L7QvdGC0YDQsNCz0LXQvdGC0LA8L3A+XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICDQotC40L8g0LrQvtC90YLRgNCw0LPQtdC90YLQsCAo0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQsNGPINGE0L7RgNC80LApXG4gICAgICAgIDx0dWktc2VsZWN0XG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvcGZcIlxuICAgICAgICAgICAgW3ZhbHVlQ29udGVudF09XCJvcGZDb250ZW50XCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCIhIW9wZkNvbnRyb2xcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQotC40L8g0LrQvtC90YLRgNCw0LPQtdC90YLQsCAo0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQsNGPINGE0L7RgNC80LApXG4gICAgICAgICAgICA8dHVpLWRhdGEtbGlzdCAqdHVpRGF0YUxpc3Q+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRPcGYkKCkgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0uc2x1Z1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdHVpLWRhdGEtbGlzdD5cbiAgICAgICAgPC90dWktc2VsZWN0PlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNvcGZDb250ZW50XG4gICAgICAgICAgICBsZXQtZGF0YVxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2Pnt7IChnZXRPcGZCeVNsdWckKGRhdGEpIHwgYXN5bmMpPy5uYW1lIH19PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9wZlwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgIDwvbGFiZWw+XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICB7eyBvcGZMaXN0RW51bVtzZWxlY3RPcGZdID09PSBvcGZMaXN0RW51bS5pbmRpdmlkdWFsID8gJ9CkLtCYLtCeLicgOiAn0J3QsNC30LLQsNC90LjQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4JyB9fVxuICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cbiAgICAgICAgICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSA9PT0gb3BmTGlzdEVudW0uaW5kaXZpZHVhbCkge1xuICAgICAgICAgICAgICAgINCkLtCYLtCeLlxuICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5maW9cIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICDQndCw0LfQstCw0L3QuNC1INC+0YDQs9Cw0L3QuNC30LDRhtC40LhcbiAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUub3JnYW5pemF0aW9uXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibmFtZVwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgIDwvbGFiZWw+XG4gICAgQGlmIChvcGZMaXN0RW51bVtzZWxlY3RPcGZdICE9PSBvcGZMaXN0RW51bS5pbmRpdmlkdWFsKSB7XG4gICAgICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSAhPT0gb3BmTGlzdEVudW0ubm9uX3Jlc2lkZW50X2xlZ2FsKSB7XG4gICAgICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICAgICAg0JjQndCdINC+0YDQs9Cw0L3QuNC30LDRhtC40Lgg0LjQu9C4INCY0J9cbiAgICAgICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImlublwiPlxuICAgICAgICAgICAgICAgICAgICDQmNCd0J0g0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQuNC70Lgg0JjQn1xuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aVRleHRmaWVsZExlZ2FjeVxuICAgICAgICAgICAgICAgICAgICAgICAgW21hc2tpdG9dPVwiaW5uTWFzayhzZWxlY3RPcGYpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cImlublwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxzYy1zdWdnZXN0aW9uLWZpZWxkXG4gICAgICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLm9yZ2FuaXphdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJpbm5cIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAgICAgINCa0L7QtCDQntCa0J/QnlxuICAgICAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwib2twb1wiPlxuICAgICAgICAgICAgICAgICAgICDQmtC+0LQg0J7QmtCf0J5cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlUZXh0ZmllbGRMZWdhY3lcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXNraXRvXT1cIm9rcG9NYXNrKHNlbGVjdE9wZilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwib2twb1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJva3BvXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgfVxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQpC7QmC7Qni4g0YDRg9C60L7QstC+0LTQuNGC0LXQu9GPXG4gICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImRpcmVjdG9yTmFtZVwiPlxuICAgICAgICAgICAgICAgINCkLtCYLtCeLiDRgNGD0LrQvtCy0L7QtNC40YLQtdC70Y9cbiAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuZmlvXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlyZWN0b3JOYW1lXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0JTQvtC70LbQvdC+0YHRgtGMINGA0YPQutC+0LLQvtC00LjRgtC10LvRj1xuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkaXJlY3RvclBvc2l0aW9uXCI+INCU0L7Qu9C20L3QvtGB0YLRjCDRgNGD0LrQvtCy0L7QtNC40YLQtdC70Y8gPC90dWktaW5wdXQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlyZWN0b3JQb3NpdGlvblwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCe0YHQvdC+0LLQsNC90LjRjyDQv9C+0LvQvdC+0LzQvtGH0LjQuSDRgNGD0LrQvtCy0L7QtNC40YLQtdC70Y9cbiAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGlyZWN0b3JBY3RzT25cIj4g0J7RgdC90L7QstCw0L3QuNGPINC/0L7Qu9C90L7QvNC+0YfQuNC5INGA0YPQutC+0LLQvtC00LjRgtC10LvRjyA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJkaXJlY3RvckFjdHNPblwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCu0YDQuNC00LjRh9C10YHQutC40Lkg0LDQtNGA0LXRgVxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJsZWdhbEFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICDQrtGA0LjQtNC40YfQtdGB0LrQuNC5INCw0LTRgNC10YFcbiAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImxlZ2FsQWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCf0L7Rh9GC0L7QstGL0Lkg0LDQtNGA0LXRgVxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwb3N0YWxBZGRyZXNzXCI+XG4gICAgICAgICAgICAgICAg0J/QvtGH0YLQvtCy0YvQuSDQsNC00YDQtdGBXG4gICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmFkZHJlc3NcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwb3N0YWxBZGRyZXNzXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0KTQsNC60YLQuNGH0LXRgdC60LjQuSDQsNC00YDQtdGBXG4gICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImFjdHVhbEFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICDQpNCw0LrRgtC40YfQtdGB0LrQuNC5INCw0LTRgNC10YFcbiAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFjdHVhbEFkZHJlc3NcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICBAaWYgKG9wZkxpc3RFbnVtW3NlbGVjdE9wZl0gIT09IG9wZkxpc3RFbnVtLm5vbl9yZXNpZGVudF9sZWdhbCkge1xuICAgICAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAgICAgINCa0J/QnyDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4XG4gICAgICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJrcHBcIj5cbiAgICAgICAgICAgICAgICAgICAg0JrQn9CfINC+0YDQs9Cw0L3QuNC30LDRhtC40LhcbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlUZXh0ZmllbGRMZWdhY3lcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXNraXRvXT1cImtwcE1hc2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlPVwia3BwXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImtwcFwiXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIH1cbiAgICB9XG4gICAgQGlmIChvcGZMaXN0RW51bVtzZWxlY3RPcGZdID09PSBvcGZMaXN0RW51bS5ub25fcmVzaWRlbnRfbGVnYWwpIHtcbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0KHRgtGA0LDQvdCwINGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwXG4gICAgICAgICAgICA8dHVpLXNlbGVjdFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdHJhdGlvbkNvdW50cnlJZFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlQ29udGVudF09XCJDb3VudHJ5Q29udGVudFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0KHRgtGA0LDQvdCwINGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwXG4gICAgICAgICAgICAgICAgPHR1aS1kYXRhLWxpc3QgKnR1aURhdGFMaXN0PlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRDb3VudHJpZXMkKCkgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiaXRlbS5pZFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7IGl0ZW0ubmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L3R1aS1kYXRhLWxpc3Q+XG4gICAgICAgICAgICA8L3R1aS1zZWxlY3Q+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICAgICAjQ291bnRyeUNvbnRlbnRcbiAgICAgICAgICAgICAgICBsZXQtZGF0YVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxkaXY+e3sgKGdldENvdW50cmllc0J5SWQkKGRhdGEpIHwgYXN5bmMpPy5uYW1lIH19PC9kaXY+XG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdHJhdGlvbkNvdW50cnlJZFwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCg0LXQs9C40YHRgtGA0LDRhtC40L7QvdC90YvQuSDQvdC+0LzQtdGAINGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsFxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJyZWdpc3RyYXRpb25OdW1iZXJcIj4g0KDQtdCz0LjRgdGC0YDQsNGG0LjQvtC90L3Ri9C5INC90L7QvNC10YAg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdHJhdGlvbk51bWJlclwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCd0LDQu9C+0LPQvtCy0YvQuSDQvdC+0LzQtdGAINGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsFxuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJ0YXhOdW1iZXJcIj4g0J3QsNC70L7Qs9C+0LLRi9C5INC90L7QvNC10YAg0Y7RgNC40LTQuNGH0LXRgdC60L7Qs9C+INC70LjRhtCwIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInRheE51bWJlclwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgfVxuPC9kaXY+XG4iXX0=
|
228
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtbmV3LWNvbnRyYWdlbnQtZm9ybS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY29udHJhZ2VudHMvbmV3LWNvbnRyYWdlbnQtZm9ybS9zYy1uZXctY29udHJhZ2VudC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jb250cmFnZW50cy9uZXctY29udHJhZ2VudC1mb3JtL3NjLW5ldy1jb250cmFnZW50LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsNkVBQTZFO0FBRTdFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkksT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDaEUsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLGtCQUFrQixFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBcUQsaUJBQWlCLEVBQXNCLFNBQVMsRUFBdUIsTUFBTSx3QkFBd0IsQ0FBQztBQUNsSyxPQUFPLEVBQUUsZUFBZSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFHMUUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLHNCQUFzQixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hILE9BQU8sRUFBRSxjQUFjLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQzs7Ozs7Ozs7Ozs7O0FB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a0I7bUdBN0pyQiw0QkFBNEIsb0dDdEJ6QyxpM1hBNk9BOzs0RkR2TmEsNEJBQTRCO2tCQU54QyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTTs7MEJBOEoxQyxRQUFROzswQkFDUixNQUFNOzJCQUFDLGtCQUFrQjt5Q0F4SnZCLFVBQVU7c0JBRGhCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzLEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBEZXN0cm95UmVmLCBJbmplY3QsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBTa2lwU2VsZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdGFrZVVudGlsRGVzdHJveWVkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUFycmF5LCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBGb3JtR3JvdXBEaXJlY3RpdmUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBTY0lDb3VudHJ5LCBTY0lSZWZlcmVuY2VzVHlwZXMsIFNjSVNhbGVzRGlyZWN0aW9uLCBTY0lTdWdnZXN0aW9uVHlwZSwgU2NMb2NhdGlvbnNTZXJ2aWNlLCBTY09wZkxpc3QsIFNjUmVmZXJlbmNlc1NlcnZpY2UgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IHR1aUNvbnRyb2xWYWx1ZSwgdHVpSXNQcmVzZW50IH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgZmlsdGVyLCBtYXAsIE9ic2VydmFibGUsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBTY0JhbmtBY2NvdW50Rm9ybUdyb3VwLCBTY0NvbnRhY3RGb3JtR3JvdXAgfSBmcm9tICcuLi8uLi9hdXRoL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgc2NFbnRyZXByZW5ldXJJbm5NYXNrLCBzY0VudHJlcHJlbmV1ck9rcG9NYXNrLCBzY0twcE1hc2ssIHNjTGVnYWxJbm5NYXNrLCBzY0xlZ2FsT2twb01hc2sgfSBmcm9tICcuLi8uLi9tYXNrcyc7XG5pbXBvcnQgeyBzY0JpY1ZhbGlkYXRvciwgc2NDb3JyZXNwb25kZW50QWNjb3VudFZhbGlkYXRvciB9IGZyb20gJy4uLy4uL3ZhbGlkYXRvcnMnO1xuXG4vKipcbiAqINCk0L7RgNC80LAg0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtCz0L4g0LrQvtC90YLRgNCw0LPQtdC90YLQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1uZXctY29udHJhZ2VudC1mb3JtJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtbmV3LWNvbnRyYWdlbnQtZm9ybS5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vc2MtbmV3LWNvbnRyYWdlbnQtZm9ybS5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY05ld0NvbnRyYWdlbnRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICAgIC8qKlxuICAgICAqINCf0L7Qu9C1INCy0YvQsdC+0YDQsCDQvtGA0LPQsNC90LjQt9Cw0YbQuNC+0L3QvdC+LdC/0YDQsNCy0L7QstC+0Lkg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvcGZDb250cm9sPzogRm9ybUNvbnRyb2w8a2V5b2YgdHlwZW9mIFNjT3BmTGlzdCB8IG51bGw+O1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LTQsNC90L3Ri9GFINC+INC60L7QvdGC0YDQsNCz0LXQvdGC0LUgLSDQuNC90LTQuNCy0LjQtNGD0LDQu9GM0L3QvtC8INC/0YDQtdC00L/RgNC40L3QuNC80LDRgtC10LvQtS5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IGVudHJlcHJlbmV1ckdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGlubjogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBva3BvOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGRpcmVjdG9yTmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBkaXJlY3RvclBvc2l0aW9uOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGRpcmVjdG9yQWN0c09uOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGxlZ2FsQWRkcmVzczogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBwb3N0YWxBZGRyZXNzOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGFjdHVhbEFkZHJlc3M6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgYmFua0FjY291bnRzOiBuZXcgRm9ybUFycmF5PFNjQmFua0FjY291bnRGb3JtR3JvdXA+KFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICAgICAgICAgICAgICBiYW5rTmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICAgICAgICAgICAgICBiaWM6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOSksIHNjQmljVmFsaWRhdG9yXSksXG4gICAgICAgICAgICAgICAgICAgIGFjY291bnROdW1iZXI6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMjApXSksXG4gICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRlbnRBY2NvdW50OiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDIwKSwgc2NDb3JyZXNwb25kZW50QWNjb3VudFZhbGlkYXRvcl0pLFxuICAgICAgICAgICAgICAgICAgICBjdXJyZW5jeUlkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICApLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0JPRgNGD0L/Qv9CwINC/0L7Qu9C10Lkg0LTQsNC90L3Ri9GFINC+INC60L7QvdGC0YDQsNCz0LXQvdGC0LUgLSDRjtGA0LjQtNC40YfQtdGB0LrQvtC8INC70LjRhtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbGVnYWxHcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgICBrcHA6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoOSldKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCT0YDRg9C/0L/QsCDQv9C+0LvQtdC5INC00LDQvdC90YvRhSDQviDQutC+0L3RgtGA0LDQs9C10L3RgtC1IC0g0Y7RgNC40LTQuNGH0LXRgdC60L7QvCDQu9C40YbQtSDQvdC10YDQtdC30LjQtNC10L3RgtC1LlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbm9uUmVzaWRlbnRMZWdhbEdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIHJlZ2lzdHJhdGlvbkNvdW50cnlJZDogbmV3IEZvcm1Db250cm9sPG51bWJlciB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICByZWdpc3RyYXRpb25OdW1iZXI6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgdGF4TnVtYmVyOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQpNC+0YDQvNCwINC00LvRjyDRgdC+0LfQtNCw0L3QuNGPINC90L7QstC+0LPQviDQutC+0L3RgtGA0LDQs9C10L3RgtCwINGE0LjQt9C40YfQtdGB0LrQvtCz0L4g0LvQuNGG0LAuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBvcGY6IG5ldyBGb3JtQ29udHJvbDxrZXlvZiB0eXBlb2YgU2NPcGZMaXN0PignaW5kaXZpZHVhbCcsIFZhbGlkYXRvcnMucmVxdWlyZWQpLFxuICAgICAgICBzYWxlc0RpcmVjdGlvbklkOiBuZXcgRm9ybUNvbnRyb2w8bnVtYmVyIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgIGNvbnRhY3RzOiBuZXcgRm9ybUFycmF5PFNjQ29udGFjdEZvcm1Hcm91cD4oXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICAgICAgICAgICAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTIpXSksXG4gICAgICAgICAgICAgICAgICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5lbWFpbCksXG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDEpLCBWYWxpZGF0b3JzLnJlcXVpcmVkXVxuICAgICAgICApLFxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICog0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INGC0LjQv9C+0LIg0L/QvtC00YHQutCw0LfQvtC6LlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBzdWdnZXN0aW9uVHlwZTogdHlwZW9mIFNjSVN1Z2dlc3Rpb25UeXBlID0gU2NJU3VnZ2VzdGlvblR5cGU7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LLRi9Cx0L7RgNCwINCe0J/QpC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0T3BmJDogT2JzZXJ2YWJsZTxrZXlvZiB0eXBlb2YgU2NPcGZMaXN0PiA9IHR1aUNvbnRyb2xWYWx1ZTxrZXlvZiB0eXBlb2YgU2NPcGZMaXN0Pih0aGlzLmZvcm0uY29udHJvbHMub3BmKS5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YXAoKG9wZikgPT4ge1xuICAgICAgICAgICAgT2JqZWN0LmtleXMoeyAuLi50aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLCAuLi50aGlzLmxlZ2FsR3JvdXAuY29udHJvbHMsIC4uLnRoaXMubm9uUmVzaWRlbnRMZWdhbEdyb3VwLmNvbnRyb2xzIH0pLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8uZGlzYWJsZSgpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGFkZENvbnRyb2xzID0gKGZvcm1Hcm91cDogRm9ybUdyb3VwKSA9PiB7XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoeyAuLi5mb3JtR3JvdXAuY29udHJvbHMgfSkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGZvcm1Hcm91cC5nZXQoa2V5KT8uZW5hYmxlKCk7XG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmZvcm0gYXMgRm9ybUdyb3VwKS5zZXRDb250cm9sPHR5cGVvZiBrZXk+KGtleSwgZm9ybUdyb3VwLmdldChrZXkpKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgaWYgKFNjT3BmTGlzdFtvcGZdID4gU2NPcGZMaXN0LmluZGl2aWR1YWwpIHtcbiAgICAgICAgICAgICAgICBhZGRDb250cm9scyh0aGlzLmVudHJlcHJlbmV1ckdyb3VwKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLmlubi5zZXRWYWxpZGF0b3JzKFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1pbkxlbmd0aCgxMildKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLm9rcG8uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgaWYgKFNjT3BmTGlzdFtvcGZdID4gU2NPcGZMaXN0LmVudHJlcHJlbmV1cikge1xuICAgICAgICAgICAgICAgIGFkZENvbnRyb2xzKHRoaXMubGVnYWxHcm91cCk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyZXByZW5ldXJHcm91cC5jb250cm9scy5pbm4uc2V0VmFsaWRhdG9ycyhbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5taW5MZW5ndGgoMTApXSk7XG4gICAgICAgICAgICAgICAgdGhpcy5lbnRyZXByZW5ldXJHcm91cC5jb250cm9scy5va3BvLnNldFZhbGlkYXRvcnMoW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMubWluTGVuZ3RoKDgpXSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgaWYgKFNjT3BmTGlzdFtvcGZdID4gU2NPcGZMaXN0LmxlZ2FsKSB7XG4gICAgICAgICAgICAgICAgYWRkQ29udHJvbHModGhpcy5ub25SZXNpZGVudExlZ2FsR3JvdXApO1xuICAgICAgICAgICAgICAgIHRoaXMubGVnYWxHcm91cC5jb250cm9scy5rcHAuZGlzYWJsZSgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZW50cmVwcmVuZXVyR3JvdXAuY29udHJvbHMuaW5uLmRpc2FibGUoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmVudHJlcHJlbmV1ckdyb3VwLmNvbnRyb2xzLm9rcG8uZGlzYWJsZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0YHQutCwINC/0L7Qu9GPINCy0LLQvtC00LAg0JrQn9CfLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBrcHBNYXNrID0gc2NLcHBNYXNrO1xuXG4gICAgLyoqXG4gICAgICog0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INC+0YDQs9Cw0L3QuNC30LDRhtC40L7QvdC90L4t0L/RgNCw0LLQvtCy0YvRhSDRhNC+0YDQvC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgb3BmTGlzdEVudW06IHR5cGVvZiBTY09wZkxpc3QgPSBTY09wZkxpc3Q7XG5cbiAgICAvKipcbiAgICAgKiDQodGB0YvQu9C60LAg0LTQu9GPINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LPQviDRg9C/0YDQsNCy0LvQtdC90LjRjyDRg9C90LjRh9GC0L7QttC10L3QuNC10Lwg0LfQsNCy0LjRgdC40LzQvtGB0YLQtdC5LlxuICAgICAqL1xuICAgIHByaXZhdGUgZGVzdHJveVJlZjogRGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdC60LAg0L/QvtC70Y8g0LLQstC+0LTQsCDQmNCd0J0uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gb3BmINCe0YDQs9Cw0L3QuNC30LDRhtC40L7QvdC90L4t0L/RgNCw0LLQvtCy0LDRjyDRhNC+0YDQvNCwLlxuICAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgIHB1YmxpYyByZWFkb25seSBpbm5NYXNrID0gKG9wZjoga2V5b2YgdHlwZW9mIFNjT3BmTGlzdCkgPT4gKFNjT3BmTGlzdFtvcGZdID4gU2NPcGZMaXN0LmVudHJlcHJlbmV1ciA/IHNjTGVnYWxJbm5NYXNrIDogc2NFbnRyZXByZW5ldXJJbm5NYXNrKTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdC60LAg0L/QvtC70Y8g0LLQstC+0LTQsCDQntCa0J/Qni5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBvcGYg0J7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQsNGPINGE0L7RgNC80LAuXG4gICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgcHVibGljIHJlYWRvbmx5IG9rcG9NYXNrID0gKG9wZjoga2V5b2YgdHlwZW9mIFNjT3BmTGlzdCkgPT4gKFNjT3BmTGlzdFtvcGZdID4gU2NPcGZMaXN0LmVudHJlcHJlbmV1ciA/IHNjTGVnYWxPa3BvTWFzayA6IHNjRW50cmVwcmVuZXVyT2twb01hc2spO1xuXG4gICAgLyoqXG4gICAgICog0JjQvdC40YbQuNCw0LvQuNC30LjRgNGD0LXRgiDRjdC60LfQtdC80L/Qu9GP0YAg0LrQu9Cw0YHRgdCwIHtAbGluayBTY05ld0NvbnRyYWdlbnRGb3JtQ29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSByZWZlcmVuY2VzU2VydmljZSDQodC10YDQstC40YEg0YHQv9GA0LDQstC+0YfQvdC40LrQvtCyLlxuICAgICAqIEBwYXJhbSBsb2NhdGlvbnNTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0L/QvtC70YPRh9C10L3QuNGPINGB0L/QuNGB0LrQvtCyINGB0YLRgNCw0L0sINGA0LXQs9C40L7QvdC+0LIsINCz0L7RgNC+0LTQvtCyLlxuICAgICAqIEBwYXJhbSBmb3JtR3JvdXBEaXJlY3RpdmUg0JTQuNGA0LXQutGC0LjQstCwIGMgYEZvcm1Hcm91cGAg0LjQtyBET00uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHJlZmVyZW5jZXNTZXJ2aWNlOiBTY1JlZmVyZW5jZXNTZXJ2aWNlLFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2F0aW9uc1NlcnZpY2U6IFNjTG9jYXRpb25zU2VydmljZSxcbiAgICAgICAgQFNraXBTZWxmKClcbiAgICAgICAgQEluamVjdChGb3JtR3JvdXBEaXJlY3RpdmUpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybUdyb3VwRGlyZWN0aXZlOiBGb3JtR3JvdXBEaXJlY3RpdmUgfCBudWxsXG4gICAgKSB7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlc1NlcnZpY2UuZGlyZWN0aW9ucyRcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgICAgIGZpbHRlcigoZGlyZWN0aW9ucykgPT4gZGlyZWN0aW9ucy5sZW5ndGggPiAwKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGlyZWN0aW9ucykgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHsgc2FsZXNEaXJlY3Rpb25JZDogZGlyZWN0aW9uc1swXS5pZCB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCg0L7QtNC40YLQtdC70YzRgdC60LDRjyBgRm9ybUdyb3VwYC5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHBhcmVudEZvcm0oKTogRm9ybUdyb3VwIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUdyb3VwRGlyZWN0aXZlPy5mb3JtO1xuICAgIH1cblxuICAgIC8qKiBAaW5oZXJpdERvYyAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5wYXJlbnRGb3JtPy5zZXRDb250cm9sKCdjb250cmFnZW50JywgdGhpcy5mb3JtKTtcbiAgICAgICAgaWYgKHRoaXMucGFyZW50Rm9ybSAmJiB0aGlzLm9wZkNvbnRyb2wpIHtcbiAgICAgICAgICAgIHR1aUNvbnRyb2xWYWx1ZTxrZXlvZiB0eXBlb2YgU2NPcGZMaXN0IHwgbnVsbD4odGhpcy5vcGZDb250cm9sKVxuICAgICAgICAgICAgICAgIC5waXBlKGZpbHRlcih0dWlJc1ByZXNlbnQpLCB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKChvcGYpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmNvbnRyb2xzLm9wZi5wYXRjaFZhbHVlKG9wZik7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFyZW50Rm9ybT8ucmVtb3ZlQ29udHJvbCgnY29udHJhZ2VudCcpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0L7Qt9Cy0YDQsNGJ0LDQtdGCIHtAbGluayBPYnNlcnZhYmxlfSDRgdC/0LjRgdC60LAg0L3QsNC/0YDQsNCy0LvQtdC90LjQuSDQv9GA0L7QtNCw0LYuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gZGlyZWN0aW9uSWQg0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0L3QsNC/0YDQsNCy0LvQtdC90LjRjyDQv9GA0L7QtNCw0LYuXG4gICAgICovXG4gICAgcHVibGljIGdldERpcmVjdGlvbkJ5SWQkKGRpcmVjdGlvbklkOiBudW1iZXIpOiBPYnNlcnZhYmxlPFNjSVNhbGVzRGlyZWN0aW9uIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldERpcmVjdGlvbkJ5SWQkKGRpcmVjdGlvbklkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YHQv9C40YHQvtC6INC+0YDQs9Cw0L3QuNC30LDRhtC40L7QvdC90L4t0L/RgNCw0LLQvtCy0YvRhSDRhNC+0YDQvC4uXG4gICAgICovXG4gICAgcHVibGljIGdldE9wZiQoKTogT2JzZXJ2YWJsZTxBcnJheTxTY0lSZWZlcmVuY2VzVHlwZXM8U2NPcGZMaXN0LCB0eXBlb2YgU2NPcGZMaXN0Pj4+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1NlcnZpY2Uub3BmJDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktC+0LfQstGA0LDRidCw0LXRgiB7QGxpbmsgT2JzZXJ2YWJsZX0g0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQvtC5INGE0L7RgNC80YssINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQuSDRgdC40LzQstC+0LvRjNC90L7QvNGDINC+0LHQvtC30L3QsNGH0LXQvdC40Y4gKHNsdWcpINC90LAg0LLRhdC+0LTQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBzbHVnINCh0LjQvNCy0L7Qu9GM0L3QvtC1INC+0LHQvtC30L3QsNGH0LXQvdC40LUgKHNsdWcpLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXRPcGZCeVNsdWckKHNsdWc6IGtleW9mIHR5cGVvZiBTY09wZkxpc3QpOiBPYnNlcnZhYmxlPFNjSVJlZmVyZW5jZXNUeXBlczxTY09wZkxpc3QsIHR5cGVvZiBTY09wZkxpc3Q+IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNTZXJ2aWNlLmdldE9wZkJ5U2x1ZyQoc2x1Zyk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0L/QuNGB0LrQsCDRgdGC0YDQsNC9XG4gICAgICovXG4gICAgcHVibGljIGdldENvdW50cmllcyQoKTogT2JzZXJ2YWJsZTxTY0lDb3VudHJ5W10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubG9jYXRpb25zU2VydmljZS5nZXRDb3VudHJpZXMkKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0JLQvtC30LLRgNCw0YnQsNC10YIge0BsaW5rIE9ic2VydmFibGV9INGB0YLRgNCw0L3RiyDQv9C+INC40LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gY291bnRyeUlkIOKAlCDQmNC00LXQvdGC0LjRhNC40LrQsNGC0L7RgCDRgdGC0YDQsNC90YsuXG4gICAgICovXG4gICAgcHVibGljIGdldENvdW50cmllc0J5SWQkKGNvdW50cnlJZDogbnVtYmVyKTogT2JzZXJ2YWJsZTxTY0lDb3VudHJ5IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvY2F0aW9uc1NlcnZpY2UuZ2V0Q291bnRyaWVzJCgpLnBpcGUobWFwKChjb3VudHJpZXMpID0+IGNvdW50cmllcy5maW5kKChjb3VudHJ5KSA9PiBjb3VudHJ5LmlkID09PSBjb3VudHJ5SWQpKSk7XG4gICAgfVxufVxuIiwiPGRpdlxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKm5nSWY9XCJzZWxlY3RPcGYkIHwgYXN5bmMgYXMgc2VsZWN0T3BmXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTMgcGItMVwiXG4+XG4gICAgPHAgY2xhc3M9XCJ0ZXh0LWxnIGZvbnQtYm9sZFwiPtCe0LHRidC40LUg0LTQsNC90L3Ri9C1INC60L7QvdGC0YDQsNCz0LXQvdGC0LA8L3A+XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICDQotC40L8g0LrQvtC90YLRgNCw0LPQtdC90YLQsCAo0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQsNGPINGE0L7RgNC80LApXG4gICAgICAgIDx0dWktc2VsZWN0XG4gICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJvcGZcIlxuICAgICAgICAgICAgW3ZhbHVlQ29udGVudF09XCJvcGZDb250ZW50XCJcbiAgICAgICAgICAgIFtyZWFkT25seV09XCIhIW9wZkNvbnRyb2xcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQotC40L8g0LrQvtC90YLRgNCw0LPQtdC90YLQsCAo0L7RgNCz0LDQvdC40LfQsNGG0LjQvtC90L3Qvi3Qv9GA0LDQstC+0LLQsNGPINGE0L7RgNC80LApXG4gICAgICAgICAgICA8dHVpLWRhdGEtbGlzdCAqdHVpRGF0YUxpc3Q+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBnZXRPcGYkKCkgfCBhc3luYzsgbGV0IGluZGV4ID0gaW5kZXhcIlxuICAgICAgICAgICAgICAgICAgICB0dWlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0uc2x1Z1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvdHVpLWRhdGEtbGlzdD5cbiAgICAgICAgPC90dWktc2VsZWN0PlxuICAgICAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgICAgICNvcGZDb250ZW50XG4gICAgICAgICAgICBsZXQtZGF0YVxuICAgICAgICA+XG4gICAgICAgICAgICA8ZGl2Pnt7IChnZXRPcGZCeVNsdWckKGRhdGEpIHwgYXN5bmMpPy5uYW1lIH19PC9kaXY+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm9wZlwiXG4gICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAvPlxuICAgIDwvbGFiZWw+XG4gICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICB7eyBvcGZMaXN0RW51bVtzZWxlY3RPcGZdID09PSBvcGZMaXN0RW51bS5pbmRpdmlkdWFsID8gJ9CkLtCYLtCeLicgOiAn0J3QsNC30LLQsNC90LjQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4JyB9fVxuICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIj5cbiAgICAgICAgICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSA9PT0gb3BmTGlzdEVudW0uaW5kaXZpZHVhbCB8fCBvcGZMaXN0RW51bVtzZWxlY3RPcGZdID09PSBvcGZMaXN0RW51bS5ub25fcmVzaWRlbnRfbGVnYWwpIHtcbiAgICAgICAgICAgICAgICDQpC7QmC7Qni5cbiAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuZmlvXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICAgICAg0J3QsNC30LLQsNC90LjQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4XG4gICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLm9yZ2FuaXphdGlvblwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIm5hbWVcIlxuICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgLz5cbiAgICA8L2xhYmVsPlxuICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSAhPT0gb3BmTGlzdEVudW0uaW5kaXZpZHVhbCkge1xuICAgICAgICBAaWYgKG9wZkxpc3RFbnVtW3NlbGVjdE9wZl0gIT09IG9wZkxpc3RFbnVtLm5vbl9yZXNpZGVudF9sZWdhbCkge1xuICAgICAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAgICAgINCY0J3QnSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4INC40LvQuCDQmNCfXG4gICAgICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJpbm5cIj5cbiAgICAgICAgICAgICAgICAgICAg0JjQndCdINC+0YDQs9Cw0L3QuNC30LDRhtC40Lgg0LjQu9C4INCY0J9cbiAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICB0dWlUZXh0ZmllbGRMZWdhY3lcbiAgICAgICAgICAgICAgICAgICAgICAgIFttYXNraXRvXT1cImlubk1hc2soc2VsZWN0T3BmKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGU9XCJpbm5cIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5vcmdhbml6YXRpb25cIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiaW5uXCJcbiAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgICAgICDQmtC+0LQg0J7QmtCf0J5cbiAgICAgICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cIm9rcG9cIj5cbiAgICAgICAgICAgICAgICAgICAg0JrQvtC0INCe0JrQn9CeXG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkTGVnYWN5XG4gICAgICAgICAgICAgICAgICAgICAgICBbbWFza2l0b109XCJva3BvTWFzayhzZWxlY3RPcGYpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9rcG9cIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwib2twb1wiXG4gICAgICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIH1cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0KQu0Jgu0J4uINGA0YPQutC+0LLQvtC00LjRgtC10LvRj1xuICAgICAgICAgICAgPHR1aS1pbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJkaXJlY3Rvck5hbWVcIj5cbiAgICAgICAgICAgICAgICDQpC7QmC7Qni4g0YDRg9C60L7QstC+0LTQuNGC0LXQu9GPXG4gICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmZpb1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpcmVjdG9yTmFtZVwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCU0L7Qu9C20L3QvtGB0YLRjCDRgNGD0LrQvtCy0L7QtNC40YLQtdC70Y9cbiAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiZGlyZWN0b3JQb3NpdGlvblwiPiDQlNC+0LvQttC90L7RgdGC0Ywg0YDRg9C60L7QstC+0LTQuNGC0LXQu9GPIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImRpcmVjdG9yUG9zaXRpb25cIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQntGB0L3QvtCy0LDQvdC40Y8g0L/QvtC70L3QvtC80L7Rh9C40Lkg0YDRg9C60L7QstC+0LTQuNGC0LXQu9GPXG4gICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImRpcmVjdG9yQWN0c09uXCI+INCe0YHQvdC+0LLQsNC90LjRjyDQv9C+0LvQvdC+0LzQvtGH0LjQuSDRgNGD0LrQvtCy0L7QtNC40YLQtdC70Y8gPC90dWktaW5wdXQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZGlyZWN0b3JBY3RzT25cIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQrtGA0LjQtNC40YfQtdGB0LrQuNC5INCw0LTRgNC10YFcbiAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwibGVnYWxBZGRyZXNzXCI+XG4gICAgICAgICAgICAgICAg0K7RgNC40LTQuNGH0LXRgdC60LjQuSDQsNC00YDQtdGBXG4gICAgICAgICAgICAgICAgQGlmIChvcGZMaXN0RW51bVtzZWxlY3RPcGZdICE9PSBvcGZMaXN0RW51bS5ub25fcmVzaWRlbnRfbGVnYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgW3R5cGVdPVwic3VnZ2VzdGlvblR5cGUuYWRkcmVzc1wiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwibGVnYWxBZGRyZXNzXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0J/QvtGH0YLQvtCy0YvQuSDQsNC00YDQtdGBXG4gICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cInBvc3RhbEFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICDQn9C+0YfRgtC+0LLRi9C5INCw0LTRgNC10YFcbiAgICAgICAgICAgICAgICBAaWYgKG9wZkxpc3RFbnVtW3NlbGVjdE9wZl0gIT09IG9wZkxpc3RFbnVtLm5vbl9yZXNpZGVudF9sZWdhbCkge1xuICAgICAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5hZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwb3N0YWxBZGRyZXNzXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0KTQsNC60YLQuNGH0LXRgdC60LjQuSDQsNC00YDQtdGBXG4gICAgICAgICAgICA8dHVpLWlucHV0IGZvcm1Db250cm9sTmFtZT1cImFjdHVhbEFkZHJlc3NcIj5cbiAgICAgICAgICAgICAgICDQpNCw0LrRgtC40YfQtdGB0LrQuNC5INCw0LTRgNC10YFcbiAgICAgICAgICAgICAgICBAaWYgKG9wZkxpc3RFbnVtW3NlbGVjdE9wZl0gIT09IG9wZkxpc3RFbnVtLm5vbl9yZXNpZGVudF9sZWdhbCkge1xuICAgICAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgKnR1aURhdGFMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5hZGRyZXNzXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhY3R1YWxBZGRyZXNzXCJcbiAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgQGlmIChvcGZMaXN0RW51bVtzZWxlY3RPcGZdICE9PSBvcGZMaXN0RW51bS5ub25fcmVzaWRlbnRfbGVnYWwpIHtcbiAgICAgICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgICAgICDQmtCf0J8g0L7RgNCz0LDQvdC40LfQsNGG0LjQuFxuICAgICAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwia3BwXCI+XG4gICAgICAgICAgICAgICAgICAgINCa0J/QnyDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4XG4gICAgICAgICAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgdHVpVGV4dGZpZWxkTGVnYWN5XG4gICAgICAgICAgICAgICAgICAgICAgICBbbWFza2l0b109XCJrcHBNYXNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cImtwcFwiXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC90dWktaW5wdXQ+XG4gICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJrcHBcIlxuICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICB9XG4gICAgfVxuICAgIEBpZiAob3BmTGlzdEVudW1bc2VsZWN0T3BmXSA9PT0gb3BmTGlzdEVudW0ubm9uX3Jlc2lkZW50X2xlZ2FsKSB7XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgINCh0YLRgNCw0L3QsCDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsFxuICAgICAgICAgICAgPHR1aS1zZWxlY3RcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZWdpc3RyYXRpb25Db3VudHJ5SWRcIlxuICAgICAgICAgICAgICAgIFt2YWx1ZUNvbnRlbnRdPVwiQ291bnRyeUNvbnRlbnRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCh0YLRgNCw0L3QsCDRgNC10LPQuNGB0YLRgNCw0YbQuNC4INGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsFxuICAgICAgICAgICAgICAgIDx0dWktZGF0YS1saXN0ICp0dWlEYXRhTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgZ2V0Q291bnRyaWVzJCgpIHwgYXN5bmM7IGxldCBpbmRleCA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHR1aU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgW3ZhbHVlXT1cIml0ZW0uaWRcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC90dWktZGF0YS1saXN0PlxuICAgICAgICAgICAgPC90dWktc2VsZWN0PlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICAgICAgICAgI0NvdW50cnlDb250ZW50XG4gICAgICAgICAgICAgICAgbGV0LWRhdGFcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2Pnt7IChnZXRDb3VudHJpZXNCeUlkJChkYXRhKSB8IGFzeW5jKT8ubmFtZSB9fTwvZGl2PlxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZWdpc3RyYXRpb25Db3VudHJ5SWRcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQoNC10LPQuNGB0YLRgNCw0YbQuNC+0L3QvdGL0Lkg0L3QvtC80LXRgCDRjtGA0LjQtNC40YfQtdGB0LrQvtCz0L4g0LvQuNGG0LBcbiAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicmVnaXN0cmF0aW9uTnVtYmVyXCI+INCg0LXQs9C40YHRgtGA0LDRhtC40L7QvdC90YvQuSDQvdC+0LzQtdGAINGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsCA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZWdpc3RyYXRpb25OdW1iZXJcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQndCw0LvQvtCz0L7QstGL0Lkg0L3QvtC80LXRgCDRjtGA0LjQtNC40YfQtdGB0LrQvtCz0L4g0LvQuNGG0LBcbiAgICAgICAgICAgIDx0dWktaW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwidGF4TnVtYmVyXCI+INCd0LDQu9C+0LPQvtCy0YvQuSDQvdC+0LzQtdGAINGO0YDQuNC00LjRh9C10YHQutC+0LPQviDQu9C40YbQsCA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ0YXhOdW1iZXJcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgIH1cbjwvZGl2PlxuIl19
|