@snabcentr/client-ui 4.15.1 → 4.16.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.
Files changed (23) hide show
  1. package/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.d.ts +8 -0
  2. package/catalog/price-history/sc-price-history.component.d.ts +4 -0
  3. package/catalog/sc-catalog.module.d.ts +1 -1
  4. package/configurators/sandwich/sc-sandwich.component.d.ts +4 -0
  5. package/configurators/sandwich_m2/sc-sandwich-m2.component.d.ts +8 -0
  6. package/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.d.ts +0 -6
  7. package/esm2022/cart/add-or-editing-cart-item-dialog/add-or-editing-cart-item-form/sc-add-or-editing-cart-item-form.component.mjs +22 -18
  8. package/esm2022/catalog/input-quantity/sc-input-quantity.component.mjs +7 -6
  9. package/esm2022/catalog/price-history/sc-price-history.component.mjs +9 -5
  10. package/esm2022/catalog/sc-catalog.module.mjs +5 -3
  11. package/esm2022/configurators/sandwich/sc-sandwich.component.mjs +11 -6
  12. package/esm2022/configurators/sandwich_m2/sc-sandwich-m2.component.mjs +19 -11
  13. package/esm2022/delivery-address/add-delivery-address-dialog/sc-add-delivery-address-dialog.component.mjs +6 -14
  14. package/esm2022/order/order-item/sc-order-item.component.mjs +8 -4
  15. package/esm2022/order/order-items-list/sc-order-items-list.component.mjs +9 -5
  16. package/esm2022/validators/step-validator.mjs +4 -4
  17. package/fesm2022/snabcentr-client-ui.mjs +80 -57
  18. package/fesm2022/snabcentr-client-ui.mjs.map +1 -1
  19. package/order/order-item/sc-order-item.component.d.ts +4 -0
  20. package/order/order-items-list/sc-order-items-list.component.d.ts +4 -0
  21. package/package.json +2 -2
  22. package/release_notes.tmp +4 -2
  23. package/validators/step-validator.d.ts +1 -2
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
2
  /* eslint-disable class-methods-use-this,lodash/prefer-lodash-method */
3
3
  import { ChangeDetectionStrategy, Component, Inject, inject, Input, Optional } from '@angular/core';
4
- import { ScUserMetrikaGoalsEnum } from '@snabcentr/client-core';
4
+ import { ScNumberHelper, ScUserMetrikaGoalsEnum } from '@snabcentr/client-core';
5
5
  import { TUI_IS_MOBILE, TuiDay, TuiDayRange, tuiIsFalsy, tuiIsPresent, TuiMonth, tuiPure } from '@taiga-ui/cdk';
6
6
  import { TUI_MONTHS } from '@taiga-ui/core';
7
7
  import { POLYMORPHEUS_CONTEXT } from '@taiga-ui/polymorpheus';
@@ -48,7 +48,11 @@ export class ScPriceHistoryComponent {
48
48
  *
49
49
  * @param value Значение оси Y.
50
50
  */
51
- this.yStringify = (value) => `${value.toLocaleString('ru-RU')} ₽`;
51
+ this.yStringify = (value) => `${ScNumberHelper.formatMoney(value)} ₽`;
52
+ /**
53
+ * Настройки вывода цен в рублях.
54
+ */
55
+ this.moneyFormat = ScNumberHelper.getMoneyFormat();
52
56
  if (context) {
53
57
  this.product = context.data.product;
54
58
  }
@@ -115,7 +119,7 @@ export class ScPriceHistoryComponent {
115
119
  }, []));
116
120
  }
