@acorex/components 5.3.3 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/base/components.class.mjs +8 -1
- package/esm2020/lib/base/mixin/base-menu-mixin.class.mjs +6 -3
- package/esm2020/lib/base/mixin/datalist-component.class.mjs +17 -6
- package/esm2020/lib/calendar/calendar.component.mjs +1 -3
- package/esm2020/lib/color-palette/color-palette-input.component.mjs +67 -0
- package/esm2020/lib/color-palette/color-palette-picker.component.mjs +17 -0
- package/esm2020/lib/color-palette/color-palette-preview.component.mjs +36 -0
- package/esm2020/lib/color-palette/color-palette-swatches.component.mjs +261 -0
- package/esm2020/lib/color-palette/color-palette.class.mjs +10 -0
- package/esm2020/lib/color-palette/color-palette.component.mjs +46 -0
- package/esm2020/lib/color-palette/color-palette.module.mjs +54 -0
- package/esm2020/lib/color-palette/index.mjs +7 -0
- package/esm2020/lib/color-picker/color-picker.component.mjs +19 -265
- package/esm2020/lib/color-picker/color-picker.module.mjs +12 -6
- package/esm2020/lib/form/form.component.mjs +8 -5
- package/esm2020/lib/menu/menu.component.mjs +33 -7
- package/esm2020/lib/searchbox/searchbox.component.mjs +13 -7
- package/esm2020/lib/searchbox/searchbox.module.mjs +4 -3
- package/esm2020/lib/selectbox/selectbox.component.mjs +16 -14
- package/esm2020/lib/validation/validation-rule.widget.mjs +17 -11
- package/esm2020/public-api.mjs +2 -1
- package/fesm2015/acorex-components.mjs +1446 -1185
- package/fesm2015/acorex-components.mjs.map +1 -1
- package/fesm2020/acorex-components.mjs +1409 -1152
- package/fesm2020/acorex-components.mjs.map +1 -1
- package/lib/base/components.class.d.ts +8 -0
- package/lib/base/mixin/base-menu-mixin.class.d.ts +1 -1
- package/lib/base/mixin/mixin.class.d.ts +1 -1
- package/lib/color-palette/color-palette-input.component.d.ts +15 -0
- package/lib/color-palette/color-palette-picker.component.d.ts +8 -0
- package/lib/color-palette/color-palette-preview.component.d.ts +12 -0
- package/lib/color-palette/color-palette-swatches.component.d.ts +16 -0
- package/lib/color-palette/color-palette.class.d.ts +12 -0
- package/lib/color-palette/color-palette.component.d.ts +18 -0
- package/lib/color-palette/color-palette.module.d.ts +17 -0
- package/lib/color-palette/index.d.ts +6 -0
- package/lib/color-picker/color-picker.component.d.ts +159 -35
- package/lib/color-picker/color-picker.module.d.ts +2 -1
- package/lib/form/form.component.d.ts +1 -1
- package/lib/menu/menu.component.d.ts +8 -2
- package/lib/searchbox/searchbox.component.d.ts +1 -0
- package/lib/searchbox/searchbox.module.d.ts +2 -1
- package/lib/selectbox/selectbox.component.d.ts +3 -2
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChild, } from '@angular/core';
|
|
2
|
-
import { AXBaseMenuMixin } from '../base';
|
|
3
|
-
import { BASEMENU_INPUTS } from '../base/mixin/base-menu-mixin.class';
|
|
1
|
+
import { Component, ViewEncapsulation, ChangeDetectionStrategy, ContentChild, ViewChild, } from '@angular/core';
|
|
2
|
+
import { AXBaseMenuMixin, } from '../base';
|
|
3
|
+
import { BASEMENU_INPUTS, BASEMENU_OUTPUT, } from '../base/mixin/base-menu-mixin.class';
|
|
4
4
|
import { INTERACTIVE_INPUTS, INTERACTIVE_OUTPUT, } from '../base/mixin/interactive-mixin.class';
|
|
5
|
+
import { AXPopoverComponent } from '../popover';
|
|
6
|
+
import { AXSearchBoxComponent } from '../searchbox';
|
|
5
7
|
import * as i0 from "@angular/core";
|
|
6
8
|
import * as i1 from "../decorators/icon.component";
|
|
7
9
|
import * as i2 from "../loading/loading.component";
|
|
@@ -17,6 +19,19 @@ export class AXMenuComponent extends AXBaseMenuMixin {
|
|
|
17
19
|
super(elementRef, cdr);
|
|
18
20
|
this.elementRef = elementRef;
|
|
19
21
|
this.cdr = cdr;
|
|
22
|
+
this._forceFocus = false;
|
|
23
|
+
window.addEventListener('click', (e) => {
|
|
24
|
+
if (this.displayItems.length > 0) {
|
|
25
|
+
const target = document.querySelector('UL');
|
|
26
|
+
if (e.target != target) {
|
|
27
|
+
this.displayItems.forEach((element) => {
|
|
28
|
+
element.isActive = false;
|
|
29
|
+
element.isOpen = false;
|
|
30
|
+
});
|
|
31
|
+
cdr.detectChanges();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
});
|
|
20
35
|
}
|
|
21
36
|
get emptyTemplate() {
|
|
22
37
|
return this._contentEmptyTemplate;
|
|
@@ -129,6 +144,11 @@ export class AXMenuComponent extends AXBaseMenuMixin {
|
|
|
129
144
|
element.parentId = parentId;
|
|
130
145
|
});
|
|
131
146
|
}
|
|
147
|
+
_onSearchExprChanged(e) {
|
|
148
|
+
// this.empty();
|
|
149
|
+
this._forceFocus = true;
|
|
150
|
+
this._fetchData(null, this._searchBox?.searchExp);
|
|
151
|
+
}
|
|
132
152
|
_getDirection() {
|
|
133
153
|
if (this.direction === 'horizontal') {
|
|
134
154
|
return 'horizontal-mode';
|
|
@@ -139,12 +159,18 @@ export class AXMenuComponent extends AXBaseMenuMixin {
|
|
|
139
159
|
}
|
|
140
160
|
}
|
|
141
161
|
AXMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXMenuComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
142
|
-
AXMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: AXMenuComponent, selector: "ax-menu", inputs: { disabled: "disabled", tabIndex: "tabIndex", textField: "textField", valueField: "valueField", items: "items", id: "id", parentId: "parentId", iconField: "iconField", tooltip: "tooltip", isOpen: "isOpen", isActive: "isActive", visibleField: "visibleField", disableField: "disableField", hasChildField: "hasChildField", openMode: "openMode", direction: "direction" }, outputs: { onBlur: "onBlur", onFocus: "onFocus" }, host: { classAttribute: "ax-menu" }, queries: [{ propertyName: "_contentEmptyTemplate", first: true, predicate: ["emptyTemplate"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<ul [ngClass]=\"_getDirection()\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context:{ list: displayItems }\"></ng-container>\r\n</ul>\r\n\r\n<ng-template #recursiveListTmpl let-list=\"list\">\r\n <ng-container *ngFor=\"let item of list; trackBy: _trackLoaded\">\r\n <li *ngIf=\"item[visibleField] !=false\" [class.ax-state-disabled]=\"item[disableField]\"\r\n (click)=\"_onMenuClick($event,item)\" (mouseenter)=\"_onMouseEnter($event,item)\" (mouseleave)=\"_onMouseLeave(item)\">\r\n <a [ngClass]=\"{'active': item.isActive}\">\r\n <div class=\"ax-menu-start-side\">\r\n <ax-icon *ngIf=\"item[iconField]\" [class]=\"item[iconField]\"></ax-icon>\r\n <span>{{_getItemDisplayTextTemplte(item)}}</span>\r\n </div>\r\n <div
|
|
162
|
+
AXMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: AXMenuComponent, selector: "ax-menu", inputs: { disabled: "disabled", tabIndex: "tabIndex", textField: "textField", valueField: "valueField", items: "items", id: "id", parentId: "parentId", iconField: "iconField", tooltip: "tooltip", isOpen: "isOpen", isActive: "isActive", visibleField: "visibleField", disableField: "disableField", hasChildField: "hasChildField", openMode: "openMode", direction: "direction" }, outputs: { onBlur: "onBlur", onFocus: "onFocus", onMenuItemClick: "onMenuItemClick" }, host: { classAttribute: "ax-menu" }, queries: [{ propertyName: "_contentEmptyTemplate", first: true, predicate: ["emptyTemplate"], descendants: true }, { propertyName: "_searchBox", first: true, predicate: AXSearchBoxComponent, descendants: true, static: true }], viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ul [ngClass]=\"_getDirection()\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context:{ list: displayItems }\"></ng-container>\r\n</ul>\r\n\r\n<ng-template #recursiveListTmpl let-list=\"list\">\r\n <ng-container *ngFor=\"let item of list; trackBy: _trackLoaded\">\r\n <li *ngIf=\"item[visibleField] !=false\" [class.ax-state-disabled]=\"item[disableField]\"\r\n (click)=\"_onMenuClick($event,item)\" (mouseenter)=\"_onMouseEnter($event,item)\" (mouseleave)=\"_onMouseLeave(item)\">\r\n <a [ngClass]=\"{'active': item.isActive}\">\r\n <div class=\"ax-menu-start-side\">\r\n <ax-icon *ngIf=\"item[iconField]\" [class]=\"item[iconField]\"></ax-icon>\r\n <span>{{_getItemDisplayTextTemplte(item)}}</span>\r\n </div>\r\n <div class=\"ax-menu-end-side\">\r\n <ax-icon *ngIf=\"!item.isLoading\"\r\n [ngClass]=\"{'ax-ic-chevron':item?.children?.length > 0 || item[hasChildField],'active-icon': item.isOpen}\">\r\n </ax-icon>\r\n <ax-loading *ngIf=\"item.isLoading\">\r\n </ax-loading>\r\n </div>\r\n </a>\r\n <ul [class.ax-state-disabled]=\"item[disableField]\" *ngIf=\"item?.children?.length > 0 && item.isOpen\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context:{ list: item.children }\"></ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n</ng-template>\r\n<ng-container *ngIf=\"isLoading\">\r\n <ng-template>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\">\r\n <ax-loading text=\"{{ 'layout.loading.text' | trans }}\"></ax-loading>\r\n </div>\r\n </ng-template>\r\n</ng-container>\r\n<ng-template #tmpEmpty>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <!--------------- check for custom template --------------->\r\n <ng-container *ngIf=\"emptyTemplate; else elseEmptyTemplate\">\r\n <ng-container *ngTemplateOutlet=\"emptyTemplate\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #elseEmptyTemplate>\r\n <div class=\"ax-list-item\">\r\n {{ 'common.no-result-found' | trans }}\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>", components: [{ type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { type: i2.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "text"], outputs: ["visibleChange"] }], directives: [{ type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }, { type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "trans": i4.AXTranslatorPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
143
163
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXMenuComponent, decorators: [{
|
|
144
164
|
type: Component,
|
|
145
|
-
args: [{ selector: 'ax-menu', inputs: [...INTERACTIVE_INPUTS, ...BASEMENU_INPUTS], outputs: [...INTERACTIVE_OUTPUT], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'ax-menu' }, template: "<ul [ngClass]=\"_getDirection()\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context:{ list: displayItems }\"></ng-container>\r\n</ul>\r\n\r\n<ng-template #recursiveListTmpl let-list=\"list\">\r\n <ng-container *ngFor=\"let item of list; trackBy: _trackLoaded\">\r\n <li *ngIf=\"item[visibleField] !=false\" [class.ax-state-disabled]=\"item[disableField]\"\r\n (click)=\"_onMenuClick($event,item)\" (mouseenter)=\"_onMouseEnter($event,item)\" (mouseleave)=\"_onMouseLeave(item)\">\r\n <a [ngClass]=\"{'active': item.isActive}\">\r\n <div class=\"ax-menu-start-side\">\r\n <ax-icon *ngIf=\"item[iconField]\" [class]=\"item[iconField]\"></ax-icon>\r\n <span>{{_getItemDisplayTextTemplte(item)}}</span>\r\n </div>\r\n <div
|
|
146
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: {
|
|
165
|
+
args: [{ selector: 'ax-menu', inputs: [...INTERACTIVE_INPUTS, ...BASEMENU_INPUTS], outputs: [...INTERACTIVE_OUTPUT, ...BASEMENU_OUTPUT], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { class: 'ax-menu' }, template: "<ul [ngClass]=\"_getDirection()\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context:{ list: displayItems }\"></ng-container>\r\n</ul>\r\n\r\n<ng-template #recursiveListTmpl let-list=\"list\">\r\n <ng-container *ngFor=\"let item of list; trackBy: _trackLoaded\">\r\n <li *ngIf=\"item[visibleField] !=false\" [class.ax-state-disabled]=\"item[disableField]\"\r\n (click)=\"_onMenuClick($event,item)\" (mouseenter)=\"_onMouseEnter($event,item)\" (mouseleave)=\"_onMouseLeave(item)\">\r\n <a [ngClass]=\"{'active': item.isActive}\">\r\n <div class=\"ax-menu-start-side\">\r\n <ax-icon *ngIf=\"item[iconField]\" [class]=\"item[iconField]\"></ax-icon>\r\n <span>{{_getItemDisplayTextTemplte(item)}}</span>\r\n </div>\r\n <div class=\"ax-menu-end-side\">\r\n <ax-icon *ngIf=\"!item.isLoading\"\r\n [ngClass]=\"{'ax-ic-chevron':item?.children?.length > 0 || item[hasChildField],'active-icon': item.isOpen}\">\r\n </ax-icon>\r\n <ax-loading *ngIf=\"item.isLoading\">\r\n </ax-loading>\r\n </div>\r\n </a>\r\n <ul [class.ax-state-disabled]=\"item[disableField]\" *ngIf=\"item?.children?.length > 0 && item.isOpen\">\r\n <ng-container *ngTemplateOutlet=\"recursiveListTmpl; context:{ list: item.children }\"></ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n</ng-template>\r\n<ng-container *ngIf=\"isLoading\">\r\n <ng-template>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\">\r\n <ax-loading text=\"{{ 'layout.loading.text' | trans }}\"></ax-loading>\r\n </div>\r\n </ng-template>\r\n</ng-container>\r\n<ng-template #tmpEmpty>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <!--------------- check for custom template --------------->\r\n <ng-container *ngIf=\"emptyTemplate; else elseEmptyTemplate\">\r\n <ng-container *ngTemplateOutlet=\"emptyTemplate\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #elseEmptyTemplate>\r\n <div class=\"ax-list-item\">\r\n {{ 'common.no-result-found' | trans }}\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n</ng-template>" }]
|
|
166
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { popover: [{
|
|
167
|
+
type: ViewChild,
|
|
168
|
+
args: [AXPopoverComponent, { static: true }]
|
|
169
|
+
}], _contentEmptyTemplate: [{
|
|
147
170
|
type: ContentChild,
|
|
148
171
|
args: ['emptyTemplate']
|
|
172
|
+
}], _searchBox: [{
|
|
173
|
+
type: ContentChild,
|
|
174
|
+
args: [AXSearchBoxComponent, { static: true }]
|
|
149
175
|
}] } });
|
|
150
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFLdkIsWUFBWSxHQUNiLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDMUMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3RFLE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsa0JBQWtCLEdBQ25CLE1BQU0sdUNBQXVDLENBQUM7Ozs7OztBQW1CL0M7Ozs7R0FJRztBQVVILE1BQU0sT0FBTyxlQUFnQixTQUFRLGVBQWU7SUFPbEQsWUFBb0IsVUFBc0IsRUFBVSxHQUFzQjtRQUN4RSxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBREwsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO0lBRTFFLENBQUM7SUFMRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBS0QsTUFBTTtRQUNKLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNmLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUN0QixJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7U0FDbkI7SUFDSCxDQUFDO0lBRUQsZUFBZTtRQUNiLEtBQUssQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsWUFBWSxDQUFDLENBQWEsRUFB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LEdBQUcsa0JBQWtCLENBQUMsbUJBQ2YsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQixFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7aUlBSWxCLHFCQUFxQjtzQkFENUIsWUFBWTt1QkFBQyxlQUFlIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgVmlld0VuY2Fwc3VsYXRpb24sXHJcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXHJcbiAgRWxlbWVudFJlZixcclxuICBDaGFuZ2VEZXRlY3RvclJlZixcclxuICBPbkluaXQsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgQ29udGVudENoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBWEJhc2VNZW51TWl4aW4gfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHsgQkFTRU1FTlVfSU5QVVRTIH0gZnJvbSAnLi4vYmFzZS9taXhpbi9iYXNlLW1lbnUtbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQge1xyXG4gIElOVEVSQUNUSVZFX0lOUFVUUyxcclxuICBJTlRFUkFDVElWRV9PVVRQVVQsXHJcbn0gZnJvbSAnLi4vYmFzZS9taXhpbi9pbnRlcmFjdGl2ZS1taXhpbi5jbGFzcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYTWVudUl0ZW1zIHtcclxuICBpZD86IHN0cmluZztcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIHRleHQ/OiBzdHJpbmc7XHJcbiAgdG9vbHRpcD86IHN0cmluZztcclxuICBwYXJlbnRJZD86IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIHZpc2libGVGaWVsZD86IGJvb2xlYW47XHJcbiAgZGlzYWJsZUZpZWxkPzogYm9vbGVhbjtcclxuICBzZWxlY3RlZD86IGJvb2xlYW47XHJcbiAgZGF0YT86IGFueTtcclxuICBzdHlsZT86IHN0cmluZztcclxuICBjaGlsZHJlbj86IEFYTWVudUl0ZW1zW107XHJcbiAgaXNPcGVuPzogYm9vbGVhbjtcclxuICBpc0FjdGl2ZT86IGJvb2xlYW47XHJcbiAgb25DbGljaz86IChlPzogYW55KSA9PiB2b2lkO1xyXG59XHJcbi8qKlxyXG4gKiBUaGUgQnV0dG9uIGlzIGEgY29tcG9uZW50IHdoaWNoIGRldGVjdHMgdXNlciBpbnRlcmFjdGlvbiBhbmQgdHJpZ2dlcnMgYSBjb3JyZXNwb25kaW5nIGV2ZW50XHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBpbnB1dHM6IFsuLi5JTlRFUkFDVElWRV9JTlBVVFMsIC4uLkJBU0VNRU5VX0lOUFVUU10sXHJcbiAgb3V0cHV0czogWy4uLklOVEVSQUNUSVZFX09VVFBVVF0sXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxuICBob3N0OiB7IGNsYXNzOiAnYXgtbWVudScgfSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYTWVudUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZU1lbnVNaXhpbiBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQENvbnRlbnRDaGlsZCgnZW1wdHlUZW1wbGF0ZScpXHJcbiAgcHJpdmF0ZSBfY29udGVudEVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gIGdldCBlbXB0eVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRFbXB0eVRlbXBsYXRlO1xyXG4gIH1cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgc3VwZXIoZWxlbWVudFJlZiwgY2RyKTtcclxuICB9XHJcblxyXG4gIG9uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm9uSW5pdCgpO1xyXG4gICAgaWYgKHRoaXMuaGFzQ2hpbGRGaWVsZCkge1xyXG4gICAgICB0aGlzLl9mZXRjaERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm9uVmlld0luaXQoKTtcclxuICB9XHJcblxyXG4gIF9vbk1lbnVDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmlzTG9hZGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjaGVja1NwYWNpbmcgPSBlLnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcclxuICAgIGlmIChcclxuICAgICAgIWl0ZW1bdGhpcy5kaXNhYmxlRmllbGRdICYmXHJcbiAgICAgIHRoaXMub3Blbk1vZGUgPT09ICdjbGljaycgJiZcclxuICAgICAgY2hlY2tTcGFjaW5nLmNsb3Nlc3QoJ2EnKVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5Nb2RlID09PSAnY2xpY2snICYmIHRoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlJdGVtcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGVsZW1lbnRbdGhpcy52YWx1ZUZpZWxkXSAhPSBpdGVtW3RoaXMudmFsdWVGaWVsZF0gJiZcclxuICAgICAgICAgICAgIWl0ZW0ucGFyZW50SWRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBlbGVtZW50LmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX25vdEFjdGl2ZSh0aGlzLmRpc3BsYXlJdGVtcyk7XHJcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwIHx8IGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSkge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcGVuTW9kZSA9PT0gJ2NsaWNrJyAmJiB0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldFBhcmVudE5vZGUoaXRlbS5jaGlsZHJlbiwgaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuX2Nsb3NlQ2hpbGQoaXRlbS5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gIWl0ZW0uaXNPcGVuO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0uaXNBY3RpdmUgPSAhaXRlbS5pc0FjdGl2ZTtcclxuICAgICAgdGhpcy5vbk1lbnVJdGVtQ2xpY2suZW1pdCh7XHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGl0ZW06IGl0ZW0sXHJcbiAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoaXRlbS5pc09wZW4gJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdICYmICFpdGVtLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2ZldGNoRGF0YShpdGVtW3RoaXMudmFsdWVGaWVsZF0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIF9vbk1vdXNlRW50ZXIoZTogTW91c2VFdmVudCwgaXRlbTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtW3RoaXMuZGlzYWJsZUZpZWxkXSAmJiB0aGlzLm9wZW5Nb2RlID09PSAnaG92ZXInKSB7XHJcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwIHx8IGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSkge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLl9jbG9zZUNoaWxkKGl0ZW0uY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpdGVtLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbk1lbnVJdGVtQ2xpY2suZW1pdCh7XHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGl0ZW06IGl0ZW0sXHJcbiAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoaXRlbS5pc09wZW4gJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdICYmICFpdGVtLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2ZldGNoRGF0YShpdGVtW3RoaXMudmFsdWVGaWVsZF0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIF9vbk1vdXNlTGVhdmUoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW1bdGhpcy5kaXNhYmxlRmllbGRdICYmIHRoaXMub3Blbk1vZGUgPT09ICdob3ZlcicpIHtcclxuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA+IDAgfHwgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuX2Nsb3NlQ2hpbGQoaXRlbS5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9ub3RBY3RpdmUoaXRlbXM6IGFueVtdKSB7XHJcbiAgICBpdGVtcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgZWxlbWVudC5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbj8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX25vdEFjdGl2ZShlbGVtZW50LmNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBfY2xvc2VDaGlsZChpdGVtczogYW55W10pIHtcclxuICAgIGl0ZW1zLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBlbGVtZW50LmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbj8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX2Nsb3NlQ2hpbGQoZWxlbWVudC5jaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX3NldFBhcmVudE5vZGUoaXRlbSwgcGFyZW50SWQpIHtcclxuICAgIGl0ZW0uZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICBlbGVtZW50LnBhcmVudElkID0gcGFyZW50SWQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9nZXREaXJlY3Rpb24oKSB7XHJcbiAgICBpZiAodGhpcy5kaXJlY3Rpb24gPT09ICdob3Jpem9udGFsJykge1xyXG4gICAgICByZXR1cm4gJ2hvcml6b250YWwtbW9kZSc7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gJ3ZlcnRpY2FsLW1vZGUnO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iLCI8dWwgW25nQ2xhc3NdPVwiX2dldERpcmVjdGlvbigpXCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInJlY3Vyc2l2ZUxpc3RUbXBsOyBjb250ZXh0OnsgbGlzdDogZGlzcGxheUl0ZW1zIH1cIj48L25nLWNvbnRhaW5lcj5cclxuPC91bD5cclxuXHJcbjxuZy10ZW1wbGF0ZSAjcmVjdXJzaXZlTGlzdFRtcGwgbGV0LWxpc3Q9XCJsaXN0XCI+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBsaXN0OyAgdHJhY2tCeTogX3RyYWNrTG9hZGVkXCI+XHJcbiAgICA8bGkgKm5nSWY9XCJpdGVtW3Zpc2libGVGaWVsZF0gIT1mYWxzZVwiIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJpdGVtW2Rpc2FibGVGaWVsZF1cIlxyXG4gICAgICAoY2xpY2spPVwiX29uTWVudUNsaWNrKCRldmVudCxpdGVtKVwiIChtb3VzZWVudGVyKT1cIl9vbk1vdXNlRW50ZXIoJGV2ZW50LGl0ZW0pXCIgKG1vdXNlbGVhdmUpPVwiX29uTW91c2VMZWF2ZShpdGVtKVwiPlxyXG4gICAgICA8YSBbbmdDbGFzc109XCJ7J2FjdGl2ZSc6IGl0ZW0uaXNBY3RpdmV9XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1lbnUtc3RhcnQtc2lkZVwiPlxyXG4gICAgICAgICAgPGF4LWljb24gKm5nSWY9XCJpdGVtW2ljb25GaWVsZF1cIiBbY2xhc3NdPVwiaXRlbVtpY29uRmllbGRdXCI+PC9heC1pY29uPlxyXG4gICAgICAgICAgPHNwYW4+e3tfZ2V0SXRlbURpc3BsYXlUZXh0VGVtcGx0ZShpdGVtKX19PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgKm5nSWY9XCJpdGVtPy5jaGlsZHJlbj8ubGVuZ3RoID4gMCB8fCBpdGVtW2hhc0NoaWxkRmllbGRdXCIgY2xhc3M9XCJheC1tZW51LWVuZC1zaWRlXCI+XHJcbiAgICAgICAgICA8YXgtaWNvbiAqbmdJZj1cIiFpdGVtLmlzTG9hZGluZ1wiIFtuZ0NsYXNzXT1cInsnYWN0aXZlLWljb24nOiBpdGVtLmlzT3Blbn1cIiBjbGFzcz1cImF4LWljLWNoZXZyb25cIj5cclxuICAgICAgICAgIDwvYXgtaWNvbj5cclxuICAgICAgICAgIDxheC1sb2FkaW5nICpuZ0lmPVwiaXRlbS5pc0xvYWRpbmdcIj5cclxuICAgICAgICAgIDwvYXgtbG9hZGluZz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9hPlxyXG4gICAgICA8dWwgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cIml0ZW1bZGlzYWJsZUZpZWxkXVwiICpuZ0lmPVwiaXRlbT8uY2hpbGRyZW4/Lmxlbmd0aCA+IDAgJiYgaXRlbS5pc09wZW5cIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVjdXJzaXZlTGlzdFRtcGw7IGNvbnRleHQ6eyBsaXN0OiBpdGVtLmNoaWxkcmVuIH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgPC91bD5cclxuICAgIDwvbGk+XHJcbiAgPC9uZy1jb250YWluZXI+XHJcbjwvbmctdGVtcGxhdGU+XHJcbjxuZy1jb250YWluZXIgKm5nSWY9XCJpc0xvYWRpbmdcIj5cclxuICA8bmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtcC00XCI+XHJcbiAgICAgIDxheC1sb2FkaW5nIHRleHQ9XCJ7eyAnbGF5b3V0LmxvYWRpbmcudGV4dCcgfCB0cmFucyB9fVwiPjwvYXgtbG9hZGluZz5cclxuICAgIDwvZGl2PlxyXG4gIDwvbmctdGVtcGxhdGU+XHJcbjwvbmctY29udGFpbmVyPlxyXG48bmctdGVtcGxhdGUgI3RtcEVtcHR5PlxyXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNMb2FkaW5nXCI+XHJcbiAgICA8IS0tLS0tLS0tLS0tLS0tLSBjaGVjayBmb3IgY3VzdG9tIHRlbXBsYXRlICAtLS0tLS0tLS0tLS0tLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZW1wdHlUZW1wbGF0ZTsgZWxzZSBlbHNlRW1wdHlUZW1wbGF0ZVwiPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZW1wdHlUZW1wbGF0ZVwiPlxyXG4gICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPG5nLXRlbXBsYXRlICNlbHNlRW1wdHlUZW1wbGF0ZT5cclxuICAgICAgPGRpdiBjbGFzcz1cImF4LWxpc3QtaXRlbVwiPlxyXG4gICAgICAgIHt7ICdjb21tb24ubm8tcmVzdWx0LWZvdW5kJyB8IHRyYW5zIH19XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT4iXX0=
|
|
176
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL21lbnUvbWVudS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL21lbnUvbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQix1QkFBdUIsRUFLdkIsWUFBWSxFQUNaLFNBQVMsR0FHVixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsZUFBZSxHQUdoQixNQUFNLFNBQVMsQ0FBQztBQUNqQixPQUFPLEVBQ0wsZUFBZSxFQUNmLGVBQWUsR0FDaEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQ0wsa0JBQWtCLEVBQ2xCLGtCQUFrQixHQUNuQixNQUFNLHVDQUF1QyxDQUFDO0FBQy9DLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUNoRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUM7Ozs7OztBQW1CcEQ7Ozs7R0FJRztBQVVILE1BQU0sT0FBTyxlQUFnQixTQUFRLGVBQWU7SUFlbEQsWUFBb0IsVUFBc0IsRUFBVSxHQUFzQjtRQUN4RSxLQUFLLENBQUMsVUFBVSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBREwsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUFVLFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBTDFFLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBTzNCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNyQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDaEMsTUFBTSxNQUFN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QUFNLEVBQUUsSUFBSSxFQUFFO2dCQUl2QyxxQkFBcUI7c0JBRDVCLFlBQVk7dUJBQUMsZUFBZTtnQkFJN0IsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxyXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgT25Jbml0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIENvbnRlbnRDaGlsZCxcclxuICBWaWV3Q2hpbGQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE91dHB1dCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtcclxuICBBWEJhc2VNZW51TWl4aW4sXHJcbiAgQVhJdGVtQ2xpY2tFdmVudCxcclxuICBBWFZhbHVlQ2hhbmdlZEV2ZW50LFxyXG59IGZyb20gJy4uL2Jhc2UnO1xyXG5pbXBvcnQge1xyXG4gIEJBU0VNRU5VX0lOUFVUUyxcclxuICBCQVNFTUVOVV9PVVRQVVQsXHJcbn0gZnJvbSAnLi4vYmFzZS9taXhpbi9iYXNlLW1lbnUtbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQge1xyXG4gIElOVEVSQUNUSVZFX0lOUFVUUyxcclxuICBJTlRFUkFDVElWRV9PVVRQVVQsXHJcbn0gZnJvbSAnLi4vYmFzZS9taXhpbi9pbnRlcmFjdGl2ZS1taXhpbi5jbGFzcyc7XHJcbmltcG9ydCB7IEFYUG9wb3ZlckNvbXBvbmVudCB9IGZyb20gJy4uL3BvcG92ZXInO1xyXG5pbXBvcnQgeyBBWFNlYXJjaEJveENvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaGJveCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFYTWVudUl0ZW1zIHtcclxuICBpZD86IHN0cmluZztcclxuICBuYW1lPzogc3RyaW5nO1xyXG4gIHRleHQ/OiBzdHJpbmc7XHJcbiAgdG9vbHRpcD86IHN0cmluZztcclxuICBwYXJlbnRJZD86IHN0cmluZztcclxuICBpY29uPzogc3RyaW5nO1xyXG4gIHZpc2libGVGaWVsZD86IGJvb2xlYW47XHJcbiAgZGlzYWJsZUZpZWxkPzogYm9vbGVhbjtcclxuICBzZWxlY3RlZD86IGJvb2xlYW47XHJcbiAgZGF0YT86IGFueTtcclxuICBzdHlsZT86IHN0cmluZztcclxuICBjaGlsZHJlbj86IEFYTWVudUl0ZW1zW107XHJcbiAgaXNPcGVuPzogYm9vbGVhbjtcclxuICBpc0FjdGl2ZT86IGJvb2xlYW47XHJcbiAgb25DbGljaz86IChlPzogYW55KSA9PiB2b2lkO1xyXG59XHJcbi8qKlxyXG4gKiBUaGUgQnV0dG9uIGlzIGEgY29tcG9uZW50IHdoaWNoIGRldGVjdHMgdXNlciBpbnRlcmFjdGlvbiBhbmQgdHJpZ2dlcnMgYSBjb3JyZXNwb25kaW5nIGV2ZW50XHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LW1lbnUnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9tZW51LmNvbXBvbmVudC5odG1sJyxcclxuICBpbnB1dHM6IFsuLi5JTlRFUkFDVElWRV9JTlBVVFMsIC4uLkJBU0VNRU5VX0lOUFVUU10sXHJcbiAgb3V0cHV0czogWy4uLklOVEVSQUNUSVZFX09VVFBVVCwgLi4uQkFTRU1FTlVfT1VUUFVUXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gIGhvc3Q6IHsgY2xhc3M6ICdheC1tZW51JyB9LFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhNZW51Q29tcG9uZW50IGV4dGVuZHMgQVhCYXNlTWVudU1peGluIGltcGxlbWVudHMgT25Jbml0IHtcclxuICBAVmlld0NoaWxkKEFYUG9wb3ZlckNvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICBwb3BvdmVyOiBBWFBvcG92ZXJDb21wb25lbnQ7XHJcblxyXG4gIEBDb250ZW50Q2hpbGQoJ2VtcHR5VGVtcGxhdGUnKVxyXG4gIHByaXZhdGUgX2NvbnRlbnRFbXB0eVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBAQ29udGVudENoaWxkKEFYU2VhcmNoQm94Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gIF9zZWFyY2hCb3g6IEFYU2VhcmNoQm94Q29tcG9uZW50O1xyXG5cclxuICBfZm9yY2VGb2N1czogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBnZXQgZW1wdHlUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl9jb250ZW50RW1wdHlUZW1wbGF0ZTtcclxuICB9XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoZSkgPT4ge1xyXG4gICAgICBpZiAodGhpcy5kaXNwbGF5SXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1VMJyk7XHJcbiAgICAgICAgaWYgKGUudGFyZ2V0ICE9IHRhcmdldCkge1xyXG4gICAgICAgICAgdGhpcy5kaXNwbGF5SXRlbXMuZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICAgICAgICBlbGVtZW50LmlzQWN0aXZlID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGNkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uSW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm9uSW5pdCgpO1xyXG4gICAgaWYgKHRoaXMuaGFzQ2hpbGRGaWVsZCkge1xyXG4gICAgICB0aGlzLl9mZXRjaERhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIHN1cGVyLm9uVmlld0luaXQoKTtcclxuICB9XHJcblxyXG4gIF9vbk1lbnVDbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcclxuICAgIGlmICh0aGlzLmlzTG9hZGluZykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBjaGVja1NwYWNpbmcgPSBlLnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcclxuICAgIGlmIChcclxuICAgICAgIWl0ZW1bdGhpcy5kaXNhYmxlRmllbGRdICYmXHJcbiAgICAgIHRoaXMub3Blbk1vZGUgPT09ICdjbGljaycgJiZcclxuICAgICAgY2hlY2tTcGFjaW5nLmNsb3Nlc3QoJ2EnKVxyXG4gICAgKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wZW5Nb2RlID09PSAnY2xpY2snICYmIHRoaXMuZGlyZWN0aW9uID09PSAnaG9yaXpvbnRhbCcpIHtcclxuICAgICAgICB0aGlzLmRpc3BsYXlJdGVtcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGVsZW1lbnRbdGhpcy52YWx1ZUZpZWxkXSAhPSBpdGVtW3RoaXMudmFsdWVGaWVsZF0gJiZcclxuICAgICAgICAgICAgIWl0ZW0ucGFyZW50SWRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICBlbGVtZW50LmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuX25vdEFjdGl2ZSh0aGlzLmRpc3BsYXlJdGVtcyk7XHJcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwIHx8IGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSkge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5vcGVuTW9kZSA9PT0gJ2NsaWNrJyAmJiB0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NldFBhcmVudE5vZGUoaXRlbS5jaGlsZHJlbiwgaXRlbVt0aGlzLnZhbHVlRmllbGRdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuX2Nsb3NlQ2hpbGQoaXRlbS5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gIWl0ZW0uaXNPcGVuO1xyXG4gICAgICB9XHJcbiAgICAgIGl0ZW0uaXNBY3RpdmUgPSAhaXRlbS5pc0FjdGl2ZTtcclxuICAgICAgdGhpcy5vbk1lbnVJdGVtQ2xpY2suZW1pdCh7XHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGl0ZW06IGl0ZW0sXHJcbiAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoaXRlbS5pc09wZW4gJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdICYmICFpdGVtLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2ZldGNoRGF0YShpdGVtW3RoaXMudmFsdWVGaWVsZF0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIF9vbk1vdXNlRW50ZXIoZTogTW91c2VFdmVudCwgaXRlbTogYW55KSB7XHJcbiAgICBpZiAodGhpcy5pc0xvYWRpbmcpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtW3RoaXMuZGlzYWJsZUZpZWxkXSAmJiB0aGlzLm9wZW5Nb2RlID09PSAnaG92ZXInKSB7XHJcbiAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwIHx8IGl0ZW1bdGhpcy5oYXNDaGlsZEZpZWxkXSkge1xyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkcmVuPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICB0aGlzLl9jbG9zZUNoaWxkKGl0ZW0uY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpdGVtLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5vbk1lbnVJdGVtQ2xpY2suZW1pdCh7XHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGl0ZW06IGl0ZW0sXHJcbiAgICAgICAgbmF0aXZlRXZlbnQ6IGUsXHJcbiAgICAgIH0pO1xyXG4gICAgICBpZiAoaXRlbS5pc09wZW4gJiYgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdICYmICFpdGVtLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX2ZldGNoRGF0YShpdGVtW3RoaXMudmFsdWVGaWVsZF0pLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgaXRlbS5pc0xvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICB9XHJcblxyXG4gIF9vbk1vdXNlTGVhdmUoaXRlbTogYW55KSB7XHJcbiAgICBpZiAoIWl0ZW1bdGhpcy5kaXNhYmxlRmllbGRdICYmIHRoaXMub3Blbk1vZGUgPT09ICdob3ZlcicpIHtcclxuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA+IDAgfHwgaXRlbVt0aGlzLmhhc0NoaWxkRmllbGRdKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgIHRoaXMuX2Nsb3NlQ2hpbGQoaXRlbS5jaGlsZHJlbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGl0ZW0uaXNPcGVuID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIF9ub3RBY3RpdmUoaXRlbXM6IGFueVtdKSB7XHJcbiAgICBpdGVtcy5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgZWxlbWVudC5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbj8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX25vdEFjdGl2ZShlbGVtZW50LmNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBfY2xvc2VDaGlsZChpdGVtczogYW55W10pIHtcclxuICAgIGl0ZW1zLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICBlbGVtZW50LmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICBpZiAoZWxlbWVudC5jaGlsZHJlbj8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMuX2Nsb3NlQ2hpbGQoZWxlbWVudC5jaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgX3NldFBhcmVudE5vZGUoaXRlbSwgcGFyZW50SWQpIHtcclxuICAgIGl0ZW0uZm9yRWFjaCgoZWxlbWVudCkgPT4ge1xyXG4gICAgICBlbGVtZW50LnBhcmVudElkID0gcGFyZW50SWQ7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIF9vblNlYXJjaEV4cHJDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQ8c3RyaW5nPikge1xyXG4gICAgLy8gdGhpcy5lbXB0eSgpO1xyXG4gICAgdGhpcy5fZm9yY2VGb2N1cyA9IHRydWU7XHJcbiAgICB0aGlzLl9mZXRjaERhdGEobnVsbCwgdGhpcy5fc2VhcmNoQm94Py5zZWFyY2hFeHApO1xyXG4gIH1cclxuXHJcbiAgX2dldERpcmVjdGlvbigpIHtcclxuICAgIGlmICh0aGlzLmRpcmVjdGlvbiA9PT0gJ2hvcml6b250YWwnKSB7XHJcbiAgICAgIHJldHVybiAnaG9yaXpvbnRhbC1tb2RlJztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAndmVydGljYWwtbW9kZSc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjx1bCBbbmdDbGFzc109XCJfZ2V0RGlyZWN0aW9uKClcIj5cclxuICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicmVjdXJzaXZlTGlzdFRtcGw7IGNvbnRleHQ6eyBsaXN0OiBkaXNwbGF5SXRlbXMgfVwiPjwvbmctY29udGFpbmVyPlxyXG48L3VsPlxyXG5cclxuPG5nLXRlbXBsYXRlICNyZWN1cnNpdmVMaXN0VG1wbCBsZXQtbGlzdD1cImxpc3RcIj5cclxuICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGxpc3Q7ICB0cmFja0J5OiBfdHJhY2tMb2FkZWRcIj5cclxuICAgIDxsaSAqbmdJZj1cIml0ZW1bdmlzaWJsZUZpZWxkXSAhPWZhbHNlXCIgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cIml0ZW1bZGlzYWJsZUZpZWxkXVwiXHJcbiAgICAgIChjbGljayk9XCJfb25NZW51Q2xpY2soJGV2ZW50LGl0ZW0pXCIgKG1vdXNlZW50ZXIpPVwiX29uTW91c2VFbnRlcigkZXZlbnQsaXRlbSlcIiAobW91c2VsZWF2ZSk9XCJfb25Nb3VzZUxlYXZlKGl0ZW0pXCI+XHJcbiAgICAgIDxhIFtuZ0NsYXNzXT1cInsnYWN0aXZlJzogaXRlbS5pc0FjdGl2ZX1cIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbWVudS1zdGFydC1zaWRlXCI+XHJcbiAgICAgICAgICA8YXgtaWNvbiAqbmdJZj1cIml0ZW1baWNvbkZpZWxkXVwiIFtjbGFzc109XCJpdGVtW2ljb25GaWVsZF1cIj48L2F4LWljb24+XHJcbiAgICAgICAgICA8c3Bhbj57e19nZXRJdGVtRGlzcGxheVRleHRUZW1wbHRlKGl0ZW0pfX08L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImF4LW1lbnUtZW5kLXNpZGVcIj5cclxuICAgICAgICAgIDxheC1pY29uICpuZ0lmPVwiIWl0ZW0uaXNMb2FkaW5nXCJcclxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieydheC1pYy1jaGV2cm9uJzppdGVtPy5jaGlsZHJlbj8ubGVuZ3RoID4gMCB8fCBpdGVtW2hhc0NoaWxkRmllbGRdLCdhY3RpdmUtaWNvbic6IGl0ZW0uaXNPcGVufVwiPlxyXG4gICAgICAgICAgPC9heC1pY29uPlxyXG4gICAgICAgICAgPGF4LWxvYWRpbmcgKm5nSWY9XCJpdGVtLmlzTG9hZGluZ1wiPlxyXG4gICAgICAgICAgPC9heC1sb2FkaW5nPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2E+XHJcbiAgICAgIDx1bCBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiaXRlbVtkaXNhYmxlRmllbGRdXCIgKm5nSWY9XCJpdGVtPy5jaGlsZHJlbj8ubGVuZ3RoID4gMCAmJiBpdGVtLmlzT3BlblwiPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZWN1cnNpdmVMaXN0VG1wbDsgY29udGV4dDp7IGxpc3Q6IGl0ZW0uY2hpbGRyZW4gfVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICA8L3VsPlxyXG4gICAgPC9saT5cclxuICA8L25nLWNvbnRhaW5lcj5cclxuPC9uZy10ZW1wbGF0ZT5cclxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzTG9hZGluZ1wiPlxyXG4gIDxuZy10ZW1wbGF0ZT5cclxuICAgIDxkaXYgY2xhc3M9XCJheC1mbGV4IGF4LWl0ZW1zLWNlbnRlciBheC1qdXN0aWZ5LWNlbnRlciBheC1wLTRcIj5cclxuICAgICAgPGF4LWxvYWRpbmcgdGV4dD1cInt7ICdsYXlvdXQubG9hZGluZy50ZXh0JyB8IHRyYW5zIH19XCI+PC9heC1sb2FkaW5nPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9uZy10ZW1wbGF0ZT5cclxuPC9uZy1jb250YWluZXI+XHJcbjxuZy10ZW1wbGF0ZSAjdG1wRW1wdHk+XHJcbiAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cclxuICAgIDwhLS0tLS0tLS0tLS0tLS0tIGNoZWNrIGZvciBjdXN0b20gdGVtcGxhdGUgIC0tLS0tLS0tLS0tLS0tLT5cclxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJlbXB0eVRlbXBsYXRlOyBlbHNlIGVsc2VFbXB0eVRlbXBsYXRlXCI+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVRlbXBsYXRlXCI+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8bmctdGVtcGxhdGUgI2Vsc2VFbXB0eVRlbXBsYXRlPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtbGlzdC1pdGVtXCI+XHJcbiAgICAgICAge3sgJ2NvbW1vbi5uby1yZXN1bHQtZm91bmQnIHwgdHJhbnMgfX1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvbmctY29udGFpbmVyPlxyXG48L25nLXRlbXBsYXRlPiJdfQ==
|
|
@@ -5,14 +5,17 @@ import * as i0 from "@angular/core";
|
|
|
5
5
|
import * as i1 from "../textbox/textbox.component";
|
|
6
6
|
import * as i2 from "../decorators/prefix.component";
|
|
7
7
|
import * as i3 from "../decorators/icon.component";
|
|
8
|
-
import * as i4 from "
|
|
9
|
-
import * as i5 from "../
|
|
8
|
+
import * as i4 from "../decorators/suffix.component";
|
|
9
|
+
import * as i5 from "../button/button.component";
|
|
10
|
+
import * as i6 from "@angular/common";
|
|
11
|
+
import * as i7 from "@acorex/core";
|
|
12
|
+
import * as i8 from "../base";
|
|
10
13
|
export class AXSearchBoxComponent extends AXBaseComponentMixin {
|
|
11
14
|
constructor(_elementRef, _cdr, _parent) {
|
|
12
15
|
super(_elementRef, _cdr);
|
|
13
16
|
this._parent = _parent;
|
|
14
17
|
this.placeholder = 'common.search';
|
|
15
|
-
this.debounceTime =
|
|
18
|
+
this.debounceTime = 500;
|
|
16
19
|
this.searchExp = null;
|
|
17
20
|
}
|
|
18
21
|
_onSearchExprChanged(e) {
|
|
@@ -23,13 +26,16 @@ export class AXSearchBoxComponent extends AXBaseComponentMixin {
|
|
|
23
26
|
focus() {
|
|
24
27
|
this._textbox?.focus();
|
|
25
28
|
}
|
|
29
|
+
clear() {
|
|
30
|
+
this._textbox._setValue(null);
|
|
31
|
+
}
|
|
26
32
|
}
|
|
27
33
|
AXSearchBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXSearchBoxComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: AXSearchableComponent, optional: true }], target: i0.ɵɵFactoryTarget.Component });
|
|
28
|
-
AXSearchBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: AXSearchBoxComponent, selector: "ax-search-box", inputs: { placeholder: "placeholder", debounceTime: "debounceTime", searchExp: "searchExp" }, viewQueries: [{ propertyName: "_textbox", first: true, predicate: AXTextBoxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ax-text-box placeholder=\"{{ placeholder | trans }}\" [debounceTime]=\"debounceTime\" \r\n [(value)]=\"searchExp\" (onValueChanged)=\"_onSearchExprChanged($event)\">\r\n <ax-prefix>\r\n <ax-icon class=\"ax-ic ax-ic-magnify\">\r\n </ax-icon>\r\n </ax-prefix>\r\n</ax-text-box>", components: [{ type: i1.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "allowNull", "value", "debounceTime", "name", "checked", "placeholder", "maxLength", "type", "autoComplete"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { type: i2.AXDecoratorPrefixComponent, selector: "ax-prefix" }, { type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }], pipes: { "trans":
|
|
34
|
+
AXSearchBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: AXSearchBoxComponent, selector: "ax-search-box", inputs: { placeholder: "placeholder", debounceTime: "debounceTime", searchExp: "searchExp" }, viewQueries: [{ propertyName: "_textbox", first: true, predicate: AXTextBoxComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ax-text-box placeholder=\"{{ placeholder | trans }}\" [debounceTime]=\"debounceTime\" \r\n [(value)]=\"searchExp\" (onValueChanged)=\"_onSearchExprChanged($event)\">\r\n <ax-prefix>\r\n <ax-icon class=\"ax-ic ax-ic-magnify\" >\r\n </ax-icon>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <ax-button look=\"blank\" color=\"danger\" *ngIf=\"searchExp\" (onClick)=\"clear()\">\r\n <ax-icon class=\"ax-ic ax-ic-close\">\r\n </ax-icon>\r\n </ax-button>\r\n </ax-suffix>\r\n</ax-text-box>", components: [{ type: i1.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "allowNull", "value", "debounceTime", "name", "checked", "placeholder", "maxLength", "type", "autoComplete"], outputs: ["onBlur", "onFocus", "valueChange", "onValueChanged"] }, { type: i2.AXDecoratorPrefixComponent, selector: "ax-prefix" }, { type: i3.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { type: i4.AXDecoratorSuffixComponent, selector: "ax-suffix" }, { type: i5.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "size", "color", "look", "text", "submitBehavior", "cancelBehavior", "toggleable", "selected"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange"] }], directives: [{ type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], pipes: { "trans": i7.AXTranslatorPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
29
35
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXSearchBoxComponent, decorators: [{
|
|
30
36
|
type: Component,
|
|
31
|
-
args: [{ selector: 'ax-search-box', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ax-text-box placeholder=\"{{ placeholder | trans }}\" [debounceTime]=\"debounceTime\" \r\n [(value)]=\"searchExp\" (onValueChanged)=\"_onSearchExprChanged($event)\">\r\n <ax-prefix>\r\n <ax-icon class=\"ax-ic ax-ic-magnify\">\r\n </ax-icon>\r\n </ax-prefix>\r\n</ax-text-box>" }]
|
|
32
|
-
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type:
|
|
37
|
+
args: [{ selector: 'ax-search-box', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<ax-text-box placeholder=\"{{ placeholder | trans }}\" [debounceTime]=\"debounceTime\" \r\n [(value)]=\"searchExp\" (onValueChanged)=\"_onSearchExprChanged($event)\">\r\n <ax-prefix>\r\n <ax-icon class=\"ax-ic ax-ic-magnify\" >\r\n </ax-icon>\r\n </ax-prefix>\r\n <ax-suffix>\r\n <ax-button look=\"blank\" color=\"danger\" *ngIf=\"searchExp\" (onClick)=\"clear()\">\r\n <ax-icon class=\"ax-ic ax-ic-close\">\r\n </ax-icon>\r\n </ax-button>\r\n </ax-suffix>\r\n</ax-text-box>" }]
|
|
38
|
+
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i8.AXSearchableComponent, decorators: [{
|
|
33
39
|
type: Optional
|
|
34
40
|
}, {
|
|
35
41
|
type: Inject,
|
|
@@ -44,4 +50,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
|
44
50
|
}], searchExp: [{
|
|
45
51
|
type: Input
|
|
46
52
|
}] } });
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYm94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvc2VhcmNoYm94L3NlYXJjaGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3NlYXJjaGJveC9zZWFyY2hib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSx1QkFBdUIsRUFBaUMsUUFBUSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pKLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxxQkFBcUIsRUFBdUIsTUFBTSxTQUFTLENBQUM7QUFDM0YsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDOzs7Ozs7Ozs7O0FBUWhELE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxvQkFBb0I7SUFNMUQsWUFDSSxXQUF1QixFQUN2QixJQUF1QixFQUdmLE9BQStCO1FBRXZDLEtBQUssQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFGakIsWUFBTyxHQUFQLE9BQU8sQ0FBd0I7UUFPM0MsZ0JBQVcsR0FBVyxlQUFlLENBQUM7UUFHdEMsaUJBQVksR0FBVyxHQUFHLENBQUM7UUFHM0IsY0FBUyxHQUFXLElBQUksQ0FBQztJQVZ6QixDQUFDO0lBYUQsb0JBQW9CLENBQUMsQ0FBOEI7UUFDL0MsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQztTQUNoQztJQUNMLENBQUM7SUFHRCxLQUFLO1FBQ0QsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBR0QsS0FBSztRQUVELElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2xDLENBQUM7O2lIQTFDUSxvQkFBb0IsNkVBVWpCLHFCQUFxQjtxR0FWeEIsb0JBQW9CLDZMQUdsQixrQkFBa0IsdUVDYmpDLDhoQkFZYzsyRkRGRCxvQkFBb0I7a0JBTmhDLFNBQVM7K0JBQ0ksZUFBZSxtQkFFUix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOzswQkFXaEMsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxxQkFBcUI7NENBTmpDLFFBQVE7c0JBRFAsU0FBUzt1QkFBQyxrQkFBa0I7Z0JBZTdCLFdBQVc7c0JBRFYsS0FBSztnQkFJTixZQUFZO3NCQURYLEtBQUs7Z0JBSU4sU0FBUztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBWaWV3RW5jYXBzdWxhdGlvbiwgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIEVsZW1lbnRSZWYsIENoYW5nZURldGVjdG9yUmVmLCBPcHRpb25hbCwgSW5qZWN0LCBJbnB1dCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYQmFzZUNvbXBvbmVudE1peGluLCBBWFNlYXJjaGFibGVDb21wb25lbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHsgQVhUZXh0Qm94Q29tcG9uZW50IH0gZnJvbSAnLi4vdGV4dGJveCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXgtc2VhcmNoLWJveCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJy4vc2VhcmNoYm94LmNvbXBvbmVudC5odG1sJyxcclxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYU2VhcmNoQm94Q29tcG9uZW50IGV4dGVuZHMgQVhCYXNlQ29tcG9uZW50TWl4aW4ge1xyXG5cclxuXHJcbiAgICBAVmlld0NoaWxkKEFYVGV4dEJveENvbXBvbmVudClcclxuICAgIF90ZXh0Ym94OiBBWFRleHRCb3hDb21wb25lbnQ7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXHJcbiAgICAgICAgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgICAgICAgQE9wdGlvbmFsKClcclxuICAgICAgICBASW5qZWN0KEFYU2VhcmNoYWJsZUNvbXBvbmVudClcclxuICAgICAgICBwcml2YXRlIF9wYXJlbnQ/OiBBWFNlYXJjaGFibGVDb21wb25lbnRcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9lbGVtZW50UmVmLCBfY2RyKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgQElucHV0KClcclxuICAgIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnY29tbW9uLnNlYXJjaCc7XHJcblxyXG4gICAgQElucHV0KClcclxuICAgIGRlYm91bmNlVGltZTogbnVtYmVyID0gNTAwO1xyXG5cclxuICAgIEBJbnB1dCgpXHJcbiAgICBzZWFyY2hFeHA6IHN0cmluZyA9IG51bGw7XHJcblxyXG5cclxuICAgIF9vblNlYXJjaEV4cHJDaGFuZ2VkKGU6IEFYVmFsdWVDaGFuZ2VkRXZlbnQ8c3RyaW5nPikge1xyXG4gICAgICAgIGlmICh0aGlzLl9wYXJlbnQgJiYgdGhpcy5fcGFyZW50LnNlYXJjaCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wYXJlbnQuc2VhcmNoKGUudmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgZm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5fdGV4dGJveD8uZm9jdXMoKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgY2xlYXIoKVxyXG4gICAge1xyXG4gICAgICAgIHRoaXMuX3RleHRib3guX3NldFZhbHVlKG51bGwpO1xyXG4gICAgfVxyXG59XHJcbiIsIjxheC10ZXh0LWJveCAgcGxhY2Vob2xkZXI9XCJ7eyBwbGFjZWhvbGRlciB8IHRyYW5zIH19XCIgW2RlYm91bmNlVGltZV09XCJkZWJvdW5jZVRpbWVcIiBcclxuICAgIFsodmFsdWUpXT1cInNlYXJjaEV4cFwiIChvblZhbHVlQ2hhbmdlZCk9XCJfb25TZWFyY2hFeHByQ2hhbmdlZCgkZXZlbnQpXCI+XHJcbiAgICA8YXgtcHJlZml4PlxyXG4gICAgICAgIDxheC1pY29uIGNsYXNzPVwiYXgtaWMgYXgtaWMtbWFnbmlmeVwiID5cclxuICAgICAgICA8L2F4LWljb24+XHJcbiAgICA8L2F4LXByZWZpeD5cclxuICAgIDxheC1zdWZmaXg+XHJcbiAgICAgICAgPGF4LWJ1dHRvbiBsb29rPVwiYmxhbmtcIiBjb2xvcj1cImRhbmdlclwiICpuZ0lmPVwic2VhcmNoRXhwXCIgKG9uQ2xpY2spPVwiY2xlYXIoKVwiPlxyXG4gICAgICAgICAgICA8YXgtaWNvbiBjbGFzcz1cImF4LWljIGF4LWljLWNsb3NlXCI+XHJcbiAgICAgICAgICAgIDwvYXgtaWNvbj5cclxuICAgICAgICA8L2F4LWJ1dHRvbj5cclxuICAgIDwvYXgtc3VmZml4PlxyXG48L2F4LXRleHQtYm94PiJdfQ==
|
|
@@ -4,13 +4,14 @@ import { AXSearchBoxComponent } from './searchbox.component';
|
|
|
4
4
|
import { AXTextBoxModule } from '../textbox';
|
|
5
5
|
import { AXDecoratorModule } from '../decorators';
|
|
6
6
|
import { AXTranslationModule } from '@acorex/core';
|
|
7
|
+
import { AXButtonModule } from '../button';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
const COMPONENT = [AXSearchBoxComponent];
|
|
9
|
-
const MODULES = [CommonModule, AXTranslationModule, AXDecoratorModule, AXTextBoxModule];
|
|
10
|
+
const MODULES = [CommonModule, AXTranslationModule, AXDecoratorModule, AXTextBoxModule, AXButtonModule];
|
|
10
11
|
export class AXSearchBoxModule {
|
|
11
12
|
}
|
|
12
13
|
AXSearchBoxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXSearchBoxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
13
|
-
AXSearchBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXSearchBoxModule, declarations: [AXSearchBoxComponent], imports: [CommonModule, AXTranslationModule, AXDecoratorModule, AXTextBoxModule], exports: [AXSearchBoxComponent] });
|
|
14
|
+
AXSearchBoxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXSearchBoxModule, declarations: [AXSearchBoxComponent], imports: [CommonModule, AXTranslationModule, AXDecoratorModule, AXTextBoxModule, AXButtonModule], exports: [AXSearchBoxComponent] });
|
|
14
15
|
AXSearchBoxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXSearchBoxModule, providers: [], imports: [[...MODULES]] });
|
|
15
16
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXSearchBoxModule, decorators: [{
|
|
16
17
|
type: NgModule,
|
|
@@ -21,4 +22,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
|
21
22
|
providers: [],
|
|
22
23
|
}]
|
|
23
24
|
}] });
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoYm94Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvc2VhcmNoYm94L3NlYXJjaGJveC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDN0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM3QyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxXQUFXLENBQUM7O0FBRTNDLE1BQU0sU0FBUyxHQUFHLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN6QyxNQUFNLE9BQU8sR0FBRyxDQUFDLFlBQVksRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFReEcsTUFBTSxPQUFPLGlCQUFpQjs7OEdBQWpCLGlCQUFpQjsrR0FBakIsaUJBQWlCLGlCQVRYLG9CQUFvQixhQUN0QixZQUFZLEVBQUUsbUJBQW1CLEVBQUUsaUJBQWlCLEVBQUUsZUFBZSxFQUFFLGNBQWMsYUFEbkYsb0JBQW9COytHQVMxQixpQkFBaUIsYUFGZixFQUFFLFlBRkosQ0FBQyxHQUFHLE9BQU8sQ0FBQzsyRkFJWixpQkFBaUI7a0JBTjdCLFFBQVE7bUJBQUM7b0JBQ04sWUFBWSxFQUFFLENBQUMsR0FBRyxTQUFTLENBQUM7b0JBQzVCLE9BQU8sRUFBRSxDQUFDLEdBQUcsT0FBTyxDQUFDO29CQUNyQixPQUFPLEVBQUUsQ0FBQyxHQUFHLFNBQVMsQ0FBQztvQkFDdkIsU0FBUyxFQUFFLEVBQUU7aUJBQ2hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQVhTZWFyY2hCb3hDb21wb25lbnQgfSBmcm9tICcuL3NlYXJjaGJveC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBBWFRleHRCb3hNb2R1bGUgfSBmcm9tICcuLi90ZXh0Ym94JztcclxuaW1wb3J0IHsgQVhEZWNvcmF0b3JNb2R1bGUgfSBmcm9tICcuLi9kZWNvcmF0b3JzJztcclxuaW1wb3J0IHsgQVhUcmFuc2xhdGlvbk1vZHVsZSB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IEFYQnV0dG9uTW9kdWxlIH0gZnJvbSAnLi4vYnV0dG9uJztcclxuXHJcbmNvbnN0IENPTVBPTkVOVCA9IFtBWFNlYXJjaEJveENvbXBvbmVudF07XHJcbmNvbnN0IE1PRFVMRVMgPSBbQ29tbW9uTW9kdWxlLCBBWFRyYW5zbGF0aW9uTW9kdWxlLCBBWERlY29yYXRvck1vZHVsZSwgQVhUZXh0Qm94TW9kdWxlLCBBWEJ1dHRvbk1vZHVsZV07XHJcblxyXG5ATmdNb2R1bGUoe1xyXG4gICAgZGVjbGFyYXRpb25zOiBbLi4uQ09NUE9ORU5UXSxcclxuICAgIGltcG9ydHM6IFsuLi5NT0RVTEVTXSxcclxuICAgIGV4cG9ydHM6IFsuLi5DT01QT05FTlRdLFxyXG4gICAgcHJvdmlkZXJzOiBbXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYU2VhcmNoQm94TW9kdWxlIHsgfVxyXG4iXX0=
|