@acorex/components 18.12.36 → 18.12.38
Sign up to get free protection for your applications and to get access to all the features.
- package/color-palette/lib/color-palette-picker.component.d.ts +3 -0
- package/esm2022/breadcrumbs/lib/breadcrumbs.component.mjs +2 -2
- package/esm2022/button-group/lib/button-group.component.mjs +2 -2
- package/esm2022/color-palette/lib/color-palette-picker.component.mjs +28 -4
- package/esm2022/common/lib/components/value-component.class.mjs +6 -4
- package/esm2022/drawer/lib/drawer/drawer-item/drawer.component.mjs +2 -2
- package/esm2022/dropdown/lib/dropdown-box.component.mjs +3 -3
- package/esm2022/form/lib/form-field.component.mjs +2 -2
- package/esm2022/form/lib/validation-rule.directive.mjs +1 -1
- package/esm2022/menu/lib/context-menu.component.mjs +2 -2
- package/esm2022/menu/lib/menu.component.mjs +2 -2
- package/esm2022/otp/lib/otp.component.mjs +32 -28
- package/esm2022/phone-box/lib/phone-box.component.mjs +21 -20
- package/esm2022/picker/lib/picker.component.mjs +8 -5
- package/esm2022/range-slider/lib/range-slider.component.mjs +1 -1
- package/esm2022/search-box/lib/search-box.component.mjs +4 -4
- package/esm2022/select-box/lib/select-box.component.mjs +6 -4
- package/esm2022/selection-list/lib/selection-list.component.mjs +9 -5
- package/esm2022/side-menu/lib/side-menu.component.mjs +2 -2
- package/esm2022/tabs/lib/tab-item.component.mjs +5 -4
- package/esm2022/text-area/lib/text-area.component.mjs +4 -4
- package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.mjs +3 -1
- package/fesm2022/acorex-components-breadcrumbs.mjs +2 -2
- package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/acorex-components-button-group.mjs +2 -2
- package/fesm2022/acorex-components-button-group.mjs.map +1 -1
- package/fesm2022/acorex-components-color-palette.mjs +27 -3
- package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
- package/fesm2022/acorex-components-common.mjs +5 -3
- package/fesm2022/acorex-components-common.mjs.map +1 -1
- package/fesm2022/acorex-components-drawer.mjs +2 -2
- package/fesm2022/acorex-components-drawer.mjs.map +1 -1
- package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
- package/fesm2022/acorex-components-form.mjs +1 -1
- package/fesm2022/acorex-components-form.mjs.map +1 -1
- package/fesm2022/acorex-components-menu.mjs +4 -4
- package/fesm2022/acorex-components-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-otp.mjs +31 -27
- package/fesm2022/acorex-components-otp.mjs.map +1 -1
- package/fesm2022/acorex-components-phone-box.mjs +20 -19
- package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
- package/fesm2022/acorex-components-picker.mjs +7 -4
- package/fesm2022/acorex-components-picker.mjs.map +1 -1
- package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
- package/fesm2022/acorex-components-search-box.mjs +2 -2
- package/fesm2022/acorex-components-search-box.mjs.map +1 -1
- package/fesm2022/acorex-components-select-box.mjs +5 -3
- package/fesm2022/acorex-components-select-box.mjs.map +1 -1
- package/fesm2022/acorex-components-selection-list.mjs +7 -3
- package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
- package/fesm2022/acorex-components-side-menu.mjs +2 -2
- package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
- package/fesm2022/acorex-components-tabs.mjs +4 -3
- package/fesm2022/acorex-components-tabs.mjs.map +1 -1
- package/fesm2022/acorex-components-text-area.mjs +2 -2
- package/fesm2022/acorex-components-text-area.mjs.map +1 -1
- package/fesm2022/acorex-components-wysiwyg.mjs +2 -0
- package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
- package/form/lib/validation-rule.directive.d.ts +1 -1
- package/otp/lib/otp.component.d.ts +16 -15
- package/package.json +1 -1
- package/phone-box/lib/phone-box.component.d.ts +1 -2
- package/picker/lib/picker.component.d.ts +2 -2
- package/range-slider/lib/range-slider.component.d.ts +2 -2
- package/tabs/lib/tab-item.component.d.ts +9 -9
- package/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.d.ts +2 -0
@@ -59,6 +59,9 @@ export class AXPickerComponent extends MXBaseComponent {
|
|
59
59
|
c.onValueChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe(() => {
|
60
60
|
this._detectSelectedItemsByValue();
|
61
61
|
});
|
62
|
+
c.onOptionChanged.pipe(this._unsubscriber.takeUntilDestroy).subscribe(() => {
|
63
|
+
this.cdr.markForCheck();
|
64
|
+
});
|
62
65
|
});
|
63
66
|
this._htmlColumns.forEach((col, index) => {
|
64
67
|
col['column'] = this._columns.get(index);
|
@@ -164,20 +167,20 @@ export class AXPickerComponent extends MXBaseComponent {
|
|
164
167
|
});
|
165
168
|
}
|
166
169
|
/**
|
167
|
-
|
168
|
-
|
170
|
+
* Refreshes the component by setting heights and detecting selected items by value.
|
171
|
+
*/
|
169
172
|
refresh() {
|
170
173
|
this._setHeights();
|
171
174
|
this._detectSelectedItemsByValue();
|
172
175
|
}
|
173
176
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPickerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
174
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPickerComponent, selector: "ax-picker", providers: [AXUnsubscriber], queries: [{ propertyName: "_columns", predicate: AXPickerColumnDirective }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-header\">\n @for(col of _columns; track $index){\n
|
177
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXPickerComponent, selector: "ax-picker", providers: [AXUnsubscriber], queries: [{ propertyName: "_columns", predicate: AXPickerColumnDirective }], usesInheritance: true, ngImport: i0, template: "<div class=\"ax-header\">\n @for (col of _columns; track $index) {\n <div class=\"ax-picker-col\">\n <div class=\"ax-header\">\n {{ col.title }}\n </div>\n </div>\n }\n</div>\n<div class=\"ax-content\">\n <div class=\"ax-picker-window\"></div>\n @for (col of _columns; track $index) {\n <div\n class=\"ax-picker-col\"\n [class.ax-state-disabled]=\"col.disabled\"\n [class.ax-state-readonly]=\"col.readonly\"\n >\n <div class=\"ax-content\">\n <ul>\n @for (item of col.items; track $index) {\n <li\n (click)=\"_handleItemClick(col, item)\"\n [class.ax-state-active]=\"col.value && col.value[col.valueField] === item[col.valueField]\"\n [class.ax-state-disabled]=\"col.disabled\"\n [class.ax-state-readonly]=\"col.readonly\"\n >\n {{ item[col.textField] }}\n </li>\n }\n </ul>\n </div>\n </div>\n }\n</div>\n", styles: ["ax-picker{display:flex;width:100%;flex-direction:column;direction:ltr!important;--ax-item-height: var(--ax-size-default);--ax-content-height: 302px;--ax-content-pad: calc((var(--ax-content-height) - var(--ax-item-height)) / 2)}ax-picker>.ax-header,ax-picker>.ax-content{display:flex;width:100%}ax-picker>.ax-header .ax-picker-col,ax-picker>.ax-content .ax-picker-col{display:flex;flex:1 1 0%;flex-direction:column;text-align:center}ax-picker>.ax-header{padding:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:500}ax-picker>.ax-content{position:relative;flex:1 1 0%}ax-picker>.ax-content .ax-picker-window{height:calc(var(--ax-item-height));pointer-events:none;position:absolute;inset-inline-start:0px;top:50%;width:100%;transform:translateY(-50%);border-bottom-width:1px;border-top-width:1px;border-color:rgba(var(--ax-color-border-default));background-color:rgba(var(--ax-color-on-surface))}ax-picker>.ax-content .ax-picker-col{display:flex;height:100%;flex:1 1 0%;cursor:pointer;flex-direction:column;justify-content:center;text-align:center}ax-picker>.ax-content .ax-picker-col.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-picker>.ax-content .ax-picker-col.ax-state-readonly{cursor:text;opacity:.75}ax-picker>.ax-content .ax-picker-col:hover:not(.ax-state-disabled,.ax-state-readonly){background-color:rgba(var(--ax-color-on-surface))}ax-picker>.ax-content .ax-picker-col>.ax-content{font-feature-settings:\"tnum\";touch-action:pan-y!important;position:relative;flex:1 1 0%;overflow:hidden;font-weight:400}ax-picker>.ax-content .ax-picker-col>.ax-content:before,ax-picker>.ax-content .ax-picker-col>.ax-content:after{height:var(--ax-content-pad);pointer-events:none;position:absolute;inset-inline-start:0px;z-index:10;width:100%;content:\"\"}ax-picker>.ax-content .ax-picker-col>.ax-content:before{top:0;background:linear-gradient(rgba(var(--ax-color-surface)),rgba(var(--ax-color-surface),.3))}ax-picker>.ax-content .ax-picker-col>.ax-content:after{bottom:0;background:linear-gradient(rgba(var(--ax-color-surface),.3),rgba(var(--ax-color-surface)))}ax-picker>.ax-content .ax-picker-col>.ax-content>ul{transition:transform .1s ease 0s;height:var(--ax-content-height);padding-block:var(--ax-content-pad);will-change:transform}ax-picker>.ax-content .ax-picker-col>.ax-content>ul li{height:calc(var(--ax-item-height));scroll-snap-align:center;display:flex;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;font-size:1rem;line-height:1.5rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-picker>.ax-content .ax-picker-col>.ax-content>ul li:hover:not(.ax-state-disabled,.ax-state-readonly,.ax-state-active){color:rgba(var(--ax-color-primary-500))}ax-picker>.ax-content .ax-picker-col>.ax-content>ul li.ax-state-active{background-color:rgba(var(--ax-color-primary-200));font-size:1.125rem;line-height:1.75rem;font-weight:500;color:rgba(var(--ax-color-primary-fore-tint))}ax-picker>.ax-content .ax-picker-col:not(:last-child){border-inline-end-width:1px;border-color:rgba(var(--ax-color-border-default))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
175
178
|
}
|
176
179
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXPickerComponent, decorators: [{
|
177
180
|
type: Component,
|
178
|
-
args: [{ selector: 'ax-picker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [AXUnsubscriber], template: "<div class=\"ax-header\">\n @for(col of _columns; track $index){\n
|
181
|
+
args: [{ selector: 'ax-picker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [AXUnsubscriber], template: "<div class=\"ax-header\">\n @for (col of _columns; track $index) {\n <div class=\"ax-picker-col\">\n <div class=\"ax-header\">\n {{ col.title }}\n </div>\n </div>\n }\n</div>\n<div class=\"ax-content\">\n <div class=\"ax-picker-window\"></div>\n @for (col of _columns; track $index) {\n <div\n class=\"ax-picker-col\"\n [class.ax-state-disabled]=\"col.disabled\"\n [class.ax-state-readonly]=\"col.readonly\"\n >\n <div class=\"ax-content\">\n <ul>\n @for (item of col.items; track $index) {\n <li\n (click)=\"_handleItemClick(col, item)\"\n [class.ax-state-active]=\"col.value && col.value[col.valueField] === item[col.valueField]\"\n [class.ax-state-disabled]=\"col.disabled\"\n [class.ax-state-readonly]=\"col.readonly\"\n >\n {{ item[col.textField] }}\n </li>\n }\n </ul>\n </div>\n </div>\n }\n</div>\n", styles: ["ax-picker{display:flex;width:100%;flex-direction:column;direction:ltr!important;--ax-item-height: var(--ax-size-default);--ax-content-height: 302px;--ax-content-pad: calc((var(--ax-content-height) - var(--ax-item-height)) / 2)}ax-picker>.ax-header,ax-picker>.ax-content{display:flex;width:100%}ax-picker>.ax-header .ax-picker-col,ax-picker>.ax-content .ax-picker-col{display:flex;flex:1 1 0%;flex-direction:column;text-align:center}ax-picker>.ax-header{padding:.5rem;font-size:.875rem;line-height:1.25rem;font-weight:500}ax-picker>.ax-content{position:relative;flex:1 1 0%}ax-picker>.ax-content .ax-picker-window{height:calc(var(--ax-item-height));pointer-events:none;position:absolute;inset-inline-start:0px;top:50%;width:100%;transform:translateY(-50%);border-bottom-width:1px;border-top-width:1px;border-color:rgba(var(--ax-color-border-default));background-color:rgba(var(--ax-color-on-surface))}ax-picker>.ax-content .ax-picker-col{display:flex;height:100%;flex:1 1 0%;cursor:pointer;flex-direction:column;justify-content:center;text-align:center}ax-picker>.ax-content .ax-picker-col.ax-state-disabled{cursor:not-allowed;opacity:.5}ax-picker>.ax-content .ax-picker-col.ax-state-readonly{cursor:text;opacity:.75}ax-picker>.ax-content .ax-picker-col:hover:not(.ax-state-disabled,.ax-state-readonly){background-color:rgba(var(--ax-color-on-surface))}ax-picker>.ax-content .ax-picker-col>.ax-content{font-feature-settings:\"tnum\";touch-action:pan-y!important;position:relative;flex:1 1 0%;overflow:hidden;font-weight:400}ax-picker>.ax-content .ax-picker-col>.ax-content:before,ax-picker>.ax-content .ax-picker-col>.ax-content:after{height:var(--ax-content-pad);pointer-events:none;position:absolute;inset-inline-start:0px;z-index:10;width:100%;content:\"\"}ax-picker>.ax-content .ax-picker-col>.ax-content:before{top:0;background:linear-gradient(rgba(var(--ax-color-surface)),rgba(var(--ax-color-surface),.3))}ax-picker>.ax-content .ax-picker-col>.ax-content:after{bottom:0;background:linear-gradient(rgba(var(--ax-color-surface),.3),rgba(var(--ax-color-surface)))}ax-picker>.ax-content .ax-picker-col>.ax-content>ul{transition:transform .1s ease 0s;height:var(--ax-content-height);padding-block:var(--ax-content-pad);will-change:transform}ax-picker>.ax-content .ax-picker-col>.ax-content>ul li{height:calc(var(--ax-item-height));scroll-snap-align:center;display:flex;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center;font-size:1rem;line-height:1.5rem;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}ax-picker>.ax-content .ax-picker-col>.ax-content>ul li:hover:not(.ax-state-disabled,.ax-state-readonly,.ax-state-active){color:rgba(var(--ax-color-primary-500))}ax-picker>.ax-content .ax-picker-col>.ax-content>ul li.ax-state-active{background-color:rgba(var(--ax-color-primary-200));font-size:1.125rem;line-height:1.75rem;font-weight:500;color:rgba(var(--ax-color-primary-fore-tint))}ax-picker>.ax-content .ax-picker-col:not(:last-child){border-inline-end-width:1px;border-color:rgba(var(--ax-color-border-default))}\n"] }]
|
179
182
|
}], propDecorators: { _columns: [{
|
180
183
|
type: ContentChildren,
|
181
184
|
args: [AXPickerColumnDirective, { emitDistinctChangesOnly: true }]
|
182
185
|
}] } });
|
183
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9waWNrZXIvc3JjL2xpYi9waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BpY2tlci9zcmMvbGliL3BpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRXBFOzs7R0FHRztBQVNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBUnREOztRQVVFLGNBQWM7UUFJSixhQUFRLEdBQXVDLEVBQXdDLENBQUM7UUFFbEcsY0FBYztRQUNOLGdCQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBSzdDLGNBQWM7UUFDTixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBUTFCLGNBQWM7UUFDSixrQkFBYSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFakUsY0FBYztRQUNKLFVBQUssR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0ErSjFDO0lBN0pDLGNBQWM7SUFDZCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO2FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxD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ZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWERyYXdpbmdVdGlsLCBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBpY2tlckNvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4vcGlja2VyLWNvbHVtbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKiBBIHBpY2tlciBjb21wb25lbnQgd2l0aCBPblB1c2ggY2hhbmdlIGRldGVjdGlvbiBhbmQgbm8gZW5jYXBzdWxhdGlvbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbQVhVbnN1YnNjcmliZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBpY2tlckNvbXBvbmVudCBleHRlbmRzIE1YQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQENvbnRlbnRDaGlsZHJlbihBWFBpY2tlckNvbHVtbkRpcmVjdGl2ZSwgeyBlbWl0RGlzdGluY3RDaGFuZ2VzT25seTogdHJ1ZSB9KVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfY29sdW1uczogUXVlcnlMaXN0PEFYUGlja2VyQ29sdW1uRGlyZWN0aXZlPiA9IHt9IGFzIFF1ZXJ5TGlzdDxBWFBpY2tlckNvbHVtbkRpcmVjdGl2ZT47XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfaXRlbUhlaWdodCA9IHRoaXMuX2NhbGNJdGVtaGVpZ2h0KCk7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfaHRtbENvbHVtbnM6IEhUTUxEaXZFbGVtZW50W107XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfZHJhZ2dpbmcgPSBmYWxzZTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9wcmV2aW91c1k6IG51bWJlcjtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9jdXJyZW50TGlzdDogSFRNTERpdkVsZW1lbnQ7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIF91bnN1YnNjcmliZXI6IEFYVW5zdWJzY3JpYmVyID0gaW5qZWN0KEFYVW5zdWJzY3JpYmVyKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX3pvbmU6IE5nWm9uZSA9IGluamVjdChOZ1pvbmUpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9jb2x1bW5zLmNoYW5nZXNcbiAgICAgIC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KVxuICAgICAgLnBpcGUoc3RhcnRXaXRoKHVuZGVmaW5lZCkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5fc2V0SGVpZ2h0cygpO1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuX2JpbmRFdmVudHMoKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fcmVtb3ZlRXZlbnRzKCk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9zZXRIZWlnaHRzKCkge1xuICAgIHRoaXMuX2l0ZW1IZWlnaHQgPSB0aGlzLl9jYWxjSXRlbWhlaWdodCgpO1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3QgdmFsID0gdGhpcy5nZXRIb3N0RWxlbWVudCgpLmNsaWVudEhlaWdodCAtIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yKCcuYXgtaGVhZGVyJykuY2xpZW50SGVpZ2h0O1xuICAgICAgdGhpcy5nZXRIb3N0RWxlbWVudCgpLnN0eWxlLnNldFByb3BlcnR5KCctLWF4LWNvbnRlbnQtaGVpZ2h0JywgYCR7dmFsfXB4YCk7XG4gICAgfSwgNTApO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfY2FsY0l0ZW1oZWlnaHQoKTogbnVtYmVyIHtcbiAgICBjb25zdCByZW0gPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIG51bGwpLmdldFByb3BlcnR5VmFsdWUoJy0tYXgtc2l6ZS1kZWZhdWx0Jyk7XG4gICAgcmV0dXJuIEFYRHJhd2luZ1V0aWwuY29udmVydFJlbVRvUGl4ZWxzKE51bWJlcihyZW0/LnJlcGxhY2UoJ3JlbScsICcnKSA/PyAwKSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9iaW5kRXZlbnRzKCk6IHZvaWQge1xuICAgIHRoaXMuX3JlbW92ZUV2ZW50cygpO1xuICAgIC8vXG4gICAgdGhpcy5faHRtbENvbHVtbnMgPSBBcnJheS5mcm9tKHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yQWxsPEhUTUxEaXZFbGVtZW50PignLmF4LXBpY2tlci1jb2wgLmF4LWNvbnRlbnQnKSk7XG4gICAgdGhpcy5fY29sdW1ucy5mb3JFYWNoKChjKSA9PiB7XG4gICAgICBjLm9uVmFsdWVDaGFuZ2VkLnBpcGUodGhpcy5fdW5zdWJzY3JpYmVyLnRha2VVbnRpbERlc3Ryb3kpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX2RldGVjdFNlbGVjdGVkSXRlbXNCeVZhbHVlKCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2h0bWxDb2x1bW5zLmZvckVhY2goKGNvbCwgaW5kZXgpID0+IHtcbiAgICAgIGNvbFsnY29sdW1uJ10gPSB0aGlzLl9jb2x1bW5zLmdldChpbmRleCk7XG4gICAgICBjb2wuYWRkRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLl9oYW5kbGVNb3VzZVdlZWwuYmluZCh0aGlzKSwge1xuICAgICAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgLy9cbiAgICAgIGNvbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5faGFuZGxlVG91Y2hTdGFydC5iaW5kKHRoaXMpLCB7XG4gICAgICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICAvL2NvbC5hZGRFdmVudExpc3RlbmVyKFwibW91c2Vkb3duXCIsIHRoaXMuX2hhbmRsZVRvdWNoU3RhcnQuYmluZCh0aGlzKSwgeyBwYXNzaXZlOiBmYWxzZSB9KTtcbiAgICAgIC8vXG4gICAgICBjb2wuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgdGhpcy5faGFuZGxlVG91Y2hNb3ZlLmJpbmQodGhpcyksIHtcbiAgICAgICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIC8vY29sLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuX2hhbmRsZVRvdWNoTW92ZS5iaW5kKHRoaXMpLCB7IHBhc3NpdmU6IGZhbHNlIH0pXG4gICAgICAvL1xuICAgICAgY29sLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5faGFuZGxlVG91Y2hFbmQuYmluZCh0aGlzKSwge1xuICAgICAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgLy9jb2wuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIHRoaXMuX2hhbmRsZVRvdWNoTW92ZS5iaW5kKHRoaXMpLCB7IHBhc3NpdmU6IGZhbHNlIH0pXG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9yZW1vdmVFdmVudHMoKTogdm9pZCB7XG4gICAgdGhpcy5faHRtbENvbHVtbnM/LmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgY29sLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3doZWVsJywgdGhpcy5faGFuZGxlTW91c2VXZWVsLmJpbmQodGhpcykpO1xuICAgICAgLy9cbiAgICAgIGNvbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgdGhpcy5faGFuZGxlVG91Y2hTdGFydC5iaW5kKHRoaXMpKTtcbiAgICAgIC8vY29sLnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5faGFuZGxlVG91Y2hTdGFydC5iaW5kKHRoaXMpKTtcbiAgICAgIGNvbC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLl9oYW5kbGVUb3VjaE1vdmUuYmluZCh0aGlzKSk7XG4gICAgICAvL2NvbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZW1vdmUnLCB0aGlzLl9oYW5kbGVUb3VjaE1vdmUuYmluZCh0aGlzKSk7XG4gICAgICAvL1xuICAgICAgY29sLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgdGhpcy5faGFuZGxlVG91Y2hFbmQuYmluZCh0aGlzKSk7XG4gICAgICAvL2NvbC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5faGFuZGxlVG91Y2hFbmQuYmluZCh0aGlzKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBfaGFuZGxlVG91Y2hTdGFydChlOiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuX2N1cnJlbnRMaXN0ID0gZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50O1xuICAgIHRoaXMuX3ByZXZpb3VzWSA9IGUgaW5zdGFuY2VvZiBUb3VjaEV2ZW50ID8gZS50b3VjaGVzWzBdLmNsaWVudFkgOiBlLmNsaWVudFk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9oYW5kbGVUb3VjaE1vdmUoZTogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9kcmFnZ2luZyA9IHRydWU7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY3VycmVudExpc3QgJiYgdGhpcy5fZHJhZ2dpbmcpIHtcbiAgICAgICAgY29uc3QgY2xpZW50WSA9IGUgaW5zdGFuY2VvZiBUb3VjaEV2ZW50ID8gZS50b3VjaGVzWzBdLmNsaWVudFkgOiBlLmNsaWVudFk7XG4gICAgICAgIGNvbnN0IGRlbHRhID0gY2xpZW50WSAtIHRoaXMuX3ByZXZpb3VzWTtcbiAgICAgICAgdGhpcy5fcHJldmlvdXNZID0gY2xpZW50WTtcbiAgICAgICAgaWYgKE1hdGguYWJzKGRlbHRhKSA+IDEpIHRoaXMuX21vdmVCeURlbHRhKHRoaXMuX2N1cnJlbnRMaXN0LCAtZGVsdGEpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfaGFuZGxlVG91Y2hFbmQoZTogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiB2b2lkIHtcbiAgICAvLyBzaW11bGF0ZSBjbGlja1xuICAgIGNvbnN0IHRhcmdldGVsZW1lbnQgPSBlLnRhcmdldCBhcyBIVE1MRWxlbWVudDtcbiAgICBpZiAoIXRoaXMuX2RyYWdnaW5nICYmIHRhcmdldGVsZW1lbnQudGFnTmFtZSA9PSAnTEknKSB7XG4gICAgICB0YXJnZXRlbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuICAgIHRoaXMuX2RyYWdnaW5nID0gZmFsc2U7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9oYW5kbGVNb3VzZVdlZWwoZTogV2hlZWxFdmVudCk6IHZvaWQge1xuICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIHRoaXMuX21vdmVCeURlbHRhKGUuY3VycmVudFRhcmdldCBhcyBIVE1MRGl2RWxlbWVudCwgZS5kZWx0YVkpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfbW92ZUJ5RGVsdGEoY29sOiBIVE1MRGl2RWxlbWVudCwgZGVsdGFZOiBudW1iZXIpIHtcbiAgICBjb25zdCBjb2x1bW4gPSBjb2xbJ2NvbHVtbiddIGFzIEFYUGlja2VyQ29sdW1uRGlyZWN0aXZlO1xuICAgIGlmIChjb2x1bW4ucmVhZG9ubHkgfHwgY29sdW1uLmRpc2FibGVkKSByZXR1cm47XG4gICAgbGV0IGluZGV4ID0gY29sdW1uLml0ZW1zLmluZGV4T2YoY29sdW1uLnZhbHVlKTtcbiAgICBpbmRleCA9IGRlbHRhWSA8IDAgPyBpbmRleCAtIGNvbHVtbi5zdGVwIDogaW5kZXggKyBjb2x1bW4uc3RlcDtcbiAgICBpZiAoaW5kZXggPCAwKSBpbmRleCA9IDA7XG4gICAgaWYgKGluZGV4ID49IGNvbHVtbi5pdGVtcy5sZW5ndGgpIGluZGV4ID0gY29sdW1uLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgY29sdW1uLmNvbW1pdFZhbHVlKGNvbHVtbi5pdGVtc1tpbmRleF0sIHRydWUpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIF9oYW5kbGVJdGVtQ2xpY2soY29sdW1uOiBBWFBpY2tlckNvbHVtbkRpcmVjdGl2ZSwgaXRlbTogYW55KSB7XG4gICAgaWYgKGNvbHVtbi5yZWFkb25seSB8fCBjb2x1bW4uZGlzYWJsZWQpIHJldHVybjtcbiAgICBjb2x1bW4uY29tbWl0VmFsdWUoaXRlbSwgdHJ1ZSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9kZXRlY3RTZWxlY3RlZEl0ZW1zQnlWYWx1ZSgpOiB2b2lkIHtcbiAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX2h0bWxDb2x1bW5zLmZvckVhY2goKGNvbCkgPT4ge1xuICAgICAgICBjb25zdCBjb2x1bW4gPSBjb2xbJ2NvbHVtbiddIGFzIEFYUGlja2VyQ29sdW1uRGlyZWN0aXZlO1xuICAgICAgICBjb25zdCBpbmRleCA9IGNvbHVtbi5pdGVtcy5pbmRleE9mKGNvbHVtbi52YWx1ZSk7XG4gICAgICAgIGNvbC5xdWVyeVNlbGVjdG9yKCd1bCcpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVZKCR7LWluZGV4ICogdGhpcy5faXRlbUhlaWdodH1weClgO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gKiBSZWZyZXNoZXMgdGhlIGNvbXBvbmVudCBieSBzZXR0aW5nIGhlaWdodHMgYW5kIGRldGVjdGluZyBzZWxlY3RlZCBpdGVtcyBieSB2YWx1ZS5cbiAqL1xuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLl9zZXRIZWlnaHRzKCk7XG4gICAgdGhpcy5fZGV0ZWN0U2VsZWN0ZWRJdGVtc0J5VmFsdWUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWhlYWRlclwiPlxuICBAZm9yKGNvbCBvZiBfY29sdW1uczsgdHJhY2sgJGluZGV4KXtcbiAgPGRpdiBjbGFzcz1cImF4LXBpY2tlci1jb2xcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtaGVhZGVyXCI+XG4gICAgICB7eyBjb2wudGl0bGUgfX1cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImF4LWNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cImF4LXBpY2tlci13aW5kb3dcIj48L2Rpdj5cbiAgQGZvcihjb2wgb2YgX2NvbHVtbnM7IHRyYWNrICRpbmRleCl7XG4gIDxkaXYgY2xhc3M9XCJheC1waWNrZXItY29sXCIgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiIFtjbGFzcy5heC1zdGF0ZS1yZWFkb25seV09XCJjb2wucmVhZG9ubHlcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtY29udGVudFwiPlxuICAgICAgPHVsPlxuICAgICAgICBAZm9yKGl0ZW0gb2YgY29sLml0ZW1zOyB0cmFjayAkaW5kZXgpe1xuICAgICAgICA8bGkgKGNsaWNrKT1cIl9oYW5kbGVJdGVtQ2xpY2soY29sLCBpdGVtKVwiXG4gICAgICAgICAgW2NsYXNzLmF4LXN0YXRlLWFjdGl2ZV09XCJjb2wudmFsdWUgJiYgY29sLnZhbHVlW2NvbC52YWx1ZUZpZWxkXSA9PT0gaXRlbVtjb2wudmFsdWVGaWVsZF1cIlxuICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIiBbY2xhc3MuYXgtc3RhdGUtcmVhZG9ubHldPVwiY29sLnJlYWRvbmx5XCI+XG4gICAgICAgICAge3sgaXRlbVtjb2wudGV4dEZpZWxkXSB9fVxuICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgICA8L3VsPlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgfVxuXG48L2Rpdj4iXX0=
|
186
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9waWNrZXIvc3JjL2xpYi9waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3BpY2tlci9zcmMvbGliL3BpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDNUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNuRSxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsTUFBTSxFQUVOLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7O0FBRXBFOzs7R0FHRztBQVNILE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxlQUFlO0lBUnREOztRQVNFLGNBQWM7UUFJSixhQUFRLEdBQXVDLEVBQXdDLENBQUM7UUFFbEcsY0FBYztRQUNOLGdCQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBSzdDLGNBQWM7UUFDTixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBUTFCLGNBQWM7UUFDSixrQkFBYSxHQUFtQixNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFakUsY0FBYztRQUNKLFVBQUssR0FBVyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7S0FxSzFDO0lBbktDLGNBQWM7SUFDZCxrQkFBa0I7UUFDaEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPO2FBQ2xCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxD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QyxpQkFBaUIsQ0FBQyxJQUFJLGFBQzFCLENBQUMsY0FBYyxDQUFDOzhCQU9qQixRQUFRO3NCQUhqQixlQUFlO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsdUJBQXVCLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTVhCYXNlQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQgeyBBWERyYXdpbmdVdGlsLCBBWFVuc3Vic2NyaWJlciB9IGZyb20gJ0BhY29yZXgvY29yZS91dGlscyc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIE5nWm9uZSxcbiAgT25EZXN0cm95LFxuICBRdWVyeUxpc3QsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBpbmplY3QsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgc3RhcnRXaXRoIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBBWFBpY2tlckNvbHVtbkRpcmVjdGl2ZSB9IGZyb20gJy4vcGlja2VyLWNvbHVtbi5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXG4gKiBBIHBpY2tlciBjb21wb25lbnQgd2l0aCBPblB1c2ggY2hhbmdlIGRldGVjdGlvbiBhbmQgbm8gZW5jYXBzdWxhdGlvbi5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3BpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbQVhVbnN1YnNjcmliZXJdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFBpY2tlckNvbXBvbmVudCBleHRlbmRzIE1YQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSB7XG4gIC8qKiBAaWdub3JlICovXG4gIEBDb250ZW50Q2hpbGRyZW4oQVhQaWNrZXJDb2x1bW5EaXJlY3RpdmUsIHsgZW1pdERpc3RpbmN0Q2hhbmdlc09ubHk6IHRydWUgfSlcblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2NvbHVtbnM6IFF1ZXJ5TGlzdDxBWFBpY2tlckNvbHVtbkRpcmVjdGl2ZT4gPSB7fSBhcyBRdWVyeUxpc3Q8QVhQaWNrZXJDb2x1bW5EaXJlY3RpdmU+O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX2l0ZW1IZWlnaHQgPSB0aGlzLl9jYWxjSXRlbWhlaWdodCgpO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX2h0bWxDb2x1bW5zOiBIVE1MRGl2RWxlbWVudFtdO1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX2RyYWdnaW5nID0gZmFsc2U7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfcHJldmlvdXNZOiBudW1iZXI7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfY3VycmVudExpc3Q6IEhUTUxEaXZFbGVtZW50O1xuXG4gIC8qKiBAaWdub3JlICovXG4gIHByb3RlY3RlZCBfdW5zdWJzY3JpYmVyOiBBWFVuc3Vic2NyaWJlciA9IGluamVjdChBWFVuc3Vic2NyaWJlcik7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJvdGVjdGVkIF96b25lOiBOZ1pvbmUgPSBpbmplY3QoTmdab25lKTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XG4gICAgdGhpcy5fY29sdW1ucy5jaGFuZ2VzXG4gICAgICAucGlwZSh0aGlzLl91bnN1YnNjcmliZXIudGFrZVVudGlsRGVzdHJveSlcbiAgICAgIC5waXBlKHN0YXJ0V2l0aCh1bmRlZmluZWQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuX3NldEhlaWdodHMoKTtcbiAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLl9iaW5kRXZlbnRzKCk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuX3JlbW92ZUV2ZW50cygpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfc2V0SGVpZ2h0cygpIHtcbiAgICB0aGlzLl9pdGVtSGVpZ2h0ID0gdGhpcy5fY2FsY0l0ZW1oZWlnaHQoKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IHZhbCA9XG4gICAgICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5jbGllbnRIZWlnaHQgLSB0aGlzLmdldEhvc3RFbGVtZW50KCkucXVlcnlTZWxlY3RvcignLmF4LWhlYWRlcicpLmNsaWVudEhlaWdodDtcbiAgICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1heC1jb250ZW50LWhlaWdodCcsIGAke3ZhbH1weGApO1xuICAgIH0sIDUwKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX2NhbGNJdGVtaGVpZ2h0KCk6IG51bWJlciB7XG4gICAgY29uc3QgcmVtID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBudWxsKS5nZXRQcm9wZXJ0eVZhbHVlKCctLWF4LXNpemUtZGVmYXVsdCcpO1xuICAgIHJldHVybiBBWERyYXdpbmdVdGlsLmNvbnZlcnRSZW1Ub1BpeGVscyhOdW1iZXIocmVtPy5yZXBsYWNlKCdyZW0nLCAnJykgPz8gMCkpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgcHJpdmF0ZSBfYmluZEV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9yZW1vdmVFdmVudHMoKTtcbiAgICAvL1xuICAgIHRoaXMuX2h0bWxDb2x1bW5zID0gQXJyYXkuZnJvbShcbiAgICAgIHRoaXMuZ2V0SG9zdEVsZW1lbnQoKS5xdWVyeVNlbGVjdG9yQWxsPEhUTUxEaXZFbGVtZW50PignLmF4LXBpY2tlci1jb2wgLmF4LWNvbnRlbnQnKSxcbiAgICApO1xuICAgIHRoaXMuX2NvbHVtbnMuZm9yRWFjaCgoYykgPT4ge1xuICAgICAgYy5vblZhbHVlQ2hhbmdlZC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLl9kZXRlY3RTZWxlY3RlZEl0ZW1zQnlWYWx1ZSgpO1xuICAgICAgfSk7XG4gICAgICBjLm9uT3B0aW9uQ2hhbmdlZC5waXBlKHRoaXMuX3Vuc3Vic2NyaWJlci50YWtlVW50aWxEZXN0cm95KS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5faHRtbENvbHVtbnMuZm9yRWFjaCgoY29sLCBpbmRleCkgPT4ge1xuICAgICAgY29sWydjb2x1bW4nXSA9IHRoaXMuX2NvbHVtbnMuZ2V0KGluZGV4KTtcbiAgICAgIGNvbC5hZGRFdmVudExpc3RlbmVyKCd3aGVlbCcsIHRoaXMuX2hhbmRsZU1vdXNlV2VlbC5iaW5kKHRoaXMpLCB7XG4gICAgICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICAvL1xuICAgICAgY29sLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLl9oYW5kbGVUb3VjaFN0YXJ0LmJpbmQodGhpcyksIHtcbiAgICAgICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIC8vY29sLmFkZEV2ZW50TGlzdGVuZXIoXCJtb3VzZWRvd25cIiwgdGhpcy5faGFuZGxlVG91Y2hTdGFydC5iaW5kKHRoaXMpLCB7IHBhc3NpdmU6IGZhbHNlIH0pO1xuICAgICAgLy9cbiAgICAgIGNvbC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCB0aGlzLl9oYW5kbGVUb3VjaE1vdmUuYmluZCh0aGlzKSwge1xuICAgICAgICBwYXNzaXZlOiBmYWxzZSxcbiAgICAgIH0pO1xuICAgICAgLy9jb2wuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgdGhpcy5faGFuZGxlVG91Y2hNb3ZlLmJpbmQodGhpcyksIHsgcGFzc2l2ZTogZmFsc2UgfSlcbiAgICAgIC8vXG4gICAgICBjb2wuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLl9oYW5kbGVUb3VjaEVuZC5iaW5kKHRoaXMpLCB7XG4gICAgICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgICAgfSk7XG4gICAgICAvL2NvbC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgdGhpcy5faGFuZGxlVG91Y2hNb3ZlLmJpbmQodGhpcyksIHsgcGFzc2l2ZTogZmFsc2UgfSlcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX3JlbW92ZUV2ZW50cygpOiB2b2lkIHtcbiAgICB0aGlzLl9odG1sQ29sdW1ucz8uZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICBjb2wucmVtb3ZlRXZlbnRMaXN0ZW5lcignd2hlZWwnLCB0aGlzLl9oYW5kbGVNb3VzZVdlZWwuYmluZCh0aGlzKSk7XG4gICAgICAvL1xuICAgICAgY29sLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNoc3RhcnQnLCB0aGlzLl9oYW5kbGVUb3VjaFN0YXJ0LmJpbmQodGhpcykpO1xuICAgICAgLy9jb2wucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1vdXNlZG93blwiLCB0aGlzLl9oYW5kbGVUb3VjaFN0YXJ0LmJpbmQodGhpcykpO1xuICAgICAgY29sLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHRoaXMuX2hhbmRsZVRvdWNoTW92ZS5iaW5kKHRoaXMpKTtcbiAgICAgIC8vY29sLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlbW92ZScsIHRoaXMuX2hhbmRsZVRvdWNoTW92ZS5iaW5kKHRoaXMpKTtcbiAgICAgIC8vXG4gICAgICBjb2wucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCB0aGlzLl9oYW5kbGVUb3VjaEVuZC5iaW5kKHRoaXMpKTtcbiAgICAgIC8vY29sLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCB0aGlzLl9oYW5kbGVUb3VjaEVuZC5iaW5kKHRoaXMpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIF9oYW5kbGVUb3VjaFN0YXJ0KGU6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5fY3VycmVudExpc3QgPSBlLmN1cnJlbnRUYXJnZXQgYXMgSFRNTERpdkVsZW1lbnQ7XG4gICAgdGhpcy5fcHJldmlvdXNZID0gZSBpbnN0YW5jZW9mIFRvdWNoRXZlbnQgPyBlLnRvdWNoZXNbMF0uY2xpZW50WSA6IGUuY2xpZW50WTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX2hhbmRsZVRvdWNoTW92ZShlOiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IHZvaWQge1xuICAgIHRoaXMuX2RyYWdnaW5nID0gdHJ1ZTtcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9jdXJyZW50TGlzdCAmJiB0aGlzLl9kcmFnZ2luZykge1xuICAgICAgICBjb25zdCBjbGllbnRZID0gZSBpbnN0YW5jZW9mIFRvdWNoRXZlbnQgPyBlLnRvdWNoZXNbMF0uY2xpZW50WSA6IGUuY2xpZW50WTtcbiAgICAgICAgY29uc3QgZGVsdGEgPSBjbGllbnRZIC0gdGhpcy5fcHJldmlvdXNZO1xuICAgICAgICB0aGlzLl9wcmV2aW91c1kgPSBjbGllbnRZO1xuICAgICAgICBpZiAoTWF0aC5hYnMoZGVsdGEpID4gMSkgdGhpcy5fbW92ZUJ5RGVsdGEodGhpcy5fY3VycmVudExpc3QsIC1kZWx0YSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9oYW5kbGVUb3VjaEVuZChlOiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCk6IHZvaWQge1xuICAgIC8vIHNpbXVsYXRlIGNsaWNrXG4gICAgY29uc3QgdGFyZ2V0ZWxlbWVudCA9IGUudGFyZ2V0IGFzIEhUTUxFbGVtZW50O1xuICAgIGlmICghdGhpcy5fZHJhZ2dpbmcgJiYgdGFyZ2V0ZWxlbWVudC50YWdOYW1lID09ICdMSScpIHtcbiAgICAgIHRhcmdldGVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG4gICAgdGhpcy5fZHJhZ2dpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX2hhbmRsZU1vdXNlV2VlbChlOiBXaGVlbEV2ZW50KTogdm9pZCB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgdGhpcy5fbW92ZUJ5RGVsdGEoZS5jdXJyZW50VGFyZ2V0IGFzIEhUTUxEaXZFbGVtZW50LCBlLmRlbHRhWSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcml2YXRlIF9tb3ZlQnlEZWx0YShjb2w6IEhUTUxEaXZFbGVtZW50LCBkZWx0YVk6IG51bWJlcikge1xuICAgIGNvbnN0IGNvbHVtbiA9IGNvbFsnY29sdW1uJ10gYXMgQVhQaWNrZXJDb2x1bW5EaXJlY3RpdmU7XG4gICAgaWYgKGNvbHVtbi5yZWFkb25seSB8fCBjb2x1bW4uZGlzYWJsZWQpIHJldHVybjtcbiAgICBsZXQgaW5kZXggPSBjb2x1bW4uaXRlbXMuaW5kZXhPZihjb2x1bW4udmFsdWUpO1xuICAgIGluZGV4ID0gZGVsdGFZIDwgMCA/IGluZGV4IC0gY29sdW1uLnN0ZXAgOiBpbmRleCArIGNvbHVtbi5zdGVwO1xuICAgIGlmIChpbmRleCA8IDApIGluZGV4ID0gMDtcbiAgICBpZiAoaW5kZXggPj0gY29sdW1uLml0ZW1zLmxlbmd0aCkgaW5kZXggPSBjb2x1bW4uaXRlbXMubGVuZ3RoIC0gMTtcbiAgICBjb2x1bW4uY29tbWl0VmFsdWUoY29sdW1uLml0ZW1zW2luZGV4XSwgdHJ1ZSk7XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwcm90ZWN0ZWQgX2hhbmRsZUl0ZW1DbGljayhjb2x1bW46IEFYUGlja2VyQ29sdW1uRGlyZWN0aXZlLCBpdGVtOiBhbnkpIHtcbiAgICBpZiAoY29sdW1uLnJlYWRvbmx5IHx8IGNvbHVtbi5kaXNhYmxlZCkgcmV0dXJuO1xuICAgIGNvbHVtbi5jb21taXRWYWx1ZShpdGVtLCB0cnVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHByaXZhdGUgX2RldGVjdFNlbGVjdGVkSXRlbXNCeVZhbHVlKCk6IHZvaWQge1xuICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5faHRtbENvbHVtbnMuZm9yRWFjaCgoY29sKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IGNvbFsnY29sdW1uJ10gYXMgQVhQaWNrZXJDb2x1bW5EaXJlY3RpdmU7XG4gICAgICAgIGNvbnN0IGluZGV4ID0gY29sdW1uLml0ZW1zLmluZGV4T2YoY29sdW1uLnZhbHVlKTtcbiAgICAgICAgY29sLnF1ZXJ5U2VsZWN0b3IoJ3VsJykuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZVkoJHstaW5kZXggKiB0aGlzLl9pdGVtSGVpZ2h0fXB4KWA7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVmcmVzaGVzIHRoZSBjb21wb25lbnQgYnkgc2V0dGluZyBoZWlnaHRzIGFuZCBkZXRlY3Rpbmcgc2VsZWN0ZWQgaXRlbXMgYnkgdmFsdWUuXG4gICAqL1xuICBwdWJsaWMgcmVmcmVzaCgpIHtcbiAgICB0aGlzLl9zZXRIZWlnaHRzKCk7XG4gICAgdGhpcy5fZGV0ZWN0U2VsZWN0ZWRJdGVtc0J5VmFsdWUoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImF4LWhlYWRlclwiPlxuICBAZm9yIChjb2wgb2YgX2NvbHVtbnM7IHRyYWNrICRpbmRleCkge1xuICAgIDxkaXYgY2xhc3M9XCJheC1waWNrZXItY29sXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtaGVhZGVyXCI+XG4gICAgICAgIHt7IGNvbC50aXRsZSB9fVxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIH1cbjwvZGl2PlxuPGRpdiBjbGFzcz1cImF4LWNvbnRlbnRcIj5cbiAgPGRpdiBjbGFzcz1cImF4LXBpY2tlci13aW5kb3dcIj48L2Rpdj5cbiAgQGZvciAoY29sIG9mIF9jb2x1bW5zOyB0cmFjayAkaW5kZXgpIHtcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImF4LXBpY2tlci1jb2xcIlxuICAgICAgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImNvbC5kaXNhYmxlZFwiXG4gICAgICBbY2xhc3MuYXgtc3RhdGUtcmVhZG9ubHldPVwiY29sLnJlYWRvbmx5XCJcbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udGVudFwiPlxuICAgICAgICA8dWw+XG4gICAgICAgICAgQGZvciAoaXRlbSBvZiBjb2wuaXRlbXM7IHRyYWNrICRpbmRleCkge1xuICAgICAgICAgICAgPGxpXG4gICAgICAgICAgICAgIChjbGljayk9XCJfaGFuZGxlSXRlbUNsaWNrKGNvbCwgaXRlbSlcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtYWN0aXZlXT1cImNvbC52YWx1ZSAmJiBjb2wudmFsdWVbY29sLnZhbHVlRmllbGRdID09PSBpdGVtW2NvbC52YWx1ZUZpZWxkXVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJjb2wuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtcmVhZG9ubHldPVwiY29sLnJlYWRvbmx5XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaXRlbVtjb2wudGV4dEZpZWxkXSB9fVxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICB9XG4gICAgICAgIDwvdWw+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9kaXY+XG4iXX0=
|
@@ -641,4 +641,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
641
641
|
type: HostBinding,
|
642
642
|
args: ['class']
|
643
643
|
}] } });
|
644
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2xpYi9yYW5nZS1zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3JhbmdlLXNsaWRlci9zcmMvbGliL3JhbmdlLXNsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsbUJBQW1CLEVBQ25CLGdCQUFnQixHQUNqQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFRbkM7Ozs7Ozs7R0FPRztBQWlCSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsT0FBTyxDQUFDLENBQUEsZ0JBQW9DLENBQUEsQ0FBQztJQXNRdkY7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQXRRRixTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCOzs7O1dBSUc7UUFDSCxnQkFBVyxHQUFHLEtBQUssQ0FBZ0IsWUFBWSxDQUFDLENBQUM7UUFFakQ7Ozs7V0FJRztRQUNILFVBQUssR0FBRyxLQUFLLENBQW1CLFNBQVMsQ0FBQyxDQUFDO1FBRTNDOzs7V0FHRztRQUNILFdBQU0sR0FBRyxLQUFLLENBQXFCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQzs7OztX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VUFBVSxFQUFFLFVBQVUsQ0FBQyxpQkFDakIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUNyRTs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0RBZ2lCRCxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTBEckIsV0FBVztzQkFEdEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhPcmllbnRhdGlvbixcbiAgQVhTdHlsZUNvbG9yVHlwZSxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBOZ1pvbmUsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQge1xuICBBWFJhbmdlU2xpZGVyTW9kZSxcbiAgQVhSYW5nZVNsaWRlclNuYXBNb2RlLFxuICBBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGUsXG4gIEFYUmFuZ2VTbGlkZXJWYWx1ZSxcbn0gZnJvbSAnLi9yYW5nZS1zbGlkZXIuY2xhc3MnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogQSByYW5nZSBzbGlkZXIgZm9yIHNlbGVjdGluZyBhIHJhbmdlIG9mIHZhbHVlcywgc3VwcG9ydGluZyBib3RoIHNpbmdsZSBhbmQgZHVhbCBtb2Rlcy5cbiAqIFRoZSBzbGlkZXIgb2ZmZXJzIHN0ZXAsIHNuYXAsIGFuZCB0b29sdGlwIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8YXgtcmFuZ2Utc2xpZGVyIFttaW5dPVwiMFwiIFttYXhdPVwiMTAwXCIgW3N0ZXBdPVwiMVwiIFttb2RlXT1cIidkdWFsJ1wiPjwvYXgtcmFuZ2Utc2xpZGVyPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1yYW5nZS1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkb25seSddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhSYW5nZVNsaWRlckNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhSYW5nZVNsaWRlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJhbmdlU2xpZGVyQ29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhNWFZhbHVlQ29tcG9uZW50PEFYUmFuZ2VTbGlkZXJWYWx1ZT4pIHtcbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIHNsaWRlciwgZWl0aGVyICdob3Jpem9udGFsJyBvciAndmVydGljYWwnLlxuICAgKiBAZGVmYXVsdCAnaG9yaXpvbnRhbCdcbiAgICovXG4gIG9yaWVudGF0aW9uID0gaW5wdXQ8QVhPcmllbnRhdGlvbj4oJ2hvcml6b250YWwnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENvbG9yIHRoZW1lIGZvciB0aGUgc2xpZGVyLCBhZmZlY3RpbmcgaGlnaGxpZ2h0LCB0b29sdGlwLCBhbmQgaGFuZGxlci5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICBjb2xvciA9IGlucHV0PEFYU3R5bGVDb2xvclR5cGU+KCdwcmltYXJ5Jyk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgdmFsdWUocykgb2YgdGhlIHNsaWRlci4gQ2FuIGJlIGEgc2luZ2xlIG51bWJlciBmb3Igc2luZ2xlIG1vZGUgb3IgYW4gYXJyYXkgb2YgdHdvIG51bWJlcnMgZm9yIGR1YWwgbW9kZS5cbiAgICovXG4gIHZhbHVlcyA9IG1vZGVsPEFYUmFuZ2VTbGlkZXJWYWx1ZT4odGhpcy52YWx1ZSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbW9kZSBvZiB0aGUgc2xpZGVyLCBlaXRoZXIgJ3NpbmdsZScgb3IgJ2R1YWwnLlxuICAgKiBAZGVmYXVsdCAnc2luZ2xlJ1xuICAgKi9cbiAgbW9kZSA9IGlucHV0PEFYUmFuZ2VTbGlkZXJNb2RlPignc2luZ2xlJyk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBtaW4gPSBpbnB1dDxudW1iZXI+KDApO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHNsaWRlci5cbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICBtYXggPSBpbnB1dDxudW1iZXI+KDEwMCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgc3RlcCBpbmNyZW1lbnQgZm9yIHZhbHVlIGNoYW5nZXMuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHN0ZXAgPSBpbnB1dDxudW1iZXI+KDEpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIHNuYXBwaW5nIGluY3JlbWVudCBmb3IgdGhlIHNsaWRlci5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgc25hcCA9IGlucHV0PG51bWJlcj4oMSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBNb2RlIGZvciBkaXNwbGF5aW5nIHRvb2x0aXBzLCBjYW4gYmUgYXQgdGhlIHN0YXJ0LCBlbmQsIG9yIGJvdGguXG4gICAqIEBkZWZhdWx0ICdlbmQnXG4gICAqL1xuICB0b29sdGlwTW9kZSA9IGlucHV0PEFYUmFuZ2VTbGlkZXJUb29sdGlwTW9kZT4oJ2VuZCcpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTW9kZSBmb3Igc25hcHBpbmcsIGNhbiBzbmFwIGF0IHRoZSBzdGFydCwgZW5kLCBvciBib3RoLlxuICAgKiBAZGVmYXVsdCAnc3RhcnQnXG4gICAqL1xuICBzbmFwTW9kZSA9IGlucHV0PEFYUmFuZ2VTbGlkZXJTbmFwTW9kZT4oJ3N0YXJ0Jyk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGV0aGVyIHRoZSBzbGlkZXIgc2hvdWxkIGhhdmUgc3RlcHMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGhhc1N0ZXAgPSBpbnB1dCh0cnVlKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgZGlzcGxheSBzbmFwcGluZy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGhhc1NuYXAgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGV0aGVyIHRoZSBzbGlkZXIgc2hvdWxkIGRpc3BsYXkgbGFiZWxzIGZvciBzbmFwcGluZyBwb2ludHMuXG4gICAqIEBkZWZhdWx0IFZhbHVlIGRlcml2ZWQgZnJvbSBgaGFzU25hcCgpYFxuICAgKi9cbiAgaGFzTGFibGUgPSBpbnB1dCh0aGlzLmhhc1NuYXAoKSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGV0aGVyIHRoZSBzbGlkZXIgc2hvdWxkIGRpc3BsYXkgdG9vbHRpcHMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoYXNUb29sdGlwID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBoZWlnaHQgPSAwLjI1O1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmV3SGVpZ2h0ID0gJ3ZhcigtLWF4LXJhbmdlLXNsaWRlci1iYXNlLXRoaWNrbmVzcyknO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmFuZ2UgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heCgpIC0gdGhpcy5taW4oKSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0hvcml6b250YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJyk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0R1YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvcnJlY3RNaW5NYXggPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heCgpIC0gdGhpcy5taW4oKSA+IDApO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlU25hcEJhciA9IGNvbXB1dGVkPG51bWJlcltdIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICh0aGlzLmhhc1NuYXAoKSkge1xuICAgICAgaWYgKHRoaXMuc25hcCgpIDw9IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignV3JvbmcgU25hcCEnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBsZXQgYXJyYXkgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSB0aGlzLm1pbigpOyBpIDwgdGhpcy5tYXgoKTsgaSArPSB0aGlzLnNuYXAoKSkge1xuICAgICAgICBhcnJheS5wdXNoKGkpO1xuICAgICAgfVxuICAgICAgYXJyYXkgPSBbLi4uYXJyYXksIHRoaXMubWF4KCldO1xuICAgICAgaWYgKGFycmF5WzBdIDwgMCkge1xuICAgICAgICBhcnJheSA9IGFycmF5Lm1hcCgoaSkgPT4gaSArIC1hcnJheVswXSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgfVxuICAgICAgaWYgKGFycmF5WzBdID4gMCkge1xuICAgICAgICBhcnJheSA9IGFycmF5Lm1hcCgoaSkgPT4gaSAtIGFycmF5WzBdKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVQb3MgPSBjb21wdXRlZDxBWFJhbmdlU2xpZGVyVmFsdWU+KCgpID0+IHtcbiAgICBpZiAodGhpcy5pc0R1YWwoKSAmJiB0aGlzLnZhbHVlcygpKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAoKHRoaXMudmFsdWVzKClbMF0gLSB0aGlzLm1pbigpKSAvIHRoaXMucmFuZ2UoKSkgKiAxMDAsXG4gICAgICAgICgodGhpcy52YWx1ZXMoKVsxXSAtIHRoaXMubWluKCkpIC8gdGhpcy5yYW5nZSgpKSAqIDEwMCxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgLSB0aGlzLm1pbigpKSAvIHRoaXMucmFuZ2UoKSkgKiAxMDA7XG4gICAgfVxuICB9KTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2hvb3NlbkhhbmRsZXI6ICdmaXJzdCcgfCAnc2Vjb25kJyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgc2xpZGVyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlU2xpZGVySGlnaGxpZ2h0ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzSG9yaXpvbnRhbCgpXG4gICAgICA/IHtcbiAgICAgICAgICBsZWZ0OiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICcwJScsXG4gICAgICAgICAgd2lkdGg6IHRoaXMuaXNEdWFsKClcbiAgICAgICAgICAgID8gdGhpcy5jYWxjdWxhdGVQb3MoKVsxXSAtIHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJSdcbiAgICAgICAgICAgIDogdGhpcy5jYWxjdWxhdGVQb3MoKSArICclJyxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmlzRHVhbCgpXG4gICAgICAgICAgICA/IHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gLSB0aGlzLmNhbGN1bGF0ZVBvcygpWzBdICsgJyUnXG4gICAgICAgICAgICA6IHRoaXMuY2FsY3VsYXRlUG9zKCkgKyAnJScsXG4gICAgICAgICAgYm90dG9tOiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICcwJScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlckhhbmRsZXIxID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzSG9yaXpvbnRhbCgpXG4gICAgICA/IHtcbiAgICAgICAgICBsZWZ0OiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICh0aGlzLmNhbGN1bGF0ZVBvcygpIGFzIG51bWJlcikgKyAnJScsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGJvdHRvbTogdGhpcy5pc0R1YWwoKVxuICAgICAgICAgICAgPyAnY2FsYygnICsgdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclIC0gJyArIDYgKiB0aGlzLmhlaWdodCArICdyZW0pJ1xuICAgICAgICAgICAgOiAnY2FsYygnICsgdGhpcy5jYWxjdWxhdGVQb3MoKSArICclIC0gJyArIDYgKiB0aGlzLmhlaWdodCArICdyZW0pJyxcbiAgICAgICAgfSxcbiAgKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlU2xpZGVySGFuZGxlcjIgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNIb3Jpem9udGFsKClcbiAgICAgID8ge1xuICAgICAgICAgIGxlZnQ6IHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gKyAnJScsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGJvdHRvbTogJ2NhbGMoJyArIHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gKyAnJSAtICcgKyA2ICogdGhpcy5oZWlnaHQgKyAncmVtKScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlclN0ZXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogJzAnLCBoZWlnaHQ6IDggKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nLCBoZWlnaHQ6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAtMiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIGhlaWdodDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoICh0aGlzLnNuYXBNb2RlKCkpIHtcbiAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAnMCcsIHdpZHRoOiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIHdpZHRoOiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgIHJldHVybiB7IGxlZnQ6IC0yICogdGhpcy5oZWlnaHQgKyAncmVtJywgd2lkdGg6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogNiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IC02ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc25hcE1vZGUoKSkge1xuICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiAtOCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCkpKTtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvcnJlY3RNaW5NYXgoKSkge1xuICAgICAgICAgIHRoaXMuZml4SW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgICAgICAgIHRoaXMuZml4Q2hhbmdpbmdNb2RlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgTWluID0gJHt0aGlzLm1pbigpfSBBbmQgTWF4ID0gJHt0aGlzLm1heCgpfSBpcyBub3QgY29ycmVjdCBpbnB1dHMuYCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZT8udmFsdWUgIT0gdW5kZWZpbmVkICYmIHZhbHVlPy52YWx1ZSAhPSBudWxsICYmIHRoaXMudmFsdWVzKCkgIT09IHZhbHVlLnZhbHVlKVxuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUudmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvLyh3aW5kb3cgYXMgYW55KS5yYW5nZVNsaWRlciA9IHRoaXM7IC8vZm9yIGRlYnVnZ2luZyBwdXJwb3NlIG9ubHlcbiAgICBpZiAoIXRoaXMuY29ycmVjdE1pbk1heCgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNaW4gPSAke3RoaXMubWluKCl9IEFuZCBNYXggPSAke3RoaXMubWF4KCl9IGlzIG5vdCBjb3JyZWN0IGlucHV0cy5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVzKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25TdGFydEhhbmRsZXIoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCBjaXJjbGU6ICdmaXJzdCcgfCAnc2Vjb25kJyk6IHZvaWQge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5IHx8ICF0aGlzLmNvcnJlY3RNaW5NYXgoKSkgcmV0dXJuO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2xpZGVyRWxlbWVudCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5heC1yYW5nZS1zbGlkZXInKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICh0aGlzLnNsaWRlckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jaG9vc2VuSGFuZGxlciA9IGNpcmNsZTtcbiAgICAgICAgY29uc3QgbW92ZUxpc3RlbmVyID0gKG1vdmVFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHRoaXMub25Nb3ZlKG1vdmVFdmVudCwgY2lyY2xlKTtcbiAgICAgICAgY29uc3QgZW5kTGlzdGVuZXIgPSAoKSA9PiB0aGlzLm9uRW5kKG1vdmVMaXN0ZW5lciwgZW5kTGlzdGVuZXIpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBlbmRMaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBtb3ZlTGlzdGVuZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZW5kTGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25TdGFydEJhcihldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBsZXQgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcgPSAnZmlyc3QnO1xuICAgIHRoaXMuc2xpZGVyRWxlbWVudCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5heC1yYW5nZS1zbGlkZXInKSBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnNsaWRlckVsZW1lbnQgfHwgdGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jb3JyZWN0TWluTWF4KCkpIHJldHVybjtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZVBlcmNlbnQgPSB0aGlzLmNhbGN1bGF0ZVBlcmNlbnRPbk1vdmUoZXZlbnQpO1xuICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21QZXJjZW50KGNhbGN1bGF0ZVBlcmNlbnQpO1xuICAgICAgdmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdCh2YWx1ZS50b0ZpeGVkKDIpKTtcbiAgICAgIGlmICh0aGlzLmhhc1N0ZXAoKSkge1xuICAgICAgICB2YWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNEdWFsKCkpIHtcbiAgICAgICAgaWYgKHZhbHVlID49ICh0aGlzLnZhbHVlcygpWzFdIC0gdGhpcy52YWx1ZXMoKVswXSkgLyAyKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLnZhbHVlcygpWzBdLCB2YWx1ZV0pO1xuICAgICAgICAgIGNpcmNsZSA9ICdzZWNvbmQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdmFsdWUsIHRoaXMudmFsdWVzKClbMV1dKTtcbiAgICAgICAgICBjaXJjbGUgPSAnZmlyc3QnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMub25TdGFydEhhbmRsZXIoZXZlbnQsIGNpcmNsZSk7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvbk1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCBjaXJjbGU6ICdmaXJzdCcgfCAnc2Vjb25kJyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zbGlkZXJFbGVtZW50KSByZXR1cm47XG4gICAgY29uc3QgY2FsY3VsYXRlUGVyY2VudCA9IHRoaXMuY2FsY3VsYXRlUGVyY2VudE9uTW92ZShldmVudCk7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21QZXJjZW50KGNhbGN1bGF0ZVBlcmNlbnQpO1xuICAgIHZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUudG9GaXhlZCgyKSk7XG4gICAgaWYgKHRoaXMuaGFzU3RlcCgpKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgaWYgKGNpcmNsZSA9PT0gJ2ZpcnN0JyAmJiB2YWx1ZSA8PSB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKHZhbHVlLCAnZmlyc3QnLCB0aGlzLnZhbHVlcygpWzFdKSAmJiB0aGlzLnZhbHVlcygpWzBdICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdmFsdWUsIHRoaXMudmFsdWVzKClbMV1dKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaXJjbGUgPT09ICdzZWNvbmQnICYmIHZhbHVlID49IHRoaXMudmFsdWVzKClbMF0gJiYgdGhpcy52YWx1ZXMoKVsxXSAhPT0gdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZXModmFsdWUsICdzZWNvbmQnLCB0aGlzLnZhbHVlcygpWzBdKSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgdmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jaGVja1ZhbHVlKHZhbHVlKSAmJiB0aGlzLnZhbHVlcygpICE9PSB2YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uRW5kKG1vdmVMaXN0ZW5lcjogKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZCwgZW5kTGlzdGVuZXI6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGVuZExpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBlbmRMaXN0ZW5lcik7XG4gICAgdGhpcy5zbGlkZXJFbGVtZW50ID0gbnVsbDtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplVmFsdWVzKCkge1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVVuZGVmaW5lZCgpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVN0ZXAoKTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaXhJbml0aWFsaXplVW5kZWZpbmVkKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy5taW4oKSwgdGhpcy5tYXgoKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaXhJbml0aWFsaXplVmFsdWVzKCkge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpICYmIHRoaXMudmFsdWVzKClbMF0gPiB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMV0sIHRoaXMudmFsdWVzKClbMF1dKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlcygpID09PSAnbnVtYmVyJyAmJiAhdGhpcy5jaGVja1ZhbHVlKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0eXBlb2YgdGhpcy52YWx1ZXMoKSAhPT0gJ251bWJlcicgJiZcbiAgICAgICF0aGlzLmNoZWNrVmFsdWVzKHRoaXMudmFsdWVzKClbMF0sICdmaXJzdCcsIHRoaXMudmFsdWVzKClbMV0pXG4gICAgKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMubWluKCksIHRoaXMubWF4KCldKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4SW5pdGlhbGl6ZVN0ZXAoKSB7XG4gICAgaWYgKHRoaXMuc3RlcCgpICE9PSAxKSB7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW3RoaXMucm91bmRUb1N0ZXAob2xkWzBdKSwgdGhpcy5yb3VuZFRvU3RlcChvbGRbMV0pXSk7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlcygpWzBdID09PSB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFt0aGlzLnJvdW5kVG9TdGVwKG9sZFswXSksIHRoaXMucm91bmRUb1N0ZXAob2xkWzFdKSArIHRoaXMuc3RlcCgpXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLnJvdW5kVG9TdGVwKG9sZCBhcyBudW1iZXIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4Q2hhbmdpbmdNb2RlKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ251bWJlcicgJiYgdGhpcy5pc0R1YWwoKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLm1pbigpLCB0aGlzLm1heCgpXSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSAhPT0gJ251bWJlcicgJiYgIXRoaXMuaXNEdWFsKCkpIHtcbiAgICAgIHRoaXMudmFsdWVzLnNldCh0aGlzLm1pbigpKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlUGVyY2VudE9uTW92ZShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IHNsaWRlclJlY3QgPSB0aGlzLnNsaWRlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgbGV0IHBlcmNlbnQ6IG51bWJlcjtcbiAgICBpZiAodGhpcy5pc0hvcml6b250YWwoKSkge1xuICAgICAgY29uc3QgY2xpZW50WCA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFggOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRYO1xuICAgICAgY29uc3QgeCA9IGNsaWVudFggLSBzbGlkZXJSZWN0LmxlZnQ7XG4gICAgICBwZXJjZW50ID0gKHggLyBzbGlkZXJSZWN0LndpZHRoKSAqIDEwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xpZW50WSA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFkgOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRZO1xuICAgICAgY29uc3QgeSA9IC0oY2xpZW50WSAtIHNsaWRlclJlY3QuYm90dG9tKTsgLy9yZXZlcmNlIHNsaWRlciBmcm9tIGJvdHRvbSB0byB0b3BcbiAgICAgIHBlcmNlbnQgPSAoeSAvIHNsaWRlclJlY3QuaGVpZ2h0KSAqIDEwMDtcbiAgICB9XG4gICAgaWYgKHBlcmNlbnQgPCAwKSB7XG4gICAgICBwZXJjZW50ID0gMDtcbiAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxMDApIHtcbiAgICAgIHBlcmNlbnQgPSAxMDA7XG4gICAgfVxuICAgIHJldHVybiBwZXJjZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcm91bmRUb1N0ZXAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbG93ZXIgPSBNYXRoLm1heChcbiAgICAgIHRoaXMubWluKCksXG4gICAgICBNYXRoLmZsb29yKCh2YWx1ZSAtIHRoaXMubWluKCkpIC8gdGhpcy5zdGVwKCkpICogdGhpcy5zdGVwKCkgKyB0aGlzLm1pbigpLFxuICAgICk7XG4gICAgY29uc3QgdXBwZXIgPSBNYXRoLm1pbih0aGlzLm1heCgpLCBsb3dlciArIHRoaXMuc3RlcCgpKTtcbiAgICBpZiAodmFsdWUgLSBsb3dlciA8IHVwcGVyIC0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBsb3dlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVwcGVyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrVmFsdWUoeDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHggPj0gdGhpcy5taW4oKSAmJiB4IDw9IHRoaXMubWF4KCkpIHJldHVybiB0cnVlO1xuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrVmFsdWVzKHZhbHVlMTogbnVtYmVyLCB5OiAnZmlyc3QnIHwgJ3NlY29uZCcsIHZhbHVlMjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlMSA+PSB0aGlzLm1pbigpICYmIHZhbHVlMSA8PSB0aGlzLm1heCgpKSB7XG4gICAgICBpZiAoeSA9PT0gJ2ZpcnN0Jykge1xuICAgICAgICBpZiAodmFsdWUxIDw9IHZhbHVlMiAmJiB2YWx1ZTIgPD0gdGhpcy5tYXgoKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbHVlMSA+PSB2YWx1ZTIgJiYgdmFsdWUyID49IHRoaXMubWluKCkpIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsdWVGcm9tUGVyY2VudCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMubWluKCkgKyAodmFsdWUgKiAodGhpcy5tYXgoKSAtIHRoaXMubWluKCkpKSAvIDEwMDtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFBlcmNhbnRhZ2UodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucmFuZ2UoKSAhPT0gMCA/ICh2YWx1ZSAvIHRoaXMucmFuZ2UoKSkgKiAxMDAgOiAwO1xuICB9XG4gIC8qKlxuICAgKiBJbmNyZWFzZSBhIHN0ZXAgdG8gdmFsdWUgaWYgc2xpZGVyIGluIHNpbmdsZSBtb2RlXG4gICAqIGFuZCBpbmNyZWFzZSBhIHN0ZXAgdGhlIHNlY29uZCB2YWx1ZSBpZiBzbGlkZXIgaW4gZHVhbCBtb2RlXG4gICAqIEBtZXRob2QgaW5jcmVhc2VTdGVwXG4gICAqL1xuICBwdWJsaWMgaW5jcmVhc2VTdGVwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodGhpcy52YWx1ZXMoKVsxXSArIHRoaXMuc3RlcCgpKTtcbiAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgbmV3VmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQobmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogRGVjcmVhc2UgYSBzdGVwIHRvIHZhbHVlIGlmIHNsaWRlciBpbiBzaW5nbGUgbW9kZVxuICAgKiBhbmQgZGVjcmVhc2UgYSBzdGVwIHRoZSBzZWNvbmQgdmFsdWUgaWYgc2xpZGVyIGluIGR1YWwgbW9kZVxuICAgKiBAbWV0aG9kIGRlY3JlYXNlU3RlcFxuICAgKi9cbiAgcHVibGljIGRlY3JlYXNlU3RlcCgpIHtcbiAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKHRoaXMudmFsdWVzKClbMF0gLSB0aGlzLnN0ZXAoKSk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW25ld1ZhbHVlLCB0aGlzLnZhbHVlcygpWzFdXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpO1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3doZWVsJywgWyckZXZlbnQnXSlcbiAgb25XaGVlbChldmVudDogV2hlZWxFdmVudCkge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKCF0aGlzLmNob29zZW5IYW5kbGVyIHx8IHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jb3JyZWN0TWluTWF4KCkpIHJldHVybjtcbiAgICAgIGxldCBuZXdWYWx1ZTtcbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIGlmIChldmVudC5kZWx0YVkgPCAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hvb3NlbkhhbmRsZXIgPT09ICdmaXJzdCcpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKVswXSBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzFdKSAmJlxuICAgICAgICAgICAgICB0aGlzLnZhbHVlcygpWzBdICE9PSBuZXdWYWx1ZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbdGhpcy5yb3VuZFRvU3RlcCgob2xkWzBdIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSksIG9sZFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKClbMV0gYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSA8PSB0aGlzLm1heCgpICYmIHRoaXMudmFsdWVzKClbMV0gIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbb2xkWzBdLCB0aGlzLnJvdW5kVG9TdGVwKChvbGRbMV0gYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5jaG9vc2VuSGFuZGxlciA9PT0gJ2ZpcnN0Jykge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpWzBdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tWYWx1ZXMobmV3VmFsdWUsIHRoaXMuY2hvb3NlbkhhbmRsZXIsIHRoaXMudmFsdWVzKClbMV0pICYmXG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzKCkgIT09IG5ld1ZhbHVlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFt0aGlzLnJvdW5kVG9TdGVwKChvbGRbMF0gYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKSwgb2xkWzFdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKVsxXSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzBdKSAmJlxuICAgICAgICAgICAgICB0aGlzLnZhbHVlcygpWzFdICE9PSBuZXdWYWx1ZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbb2xkWzBdLCB0aGlzLnJvdW5kVG9TdGVwKChvbGRbMV0gYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGV2ZW50LmRlbHRhWSA8IDApIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGVja1ZhbHVlKHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLnJvdW5kVG9TdGVwKChvbGQgYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWUodGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IHRoaXMucm91bmRUb1N0ZXAoKG9sZCBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByaXZhdGUgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgYGF4LSR7dGhpcy5jb2xvcigpfS1zb2xpZGAsXG4gICAgICBgJHt0aGlzLmRpc2FibGVkID8gJ2F4LXN0YXRlLWRpc2FibGVkJyA6ICcnfWAsXG4gICAgICBgJHt0aGlzLnJlYWRvbmx5ID8gJ2F4LXN0YXRlLXJlYWRvbmx5JyA6ICcnfWAsXG4gICAgXTtcbiAgfVxufVxuIiwiQGlmIChjb3JyZWN0TWluTWF4KCkpIHtcbiAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlclwiIFtjbGFzc109XCInYXgtb3JpZW50YXRpb24tJyArIG9yaWVudGF0aW9uKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWJhclwiIChtb3VzZWRvd24pPVwib25TdGFydEJhcigkZXZlbnQpXCIgKHRvdWNoc3RhcnQpPVwib25TdGFydEJhcigkZXZlbnQpXCI+PC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItaGlnaGxpZ2h0XCJcbiAgICAgIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJIaWdobGlnaHQoKVwiXG4gICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiXG4gICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgID48L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWhhbmRsZXJcIlxuICAgICAgW25nU3R5bGVdPVwiQVhSYW5nZVNsaWRlckhhbmRsZXIxKClcIlxuICAgICAgbmFtZT1cImZpcnN0XCJcbiAgICAgIChtb3VzZWRvd24pPVwib25TdGFydEhhbmRsZXIoJGV2ZW50LCAnZmlyc3QnKVwiXG4gICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0SGFuZGxlcigkZXZlbnQsICdmaXJzdCcpXCJcbiAgICA+XG4gICAgICBAaWYgKGhhc1Rvb2x0aXAoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLXRvb2x0aXBcIj57eyBpc0R1YWwoKSA/IHZhbHVlcygpWzBdIDogdmFsdWVzKCkgfX08L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoaXNEdWFsKCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItaGFuZGxlclwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJIYW5kbGVyMigpXCJcbiAgICAgICAgbmFtZT1cInNlY29uZFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25TdGFydEhhbmRsZXIoJGV2ZW50LCAnc2Vjb25kJylcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0SGFuZGxlcigkZXZlbnQsICdzZWNvbmQnKVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoaGFzVG9vbHRpcCgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci10b29sdGlwXCI+e3sgdmFsdWVzKClbMV0gfX08L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoaGFzU25hcCgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLXN0ZXBcIiBbbmdTdHlsZV09XCJBWFJhbmdlU2xpZGVyU3RlcCgpXCI+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgY2FsY3VsYXRlU25hcEJhcigpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1zdGVwc1wiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgaXNIb3Jpem9udGFsKCkgPyB7IGxlZnQ6IGdldFBlcmNhbnRhZ2UoaXRlbSkgKyAnJScgfSA6IHsgYm90dG9tOiBnZXRQZXJjYW50YWdlKGl0ZW0pICsgJyUnIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChoYXNMYWJsZSgpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItbGFiZWxcIiBbbmdTdHlsZV09XCJBWFJhbmdlTGFiZWwoKVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0gKyBtaW4oKSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==
|
644
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9yYW5nZS1zbGlkZXIvc3JjL2xpYi9yYW5nZS1zbGlkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3JhbmdlLXNsaWRlci9zcmMvbGliL3JhbmdlLXNsaWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsbUJBQW1CLEVBQ25CLGdCQUFnQixHQUNqQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsU0FBUyxFQUNULFdBQVcsRUFDWCxZQUFZLEVBQ1osTUFBTSxFQUNOLGlCQUFpQixFQUNqQixRQUFRLEVBQ1IsTUFBTSxFQUNOLFVBQVUsRUFDVixNQUFNLEVBQ04sS0FBSyxFQUNMLEtBQUssR0FDTixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sVUFBVSxDQUFDOzs7QUFRbkM7Ozs7Ozs7R0FPRztBQWlCSCxNQUFNLE9BQU8sc0JBQXVCLFNBQVEsT0FBTyxDQUFDLENBQUEsZ0JBQW9DLENBQUEsQ0FBQztJQXNRdkY7UUFDRSxLQUFLLEVBQUUsQ0FBQztRQXRRRixTQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTlCOzs7O1dBSUc7UUFDSCxnQkFBVyxHQUFHLEtBQUssQ0FBZ0IsWUFBWSxDQUFDLENBQUM7UUFFakQ7Ozs7V0FJRztRQUNILFVBQUssR0FBRyxLQUFLLENBQXFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdEOzs7V0FHRztRQUNILFdBQU0sR0FBRyxLQUFLLENBQXFCLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUUvQzs7OztX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VUFBVSxFQUFFLFVBQVUsQ0FBQyxpQkFDakIsaUJBQWlCLENBQUMsSUFBSSxtQkFDcEIsdUJBQXVCLENBQUMsTUFBTSxhQUNwQzt3QkFDVCxFQUFFLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxXQUFXLHdCQUF3QixFQUFFO3dCQUNyRTs0QkFDRSxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSx1QkFBdUIsQ0FBQzs0QkFDckQsS0FBSyxFQUFFLElBQUk7eUJBQ1o7cUJBQ0Y7d0RBZ2lCRCxPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQTBEckIsV0FBVztzQkFEdEIsV0FBVzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVhPcmllbnRhdGlvbixcbiAgQVhTdHlsZUNvbG9yVHlwZSxcbiAgQVhWYWx1YWJsZUNvbXBvbmVudCxcbiAgTVhWYWx1ZUNvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSG9zdExpc3RlbmVyLFxuICBOZ1pvbmUsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBjb21wdXRlZCxcbiAgZWZmZWN0LFxuICBmb3J3YXJkUmVmLFxuICBpbmplY3QsXG4gIGlucHV0LFxuICBtb2RlbCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsYXNzZXMgfSBmcm9tICdwb2x5dHlwZSc7XG5pbXBvcnQge1xuICBBWFJhbmdlU2xpZGVyTW9kZSxcbiAgQVhSYW5nZVNsaWRlclNuYXBNb2RlLFxuICBBWFJhbmdlU2xpZGVyVG9vbHRpcE1vZGUsXG4gIEFYUmFuZ2VTbGlkZXJWYWx1ZSxcbn0gZnJvbSAnLi9yYW5nZS1zbGlkZXIuY2xhc3MnO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvblxuICogQSByYW5nZSBzbGlkZXIgZm9yIHNlbGVjdGluZyBhIHJhbmdlIG9mIHZhbHVlcywgc3VwcG9ydGluZyBib3RoIHNpbmdsZSBhbmQgZHVhbCBtb2Rlcy5cbiAqIFRoZSBzbGlkZXIgb2ZmZXJzIHN0ZXAsIHNuYXAsIGFuZCB0b29sdGlwIGNvbmZpZ3VyYXRpb25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8YXgtcmFuZ2Utc2xpZGVyIFttaW5dPVwiMFwiIFttYXhdPVwiMTAwXCIgW3N0ZXBdPVwiMVwiIFttb2RlXT1cIidkdWFsJ1wiPjwvYXgtcmFuZ2Utc2xpZGVyPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1yYW5nZS1zbGlkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vcmFuZ2Utc2xpZGVyLmNvbXBvbmVudC5zY3NzJ10sXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkb25seSddLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhSYW5nZVNsaWRlckNvbXBvbmVudCB9LFxuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQVhSYW5nZVNsaWRlckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBBWFJhbmdlU2xpZGVyQ29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhNWFZhbHVlQ29tcG9uZW50PEFYUmFuZ2VTbGlkZXJWYWx1ZT4pIHtcbiAgcHJpdmF0ZSB6b25lID0gaW5qZWN0KE5nWm9uZSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgb3JpZW50YXRpb24gb2YgdGhlIHNsaWRlciwgZWl0aGVyICdob3Jpem9udGFsJyBvciAndmVydGljYWwnLlxuICAgKiBAZGVmYXVsdCAnaG9yaXpvbnRhbCdcbiAgICovXG4gIG9yaWVudGF0aW9uID0gaW5wdXQ8QVhPcmllbnRhdGlvbj4oJ2hvcml6b250YWwnKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIENvbG9yIHRoZW1lIGZvciB0aGUgc2xpZGVyLCBhZmZlY3RpbmcgaGlnaGxpZ2h0LCB0b29sdGlwLCBhbmQgaGFuZGxlci5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICBjb2xvciA9IGlucHV0PEV4Y2x1ZGU8QVhTdHlsZUNvbG9yVHlwZSwgJ2dob3N0Jz4+KCdwcmltYXJ5Jyk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgdmFsdWUocykgb2YgdGhlIHNsaWRlci4gQ2FuIGJlIGEgc2luZ2xlIG51bWJlciBmb3Igc2luZ2xlIG1vZGUgb3IgYW4gYXJyYXkgb2YgdHdvIG51bWJlcnMgZm9yIGR1YWwgbW9kZS5cbiAgICovXG4gIHZhbHVlcyA9IG1vZGVsPEFYUmFuZ2VTbGlkZXJWYWx1ZT4odGhpcy52YWx1ZSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbW9kZSBvZiB0aGUgc2xpZGVyLCBlaXRoZXIgJ3NpbmdsZScgb3IgJ2R1YWwnLlxuICAgKiBAZGVmYXVsdCAnc2luZ2xlJ1xuICAgKi9cbiAgbW9kZSA9IGlucHV0PEFYUmFuZ2VTbGlkZXJNb2RlPignc2luZ2xlJyk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgbWluaW11bSB2YWx1ZSBvZiB0aGUgc2xpZGVyLlxuICAgKiBAZGVmYXVsdCAwXG4gICAqL1xuICBtaW4gPSBpbnB1dDxudW1iZXI+KDApO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIG1heGltdW0gdmFsdWUgb2YgdGhlIHNsaWRlci5cbiAgICogQGRlZmF1bHQgMTAwXG4gICAqL1xuICBtYXggPSBpbnB1dDxudW1iZXI+KDEwMCk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBUaGUgc3RlcCBpbmNyZW1lbnQgZm9yIHZhbHVlIGNoYW5nZXMuXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHN0ZXAgPSBpbnB1dDxudW1iZXI+KDEpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogVGhlIHNuYXBwaW5nIGluY3JlbWVudCBmb3IgdGhlIHNsaWRlci5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgc25hcCA9IGlucHV0PG51bWJlcj4oMSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBNb2RlIGZvciBkaXNwbGF5aW5nIHRvb2x0aXBzLCBjYW4gYmUgYXQgdGhlIHN0YXJ0LCBlbmQsIG9yIGJvdGguXG4gICAqIEBkZWZhdWx0ICdlbmQnXG4gICAqL1xuICB0b29sdGlwTW9kZSA9IGlucHV0PEFYUmFuZ2VTbGlkZXJUb29sdGlwTW9kZT4oJ2VuZCcpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICogTW9kZSBmb3Igc25hcHBpbmcsIGNhbiBzbmFwIGF0IHRoZSBzdGFydCwgZW5kLCBvciBib3RoLlxuICAgKiBAZGVmYXVsdCAnc3RhcnQnXG4gICAqL1xuICBzbmFwTW9kZSA9IGlucHV0PEFYUmFuZ2VTbGlkZXJTbmFwTW9kZT4oJ3N0YXJ0Jyk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGV0aGVyIHRoZSBzbGlkZXIgc2hvdWxkIGhhdmUgc3RlcHMuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGhhc1N0ZXAgPSBpbnB1dCh0cnVlKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqIFdoZXRoZXIgdGhlIHNsaWRlciBzaG91bGQgZGlzcGxheSBzbmFwcGluZy5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGhhc1NuYXAgPSBpbnB1dChmYWxzZSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGV0aGVyIHRoZSBzbGlkZXIgc2hvdWxkIGRpc3BsYXkgbGFiZWxzIGZvciBzbmFwcGluZyBwb2ludHMuXG4gICAqIEBkZWZhdWx0IFZhbHVlIGRlcml2ZWQgZnJvbSBgaGFzU25hcCgpYFxuICAgKi9cbiAgaGFzTGFibGUgPSBpbnB1dCh0aGlzLmhhc1NuYXAoKSk7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKiBXaGV0aGVyIHRoZSBzbGlkZXIgc2hvdWxkIGRpc3BsYXkgdG9vbHRpcHMuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBoYXNUb29sdGlwID0gaW5wdXQoZmFsc2UpO1xuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBoZWlnaHQgPSAwLjI1O1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgbmV3SGVpZ2h0ID0gJ3ZhcigtLWF4LXJhbmdlLXNsaWRlci1iYXNlLXRoaWNrbmVzcyknO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcmFuZ2UgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heCgpIC0gdGhpcy5taW4oKSk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0hvcml6b250YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm9yaWVudGF0aW9uKCkgPT09ICdob3Jpem9udGFsJyk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBpc0R1YWwgPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNvcnJlY3RNaW5NYXggPSBjb21wdXRlZCgoKSA9PiB0aGlzLm1heCgpIC0gdGhpcy5taW4oKSA+IDApO1xuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cblxuICBwcm90ZWN0ZWQgY2FsY3VsYXRlU25hcEJhciA9IGNvbXB1dGVkPG51bWJlcltdIHwgbnVsbD4oKCkgPT4ge1xuICAgIGlmICh0aGlzLmhhc1NuYXAoKSkge1xuICAgICAgaWYgKHRoaXMuc25hcCgpIDw9IDApIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignV3JvbmcgU25hcCEnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBsZXQgYXJyYXkgPSBbXTtcbiAgICAgIGZvciAobGV0IGkgPSB0aGlzLm1pbigpOyBpIDwgdGhpcy5tYXgoKTsgaSArPSB0aGlzLnNuYXAoKSkge1xuICAgICAgICBhcnJheS5wdXNoKGkpO1xuICAgICAgfVxuICAgICAgYXJyYXkgPSBbLi4uYXJyYXksIHRoaXMubWF4KCldO1xuICAgICAgaWYgKGFycmF5WzBdIDwgMCkge1xuICAgICAgICBhcnJheSA9IGFycmF5Lm1hcCgoaSkgPT4gaSArIC1hcnJheVswXSkuc29ydCgoYSwgYikgPT4gYSAtIGIpO1xuICAgICAgfVxuICAgICAgaWYgKGFycmF5WzBdID4gMCkge1xuICAgICAgICBhcnJheSA9IGFycmF5Lm1hcCgoaSkgPT4gaSAtIGFycmF5WzBdKS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXJyYXk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBjYWxjdWxhdGVQb3MgPSBjb21wdXRlZDxBWFJhbmdlU2xpZGVyVmFsdWU+KCgpID0+IHtcbiAgICBpZiAodGhpcy5pc0R1YWwoKSAmJiB0aGlzLnZhbHVlcygpKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAoKHRoaXMudmFsdWVzKClbMF0gLSB0aGlzLm1pbigpKSAvIHRoaXMucmFuZ2UoKSkgKiAxMDAsXG4gICAgICAgICgodGhpcy52YWx1ZXMoKVsxXSAtIHRoaXMubWluKCkpIC8gdGhpcy5yYW5nZSgpKSAqIDEwMCxcbiAgICAgIF07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAoKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgLSB0aGlzLm1pbigpKSAvIHRoaXMucmFuZ2UoKSkgKiAxMDA7XG4gICAgfVxuICB9KTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2hvb3NlbkhhbmRsZXI6ICdmaXJzdCcgfCAnc2Vjb25kJyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgc2xpZGVyRWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlU2xpZGVySGlnaGxpZ2h0ID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzSG9yaXpvbnRhbCgpXG4gICAgICA/IHtcbiAgICAgICAgICBsZWZ0OiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICcwJScsXG4gICAgICAgICAgd2lkdGg6IHRoaXMuaXNEdWFsKClcbiAgICAgICAgICAgID8gdGhpcy5jYWxjdWxhdGVQb3MoKVsxXSAtIHRoaXMuY2FsY3VsYXRlUG9zKClbMF0gKyAnJSdcbiAgICAgICAgICAgIDogdGhpcy5jYWxjdWxhdGVQb3MoKSArICclJyxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmlzRHVhbCgpXG4gICAgICAgICAgICA/IHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gLSB0aGlzLmNhbGN1bGF0ZVBvcygpWzBdICsgJyUnXG4gICAgICAgICAgICA6IHRoaXMuY2FsY3VsYXRlUG9zKCkgKyAnJScsXG4gICAgICAgICAgYm90dG9tOiB0aGlzLm1vZGUoKSA9PT0gJ2R1YWwnID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICcwJScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlckhhbmRsZXIxID0gY29tcHV0ZWQoKCkgPT5cbiAgICB0aGlzLmlzSG9yaXpvbnRhbCgpXG4gICAgICA/IHtcbiAgICAgICAgICBsZWZ0OiB0aGlzLmlzRHVhbCgpID8gdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclJyA6ICh0aGlzLmNhbGN1bGF0ZVBvcygpIGFzIG51bWJlcikgKyAnJScsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGJvdHRvbTogdGhpcy5pc0R1YWwoKVxuICAgICAgICAgICAgPyAnY2FsYygnICsgdGhpcy5jYWxjdWxhdGVQb3MoKVswXSArICclIC0gJyArIDYgKiB0aGlzLmhlaWdodCArICdyZW0pJ1xuICAgICAgICAgICAgOiAnY2FsYygnICsgdGhpcy5jYWxjdWxhdGVQb3MoKSArICclIC0gJyArIDYgKiB0aGlzLmhlaWdodCArICdyZW0pJyxcbiAgICAgICAgfSxcbiAgKTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlU2xpZGVySGFuZGxlcjIgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuaXNIb3Jpem9udGFsKClcbiAgICAgID8ge1xuICAgICAgICAgIGxlZnQ6IHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gKyAnJScsXG4gICAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICAgIGJvdHRvbTogJ2NhbGMoJyArIHRoaXMuY2FsY3VsYXRlUG9zKClbMV0gKyAnJSAtICcgKyA2ICogdGhpcy5oZWlnaHQgKyAncmVtKScsXG4gICAgICAgIH0sXG4gICk7XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgQVhSYW5nZVNsaWRlclN0ZXAgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogJzAnLCBoZWlnaHQ6IDggKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ3N0YXJ0JzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nLCBoZWlnaHQ6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICAgIGNhc2UgJ2VuZCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAtMiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIGhlaWdodDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoICh0aGlzLnNuYXBNb2RlKCkpIHtcbiAgICAgICAgY2FzZSAnYm90aCc6XG4gICAgICAgICAgcmV0dXJuIHsgdG9wOiAnMCcsIHdpZHRoOiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScsIHdpZHRoOiA0ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdlbmQnOlxuICAgICAgICAgIHJldHVybiB7IGxlZnQ6IC0yICogdGhpcy5oZWlnaHQgKyAncmVtJywgd2lkdGg6IDQgKiB0aGlzLmhlaWdodCArICdyZW0nIH07XG4gICAgICB9XG4gICAgfVxuICB9KTtcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBBWFJhbmdlTGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgaWYgKHRoaXMuaXNIb3Jpem9udGFsKCkpIHtcbiAgICAgIHN3aXRjaCAodGhpcy5zbmFwTW9kZSgpKSB7XG4gICAgICAgIGNhc2UgJ2JvdGgnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogNiAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnc3RhcnQnOlxuICAgICAgICAgIHJldHVybiB7IHRvcDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyB0b3A6IC02ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKHRoaXMuc25hcE1vZGUoKSkge1xuICAgICAgICBjYXNlICdib3RoJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiA4ICogdGhpcy5oZWlnaHQgKyAncmVtJyB9O1xuICAgICAgICBjYXNlICdzdGFydCc6XG4gICAgICAgICAgcmV0dXJuIHsgbGVmdDogNCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgICAgY2FzZSAnZW5kJzpcbiAgICAgICAgICByZXR1cm4geyBsZWZ0OiAtOCAqIHRoaXMuaGVpZ2h0ICsgJ3JlbScgfTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcigpO1xuICAgIGVmZmVjdCgoKSA9PiB0aGlzLmNvbW1pdFZhbHVlKHRoaXMudmFsdWVzKCkpKTtcbiAgICBlZmZlY3QoXG4gICAgICAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmNvcnJlY3RNaW5NYXgoKSkge1xuICAgICAgICAgIHRoaXMuZml4SW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgICAgICAgIHRoaXMuZml4Q2hhbmdpbmdNb2RlKCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihgTWluID0gJHt0aGlzLm1pbigpfSBBbmQgTWF4ID0gJHt0aGlzLm1heCgpfSBpcyBub3QgY29ycmVjdCBpbnB1dHMuYCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB7IGFsbG93U2lnbmFsV3JpdGVzOiB0cnVlIH0sXG4gICAgKTtcbiAgICB0aGlzLm9uVmFsdWVDaGFuZ2VkLnN1YnNjcmliZSgodmFsdWUpID0+IHtcbiAgICAgIGlmICh2YWx1ZT8udmFsdWUgIT0gdW5kZWZpbmVkICYmIHZhbHVlPy52YWx1ZSAhPSBudWxsICYmIHRoaXMudmFsdWVzKCkgIT09IHZhbHVlLnZhbHVlKVxuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUudmFsdWUpO1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAvLyh3aW5kb3cgYXMgYW55KS5yYW5nZVNsaWRlciA9IHRoaXM7IC8vZm9yIGRlYnVnZ2luZyBwdXJwb3NlIG9ubHlcbiAgICBpZiAoIXRoaXMuY29ycmVjdE1pbk1heCgpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBNaW4gPSAke3RoaXMubWluKCl9IEFuZCBNYXggPSAke3RoaXMubWF4KCl9IGlzIG5vdCBjb3JyZWN0IGlucHV0cy5gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pbml0aWFsaXplVmFsdWVzKCk7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25TdGFydEhhbmRsZXIoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCBjaXJjbGU6ICdmaXJzdCcgfCAnc2Vjb25kJyk6IHZvaWQge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlZCB8fCB0aGlzLnJlYWRvbmx5IHx8ICF0aGlzLmNvcnJlY3RNaW5NYXgoKSkgcmV0dXJuO1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuc2xpZGVyRWxlbWVudCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5heC1yYW5nZS1zbGlkZXInKSBhcyBIVE1MRWxlbWVudDtcbiAgICAgIGlmICh0aGlzLnNsaWRlckVsZW1lbnQpIHtcbiAgICAgICAgdGhpcy5jaG9vc2VuSGFuZGxlciA9IGNpcmNsZTtcbiAgICAgICAgY29uc3QgbW92ZUxpc3RlbmVyID0gKG1vdmVFdmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpID0+IHRoaXMub25Nb3ZlKG1vdmVFdmVudCwgY2lyY2xlKTtcbiAgICAgICAgY29uc3QgZW5kTGlzdGVuZXIgPSAoKSA9PiB0aGlzLm9uRW5kKG1vdmVMaXN0ZW5lciwgZW5kTGlzdGVuZXIpO1xuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNldXAnLCBlbmRMaXN0ZW5lcik7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCd0b3VjaG1vdmUnLCBtb3ZlTGlzdGVuZXIsIHsgcGFzc2l2ZTogdHJ1ZSB9KTtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNoZW5kJywgZW5kTGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgb25TdGFydEJhcihldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpIHtcbiAgICBsZXQgY2lyY2xlOiAnZmlyc3QnIHwgJ3NlY29uZCcgPSAnZmlyc3QnO1xuICAgIHRoaXMuc2xpZGVyRWxlbWVudCA9IChldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLmNsb3Nlc3QoJy5heC1yYW5nZS1zbGlkZXInKSBhcyBIVE1MRWxlbWVudDtcbiAgICB0aGlzLnpvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLnNsaWRlckVsZW1lbnQgfHwgdGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jb3JyZWN0TWluTWF4KCkpIHJldHVybjtcbiAgICAgIGNvbnN0IGNhbGN1bGF0ZVBlcmNlbnQgPSB0aGlzLmNhbGN1bGF0ZVBlcmNlbnRPbk1vdmUoZXZlbnQpO1xuICAgICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21QZXJjZW50KGNhbGN1bGF0ZVBlcmNlbnQpO1xuICAgICAgdmFsdWUgPSBOdW1iZXIucGFyc2VGbG9hdCh2YWx1ZS50b0ZpeGVkKDIpKTtcbiAgICAgIGlmICh0aGlzLmhhc1N0ZXAoKSkge1xuICAgICAgICB2YWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodmFsdWUpO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuaXNEdWFsKCkpIHtcbiAgICAgICAgaWYgKHZhbHVlID49ICh0aGlzLnZhbHVlcygpWzFdIC0gdGhpcy52YWx1ZXMoKVswXSkgLyAyKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLnZhbHVlcygpWzBdLCB2YWx1ZV0pO1xuICAgICAgICAgIGNpcmNsZSA9ICdzZWNvbmQnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdmFsdWUsIHRoaXMudmFsdWVzKClbMV1dKTtcbiAgICAgICAgICBjaXJjbGUgPSAnZmlyc3QnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHRoaXMub25TdGFydEhhbmRsZXIoZXZlbnQsIGNpcmNsZSk7XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByb3RlY3RlZCBvbk1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50LCBjaXJjbGU6ICdmaXJzdCcgfCAnc2Vjb25kJyk6IHZvaWQge1xuICAgIGlmICghdGhpcy5zbGlkZXJFbGVtZW50KSByZXR1cm47XG4gICAgY29uc3QgY2FsY3VsYXRlUGVyY2VudCA9IHRoaXMuY2FsY3VsYXRlUGVyY2VudE9uTW92ZShldmVudCk7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXRWYWx1ZUZyb21QZXJjZW50KGNhbGN1bGF0ZVBlcmNlbnQpO1xuICAgIHZhbHVlID0gTnVtYmVyLnBhcnNlRmxvYXQodmFsdWUudG9GaXhlZCgyKSk7XG4gICAgaWYgKHRoaXMuaGFzU3RlcCgpKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgaWYgKGNpcmNsZSA9PT0gJ2ZpcnN0JyAmJiB2YWx1ZSA8PSB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWVzKHZhbHVlLCAnZmlyc3QnLCB0aGlzLnZhbHVlcygpWzFdKSAmJiB0aGlzLnZhbHVlcygpWzBdICE9PSB2YWx1ZSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdmFsdWUsIHRoaXMudmFsdWVzKClbMV1dKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaXJjbGUgPT09ICdzZWNvbmQnICYmIHZhbHVlID49IHRoaXMudmFsdWVzKClbMF0gJiYgdGhpcy52YWx1ZXMoKVsxXSAhPT0gdmFsdWUpIHtcbiAgICAgICAgaWYgKHRoaXMuY2hlY2tWYWx1ZXModmFsdWUsICdzZWNvbmQnLCB0aGlzLnZhbHVlcygpWzBdKSkge1xuICAgICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgdmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5jaGVja1ZhbHVlKHZhbHVlKSAmJiB0aGlzLnZhbHVlcygpICE9PSB2YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlcy5zZXQodmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIG9uRW5kKG1vdmVMaXN0ZW5lcjogKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCkgPT4gdm9pZCwgZW5kTGlzdGVuZXI6ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGVuZExpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgbW92ZUxpc3RlbmVyKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2hlbmQnLCBlbmRMaXN0ZW5lcik7XG4gICAgdGhpcy5zbGlkZXJFbGVtZW50ID0gbnVsbDtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplVmFsdWVzKCkge1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVVuZGVmaW5lZCgpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVZhbHVlcygpO1xuICAgIHRoaXMuZml4SW5pdGlhbGl6ZVN0ZXAoKTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaXhJbml0aWFsaXplVW5kZWZpbmVkKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy5taW4oKSwgdGhpcy5tYXgoKV0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJpdmF0ZSBmaXhJbml0aWFsaXplVmFsdWVzKCkge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpICYmIHRoaXMudmFsdWVzKClbMF0gPiB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMudmFsdWVzKClbMV0sIHRoaXMudmFsdWVzKClbMF1dKTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiB0aGlzLnZhbHVlcygpID09PSAnbnVtYmVyJyAmJiAhdGhpcy5jaGVja1ZhbHVlKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KHRoaXMubWluKCkpO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICB0eXBlb2YgdGhpcy52YWx1ZXMoKSAhPT0gJ251bWJlcicgJiZcbiAgICAgICF0aGlzLmNoZWNrVmFsdWVzKHRoaXMudmFsdWVzKClbMF0sICdmaXJzdCcsIHRoaXMudmFsdWVzKClbMV0pXG4gICAgKSB7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW3RoaXMubWluKCksIHRoaXMubWF4KCldKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4SW5pdGlhbGl6ZVN0ZXAoKSB7XG4gICAgaWYgKHRoaXMuc3RlcCgpICE9PSAxKSB7XG4gICAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgICB0aGlzLnZhbHVlcy51cGRhdGUoKG9sZCkgPT4gW3RoaXMucm91bmRUb1N0ZXAob2xkWzBdKSwgdGhpcy5yb3VuZFRvU3RlcChvbGRbMV0pXSk7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlcygpWzBdID09PSB0aGlzLnZhbHVlcygpWzFdKSB7XG4gICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFt0aGlzLnJvdW5kVG9TdGVwKG9sZFswXSksIHRoaXMucm91bmRUb1N0ZXAob2xkWzFdKSArIHRoaXMuc3RlcCgpXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLnJvdW5kVG9TdGVwKG9sZCBhcyBudW1iZXIpKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgZml4Q2hhbmdpbmdNb2RlKCkge1xuICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSA9PT0gJ251bWJlcicgJiYgdGhpcy5pc0R1YWwoKSkge1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KFt0aGlzLm1pbigpLCB0aGlzLm1heCgpXSk7XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhpcy52YWx1ZXMoKSAhPT0gJ251bWJlcicgJiYgIXRoaXMuaXNEdWFsKCkpIHtcbiAgICAgIHRoaXMudmFsdWVzLnNldCh0aGlzLm1pbigpKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgY2FsY3VsYXRlUGVyY2VudE9uTW92ZShldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBudW1iZXIge1xuICAgIGNvbnN0IHNsaWRlclJlY3QgPSB0aGlzLnNsaWRlckVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgbGV0IHBlcmNlbnQ6IG51bWJlcjtcbiAgICBpZiAodGhpcy5pc0hvcml6b250YWwoKSkge1xuICAgICAgY29uc3QgY2xpZW50WCA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFggOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRYO1xuICAgICAgY29uc3QgeCA9IGNsaWVudFggLSBzbGlkZXJSZWN0LmxlZnQ7XG4gICAgICBwZXJjZW50ID0gKHggLyBzbGlkZXJSZWN0LndpZHRoKSAqIDEwMDtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xpZW50WSA9IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCA/IGV2ZW50LmNsaWVudFkgOiAoZXZlbnQgYXMgVG91Y2hFdmVudCkudG91Y2hlc1swXS5jbGllbnRZO1xuICAgICAgY29uc3QgeSA9IC0oY2xpZW50WSAtIHNsaWRlclJlY3QuYm90dG9tKTsgLy9yZXZlcmNlIHNsaWRlciBmcm9tIGJvdHRvbSB0byB0b3BcbiAgICAgIHBlcmNlbnQgPSAoeSAvIHNsaWRlclJlY3QuaGVpZ2h0KSAqIDEwMDtcbiAgICB9XG4gICAgaWYgKHBlcmNlbnQgPCAwKSB7XG4gICAgICBwZXJjZW50ID0gMDtcbiAgICB9IGVsc2UgaWYgKHBlcmNlbnQgPiAxMDApIHtcbiAgICAgIHBlcmNlbnQgPSAxMDA7XG4gICAgfVxuICAgIHJldHVybiBwZXJjZW50O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHByaXZhdGUgcm91bmRUb1N0ZXAodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgY29uc3QgbG93ZXIgPSBNYXRoLm1heChcbiAgICAgIHRoaXMubWluKCksXG4gICAgICBNYXRoLmZsb29yKCh2YWx1ZSAtIHRoaXMubWluKCkpIC8gdGhpcy5zdGVwKCkpICogdGhpcy5zdGVwKCkgKyB0aGlzLm1pbigpLFxuICAgICk7XG4gICAgY29uc3QgdXBwZXIgPSBNYXRoLm1pbih0aGlzLm1heCgpLCBsb3dlciArIHRoaXMuc3RlcCgpKTtcbiAgICBpZiAodmFsdWUgLSBsb3dlciA8IHVwcGVyIC0gdmFsdWUpIHtcbiAgICAgIHJldHVybiBsb3dlcjtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHVwcGVyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrVmFsdWUoeDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHggPj0gdGhpcy5taW4oKSAmJiB4IDw9IHRoaXMubWF4KCkpIHJldHVybiB0cnVlO1xuICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcml2YXRlIGNoZWNrVmFsdWVzKHZhbHVlMTogbnVtYmVyLCB5OiAnZmlyc3QnIHwgJ3NlY29uZCcsIHZhbHVlMjogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgaWYgKHZhbHVlMSA+PSB0aGlzLm1pbigpICYmIHZhbHVlMSA8PSB0aGlzLm1heCgpKSB7XG4gICAgICBpZiAoeSA9PT0gJ2ZpcnN0Jykge1xuICAgICAgICBpZiAodmFsdWUxIDw9IHZhbHVlMiAmJiB2YWx1ZTIgPD0gdGhpcy5tYXgoKSkgcmV0dXJuIHRydWU7XG4gICAgICAgIGVsc2UgcmV0dXJuIGZhbHNlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHZhbHVlMSA+PSB2YWx1ZTIgJiYgdmFsdWUyID49IHRoaXMubWluKCkpIHJldHVybiB0cnVlO1xuICAgICAgICBlbHNlIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgcmV0dXJuIGZhbHNlO1xuICB9XG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VmFsdWVGcm9tUGVyY2VudCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMubWluKCkgKyAodmFsdWUgKiAodGhpcy5tYXgoKSAtIHRoaXMubWluKCkpKSAvIDEwMDtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFBlcmNhbnRhZ2UodmFsdWU6IG51bWJlcik6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMucmFuZ2UoKSAhPT0gMCA/ICh2YWx1ZSAvIHRoaXMucmFuZ2UoKSkgKiAxMDAgOiAwO1xuICB9XG4gIC8qKlxuICAgKiBJbmNyZWFzZSBhIHN0ZXAgdG8gdmFsdWUgaWYgc2xpZGVyIGluIHNpbmdsZSBtb2RlXG4gICAqIGFuZCBpbmNyZWFzZSBhIHN0ZXAgdGhlIHNlY29uZCB2YWx1ZSBpZiBzbGlkZXIgaW4gZHVhbCBtb2RlXG4gICAqIEBtZXRob2QgaW5jcmVhc2VTdGVwXG4gICAqL1xuICBwdWJsaWMgaW5jcmVhc2VTdGVwKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAodGhpcy52YWx1ZXMoKVsxXSArIHRoaXMuc3RlcCgpKTtcbiAgICAgIHRoaXMudmFsdWVzLnNldChbdGhpcy52YWx1ZXMoKVswXSwgbmV3VmFsdWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQobmV3VmFsdWUpO1xuICAgIH1cbiAgfVxuICAvKipcbiAgICogRGVjcmVhc2UgYSBzdGVwIHRvIHZhbHVlIGlmIHNsaWRlciBpbiBzaW5nbGUgbW9kZVxuICAgKiBhbmQgZGVjcmVhc2UgYSBzdGVwIHRoZSBzZWNvbmQgdmFsdWUgaWYgc2xpZGVyIGluIGR1YWwgbW9kZVxuICAgKiBAbWV0aG9kIGRlY3JlYXNlU3RlcFxuICAgKi9cbiAgcHVibGljIGRlY3JlYXNlU3RlcCgpIHtcbiAgICBpZiAodGhpcy5pc0R1YWwoKSkge1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKHRoaXMudmFsdWVzKClbMF0gLSB0aGlzLnN0ZXAoKSk7XG4gICAgICB0aGlzLnZhbHVlcy5zZXQoW25ld1ZhbHVlLCB0aGlzLnZhbHVlcygpWzFdXSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpO1xuICAgICAgdGhpcy52YWx1ZXMuc2V0KG5ld1ZhbHVlKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIEBIb3N0TGlzdGVuZXIoJ3doZWVsJywgWyckZXZlbnQnXSlcbiAgb25XaGVlbChldmVudDogV2hlZWxFdmVudCkge1xuICAgIHRoaXMuem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgaWYgKCF0aGlzLmNob29zZW5IYW5kbGVyIHx8IHRoaXMucmVhZG9ubHkgfHwgdGhpcy5kaXNhYmxlZCB8fCAhdGhpcy5jb3JyZWN0TWluTWF4KCkpIHJldHVybjtcbiAgICAgIGxldCBuZXdWYWx1ZTtcbiAgICAgIGlmICh0aGlzLmlzRHVhbCgpKSB7XG4gICAgICAgIGlmIChldmVudC5kZWx0YVkgPCAwKSB7XG4gICAgICAgICAgaWYgKHRoaXMuY2hvb3NlbkhhbmRsZXIgPT09ICdmaXJzdCcpIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKVswXSBhcyBudW1iZXIpICsgdGhpcy5zdGVwKCkpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzFdKSAmJlxuICAgICAgICAgICAgICB0aGlzLnZhbHVlcygpWzBdICE9PSBuZXdWYWx1ZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbdGhpcy5yb3VuZFRvU3RlcCgob2xkWzBdIGFzIG51bWJlcikgKyB0aGlzLnN0ZXAoKSksIG9sZFsxXV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKClbMV0gYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKTtcbiAgICAgICAgICAgIGlmIChuZXdWYWx1ZSA8PSB0aGlzLm1heCgpICYmIHRoaXMudmFsdWVzKClbMV0gIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbb2xkWzBdLCB0aGlzLnJvdW5kVG9TdGVwKChvbGRbMV0gYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAodGhpcy5jaG9vc2VuSGFuZGxlciA9PT0gJ2ZpcnN0Jykge1xuICAgICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLnJvdW5kVG9TdGVwKCh0aGlzLnZhbHVlcygpWzBdIGFzIG51bWJlcikgLSB0aGlzLnN0ZXAoKSk7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgIHRoaXMuY2hlY2tWYWx1ZXMobmV3VmFsdWUsIHRoaXMuY2hvb3NlbkhhbmRsZXIsIHRoaXMudmFsdWVzKClbMV0pICYmXG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzKCkgIT09IG5ld1ZhbHVlXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IFt0aGlzLnJvdW5kVG9TdGVwKChvbGRbMF0gYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKSwgb2xkWzFdXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5ld1ZhbHVlID0gdGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKVsxXSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpO1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICB0aGlzLmNoZWNrVmFsdWVzKG5ld1ZhbHVlLCB0aGlzLmNob29zZW5IYW5kbGVyLCB0aGlzLnZhbHVlcygpWzBdKSAmJlxuICAgICAgICAgICAgICB0aGlzLnZhbHVlcygpWzFdICE9PSBuZXdWYWx1ZVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiBbb2xkWzBdLCB0aGlzLnJvdW5kVG9TdGVwKChvbGRbMV0gYXMgbnVtYmVyKSAtIHRoaXMuc3RlcCgpKV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGV2ZW50LmRlbHRhWSA8IDApIHtcbiAgICAgICAgICBpZiAodGhpcy5jaGVja1ZhbHVlKHRoaXMucm91bmRUb1N0ZXAoKHRoaXMudmFsdWVzKCkgYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKSkpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWVzLnVwZGF0ZSgob2xkKSA9PiB0aGlzLnJvdW5kVG9TdGVwKChvbGQgYXMgbnVtYmVyKSArIHRoaXMuc3RlcCgpKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh0aGlzLmNoZWNrVmFsdWUodGhpcy5yb3VuZFRvU3RlcCgodGhpcy52YWx1ZXMoKSBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpKSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZXMudXBkYXRlKChvbGQpID0+IHRoaXMucm91bmRUb1N0ZXAoKG9sZCBhcyBudW1iZXIpIC0gdGhpcy5zdGVwKCkpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcycpXG4gIHByaXZhdGUgZ2V0IF9faG9zdENsYXNzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgYGF4LSR7dGhpcy5jb2xvcigpfS1zb2xpZGAsXG4gICAgICBgJHt0aGlzLmRpc2FibGVkID8gJ2F4LXN0YXRlLWRpc2FibGVkJyA6ICcnfWAsXG4gICAgICBgJHt0aGlzLnJlYWRvbmx5ID8gJ2F4LXN0YXRlLXJlYWRvbmx5JyA6ICcnfWAsXG4gICAgXTtcbiAgfVxufVxuIiwiQGlmIChjb3JyZWN0TWluTWF4KCkpIHtcbiAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlclwiIFtjbGFzc109XCInYXgtb3JpZW50YXRpb24tJyArIG9yaWVudGF0aW9uKClcIj5cbiAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWJhclwiIChtb3VzZWRvd24pPVwib25TdGFydEJhcigkZXZlbnQpXCIgKHRvdWNoc3RhcnQpPVwib25TdGFydEJhcigkZXZlbnQpXCI+PC9kaXY+XG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItaGlnaGxpZ2h0XCJcbiAgICAgIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJIaWdobGlnaHQoKVwiXG4gICAgICAobW91c2Vkb3duKT1cIm9uU3RhcnRCYXIoJGV2ZW50KVwiXG4gICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0QmFyKCRldmVudClcIlxuICAgID48L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgIGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLWhhbmRsZXJcIlxuICAgICAgW25nU3R5bGVdPVwiQVhSYW5nZVNsaWRlckhhbmRsZXIxKClcIlxuICAgICAgbmFtZT1cImZpcnN0XCJcbiAgICAgIChtb3VzZWRvd24pPVwib25TdGFydEhhbmRsZXIoJGV2ZW50LCAnZmlyc3QnKVwiXG4gICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0SGFuZGxlcigkZXZlbnQsICdmaXJzdCcpXCJcbiAgICA+XG4gICAgICBAaWYgKGhhc1Rvb2x0aXAoKSkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLXRvb2x0aXBcIj57eyBpc0R1YWwoKSA/IHZhbHVlcygpWzBdIDogdmFsdWVzKCkgfX08L2Rpdj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cblxuICAgIEBpZiAoaXNEdWFsKCkpIHtcbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItaGFuZGxlclwiXG4gICAgICAgIFtuZ1N0eWxlXT1cIkFYUmFuZ2VTbGlkZXJIYW5kbGVyMigpXCJcbiAgICAgICAgbmFtZT1cInNlY29uZFwiXG4gICAgICAgIChtb3VzZWRvd24pPVwib25TdGFydEhhbmRsZXIoJGV2ZW50LCAnc2Vjb25kJylcIlxuICAgICAgICAodG91Y2hzdGFydCk9XCJvblN0YXJ0SGFuZGxlcigkZXZlbnQsICdzZWNvbmQnKVwiXG4gICAgICA+XG4gICAgICAgIEBpZiAoaGFzVG9vbHRpcCgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci10b29sdGlwXCI+e3sgdmFsdWVzKClbMV0gfX08L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoaGFzU25hcCgpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYXgtcmFuZ2Utc2xpZGVyLXN0ZXBcIiBbbmdTdHlsZV09XCJBWFJhbmdlU2xpZGVyU3RlcCgpXCI+XG4gICAgICAgIEBmb3IgKGl0ZW0gb2YgY2FsY3VsYXRlU25hcEJhcigpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cImF4LXJhbmdlLXNsaWRlci1zdGVwc1wiXG4gICAgICAgICAgICBbbmdTdHlsZV09XCJcbiAgICAgICAgICAgICAgaXNIb3Jpem9udGFsKCkgPyB7IGxlZnQ6IGdldFBlcmNhbnRhZ2UoaXRlbSkgKyAnJScgfSA6IHsgYm90dG9tOiBnZXRQZXJjYW50YWdlKGl0ZW0pICsgJyUnIH1cbiAgICAgICAgICAgIFwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQGlmIChoYXNMYWJsZSgpKSB7XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJheC1yYW5nZS1zbGlkZXItbGFiZWxcIiBbbmdTdHlsZV09XCJBWFJhbmdlTGFiZWwoKVwiPlxuICAgICAgICAgICAgICAgIHt7IGl0ZW0gKyBtaW4oKSB9fVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2Rpdj5cbn1cbiJdfQ==
|
@@ -1,5 +1,5 @@
|
|
1
1
|
import { AXClearableComponent, AXComponent, AXFocusableComponent, AXSearchableComponent, AXValuableComponent, MXInputBaseValueComponent, MXLookComponent, } from '@acorex/components/common';
|
2
|
-
import { ChangeDetectionStrategy, Component, HostBinding, Inject, Input, Optional, ViewEncapsulation, forwardRef } from '@angular/core';
|
2
|
+
import { ChangeDetectionStrategy, Component, HostBinding, Inject, Input, Optional, ViewEncapsulation, forwardRef, } from '@angular/core';
|
3
3
|
import { NG_VALUE_ACCESSOR } from '@angular/forms';
|
4
4
|
import { classes } from 'polytype';
|
5
5
|
import * as i0 from "@angular/core";
|
@@ -50,7 +50,7 @@ export class AXSearchBoxComponent extends classes((MXInputBaseValueComponent), M
|
|
50
50
|
useExisting: forwardRef(() => AXSearchBoxComponent),
|
51
51
|
multi: true,
|
52
52
|
},
|
53
|
-
], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-prefix\"> </ng-content>\n\n<div #icon>\n <ng-content select=\"ax-icon\"> </ng-content>\n</div>\n\n@if (!icon.children.length) {\n <span class=\"ax-icon ax-icon-search ax-editor-control\"></span>\n}\n\n<input\n #input\n class=\"ax-input\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder ?? 'search' | translate | async\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n [delayTime]=\"delayTime\"\n (axDelayedValueChanged)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n/>\n\n@if (input.value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n}\n<ng-content select=\"ax-suffix\"> </ng-content>\n", dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.AXNgModelDelayedValueChangedDirective, selector: "[axDelayedValueChanged]", inputs: ["delayTime"], outputs: ["axDelayedValueChanged", "axDelayTimeChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
53
|
+
], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-prefix\"> </ng-content>\n\n<div #icon>\n <ng-content select=\"ax-icon\"> </ng-content>\n</div>\n\n@if (!icon.children.length) {\n <span class=\"ax-icon ax-icon-search ax-editor-control\"></span>\n}\n\n<input\n #input\n class=\"ax-input\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder ?? 'search' | translate | async\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n [delayTime]=\"delayTime\"\n (axDelayedValueChanged)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n/>\n\n@if (input.value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n}\n<ng-content select=\"ax-suffix\"> </ng-content>\n", styles: [".ax-xs>.ax-icon{font-size:.85rem;padding-inline-start:.25rem}.ax-sm>.ax-icon{font-size:.95rem;padding-inline-start:.5rem}.ax-md>.ax-icon{padding-inline-start:1.25rem;font-size:1.125rem;padding-inline-end:.35rem}.ax-lg>.ax-icon{padding-inline-start:1.5rem;font-size:1.35rem;padding-inline-end:.75rem}.ax-xl>.ax-icon{padding-inline-start:1.75rem;font-size:1.5rem;padding-inline-end:.75rem}\n"], dependencies: [{ kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i2.AXNgModelDelayedValueChangedDirective, selector: "[axDelayedValueChanged]", inputs: ["delayTime"], outputs: ["axDelayedValueChanged", "axDelayTimeChange"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }, { kind: "pipe", type: i4.AXTranslatorPipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
54
54
|
}
|
55
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXSearchBoxComponent, decorators: [{
|
56
56
|
type: Component,
|
@@ -75,7 +75,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
75
75
|
useExisting: forwardRef(() => AXSearchBoxComponent),
|
76
76
|
multi: true,
|
77
77
|
},
|
78
|
-
], template: "<ng-content select=\"ax-prefix\"> </ng-content>\n\n<div #icon>\n <ng-content select=\"ax-icon\"> </ng-content>\n</div>\n\n@if (!icon.children.length) {\n <span class=\"ax-icon ax-icon-search ax-editor-control\"></span>\n}\n\n<input\n #input\n class=\"ax-input\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder ?? 'search' | translate | async\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n [delayTime]=\"delayTime\"\n (axDelayedValueChanged)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n/>\n\n@if (input.value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n}\n<ng-content select=\"ax-suffix\"> </ng-content>\n" }]
|
78
|
+
], template: "<ng-content select=\"ax-prefix\"> </ng-content>\n\n<div #icon>\n <ng-content select=\"ax-icon\"> </ng-content>\n</div>\n\n@if (!icon.children.length) {\n <span class=\"ax-icon ax-icon-search ax-editor-control\"></span>\n}\n\n<input\n #input\n class=\"ax-input\"\n [attr.name]=\"name\"\n [attr.placeholder]=\"placeholder ?? 'search' | translate | async\"\n [class.ax-state-disabled]=\"disabled\"\n [class.ax-state-readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [readonly]=\"readonly\"\n [tabindex]=\"tabIndex\"\n [ngModel]=\"value\"\n [delayTime]=\"delayTime\"\n (axDelayedValueChanged)=\"_handleModelChange($event)\"\n (keydown)=\"emitOnKeydownEvent($event)\"\n (keyup)=\"emitOnKeyupEvent($event)\"\n (keypress)=\"emitOnKeypressEvent($event)\"\n (focus)=\"emitOnFocusEvent($event)\"\n (blur)=\"emitOnBlurEvent($event)\"\n/>\n\n@if (input.value && !disabled && !readonly) {\n <ng-content select=\"ax-clear-button\"></ng-content>\n}\n<ng-content select=\"ax-suffix\"> </ng-content>\n", styles: [".ax-xs>.ax-icon{font-size:.85rem;padding-inline-start:.25rem}.ax-sm>.ax-icon{font-size:.95rem;padding-inline-start:.5rem}.ax-md>.ax-icon{padding-inline-start:1.25rem;font-size:1.125rem;padding-inline-end:.35rem}.ax-lg>.ax-icon{padding-inline-start:1.5rem;font-size:1.35rem;padding-inline-end:.75rem}.ax-xl>.ax-icon{padding-inline-start:1.75rem;font-size:1.5rem;padding-inline-end:.75rem}\n"] }]
|
79
79
|
}], ctorParameters: () => [{ type: i2.AXSearchableComponent, decorators: [{
|
80
80
|
type: Optional
|
81
81
|
}, {
|
@@ -87,4 +87,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
|
|
87
87
|
type: HostBinding,
|
88
88
|
args: ['class']
|
89
89
|
}] } });
|
90
|
-
//# sourceMappingURL=data:application/json;base64,
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvc2VhcmNoLWJveC9zcmMvbGliL3NlYXJjaC1ib3guY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL3NlYXJjaC1ib3gvc3JjL2xpYi9zZWFyY2gtYm94LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsV0FBVyxFQUNYLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsbUJBQW1CLEVBQ25CLHlCQUF5QixFQUN6QixlQUFlLEdBQ2hCLE1BQU0sMkJBQTJCLENBQUM7QUFDbkMsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixLQUFLLEVBQ0wsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixVQUFVLEdBQ1gsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7Ozs7O0FBRW5DOzs7R0FHRztBQXdESCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsT0FBTyxDQUFDLENBQUEseUJBQWlDLENBQUEsRUFBRSxlQUFlLENBQUM7SUFDbkcsY0FBYztJQUNkO0lBQ0UsY0FBYztJQUdOLE9BQThCO1FBRXRDLEtBQUssRUFBRSxDQUFDO1FBRkEsWUFBTyxHQUFQLE9BQU8sQ0FBdUI7UUFLeEM7OztXQUdHO1FBRUgsY0FBUyxHQUFHLEdBQUcsQ0FBQztJQVBoQixDQUFDO0lBU0Q7Ozs7T0FJRztJQUNILGtCQUFrQixDQUFDLEtBQWE7UUFDOUIsSUFBSSxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxjQUFjO0lBQ2QsSUFDSSxXQUFXO1FBQ2IsT0FBTyxDQUFDLHFCQUFxQixFQUFFLFdBQVcsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQzs4R0FsQ1Usb0JBQW9CLGtCQUtyQixxQkFBcUI7a0dBTHBCLG9CQUFvQiw4akJBWnBCO1lBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtZQUMzRCxFQUFFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsb0JBQW9CLEVBQUU7WUFDcEUsRUFBRSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsV0FBVyxFQUFFLG9CQUFvQixFQUFFO1lBQ3BFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxvQkFBb0IsRUFBRTtZQUNuRTtnQkFDRSxPQUFPLEVBQUUsaUJBQWlCO2dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLG9CQUFvQixDQUFDO2dCQUNuRCxLQUFLLEVBQUUsSUFBSTthQUNaO1NBQ0YsaURDL0VILCsrQkFrQ0E7OzJGRCtDYSxvQkFBb0I7a0JBdkRoQyxTQUFTOytCQUNFLGVBQWUsbUJBMkJSLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksVUFDN0IsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxXQUMxRjt3QkFDUCxhQUFhO3dCQUNiLGFBQWE7d0JBQ2IsZ0JBQWdCO3dCQUNoQixRQUFRO3dCQUNSLFNBQVM7d0JBQ1QsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLFdBQVc7d0JBQ1gsU0FBUzt3QkFDVCxZQUFZO3FCQUNiLGFBQ1U7d0JBQ1QsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFdBQVcsc0JBQXNCLEVBQUU7d0JBQzNELEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsc0JBQXNCLEVBQUU7d0JBQ3BFLEVBQUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLFdBQVcsc0JBQXNCLEVBQUU7d0JBQ3BFLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLFdBQVcsc0JBQXNCLEVBQUU7d0JBQ25FOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjtxQkFDRjs7MEJBTUUsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxxQkFBcUI7eUNBVy9CLFNBQVM7c0JBRFIsS0FBSztnQkFpQkYsV0FBVztzQkFEZCxXQUFXO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBWENsZWFyYWJsZUNvbXBvbmVudCxcbiAgQVhDb21wb25lbnQsXG4gIEFYRm9jdXNhYmxlQ29tcG9uZW50LFxuICBBWFNlYXJjaGFibGVDb21wb25lbnQsXG4gIEFYVmFsdWFibGVDb21wb25lbnQsXG4gIE1YSW5wdXRCYXNlVmFsdWVDb21wb25lbnQsXG4gIE1YTG9va0NvbXBvbmVudCxcbn0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL2NvbW1vbic7XG5pbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ29tcG9uZW50LFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0LFxuICBJbnB1dCxcbiAgT3B0aW9uYWwsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxuICBmb3J3YXJkUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2xhc3NlcyB9IGZyb20gJ3BvbHl0eXBlJztcblxuLyoqXG4gKiBAY2F0ZWdvcnlcbiAqICBSZXByZXNlbnRzIGEgc2VhcmNoIGJveCBjb21wb25lbnQgdGhhdCBhbGxvd3MgdXNlcnMgdG8gaW5wdXQgYW5kIHNlYXJjaCB0ZXh0LlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdheC1zZWFyY2gtYm94JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlYXJjaC1ib3guY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZXM6IGBcbiAgICAuYXgteHMgPiAuYXgtaWNvbiB7XG4gICAgICBmb250LXNpemU6IDAuODVyZW07XG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMC4yNXJlbTtcbiAgICB9XG4gICAgLmF4LXNtID4gLmF4LWljb24ge1xuICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDAuNXJlbTtcbiAgICB9XG4gICAgLmF4LW1kID4gLmF4LWljb24ge1xuICAgICAgcGFkZGluZy1pbmxpbmUtc3RhcnQ6IDEuMjVyZW07XG4gICAgICBmb250LXNpemU6IDEuMTI1cmVtO1xuICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiAwLjM1cmVtO1xuICAgIH1cbiAgICAuYXgtbGcgPiAuYXgtaWNvbiB7XG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMS41cmVtO1xuICAgICAgZm9udC1zaXplOiAxLjM1cmVtO1xuICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiAwLjc1cmVtO1xuICAgIH1cbiAgICAuYXgteGwgPiAuYXgtaWNvbiB7XG4gICAgICBwYWRkaW5nLWlubGluZS1zdGFydDogMS43NXJlbTtcbiAgICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgICAgcGFkZGluZy1pbmxpbmUtZW5kOiAwLjc1cmVtO1xuICAgIH1cbiAgYCxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkb25seScsICd0YWJJbmRleCcsICdwbGFjZWhvbGRlcicsICd2YWx1ZScsICdzdGF0ZScsICduYW1lJywgJ2lkJywgJ2xvb2snXSxcbiAgb3V0cHV0czogW1xuICAgICd2YWx1ZUNoYW5nZScsXG4gICAgJ3N0YXRlQ2hhbmdlJyxcbiAgICAnb25WYWx1ZUNoYW5nZWQnLFxuICAgICdvbkJsdXInLFxuICAgICdvbkZvY3VzJyxcbiAgICAncmVhZG9ubHlDaGFuZ2UnLFxuICAgICdkaXNhYmxlZENoYW5nZScsXG4gICAgJ29uS2V5RG93bicsXG4gICAgJ29uS2V5VXAnLFxuICAgICdvbktleVByZXNzJyxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgeyBwcm92aWRlOiBBWENvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYU2VhcmNoQm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWEZvY3VzYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYU2VhcmNoQm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWENsZWFyYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYU2VhcmNoQm94Q29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWFZhbHVhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhTZWFyY2hCb3hDb21wb25lbnQgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFYU2VhcmNoQm94Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFYU2VhcmNoQm94Q29tcG9uZW50IGV4dGVuZHMgY2xhc3NlcyhNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50PHN0cmluZz4sIE1YTG9va0NvbXBvbmVudCkge1xuICAvKiogQGlnbm9yZSAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICAvKiogQGlnbm9yZSAqL1xuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChBWFNlYXJjaGFibGVDb21wb25lbnQpXG4gICAgcHJpdmF0ZSBfcGFyZW50OiBBWFNlYXJjaGFibGVDb21wb25lbnQsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIGRlbGF5IHRpbWUgZm9yIHNlYXJjaCBhY3Rpb25zLCBzcGVjaWZpZWQgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBAZGVmYXVsdFZhbHVlIDUwMFxuICAgKi9cbiAgQElucHV0KClcbiAgZGVsYXlUaW1lID0gNTAwO1xuXG4gIC8qKlxuICAgKiBIYW5kbGVzIGNoYW5nZXMgdG8gdGhlIG1vZGVsIGFuZCB0cmlnZ2VycyBhIHNlYXJjaCBpbiB0aGUgcGFyZW50IGNvbXBvbmVudCBpZiBhdmFpbGFibGUuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB2YWx1ZVxuICAgKi9cbiAgX2hhbmRsZU1vZGVsQ2hhbmdlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5fcGFyZW50ICYmIHRoaXMuX3BhcmVudC5zZWFyY2gpIHtcbiAgICAgIHRoaXMuX3BhcmVudC5zZWFyY2godmFsdWUpO1xuICAgIH1cbiAgICB0aGlzLmNvbW1pdFZhbHVlKHZhbHVlLCB0cnVlKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MnKVxuICBnZXQgX19ob3N0Q2xhc3MoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiBbJ2F4LWVkaXRvci1jb250YWluZXInLCBgYXgtbG9vay0ke3RoaXMubG9va31gLCBgJHt0aGlzLmRpc2FibGVkID8gJ2F4LXN0YXRlLWRpc2FibGVkJyA6ICcnfWBdO1xuICB9XG59XG4iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1wcmVmaXhcIj4gPC9uZy1jb250ZW50PlxuXG48ZGl2ICNpY29uPlxuICA8bmctY29udGVudCBzZWxlY3Q9XCJheC1pY29uXCI+IDwvbmctY29udGVudD5cbjwvZGl2PlxuXG5AaWYgKCFpY29uLmNoaWxkcmVuLmxlbmd0aCkge1xuICA8c3BhbiBjbGFzcz1cImF4LWljb24gYXgtaWNvbi1zZWFyY2ggYXgtZWRpdG9yLWNvbnRyb2xcIj48L3NwYW4+XG59XG5cbjxpbnB1dFxuICAjaW5wdXRcbiAgY2xhc3M9XCJheC1pbnB1dFwiXG4gIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gIFthdHRyLnBsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyID8/ICdzZWFyY2gnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbY2xhc3MuYXgtc3RhdGUtcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICBbcmVhZG9ubHldPVwicmVhZG9ubHlcIlxuICBbdGFiaW5kZXhdPVwidGFiSW5kZXhcIlxuICBbbmdNb2RlbF09XCJ2YWx1ZVwiXG4gIFtkZWxheVRpbWVdPVwiZGVsYXlUaW1lXCJcbiAgKGF4RGVsYXllZFZhbHVlQ2hhbmdlZCk9XCJfaGFuZGxlTW9kZWxDaGFuZ2UoJGV2ZW50KVwiXG4gIChrZXlkb3duKT1cImVtaXRPbktleWRvd25FdmVudCgkZXZlbnQpXCJcbiAgKGtleXVwKT1cImVtaXRPbktleXVwRXZlbnQoJGV2ZW50KVwiXG4gIChrZXlwcmVzcyk9XCJlbWl0T25LZXlwcmVzc0V2ZW50KCRldmVudClcIlxuICAoZm9jdXMpPVwiZW1pdE9uRm9jdXNFdmVudCgkZXZlbnQpXCJcbiAgKGJsdXIpPVwiZW1pdE9uQmx1ckV2ZW50KCRldmVudClcIlxuLz5cblxuQGlmIChpbnB1dC52YWx1ZSAmJiAhZGlzYWJsZWQgJiYgIXJlYWRvbmx5KSB7XG4gIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LWNsZWFyLWJ1dHRvblwiPjwvbmctY29udGVudD5cbn1cbjxuZy1jb250ZW50IHNlbGVjdD1cImF4LXN1ZmZpeFwiPiA8L25nLWNvbnRlbnQ+XG4iXX0=
|