@wizishop/angular-components 14.4.8 → 14.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/selects/select-test/select.component.mjs +8 -6
- package/fesm2015/wizishop-angular-components.mjs +7 -5
- package/fesm2015/wizishop-angular-components.mjs.map +1 -1
- package/fesm2020/wizishop-angular-components.mjs +7 -5
- package/fesm2020/wizishop-angular-components.mjs.map +1 -1
- package/lib/components/selects/select-test/select.component.d.ts +3 -2
- package/package.json +1 -1
- package/wizishop-angular-components-14.4.9.tgz +0 -0
- package/wizishop-angular-components-14.4.8.tgz +0 -0
|
@@ -16,13 +16,15 @@ import * as i5 from "ngx-perfect-scrollbar";
|
|
|
16
16
|
import * as i6 from "@ngx-translate/core";
|
|
17
17
|
import * as i7 from "../../../pipes/call-component-function.pipe";
|
|
18
18
|
export class SelectTestComponent extends SelectDirective {
|
|
19
|
-
constructor(valueChangeService) {
|
|
19
|
+
constructor(valueChangeService, changeDetectorRef) {
|
|
20
20
|
super(valueChangeService);
|
|
21
21
|
this.valueChangeService = valueChangeService;
|
|
22
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
22
23
|
//! Refacto improve sroll on mobile, see with Pauline
|
|
23
24
|
// angular material select https://github.com/angular/components/blob/main/src/material/select/select.ts
|
|
24
25
|
this.role = 'combobox';
|
|
25
26
|
this.getSelectedOptionContent = () => {
|
|
27
|
+
this.changeDetectorRef.markForCheck();
|
|
26
28
|
return this.selectedOptionContent?.nativeElement.innerHTML || undefined;
|
|
27
29
|
};
|
|
28
30
|
this._openPanel = false;
|
|
@@ -165,18 +167,18 @@ export class SelectTestComponent extends SelectDirective {
|
|
|
165
167
|
this.isDestroyed$.complete();
|
|
166
168
|
}
|
|
167
169
|
}
|
|
168
|
-
SelectTestComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: SelectTestComponent, deps: [{ token: i1.ValueChangeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
170
|
+
SelectTestComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: SelectTestComponent, deps: [{ token: i1.ValueChangeService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
169
171
|
SelectTestComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: SelectTestComponent, selector: "wac-select-test", inputs: { required: "required", keepPanelOpen: "keepPanelOpen", openPanel: "openPanel", enableSearch: "enableSearch" }, outputs: { openPanelChange: "openPanelChange" }, host: { properties: { "attr.role": "this.role" } }, providers: [
|
|
170
172
|
{ provide: NG_VALUE_ACCESSOR, useExisting: SelectTestComponent, multi: true },
|
|
171
173
|
ValueChangeService
|
|
172
|
-
], queries: [{ propertyName: "customSearchTrigger", first: true, predicate: SelectSearchTriggerComponent, descendants: true }, { propertyName: "label", first: true, predicate: LabelComponent, descendants: true }], viewQueries: [{ propertyName: "selectHeader", first: true, predicate: ["selectHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p *ngIf=\"!!label\" class=\"wac-select-test__label\">\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\n</p>\n\n\n<div\n class=\"wac-select-test\"\n wzAutoHide\n (clickOutside)=\"onClosePanel()\"\n [triggerElement]=\"'wac-select-test__header__selection'\"\n [zIndexToggle]=\"openPanel\"\n >\n\n <div #selectHeader class=\"wac-select-test__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\n\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\n\n <ng-template #closePanelTrigger>\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\n </ng-template>\n\n <ng-template #openPanelTrigger>\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\n </ng-template>\n\n <ng-template #defaultTrigger>\n <ng-content *ngIf=\"!(selectedOptionContent | wacFn : getSelectedOptionContent)
|
|
174
|
+
], queries: [{ propertyName: "customSearchTrigger", first: true, predicate: SelectSearchTriggerComponent, descendants: true }, { propertyName: "label", first: true, predicate: LabelComponent, descendants: true }], viewQueries: [{ propertyName: "selectHeader", first: true, predicate: ["selectHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p *ngIf=\"!!label\" class=\"wac-select-test__label\">\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\n</p>\n\n\n<div\n class=\"wac-select-test\"\n wzAutoHide\n (clickOutside)=\"onClosePanel()\"\n [triggerElement]=\"'wac-select-test__header__selection'\"\n [zIndexToggle]=\"openPanel\"\n >\n\n <div #selectHeader class=\"wac-select-test__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\n\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\n\n <ng-template #closePanelTrigger>\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\n </ng-template>\n\n <ng-template #openPanelTrigger>\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\n </ng-template>\n\n <ng-template #defaultTrigger>\n <ng-content *ngIf=\"!(selectedOptionContent | wacFn : getSelectedOptionContent)\" select=\"wac-placeholder,[role=placeholder]\"></ng-content>\n <div\n class=\"wac-select-test__header__selection wac-option__placeholder\"\n *ngIf=\"!!(selectedOptionContent | wacFn : getSelectedOptionContent)\"\n [innerHtml]=\"(selectedOptionContent | wacFn : getSelectedOptionContent)\">\n </div>\n </ng-template>\n\n </ng-container>\n\n <span class=\"wac-select-test__header__chevron\"><i class=\"fas fa-chevron-down\"></i></span>\n\n </div>\n\n\n <div class=\"wac-select-test__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openPanel, open: openPanel }\">\n\n <perfect-scrollbar [config]=\"{ suppressScrollX: true }\">\n <ng-content\n select=\"wac-option-call-to-action, wac-option, option, .option, [selectOption]\">\n </ng-content>\n </perfect-scrollbar>\n\n <div *ngIf=\"!optionChildren?.length\" class=\"wac-select-test__content__empty\">\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n\n </div>\n</div>", dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i4.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "component", type: i5.PerfectScrollbarComponent, selector: "perfect-scrollbar", inputs: ["disabled", "usePSClass", "autoPropagation", "scrollIndicators", "config"], outputs: ["psScrollY", "psScrollX", "psScrollUp", "psScrollDown", "psScrollLeft", "psScrollRight", "psYReachEnd", "psYReachStart", "psXReachEnd", "psXReachStart"], exportAs: ["ngxPerfectScrollbar"] }, { kind: "pipe", type: i6.TranslatePipe, name: "translate" }, { kind: "pipe", type: i7.CallComponentFunctionPipe, name: "wacFn" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
173
175
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: SelectTestComponent, decorators: [{
|
|
174
176
|
type: Component,
|
|
175
177
|
args: [{ selector: 'wac-select-test', providers: [
|
|
176
178
|
{ provide: NG_VALUE_ACCESSOR, useExisting: SelectTestComponent, multi: true },
|
|
177
179
|
ValueChangeService
|
|
178
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<p *ngIf=\"!!label\" class=\"wac-select-test__label\">\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\n</p>\n\n\n<div\n class=\"wac-select-test\"\n wzAutoHide\n (clickOutside)=\"onClosePanel()\"\n [triggerElement]=\"'wac-select-test__header__selection'\"\n [zIndexToggle]=\"openPanel\"\n >\n\n <div #selectHeader class=\"wac-select-test__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\n\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\n\n <ng-template #closePanelTrigger>\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\n </ng-template>\n\n <ng-template #openPanelTrigger>\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\n </ng-template>\n\n <ng-template #defaultTrigger>\n <ng-content *ngIf=\"!(selectedOptionContent | wacFn : getSelectedOptionContent)
|
|
179
|
-
}], ctorParameters: function () { return [{ type: i1.ValueChangeService }]; }, propDecorators: { role: [{
|
|
180
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<p *ngIf=\"!!label\" class=\"wac-select-test__label\">\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\n</p>\n\n\n<div\n class=\"wac-select-test\"\n wzAutoHide\n (clickOutside)=\"onClosePanel()\"\n [triggerElement]=\"'wac-select-test__header__selection'\"\n [zIndexToggle]=\"openPanel\"\n >\n\n <div #selectHeader class=\"wac-select-test__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\n\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\n\n <ng-template #closePanelTrigger>\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\n </ng-template>\n\n <ng-template #openPanelTrigger>\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\n </ng-template>\n\n <ng-template #defaultTrigger>\n <ng-content *ngIf=\"!(selectedOptionContent | wacFn : getSelectedOptionContent)\" select=\"wac-placeholder,[role=placeholder]\"></ng-content>\n <div\n class=\"wac-select-test__header__selection wac-option__placeholder\"\n *ngIf=\"!!(selectedOptionContent | wacFn : getSelectedOptionContent)\"\n [innerHtml]=\"(selectedOptionContent | wacFn : getSelectedOptionContent)\">\n </div>\n </ng-template>\n\n </ng-container>\n\n <span class=\"wac-select-test__header__chevron\"><i class=\"fas fa-chevron-down\"></i></span>\n\n </div>\n\n\n <div class=\"wac-select-test__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openPanel, open: openPanel }\">\n\n <perfect-scrollbar [config]=\"{ suppressScrollX: true }\">\n <ng-content\n select=\"wac-option-call-to-action, wac-option, option, .option, [selectOption]\">\n </ng-content>\n </perfect-scrollbar>\n\n <div *ngIf=\"!optionChildren?.length\" class=\"wac-select-test__content__empty\">\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n\n </div>\n</div>" }]
|
|
181
|
+
}], ctorParameters: function () { return [{ type: i1.ValueChangeService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { role: [{
|
|
180
182
|
type: HostBinding,
|
|
181
183
|
args: ['attr.role']
|
|
182
184
|
}], customSearchTrigger: [{
|
|
@@ -199,4 +201,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
|
|
|
199
201
|
}], enableSearch: [{
|
|
200
202
|
type: Input
|
|
201
203
|
}] } });
|
|
202
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0cy9zZWxlY3QtdGVzdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3RzL3NlbGVjdC10ZXN0L3NlbGVjdC10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZMLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDNUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwREFBMEQsQ0FBQztBQUN4RyxPQUFPLEVBQ0wsVUFBVSxFQUNWLEtBQUssRUFDTCxNQUFNLEVBQ04sY0FBYyxFQUNkLFVBQVUsRUFDVixXQUFXLEVBQ1gsS0FBSyxFQUNMLEdBQUcsRUFDSCxRQUFRLEdBQ1QsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDcEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOzs7Ozs7Ozs7QUFh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QkFBbEMsWUFBWTt1QkFBQyxjQUFjO2dCQUVELFlBQVk7c0JBQXRDLFNBQVM7dUJBQUMsY0FBYztnQkFJckIsUUFBUTtzQkFEWCxLQUFLO2dCQXFCRixhQUFhO3NCQURoQixLQUFLO2dCQWFGLFNBQVM7c0JBRFosS0FBSztnQkFtQkksZUFBZTtzQkFBeEIsTUFBTTtnQkFFRSxZQUFZO3NCQUFwQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVmFsdWVDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi92YWx1ZS1jaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWxlY3RTZWFyY2hUcmlnZ2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0LXNlYXJjaC10cmlnZ2VyL3NlbGVjdC1zZWFyY2gtdHJpZ2dlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRE9XTl9BUlJPVyxcbiAgRU5URVIsXG4gIEVTQ0FQRSxcbiAgaGFzTW9kaWZpZXJLZXksXG4gIExFRlRfQVJST1csXG4gIFJJR0hUX0FSUk9XLFxuICBTUEFDRSxcbiAgVEFCLFxuICBVUF9BUlJPVyxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3REaXJlY3RpdmUgfSBmcm9tICcuL3NlbGVjdC5kaXJlY3RpdmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhYy1zZWxlY3QtdGVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtdGVzdC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBTZWxlY3RUZXN0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgIFZhbHVlQ2hhbmdlU2VydmljZVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0VGVzdENvbXBvbmVudDxUT3B0aW9uVmFsdWU+IGV4dGVuZHMgU2VsZWN0RGlyZWN0aXZlPFRPcHRpb25WYWx1ZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vISBSZWZhY3RvIGltcHJvdmUgc3JvbGwgb24gbW9iaWxlLCBzZWUgd2l0aCBQYXVsaW5lXG4gIC8vIGFuZ3VsYXIgbWF0ZXJpYWwgc2VsZWN0IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYWluL3NyYy9tYXRlcmlhbC9zZWxlY3Qvc2VsZWN0LnRzXG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ2NvbWJvYm94JztcblxuICBAQ29udGVudENoaWxkKFNlbGVjdFNlYXJjaFRyaWdnZXJDb21wb25lbnQpIGN1c3RvbVNlYXJjaFRyaWdnZXI6IFNlbGVjdFNlYXJjaFRyaWdnZXJDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChMYWJlbENvbXBvbmVudCkgbGFiZWw6IExhYmVsQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEhlYWRlcicpIHNlbGVjdEhlYWRlcjogRWxlbWVudFJlZjtcblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIHJlcXVpcmVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IGZhbHNlO1xuICB9XG5cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBzZWxlY3RlZE9wdGlvbkNvbnRlbnQoKTogYW55IHtcbiAgICAvLyB0b2RvIGNhbGwgbWFya0FzQ2hhbmdlZCB3aGVuIHRoZSBvcHRpb24gY29udGVudCBjaGFuZ2VcbiAgICByZXR1cm4gdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2VsZWN0ZWRPcHRpb25Db250ZW50O1xuICB9O1xuXG4gIGdldFNlbGVjdGVkT3B0aW9uQ29udGVudCA9ICgpID0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZE9wdGlvbkNvbnRlbnQ/Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MIHx8IHVuZGVmaW5lZDtcbiAgfVxuXG4gIEBJbnB1dCgpXG4gIHNldCBrZWVwUGFuZWxPcGVuKGtlZXBQYW5lbE9wZW46IGJvb2xlYW4pIHtcbiAgICB0aGlzLm9wZW5QYW5lbCA9IGtlZXBQYW5lbE9wZW47XG4gICAgdGhpcy5fa2VlcFBhbmVsT3BlbiA9IGtlZXBQYW5lbE9wZW47XG4gIH1cblxuICBnZXQga2VlcFBhbmVsT3BlbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fa2VlcFBhbmVsT3BlbiA7XG4gIH1cblxuICBwcml2YXRlIF9rZWVwUGFuZWxPcGVuOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBvcGVuUGFuZWwob3BlblBhbmVsOiBib29sZWFuKSB7XG4gICAgY29uc3Qgd2FzT3BlbiA9IHRoaXMuX29wZW5QYW5lbDtcbiAgICB0aGlzLl9vcGVuUGFuZWwgPSB0aGlzLmtlZXBQYW5lbE9wZW4gfHwgb3BlblBhbmVsO1xuXG4gICAgaWYgKG9wZW5QYW5lbCkge1xuICAgICAgdGhpcy5jdXN0b21TZWFyY2hUcmlnZ2VyPy5zZXRGb2N1cygpO1xuICAgIH1cblxuICAgIGlmICh3YXNPcGVuKSB7XG4gICAgICB0aGlzLm9uU2VsZWN0VG91Y2godGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9wZW5QYW5lbCgpIDogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX29wZW5QYW5lbDtcbiAgfVxuICBfb3BlblBhbmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpIG9wZW5QYW5lbENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBASW5wdXQoKSBlbmFibGVTZWFyY2g6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBvdmVycmlkZSB0YWJJbmRleDogbnVtYmVyID0gLTE7XG5cbiAgaXNEZXN0cm95ZWQkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIGlzS2V5Qm9hcmRBY3Rpb24gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdmFsdWVDaGFuZ2VTZXJ2aWNlOiBWYWx1ZUNoYW5nZVNlcnZpY2U8VE9wdGlvblZhbHVlPixcbiAgICApIHtcbiAgICAgIHN1cGVyKHZhbHVlQ2hhbmdlU2VydmljZSk7XG4gICAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5jbG9zZVRhYk9uVmFsdWVDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VUYWJPblZhbHVlQ2hhbmdlKCkge1xuICAgIHRoaXMudmFsdWVDaGFuZ2VTZXJ2aWNlLnZhbHVlQ2hhbmdlJC5waXBlKHRha2VVbnRpbCh0aGlzLmlzRGVzdHJveWVkJCksIGZpbHRlcih0aGlzLnNraXBJZlRyaWdnZXJlZEJ5S2V5Ym9hcmRBY3Rpb24pKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNsb3NlUGFuZWwoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2tpcElmVHJpZ2dlcmVkQnlLZXlib2FyZEFjdGlvbiA9ICgpID0+IHtcbiAgICBpZighdGhpcy5pc0tleUJvYXJkQWN0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pc0tleUJvYXJkQWN0aW9uID0gZmFsc2U7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25Ub2dnbGVQYW5lbCgpIHtcbiAgICB0aGlzLm9wZW5QYW5lbCA9ICF0aGlzLm9wZW5QYW5lbDtcbiAgICB0aGlzLm9wZW5QYW5lbENoYW5nZS5lbWl0KHRoaXMub3BlblBhbmVsKTtcbiAgfVxuXG4gIG9uQ2xvc2VQYW5lbCgpIHtcbiAgICB0aGlzLm9wZW5QYW5lbCA9IGZhbHNlO1xuICAgIHRoaXMub3BlblBhbmVsQ2hhbmdlLmVtaXQodGhpcy5vcGVuUGFuZWwpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFRBQikge1xuICAgICAgLy8gZ28gdG8gdGhlIG5leHQgZWxlbWVudCB3aXRoIHRhYmluZGV4XG4gICAgICBpZiAodGhpcy5vcGVuUGFuZWwpIHtcbiAgICAgICAgdGhpcy5vcGVuUGFuZWwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb25UcmlnZ2VyZWQgPSB0aGlzLm9wZW5QYW5lbCA/IHRoaXMuX2hhbmRsZU9wZW5LZXlkb3duKGV2ZW50KSA6IHRoaXMuX2hhbmRsZUNsb3NlZEtleWRvd24oZXZlbnQpO1xuXG4gICAgaWYgKGFjdGlvblRyaWdnZXJlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNLZXlCb2FyZEFjdGlvbiA9IHRydWU7XG4gICAgc3VwZXIub25LZXlkb3duKGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUtleWJvYXJkQWN0aW9uV2l0aFNlYXJjaChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuXG4gICAgaWYgKGtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgIHRoaXMuaXNLZXlCb2FyZEFjdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlU2VydmljZS5zZWxlY3ROZXh0T3B0aW9uKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGtleUNvZGUgPT09IFVQX0FSUk9XKSB7XG4gICAgICB0aGlzLmlzS2V5Qm9hcmRBY3Rpb24gPSB0cnVlO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2VsZWN0UHJldmlvdXNPcHRpb24oKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgd2hpbGUgdGhlIHNlbGVjdCBpcyBjbG9zZWQuICovXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NlZEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICBjb25zdCBpc0Fycm93S2V5ID1cbiAgICAgIGtleUNvZGUgPT09IERPV05fQVJST1cgfHxcbiAgICAgIGtleUNvZGUgPT09IFVQX0FSUk9XIHx8XG4gICAgICBrZXlDb2RlID09PSBMRUZUX0FSUk9XIHx8XG4gICAgICBrZXlDb2RlID09PSBSSUdIVF9BUlJPVztcbiAgICBjb25zdCBpc09wZW5LZXkgPSBrZXlDb2RlID09PSBFTlRFUiB8fCBrZXlDb2RlID09PSBTUEFDRTtcblxuICAgIC8vIE9wZW4gdGhlIHNlbGVjdCBvbiBBTFQgKyBhcnJvdyBrZXkgdG8gbWF0Y2ggdGhlIG5hdGl2ZSA8c2VsZWN0PlxuICAgIGlmIChcbiAgICAgIChpc09wZW5LZXkgJiYgIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkgfHxcbiAgICAgIChldmVudC5hbHRLZXkgJiYgaXNBcnJvd0tleSlcbiAgICApIHtcbiAgICAgIHRoaXMub3BlblBhbmVsID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBIYW5kbGVzIGtleWJvYXJkIGV2ZW50cyB3aGVuIHRoZSBzZWxlY3RlZCBpcyBvcGVuLiAqL1xuICBwcml2YXRlIF9oYW5kbGVPcGVuS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IGlzQXJyb3dLZXkgPVxuICAgICAga2V5Q29kZSA9PT0gRE9XTl9BUlJPVyB8fFxuICAgICAga2V5Q29kZSA9PT0gVVBfQVJST1cgfHxcbiAgICAgIGtleUNvZGUgPT09IExFRlRfQVJST1cgfHxcbiAgICAgIGtleUNvZGUgPT09IFJJR0hUX0FSUk9XO1xuICAgIGNvbnN0IGlzRXNjYXBlS2V5ID0ga2V5Q29kZSA9PT0gRVNDQVBFIHx8IGtleUNvZGUgPT09IEVOVEVSIHx8IGtleUNvZGUgPT09IFNQQUNFIHx8IGtleUNvZGUgPT09IFRBQjtcblxuICAgIGlmICgoaXNBcnJvd0tleSAmJiBldmVudC5hbHRLZXkpIHx8IGlzRXNjYXBlS2V5KSB7XG4gICAgICAvLyBDbG9zZSB0aGUgc2VsZWN0IG9uIEFMVCArIGFycm93IGtleSB0byBtYXRjaCB0aGUgbmF0aXZlIDxzZWxlY3Q+XG4gICAgICB0aGlzLm9wZW5QYW5lbCA9IGZhbHNlO1xuXG4gICAgICBpZiAodGhpcy5jdXN0b21TZWFyY2hUcmlnZ2VyICYmIGtleUNvZGUgIT09IFRBQikge1xuICAgICAgICAvLyBJZiBhIGVzY2FwZSBrZXkgaXMgdXNlZCB3aXRoIHRoZSBzZWFyY2gsIHRoZSBmb2N1cyBvbiB0aGUgc2VsZWN0IGlzIGxvb3NlZC4gQW5kIHdlIGNhbiBub3QgaW50ZXJhY3Qgd2l0aCB0aGUgc2VsZWN0IGFueW1vcmUuXG4gICAgICAgIHRoaXMuc2VsZWN0SGVhZGVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG9uU2VsZWN0VG91Y2g6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgb3ZlcnJpZGUgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSl7XG4gICAgdGhpcy5vblNlbGVjdFRvdWNoID0gZm47XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmlzRGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5pc0Rlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPHAgKm5nSWY9XCIhIWxhYmVsXCIgY2xhc3M9XCJ3YWMtc2VsZWN0LXRlc3RfX2xhYmVsXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIndhYy1sYWJlbCwgLndhYy1sYWJlbFwiID48L25nLWNvbnRlbnQ+XG48L3A+XG5cblxuPGRpdlxuICBjbGFzcz1cIndhYy1zZWxlY3QtdGVzdFwiXG4gIHd6QXV0b0hpZGVcbiAgKGNsaWNrT3V0c2lkZSk9XCJvbkNsb3NlUGFuZWwoKVwiXG4gIFt0cmlnZ2VyRWxlbWVudF09XCInd2FjLXNlbGVjdC10ZXN0X19oZWFkZXJfX3NlbGVjdGlvbidcIlxuICBbekluZGV4VG9nZ2xlXT1cIm9wZW5QYW5lbFwiXG4gID5cblxuICAgIDxkaXYgI3NlbGVjdEhlYWRlciBjbGFzcz1cIndhYy1zZWxlY3QtdGVzdF9faGVhZGVyXCIgW25nQ2xhc3NdPVwieyAnc2VsZWN0LWRpc2FibGVkJyA6IGRpc2FibGVkIH1cIiAoY2xpY2spPVwiIWRpc2FibGVkICYmIG9uVG9nZ2xlUGFuZWwoKVwiIHRhYmluZGV4PVwiMFwiPlxuXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wZW5QYW5lbCA/IG9wZW5QYW5lbFRyaWdnZXIgOiBjbG9zZVBhbmVsVHJpZ2dlclwiID5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2Nsb3NlUGFuZWxUcmlnZ2VyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdFRyaWdnZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI29wZW5QYW5lbFRyaWdnZXI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCIhIWN1c3RvbVNlYXJjaFRyaWdnZXI7IGVsc2UgZGVmYXVsdFRyaWdnZXJcIiBzZWxlY3Q9XCJ3YWMtc2VsZWN0LXNlYXJjaC10cmlnZ2VyXCIgPjwvbmctY29udGVudD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUcmlnZ2VyPlxuICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIShzZWxlY3RlZE9wdGlvbkNvbnRlbnQgfCB3YWNGbiA6IGdldFNlbGVjdGVkT3B0aW9uQ29udGVudCkgYXMgc2VsZWN0ZWRPcHRpb25Db250ZW50SHRtbFwiIHNlbGVjdD1cIndhYy1wbGFjZWhvbGRlcixbcm9sZT1wbGFjZWhvbGRlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgICAgPGRpdlxuICAgICAgICAgICAgY2xhc3M9XCJ3YWMtc2VsZWN0LXRlc3RfX2hlYWRlcl9fc2VsZWN0aW9uIHdhYy1vcHRpb25fX3BsYWNlaG9sZGVyXCJcbiAgICAgICAgICAgICpuZ0lmPVwiISEoc2VsZWN0ZWRPcHRpb25Db250ZW50IHwgd2FjRm4gOiBnZXRTZWxlY3RlZE9wdGlvbkNvbnRlbnQpXCJcbiAgICAgICAgICAgIFtpbm5lckh0bWxdPVwiKHNlbGVjdGVkT3B0aW9uQ29udGVudCB8IHdhY0ZuIDogZ2V0U2VsZWN0ZWRPcHRpb25Db250ZW50KVwiPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuXG4gICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgPHNwYW4gY2xhc3M9XCJ3YWMtc2VsZWN0LXRlc3RfX2hlYWRlcl9fY2hldnJvblwiPjxpIGNsYXNzPVwiZmFzIGZhLWNoZXZyb24tZG93blwiPjwvaT48L3NwYW4+XG5cbiAgICA8L2Rpdj5cblxuXG4gICAgPGRpdiBjbGFzcz1cIndhYy1zZWxlY3QtdGVzdF9fY29udGVudFwiICpuZ0lmPVwiIWRpc2FibGVkXCIgW25nQ2xhc3NdPVwieyBoaWRkZW46ICFvcGVuUGFuZWwsIG9wZW46IG9wZW5QYW5lbCB9XCI+XG5cbiAgICAgIDxwZXJmZWN0LXNjcm9sbGJhciBbY29uZmlnXT1cInsgc3VwcHJlc3NTY3JvbGxYOiB0cnVlIH1cIj5cbiAgICAgICAgPG5nLWNvbnRlbnRcbiAgICAgICAgICBzZWxlY3Q9XCJ3YWMtb3B0aW9uLWNhbGwtdG8tYWN0aW9uLCB3YWMtb3B0aW9uLCBvcHRpb24sIC5vcHRpb24sIFtzZWxlY3RPcHRpb25dXCI+XG4gICAgICAgIDwvbmctY29udGVudD5cbiAgICAgIDwvcGVyZmVjdC1zY3JvbGxiYXI+XG5cbiAgICAgIDxkaXYgKm5nSWY9XCIhb3B0aW9uQ2hpbGRyZW4/Lmxlbmd0aFwiIGNsYXNzPVwid2FjLXNlbGVjdC10ZXN0X19jb250ZW50X19lbXB0eVwiPlxuICAgICAgICA8c3Bhbj57eyd3YWMuZGF0YXRhYmxlLm5vcmVzdWx0JyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICA8L2Rpdj5cbjwvZGl2PiJdfQ==
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2VsZWN0cy9zZWxlY3QtdGVzdC9zZWxlY3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9zZWxlY3RzL3NlbGVjdC10ZXN0L3NlbGVjdC10ZXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFlBQVksRUFBYyxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBcUIsTUFBTSxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUMxTSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sMERBQTBELENBQUM7QUFDeEcsT0FBTyxFQUNMLFVBQVUsRUFDVixLQUFLLEVBQ0wsTUFBTSxFQUNOLGNBQWMsRUFDZCxVQUFVLEVBQ1YsV0FBVyxFQUNYLEtBQUssRUFDTCxHQUFHLEVBQ0gsUUFBUSxHQUNULE1BQU0sdUJBQXVCLENBQUM7QUFDL0IsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQzs7Ozs7Ozs7O0FB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QU07eUlBTXJCLElBQUk7c0JBQTdCLFdBQVc7dUJBQUMsV0FBVztnQkFFb0IsbUJBQW1CO3NCQUE5RCxZQUFZO3VCQUFDLDRCQUE0QjtnQkFFWixLQUFLO3NCQUFsQyxZQUFZO3VCQUFDLGNBQWM7Z0JBRUQsWUFBWTtzQkFBdEMsU0FBUzt1QkFBQyxjQUFjO2dCQUlyQixRQUFRO3NCQURYLEtBQUs7Z0JBc0JGLGFBQWE7c0JBRGhCLEtBQUs7Z0JBYUYsU0FBUztzQkFEWixLQUFLO2dCQW1CSSxlQUFlO3NCQUF4QixNQUFNO2dCQUVFLFlBQVk7c0JBQXBCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT25EZXN0cm95LCBPbkluaXQsIE91dHB1dCwgVmlld0NoaWxkLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpbHRlciwgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgVmFsdWVDaGFuZ2VTZXJ2aWNlIH0gZnJvbSAnLi92YWx1ZS1jaGFuZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBTZWxlY3RTZWFyY2hUcmlnZ2VyQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VsZWN0LXNlYXJjaC10cmlnZ2VyL3NlbGVjdC1zZWFyY2gtdHJpZ2dlci5jb21wb25lbnQnO1xuaW1wb3J0IHtcbiAgRE9XTl9BUlJPVyxcbiAgRU5URVIsXG4gIEVTQ0FQRSxcbiAgaGFzTW9kaWZpZXJLZXksXG4gIExFRlRfQVJST1csXG4gIFJJR0hUX0FSUk9XLFxuICBTUEFDRSxcbiAgVEFCLFxuICBVUF9BUlJPVyxcbn0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcbmltcG9ydCB7IExhYmVsQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vY29tbW9uL2xhYmVsL2xhYmVsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWxlY3REaXJlY3RpdmUgfSBmcm9tICcuL3NlbGVjdC5kaXJlY3RpdmUnO1xuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3dhYy1zZWxlY3QtdGVzdCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zZWxlY3QtdGVzdC5jb21wb25lbnQuaHRtbCcsXG4gIHByb3ZpZGVyczogW1xuICAgIHsgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBTZWxlY3RUZXN0Q29tcG9uZW50LCBtdWx0aTogdHJ1ZSB9LFxuICAgIFZhbHVlQ2hhbmdlU2VydmljZVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0VGVzdENvbXBvbmVudDxUT3B0aW9uVmFsdWU+IGV4dGVuZHMgU2VsZWN0RGlyZWN0aXZlPFRPcHRpb25WYWx1ZT4gaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIC8vISBSZWZhY3RvIGltcHJvdmUgc3JvbGwgb24gbW9iaWxlLCBzZWUgd2l0aCBQYXVsaW5lXG4gIC8vIGFuZ3VsYXIgbWF0ZXJpYWwgc2VsZWN0IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi9tYWluL3NyYy9tYXRlcmlhbC9zZWxlY3Qvc2VsZWN0LnRzXG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKSByb2xlID0gJ2NvbWJvYm94JztcblxuICBAQ29udGVudENoaWxkKFNlbGVjdFNlYXJjaFRyaWdnZXJDb21wb25lbnQpIGN1c3RvbVNlYXJjaFRyaWdnZXI6IFNlbGVjdFNlYXJjaFRyaWdnZXJDb21wb25lbnQ7XG5cbiAgQENvbnRlbnRDaGlsZChMYWJlbENvbXBvbmVudCkgbGFiZWw6IExhYmVsQ29tcG9uZW50O1xuXG4gIEBWaWV3Q2hpbGQoJ3NlbGVjdEhlYWRlcicpIHNlbGVjdEhlYWRlcjogRWxlbWVudFJlZjtcblxuICAvKiogV2hldGhlciB0aGUgY29tcG9uZW50IGlzIHJlcXVpcmVkLiAqL1xuICBASW5wdXQoKVxuICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JlcXVpcmVkID8/IGZhbHNlO1xuICB9XG5cbiAgc2V0IHJlcXVpcmVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fcmVxdWlyZWQgPSB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlcXVpcmVkOiBib29sZWFuIHwgdW5kZWZpbmVkO1xuXG4gIGdldCBzZWxlY3RlZE9wdGlvbkNvbnRlbnQoKTogYW55IHtcbiAgICAvLyB0b2RvIGNhbGwgbWFya0FzQ2hhbmdlZCB3aGVuIHRoZSBvcHRpb24gY29udGVudCBjaGFuZ2VcbiAgICByZXR1cm4gdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2VsZWN0ZWRPcHRpb25Db250ZW50O1xuICB9O1xuXG4gIGdldFNlbGVjdGVkT3B0aW9uQ29udGVudCA9ICgpID0+IHtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkT3B0aW9uQ29udGVudD8ubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IGtlZXBQYW5lbE9wZW4oa2VlcFBhbmVsT3BlbjogYm9vbGVhbikge1xuICAgIHRoaXMub3BlblBhbmVsID0ga2VlcFBhbmVsT3BlbjtcbiAgICB0aGlzLl9rZWVwUGFuZWxPcGVuID0ga2VlcFBhbmVsT3BlbjtcbiAgfVxuXG4gIGdldCBrZWVwUGFuZWxPcGVuKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9rZWVwUGFuZWxPcGVuIDtcbiAgfVxuXG4gIHByaXZhdGUgX2tlZXBQYW5lbE9wZW46IGJvb2xlYW47XG5cbiAgQElucHV0KClcbiAgc2V0IG9wZW5QYW5lbChvcGVuUGFuZWw6IGJvb2xlYW4pIHtcbiAgICBjb25zdCB3YXNPcGVuID0gdGhpcy5fb3BlblBhbmVsO1xuICAgIHRoaXMuX29wZW5QYW5lbCA9IHRoaXMua2VlcFBhbmVsT3BlbiB8fCBvcGVuUGFuZWw7XG5cbiAgICBpZiAob3BlblBhbmVsKSB7XG4gICAgICB0aGlzLmN1c3RvbVNlYXJjaFRyaWdnZXI/LnNldEZvY3VzKCk7XG4gICAgfVxuXG4gICAgaWYgKHdhc09wZW4pIHtcbiAgICAgIHRoaXMub25TZWxlY3RUb3VjaCh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBnZXQgb3BlblBhbmVsKCkgOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fb3BlblBhbmVsO1xuICB9XG4gIF9vcGVuUGFuZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgb3BlblBhbmVsQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIEBJbnB1dCgpIGVuYWJsZVNlYXJjaDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIG92ZXJyaWRlIHRhYkluZGV4OiBudW1iZXIgPSAtMTtcblxuICBpc0Rlc3Ryb3llZCQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgaXNLZXlCb2FyZEFjdGlvbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByb3RlY3RlZCB2YWx1ZUNoYW5nZVNlcnZpY2U6IFZhbHVlQ2hhbmdlU2VydmljZTxUT3B0aW9uVmFsdWU+LFxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgICApIHtcbiAgICAgIHN1cGVyKHZhbHVlQ2hhbmdlU2VydmljZSk7XG4gICAgfVxuXG4gIG92ZXJyaWRlIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25Jbml0KCk7XG4gICAgdGhpcy5jbG9zZVRhYk9uVmFsdWVDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VUYWJPblZhbHVlQ2hhbmdlKCkge1xuICAgIHRoaXMudmFsdWVDaGFuZ2VTZXJ2aWNlLnZhbHVlQ2hhbmdlJC5waXBlKHRha2VVbnRpbCh0aGlzLmlzRGVzdHJveWVkJCksIGZpbHRlcih0aGlzLnNraXBJZlRyaWdnZXJlZEJ5S2V5Ym9hcmRBY3Rpb24pKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5vbkNsb3NlUGFuZWwoKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2tpcElmVHJpZ2dlcmVkQnlLZXlib2FyZEFjdGlvbiA9ICgpID0+IHtcbiAgICBpZighdGhpcy5pc0tleUJvYXJkQWN0aW9uKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgdGhpcy5pc0tleUJvYXJkQWN0aW9uID0gZmFsc2U7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgb25Ub2dnbGVQYW5lbCgpIHtcbiAgICB0aGlzLm9wZW5QYW5lbCA9ICF0aGlzLm9wZW5QYW5lbDtcbiAgICB0aGlzLm9wZW5QYW5lbENoYW5nZS5lbWl0KHRoaXMub3BlblBhbmVsKTtcbiAgfVxuXG4gIG9uQ2xvc2VQYW5lbCgpIHtcbiAgICB0aGlzLm9wZW5QYW5lbCA9IGZhbHNlO1xuICAgIHRoaXMub3BlblBhbmVsQ2hhbmdlLmVtaXQodGhpcy5vcGVuUGFuZWwpO1xuICB9XG5cbiAgb3ZlcnJpZGUgb25LZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3Qga2V5Q29kZSA9IGV2ZW50LmtleUNvZGU7XG4gICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IFRBQikge1xuICAgICAgLy8gZ28gdG8gdGhlIG5leHQgZWxlbWVudCB3aXRoIHRhYmluZGV4XG4gICAgICBpZiAodGhpcy5vcGVuUGFuZWwpIHtcbiAgICAgICAgdGhpcy5vcGVuUGFuZWwgPSBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBhY3Rpb25UcmlnZ2VyZWQgPSB0aGlzLm9wZW5QYW5lbCA/IHRoaXMuX2hhbmRsZU9wZW5LZXlkb3duKGV2ZW50KSA6IHRoaXMuX2hhbmRsZUNsb3NlZEtleWRvd24oZXZlbnQpO1xuXG4gICAgaWYgKGFjdGlvblRyaWdnZXJlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuaXNLZXlCb2FyZEFjdGlvbiA9IHRydWU7XG4gICAgc3VwZXIub25LZXlkb3duKGV2ZW50KTtcbiAgfVxuXG4gIGhhbmRsZUtleWJvYXJkQWN0aW9uV2l0aFNlYXJjaChldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuXG4gICAgaWYgKGtleUNvZGUgPT09IERPV05fQVJST1cpIHtcbiAgICAgIHRoaXMuaXNLZXlCb2FyZEFjdGlvbiA9IHRydWU7XG4gICAgICB0aGlzLnZhbHVlQ2hhbmdlU2VydmljZS5zZWxlY3ROZXh0T3B0aW9uKCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKGtleUNvZGUgPT09IFVQX0FSUk9XKSB7XG4gICAgICB0aGlzLmlzS2V5Qm9hcmRBY3Rpb24gPSB0cnVlO1xuICAgICAgdGhpcy52YWx1ZUNoYW5nZVNlcnZpY2Uuc2VsZWN0UHJldmlvdXNPcHRpb24oKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKiogSGFuZGxlcyBrZXlib2FyZCBldmVudHMgd2hpbGUgdGhlIHNlbGVjdCBpcyBjbG9zZWQuICovXG4gIHByaXZhdGUgX2hhbmRsZUNsb3NlZEtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiBib29sZWFuIHtcbiAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQua2V5Q29kZTtcbiAgICBjb25zdCBpc0Fycm93S2V5ID1cbiAgICAgIGtleUNvZGUgPT09IERPV05fQVJST1cgfHxcbiAgICAgIGtleUNvZGUgPT09IFVQX0FSUk9XIHx8XG4gICAgICBrZXlDb2RlID09PSBMRUZUX0FSUk9XIHx8XG4gICAgICBrZXlDb2RlID09PSBSSUdIVF9BUlJPVztcbiAgICBjb25zdCBpc09wZW5LZXkgPSBrZXlDb2RlID09PSBFTlRFUiB8fCBrZXlDb2RlID09PSBTUEFDRTtcblxuICAgIC8vIE9wZW4gdGhlIHNlbGVjdCBvbiBBTFQgKyBhcnJvdyBrZXkgdG8gbWF0Y2ggdGhlIG5hdGl2ZSA8c2VsZWN0PlxuICAgIGlmIChcbiAgICAgIChpc09wZW5LZXkgJiYgIWhhc01vZGlmaWVyS2V5KGV2ZW50KSkgfHxcbiAgICAgIChldmVudC5hbHRLZXkgJiYgaXNBcnJvd0tleSlcbiAgICApIHtcbiAgICAgIHRoaXMub3BlblBhbmVsID0gdHJ1ZTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBIYW5kbGVzIGtleWJvYXJkIGV2ZW50cyB3aGVuIHRoZSBzZWxlY3RlZCBpcyBvcGVuLiAqL1xuICBwcml2YXRlIF9oYW5kbGVPcGVuS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGtleUNvZGUgPSBldmVudC5rZXlDb2RlO1xuICAgIGNvbnN0IGlzQXJyb3dLZXkgPVxuICAgICAga2V5Q29kZSA9PT0gRE9XTl9BUlJPVyB8fFxuICAgICAga2V5Q29kZSA9PT0gVVBfQVJST1cgfHxcbiAgICAgIGtleUNvZGUgPT09IExFRlRfQVJST1cgfHxcbiAgICAgIGtleUNvZGUgPT09IFJJR0hUX0FSUk9XO1xuICAgIGNvbnN0IGlzRXNjYXBlS2V5ID0ga2V5Q29kZSA9PT0gRVNDQVBFIHx8IGtleUNvZGUgPT09IEVOVEVSIHx8IGtleUNvZGUgPT09IFNQQUNFIHx8IGtleUNvZGUgPT09IFRBQjtcblxuICAgIGlmICgoaXNBcnJvd0tleSAmJiBldmVudC5hbHRLZXkpIHx8IGlzRXNjYXBlS2V5KSB7XG4gICAgICAvLyBDbG9zZSB0aGUgc2VsZWN0IG9uIEFMVCArIGFycm93IGtleSB0byBtYXRjaCB0aGUgbmF0aXZlIDxzZWxlY3Q+XG4gICAgICB0aGlzLm9wZW5QYW5lbCA9IGZhbHNlO1xuXG4gICAgICBpZiAodGhpcy5jdXN0b21TZWFyY2hUcmlnZ2VyICYmIGtleUNvZGUgIT09IFRBQikge1xuICAgICAgICAvLyBJZiBhIGVzY2FwZSBrZXkgaXMgdXNlZCB3aXRoIHRoZSBzZWFyY2gsIHRoZSBmb2N1cyBvbiB0aGUgc2VsZWN0IGlzIGxvb3NlZC4gQW5kIHdlIGNhbiBub3QgaW50ZXJhY3Qgd2l0aCB0aGUgc2VsZWN0IGFueW1vcmUuXG4gICAgICAgIHRoaXMuc2VsZWN0SGVhZGVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIG9uU2VsZWN0VG91Y2g6ICh2YWx1ZTogYW55KSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgb3ZlcnJpZGUgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSl7XG4gICAgdGhpcy5vblNlbGVjdFRvdWNoID0gZm47XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLmlzRGVzdHJveWVkJC5uZXh0KCk7XG4gICAgdGhpcy5pc0Rlc3Ryb3llZCQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPHAgKm5nSWY9XCIhIWxhYmVsXCIgY2xhc3M9XCJ3YWMtc2VsZWN0LXRlc3RfX2xhYmVsXCI+XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cIndhYy1sYWJlbCwgLndhYy1sYWJlbFwiID48L25nLWNvbnRlbnQ+XG48L3A+XG5cblxuPGRpdlxuICBjbGFzcz1cIndhYy1zZWxlY3QtdGVzdFwiXG4gIHd6QXV0b0hpZGVcbiAgKGNsaWNrT3V0c2lkZSk9XCJvbkNsb3NlUGFuZWwoKVwiXG4gIFt0cmlnZ2VyRWxlbWVudF09XCInd2FjLXNlbGVjdC10ZXN0X19oZWFkZXJfX3NlbGVjdGlvbidcIlxuICBbekluZGV4VG9nZ2xlXT1cIm9wZW5QYW5lbFwiXG4gID5cblxuICAgIDxkaXYgI3NlbGVjdEhlYWRlciBjbGFzcz1cIndhYy1zZWxlY3QtdGVzdF9faGVhZGVyXCIgW25nQ2xhc3NdPVwieyAnc2VsZWN0LWRpc2FibGVkJyA6IGRpc2FibGVkIH1cIiAoY2xpY2spPVwiIWRpc2FibGVkICYmIG9uVG9nZ2xlUGFuZWwoKVwiIHRhYmluZGV4PVwiMFwiPlxuXG4gICAgICA8bmctY29udGFpbmVyIFtuZ1RlbXBsYXRlT3V0bGV0XT1cIm9wZW5QYW5lbCA/IG9wZW5QYW5lbFRyaWdnZXIgOiBjbG9zZVBhbmVsVHJpZ2dlclwiID5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2Nsb3NlUGFuZWxUcmlnZ2VyPlxuICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZGVmYXVsdFRyaWdnZXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI29wZW5QYW5lbFRyaWdnZXI+XG4gICAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCIhIWN1c3RvbVNlYXJjaFRyaWdnZXI7IGVsc2UgZGVmYXVsdFRyaWdnZXJcIiBzZWxlY3Q9XCJ3YWMtc2VsZWN0LXNlYXJjaC10cmlnZ2VyXCIgPjwvbmctY29udGVudD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI2RlZmF1bHRUcmlnZ2VyPlxuICAgICAgICAgIDxuZy1jb250ZW50ICpuZ0lmPVwiIShzZWxlY3RlZE9wdGlvbkNvbnRlbnQgfCB3YWNGbiA6IGdldFNlbGVjdGVkT3B0aW9uQ29udGVudClcIiBzZWxlY3Q9XCJ3YWMtcGxhY2Vob2xkZXIsW3JvbGU9cGxhY2Vob2xkZXJdXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwid2FjLXNlbGVjdC10ZXN0X19oZWFkZXJfX3NlbGVjdGlvbiB3YWMtb3B0aW9uX19wbGFjZWhvbGRlclwiXG4gICAgICAgICAgICAqbmdJZj1cIiEhKHNlbGVjdGVkT3B0aW9uQ29udGVudCB8IHdhY0ZuIDogZ2V0U2VsZWN0ZWRPcHRpb25Db250ZW50KVwiXG4gICAgICAgICAgICBbaW5uZXJIdG1sXT1cIihzZWxlY3RlZE9wdGlvbkNvbnRlbnQgfCB3YWNGbiA6IGdldFNlbGVjdGVkT3B0aW9uQ29udGVudClcIj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDxzcGFuIGNsYXNzPVwid2FjLXNlbGVjdC10ZXN0X19oZWFkZXJfX2NoZXZyb25cIj48aSBjbGFzcz1cImZhcyBmYS1jaGV2cm9uLWRvd25cIj48L2k+PC9zcGFuPlxuXG4gICAgPC9kaXY+XG5cblxuICAgIDxkaXYgY2xhc3M9XCJ3YWMtc2VsZWN0LXRlc3RfX2NvbnRlbnRcIiAqbmdJZj1cIiFkaXNhYmxlZFwiIFtuZ0NsYXNzXT1cInsgaGlkZGVuOiAhb3BlblBhbmVsLCBvcGVuOiBvcGVuUGFuZWwgfVwiPlxuXG4gICAgICA8cGVyZmVjdC1zY3JvbGxiYXIgW2NvbmZpZ109XCJ7IHN1cHByZXNzU2Nyb2xsWDogdHJ1ZSB9XCI+XG4gICAgICAgIDxuZy1jb250ZW50XG4gICAgICAgICAgc2VsZWN0PVwid2FjLW9wdGlvbi1jYWxsLXRvLWFjdGlvbiwgd2FjLW9wdGlvbiwgb3B0aW9uLCAub3B0aW9uLCBbc2VsZWN0T3B0aW9uXVwiPlxuICAgICAgICA8L25nLWNvbnRlbnQ+XG4gICAgICA8L3BlcmZlY3Qtc2Nyb2xsYmFyPlxuXG4gICAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbkNoaWxkcmVuPy5sZW5ndGhcIiBjbGFzcz1cIndhYy1zZWxlY3QtdGVzdF9fY29udGVudF9fZW1wdHlcIj5cbiAgICAgICAgPHNwYW4+e3snd2FjLmRhdGF0YWJsZS5ub3Jlc3VsdCcgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgPC9kaXY+XG48L2Rpdj4iXX0=
|
|
@@ -4785,14 +4785,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
|
|
|
4785
4785
|
}] } });
|
|
4786
4786
|
|
|
4787
4787
|
class SelectTestComponent extends SelectDirective {
|
|
4788
|
-
constructor(valueChangeService) {
|
|
4788
|
+
constructor(valueChangeService, changeDetectorRef) {
|
|
4789
4789
|
super(valueChangeService);
|
|
4790
4790
|
this.valueChangeService = valueChangeService;
|
|
4791
|
+
this.changeDetectorRef = changeDetectorRef;
|
|
4791
4792
|
//! Refacto improve sroll on mobile, see with Pauline
|
|
4792
4793
|
// angular material select https://github.com/angular/components/blob/main/src/material/select/select.ts
|
|
4793
4794
|
this.role = 'combobox';
|
|
4794
4795
|
this.getSelectedOptionContent = () => {
|
|
4795
4796
|
var _a;
|
|
4797
|
+
this.changeDetectorRef.markForCheck();
|
|
4796
4798
|
return ((_a = this.selectedOptionContent) === null || _a === void 0 ? void 0 : _a.nativeElement.innerHTML) || undefined;
|
|
4797
4799
|
};
|
|
4798
4800
|
this._openPanel = false;
|
|
@@ -4937,18 +4939,18 @@ class SelectTestComponent extends SelectDirective {
|
|
|
4937
4939
|
this.isDestroyed$.complete();
|
|
4938
4940
|
}
|
|
4939
4941
|
}
|
|
4940
|
-
SelectTestComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: SelectTestComponent, deps: [{ token: ValueChangeService }], target: i0.ɵɵFactoryTarget.Component });
|
|
4942
|
+
SelectTestComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: SelectTestComponent, deps: [{ token: ValueChangeService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
4941
4943
|
SelectTestComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: SelectTestComponent, selector: "wac-select-test", inputs: { required: "required", keepPanelOpen: "keepPanelOpen", openPanel: "openPanel", enableSearch: "enableSearch" }, outputs: { openPanelChange: "openPanelChange" }, host: { properties: { "attr.role": "this.role" } }, providers: [
|
|
4942
4944
|
{ provide: NG_VALUE_ACCESSOR, useExisting: SelectTestComponent, multi: true },
|
|
4943
4945
|
ValueChangeService
|
|
4944
|
-
], queries: [{ propertyName: "customSearchTrigger", first: true, predicate: SelectSearchTriggerComponent, descendants: true }, { propertyName: "label", first: true, predicate: LabelComponent, descendants: true }], viewQueries: [{ propertyName: "selectHeader", first: true, predicate: ["selectHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p *ngIf=\"!!label\" class=\"wac-select-test__label\">\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\n</p>\n\n\n<div\n class=\"wac-select-test\"\n wzAutoHide\n (clickOutside)=\"onClosePanel()\"\n [triggerElement]=\"'wac-select-test__header__selection'\"\n [zIndexToggle]=\"openPanel\"\n >\n\n <div #selectHeader class=\"wac-select-test__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\n\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\n\n <ng-template #closePanelTrigger>\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\n </ng-template>\n\n <ng-template #openPanelTrigger>\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\n </ng-template>\n\n <ng-template #defaultTrigger>\n <ng-content *ngIf=\"!(selectedOptionContent | wacFn : getSelectedOptionContent)
|
|
4946
|
+
], queries: [{ propertyName: "customSearchTrigger", first: true, predicate: SelectSearchTriggerComponent, descendants: true }, { propertyName: "label", first: true, predicate: LabelComponent, descendants: true }], viewQueries: [{ propertyName: "selectHeader", first: true, predicate: ["selectHeader"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<p *ngIf=\"!!label\" class=\"wac-select-test__label\">\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\n</p>\n\n\n<div\n class=\"wac-select-test\"\n wzAutoHide\n (clickOutside)=\"onClosePanel()\"\n [triggerElement]=\"'wac-select-test__header__selection'\"\n [zIndexToggle]=\"openPanel\"\n >\n\n <div #selectHeader class=\"wac-select-test__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\n\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\n\n <ng-template #closePanelTrigger>\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\n </ng-template>\n\n <ng-template #openPanelTrigger>\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\n </ng-template>\n\n <ng-template #defaultTrigger>\n <ng-content *ngIf=\"!(selectedOptionContent | wacFn : getSelectedOptionContent)\" select=\"wac-placeholder,[role=placeholder]\"></ng-content>\n <div\n class=\"wac-select-test__header__selection wac-option__placeholder\"\n *ngIf=\"!!(selectedOptionContent | wacFn : getSelectedOptionContent)\"\n [innerHtml]=\"(selectedOptionContent | wacFn : getSelectedOptionContent)\">\n </div>\n </ng-template>\n\n </ng-container>\n\n <span class=\"wac-select-test__header__chevron\"><i class=\"fas fa-chevron-down\"></i></span>\n\n </div>\n\n\n <div class=\"wac-select-test__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openPanel, open: openPanel }\">\n\n <perfect-scrollbar [config]=\"{ suppressScrollX: true }\">\n <ng-content\n select=\"wac-option-call-to-action, wac-option, option, .option, [selectOption]\">\n </ng-content>\n </perfect-scrollbar>\n\n <div *ngIf=\"!optionChildren?.length\" class=\"wac-select-test__content__empty\">\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n\n </div>\n</div>", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "component", type: i4$1.PerfectScrollbarComponent, selector: "perfect-scrollbar", inputs: ["disabled", "usePSClass", "autoPropagation", "scrollIndicators", "config"], outputs: ["psScrollY", "psScrollX", "psScrollUp", "psScrollDown", "psScrollLeft", "psScrollRight", "psYReachEnd", "psYReachStart", "psXReachEnd", "psXReachStart"], exportAs: ["ngxPerfectScrollbar"] }, { kind: "pipe", type: i1$2.TranslatePipe, name: "translate" }, { kind: "pipe", type: CallComponentFunctionPipe, name: "wacFn" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
4945
4947
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: SelectTestComponent, decorators: [{
|
|
4946
4948
|
type: Component,
|
|
4947
4949
|
args: [{ selector: 'wac-select-test', providers: [
|
|
4948
4950
|
{ provide: NG_VALUE_ACCESSOR, useExisting: SelectTestComponent, multi: true },
|
|
4949
4951
|
ValueChangeService
|
|
4950
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<p *ngIf=\"!!label\" class=\"wac-select-test__label\">\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\n</p>\n\n\n<div\n class=\"wac-select-test\"\n wzAutoHide\n (clickOutside)=\"onClosePanel()\"\n [triggerElement]=\"'wac-select-test__header__selection'\"\n [zIndexToggle]=\"openPanel\"\n >\n\n <div #selectHeader class=\"wac-select-test__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\n\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\n\n <ng-template #closePanelTrigger>\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\n </ng-template>\n\n <ng-template #openPanelTrigger>\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\n </ng-template>\n\n <ng-template #defaultTrigger>\n <ng-content *ngIf=\"!(selectedOptionContent | wacFn : getSelectedOptionContent)
|
|
4951
|
-
}], ctorParameters: function () { return [{ type: ValueChangeService }]; }, propDecorators: { role: [{
|
|
4952
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<p *ngIf=\"!!label\" class=\"wac-select-test__label\">\n <ng-content select=\"wac-label, .wac-label\" ></ng-content>\n</p>\n\n\n<div\n class=\"wac-select-test\"\n wzAutoHide\n (clickOutside)=\"onClosePanel()\"\n [triggerElement]=\"'wac-select-test__header__selection'\"\n [zIndexToggle]=\"openPanel\"\n >\n\n <div #selectHeader class=\"wac-select-test__header\" [ngClass]=\"{ 'select-disabled' : disabled }\" (click)=\"!disabled && onTogglePanel()\" tabindex=\"0\">\n\n <ng-container [ngTemplateOutlet]=\"openPanel ? openPanelTrigger : closePanelTrigger\" >\n\n <ng-template #closePanelTrigger>\n <ng-container [ngTemplateOutlet]=\"defaultTrigger\"></ng-container>\n </ng-template>\n\n <ng-template #openPanelTrigger>\n <ng-content *ngIf=\"!!customSearchTrigger; else defaultTrigger\" select=\"wac-select-search-trigger\" ></ng-content>\n </ng-template>\n\n <ng-template #defaultTrigger>\n <ng-content *ngIf=\"!(selectedOptionContent | wacFn : getSelectedOptionContent)\" select=\"wac-placeholder,[role=placeholder]\"></ng-content>\n <div\n class=\"wac-select-test__header__selection wac-option__placeholder\"\n *ngIf=\"!!(selectedOptionContent | wacFn : getSelectedOptionContent)\"\n [innerHtml]=\"(selectedOptionContent | wacFn : getSelectedOptionContent)\">\n </div>\n </ng-template>\n\n </ng-container>\n\n <span class=\"wac-select-test__header__chevron\"><i class=\"fas fa-chevron-down\"></i></span>\n\n </div>\n\n\n <div class=\"wac-select-test__content\" *ngIf=\"!disabled\" [ngClass]=\"{ hidden: !openPanel, open: openPanel }\">\n\n <perfect-scrollbar [config]=\"{ suppressScrollX: true }\">\n <ng-content\n select=\"wac-option-call-to-action, wac-option, option, .option, [selectOption]\">\n </ng-content>\n </perfect-scrollbar>\n\n <div *ngIf=\"!optionChildren?.length\" class=\"wac-select-test__content__empty\">\n <span>{{'wac.datatable.noresult' | translate}}</span>\n </div>\n\n </div>\n</div>" }]
|
|
4953
|
+
}], ctorParameters: function () { return [{ type: ValueChangeService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { role: [{
|
|
4952
4954
|
type: HostBinding,
|
|
4953
4955
|
args: ['attr.role']
|
|
4954
4956
|
}], customSearchTrigger: [{
|