@snabcentr/client-ui 3.35.0 → 3.36.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/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.d.ts +2 -0
- package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs +3 -3
- package/fesm2022/snabcentr-client-ui.mjs +2 -2
- package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
- package/package.json +1 -1
- package/release_notes.tmp +3 -3
@@ -1,3 +1,4 @@
|
|
1
|
+
import { HttpErrorResponse } from '@angular/common/http';
|
1
2
|
import { OnInit, Signal } from '@angular/core';
|
2
3
|
import { FormControl, FormGroup } from '@angular/forms';
|
3
4
|
import { ScCatalogService, ScISuggestionType, ScIWarehouse, ScProduct, ScUser } from '@snabcentr/client-core';
|
@@ -15,6 +16,7 @@ export declare class ScNotifyWhenInStockDialogComponent implements OnInit {
|
|
15
16
|
protected readonly context: TuiDialogContext<void, {
|
16
17
|
product: ScProduct;
|
17
18
|
onClickOfferHandler: () => void;
|
19
|
+
onErrorHandler: (error: HttpErrorResponse) => void;
|
18
20
|
}>;
|
19
21
|
/**
|
20
22
|
* Товар.
|
package/esm2022/catalog/notify-when-in-stock-dialog/sc-notify-when-in-stock-dialog.component.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
/* eslint-disable class-methods-use-this,unicorn/no-useless-undefined, @typescript-eslint/unbound-method */
|
2
|
-
import { AsyncPipe, NgIf
|
2
|
+
import { AsyncPipe, NgIf } from '@angular/common';
|
3
3
|
import { HttpErrorResponse } from '@angular/common/http';
|
4
4
|
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
|
5
5
|
import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop';
|
@@ -101,6 +101,7 @@ export class ScNotifyWhenInStockDialogComponent {
|
|
101
101
|
else if (message) {
|
102
102
|
this.form.setErrors({ serverResponse: [message] });
|
103
103
|
}
|
104
|
+
this.context.data.onErrorHandler(error);
|
104
105
|
}
|
105
106
|
return of(undefined);
|
106
107
|
}), startWith(null))), share());
|
@@ -165,7 +166,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
165
166
|
TuiCardLarge,
|
166
167
|
TuiIcon,
|
167
168
|
TuiTooltip,
|
168
|
-
NgTemplateOutlet,
|
169
169
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit$.next()\"\n class=\"flex flex-col gap-6\"\n>\n @let isPhoneVisible = requiredFields.includes('phone');\n @let isEmailVisible = requiredFields.includes('email');\n @let phoneTouched = form.get('phone')?.touched;\n @let emailTouched = form.get('email')?.touched;\n @let isShowError = form.errors?.['atLeastOneRequired'] && ((isPhoneVisible && phoneTouched) || (isEmailVisible && emailTouched));\n @let user = user$ | async;\n @let userPhone = user?.contacts?.phone;\n @let isShowCodeFields = !!form.controls.phone.value && (user?.isGuest || userPhone?.value !== form.controls.phone.value || !userPhone?.isApproved);\n\n <div\n *ngIf=\"user\"\n class=\"flex flex-col gap-3\"\n >\n <label tuiLabel>\n <div\n [tuiAppearance]=\"isPhoneVisible && isEmailVisible ? 'outline-grayscale' : 'flat'\"\n [tuiAppearanceMode]=\"isShowError ? 'invalid' : null\"\n tuiCardLarge\n class=\"flex flex-col !gap-1\"\n [style.padding]=\"requiredFields.length <= 1 ? '0' : undefined\"\n [style.border-radius]=\"requiredFields.length <= 1 ? '0' : undefined\"\n >\n <sc-verification-phone-check-form\n *ngIf=\"isPhoneVisible\"\n [required]=\"!form.controls.email.value\"\n [showCodeFields]=\"isShowCodeFields\"\n [pseudoInvalid]=\"isShowError\"\n />\n <div\n *ngIf=\"isPhoneVisible && isEmailVisible\"\n class=\"tui-island__paragraph flex items-center gap-3\"\n [style.color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n >\n <div\n class=\"h-px flex-1\"\n [style.background-color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n ></div>\n <div class=\"text-body-s font-bold\">\n \u0418\u043B\u0438(\u0438)\n <tui-icon\n [appearance]=\"isShowError ? 'negative' : 'grayscale'\"\n tuiHintDirection=\"right\"\n tuiHintAppearance=\"dark\"\n tuiTooltip=\"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438(\u0438) \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\"\n />\n </div>\n <div\n class=\"h-px flex-1\"\n [style.background-color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n ></div>\n </div>\n <label\n tuiLabel\n *ngIf=\"isEmailVisible\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input\n [pseudoInvalid]=\"isShowError\"\n formControlName=\"email\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <tui-error\n *ngIf=\"isShowError\"\n error=\"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438(\u0438\u043B\u0438) \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B \u0434\u043B\u044F \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F \u043E \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u0438 \u0442\u043E\u0432\u0430\u0440\u0430\"\n />\n </label>\n <label tuiLabel>\n \u0421\u043A\u043B\u0430\u0434\n <tui-select\n formControlName=\"warehouseId\"\n [valueContent]=\"warehouses() ? stringify(warehouses()!) : selectLoading\"\n >\n \u0421\u043A\u043B\u0430\u0434\n <tui-data-list *tuiDataList>\n @for (warehouse of warehouses(); track warehouse.id) {\n @if (!product.isWarehouseStockExist(warehouse.id)) {\n <button\n tuiOption\n [value]=\"warehouse.id\"\n >\n {{ warehouse.name }}\n </button>\n }\n }\n </tui-data-list>\n </tui-select>\n <tui-error\n formControlName=\"warehouseId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n\n <span\n *ngIf=\"isStock()\"\n [style.color]=\"'var(--tui-text-positive)'\"\n >\n \u0422\u043E\u0432\u0430\u0440 \u0438\u043C\u0435\u0435\u0442\u0441\u044F \u0432 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C \u0441\u043A\u043B\u0430\u0434\u0435\n </span>\n </label>\n <ng-template #selectLoading> <tui-loader /> </ng-template>\n </div>\n\n <div class=\"flex flex-wrap items-center gap-3\">\n <button\n tuiButton\n type=\"submit\"\n [disabled]=\"form.invalid || isStock() || (isShowCodeFields && !form.controls.verificationCode.value && form.controls.phone.valid)\"\n [loading]=\"loading()\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n >\n \u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C\n </button>\n <div class=\"grow basis-60 text-body-s\">\n \u041D\u0430\u0436\u0438\u043C\u0430\u044F \u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0443, \u0432\u044B \u0441\u043E\u0433\u043B\u0430\u0448\u0430\u0435\u0442\u0435\u0441\u044C \u0441\n <button\n tuiLink\n [pseudo]=\"true\"\n type=\"button\"\n (click)=\"context.data.onClickOfferHandler()\"\n >\n \u041F\u043E\u043B\u0438\u0442\u0438\u043A\u043E\u0439 \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u0438\n </button>\n </div>\n </div>\n\n <tui-error\n *ngIf=\"form.errors && form.errors['serverResponse']\"\n [error]=\"[] | tuiFieldError | async\"\n />\n</form>\n" }]
|
170
170
|
}], ctorParameters: () => [] });
|
171
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtbm90aWZ5LXdoZW4taW4tc3RvY2stZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL25vdGlmeS13aGVuLWluLXN0b2NrLWRpYWxvZy9zYy1ub3RpZnktd2hlbi1pbi1zdG9jay1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvbm90aWZ5LXdoZW4taW4tc3RvY2stZGlhbG9nL3NjLW5vdGlmeS13aGVuLWluLXN0b2NrLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyR0FBMkc7QUFFM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNwRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUVuQixpQkFBaUIsRUFJakIsYUFBYSxFQUNiLGtCQUFrQixHQUNyQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFvQixRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGdCQUFnQixF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O3dCQUNWLGdCQUFnQjtxQkFDbkIsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzLHVuaWNvcm4vbm8tdXNlbGVzcy11bmRlZmluZWQsIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAqL1xuXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIFNjQ2F0YWxvZ1NlcnZpY2UsXG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0lQcm9kdWN0Tm90aWZ5V2hlbkluU3RvY2ssXG4gICAgU2NJU3VnZ2VzdGlvblR5cGUsXG4gICAgU2NJV2FyZWhvdXNlLFxuICAgIFNjUHJvZHVjdCxcbiAgICBTY1VzZXIsXG4gICAgU2NVc2VyU2VydmljZSxcbiAgICBTY1dhcmVob3VzZVNlcnZpY2UsXG59IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpQ29udGV4dCwgVHVpU3RyaW5nSGFuZGxlciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQXBwZWFyYW5jZSwgVHVpQnV0dG9uLCBUdWlEaWFsb2dDb250ZXh0LCBUdWlFcnJvciwgVHVpSWNvbiwgVHVpTGFiZWwsIFR1aUxpbmssIFR1aUxvYWRlciB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUJ1dHRvbkxvYWRpbmcsIFR1aUZpZWxkRXJyb3JQaXBlLCBUdWlUb29sdGlwIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlDYXJkTGFyZ2UgfSBmcm9tICdAdGFpZ2EtdWkvbGF5b3V0JztcbmltcG9ydCB7IFR1aUlucHV0TW9kdWxlLCBUdWlTZWxlY3RNb2R1bGUgfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5JztcbmltcG9ydCB7IFBPTFlNT1JQSEVVU19DT05URVhUIH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9hdXRoJztcbmltcG9ydCB7IFNjRm9ybUZpZWxkc01vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGRzL2Zvcm0tZmllbGRzLm1vZHVsZSc7XG5pbXBvcnQgeyBTQ19OT1RJRllfV0hFTl9JTl9TVE9DS19SRVFVSVJFRF9GSUVMRFMgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMnO1xuaW1wb3J0IHsgc2NBdExlYXN0T25lUmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3NjLWF0LWxlYXN0LW9uZS1yZXF1aXJlZC12YWxpZGF0b3InO1xuaW1wb3J0IHsgcGhvbmVWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3NjLXBob25lLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBTY1ZlcmlmaWNhdGlvbk1vZHVsZSB9IGZyb20gJy4uLy4uL3ZlcmlmaWNhdGlvbi9zYy12ZXJpZmljYXRpb24ubW9kdWxlJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YTQvtGA0LzRiyDQvtGC0L/RgNCw0LLQutC4INC30LDQv9GA0L7RgdCwINC90LAg0YPQstC10LTQvtC80LvQtdC90LjQtSDQviDQv9C+0YHRgtGD0L/Qu9C10L3QuNC4INGC0L7QstCw0YDQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLW5vdGlmeS13aGVuLWluLXN0b2NrLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLW5vdGlmeS13aGVuLWluLXN0b2NrLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBTY1ZlcmlmaWNhdGlvbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0TW9kdWxlLFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIFR1aUxhYmVsLFxuICAgICAgICBUdWlGaWVsZEVycm9yUGlwZSxcbiAgICAgICAgVHVpRXJyb3IsXG4gICAgICAgIFNjVmVyaWZpY2F0aW9uTW9kdWxlLFxuICAgICAgICBTY0Zvcm1GaWVsZHNNb2R1bGUsXG4gICAgICAgIFR1aVNlbGVjdE1vZHVsZSxcbiAgICAgICAgVHVpQnV0dG9uTG9hZGluZyxcbiAgICAgICAgVHVpTG9hZGVyLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFR1aUFwcGVhcmFuY2UsXG4gICAgICAgIFR1aUNhcmRMYXJnZSxcbiAgICAgICAgVHVpSWNvbixcbiAgICAgICAgVHVpVG9vbHRpcCxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY05vdGlmeVdoZW5JblN0b2NrRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQmtC+0L3RgtC10LrRgdGCINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAsINCyINC60L7RgtC+0YDQvtC8INC+0YLQutGA0YvRgiDQutC+0LzQv9C+0L3QtdC90YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQ6IFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgeyBwcm9kdWN0OiBTY1Byb2R1Y3Q7IG9uQ2xpY2tPZmZlckhhbmRsZXI6ICgpID0+IHZvaWQgfT4gPVxuICAgICAgICBpbmplY3Q8VHVpRGlhbG9nQ29udGV4dDx2b2lkLCB7IHByb2R1Y3Q6IFNjUHJvZHVjdDsgb25DbGlja09mZmVySGFuZGxlcjogKCkgPT4gdm9pZCB9Pj4oUE9MWU1PUlBIRVVTX0NPTlRFWFQpO1xuXG4gICAgLyoqXG4gICAgICog0KLQvtCy0LDRgC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcHJvZHVjdDogU2NQcm9kdWN0ID0gdGhpcy5jb250ZXh0LmRhdGEucHJvZHVjdDtcblxuICAgIC8qKlxuICAgICAqINCk0L7RgNC80LAg0LTQu9GPINC+0YLQv9GA0LDQstC60Lgg0LfQsNC/0YDQvtGB0LAg0L3QsCDRg9Cy0LXQtNC+0LzQu9C10L3QuNC1INC+INC/0L7RgdGC0YPQv9C70LXQvdC40Lgg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBmb3JtID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMuZW1haWxdKSxcbiAgICAgICAgcGhvbmU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbcGhvbmVWYWxpZGF0b3IoKV0pLFxuICAgICAgICB2ZXJpZmljYXRpb25Db2RlOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgW1ZhbGlkYXRvcnMubWluTGVuZ3RoKDYpXSksXG4gICAgICAgIHdhcmVob3VzZUlkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nIHwgbnVsbD4obnVsbCwgVmFsaWRhdG9ycy5yZXF1aXJlZCksXG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC/0LjRgdC+0Log0YHQutC70LDQtNC+0LIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHdhcmVob3VzZXM6IFNpZ25hbDxTY0lXYXJlaG91c2VbXSB8IG51bGw+ID0gdG9TaWduYWwoaW5qZWN0KFNjV2FyZWhvdXNlU2VydmljZSkuZ2V0V2FyZWhvdXNlcyQoKSwgeyBpbml0aWFsVmFsdWU6IG51bGwgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0YLQuNC/0L7QsiDQv9C+0LTRgdC60LDQt9C+0LouXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHN1Z2dlc3Rpb25UeXBlOiB0eXBlb2YgU2NJU3VnZ2VzdGlvblR5cGUgPSBTY0lTdWdnZXN0aW9uVHlwZTtcblxuICAgIC8qKlxuICAgICAqINCc0LDRgdGB0LjQsiDQv9C+0LvQtdC5LCDQutC+0YLQvtGA0YvQtSDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0LfQsNC/0L7Qu9C90LXQvdGLINGF0L7RgtGPINCx0Ysg0L7QtNC90LjQvCDQt9C90LDRh9C10L3QuNC10LwuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHJlcXVpcmVkRmllbGRzID0gaW5qZWN0KFNDX05PVElGWV9XSEVOX0lOX1NUT0NLX1JFUVVJUkVEX0ZJRUxEUyk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhdGFsb2dTZXJ2aWNlOiBTY0NhdGFsb2dTZXJ2aWNlID0gaW5qZWN0KFNjQ2F0YWxvZ1NlcnZpY2UpO1xuXG4gICAgLyoqXG4gICAgICog0KHQtdGA0LLQuNGBINC60L7QvdCy0LXRgNGC0LDRhtC40Lgg0LTQsNC90L3Ri9GFLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udmVydGVyc1NlcnZpY2U6IFNjQ29udmVydGVyc1NlcnZpY2UgPSBpbmplY3QoU2NDb252ZXJ0ZXJzU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LTQsNC90L3Ri9GFINC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdXNlciQ6IE9ic2VydmFibGU8U2NVc2VyIHwgbnVsbD4gPSBpbmplY3QoU2NVc2VyU2VydmljZSlcbiAgICAgICAgLmdldFVzZXJDaGFuZ2UkKClcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICB0YXAoKHVzZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXVzZXIuaXNHdWVzdCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ucGF0Y2hWYWx1ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICBwaG9uZTogdXNlci5jb250YWN0cy5waG9uZS52YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVtYWlsOiB1c2VyLmNvbnRhY3RzLmVtYWlsLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIFN1YmplY3R9INGB0L7QsdGL0YLQuNGPINC+0YLQv9GA0LDQstC60Lgg0YTQvtGA0LzRiy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgb25TdWJtaXQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQt9Cw0L/RgNC+0YHQsCDQtNCw0L3QvdGL0YUg0YPQstC10LTQvtC80LvQtdC90LjRjyDQviDQv9C+0YHRgtGD0L/Qu9C10L3QuNC4INGC0L7QstCw0YDQsC5cbiAgICAgKi9cbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlcXVlc3QkID0gdGhpcy5vblN1Ym1pdCQucGlwZShcbiAgICAgICAgZmlsdGVyKCgpID0+IHRoaXMuZm9ybS52YWxpZCksXG4gICAgICAgIG1hcCgoKSA9PiB0aGlzLmZvcm0uZ2V0UmF3VmFsdWUoKSBhcyBTY0lQcm9kdWN0Tm90aWZ5V2hlbkluU3RvY2spLFxuICAgICAgICBzd2l0Y2hNYXAoKHZhbHVlKSA9PlxuICAgICAgICAgICAgdGhpcy5jYXRhbG9nU2VydmljZS5nZXRQcm9kdWN0Tm90aWZ5V2hlbkluU3RvY2skKHRoaXMucHJvZHVjdC5pZCwgdGhpcy5jb252ZXJ0ZXJzU2VydmljZS5yZW1vdmVOdWxsUmVjdXJzaXZlKHZhbHVlKSkucGlwZShcbiAgICAgICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbnRleHQuY29tcGxldGVXaXRoKCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZXJyb3JzLCBtZXNzYWdlIH0gPSBlcnJvci5lcnJvciBhcyBBcGlFcnJvclJlc3BvbnNlO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNoYWRvd1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGVycm9ycykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5nZXQoa2V5KT8uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IHZhbHVlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtZXNzYWdlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldEVycm9ycyh7IHNlcnZlclJlc3BvbnNlOiBbbWVzc2FnZV0gfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YodW5kZWZpbmVkKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBzdGFydFdpdGgobnVsbClcbiAgICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgc2hhcmUoKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQodC40LPQvdCw0Lsg0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhS5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9hZGluZzogU2lnbmFsPGJvb2xlYW4+ID0gdG9TaWduYWwodGhpcy5yZXF1ZXN0JC5waXBlKG1hcCgodmFsdWUpID0+IHZhbHVlID09PSBudWxsKSksIHsgaW5pdGlhbFZhbHVlOiBmYWxzZSB9KTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NOb3RpZnlXaGVuSW5TdG9ja0RpYWxvZ0NvbXBvbmVudH0uXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLnVzZXIkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9Cw0YbQuNGPINC60L7QvNC/0L7QvdC10L3RgtCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMucmVxdWlyZWRGaWVsZHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uZ2V0KHRoaXMucmVxdWlyZWRGaWVsZHNbMF0pPy5zZXRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVxdWlyZWRGaWVsZHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnNldFZhbGlkYXRvcnMoc2NBdExlYXN0T25lUmVxdWlyZWRWYWxpZGF0b3IodGhpcy5yZXF1aXJlZEZpZWxkcykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICog0J/RgNC+0LLQtdGA0Y/QtdGCLCDRj9Cy0LvRj9C10YLRgdGPINC70Lgg0YLQvtCy0LDRgCDQsiDQvdCw0LvQuNGH0LjQuC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaXNTdG9jaygpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qgd2FyZWhvdXNlSWQgPSBOdW1iZXIodGhpcy5mb3JtLmdldCgnd2FyZWhvdXNlSWQnKT8udmFsdWUgPz8gMCk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZHVjdC5pc1dhcmVob3VzZVN0b2NrRXhpc3Qod2FyZWhvdXNlSWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQtdC+0LHRgNCw0LfRg9C10YIg0L7QsdGK0LXQutGCINCyINC30L3QsNGH0LXQvdC40LUsINC+0YLQvtCx0YDQsNC20LDQtdC80L7QtSDQsiDQv9C+0LvQtSDQstCy0L7QtNCwLlxuICAgICAqXG4gICAgICogQHBhcmFtIGl0ZW1zINCS0YvQsdGA0LDQvdC90YvQtSDQt9C90LDRh9C10L3QuNGPLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCBzdHJpbmdpZnkoaXRlbXM6IHJlYWRvbmx5IFNjSVdhcmVob3VzZVtdKTogVHVpU3RyaW5nSGFuZGxlcjxUdWlDb250ZXh0PG51bWJlcj4+IHtcbiAgICAgICAgY29uc3QgaXRlbXNNYXAgPSBuZXcgTWFwKFxuICAgICAgICAgICAgaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFtpdGVtLmlkLCBpdGVtLm5hbWVdIGFzIFtudW1iZXIsIHN0cmluZ107XG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAoeyAkaW1wbGljaXQgfTogVHVpQ29udGV4dDxudW1iZXI+KSA9PiBpdGVtc01hcC5nZXQoJGltcGxpY2l0KSA/PyAnJztcbiAgICB9XG59XG4iLCI8Zm9ybVxuICAgIFtmb3JtR3JvdXBdPVwiZm9ybVwiXG4gICAgKG5nU3VibWl0KT1cIm9uU3VibWl0JC5uZXh0KClcIlxuICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtNlwiXG4+XG4gICAgQGxldCBpc1Bob25lVmlzaWJsZSA9IHJlcXVpcmVkRmllbGRzLmluY2x1ZGVzKCdwaG9uZScpO1xuICAgIEBsZXQgaXNFbWFpbFZpc2libGUgPSByZXF1aXJlZEZpZWxkcy5pbmNsdWRlcygnZW1haWwnKTtcbiAgICBAbGV0IHBob25lVG91Y2hlZCA9IGZvcm0uZ2V0KCdwaG9uZScpPy50b3VjaGVkO1xuICAgIEBsZXQgZW1haWxUb3VjaGVkID0gZm9ybS5nZXQoJ2VtYWlsJyk/LnRvdWNoZWQ7XG4gICAgQGxldCBpc1Nob3dFcnJvciA9IGZvcm0uZXJyb3JzPy5bJ2F0TGVhc3RPbmVSZXF1aXJlZCddICYmICgoaXNQaG9uZVZpc2libGUgJiYgcGhvbmVUb3VjaGVkKSB8fCAoaXNFbWFpbFZpc2libGUgJiYgZW1haWxUb3VjaGVkKSk7XG4gICAgQGxldCB1c2VyID0gdXNlciQgfCBhc3luYztcbiAgICBAbGV0IHVzZXJQaG9uZSA9IHVzZXI/LmNvbnRhY3RzPy5waG9uZTtcbiAgICBAbGV0IGlzU2hvd0NvZGVGaWVsZHMgPSAhIWZvcm0uY29udHJvbHMucGhvbmUudmFsdWUgJiYgKHVzZXI/LmlzR3Vlc3QgfHwgdXNlclBob25lPy52YWx1ZSAhPT0gZm9ybS5jb250cm9scy5waG9uZS52YWx1ZSB8fCAhdXNlclBob25lPy5pc0FwcHJvdmVkKTtcblxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJ1c2VyXCJcbiAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGdhcC0zXCJcbiAgICA+XG4gICAgICAgIDxsYWJlbCB0dWlMYWJlbD5cbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBbdHVpQXBwZWFyYW5jZV09XCJpc1Bob25lVmlzaWJsZSAmJiBpc0VtYWlsVmlzaWJsZSA/ICdvdXRsaW5lLWdyYXlzY2FsZScgOiAnZmxhdCdcIlxuICAgICAgICAgICAgICAgIFt0dWlBcHBlYXJhbmNlTW9kZV09XCJpc1Nob3dFcnJvciA/ICdpbnZhbGlkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIHR1aUNhcmRMYXJnZVxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCAhZ2FwLTFcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5wYWRkaW5nXT1cInJlcXVpcmVkRmllbGRzLmxlbmd0aCA8PSAxID8gJzAnIDogdW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuYm9yZGVyLXJhZGl1c109XCJyZXF1aXJlZEZpZWxkcy5sZW5ndGggPD0gMSA/ICcwJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHNjLXZlcmlmaWNhdGlvbi1waG9uZS1jaGVjay1mb3JtXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNQaG9uZVZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICBbcmVxdWlyZWRdPVwiIWZvcm0uY29udHJvbHMuZW1haWwudmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvd0NvZGVGaWVsZHNdPVwiaXNTaG93Q29kZUZpZWxkc1wiXG4gICAgICAgICAgICAgICAgICAgIFtwc2V1ZG9JbnZhbGlkXT1cImlzU2hvd0Vycm9yXCJcbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc1Bob25lVmlzaWJsZSAmJiBpc0VtYWlsVmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidHVpLWlzbGFuZF9fcGFyYWdyYXBoIGZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCJcbiAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmNvbG9yXT1cImlzU2hvd0Vycm9yID8gJ3ZhcigtLXR1aS10ZXh0LW5lZ2F0aXZlKScgOiAndmFyKC0tdHVpLXRleHQtdGVydGlhcnkpJ1wiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtcHggZmxleC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImlzU2hvd0Vycm9yID8gJ3ZhcigtLXR1aS10ZXh0LW5lZ2F0aXZlKScgOiAndmFyKC0tdHVpLXRleHQtdGVydGlhcnkpJ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtYm9keS1zIGZvbnQtYm9sZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAg0JjQu9C4KNC4KVxuICAgICAgICAgICAgICAgICAgICAgICAgPHR1aS1pY29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2FwcGVhcmFuY2VdPVwiaXNTaG93RXJyb3IgPyAnbmVnYXRpdmUnIDogJ2dyYXlzY2FsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUhpbnREaXJlY3Rpb249XCJyaWdodFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpSGludEFwcGVhcmFuY2U9XCJkYXJrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlUb29sdGlwPVwi0J/QvtC20LDQu9GD0LnRgdGC0LAsINGD0LrQsNC20LjRgtC1INC90L7QvNC10YAg0YLQtdC70LXRhNC+0L3QsCDQuNC70Lgo0LgpINCw0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImgtcHggZmxleC0xXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cImlzU2hvd0Vycm9yID8gJ3ZhcigtLXR1aS10ZXh0LW5lZ2F0aXZlKScgOiAndmFyKC0tdHVpLXRleHQtdGVydGlhcnkpJ1wiXG4gICAgICAgICAgICAgICAgICAgID48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICAgICAgdHVpTGFiZWxcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpc0VtYWlsVmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICAgICAgICAgICAgICA8dHVpLWlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICBbcHNldWRvSW52YWxpZF09XCJpc1Nob3dFcnJvclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgINCQ0LTRgNC10YEg0Y3Qu9C10LrRgtGA0L7QvdC90L7QuSDQv9C+0YfRgtGLXG4gICAgICAgICAgICAgICAgICAgICAgICA8c2Mtc3VnZ2VzdGlvbi1maWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0dWlEYXRhTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0eXBlXT1cInN1Z2dlc3Rpb25UeXBlLmVtYWlsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvdHVpLWlucHV0PlxuICAgICAgICAgICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZXJyb3JdPVwiW10gfCB0dWlGaWVsZEVycm9yIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICAqbmdJZj1cImlzU2hvd0Vycm9yXCJcbiAgICAgICAgICAgICAgICBlcnJvcj1cItCf0L7QttCw0LvRg9C50YHRgtCwLCDRg9C60LDQttC40YLQtSDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0Lgo0LjQu9C4KSDQsNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRiyDQtNC70Y8g0YPQstC10LTQvtC80LvQtdC90LjRjyDQviDQv9C+0YHRgtGD0L/Qu9C10L3QuNC4INGC0L7QstCw0YDQsFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICDQodC60LvQsNC0XG4gICAgICAgICAgICA8dHVpLXNlbGVjdFxuICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cIndhcmVob3VzZUlkXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVDb250ZW50XT1cIndhcmVob3VzZXMoKSA/IHN0cmluZ2lmeSh3YXJlaG91c2VzKCkhKSA6IHNlbGVjdExvYWRpbmdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCh0LrQu9Cw0LRcbiAgICAgICAgICAgICAgICA8dHVpLWRhdGEtbGlzdCAqdHVpRGF0YUxpc3Q+XG4gICAgICAgICAgICAgICAgICAgIEBmb3IgKHdhcmVob3VzZSBvZiB3YXJlaG91c2VzKCk7IHRyYWNrIHdhcmVob3VzZS5pZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgQGlmICghcHJvZHVjdC5pc1dhcmVob3VzZVN0b2NrRXhpc3Qod2FyZWhvdXNlLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpT3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJ3YXJlaG91c2UuaWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgd2FyZWhvdXNlLm5hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvdHVpLWRhdGEtbGlzdD5cbiAgICAgICAgICAgIDwvdHVpLXNlbGVjdD5cbiAgICAgICAgICAgIDx0dWktZXJyb3JcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ3YXJlaG91c2VJZFwiXG4gICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgIC8+XG5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc1N0b2NrKClcIlxuICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCIndmFyKC0tdHVpLXRleHQtcG9zaXRpdmUpJ1wiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0KLQvtCy0LDRgCDQuNC80LXQtdGC0YHRjyDQsiDQvdCw0LvQuNGH0LjQuCDQvdCwINCy0YvQsdGA0LDQvdC90L7QvCDRgdC60LvQsNC00LVcbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPG5nLXRlbXBsYXRlICNzZWxlY3RMb2FkaW5nPiA8dHVpLWxvYWRlciAvPiA8L25nLXRlbXBsYXRlPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC13cmFwIGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0dWlCdXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJzdWJtaXRcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImZvcm0uaW52YWxpZCB8fCBpc1N0b2NrKCkgfHwgKGlzU2hvd0NvZGVGaWVsZHMgJiYgIWZvcm0uY29udHJvbHMudmVyaWZpY2F0aW9uQ29kZS52YWx1ZSAmJiBmb3JtLmNvbnRyb2xzLnBob25lLnZhbGlkKVwiXG4gICAgICAgICAgICBbbG9hZGluZ109XCJsb2FkaW5nKClcIlxuICAgICAgICAgICAgaWNvblN0YXJ0PVwiQHR1aS5zYy5zZW5kXCJcbiAgICAgICAgICAgIGNsYXNzPVwic2VsZi1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgICDQntGC0L/RgNCw0LLQuNGC0YxcbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJncm93IGJhc2lzLTYwIHRleHQtYm9keS1zXCI+XG4gICAgICAgICAgICDQndCw0LbQuNC80LDRjyDQvdCwINC60L3QvtC/0LrRgywg0LLRiyDRgdC+0LPQu9Cw0YjQsNC10YLQtdGB0Ywg0YFcbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0dWlMaW5rXG4gICAgICAgICAgICAgICAgW3BzZXVkb109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY29udGV4dC5kYXRhLm9uQ2xpY2tPZmZlckhhbmRsZXIoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAg0J/QvtC70LjRgtC40LrQvtC5INC60L7QvdGE0LjQtNC10L3RhtC40LDQu9GM0L3QvtGB0YLQuFxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPHR1aS1lcnJvclxuICAgICAgICAqbmdJZj1cImZvcm0uZXJyb3JzICYmIGZvcm0uZXJyb3JzWydzZXJ2ZXJSZXNwb25zZSddXCJcbiAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAvPlxuPC9mb3JtPlxuIl19
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Mtbm90aWZ5LXdoZW4taW4tc3RvY2stZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NsaWVudC11aS9jYXRhbG9nL25vdGlmeS13aGVuLWluLXN0b2NrLWRpYWxvZy9zYy1ub3RpZnktd2hlbi1pbi1zdG9jay1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvbm90aWZ5LXdoZW4taW4tc3RvY2stZGlhbG9nL3NjLW5vdGlmeS13aGVuLWluLXN0b2NrLWRpYWxvZy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyR0FBMkc7QUFFM0csT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBa0IsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLG1CQUFtQixFQUVuQixpQkFBaUIsRUFJakIsYUFBYSxFQUNiLGtCQUFrQixHQUNyQixNQUFNLHdCQUF3QixDQUFDO0FBRWhDLE9BQU8sRUFBRSxhQUFhLEVBQUUsU0FBUyxFQUFvQixRQUFRLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0gsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixF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VCxJQUFJO3dCQUNKLGFBQWE7d0JBQ2IsWUFBWTt3QkFDWixPQUFPO3dCQUNQLFVBQVU7cUJBQ2IsbUJBQ2dCLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzLHVuaWNvcm4vbm8tdXNlbGVzcy11bmRlZmluZWQsIEB0eXBlc2NyaXB0LWVzbGludC91bmJvdW5kLW1ldGhvZCAqL1xuXG5pbXBvcnQgeyBBc3luY1BpcGUsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBpbmplY3QsIE9uSW5pdCwgU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQsIHRvU2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZS9yeGpzLWludGVyb3AnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIFNjQ2F0YWxvZ1NlcnZpY2UsXG4gICAgU2NDb252ZXJ0ZXJzU2VydmljZSxcbiAgICBTY0lQcm9kdWN0Tm90aWZ5V2hlbkluU3RvY2ssXG4gICAgU2NJU3VnZ2VzdGlvblR5cGUsXG4gICAgU2NJV2FyZWhvdXNlLFxuICAgIFNjUHJvZHVjdCxcbiAgICBTY1VzZXIsXG4gICAgU2NVc2VyU2VydmljZSxcbiAgICBTY1dhcmVob3VzZVNlcnZpY2UsXG59IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpQ29udGV4dCwgVHVpU3RyaW5nSGFuZGxlciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVHVpQXBwZWFyYW5jZSwgVHVpQnV0dG9uLCBUdWlEaWFsb2dDb250ZXh0LCBUdWlFcnJvciwgVHVpSWNvbiwgVHVpTGFiZWwsIFR1aUxpbmssIFR1aUxvYWRlciB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUJ1dHRvbkxvYWRpbmcsIFR1aUZpZWxkRXJyb3JQaXBlLCBUdWlUb29sdGlwIH0gZnJvbSAnQHRhaWdhLXVpL2tpdCc7XG5pbXBvcnQgeyBUdWlDYXJkTGFyZ2UgfSBmcm9tICdAdGFpZ2EtdWkvbGF5b3V0JztcbmltcG9ydCB7IFR1aUlucHV0TW9kdWxlLCBUdWlTZWxlY3RNb2R1bGUgfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5JztcbmltcG9ydCB7IFBPTFlNT1JQSEVVU19DT05URVhUIH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgb2YsIHNoYXJlLCBzdGFydFdpdGgsIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEFwaUVycm9yUmVzcG9uc2UgfSBmcm9tICcuLi8uLi9hdXRoJztcbmltcG9ydCB7IFNjRm9ybUZpZWxkc01vZHVsZSB9IGZyb20gJy4uLy4uL2Zvcm0tZmllbGRzL2Zvcm0tZmllbGRzLm1vZHVsZSc7XG5pbXBvcnQgeyBTQ19OT1RJRllfV0hFTl9JTl9TVE9DS19SRVFVSVJFRF9GSUVMRFMgfSBmcm9tICcuLi8uLi9wcm92aWRlcnMnO1xuaW1wb3J0IHsgc2NBdExlYXN0T25lUmVxdWlyZWRWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3NjLWF0LWxlYXN0LW9uZS1yZXF1aXJlZC12YWxpZGF0b3InO1xuaW1wb3J0IHsgcGhvbmVWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi92YWxpZGF0b3JzL3NjLXBob25lLXZhbGlkYXRvcic7XG5pbXBvcnQgeyBTY1ZlcmlmaWNhdGlvbk1vZHVsZSB9IGZyb20gJy4uLy4uL3ZlcmlmaWNhdGlvbi9zYy12ZXJpZmljYXRpb24ubW9kdWxlJztcblxuLyoqXG4gKiDQmtC+0LzQv9C+0L3QtdC90YIg0YTQvtGA0LzRiyDQvtGC0L/RgNCw0LLQutC4INC30LDQv9GA0L7RgdCwINC90LAg0YPQstC10LTQvtC80LvQtdC90LjQtSDQviDQv9C+0YHRgtGD0L/Qu9C10L3QuNC4INGC0L7QstCw0YDQsC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3NjLW5vdGlmeS13aGVuLWluLXN0b2NrLWRpYWxvZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3NjLW5vdGlmeS13aGVuLWluLXN0b2NrLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBTY1ZlcmlmaWNhdGlvbk1vZHVsZSxcbiAgICAgICAgRm9ybXNNb2R1bGUsXG4gICAgICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgICAgIFR1aUlucHV0TW9kdWxlLFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIFR1aUxhYmVsLFxuICAgICAgICBUdWlGaWVsZEVycm9yUGlwZSxcbiAgICAgICAgVHVpRXJyb3IsXG4gICAgICAgIFNjVmVyaWZpY2F0aW9uTW9kdWxlLFxuICAgICAgICBTY0Zvcm1GaWVsZHNNb2R1bGUsXG4gICAgICAgIFR1aVNlbGVjdE1vZHVsZSxcbiAgICAgICAgVHVpQnV0dG9uTG9hZGluZyxcbiAgICAgICAgVHVpTG9hZGVyLFxuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIFR1aUFwcGVhcmFuY2UsXG4gICAgICAgIFR1aUNhcmRMYXJnZSxcbiAgICAgICAgVHVpSWNvbixcbiAgICAgICAgVHVpVG9vbHRpcCxcbiAgICBdLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBTY05vdGlmeVdoZW5JblN0b2NrRGlhbG9nQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiDQmtC+0L3RgtC10LrRgdGCINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAsINCyINC60L7RgtC+0YDQvtC8INC+0YLQutGA0YvRgiDQutC+0LzQv9C+0L3QtdC90YIuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNvbnRleHQ6IFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgeyBwcm9kdWN0OiBTY1Byb2R1Y3Q7IG9uQ2xpY2tPZmZlckhhbmRsZXI6ICgpID0+IHZvaWQ7IG9uRXJyb3JIYW5kbGVyOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkIH0+ID1cbiAgICAgICAgaW5qZWN0PFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgeyBwcm9kdWN0OiBTY1Byb2R1Y3Q7IG9uQ2xpY2tPZmZlckhhbmRsZXI6ICgpID0+IHZvaWQ7IG9uRXJyb3JIYW5kbGVyOiAoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PiB2b2lkIH0+PihQT0xZTU9SUEhFVVNfQ09OVEVYVCk7XG5cbiAgICAvKipcbiAgICAgKiDQotC+0LLQsNGALlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBwcm9kdWN0OiBTY1Byb2R1Y3QgPSB0aGlzLmNvbnRleHQuZGF0YS5wcm9kdWN0O1xuXG4gICAgLyoqXG4gICAgICog0KTQvtGA0LzQsCDQtNC70Y8g0L7RgtC/0YDQsNCy0LrQuCDQt9Cw0L/RgNC+0YHQsCDQvdCwINGD0LLQtdC00L7QvNC70LXQvdC40LUg0L4g0L/QvtGB0YLRg9C/0LvQtdC90LjQuCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGZvcm0gPSBuZXcgRm9ybUdyb3VwKHtcbiAgICAgICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5lbWFpbF0pLFxuICAgICAgICBwaG9uZTogbmV3IEZvcm1Db250cm9sPHN0cmluZyB8IG51bGw+KG51bGwsIFtwaG9uZVZhbGlkYXRvcigpXSksXG4gICAgICAgIHZlcmlmaWNhdGlvbkNvZGU6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBbVmFsaWRhdG9ycy5taW5MZW5ndGgoNildKSxcbiAgICAgICAgd2FyZWhvdXNlSWQ6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmcgfCBudWxsPihudWxsLCBWYWxpZGF0b3JzLnJlcXVpcmVkKSxcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqINCh0L/QuNGB0L7QuiDRgdC60LvQsNC00L7Qsi5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgd2FyZWhvdXNlczogU2lnbmFsPFNjSVdhcmVob3VzZVtdIHwgbnVsbD4gPSB0b1NpZ25hbChpbmplY3QoU2NXYXJlaG91c2VTZXJ2aWNlKS5nZXRXYXJlaG91c2VzJCgpLCB7IGluaXRpYWxWYWx1ZTogbnVsbCB9KTtcblxuICAgIC8qKlxuICAgICAqINCf0LXRgNC10YfQuNGB0LvQtdC90LjQtSDRgtC40L/QvtCyINC/0L7QtNGB0LrQsNC30L7Qui5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgc3VnZ2VzdGlvblR5cGU6IHR5cGVvZiBTY0lTdWdnZXN0aW9uVHlwZSA9IFNjSVN1Z2dlc3Rpb25UeXBlO1xuXG4gICAgLyoqXG4gICAgICog0JzQsNGB0YHQuNCyINC/0L7Qu9C10LksINC60L7RgtC+0YDRi9C1INC00L7Qu9C20L3RiyDQsdGL0YLRjCDQt9Cw0L/QvtC70L3QtdC90Ysg0YXQvtGC0Y8g0LHRiyDQvtC00L3QuNC8INC30L3QsNGH0LXQvdC40LXQvC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgcmVxdWlyZWRGaWVsZHMgPSBpbmplY3QoU0NfTk9USUZZX1dIRU5fSU5fU1RPQ0tfUkVRVUlSRURfRklFTERTKTtcblxuICAgIC8qKlxuICAgICAqINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60LDRgtCw0LvQvtCz0L7QvC5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2F0YWxvZ1NlcnZpY2U6IFNjQ2F0YWxvZ1NlcnZpY2UgPSBpbmplY3QoU2NDYXRhbG9nU2VydmljZSk7XG5cbiAgICAvKipcbiAgICAgKiDQodC10YDQstC40YEg0LrQvtC90LLQtdGA0YLQsNGG0LjQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJpdmF0ZSByZWFkb25seSBjb252ZXJ0ZXJzU2VydmljZTogU2NDb252ZXJ0ZXJzU2VydmljZSA9IGluamVjdChTY0NvbnZlcnRlcnNTZXJ2aWNlKTtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQtNCw0L3QvdGL0YUg0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C1LlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSB1c2VyJDogT2JzZXJ2YWJsZTxTY1VzZXIgfCBudWxsPiA9IGluamVjdChTY1VzZXJTZXJ2aWNlKVxuICAgICAgICAuZ2V0VXNlckNoYW5nZSQoKVxuICAgICAgICAucGlwZShcbiAgICAgICAgICAgIHRhcCgodXNlcikgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghdXNlci5pc0d1ZXN0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybS5wYXRjaFZhbHVlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBob25lOiB1c2VyLmNvbnRhY3RzLnBob25lLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZW1haWw6IHVzZXIuY29udGFjdHMuZW1haWwudmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgU3ViamVjdH0g0YHQvtCx0YvRgtC40Y8g0L7RgtC/0YDQsNCy0LrQuCDRhNC+0YDQvNGLLlxuICAgICAqL1xuICAgIHByb3RlY3RlZCByZWFkb25seSBvblN1Ym1pdCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC30LDQv9GA0L7RgdCwINC00LDQvdC90YvRhSDRg9Cy0LXQtNC+0LzQu9C10L3QuNGPINC+INC/0L7RgdGC0YPQv9C70LXQvdC40Lgg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVxdWVzdCQgPSB0aGlzLm9uU3VibWl0JC5waXBlKFxuICAgICAgICBmaWx0ZXIoKCkgPT4gdGhpcy5mb3JtLnZhbGlkKSxcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuZm9ybS5nZXRSYXdWYWx1ZSgpIGFzIFNjSVByb2R1Y3ROb3RpZnlXaGVuSW5TdG9jayksXG4gICAgICAgIHN3aXRjaE1hcCgodmFsdWUpID0+XG4gICAgICAgICAgICB0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldFByb2R1Y3ROb3RpZnlXaGVuSW5TdG9jayQodGhpcy5wcm9kdWN0LmlkLCB0aGlzLmNvbnZlcnRlcnNTZXJ2aWNlLnJlbW92ZU51bGxSZWN1cnNpdmUodmFsdWUpKS5waXBlKFxuICAgICAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29udGV4dC5jb21wbGV0ZVdpdGgoKTtcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogdW5rbm93bikgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBIdHRwRXJyb3JSZXNwb25zZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBlcnJvcnMsIG1lc3NhZ2UgfSA9IGVycm9yLmVycm9yIGFzIEFwaUVycm9yUmVzcG9uc2U7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcnMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2hhZG93XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoZXJyb3JzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLmdldChrZXkpPy5zZXRFcnJvcnMoeyBzZXJ2ZXJSZXNwb25zZTogdmFsdWUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0RXJyb3JzKHsgc2VydmVyUmVzcG9uc2U6IFttZXNzYWdlXSB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZXh0LmRhdGEub25FcnJvckhhbmRsZXIoZXJyb3IpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9mKHVuZGVmaW5lZCk7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpXG4gICAgICAgICAgICApXG4gICAgICAgICksXG4gICAgICAgIHNoYXJlKClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0KHQuNCz0L3QsNC7INC40LfQvNC10L3QtdC90LjRjyDRgdC+0YHRgtC+0Y/QvdC40Y8g0LfQsNCz0YDRg9C30LrQuCDQtNCw0L3QvdGL0YUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGxvYWRpbmc6IFNpZ25hbDxib29sZWFuPiA9IHRvU2lnbmFsKHRoaXMucmVxdWVzdCQucGlwZShtYXAoKHZhbHVlKSA9PiB2YWx1ZSA9PT0gbnVsbCkpLCB7IGluaXRpYWxWYWx1ZTogZmFsc2UgfSk7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjTm90aWZ5V2hlbkluU3RvY2tEaWFsb2dDb21wb25lbnR9LlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy51c2VyJC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQsNGG0LjRjyDQutC+0LzQv9C+0L3QtdC90YLQsC5cbiAgICAgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnJlcXVpcmVkRmllbGRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmdldCh0aGlzLnJlcXVpcmVkRmllbGRzWzBdKT8uc2V0VmFsaWRhdG9ycyhWYWxpZGF0b3JzLnJlcXVpcmVkKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlcXVpcmVkRmllbGRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5zZXRWYWxpZGF0b3JzKHNjQXRMZWFzdE9uZVJlcXVpcmVkVmFsaWRhdG9yKHRoaXMucmVxdWlyZWRGaWVsZHMpKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCf0YDQvtCy0LXRgNGP0LXRgiwg0Y/QstC70Y/QtdGC0YHRjyDQu9C4INGC0L7QstCw0YAg0LIg0L3QsNC70LjRh9C40LguXG4gICAgICovXG4gICAgcHJvdGVjdGVkIGlzU3RvY2soKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IHdhcmVob3VzZUlkID0gTnVtYmVyKHRoaXMuZm9ybS5nZXQoJ3dhcmVob3VzZUlkJyk/LnZhbHVlID8/IDApO1xuXG4gICAgICAgIHJldHVybiB0aGlzLnByb2R1Y3QuaXNXYXJlaG91c2VTdG9ja0V4aXN0KHdhcmVob3VzZUlkKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQn9GA0LXQvtCx0YDQsNC30YPQtdGCINC+0LHRitC10LrRgiDQsiDQt9C90LDRh9C10L3QuNC1LCDQvtGC0L7QsdGA0LDQttCw0LXQvNC+0LUg0LIg0L/QvtC70LUg0LLQstC+0LTQsC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBpdGVtcyDQktGL0LHRgNCw0L3QvdGL0LUg0LfQvdCw0YfQtdC90LjRjy5cbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgc3RyaW5naWZ5KGl0ZW1zOiByZWFkb25seSBTY0lXYXJlaG91c2VbXSk6IFR1aVN0cmluZ0hhbmRsZXI8VHVpQ29udGV4dDxudW1iZXI+PiB7XG4gICAgICAgIGNvbnN0IGl0ZW1zTWFwID0gbmV3IE1hcChcbiAgICAgICAgICAgIGl0ZW1zLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiBbaXRlbS5pZCwgaXRlbS5uYW1lXSBhcyBbbnVtYmVyLCBzdHJpbmddO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gKHsgJGltcGxpY2l0IH06IFR1aUNvbnRleHQ8bnVtYmVyPikgPT4gaXRlbXNNYXAuZ2V0KCRpbXBsaWNpdCkgPz8gJyc7XG4gICAgfVxufVxuIiwiPGZvcm1cbiAgICBbZm9ybUdyb3VwXT1cImZvcm1cIlxuICAgIChuZ1N1Ym1pdCk9XCJvblN1Ym1pdCQubmV4dCgpXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgZ2FwLTZcIlxuPlxuICAgIEBsZXQgaXNQaG9uZVZpc2libGUgPSByZXF1aXJlZEZpZWxkcy5pbmNsdWRlcygncGhvbmUnKTtcbiAgICBAbGV0IGlzRW1haWxWaXNpYmxlID0gcmVxdWlyZWRGaWVsZHMuaW5jbHVkZXMoJ2VtYWlsJyk7XG4gICAgQGxldCBwaG9uZVRvdWNoZWQgPSBmb3JtLmdldCgncGhvbmUnKT8udG91Y2hlZDtcbiAgICBAbGV0IGVtYWlsVG91Y2hlZCA9IGZvcm0uZ2V0KCdlbWFpbCcpPy50b3VjaGVkO1xuICAgIEBsZXQgaXNTaG93RXJyb3IgPSBmb3JtLmVycm9ycz8uWydhdExlYXN0T25lUmVxdWlyZWQnXSAmJiAoKGlzUGhvbmVWaXNpYmxlICYmIHBob25lVG91Y2hlZCkgfHwgKGlzRW1haWxWaXNpYmxlICYmIGVtYWlsVG91Y2hlZCkpO1xuICAgIEBsZXQgdXNlciA9IHVzZXIkIHwgYXN5bmM7XG4gICAgQGxldCB1c2VyUGhvbmUgPSB1c2VyPy5jb250YWN0cz8ucGhvbmU7XG4gICAgQGxldCBpc1Nob3dDb2RlRmllbGRzID0gISFmb3JtLmNvbnRyb2xzLnBob25lLnZhbHVlICYmICh1c2VyPy5pc0d1ZXN0IHx8IHVzZXJQaG9uZT8udmFsdWUgIT09IGZvcm0uY29udHJvbHMucGhvbmUudmFsdWUgfHwgIXVzZXJQaG9uZT8uaXNBcHByb3ZlZCk7XG5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwidXNlclwiXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LWNvbCBnYXAtM1wiXG4gICAgPlxuICAgICAgICA8bGFiZWwgdHVpTGFiZWw+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgW3R1aUFwcGVhcmFuY2VdPVwiaXNQaG9uZVZpc2libGUgJiYgaXNFbWFpbFZpc2libGUgPyAnb3V0bGluZS1ncmF5c2NhbGUnIDogJ2ZsYXQnXCJcbiAgICAgICAgICAgICAgICBbdHVpQXBwZWFyYW5jZU1vZGVdPVwiaXNTaG93RXJyb3IgPyAnaW52YWxpZCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICB0dWlDYXJkTGFyZ2VcbiAgICAgICAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgIWdhcC0xXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZ109XCJyZXF1aXJlZEZpZWxkcy5sZW5ndGggPD0gMSA/ICcwJyA6IHVuZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgW3N0eWxlLmJvcmRlci1yYWRpdXNdPVwicmVxdWlyZWRGaWVsZHMubGVuZ3RoIDw9IDEgPyAnMCcgOiB1bmRlZmluZWRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxzYy12ZXJpZmljYXRpb24tcGhvbmUtY2hlY2stZm9ybVxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzUGhvbmVWaXNpYmxlXCJcbiAgICAgICAgICAgICAgICAgICAgW3JlcXVpcmVkXT1cIiFmb3JtLmNvbnRyb2xzLmVtYWlsLnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgW3Nob3dDb2RlRmllbGRzXT1cImlzU2hvd0NvZGVGaWVsZHNcIlxuICAgICAgICAgICAgICAgICAgICBbcHNldWRvSW52YWxpZF09XCJpc1Nob3dFcnJvclwiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNQaG9uZVZpc2libGUgJiYgaXNFbWFpbFZpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInR1aS1pc2xhbmRfX3BhcmFncmFwaCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiXG4gICAgICAgICAgICAgICAgICAgIFtzdHlsZS5jb2xvcl09XCJpc1Nob3dFcnJvciA/ICd2YXIoLS10dWktdGV4dC1uZWdhdGl2ZSknIDogJ3ZhcigtLXR1aS10ZXh0LXRlcnRpYXJ5KSdcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLXB4IGZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJpc1Nob3dFcnJvciA/ICd2YXIoLS10dWktdGV4dC1uZWdhdGl2ZSknIDogJ3ZhcigtLXR1aS10ZXh0LXRlcnRpYXJ5KSdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LWJvZHktcyBmb250LWJvbGRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgINCY0LvQuCjQuClcbiAgICAgICAgICAgICAgICAgICAgICAgIDx0dWktaWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthcHBlYXJhbmNlXT1cImlzU2hvd0Vycm9yID8gJ25lZ2F0aXZlJyA6ICdncmF5c2NhbGUnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dWlIaW50RGlyZWN0aW9uPVwicmlnaHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aUhpbnRBcHBlYXJhbmNlPVwiZGFya1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHVpVG9vbHRpcD1cItCf0L7QttCw0LvRg9C50YHRgtCwLCDRg9C60LDQttC40YLQtSDQvdC+0LzQtdGAINGC0LXQu9C10YTQvtC90LAg0LjQu9C4KNC4KSDQsNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLXB4IGZsZXgtMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJpc1Nob3dFcnJvciA/ICd2YXIoLS10dWktdGV4dC1uZWdhdGl2ZSknIDogJ3ZhcigtLXR1aS10ZXh0LXRlcnRpYXJ5KSdcIlxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgICAgIHR1aUxhYmVsXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNFbWFpbFZpc2libGVcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAg0JDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YtcbiAgICAgICAgICAgICAgICAgICAgPHR1aS1pbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgW3BzZXVkb0ludmFsaWRdPVwiaXNTaG93RXJyb3JcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICDQkNC00YDQtdGBINGN0LvQtdC60YLRgNC+0L3QvdC+0Lkg0L/QvtGH0YLRi1xuICAgICAgICAgICAgICAgICAgICAgICAgPHNjLXN1Z2dlc3Rpb24tZmllbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdHVpRGF0YUxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdHlwZV09XCJzdWdnZXN0aW9uVHlwZS5lbWFpbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICA8L3R1aS1pbnB1dD5cbiAgICAgICAgICAgICAgICAgICAgPHR1aS1lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2Vycm9yXT1cIltdIHwgdHVpRmllbGRFcnJvciB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJpc1Nob3dFcnJvclwiXG4gICAgICAgICAgICAgICAgZXJyb3I9XCLQn9C+0LbQsNC70YPQudGB0YLQsCwg0YPQutCw0LbQuNGC0LUg0L3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwINC4KNC40LvQuCkg0LDQtNGA0LXRgSDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0Ysg0LTQu9GPINGD0LLQtdC00L7QvNC70LXQvdC40Y8g0L4g0L/QvtGB0YLRg9C/0LvQtdC90LjQuCDRgtC+0LLQsNGA0LBcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsIHR1aUxhYmVsPlxuICAgICAgICAgICAg0KHQutC70LDQtFxuICAgICAgICAgICAgPHR1aS1zZWxlY3RcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJ3YXJlaG91c2VJZFwiXG4gICAgICAgICAgICAgICAgW3ZhbHVlQ29udGVudF09XCJ3YXJlaG91c2VzKCkgPyBzdHJpbmdpZnkod2FyZWhvdXNlcygpISkgOiBzZWxlY3RMb2FkaW5nXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICDQodC60LvQsNC0XG4gICAgICAgICAgICAgICAgPHR1aS1kYXRhLWxpc3QgKnR1aURhdGFMaXN0PlxuICAgICAgICAgICAgICAgICAgICBAZm9yICh3YXJlaG91c2Ugb2Ygd2FyZWhvdXNlcygpOyB0cmFjayB3YXJlaG91c2UuaWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIEBpZiAoIXByb2R1Y3QuaXNXYXJlaG91c2VTdG9ja0V4aXN0KHdhcmVob3VzZS5pZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR1aU9wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwid2FyZWhvdXNlLmlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IHdhcmVob3VzZS5uYW1lIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L3R1aS1kYXRhLWxpc3Q+XG4gICAgICAgICAgICA8L3R1aS1zZWxlY3Q+XG4gICAgICAgICAgICA8dHVpLWVycm9yXG4gICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwid2FyZWhvdXNlSWRcIlxuICAgICAgICAgICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICpuZ0lmPVwiaXNTdG9jaygpXCJcbiAgICAgICAgICAgICAgICBbc3R5bGUuY29sb3JdPVwiJ3ZhcigtLXR1aS10ZXh0LXBvc2l0aXZlKSdcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCi0L7QstCw0YAg0LjQvNC10LXRgtGB0Y8g0LIg0L3QsNC70LjRh9C40Lgg0L3QsCDQstGL0LHRgNCw0L3QvdC+0Lwg0YHQutC70LDQtNC1XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2VsZWN0TG9hZGluZz4gPHR1aS1sb2FkZXIgLz4gPC9uZy10ZW1wbGF0ZT5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtd3JhcCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHVpQnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwic3VibWl0XCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmb3JtLmludmFsaWQgfHwgaXNTdG9jaygpIHx8IChpc1Nob3dDb2RlRmllbGRzICYmICFmb3JtLmNvbnRyb2xzLnZlcmlmaWNhdGlvbkNvZGUudmFsdWUgJiYgZm9ybS5jb250cm9scy5waG9uZS52YWxpZClcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZygpXCJcbiAgICAgICAgICAgIGljb25TdGFydD1cIkB0dWkuc2Muc2VuZFwiXG4gICAgICAgICAgICBjbGFzcz1cInNlbGYtY2VudGVyXCJcbiAgICAgICAgPlxuICAgICAgICAgICAg0J7RgtC/0YDQsNCy0LjRgtGMXG4gICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ3JvdyBiYXNpcy02MCB0ZXh0LWJvZHktc1wiPlxuICAgICAgICAgICAg0J3QsNC20LjQvNCw0Y8g0L3QsCDQutC90L7Qv9C60YMsINCy0Ysg0YHQvtCz0LvQsNGI0LDQtdGC0LXRgdGMINGBXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgdHVpTGlua1xuICAgICAgICAgICAgICAgIFtwc2V1ZG9dPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImNvbnRleHQuZGF0YS5vbkNsaWNrT2ZmZXJIYW5kbGVyKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgINCf0L7Qu9C40YLQuNC60L7QuSDQutC+0L3RhNC40LTQtdC90YbQuNCw0LvRjNC90L7RgdGC0LhcbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDx0dWktZXJyb3JcbiAgICAgICAgKm5nSWY9XCJmb3JtLmVycm9ycyAmJiBmb3JtLmVycm9yc1snc2VydmVyUmVzcG9uc2UnXVwiXG4gICAgICAgIFtlcnJvcl09XCJbXSB8IHR1aUZpZWxkRXJyb3IgfCBhc3luY1wiXG4gICAgLz5cbjwvZm9ybT5cbiJdfQ==
|
@@ -18,7 +18,7 @@ import * as i3 from '@taiga-ui/legacy';
|
|
18
18
|
import { AbstractTuiControl, TuiInputModule, TuiTextfieldControllerModule, TuiComboBoxModule, TuiInputPhoneModule, TuiSelectModule, TuiInputPasswordModule, AbstractTuiNullableControl, TuiInputNumberComponent, TuiInputNumberModule, TuiIslandDirective, TuiTextareaModule } from '@taiga-ui/legacy';
|
19
19
|
import { isNil, isUndefined, isObject } from 'lodash-es';
|
20
20
|
import * as i2$2 from '@angular/common';
|
21
|
-
import { CommonModule, NgIf, AsyncPipe,
|
21
|
+
import { CommonModule, NgIf, AsyncPipe, NgFor, NgClass } from '@angular/common';
|
22
22
|
import * as i5 from '@taiga-ui/core/components/label';
|
23
23
|
import * as i8 from '@maskito/angular';
|
24
24
|
import { MaskitoDirective } from '@maskito/angular';
|
@@ -4831,6 +4831,7 @@ class ScNotifyWhenInStockDialogComponent {
|
|
4831
4831
|
else if (message) {
|
4832
4832
|
this.form.setErrors({ serverResponse: [message] });
|
4833
4833
|
}
|
4834
|
+
this.context.data.onErrorHandler(error);
|
4834
4835
|
}
|
4835
4836
|
return of(undefined);
|
4836
4837
|
}), startWith(null))), share());
|
@@ -4895,7 +4896,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
4895
4896
|
TuiCardLarge,
|
4896
4897
|
TuiIcon,
|
4897
4898
|
TuiTooltip,
|
4898
|
-
NgTemplateOutlet,
|
4899
4899
|
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<form\n [formGroup]=\"form\"\n (ngSubmit)=\"onSubmit$.next()\"\n class=\"flex flex-col gap-6\"\n>\n @let isPhoneVisible = requiredFields.includes('phone');\n @let isEmailVisible = requiredFields.includes('email');\n @let phoneTouched = form.get('phone')?.touched;\n @let emailTouched = form.get('email')?.touched;\n @let isShowError = form.errors?.['atLeastOneRequired'] && ((isPhoneVisible && phoneTouched) || (isEmailVisible && emailTouched));\n @let user = user$ | async;\n @let userPhone = user?.contacts?.phone;\n @let isShowCodeFields = !!form.controls.phone.value && (user?.isGuest || userPhone?.value !== form.controls.phone.value || !userPhone?.isApproved);\n\n <div\n *ngIf=\"user\"\n class=\"flex flex-col gap-3\"\n >\n <label tuiLabel>\n <div\n [tuiAppearance]=\"isPhoneVisible && isEmailVisible ? 'outline-grayscale' : 'flat'\"\n [tuiAppearanceMode]=\"isShowError ? 'invalid' : null\"\n tuiCardLarge\n class=\"flex flex-col !gap-1\"\n [style.padding]=\"requiredFields.length <= 1 ? '0' : undefined\"\n [style.border-radius]=\"requiredFields.length <= 1 ? '0' : undefined\"\n >\n <sc-verification-phone-check-form\n *ngIf=\"isPhoneVisible\"\n [required]=\"!form.controls.email.value\"\n [showCodeFields]=\"isShowCodeFields\"\n [pseudoInvalid]=\"isShowError\"\n />\n <div\n *ngIf=\"isPhoneVisible && isEmailVisible\"\n class=\"tui-island__paragraph flex items-center gap-3\"\n [style.color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n >\n <div\n class=\"h-px flex-1\"\n [style.background-color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n ></div>\n <div class=\"text-body-s font-bold\">\n \u0418\u043B\u0438(\u0438)\n <tui-icon\n [appearance]=\"isShowError ? 'negative' : 'grayscale'\"\n tuiHintDirection=\"right\"\n tuiHintAppearance=\"dark\"\n tuiTooltip=\"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438\u043B\u0438(\u0438) \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\"\n />\n </div>\n <div\n class=\"h-px flex-1\"\n [style.background-color]=\"isShowError ? 'var(--tui-text-negative)' : 'var(--tui-text-tertiary)'\"\n ></div>\n </div>\n <label\n tuiLabel\n *ngIf=\"isEmailVisible\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <tui-input\n [pseudoInvalid]=\"isShowError\"\n formControlName=\"email\"\n >\n \u0410\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B\n <sc-suggestion-field\n *tuiDataList\n [type]=\"suggestionType.email\"\n />\n </tui-input>\n <tui-error\n formControlName=\"email\"\n [error]=\"[] | tuiFieldError | async\"\n />\n </label>\n </div>\n <tui-error\n *ngIf=\"isShowError\"\n error=\"\u041F\u043E\u0436\u0430\u043B\u0443\u0439\u0441\u0442\u0430, \u0443\u043A\u0430\u0436\u0438\u0442\u0435 \u043D\u043E\u043C\u0435\u0440 \u0442\u0435\u043B\u0435\u0444\u043E\u043D\u0430 \u0438(\u0438\u043B\u0438) \u0430\u0434\u0440\u0435\u0441 \u044D\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0439 \u043F\u043E\u0447\u0442\u044B \u0434\u043B\u044F \u0443\u0432\u0435\u0434\u043E\u043C\u043B\u0435\u043D\u0438\u044F \u043E \u043F\u043E\u0441\u0442\u0443\u043F\u043B\u0435\u043D\u0438\u0438 \u0442\u043E\u0432\u0430\u0440\u0430\"\n />\n </label>\n <label tuiLabel>\n \u0421\u043A\u043B\u0430\u0434\n <tui-select\n formControlName=\"warehouseId\"\n [valueContent]=\"warehouses() ? stringify(warehouses()!) : selectLoading\"\n >\n \u0421\u043A\u043B\u0430\u0434\n <tui-data-list *tuiDataList>\n @for (warehouse of warehouses(); track warehouse.id) {\n @if (!product.isWarehouseStockExist(warehouse.id)) {\n <button\n tuiOption\n [value]=\"warehouse.id\"\n >\n {{ warehouse.name }}\n </button>\n }\n }\n </tui-data-list>\n </tui-select>\n <tui-error\n formControlName=\"warehouseId\"\n [error]=\"[] | tuiFieldError | async\"\n />\n\n <span\n *ngIf=\"isStock()\"\n [style.color]=\"'var(--tui-text-positive)'\"\n >\n \u0422\u043E\u0432\u0430\u0440 \u0438\u043C\u0435\u0435\u0442\u0441\u044F \u0432 \u043D\u0430\u043B\u0438\u0447\u0438\u0438 \u043D\u0430 \u0432\u044B\u0431\u0440\u0430\u043D\u043D\u043E\u043C \u0441\u043A\u043B\u0430\u0434\u0435\n </span>\n </label>\n <ng-template #selectLoading> <tui-loader /> </ng-template>\n </div>\n\n <div class=\"flex flex-wrap items-center gap-3\">\n <button\n tuiButton\n type=\"submit\"\n [disabled]=\"form.invalid || isStock() || (isShowCodeFields && !form.controls.verificationCode.value && form.controls.phone.valid)\"\n [loading]=\"loading()\"\n iconStart=\"@tui.sc.send\"\n class=\"self-center\"\n >\n \u041E\u0442\u043F\u0440\u0430\u0432\u0438\u0442\u044C\n </button>\n <div class=\"grow basis-60 text-body-s\">\n \u041D\u0430\u0436\u0438\u043C\u0430\u044F \u043D\u0430 \u043A\u043D\u043E\u043F\u043A\u0443, \u0432\u044B \u0441\u043E\u0433\u043B\u0430\u0448\u0430\u0435\u0442\u0435\u0441\u044C \u0441\n <button\n tuiLink\n [pseudo]=\"true\"\n type=\"button\"\n (click)=\"context.data.onClickOfferHandler()\"\n >\n \u041F\u043E\u043B\u0438\u0442\u0438\u043A\u043E\u0439 \u043A\u043E\u043D\u0444\u0438\u0434\u0435\u043D\u0446\u0438\u0430\u043B\u044C\u043D\u043E\u0441\u0442\u0438\n </button>\n </div>\n </div>\n\n <tui-error\n *ngIf=\"form.errors && form.errors['serverResponse']\"\n [error]=\"[] | tuiFieldError | async\"\n />\n</form>\n" }]
|
4900
4900
|
}], ctorParameters: () => [] });
|
4901
4901
|
|