117
121
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScPriceHistoryComponent, deps: [{ token: i1.ScCatalogService }, { token: TUI_MONTHS }, { token: i1.ScUserMetrikaService }, { token: POLYMORPHEUS_CONTEXT, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
118
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScPriceHistoryComponent, selector: "sc-price-history", inputs: { product: "product" }, ngImport: i0, template: "<tui-loader [showLoader]=\"!!(loadingHistory$ | async)\"> </tui-loader>\n\n<div\n *ngIf=\"(loadingHistory$ | async) === false\"\n class=\"flex flex-col items-center\"\n>\n <ng-container *ngIf=\"priceInfo$ | async as priceInfo; else isNotExist\">\n <div class=\"w-174 mb-1 text-end text-lg font-bold\">\u043E\u0442 {{ priceInfo.min.toLocaleString() }} \u20BD \u0434\u043E {{ priceInfo.max.toLocaleString() }} \u20BD</div>\n\n <ng-container *ngIf=\"history$ | async as history\">\n <div\n *ngIf=\"range$ | async as range\"\n class=\"relative h-56 w-full p-5 text-tui-primary\"\n >\n <tui-axes\n *ngIf=\"computeLabels$(range) | async as labels\"\n class=\"h-full\"\n [axisXLabels]=\"labels\"\n [horizontalLines]=\"4\"\n [verticalLines]=\"labels.length\"\n >\n @let height = priceInfo.max - priceInfo.min;\n <tui-line-days-chart\n *ngIf=\"(height / 100) * paddingPercent as padding\"\n [height]=\"height + (height / 100) * paddingPercent * 2\"\n [smoothingFactor]=\"10\"\n [y]=\"priceInfo.min - (height / 100) * paddingPercent\"\n [value]=\"computeValue(range, history)\"\n [xStringify]=\"xStringify$ | async\"\n [yStringify]=\"yStringify\"\n [hintContent]=\"hint\"\n class=\"chart\"\n ></tui-line-days-chart>\n </tui-axes>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #isNotExist>\n <p class=\"text-base font-bold\">\u0426\u0435\u043D\u0430 \u043D\u0430 \u0442\u043E\u0432\u0430\u0440 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u044F\u043B\u0430\u0441\u044C</p>\n </ng-template>\n <ng-template\n #hint\n let-data\n >\n <div class=\"font-bold\">{{ data[1].toLocaleString() }} \u20BD</div>\n <div>{{ data[0] }}</div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "component", type: i4.TuiLineDaysChart, selector: "tui-line-days-chart", inputs: ["y", "height", "smoothingFactor", "hintContent", "xStringify", "yStringify", "dots", "value"] }, { kind: "component", type: i4.TuiAxes, selector: "tui-axes", inputs: ["axisX", "axisXLabels", "axisY", "axisYInset", "axisYLabels", "axisYName", "axisYSecondaryInset", "axisYSecondaryLabels", "axisYSecondaryName", "horizontalLines", "horizontalLinesHandler", "verticalLines", "verticalLinesHandler"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
122
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ScPriceHistoryComponent, selector: "sc-price-history", inputs: { product: "product" }, ngImport: i0, template: "<tui-loader [showLoader]=\"!!(loadingHistory$ | async)\"> </tui-loader>\n\n<div\n *ngIf=\"(loadingHistory$ | async) === false\"\n class=\"flex flex-col items-center\"\n>\n <ng-container *ngIf=\"priceInfo$ | async as priceInfo; else isNotExist\">\n <div class=\"w-174 mb-1 text-end text-lg font-bold\">\n \u043E\u0442 {{ priceInfo.min | tuiFormatNumber: moneyFormat | async }} \u20BD \u0434\u043E {{ priceInfo.max | tuiFormatNumber: moneyFormat | async }} \u20BD\n </div>\n\n <ng-container *ngIf=\"history$ | async as history\">\n <div\n *ngIf=\"range$ | async as range\"\n class=\"relative h-56 w-full p-5 text-tui-primary\"\n >\n <tui-axes\n *ngIf=\"computeLabels$(range) | async as labels\"\n class=\"h-full\"\n [axisXLabels]=\"labels\"\n [horizontalLines]=\"4\"\n [verticalLines]=\"labels.length\"\n >\n @let height = priceInfo.max - priceInfo.min;\n <tui-line-days-chart\n *ngIf=\"(height / 100) * paddingPercent as padding\"\n [height]=\"height + (height / 100) * paddingPercent * 2\"\n [smoothingFactor]=\"10\"\n [y]=\"priceInfo.min - (height / 100) * paddingPercent\"\n [value]=\"computeValue(range, history)\"\n [xStringify]=\"xStringify$ | async\"\n [yStringify]=\"yStringify\"\n [hintContent]=\"hint\"\n class=\"chart\"\n ></tui-line-days-chart>\n </tui-axes>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #isNotExist>\n <p class=\"text-base font-bold\">\u0426\u0435\u043D\u0430 \u043D\u0430 \u0442\u043E\u0432\u0430\u0440 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u044F\u043B\u0430\u0441\u044C</p>\n </ng-template>\n <ng-template\n #hint\n let-data\n >\n <div class=\"font-bold\">{{ data[1] | tuiFormatNumber: moneyFormat | async }} \u20BD</div>\n <div>{{ data[0] }}</div>\n </ng-template>\n</div>\n", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "showLoader"] }, { kind: "component", type: i4.TuiLineDaysChart, selector: "tui-line-days-chart", inputs: ["y", "height", "smoothingFactor", "hintContent", "xStringify", "yStringify", "dots", "value"] }, { kind: "component", type: i4.TuiAxes, selector: "tui-axes", inputs: ["axisX", "axisXLabels", "axisY", "axisYInset", "axisYLabels", "axisYName", "axisYSecondaryInset", "axisYSecondaryLabels", "axisYSecondaryName", "horizontalLines", "horizontalLinesHandler", "verticalLines", "verticalLinesHandler"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }, { kind: "pipe", type: i3.TuiFormatNumberPipe, name: "tuiFormatNumber" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
119
123
  }
120
124
  __decorate([
121
125
  tuiPure
@@ -125,7 +129,7 @@ __decorate([
125
129
  ], ScPriceHistoryComponent.prototype, "computeValue", null);
126
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScPriceHistoryComponent, decorators: [{
127
131
  type: Component,
128
- args: [{ selector: 'sc-price-history', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-loader [showLoader]=\"!!(loadingHistory$ | async)\"> </tui-loader>\n\n<div\n *ngIf=\"(loadingHistory$ | async) === false\"\n class=\"flex flex-col items-center\"\n>\n <ng-container *ngIf=\"priceInfo$ | async as priceInfo; else isNotExist\">\n <div class=\"w-174 mb-1 text-end text-lg font-bold\">\u043E\u0442 {{ priceInfo.min.toLocaleString() }} \u20BD \u0434\u043E {{ priceInfo.max.toLocaleString() }} \u20BD</div>\n\n <ng-container *ngIf=\"history$ | async as history\">\n <div\n *ngIf=\"range$ | async as range\"\n class=\"relative h-56 w-full p-5 text-tui-primary\"\n >\n <tui-axes\n *ngIf=\"computeLabels$(range) | async as labels\"\n class=\"h-full\"\n [axisXLabels]=\"labels\"\n [horizontalLines]=\"4\"\n [verticalLines]=\"labels.length\"\n >\n @let height = priceInfo.max - priceInfo.min;\n <tui-line-days-chart\n *ngIf=\"(height / 100) * paddingPercent as padding\"\n [height]=\"height + (height / 100) * paddingPercent * 2\"\n [smoothingFactor]=\"10\"\n [y]=\"priceInfo.min - (height / 100) * paddingPercent\"\n [value]=\"computeValue(range, history)\"\n [xStringify]=\"xStringify$ | async\"\n [yStringify]=\"yStringify\"\n [hintContent]=\"hint\"\n class=\"chart\"\n ></tui-line-days-chart>\n </tui-axes>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #isNotExist>\n <p class=\"text-base font-bold\">\u0426\u0435\u043D\u0430 \u043D\u0430 \u0442\u043E\u0432\u0430\u0440 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u044F\u043B\u0430\u0441\u044C</p>\n </ng-template>\n <ng-template\n #hint\n let-data\n >\n <div class=\"font-bold\">{{ data[1].toLocaleString() }} \u20BD</div>\n <div>{{ data[0] }}</div>\n </ng-template>\n</div>\n" }]
132
+ args: [{ selector: 'sc-price-history', changeDetection: ChangeDetectionStrategy.OnPush, template: "<tui-loader [showLoader]=\"!!(loadingHistory$ | async)\"> </tui-loader>\n\n<div\n *ngIf=\"(loadingHistory$ | async) === false\"\n class=\"flex flex-col items-center\"\n>\n <ng-container *ngIf=\"priceInfo$ | async as priceInfo; else isNotExist\">\n <div class=\"w-174 mb-1 text-end text-lg font-bold\">\n \u043E\u0442 {{ priceInfo.min | tuiFormatNumber: moneyFormat | async }} \u20BD \u0434\u043E {{ priceInfo.max | tuiFormatNumber: moneyFormat | async }} \u20BD\n </div>\n\n <ng-container *ngIf=\"history$ | async as history\">\n <div\n *ngIf=\"range$ | async as range\"\n class=\"relative h-56 w-full p-5 text-tui-primary\"\n >\n <tui-axes\n *ngIf=\"computeLabels$(range) | async as labels\"\n class=\"h-full\"\n [axisXLabels]=\"labels\"\n [horizontalLines]=\"4\"\n [verticalLines]=\"labels.length\"\n >\n @let height = priceInfo.max - priceInfo.min;\n <tui-line-days-chart\n *ngIf=\"(height / 100) * paddingPercent as padding\"\n [height]=\"height + (height / 100) * paddingPercent * 2\"\n [smoothingFactor]=\"10\"\n [y]=\"priceInfo.min - (height / 100) * paddingPercent\"\n [value]=\"computeValue(range, history)\"\n [xStringify]=\"xStringify$ | async\"\n [yStringify]=\"yStringify\"\n [hintContent]=\"hint\"\n class=\"chart\"\n ></tui-line-days-chart>\n </tui-axes>\n </div>\n </ng-container>\n </ng-container>\n <ng-template #isNotExist>\n <p class=\"text-base font-bold\">\u0426\u0435\u043D\u0430 \u043D\u0430 \u0442\u043E\u0432\u0430\u0440 \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u044F\u043B\u0430\u0441\u044C</p>\n </ng-template>\n <ng-template\n #hint\n let-data\n >\n <div class=\"font-bold\">{{ data[1] | tuiFormatNumber: moneyFormat | async }} \u20BD</div>\n <div>{{ data[0] }}</div>\n </ng-template>\n</div>\n" }]
129
133
  }], ctorParameters: () => [{ type: i1.ScCatalogService }, { type: i5.Observable, decorators: [{
130
134
  type: Inject,
131
135
  args: [TUI_MONTHS]
@@ -137,4 +141,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
137
141
  }] }], propDecorators: { product: [{
138
142
  type: Input
139
143
  }], computeLabels$: [], computeValue: [] } });
140
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJpY2UtaGlzdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9wcmljZS1oaXN0b3J5L3NjLXByaWNlLWhpc3RvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvcHJpY2UtaGlzdG9yeS9zYy1wcmljZS1oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1RUFBdUU7QUFFdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUErQixzQkFBc0IsRUFBd0IsTUFBTSx3QkFBd0IsQ0FBQztBQUNuSCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFvQixNQUFNLGVBQWUsQ0FBQztBQUNsSSxPQUFPLEVBQUUsVUFBVSxFQUFvQixNQUFNLGdCQUFnQixDQUFDO0FBQzlELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFjLFdBQVcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7Ozs7O0FBRTVFOztHQUVHO0FBTUgsTUFBTSxPQUFPLHVCQUF1QjtJQTBEaEM7Ozs7Ozs7T0FPRztJQUNILFlBQ3FCLGNBQWdDLEVBQ1osT0FBc0MsRUFDMUQsa0JBQXdDLEVBR3hDLE9BQXdEO1FBTHhELG1CQUFjLEdBQWQsY0FBYyxDQUFrQjtRQUNaLFlBQU8sR0FBUCxPQUFPLENBQStCO1FBQzFELHVCQUFrQixHQUFsQixrQkFBa0IsQ0FB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LElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQzNJLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDckI7YUFDSixDQUFDO1FBQ04sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUNiLENBQUM7SUFDTixDQUFDOytHQTFLUSx1QkFBdUIsa0RBb0VwQixVQUFVLGlEQUdWLG9CQUFvQjttR0F2RXZCLHVCQUF1Qix3RkNqQnBDLDhwRUFnREE7O0FEbUdXO0lBRE4sT0FBTzs2REFhUDtBQVdNO0lBRE4sT0FBTzsyREFrQlA7NEZBMUtRLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDSSxrQkFBa0IsbUJBRVgsdUJBQXVCLENBQUMsTUFBTTs7MEJBc0UxQyxNQUFNOzJCQUFDLFVBQVU7OzBCQUVqQixRQUFROzswQkFDUixNQUFNOzJCQUFDLG9CQUFvQjt5Q0E5RGhCLE9BQU87c0JBQXRCLEtBQUs7Z0JBeUhDLGNBQWMsTUF1QmQsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGNsYXNzLW1ldGhvZHMtdXNlLXRoaXMsbG9kYXNoL3ByZWZlci1sb2Rhc2gtbWV0aG9kICovXG5cbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIEluamVjdCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU2NDYXRhbG9nU2VydmljZSwgU2NQcm9kdWN0LCBTY1VzZXJNZXRyaWthR29hbHNFbnVtLCBTY1VzZXJNZXRyaWthU2VydmljZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVFVJX0lTX01PQklMRSwgVHVpRGF5LCBUdWlEYXlSYW5nZSwgdHVpSXNGYWxzeSwgdHVpSXNQcmVzZW50LCBUdWlNb250aCwgdHVpUHVyZSwgVHVpU3RyaW5nSGFuZGxlciB9IGZyb20gJ0B0YWlnYS11aS9jZGsnO1xuaW1wb3J0IHsgVFVJX01PTlRIUywgVHVpRGlhbG9nQ29udGV4dCB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFBPTFlNT1JQSEVVU19DT05URVhUIH0gZnJvbSAnQHRhaWdhLXVpL3BvbHltb3JwaGV1cyc7XG5pbXBvcnQgeyBmaWx0ZXIsIG1hcCwgT2JzZXJ2YWJsZSwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgdGFwIH0gZnJvbSAncnhqcyc7XG5cbi8qKlxuICog0JPRgNCw0YTQuNC6INC40YHRgtC+0YDQuNC4INGG0LXQvSDRgtC+0LLQsNGA0LAg0LjQu9C4INGD0YHQu9GD0LPQuC5cbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdzYy1wcmljZS1oaXN0b3J5JyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2MtcHJpY2UtaGlzdG9yeS5jb21wb25lbnQuaHRtbCcsXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG59KVxuZXhwb3J0IGNsYXNzIFNjUHJpY2VIaXN0b3J5Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LLRgNC10LzQtdC90L3QvtCz0L4g0L/RgNC+0LzQtdC20YPRgtC60LAg0LjRgdGC0L7RgNC40Lgg0YbQtdC9LlxuICAgICAqL1xuICAgIHB1YmxpYyByYW5nZSQ6IE9ic2VydmFibGU8VHVpRGF5UmFuZ2U+O1xuXG4gICAgLyoqXG4gICAgICog0KLQvtCy0LDRgCDQuNC70Lgg0YPRgdC70YPQs9CwLCDQtNC70Y8g0LrQvtGC0L7RgNC+0LPQviDQvdC10L7QsdGF0L7QtNC40LzQviDQvtGC0L7QsdGA0LDQt9C40YLRjCDQuNGB0YLQvtGA0LjRjiDRhtC10L0uXG4gICAgICovXG4gICAgQElucHV0KCkgcHVibGljIHByb2R1Y3Q6IFNjUHJvZHVjdDtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNGB0YLQvtGA0LjQuCDRhtC10L0uXG4gICAgICovXG4gICAgcHVibGljIGhpc3RvcnkkPzogT2JzZXJ2YWJsZTxSZWFkb25seUFycmF5PFtUdWlEYXksIG51bWJlcl0+IHwgbnVsbD47XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0LjQt9C80LXQvdC10L3QuNGPINGB0L7RgdGC0L7Rj9C90LjRjyDQt9Cw0LPRgNGD0LfQutC4INC00LDQvdC90YvRhSDQuNGB0YLQvtGA0LjQuCDRhtC10L0uXG4gICAgICovXG4gICAgcHVibGljIGxvYWRpbmdIaXN0b3J5JD86IE9ic2VydmFibGU8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICAgKiDQnNCw0LrRgdC40LzQsNC70YzQvdCw0Y8g0YbQtdC90LAg0YLQvtCy0LDRgNCwLlxuICAgICAqL1xuICAgIHB1YmxpYyBwcmljZUluZm8kPzogT2JzZXJ2YWJsZTx7XG4gICAgICAgIG1pbjogbnVtYmVyO1xuICAgICAgICBtYXg6IG51bWJlcjtcbiAgICB9PjtcblxuICAgIC8qKlxuICAgICAqINCf0YDQuNC30L3QsNC6INGC0L7Qs9C+LCDQvtGC0L7QsdGA0LDQttCw0LXRgtGB0Y8g0Y3RgtC+0YIg0LrQvtC80L/QvtC90LXQvdGCINC90LAg0LzQvtCx0LjQu9GM0L3QvtC8INGD0YHRgtGA0L7QudGB0YLQstC1INC40LvQuCDQvdC10YIuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGlzTW9iaWxlOiBib29sZWFuID0gaW5qZWN0KFRVSV9JU19NT0JJTEUpO1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INGE0YPQvdC60YbQuNGPINC00LvRjyDQv9GA0LXQvtCx0YDQsNC30L7QstCw0L3QuNGPINC30L3QsNGH0LXQvdC40Y8gbnVtYmVyINCyINGB0YLRgNC+0LrRgyDQsiDQv9C+0LTRgdC60LDQt9C60LUg0L/QviDQvtGB0LggWC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgeFN0cmluZ2lmeSQ6IE9ic2VydmFibGU8VHVpU3RyaW5nSGFuZGxlcjxUdWlEYXk+PiA9IHRoaXMubW9udGhzJC5waXBlKFxuICAgICAgICBtYXAoXG4gICAgICAgICAgICAobW9udGhzKSA9PlxuICAgICAgICAgICAgICAgICh7IG1vbnRoLCBkYXkgfSkgPT5cbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGAke21vbnRoc1ttb250aF19LCAke2RheX1gXG4gICAgICAgIClcbiAgICApO1xuXG4gICAgLyoqXG4gICAgICog0J7RgtC90L7RgdC40YLQtdC70YzQvdGL0LUg0L7RgtGB0YLRg9C/0Ysg0L7RgiDQstC10YDRhdC90LXQs9C+INC4INC90LjQttC90LXQs9C+INC60YDQsNGPINCyINC/0YDQvtGG0LXQvdGC0LDRhS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgcGFkZGluZ1BlcmNlbnQ6IG51bWJlciA9IDEwO1xuXG4gICAgLyoqXG4gICAgICog0KTRg9C90LrRhtC40Y8g0LTQu9GPINC/0YDQtdC+0LHRgNCw0LfQvtCy0LDQvdC40Y8g0LfQvdCw0YfQtdC90LjRjyBudW1iZXIg0LIg0YHRgtGA0L7QutGDINCyINC/0L7QtNGB0LrQsNC30LrQtSDQv9C+INC+0YHQuCBZLlxuICAgICAqXG4gICAgICogQHBhcmFtIHZhbHVlINCX0L3QsNGH0LXQvdC40LUg0L7RgdC4IFkuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IHlTdHJpbmdpZnk6IFR1aVN0cmluZ0hhbmRsZXI8bnVtYmVyPiA9ICh2YWx1ZSkgPT4gYCR7dmFsdWUudG9Mb2NhbGVTdHJpbmcoJ3J1LVJVJyl9IOKCvWA7XG5cbiAgICAvKipcbiAgICAgKiDQmNC90LjRhtC40LDQu9C40LfQuNGA0YPQtdGCINGN0LrQt9C10LzQv9C70Y/RgCDQutC70LDRgdGB0LAge0BsaW5rIFNjUHJpY2VIaXN0b3J5Q29tcG9uZW50fS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBjYXRhbG9nU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGA0LDQsdC+0YLRiyDRgSDQutCw0YLQsNC70L7Qs9C+0LwuXG4gICAgICogQHBhcmFtIG1vbnRocyQg0J/QtdGA0LXRh9C40YHQu9C10L3QuNC1INC80LXRgdGP0YbQtdCyLlxuICAgICAqIEBwYXJhbSB1c2VyTWV0cmlrYVNlcnZpY2Ug0KHQtdGA0LLQuNGBINC00LvRjyDRgdCx0L7RgNCwINC80LXRgtGA0LjQuiDQviDQtNC10LnRgdGC0LLQuNGP0YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuXG4gICAgICogQHBhcmFtIGNvbnRleHQg0JrQvtC90YLQtdC60YHRgiDQtNC40LDQu9C+0LPQvtCy0L7Qs9C+INC+0LrQvdCwLCDQsiDQutC+0YLQvtGA0L7QvCDQvtGC0LrRgNGL0YIg0LrQvtC80L/QvtC90LXQvdGCLlxuICAgICAqL1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjYXRhbG9nU2VydmljZTogU2NDYXRhbG9nU2VydmljZSxcbiAgICAgICAgQEluamVjdChUVUlfTU9OVEhTKSBwcml2YXRlIHJlYWRvbmx5IG1vbnRocyQ6IE9ic2VydmFibGU8cmVhZG9ubHkgc3RyaW5nW10+LFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJNZXRyaWthU2VydmljZTogU2NVc2VyTWV0cmlrYVNlcnZpY2UsXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoUE9MWU1PUlBIRVVTX0NPTlRFWFQpXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dD86IFR1aURpYWxvZ0NvbnRleHQ8dm9pZCwgeyBwcm9kdWN0OiBTY1Byb2R1Y3QgfT5cbiAgICApIHtcbiAgICAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgICAgIHRoaXMucHJvZHVjdCA9IGNvbnRleHQuZGF0YS5wcm9kdWN0O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBpbmhlcml0RG9jICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmhpc3RvcnkkID0gdGhpcy5jYXRhbG9nU2VydmljZS5nZXRQcmljZUhpc3RvcnkkKHRoaXMucHJvZHVjdCkucGlwZShcbiAgICAgICAgICAgIGZpbHRlcih0dWlJc1ByZXNlbnQpLFxuICAgICAgICAgICAgbWFwKChoaXN0b3J5KSA9PlxuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGhpc3RvcnkpXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBzZWN1cml0eS9kZXRlY3Qtb2JqZWN0LWluamVjdGlvblxuICAgICAgICAgICAgICAgICAgICAubWFwKChpdGVtKTogW1R1aURheSwgbnVtYmVyXSA9PiBbVHVpRGF5Lm5vcm1hbGl6ZVBhcnNlKGl0ZW0sICdETVknKSwgaGlzdG9yeVtpdGVtXS5jb3N0XSlcbiAgICAgICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IChhWzBdID4gYlswXSA/IDEgOiAtMSkpXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgc3RhcnRXaXRoKG51bGwpLFxuICAgICAgICAgICAgc2hhcmVSZXBsYXkoeyBidWZmZXJTaXplOiAxLCByZWZDb3VudDogdHJ1ZSB9KVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMubG9hZGluZ0hpc3RvcnkkID0gdGhpcy5oaXN0b3J5JC5waXBlKG1hcCh0dWlJc0ZhbHN5KSk7XG5cbiAgICAgICAgdGhpcy5wcmljZUluZm8kID0gdGhpcy5oaXN0b3J5JC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICB0YXAoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMudXNlck1ldHJpa2FTZXJ2aWNlLmVtaXRVc2VyTWV0cmlrYUV2ZW50KHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0OiBTY1VzZXJNZXRyaWthR29hbHNFbnVtLnByb2R1Y3RQcmljZUhpc3RvcnlTaG93LFxuICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RfaWQ6IHRoaXMucHJvZHVjdC5pZCxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgZmlsdGVyKChoaXN0b3J5KSA9PiBoaXN0b3J5Lmxlbmd0aCA+IDEpLFxuICAgICAgICAgICAgbWFwKChoaXN0b3J5KSA9PiBoaXN0b3J5Lm1hcCgoaXRlbSkgPT4gaXRlbVsxXSkpLFxuICAgICAgICAgICAgbWFwKCh2YWx1ZXMpID0+ICh7XG4gICAgICAgICAgICAgICAgbWluOiBNYXRoLm1pbiguLi52YWx1ZXMpLFxuICAgICAgICAgICAgICAgIG1heDogTWF0aC5tYXgoLi4udmFsdWVzKSxcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMucmFuZ2UkID0gdGhpcy5oaXN0b3J5JC5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICBmaWx0ZXIoKGhpc3RvcnkpID0+IGhpc3RvcnkubGVuZ3RoID4gMSksXG4gICAgICAgICAgICBtYXAoKHZhbHVlOiBSZWFkb25seUFycmF5PFtUdWlEYXksIG51bWJlcl0+KSA9PiAoeyBmcm9tOiB2YWx1ZS5hdCgwKT8uWzBdLCB0bzogdmFsdWUuYXQoLTEpPy5bMF0gfSkpLFxuICAgICAgICAgICAgZmlsdGVyKChyYW5nZSk6IHJhbmdlIGlzIHsgZnJvbTogVHVpRGF5OyB0bzogVHVpRGF5IH0gPT4gISFyYW5nZS5mcm9tICYmICEhcmFuZ2UudG8pLFxuICAgICAgICAgICAgbWFwKChyYW5nZSkgPT4gbmV3IFR1aURheVJhbmdlKHJhbmdlLmZyb20sIHJhbmdlLnRvKSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0YfQuNGB0LvRj9C10YIg0L/QvtC00L/QuNGB0Lgg0LTQsNGC0Ysg0Log0L7RgdC4IFguXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW0wIHtAbGluayBUdWlEYXlSYW5nZX0g0JLRgNC10LzQtdC90L3QvtC5INC/0YDQvtC80LXQttGD0YLQvtC6INC40YHRgtC+0YDQuNC4INGG0LXQvS5cbiAgICAgKiBAcGFyYW0gcGFyYW0wLmZyb20ge0BsaW5rIFR1aURheX0g0JTQsNGC0LAg0L3QsNGH0LDQu9CwINC40YHRgtC+0YDQuNC4INGG0LXQvS5cbiAgICAgKiBAcGFyYW0gcGFyYW0wLnRvIHtAbGluayBUdWlEYXl9INCU0LDRgtCwINC60L7QvdGG0LAg0LjRgdGC0L7RgNC40Lgg0YbQtdC9LlxuICAgICAqL1xuICAgIEB0dWlQdXJlXG4gICAgcHVibGljIGNvbXB1dGVMYWJlbHMkKHsgZnJvbSwgdG8gfTogVHVpRGF5UmFuZ2UpOiBPYnNlcnZhYmxlPHJlYWRvbmx5IHN0cmluZ1tdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLm1vbnRocyQucGlwZShcbiAgICAgICAgICAgIG1hcCgobW9udGhzKSA9PiBbXG4gICAgICAgICAgICAgICAgLi4uQXJyYXkuZnJvbSh7IGxlbmd0aDogVHVpTW9udGgubGVuZ3RoQmV0d2Vlbihmcm9tLCB0bykgKyAxIH0sIChfLCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aW91c1llYXIgPSBmcm9tLmFwcGVuZCh7IG1vbnRoOiBpbmRleCAtIDEgfSkueWVhcjsgLy8g0J3QsNGH0LDQu9GM0L3Ri9C5INCz0L7QtFxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50WWVhciA9IGZyb20uYXBwZW5kKHsgbW9udGg6IGluZGV4IH0pLnllYXI7XG5cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3RoaXMuaXNNb2JpbGUgfHwgcHJldmlvdXNZZWFyID09PSBjdXJyZW50WWVhciA/ICcnIDogY3VycmVudFllYXJ9ICR7bW9udGhzW2Zyb20uYXBwZW5kKHsgbW9udGg6IGluZGV4IH0pLm1vbnRoXX1gO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICcnLFxuICAgICAgICAgICAgXSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiDQktGL0YfQuNGB0LvRj9C10YIg0LTQsNC90L3Ri9C1INC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINC90LAg0LPRgNCw0YTQuNC60LUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gcGFyYW0wIHtAbGluayBUdWlEYXlSYW5nZX0g0JLRgNC10LzQtdC90L3QvtC5INC/0YDQvtC80LXQttGD0YLQvtC6INC40YHRgtC+0YDQuNC4INGG0LXQvS5cbiAgICAgKiBAcGFyYW0gcGFyYW0wLmZyb20ge0BsaW5rIFR1aURheX0g0JTQsNGC0LAg0L3QsNGH0LDQu9CwINC40YHRgtC+0YDQuNC4INGG0LXQvS5cbiAgICAgKiBAcGFyYW0gcGFyYW0wLnRvIHtAbGluayBUdWlEYXl9INCU0LDRgtCwINC60L7QvdGG0LAg0LjRgdGC0L7RgNC40Lgg0YbQtdC9LlxuICAgICAqIEBwYXJhbSBoaXN0b3J5INCY0YHRgtC+0YDQuNGPINGG0LXQvS5cbiAgICAgKi9cbiAgICBAdHVpUHVyZVxuICAgIHB1YmxpYyBjb21wdXRlVmFsdWUoeyBmcm9tLCB0byB9OiBUdWlEYXlSYW5nZSwgaGlzdG9yeTogUmVhZG9ubHlBcnJheTxbVHVpRGF5LCBudW1iZXJdPik6IFJlYWRvbmx5QXJyYXk8W1R1aURheSwgbnVtYmVyXT4ge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgQXJyYXkuZnJvbSh7IGxlbmd0aDogVHVpRGF5Lmxlbmd0aEJldHdlZW4oZnJvbSwgdG8pICsgMSB9KVxuICAgICAgICAgICAgICAgIC5maWxsKDApXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHVuaWNvcm4vbm8tYXJyYXktcmVkdWNlXG4gICAgICAgICAgICAgICAgLnJlZHVjZTxSZWFkb25seUFycmF5PFtUdWlEYXksIG51bWJlcl0+PigoYXJyYXksIF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBmcm9tLmFwcGVuZCh7IGRheTogaW5kZXggfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5hcnJheSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChoaXN0b3J5LmZpbmQoKHZhbHVlSGlzdG9yeSwgaW5kZXhIaXN0b3J5LCBhcnJheUhpc3RvcnkpID0+IGRhdGEuZGF5U2FtZSh2YWx1ZUhpc3RvcnlbMF0pIHx8IGRhdGEuZGF5QmVmb3JlKGFycmF5SGlzdG9yeVtpbmRleEhpc3RvcnkgKyAxXVswXSkpID8/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpc3RvcnlbMF0pWzFdLFxuICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICB9LCBbXSlcbiAgICAgICAgKTtcbiAgICB9XG59XG4iLCI8dHVpLWxvYWRlciBbc2hvd0xvYWRlcl09XCIhIShsb2FkaW5nSGlzdG9yeSQgfCBhc3luYylcIj4gPC90dWktbG9hZGVyPlxuXG48ZGl2XG4gICAgKm5nSWY9XCIobG9hZGluZ0hpc3RvcnkkIHwgYXN5bmMpID09PSBmYWxzZVwiXG4gICAgY2xhc3M9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlclwiXG4+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInByaWNlSW5mbyQgfCBhc3luYyBhcyBwcmljZUluZm87IGVsc2UgaXNOb3RFeGlzdFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwidy0xNzQgbWItMSB0ZXh0LWVuZCB0ZXh0LWxnIGZvbnQtYm9sZFwiPtC+0YIge3sgcHJpY2VJbmZvLm1pbi50b0xvY2FsZVN0cmluZygpIH19IOKCvSDQtNC+IHt7IHByaWNlSW5mby5tYXgudG9Mb2NhbGVTdHJpbmcoKSB9fSDigr08L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaGlzdG9yeSQgfCBhc3luYyBhcyBoaXN0b3J5XCI+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgKm5nSWY9XCJyYW5nZSQgfCBhc3luYyBhcyByYW5nZVwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyZWxhdGl2ZSBoLTU2IHctZnVsbCBwLTUgdGV4dC10dWktcHJpbWFyeVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPHR1aS1heGVzXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY29tcHV0ZUxhYmVscyQocmFuZ2UpIHwgYXN5bmMgYXMgbGFiZWxzXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJoLWZ1bGxcIlxuICAgICAgICAgICAgICAgICAgICBbYXhpc1hMYWJlbHNdPVwibGFiZWxzXCJcbiAgICAgICAgICAgICAgICAgICAgW2hvcml6b250YWxMaW5lc109XCI0XCJcbiAgICAgICAgICAgICAgICAgICAgW3ZlcnRpY2FsTGluZXNdPVwibGFiZWxzLmxlbmd0aFwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICBAbGV0IGhlaWdodCA9IHByaWNlSW5mby5tYXggLSBwcmljZUluZm8ubWluO1xuICAgICAgICAgICAgICAgICAgICA8dHVpLWxpbmUtZGF5cy1jaGFydFxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoaGVpZ2h0IC8gMTAwKSAqIHBhZGRpbmdQZXJjZW50IGFzIHBhZGRpbmdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hlaWdodF09XCJoZWlnaHQgKyAoaGVpZ2h0IC8gMTAwKSAqIHBhZGRpbmdQZXJjZW50ICogMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbc21vb3RoaW5nRmFjdG9yXT1cIjEwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt5XT1cInByaWNlSW5mby5taW4gLSAoaGVpZ2h0IC8gMTAwKSAqIHBhZGRpbmdQZXJjZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJjb21wdXRlVmFsdWUocmFuZ2UsIGhpc3RvcnkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt4U3RyaW5naWZ5XT1cInhTdHJpbmdpZnkkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3lTdHJpbmdpZnldPVwieVN0cmluZ2lmeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbaGludENvbnRlbnRdPVwiaGludFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoYXJ0XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvdHVpLWxpbmUtZGF5cy1jaGFydD5cbiAgICAgICAgICAgICAgICA8L3R1aS1heGVzPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjaXNOb3RFeGlzdD5cbiAgICAgICAgPHAgY2xhc3M9XCJ0ZXh0LWJhc2UgZm9udC1ib2xkXCI+0KbQtdC90LAg0L3QsCDRgtC+0LLQsNGAINC90LUg0LjQt9C80LXQvdGP0LvQsNGB0Yw8L3A+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICAgI2hpbnRcbiAgICAgICAgbGV0LWRhdGFcbiAgICA+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb250LWJvbGRcIj57eyBkYXRhWzFdLnRvTG9jYWxlU3RyaW5nKCkgfX0g4oK9PC9kaXY+XG4gICAgICAgIDxkaXY+e3sgZGF0YVswXSB9fTwvZGl2PlxuICAgIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
144
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtcHJpY2UtaGlzdG9yeS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9wcmljZS1oaXN0b3J5L3NjLXByaWNlLWhpc3RvcnkuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2xpZW50LXVpL2NhdGFsb2cvcHJpY2UtaGlzdG9yeS9zYy1wcmljZS1oaXN0b3J5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSx1RUFBdUU7QUFFdkUsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUcsT0FBTyxFQUFvQixjQUFjLEVBQWEsc0JBQXNCLEVBQXdCLE1BQU0sd0JBQXdCLENBQUM7QUFDbkksT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBb0IsTUFBTSxlQUFlLENBQUM7QUFDbEksT0FBTyxFQUFFLFVBQVUsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM5RCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsRUFBYyxXQUFXLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7OztBQUU1RTs7R0FFRztBQU1ILE1BQU0sT0FBTyx1QkFBdUI7SUErRGhDOzs7Ozs7O09BT0c7SUFDSCxZQUNxQixjQUFnQyxFQUNaLE9BQXNDLEVBQzFELGtCQUF3QyxFQUd4QyxPQUF3RDtRQUx4RCxtQkFBYyxHQUFkLGNBQWMsQ0FBa0I7UUFDWixZQUFPLEdBQVAsT0FBTyxDQUErQjtRQUMxRCx1QkFBa0IsR0FBbEIs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T0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFlBQVksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUMzSSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7aUJBQ3JCO2FBQ0osQ0FBQztRQUNOLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FDYixDQUFDO0lBQ04sQ0FBQzsrR0EvS1EsdUJBQXVCLGtEQXlFcEIsVUFBVSxpREFHVixvQkFBb0I7bUdBNUV2Qix1QkFBdUIsd0ZDakJwQyx3dkVBa0RBOztBRHNHVztJQUROLE9BQU87NkRBYVA7QUFXTTtJQUROLE9BQU87MkRBa0JQOzRGQS9LUSx1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUVYLHVCQUF1QixDQUFDLE1BQU07OzBCQTJFMUMsTUFBTTsyQkFBQyxVQUFVOzswQkFFakIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxvQkFBb0I7eUNBbkVoQixPQUFPO3NCQUF0QixLQUFLO2dCQThIQyxjQUFjLE1BdUJkLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzLGxvZGFzaC9wcmVmZXItbG9kYXNoLW1ldGhvZCAqL1xuXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBJbmplY3QsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNjQ2F0YWxvZ1NlcnZpY2UsIFNjTnVtYmVySGVscGVyLCBTY1Byb2R1Y3QsIFNjVXNlck1ldHJpa2FHb2Fsc0VudW0sIFNjVXNlck1ldHJpa2FTZXJ2aWNlIH0gZnJvbSAnQHNuYWJjZW50ci9jbGllbnQtY29yZSc7XG5pbXBvcnQgeyBUVUlfSVNfTU9CSUxFLCBUdWlEYXksIFR1aURheVJhbmdlLCB0dWlJc0ZhbHN5LCB0dWlJc1ByZXNlbnQsIFR1aU1vbnRoLCB0dWlQdXJlLCBUdWlTdHJpbmdIYW5kbGVyIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUVUlfTU9OVEhTLCBUdWlEaWFsb2dDb250ZXh0IH0gZnJvbSAnQHRhaWdhLXVpL2NvcmUnO1xuaW1wb3J0IHsgUE9MWU1PUlBIRVVTX0NPTlRFWFQgfSBmcm9tICdAdGFpZ2EtdWkvcG9seW1vcnBoZXVzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBPYnNlcnZhYmxlLCBzaGFyZVJlcGxheSwgc3RhcnRXaXRoLCB0YXAgfSBmcm9tICdyeGpzJztcblxuLyoqXG4gKiDQk9GA0LDRhNC40Log0LjRgdGC0L7RgNC40Lgg0YbQtdC9INGC0L7QstCw0YDQsCDQuNC70Lgg0YPRgdC70YPQs9C4LlxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3NjLXByaWNlLWhpc3RvcnknLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zYy1wcmljZS1oaXN0b3J5LmNvbXBvbmVudC5odG1sJyxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2NQcmljZUhpc3RvcnlDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQstGA0LXQvNC10L3QvdC+0LPQviDQv9GA0L7QvNC10LbRg9GC0LrQsCDQuNGB0YLQvtGA0LjQuCDRhtC10L0uXG4gICAgICovXG4gICAgcHVibGljIHJhbmdlJDogT2JzZXJ2YWJsZTxUdWlEYXlSYW5nZT47XG5cbiAgICAvKipcbiAgICAgKiDQotC+0LLQsNGAINC40LvQuCDRg9GB0LvRg9Cz0LAsINC00LvRjyDQutC+0YLQvtGA0L7Qs9C+INC90LXQvtCx0YXQvtC00LjQvNC+INC+0YLQvtCx0YDQsNC30LjRgtGMINC40YHRgtC+0YDQuNGOINGG0LXQvS5cbiAgICAgKi9cbiAgICBASW5wdXQoKSBwdWJsaWMgcHJvZHVjdDogU2NQcm9kdWN0O1xuXG4gICAgLyoqXG4gICAgICoge0BsaW5rIE9ic2VydmFibGV9INC40YHRgtC+0YDQuNC4INGG0LXQvS5cbiAgICAgKi9cbiAgICBwdWJsaWMgaGlzdG9yeSQ/OiBPYnNlcnZhYmxlPFJlYWRvbmx5QXJyYXk8W1R1aURheSwgbnVtYmVyXT4gfCBudWxsPjtcblxuICAgIC8qKlxuICAgICAqIHtAbGluayBPYnNlcnZhYmxlfSDQuNC30LzQtdC90LXQvdC40Y8g0YHQvtGB0YLQvtGP0L3QuNGPINC30LDQs9GA0YPQt9C60Lgg0LTQsNC90L3Ri9GFINC40YHRgtC+0YDQuNC4INGG0LXQvS5cbiAgICAgKi9cbiAgICBwdWJsaWMgbG9hZGluZ0hpc3RvcnkkPzogT2JzZXJ2YWJsZTxib29sZWFuPjtcblxuICAgIC8qKlxuICAgICAqINCc0LDQutGB0LjQvNCw0LvRjNC90LDRjyDRhtC10L3QsCDRgtC+0LLQsNGA0LAuXG4gICAgICovXG4gICAgcHVibGljIHByaWNlSW5mbyQ/OiBPYnNlcnZhYmxlPHtcbiAgICAgICAgbWluOiBudW1iZXI7XG4gICAgICAgIG1heDogbnVtYmVyO1xuICAgIH0+O1xuXG4gICAgLyoqXG4gICAgICog0J/RgNC40LfQvdCw0Log0YLQvtCz0L4sINC+0YLQvtCx0YDQsNC20LDQtdGC0YHRjyDRjdGC0L7RgiDQutC+0LzQv9C+0L3QtdC90YIg0L3QsCDQvNC+0LHQuNC70YzQvdC+0Lwg0YPRgdGC0YDQvtC50YHRgtCy0LUg0LjQu9C4INC90LXRgi5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgaXNNb2JpbGU6IGJvb2xlYW4gPSBpbmplY3QoVFVJX0lTX01PQklMRSk7XG5cbiAgICAvKipcbiAgICAgKiB7QGxpbmsgT2JzZXJ2YWJsZX0g0YTRg9C90LrRhtC40Y8g0LTQu9GPINC/0YDQtdC+0LHRgNCw0LfQvtCy0LDQvdC40Y8g0LfQvdCw0YfQtdC90LjRjyBudW1iZXIg0LIg0YHRgtGA0L7QutGDINCyINC/0L7QtNGB0LrQsNC30LrQtSDQv9C+INC+0YHQuCBYLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSB4U3RyaW5naWZ5JDogT2JzZXJ2YWJsZTxUdWlTdHJpbmdIYW5kbGVyPFR1aURheT4+ID0gdGhpcy5tb250aHMkLnBpcGUoXG4gICAgICAgIG1hcChcbiAgICAgICAgICAgIChtb250aHMpID0+XG4gICAgICAgICAgICAgICAgKHsgbW9udGgsIGRheSB9KSA9PlxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgc2VjdXJpdHkvZGV0ZWN0LW9iamVjdC1pbmplY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgYCR7bW9udGhzW21vbnRoXX0sICR7ZGF5fWBcbiAgICAgICAgKVxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiDQntGC0L3QvtGB0LjRgtC10LvRjNC90YvQtSDQvtGC0YHRgtGD0L/RiyDQvtGCINCy0LXRgNGF0L3QtdCz0L4g0Lgg0L3QuNC20L3QtdCz0L4g0LrRgNCw0Y8g0LIg0L/RgNC+0YbQtdC90YLQsNGFLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBwYWRkaW5nUGVyY2VudDogbnVtYmVyID0gMTA7XG5cbiAgICAvKipcbiAgICAgKiDQpNGD0L3QutGG0LjRjyDQtNC70Y8g0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjRjyDQt9C90LDRh9C10L3QuNGPIG51bWJlciDQsiDRgdGC0YDQvtC60YMg0LIg0L/QvtC00YHQutCw0LfQutC1INC/0L4g0L7RgdC4IFkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUg0JfQvdCw0YfQtdC90LjQtSDQvtGB0LggWS5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgeVN0cmluZ2lmeTogVHVpU3RyaW5nSGFuZGxlcjxudW1iZXI+ID0gKHZhbHVlKSA9PiBgJHtTY051bWJlckhlbHBlci5mb3JtYXRNb25leSh2YWx1ZSl9IOKCvWA7XG5cbiAgICAvKipcbiAgICAgKiDQndCw0YHRgtGA0L7QudC60Lgg0LLRi9Cy0L7QtNCwINGG0LXQvSDQsiDRgNGD0LHQu9GP0YUuXG4gICAgICovXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IG1vbmV5Rm9ybWF0ID0gU2NOdW1iZXJIZWxwZXIuZ2V0TW9uZXlGb3JtYXQoKTtcblxuICAgIC8qKlxuICAgICAqINCY0L3QuNGG0LjQsNC70LjQt9C40YDRg9C10YIg0Y3QutC30LXQvNC/0LvRj9GAINC60LvQsNGB0YHQsCB7QGxpbmsgU2NQcmljZUhpc3RvcnlDb21wb25lbnR9LlxuICAgICAqXG4gICAgICogQHBhcmFtIGNhdGFsb2dTZXJ2aWNlINCh0LXRgNCy0LjRgSDQtNC70Y8g0YDQsNCx0L7RgtGLINGBINC60LDRgtCw0LvQvtCz0L7QvC5cbiAgICAgKiBAcGFyYW0gbW9udGhzJCDQn9C10YDQtdGH0LjRgdC70LXQvdC40LUg0LzQtdGB0Y/RhtC10LIuXG4gICAgICogQHBhcmFtIHVzZXJNZXRyaWthU2VydmljZSDQodC10YDQstC40YEg0LTQu9GPINGB0LHQvtGA0LAg0LzQtdGC0YDQuNC6INC+INC00LXQudGB0YLQstC40Y/RhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuS5cbiAgICAgKiBAcGFyYW0gY29udGV4dCDQmtC+0L3RgtC10LrRgdGCINC00LjQsNC70L7Qs9C+0LLQvtCz0L4g0L7QutC90LAsINCyINC60L7RgtC+0YDQvtC8INC+0YLQutGA0YvRgiDQutC+0LzQv9C+0L3QtdC90YIuXG4gICAgICovXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIHJlYWRvbmx5IGNhdGFsb2dTZXJ2aWNlOiBTY0NhdGFsb2dTZXJ2aWNlLFxuICAgICAgICBASW5qZWN0KFRVSV9NT05USFMpIHByaXZhdGUgcmVhZG9ubHkgbW9udGhzJDogT2JzZXJ2YWJsZTxyZWFkb25seSBzdHJpbmdbXT4sXG4gICAgICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlck1ldHJpa2FTZXJ2aWNlOiBTY1VzZXJNZXRyaWthU2VydmljZSxcbiAgICAgICAgQE9wdGlvbmFsKClcbiAgICAgICAgQEluamVjdChQT0xZTU9SUEhFVVNfQ09OVEVYVClcbiAgICAgICAgcHJpdmF0ZSByZWFkb25seSBjb250ZXh0PzogVHVpRGlhbG9nQ29udGV4dDx2b2lkLCB7IHByb2R1Y3Q6IFNjUHJvZHVjdCB9PlxuICAgICkge1xuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgdGhpcy5wcm9kdWN0ID0gY29udGV4dC5kYXRhLnByb2R1Y3Q7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGluaGVyaXREb2MgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlzdG9yeSQgPSB0aGlzLmNhdGFsb2dTZXJ2aWNlLmdldFByaWNlSGlzdG9yeSQodGhpcy5wcm9kdWN0KS5waXBlKFxuICAgICAgICAgICAgZmlsdGVyKHR1aUlzUHJlc2VudCksXG4gICAgICAgICAgICBtYXAoKGhpc3RvcnkpID0+XG4gICAgICAgICAgICAgICAgT2JqZWN0LmtleXMoaGlzdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHNlY3VyaXR5L2RldGVjdC1vYmplY3QtaW5qZWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIC5tYXAoKGl0ZW0pOiBbVHVpRGF5LCBudW1iZXJdID0+IFtUdWlEYXkubm9ybWFsaXplUGFyc2UoaXRlbSwgJ0RNWScpLCBoaXN0b3J5W2l0ZW1dLmNvc3RdKVxuICAgICAgICAgICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gKGFbMF0gPiBiWzBdID8gMSA6IC0xKSlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICBzdGFydFdpdGgobnVsbCksXG4gICAgICAgICAgICBzaGFyZVJlcGxheSh7IGJ1ZmZlclNpemU6IDEsIHJlZkNvdW50OiB0cnVlIH0pXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5sb2FkaW5nSGlzdG9yeSQgPSB0aGlzLmhpc3RvcnkkLnBpcGUobWFwKHR1aUlzRmFsc3kpKTtcblxuICAgICAgICB0aGlzLnByaWNlSW5mbyQgPSB0aGlzLmhpc3RvcnkkLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgIHRhcCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy51c2VyTWV0cmlrYVNlcnZpY2UuZW1pdFVzZXJNZXRyaWthRXZlbnQoe1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IFNjVXNlck1ldHJpa2FHb2Fsc0VudW0ucHJvZHVjdFByaWNlSGlzdG9yeVNob3csXG4gICAgICAgICAgICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdF9pZDogdGhpcy5wcm9kdWN0LmlkLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBmaWx0ZXIoKGhpc3RvcnkpID0+IGhpc3RvcnkubGVuZ3RoID4gMSksXG4gICAgICAgICAgICBtYXAoKGhpc3RvcnkpID0+IGhpc3RvcnkubWFwKChpdGVtKSA9PiBpdGVtWzFdKSksXG4gICAgICAgICAgICBtYXAoKHZhbHVlcykgPT4gKHtcbiAgICAgICAgICAgICAgICBtaW46IE1hdGgubWluKC4uLnZhbHVlcyksXG4gICAgICAgICAgICAgICAgbWF4OiBNYXRoLm1heCguLi52YWx1ZXMpLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5yYW5nZSQgPSB0aGlzLmhpc3RvcnkkLnBpcGUoXG4gICAgICAgICAgICBmaWx0ZXIodHVpSXNQcmVzZW50KSxcbiAgICAgICAgICAgIGZpbHRlcigoaGlzdG9yeSkgPT4gaGlzdG9yeS5sZW5ndGggPiAxKSxcbiAgICAgICAgICAgIG1hcCgodmFsdWU6IFJlYWRvbmx5QXJyYXk8W1R1aURheSwgbnVtYmVyXT4pID0+ICh7IGZyb206IHZhbHVlLmF0KDApPy5bMF0sIHRvOiB2YWx1ZS5hdCgtMSk/LlswXSB9KSksXG4gICAgICAgICAgICBmaWx0ZXIoKHJhbmdlKTogcmFuZ2UgaXMgeyBmcm9tOiBUdWlEYXk7IHRvOiBUdWlEYXkgfSA9PiAhIXJhbmdlLmZyb20gJiYgISFyYW5nZS50byksXG4gICAgICAgICAgICBtYXAoKHJhbmdlKSA9PiBuZXcgVHVpRGF5UmFuZ2UocmFuZ2UuZnJvbSwgcmFuZ2UudG8pKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvRh9C40YHQu9GP0LXRgiDQv9C+0LTQv9C40YHQuCDQtNCw0YLRiyDQuiDQvtGB0LggWC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbTAge0BsaW5rIFR1aURheVJhbmdlfSDQktGA0LXQvNC10L3QvdC+0Lkg0L/RgNC+0LzQtdC20YPRgtC+0Log0LjRgdGC0L7RgNC40Lgg0YbQtdC9LlxuICAgICAqIEBwYXJhbSBwYXJhbTAuZnJvbSB7QGxpbmsgVHVpRGF5fSDQlNCw0YLQsCDQvdCw0YfQsNC70LAg0LjRgdGC0L7RgNC40Lgg0YbQtdC9LlxuICAgICAqIEBwYXJhbSBwYXJhbTAudG8ge0BsaW5rIFR1aURheX0g0JTQsNGC0LAg0LrQvtC90YbQsCDQuNGB0YLQvtGA0LjQuCDRhtC10L0uXG4gICAgICovXG4gICAgQHR1aVB1cmVcbiAgICBwdWJsaWMgY29tcHV0ZUxhYmVscyQoeyBmcm9tLCB0byB9OiBUdWlEYXlSYW5nZSk6IE9ic2VydmFibGU8cmVhZG9ubHkgc3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMubW9udGhzJC5waXBlKFxuICAgICAgICAgICAgbWFwKChtb250aHMpID0+IFtcbiAgICAgICAgICAgICAgICAuLi5BcnJheS5mcm9tKHsgbGVuZ3RoOiBUdWlNb250aC5sZW5ndGhCZXR3ZWVuKGZyb20sIHRvKSArIDEgfSwgKF8sIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzWWVhciA9IGZyb20uYXBwZW5kKHsgbW9udGg6IGluZGV4IC0gMSB9KS55ZWFyOyAvLyDQndCw0YfQsNC70YzQvdGL0Lkg0LPQvtC0XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gZnJvbS5hcHBlbmQoeyBtb250aDogaW5kZXggfSkueWVhcjtcblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYCR7dGhpcy5pc01vYmlsZSB8fCBwcmV2aW91c1llYXIgPT09IGN1cnJlbnRZZWFyID8gJycgOiBjdXJyZW50WWVhcn0gJHttb250aHNbZnJvbS5hcHBlbmQoeyBtb250aDogaW5kZXggfSkubW9udGhdfWA7XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgJycsXG4gICAgICAgICAgICBdKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqINCS0YvRh9C40YHQu9GP0LXRgiDQtNCw0L3QvdGL0LUg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8g0L3QsCDQs9GA0LDRhNC40LrQtS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBwYXJhbTAge0BsaW5rIFR1aURheVJhbmdlfSDQktGA0LXQvNC10L3QvdC+0Lkg0L/RgNC+0LzQtdC20YPRgtC+0Log0LjRgdGC0L7RgNC40Lgg0YbQtdC9LlxuICAgICAqIEBwYXJhbSBwYXJhbTAuZnJvbSB7QGxpbmsgVHVpRGF5fSDQlNCw0YLQsCDQvdCw0YfQsNC70LAg0LjRgdGC0L7RgNC40Lgg0YbQtdC9LlxuICAgICAqIEBwYXJhbSBwYXJhbTAudG8ge0BsaW5rIFR1aURheX0g0JTQsNGC0LAg0LrQvtC90YbQsCDQuNGB0YLQvtGA0LjQuCDRhtC10L0uXG4gICAgICogQHBhcmFtIGhpc3Rvcnkg0JjRgdGC0L7RgNC40Y8g0YbQtdC9LlxuICAgICAqL1xuICAgIEB0dWlQdXJlXG4gICAgcHVibGljIGNvbXB1dGVWYWx1ZSh7IGZyb20sIHRvIH06IFR1aURheVJhbmdlLCBoaXN0b3J5OiBSZWFkb25seUFycmF5PFtUdWlEYXksIG51bWJlcl0+KTogUmVhZG9ubHlBcnJheTxbVHVpRGF5LCBudW1iZXJdPiB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICBBcnJheS5mcm9tKHsgbGVuZ3RoOiBUdWlEYXkubGVuZ3RoQmV0d2Vlbihmcm9tLCB0bykgKyAxIH0pXG4gICAgICAgICAgICAgICAgLmZpbGwoMClcbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgdW5pY29ybi9uby1hcnJheS1yZWR1Y2VcbiAgICAgICAgICAgICAgICAucmVkdWNlPFJlYWRvbmx5QXJyYXk8W1R1aURheSwgbnVtYmVyXT4+KChhcnJheSwgXywgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZGF0YSA9IGZyb20uYXBwZW5kKHsgZGF5OiBpbmRleCB9KTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmFycmF5LFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGhpc3RvcnkuZmluZCgodmFsdWVIaXN0b3J5LCBpbmRleEhpc3RvcnksIGFycmF5SGlzdG9yeSkgPT4gZGF0YS5kYXlTYW1lKHZhbHVlSGlzdG9yeVswXSkgfHwgZGF0YS5kYXlCZWZvcmUoYXJyYXlIaXN0b3J5W2luZGV4SGlzdG9yeSArIDFdWzBdKSkgPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlzdG9yeVswXSlbMV0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgIH0sIFtdKVxuICAgICAgICApO1xuICAgIH1cbn1cbiIsIjx0dWktbG9hZGVyIFtzaG93TG9hZGVyXT1cIiEhKGxvYWRpbmdIaXN0b3J5JCB8IGFzeW5jKVwiPiA8L3R1aS1sb2FkZXI+XG5cbjxkaXZcbiAgICAqbmdJZj1cIihsb2FkaW5nSGlzdG9yeSQgfCBhc3luYykgPT09IGZhbHNlXCJcbiAgICBjbGFzcz1cImZsZXggZmxleC1jb2wgaXRlbXMtY2VudGVyXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicHJpY2VJbmZvJCB8IGFzeW5jIGFzIHByaWNlSW5mbzsgZWxzZSBpc05vdEV4aXN0XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3LTE3NCBtYi0xIHRleHQtZW5kIHRleHQtbGcgZm9udC1ib2xkXCI+XG4gICAgICAgICAgICDQvtGCIHt7IHByaWNlSW5mby5taW4gfCB0dWlGb3JtYXROdW1iZXI6IG1vbmV5Rm9ybWF0IHwgYXN5bmMgfX0g4oK9INC00L4ge3sgcHJpY2VJbmZvLm1heCB8IHR1aUZvcm1hdE51bWJlcjogbW9uZXlGb3JtYXQgfCBhc3luYyB9fSDigr1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImhpc3RvcnkkIHwgYXN5bmMgYXMgaGlzdG9yeVwiPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICpuZ0lmPVwicmFuZ2UkIHwgYXN5bmMgYXMgcmFuZ2VcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwicmVsYXRpdmUgaC01NiB3LWZ1bGwgcC01IHRleHQtdHVpLXByaW1hcnlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDx0dWktYXhlc1xuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImNvbXB1dGVMYWJlbHMkKHJhbmdlKSB8IGFzeW5jIGFzIGxhYmVsc1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaC1mdWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F4aXNYTGFiZWxzXT1cImxhYmVsc1wiXG4gICAgICAgICAgICAgICAgICAgIFtob3Jpem9udGFsTGluZXNdPVwiNFwiXG4gICAgICAgICAgICAgICAgICAgIFt2ZXJ0aWNhbExpbmVzXT1cImxhYmVscy5sZW5ndGhcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQGxldCBoZWlnaHQgPSBwcmljZUluZm8ubWF4IC0gcHJpY2VJbmZvLm1pbjtcbiAgICAgICAgICAgICAgICAgICAgPHR1aS1saW5lLWRheXMtY2hhcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGhlaWdodCAvIDEwMCkgKiBwYWRkaW5nUGVyY2VudCBhcyBwYWRkaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtoZWlnaHRdPVwiaGVpZ2h0ICsgKGhlaWdodCAvIDEwMCkgKiBwYWRkaW5nUGVyY2VudCAqIDJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW3Ntb290aGluZ0ZhY3Rvcl09XCIxMFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbeV09XCJwcmljZUluZm8ubWluIC0gKGhlaWdodCAvIDEwMCkgKiBwYWRkaW5nUGVyY2VudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiY29tcHV0ZVZhbHVlKHJhbmdlLCBoaXN0b3J5KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbeFN0cmluZ2lmeV09XCJ4U3RyaW5naWZ5JCB8IGFzeW5jXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFt5U3RyaW5naWZ5XT1cInlTdHJpbmdpZnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2hpbnRDb250ZW50XT1cImhpbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGFydFwiXG4gICAgICAgICAgICAgICAgICAgID48L3R1aS1saW5lLWRheXMtY2hhcnQ+XG4gICAgICAgICAgICAgICAgPC90dWktYXhlcz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8bmctdGVtcGxhdGUgI2lzTm90RXhpc3Q+XG4gICAgICAgIDxwIGNsYXNzPVwidGV4dC1iYXNlIGZvbnQtYm9sZFwiPtCm0LXQvdCwINC90LAg0YLQvtCy0LDRgCDQvdC1INC40LfQvNC10L3Rj9C70LDRgdGMPC9wPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlXG4gICAgICAgICNoaW50XG4gICAgICAgIGxldC1kYXRhXG4gICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9udC1ib2xkXCI+e3sgZGF0YVsxXSB8IHR1aUZvcm1hdE51bWJlcjogbW9uZXlGb3JtYXQgfCBhc3luYyB9fSDigr08L2Rpdj5cbiAgICAgICAgPGRpdj57eyBkYXRhWzBdIH19PC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -5,7 +5,7 @@ import { RouterModule } from '@angular/router';
5
5
  import { ScMediaImageTransformerPipe } from '@snabcentr/client-core';
6
6
  import { TuiAxes, TuiLineDaysChart, TuiLineDaysChartHint } from '@taiga-ui/addon-charts';
7
7
  import { TuiAutoFocus, TuiHovered, TuiRepeatTimes } from '@taiga-ui/cdk';
8
- import { TuiButton, TuiHint, TuiIcon, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';
8
+ import { TuiButton, TuiFormatNumberPipe, TuiHint, TuiIcon, TuiLabel, TuiLink, TuiLoader } from '@taiga-ui/core';
9
9
  import { TuiAvatar, TuiBadge, TuiButtonLoading, TuiElasticContainer, TuiFieldErrorPipe, TuiHighlight, TuiLineClamp } from '@taiga-ui/kit';
10
10
  import { TuiInputNumberModule, TuiIslandDirective, TuiTextfieldControllerModule } from '@taiga-ui/legacy';
11
11
  import { ScFormatDatePipe } from '../pipes';
@@ -58,7 +58,8 @@ export class ScCatalogModule {
58
58
  ScFavoriteButtonComponent,
59
59
  ScInputQuantityComponent,
60
60
  ScFormatDatePipe,
61
- ScMediaImageTransformerPipe], exports: [ScPriceListPaginationComponent, ScCategoryCardComponent, ScPriceCardComponent, ScPriceHistoryComponent] }); }
61
+ ScMediaImageTransformerPipe,
62
+ TuiFormatNumberPipe], exports: [ScPriceListPaginationComponent, ScCategoryCardComponent, ScPriceCardComponent, ScPriceHistoryComponent] }); }
62
63
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScCatalogModule, imports: [CommonModule,
63
64
  RouterModule,
64
65
  TuiIcon,
@@ -120,7 +121,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
120
121
  ScInputQuantityComponent,
121
122
  ScFormatDatePipe,
122
123
  ScMediaImageTransformerPipe,
124
+ TuiFormatNumberPipe,
123
125
  ],
124
126
  }]
125
127
  }] });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9zYy1jYXRhbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0YsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDckYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0s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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBTY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUgfSBmcm9tICdAc25hYmNlbnRyL2NsaWVudC1jb3JlJztcbmltcG9ydCB7IFR1aUF4ZXMsIFR1aUxpbmVEYXlzQ2hhcnQsIFR1aUxpbmVEYXlzQ2hhcnRIaW50IH0gZnJvbSAnQHRhaWdhLXVpL2FkZG9uLWNoYXJ0cyc7XG5pbXBvcnQgeyBUdWlBdXRvRm9jdXMsIFR1aUhvdmVyZWQsIFR1aVJlcGVhdFRpbWVzIH0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQgeyBUdWlCdXR0b24sIFR1aUhpbnQsIFR1aUljb24sIFR1aUxhYmVsLCBUdWlMaW5rLCBUdWlMb2FkZXIgfSBmcm9tICdAdGFpZ2EtdWkvY29yZSc7XG5pbXBvcnQgeyBUdWlBdmF0YXIsIFR1aUJhZGdlLCBUdWlCdXR0b25Mb2FkaW5nLCBUdWlFbGFzdGljQ29udGFpbmVyLCBUdWlGaWVsZEVycm9yUGlwZSwgVHVpSGlnaGxpZ2h0LCBUdWlMaW5lQ2xhbXAgfSBmcm9tICdAdGFpZ2EtdWkva2l0JztcbmltcG9ydCB7IFR1aUlucHV0TnVtYmVyTW9kdWxlLCBUdWlJc2xhbmREaXJlY3RpdmUsIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUgfSBmcm9tICdAdGFpZ2EtdWkvbGVnYWN5JztcblxuaW1wb3J0IHsgU2NGb3JtYXREYXRlUGlwZSB9IGZyb20gJy4uL3BpcGVzJztcbmltcG9ydCB7IFNjQ2F0ZWdvcnlDYXJkQ29tcG9uZW50IH0gZnJvbSAnLi9jYXRlZ29yeS1jYXJkL3NjLWNhdGVnb3J5LWNhcmQuY29tcG9uZW50JztcbmltcG9ydCB7IENvc3RXaXRoRGlzY291bnRDb21wb25lbnQgfSBmcm9tICcuL2Nvc3Qtd2l0aC1kaXNjb3VudC9jb3N0LXdpdGgtZGlzY291bnQuY29tcG9uZW50JztcbmltcG9ydCB7IFNjSG92ZXJJbWFnZUNhcm91c2VsQ29tcG9uZW50IH0gZnJvbSAnLi9ob3Zlci1pbWFnZS1jYXJvdXNlbC9zYy1ob3Zlci1pbWFnZS1jYXJvdXNlbC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NJbnB1dFF1YW50aXR5Q29tcG9uZW50IH0gZnJvbSAnLi9pbnB1dC1xdWFudGl0eS9zYy1pbnB1dC1xdWFudGl0eS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NQcmljZUNhcmRDb21wb25lbnQgfSBmcm9tICcuL3ByaWNlLWNhcmQvc2MtcHJpY2UtY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NQcmljZUNhcmRJbmxpbmVDb21wb25lbnQgfSBmcm9tICcuL3ByaWNlLWNhcmQtaW5saW5lL3NjLXByaWNlLWNhcmQtaW5saW5lLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY1ByaWNlSGlzdG9yeUNvbXBvbmVudCB9IGZyb20gJy4vcHJpY2UtaGlzdG9yeS9zYy1wcmljZS1oaXN0b3J5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY1ByaWNlTGlzdFBhZ2luYXRpb25Db21wb25lbnQgfSBmcm9tICcuL3ByaWNlLWxpc3QtcGFnaW5hdGlvbi9zYy1wcmljZS1saXN0LXBhZ2luYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IFNjUHJpY2VXYXJlaG91c2VTdG9ja0NvbXBvbmVudCB9IGZyb20gJy4vcHJpY2Utd2FyZWhvdXNlLXN0b2NrL3NjLXByaWNlLXdhcmVob3VzZS1zdG9jay5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NGYXZvcml0ZUJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vc2MtZmF2b3JpdGUtYnV0dG9uL3NjLWZhdm9yaXRlLWJ1dHRvbi5jb21wb25lbnQnO1xuXG4vKipcbiAqINCc0L7QtNGD0LvRjCDQutCw0YLQsNC70L7Qs9CwLlxuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1NjUHJpY2VMaXN0UGFnaW5hdGlvbkNvbXBvbmVudCwgU2NDYXRlZ29yeUNhcmRDb21wb25lbnQsIFNjUHJpY2VIaXN0b3J5Q29tcG9uZW50XSxcbiAgICBleHBvcnRzOiBbU2NQcmljZUxpc3RQYWdpbmF0aW9uQ29tcG9uZW50LCBTY0NhdGVnb3J5Q2FyZENvbXBvbmVudCwgU2NQcmljZUNhcmRDb21wb25lbnQsIFNjUHJpY2VIaXN0b3J5Q29tcG9uZW50XSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgUm91dGVyTW9kdWxlLFxuICAgICAgICBUdWlCdXR0b24sXG4gICAgICAgIFR1aUljb24sXG4gICAgICAgIFR1aUlzbGFuZERpcmVjdGl2ZSxcbiAgICAgICAgVHVpSW5wdXROdW1iZXJNb2R1bGUsXG4gICAgICAgIFR1aUxhYmVsLFxuICAgICAgICBUdWlUZXh0ZmllbGRDb250cm9sbGVyTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgLi4uVHVpSGludCxcbiAgICAgICAgVHVpRmllbGRFcnJvclBpcGUsXG4gICAgICAgIFR1aUxvYWRlcixcbiAgICAgICAgVHVpTGluayxcbiAgICAgICAgVHVpRWxhc3RpY0NvbnRhaW5lcixcbiAgICAgICAgVHVpUmVwZWF0VGltZXMsXG4gICAgICAgIFR1aUhpZ2hsaWdodCxcbiAgICAgICAgVHVpTGluZURheXNDaGFydCxcbiAgICAgICAgVHVpQXV0b0ZvY3VzLFxuICAgICAgICBUdWlMaW5lRGF5c0NoYXJ0SGludCxcbiAgICAgICAgVHVpQXhlcyxcbiAgICAgICAgVHVpQnV0dG9uTG9hZGluZyxcbiAgICAgICAgVHVpQXZhdGFyLFxuICAgICAgICBUdWlCYWRnZSxcbiAgICAgICAgU2NIb3ZlckltYWdlQ2Fyb3VzZWxDb21wb25lbnQsXG4gICAgICAgIFR1aUxpbmVDbGFtcCxcbiAgICAgICAgVHVpSG92ZXJlZCxcbiAgICAgICAgQ29zdFdpdGhEaXNjb3VudENvbXBvbmVudCxcbiAgICAgICAgU2NQcmljZUNhcmRDb21wb25lbnQsXG4gICAgICAgIFNjUHJpY2VDYXJkSW5saW5lQ29tcG9uZW50LFxuICAgICAgICBTY1ByaWNlV2FyZWhvdXNlU3RvY2tDb21wb25lbnQsXG4gICAgICAgIFNjRmF2b3JpdGVCdXR0b25Db21wb25lbnQsXG4gICAgICAgIFNjSW5wdXRRdWFudGl0eUNvbXBvbmVudCxcbiAgICAgICAgU2NGb3JtYXREYXRlUGlwZSxcbiAgICAgICAgU2NNZWRpYUltYWdlVHJhbnNmb3JtZXJQaXBlLFxuICAgIF0sXG59KVxuZXhwb3J0IGNsYXNzIFNjQ2F0YWxvZ01vZHVsZSB7fVxuIl19
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2MtY2F0YWxvZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jbGllbnQtdWkvY2F0YWxvZy9zYy1jYXRhbG9nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JFLE9BQU8sRUFBRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN6RixPQUFPLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxtQkFBbUIsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDaEgsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sNENBQTRDLENBQUM7QUFDckYsT0FBTyxFQUFFLHlCQUF5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QkFBMkI7d0JBQzNCLG1CQUFtQjtxQkFDdEI7aUJBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgUm91dGVyTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IFNjTWVkaWFJbWFnZVRyYW5zZm9ybWVyUGlwZSB9IGZyb20gJ0BzbmFiY2VudHIvY2xpZW50LWNvcmUnO1xuaW1wb3J0IHsgVHVpQXhlcywgVHVpTGluZURheXNDaGFydCwgVHVpTGluZURheXNDaGFydEhpbnQgfSBmcm9tICdAdGFpZ2EtdWkvYWRkb24tY2hhcnRzJztcbmltcG9ydCB7IFR1aUF1dG9Gb2N1cywgVHVpSG92ZXJlZCwgVHVpUmVwZWF0VGltZXMgfSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7IFR1aUJ1dHRvbiwgVHVpRm9ybWF0TnVtYmVyUGlwZSwgVHVpSGludCwgVHVpSWNvbiwgVHVpTGFiZWwsIFR1aUxpbmssIFR1aUxvYWRlciB9IGZyb20gJ0B0YWlnYS11aS9jb3JlJztcbmltcG9ydCB7IFR1aUF2YXRhciwgVHVpQmFkZ2UsIFR1aUJ1dHRvbkxvYWRpbmcsIFR1aUVsYXN0aWNDb250YWluZXIsIFR1aUZpZWxkRXJyb3JQaXBlLCBUdWlIaWdobGlnaHQsIFR1aUxpbmVDbGFtcCB9IGZyb20gJ0B0YWlnYS11aS9raXQnO1xuaW1wb3J0IHsgVHVpSW5wdXROdW1iZXJNb2R1bGUsIFR1aUlzbGFuZERpcmVjdGl2ZSwgVHVpVGV4dGZpZWxkQ29udHJvbGxlck1vZHVsZSB9IGZyb20gJ0B0YWlnYS11aS9sZWdhY3knO1xuXG5pbXBvcnQgeyBTY0Zvcm1hdERhdGVQaXBlIH0gZnJvbSAnLi4vcGlwZXMnO1xuaW1wb3J0IHsgU2NDYXRlZ29yeUNhcmRDb21wb25lbnQgfSBmcm9tICcuL2NhdGVnb3J5LWNhcmQvc2MtY2F0ZWdvcnktY2FyZC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ29zdFdpdGhEaXNjb3VudENvbXBvbmVudCB9IGZyb20gJy4vY29zdC13aXRoLWRpc2NvdW50L2Nvc3Qtd2l0aC1kaXNjb3VudC5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NIb3ZlckltYWdlQ2Fyb3VzZWxDb21wb25lbnQgfSBmcm9tICcuL2hvdmVyLWltYWdlLWNhcm91c2VsL3NjLWhvdmVyLWltYWdlLWNhcm91c2VsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0lucHV0UXVhbnRpdHlDb21wb25lbnQgfSBmcm9tICcuL2lucHV0LXF1YW50aXR5L3NjLWlucHV0LXF1YW50aXR5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY1ByaWNlQ2FyZENvbXBvbmVudCB9IGZyb20gJy4vcHJpY2UtY2FyZC9zYy1wcmljZS1jYXJkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY1ByaWNlQ2FyZElubGluZUNvbXBvbmVudCB9IGZyb20gJy4vcHJpY2UtY2FyZC1pbmxpbmUvc2MtcHJpY2UtY2FyZC1pbmxpbmUuY29tcG9uZW50JztcbmltcG9ydCB7IFNjUHJpY2VIaXN0b3J5Q29tcG9uZW50IH0gZnJvbSAnLi9wcmljZS1oaXN0b3J5L3NjLXByaWNlLWhpc3RvcnkuY29tcG9uZW50JztcbmltcG9ydCB7IFNjUHJpY2VMaXN0UGFnaW5hdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vcHJpY2UtbGlzdC1wYWdpbmF0aW9uL3NjLXByaWNlLWxpc3QtcGFnaW5hdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2NQcmljZVdhcmVob3VzZVN0b2NrQ29tcG9uZW50IH0gZnJvbSAnLi9wcmljZS13YXJlaG91c2Utc3RvY2svc2MtcHJpY2Utd2FyZWhvdXNlLXN0b2NrLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTY0Zhdm9yaXRlQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi9zYy1mYXZvcml0ZS1idXR0b24vc2MtZmF2b3JpdGUtYnV0dG9uLmNvbXBvbmVudCc7XG5cbi8qKlxuICog0JzQvtC00YPQu9GMINC60LDRgtCw0LvQvtCz0LAuXG4gKi9cbkBOZ01vZHVsZSh7XG4gICAgZGVjbGFyYXRpb25zOiBbU2NQcmljZUxpc3RQYWdpbmF0aW9uQ29tcG9uZW50LCBTY0NhdGVnb3J5Q2FyZENvbXBvbmVudCwgU2NQcmljZUhpc3RvcnlDb21wb25lbnRdLFxuICAgIGV4cG9ydHM6IFtTY1ByaWNlTGlzdFBhZ2luYXRpb25Db21wb25lbnQsIFNjQ2F0ZWdvcnlDYXJkQ29tcG9uZW50LCBTY1ByaWNlQ2FyZENvbXBvbmVudCwgU2NQcmljZUhpc3RvcnlDb21wb25lbnRdLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBSb3V0ZXJNb2R1bGUsXG4gICAgICAgIFR1aUJ1dHRvbixcbiAgICAgICAgVHVpSWNvbixcbiAgICAgICAgVHVpSXNsYW5kRGlyZWN0aXZlLFxuICAgICAgICBUdWlJbnB1dE51bWJlck1vZHVsZSxcbiAgICAgICAgVHVpTGFiZWwsXG4gICAgICAgIFR1aVRleHRmaWVsZENvbnRyb2xsZXJNb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgICAgICAuLi5UdWlIaW50LFxuICAgICAgICBUdWlGaWVsZEVycm9yUGlwZSxcbiAgICAgICAgVHVpTG9hZGVyLFxuICAgICAgICBUdWlMaW5rLFxuICAgICAgICBUdWlFbGFzdGljQ29udGFpbmVyLFxuICAgICAgICBUdWlSZXBlYXRUaW1lcyxcbiAgICAgICAgVHVpSGlnaGxpZ2h0LFxuICAgICAgICBUdWlMaW5lRGF5c0NoYXJ0LFxuICAgICAgICBUdWlBdXRvRm9jdXMsXG4gICAgICAgIFR1aUxpbmVEYXlzQ2hhcnRIaW50LFxuICAgICAgICBUdWlBeGVzLFxuICAgICAgICBUdWlCdXR0b25Mb2FkaW5nLFxuICAgICAgICBUdWlBdmF0YXIsXG4gICAgICAgIFR1aUJhZGdlLFxuICAgICAgICBTY0hvdmVySW1hZ2VDYXJvdXNlbENvbXBvbmVudCxcbiAgICAgICAgVHVpTGluZUNsYW1wLFxuICAgICAgICBUdWlIb3ZlcmVkLFxuICAgICAgICBDb3N0V2l0aERpc2NvdW50Q29tcG9uZW50LFxuICAgICAgICBTY1ByaWNlQ2FyZENvbXBvbmVudCxcbiAgICAgICAgU2NQcmljZUNhcmRJbmxpbmVDb21wb25lbnQsXG4gICAgICAgIFNjUHJpY2VXYXJlaG91c2VTdG9ja0NvbXBvbmVudCxcbiAgICAgICAgU2NGYXZvcml0ZUJ1dHRvbkNvbXBvbmVudCxcbiAgICAgICAgU2NJbnB1dFF1YW50aXR5Q29tcG9uZW50LFxuICAgICAgICBTY0Zvcm1hdERhdGVQaXBlLFxuICAgICAgICBTY01lZGlhSW1hZ2VUcmFuc2Zvcm1lclBpcGUsXG4gICAgICAgIFR1aUZvcm1hdE51bWJlclBpcGUsXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgU2NDYXRhbG9nTW9kdWxlIHt9XG4iXX0=