@acorex/components 5.4.0 → 5.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/base/mixin/datalist-component.class.mjs +17 -6
- package/esm2020/lib/calendar/calendar.component.mjs +1 -3
- package/esm2020/lib/color-picker/color-picker.component.mjs +4 -7
- package/esm2020/lib/form/form.component.mjs +8 -5
- package/esm2020/lib/menu/menu.component.mjs +5 -5
- package/esm2020/lib/searchbox/searchbox.component.mjs +13 -7
- package/esm2020/lib/searchbox/searchbox.module.mjs +4 -3
- package/esm2020/lib/selectbox/selectbox.component.mjs +16 -15
- package/esm2020/lib/validation/validation-rule.widget.mjs +17 -11
- package/fesm2015/acorex-components.mjs +66 -47
- package/fesm2015/acorex-components.mjs.map +1 -1
- package/fesm2020/acorex-components.mjs +66 -47
- package/fesm2020/acorex-components.mjs.map +1 -1
- package/lib/form/form.component.d.ts +1 -1
- package/lib/menu/menu.component.d.ts +1 -1
- package/lib/searchbox/searchbox.component.d.ts +1 -0
- package/lib/searchbox/searchbox.module.d.ts +2 -1
- package/lib/selectbox/selectbox.component.d.ts +3 -2
- package/package.json +1 -1
|
@@ -70,7 +70,7 @@ export class AXSelectBoxComponent extends AXBaseSelectionDropdownMixin {
|
|
|
70
70
|
onInit() {
|
|
71
71
|
super.onInit();
|
|
72
72
|
this._target = this._elementRef.nativeElement;
|
|
73
|
-
this.
|
|
73
|
+
this._updatePopupTitle();
|
|
74
74
|
}
|
|
75
75
|
onViewInit() {
|
|
76
76
|
super.onViewInit();
|
|
@@ -80,6 +80,11 @@ export class AXSelectBoxComponent extends AXBaseSelectionDropdownMixin {
|
|
|
80
80
|
this.value = null;
|
|
81
81
|
super.refresh();
|
|
82
82
|
}
|
|
83
|
+
_updatePopupTitle() {
|
|
84
|
+
// const count =this.selectedItems?.length;
|
|
85
|
+
// this._popoverTitle = count > 1 ? `(${count}) items selected`: this.placeholder || AXTranslator.get('selectbox.popover.title')
|
|
86
|
+
this._popoverTitle = this.placeholder || AXTranslator.get('selectbox.popover.title');
|
|
87
|
+
}
|
|
83
88
|
_handleOnItemClick(e, item) {
|
|
84
89
|
if (this.isItemDisabled(item)) {
|
|
85
90
|
return;
|
|
@@ -111,6 +116,7 @@ export class AXSelectBoxComponent extends AXBaseSelectionDropdownMixin {
|
|
|
111
116
|
this._focusSelectedItem();
|
|
112
117
|
this._forceFocus = false;
|
|
113
118
|
}
|
|
119
|
+
this._focusSearchBox();
|
|
114
120
|
}, 100);
|
|
115
121
|
}
|
|
116
122
|
}
|
|
@@ -175,7 +181,6 @@ export class AXSelectBoxComponent extends AXBaseSelectionDropdownMixin {
|
|
|
175
181
|
e.preventDefault();
|
|
176
182
|
}
|
|
177
183
|
else if ((e.code === 'Space' || e.code === 'Enter')) {
|
|
178
|
-
debugger;
|
|
179
184
|
e.preventDefault();
|
|
180
185
|
const focusedItemId = this.listContainer.nativeElement.querySelector('.ax-state-focus')?.dataset?.id;
|
|
181
186
|
const focusedItem = _.findLast(this.flatItems, [this.valueField, focusedItemId]);
|
|
@@ -214,14 +219,16 @@ export class AXSelectBoxComponent extends AXBaseSelectionDropdownMixin {
|
|
|
214
219
|
else {
|
|
215
220
|
this._focusSelectedItem();
|
|
216
221
|
}
|
|
217
|
-
|
|
218
|
-
if (this._searchBox && !this._isMobile) {
|
|
219
|
-
this._searchBox.focus();
|
|
220
|
-
}
|
|
222
|
+
this._focusSearchBox();
|
|
221
223
|
}
|
|
222
224
|
_handlePopupOnClosed(e) {
|
|
223
225
|
this.focus();
|
|
224
226
|
}
|
|
227
|
+
_focusSearchBox() {
|
|
228
|
+
if (this._searchBox && (!this._isMobile || this._searchBox.searchExp)) {
|
|
229
|
+
this._searchBox.focus();
|
|
230
|
+
}
|
|
231
|
+
}
|
|
225
232
|
_focusItemByNav(sign) {
|
|
226
233
|
const list = this.listContainer.nativeElement;
|
|
227
234
|
const fn = (s) => list.querySelector(s);
|
|
@@ -288,12 +295,6 @@ export class AXSelectBoxComponent extends AXBaseSelectionDropdownMixin {
|
|
|
288
295
|
this._fetchData();
|
|
289
296
|
}
|
|
290
297
|
}
|
|
291
|
-
_onSearchExprChanged(e) {
|
|
292
|
-
debugger;
|
|
293
|
-
this.empty();
|
|
294
|
-
this._forceFocus = true;
|
|
295
|
-
this._fetchData();
|
|
296
|
-
}
|
|
297
298
|
search(exp) {
|
|
298
299
|
debugger;
|
|
299
300
|
this.empty();
|
|
@@ -308,13 +309,13 @@ AXSelectBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", ver
|
|
|
308
309
|
AXSelectBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.9", type: AXSelectBoxComponent, selector: "ax-select-box", inputs: { isOpen: "isOpen", fitParent: "fitParent", dropdownWidth: "dropdownWidth", position: "position", disabled: "disabled", tabIndex: "tabIndex", readonly: "readonly", allowNull: "allowNull", value: "value", debounceTime: "debounceTime", name: "name", checked: "checked", placeholder: "placeholder", maxLength: "maxLength", type: "type", autoComplete: "autoComplete", pageSize: "pageSize", valueField: "valueField", textField: "textField", items: "items", disabledField: "disabledField", disabledCallback: "disabledCallback", multiple: "multiple", selectionMode: "selectionMode", clearButton: "clearButton", checkbox: "checkbox" }, outputs: { onOpened: "onOpened", onClosed: "onClosed", onBlur: "onBlur", onFocus: "onFocus", valueChange: "valueChange", onValueChanged: "onValueChanged", valueChanged: "valueChanged" }, host: { listeners: { "keydown": "_handleKeydown($event)" }, classAttribute: "ax-editor-container ax-drop-down" }, providers: [
|
|
309
310
|
{ provide: AXClosbaleComponent, useExisting: AXSelectBoxComponent },
|
|
310
311
|
{ provide: AXSearchableComponent, useExisting: AXSelectBoxComponent }
|
|
311
|
-
], queries: [{ propertyName: "_searchBox", first: true, predicate: AXSearchBoxComponent, descendants: true, static: true }, { propertyName: "_contentEmptyTemplate", first: true, predicate: ["emptyTemplate"], descendants: true }], viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, static: true }, { propertyName: "listContainer", first: true, predicate: ["listContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-prefix\">\r\n</ng-content>\r\n<div class=\"ax-dropdown-content\" [class.ax-state-disabled]=\"disabled\" (click)=\"_handleInputClickEvent($event)\">\r\n <div class=\"ax-select-box-selection\" [tabindex]=\"tabIndex\" (focus)=\"_emitOnFocusEvent($event)\"\r\n (blur)=\"_emitOnBlurEvent($event)\">\r\n <ng-container *ngIf=\"selectedItems && selectedItems.length; else showPlaceholder\">\r\n <ng-container *ngIf=\"!multiple; then singleSelectedTemplate; else multipleSelectedTemplate\"></ng-container>\r\n <ng-template #singleSelectedTemplate>\r\n <ng-container *ngFor=\"let item of selectedItems\">\r\n <span class=\"ax-mx-2\"> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #multipleSelectedTemplate>\r\n <div class=\"ax-flex ax-mx-2\">\r\n <ng-container *ngFor=\"let item of selectedItems\">\r\n <ax-badge [text]=\"_getItemDisplayTextTemplte(item)\" color=\"light\" class=\"ax-me-2\">\r\n <ax-suffix>\r\n <ax-icon icon=\"ax-ic ax-ic-close ax-cursor-pointer\"\r\n (click)=\"_handleBadgeRemove($event,item)\"></ax-icon>\r\n </ax-suffix>\r\n </ax-badge>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #showPlaceholder>\r\n <div class=\"ax-placeholder\" role=\"textbox\" area-readonly=\"true\"> {{placeholder}}</div>\r\n </ng-template>\r\n </div>\r\n</div>\r\n<ax-button color=\"light\" look=\"blank\" (onClick)=\"clear()\" [tabIndex]=\"-1\"\r\n *ngIf=\"value && clearButton && !(disabled || readonly)\">\r\n <ax-icon icon=\"ax-ic ax-ic-close\"></ax-icon>\r\n</ax-button>\r\n<ax-button [disabled]=\"disabled\" [tabIndex]=\"-1\" color=\"light\" look=\"blank\" (onClick)=\"_handleArrowClickEvent($event)\">\r\n <ax-prefix *ngIf=\"(isLoading && !this.popover.isOpen);else icon\">\r\n <ax-loading type=\"spinner\"></ax-loading>\r\n </ax-prefix>\r\n <ng-template #icon>\r\n <ax-icon #icon icon=\"ax-ic ax-ic-chevron ax-transform ax--rotate-90\"></ax-icon>\r\n </ng-template>\r\n</ax-button>\r\n<ng-content select=\"ax-validation-rule\">\r\n</ng-content>\r\n<ng-content select=\"ax-suffix\">\r\n</ng-content>\r\n<ax-popover [target]=\"_target\" [position]=\"position\" [openTrigger]=\"'manual'\" [closeTrigger]=\"'clickout'\" [adaptivityEnabled]=\"true\"\r\n (onOpened)=\"_handlePopupOnOpened($event)\" (onClosed)=\"_handlePopupOnClosed($event)\">\r\n <div class=\"ax-overlay-pane \" (keydown)=\"_handlePopoverKeydown($event)\" tabindex=\"0\" aria-modal=\"true\" cdkTrapFocus\r\n [class.ax-overlay-actionsheet]=\"_isMobile\" [class.ax-full]=\"_searchBox || isLazy\"\r\n [style.min-width.px]=\"_popoverWidth\">\r\n <div class=\"ax-list\" >\r\n <ax-header *ngIf=\"_isMobile\" >\r\n <ax-title [text]=\"_popoverTitle\"></ax-title>\r\n <ax-close-button [icon]=\"multiple?'ax-ic-check !ax-text-primary-500':'ax-ic-close'\"></ax-close-button>\r\n </ax-header>\r\n <div class=\"ax-p-2\" [class.ax-hidden]=\"!_searchBox\" [cdkTrapFocus]=\"_searchBox!=null\">\r\n <ng-content select=\"ax-search-box\" ></ng-content>\r\n </div>\r\n <div class=\"ax-content ax-list-items-container ax-default\" (scroll)=\"_handleListScroll($event)\"\r\n #listContainer>\r\n <ng-container *ngIf=\"displayItems.length; else tmpEmpty\">\r\n <ul>\r\n <ng-container *ngTemplateOutlet=\"tmpTree; context:{ list: displayItems }\">\r\n </ng-container>\r\n <ng-template #tmpTree let-list=\"list\">\r\n <ng-container *ngFor=\"let item of list;let i = index;trackBy : _trackByFunction\">\r\n <ng-container *ngIf=\"itemTemplate; else defualtTemplate\">\r\n <li class=\"ax-list-item\" (click)=\"_handleOnItemClick($event,item)\"\r\n [attr.data-id]=\"item[this.valueField]\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item,direction:direction}\">\r\n </ng-container>\r\n </li>\r\n </ng-container>\r\n <ng-template #defualtTemplate>\r\n <ng-container *ngIf=\"item.children?.length > 0;else tmpItem\">\r\n <li class=\"ax-list-item-group\" [attr.data-id]=\"item[this.valueField]\">\r\n <span> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n <ul *ngIf=\"item.children?.length > 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"tmpTree; context:{ list: item.children }\">\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n <ng-template #tmpItem>\r\n <ng-container *ngIf=\"!multiple; else multipleTemplate\">\r\n <li class=\"ax-list-item\" [class.ax-state-selected]=\"isItemSelected(item)\"\r\n [class.ax-state-disabled]=\"isItemDisabled(item)\" [attr.tabindex]=\"i\"\r\n (click)=\"_handleOnItemClick($event,item)\"\r\n [attr.data-id]=\"item[this.valueField]\">\r\n <span> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n </li>\r\n </ng-container>\r\n <ng-template #multipleTemplate>\r\n <li class=\"ax-list-item\" [class.ax-state-selected]=\"isItemSelected(item)\"\r\n [class.ax-state-disabled]=\"isItemDisabled(item)\"\r\n [class.ax-check-box]=\"checkbox\" [attr.tabindex]=\"i\"\r\n (click)=\"_handleOnItemClick($event,item)\"\r\n [attr.data-id]=\"item[this.valueField]\">\r\n <input type=\"checkbox\" [class.ax-state-disabled]=\"isItemDisabled(item)\"\r\n *ngIf=\"checkbox\" [checked]=\"isItemSelected(item)\"\r\n [disabled]=\"isItemDisabled(item)\">\r\n <span class=\"ax-ms-2\"> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n </li>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngIf=\"isLoading\">\r\n <ng-container *ngIf=\"loadingTemplate; else elseLoadingTemplate\">\r\n <ng-container *ngTemplateOutlet=\"loadingTemplate\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #elseLoadingTemplate>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\">\r\n <ax-loading text=\"{{ 'layout.loading.text' | trans }}\"></ax-loading>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #tmpEmpty>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <ng-container *ngIf=\"emptyTemplate; else elseEmptyTemplate\">\r\n <ng-container *ngTemplateOutlet=\"emptyTemplate\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #elseEmptyTemplate>\r\n <div class=\"ax-list-item\">\r\n {{ 'common.no-result-found' | trans }}\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n\r\n </div>\r\n <!-- <div class=\"ax-list-items-container ax-vertical ax-default\" [class.ax-full]=\"_isMobile\"\r\n >\r\n \r\n </div> -->\r\n <!-- <div class=\"ax-footer\">footer</div> -->\r\n </div>\r\n </div>\r\n</ax-popover>", components: [{ type: i2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { type: i3.AXDecoratorSuffixComponent, selector: "ax-suffix" }, { type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { type: i5.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "size", "color", "look", "text", "submitBehavior", "cancelBehavior", "toggleable", "selected"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange"] }, { type: i6.AXDecoratorPrefixComponent, selector: "ax-prefix" }, { type: i7.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "text"], outputs: ["visibleChange"] }, { type: i8.AXPopoverComponent, selector: "ax-popover", inputs: ["target", "position", "openTrigger", "closeTrigger", "hasBackdrop", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { type: i9.AXDecoratorHeaderComponent, selector: "ax-header" }, { type: i10.AXDecoratorTitleComponent, selector: "ax-title", inputs: ["text"] }, { type: i11.AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["icon"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i12.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "trans": i1.AXTranslatorPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
312
|
+
], queries: [{ propertyName: "_searchBox", first: true, predicate: AXSearchBoxComponent, descendants: true, static: true }, { propertyName: "_contentEmptyTemplate", first: true, predicate: ["emptyTemplate"], descendants: true }], viewQueries: [{ propertyName: "popover", first: true, predicate: AXPopoverComponent, descendants: true, static: true }, { propertyName: "listContainer", first: true, predicate: ["listContainer"], descendants: true, static: true }], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-prefix\">\r\n</ng-content>\r\n<div class=\"ax-dropdown-content\" [class.ax-state-disabled]=\"disabled\" (click)=\"_handleInputClickEvent($event)\">\r\n <div class=\"ax-select-box-selection\" [tabindex]=\"tabIndex\" (focus)=\"_emitOnFocusEvent($event)\"\r\n (blur)=\"_emitOnBlurEvent($event)\">\r\n <ng-container *ngIf=\"selectedItems && selectedItems.length; else showPlaceholder\">\r\n <ng-container *ngIf=\"!multiple; then singleSelectedTemplate; else multipleSelectedTemplate\"></ng-container>\r\n <ng-template #singleSelectedTemplate>\r\n <ng-container *ngFor=\"let item of selectedItems\">\r\n <span class=\"ax-mx-2\"> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #multipleSelectedTemplate>\r\n <div class=\"ax-flex ax-mx-2\">\r\n <ng-container *ngFor=\"let item of selectedItems\">\r\n <ax-badge [text]=\"_getItemDisplayTextTemplte(item)\" color=\"light\" class=\"ax-me-2\">\r\n <ax-suffix>\r\n <ax-icon icon=\"ax-ic ax-ic-close ax-cursor-pointer\"\r\n (click)=\"_handleBadgeRemove($event,item)\"></ax-icon>\r\n </ax-suffix>\r\n </ax-badge>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #showPlaceholder>\r\n <div class=\"ax-placeholder\" role=\"textbox\" area-readonly=\"true\"> {{placeholder}}</div>\r\n </ng-template>\r\n </div>\r\n</div>\r\n<ax-button color=\"light\" look=\"blank\" (onClick)=\"clear()\" [tabIndex]=\"-1\"\r\n *ngIf=\"value && clearButton && !(disabled || readonly)\">\r\n <ax-icon icon=\"ax-ic ax-ic-close\"></ax-icon>\r\n</ax-button>\r\n<ax-button [disabled]=\"disabled\" [tabIndex]=\"-1\" color=\"light\" look=\"blank\" (onClick)=\"_handleArrowClickEvent($event)\">\r\n <ax-prefix *ngIf=\"(isLoading && !this.popover.isOpen);else icon\">\r\n <ax-loading type=\"spinner\"></ax-loading>\r\n </ax-prefix>\r\n <ng-template #icon>\r\n <ax-icon #icon icon=\"ax-ic ax-ic-chevron ax-transform ax--rotate-90\"></ax-icon>\r\n </ng-template>\r\n</ax-button>\r\n<ng-content select=\"ax-validation-rule\">\r\n</ng-content>\r\n<ng-content select=\"ax-suffix\">\r\n</ng-content>\r\n<ax-popover [target]=\"_target\" [position]=\"position\" [openTrigger]=\"'manual'\" [closeTrigger]=\"'clickout'\"\r\n [adaptivityEnabled]=\"true\" (onOpened)=\"_handlePopupOnOpened($event)\" (onClosed)=\"_handlePopupOnClosed($event)\">\r\n <div class=\"ax-overlay-pane \" (keydown)=\"_handlePopoverKeydown($event)\" tabindex=\"0\" aria-modal=\"true\" cdkTrapFocus\r\n [class.ax-overlay-actionsheet]=\"_isMobile\" [class.ax-full]=\"_searchBox || isLazy\"\r\n [style.min-width.px]=\"_popoverWidth\">\r\n <div class=\"ax-list\">\r\n <ax-header *ngIf=\"_isMobile\">\r\n <ax-title [text]=\"_popoverTitle\"></ax-title>\r\n <ax-close-button [icon]=\"multiple?'ax-ic-check !ax-text-primary-500':'ax-ic-close'\"></ax-close-button>\r\n </ax-header>\r\n <div class=\"ax-p-2\" [class.ax-hidden]=\"!_searchBox\" [cdkTrapFocus]=\"_searchBox!=null\">\r\n <ng-content select=\"ax-search-box\"></ng-content>\r\n </div>\r\n <div class=\"ax-content ax-list-items-container ax-default\" (scroll)=\"_handleListScroll($event)\"\r\n #listContainer>\r\n <ng-container *ngIf=\"displayItems.length; else tmpEmpty\">\r\n <ul>\r\n <ng-container *ngTemplateOutlet=\"tmpTree; context:{ list: displayItems }\">\r\n </ng-container>\r\n <ng-template #tmpTree let-list=\"list\">\r\n <ng-container *ngFor=\"let item of list;let i = index;trackBy : _trackByFunction\">\r\n <ng-container *ngIf=\"itemTemplate; else defualtTemplate\">\r\n <li class=\"ax-list-item\" (click)=\"_handleOnItemClick($event,item)\"\r\n [attr.data-id]=\"item[this.valueField]\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item,direction:direction}\">\r\n </ng-container>\r\n </li>\r\n </ng-container>\r\n <ng-template #defualtTemplate>\r\n <ng-container *ngIf=\"item.children?.length > 0;else tmpItem\">\r\n <li class=\"ax-list-item-group\" [attr.data-id]=\"item[this.valueField]\">\r\n <span> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n <ul *ngIf=\"item.children?.length > 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"tmpTree; context:{ list: item.children }\">\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n <ng-template #tmpItem>\r\n <ng-container *ngIf=\"!multiple; else multipleTemplate\">\r\n <li class=\"ax-list-item\" [class.ax-state-selected]=\"isItemSelected(item)\"\r\n [class.ax-state-disabled]=\"isItemDisabled(item)\" [attr.tabindex]=\"i\"\r\n (click)=\"_handleOnItemClick($event,item)\"\r\n [attr.data-id]=\"item[this.valueField]\">\r\n <span> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n </li>\r\n </ng-container>\r\n <ng-template #multipleTemplate>\r\n <li class=\"ax-list-item\" [class.ax-state-selected]=\"isItemSelected(item)\"\r\n [class.ax-state-disabled]=\"isItemDisabled(item)\"\r\n [class.ax-check-box]=\"checkbox\" [attr.tabindex]=\"i\"\r\n (click)=\"_handleOnItemClick($event,item)\"\r\n [attr.data-id]=\"item[this.valueField]\">\r\n <input type=\"checkbox\" [class.ax-state-disabled]=\"isItemDisabled(item)\"\r\n *ngIf=\"checkbox\" [checked]=\"isItemSelected(item)\"\r\n [disabled]=\"isItemDisabled(item)\">\r\n <span class=\"ax-ms-2\"> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n </li>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngIf=\"isLoading\">\r\n <ng-container *ngIf=\"loadingTemplate; else elseLoadingTemplate\">\r\n <ng-container *ngTemplateOutlet=\"loadingTemplate\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #elseLoadingTemplate>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\">\r\n <ax-loading text=\"{{ 'layout.loading.text' | trans }}\"></ax-loading>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #tmpEmpty>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <ng-container *ngIf=\"emptyTemplate; else elseEmptyTemplate\">\r\n <ng-container *ngTemplateOutlet=\"emptyTemplate\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #elseEmptyTemplate>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\"\r\n [innerHTML]=\"'common.no-result-for' | trans:{exp:this._searchBox? this._searchBox.searchExp :''}\">\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n\r\n </div>\r\n <!-- <div class=\"ax-list-items-container ax-vertical ax-default\" [class.ax-full]=\"_isMobile\"\r\n >\r\n \r\n </div> -->\r\n <!-- <div class=\"ax-footer\">footer</div> -->\r\n </div>\r\n </div>\r\n</ax-popover>", components: [{ type: i2.AXBadgeComponent, selector: "ax-badge", inputs: ["color", "look", "text"] }, { type: i3.AXDecoratorSuffixComponent, selector: "ax-suffix" }, { type: i4.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { type: i5.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "tabIndex", "size", "color", "look", "text", "submitBehavior", "cancelBehavior", "toggleable", "selected"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange"] }, { type: i6.AXDecoratorPrefixComponent, selector: "ax-prefix" }, { type: i7.AXLoadingComponent, selector: "ax-loading", inputs: ["visible", "type", "text"], outputs: ["visibleChange"] }, { type: i8.AXPopoverComponent, selector: "ax-popover", inputs: ["target", "position", "openTrigger", "closeTrigger", "hasBackdrop", "backdropClass", "adaptivityEnabled"], outputs: ["onOpened", "onClosed"] }, { type: i9.AXDecoratorHeaderComponent, selector: "ax-header" }, { type: i10.AXDecoratorTitleComponent, selector: "ax-title", inputs: ["text"] }, { type: i11.AXDecoratorCloseButtonComponent, selector: "ax-close-button", inputs: ["icon"] }], directives: [{ type: i12.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i12.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i13.CdkTrapFocus, selector: "[cdkTrapFocus]", inputs: ["cdkTrapFocus", "cdkTrapFocusAutoCapture"], exportAs: ["cdkTrapFocus"] }, { type: i12.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }], pipes: { "trans": i1.AXTranslatorPipe }, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
312
313
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImport: i0, type: AXSelectBoxComponent, decorators: [{
|
|
313
314
|
type: Component,
|
|
314
315
|
args: [{ selector: 'ax-select-box', inputs: [...DROPDOWN_INPUTS, ...INTERACTIVE_INPUTS, ...VALUE_INPUTS, ...TEXTBOX_INPUTS, ...DATALIST_INPUTS, ...SELECTION_INPUTS], outputs: [...DROPDOWN_OUTPUT, ...INTERACTIVE_OUTPUT, ...VALUE_OUTPUT, ...TEXTBOX_OUTPUT, ...SELECTION_OUTPUT], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
|
|
315
316
|
{ provide: AXClosbaleComponent, useExisting: AXSelectBoxComponent },
|
|
316
317
|
{ provide: AXSearchableComponent, useExisting: AXSelectBoxComponent }
|
|
317
|
-
], host: { class: 'ax-editor-container ax-drop-down' }, template: "<ng-content select=\"ax-prefix\">\r\n</ng-content>\r\n<div class=\"ax-dropdown-content\" [class.ax-state-disabled]=\"disabled\" (click)=\"_handleInputClickEvent($event)\">\r\n <div class=\"ax-select-box-selection\" [tabindex]=\"tabIndex\" (focus)=\"_emitOnFocusEvent($event)\"\r\n (blur)=\"_emitOnBlurEvent($event)\">\r\n <ng-container *ngIf=\"selectedItems && selectedItems.length; else showPlaceholder\">\r\n <ng-container *ngIf=\"!multiple; then singleSelectedTemplate; else multipleSelectedTemplate\"></ng-container>\r\n <ng-template #singleSelectedTemplate>\r\n <ng-container *ngFor=\"let item of selectedItems\">\r\n <span class=\"ax-mx-2\"> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #multipleSelectedTemplate>\r\n <div class=\"ax-flex ax-mx-2\">\r\n <ng-container *ngFor=\"let item of selectedItems\">\r\n <ax-badge [text]=\"_getItemDisplayTextTemplte(item)\" color=\"light\" class=\"ax-me-2\">\r\n <ax-suffix>\r\n <ax-icon icon=\"ax-ic ax-ic-close ax-cursor-pointer\"\r\n (click)=\"_handleBadgeRemove($event,item)\"></ax-icon>\r\n </ax-suffix>\r\n </ax-badge>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #showPlaceholder>\r\n <div class=\"ax-placeholder\" role=\"textbox\" area-readonly=\"true\"> {{placeholder}}</div>\r\n </ng-template>\r\n </div>\r\n</div>\r\n<ax-button color=\"light\" look=\"blank\" (onClick)=\"clear()\" [tabIndex]=\"-1\"\r\n *ngIf=\"value && clearButton && !(disabled || readonly)\">\r\n <ax-icon icon=\"ax-ic ax-ic-close\"></ax-icon>\r\n</ax-button>\r\n<ax-button [disabled]=\"disabled\" [tabIndex]=\"-1\" color=\"light\" look=\"blank\" (onClick)=\"_handleArrowClickEvent($event)\">\r\n <ax-prefix *ngIf=\"(isLoading && !this.popover.isOpen);else icon\">\r\n <ax-loading type=\"spinner\"></ax-loading>\r\n </ax-prefix>\r\n <ng-template #icon>\r\n <ax-icon #icon icon=\"ax-ic ax-ic-chevron ax-transform ax--rotate-90\"></ax-icon>\r\n </ng-template>\r\n</ax-button>\r\n<ng-content select=\"ax-validation-rule\">\r\n</ng-content>\r\n<ng-content select=\"ax-suffix\">\r\n</ng-content>\r\n<ax-popover [target]=\"_target\" [position]=\"position\" [openTrigger]=\"'manual'\" [closeTrigger]=\"'clickout'\"
|
|
318
|
+
], host: { class: 'ax-editor-container ax-drop-down' }, template: "<ng-content select=\"ax-prefix\">\r\n</ng-content>\r\n<div class=\"ax-dropdown-content\" [class.ax-state-disabled]=\"disabled\" (click)=\"_handleInputClickEvent($event)\">\r\n <div class=\"ax-select-box-selection\" [tabindex]=\"tabIndex\" (focus)=\"_emitOnFocusEvent($event)\"\r\n (blur)=\"_emitOnBlurEvent($event)\">\r\n <ng-container *ngIf=\"selectedItems && selectedItems.length; else showPlaceholder\">\r\n <ng-container *ngIf=\"!multiple; then singleSelectedTemplate; else multipleSelectedTemplate\"></ng-container>\r\n <ng-template #singleSelectedTemplate>\r\n <ng-container *ngFor=\"let item of selectedItems\">\r\n <span class=\"ax-mx-2\"> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n </ng-container>\r\n </ng-template>\r\n <ng-template #multipleSelectedTemplate>\r\n <div class=\"ax-flex ax-mx-2\">\r\n <ng-container *ngFor=\"let item of selectedItems\">\r\n <ax-badge [text]=\"_getItemDisplayTextTemplte(item)\" color=\"light\" class=\"ax-me-2\">\r\n <ax-suffix>\r\n <ax-icon icon=\"ax-ic ax-ic-close ax-cursor-pointer\"\r\n (click)=\"_handleBadgeRemove($event,item)\"></ax-icon>\r\n </ax-suffix>\r\n </ax-badge>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #showPlaceholder>\r\n <div class=\"ax-placeholder\" role=\"textbox\" area-readonly=\"true\"> {{placeholder}}</div>\r\n </ng-template>\r\n </div>\r\n</div>\r\n<ax-button color=\"light\" look=\"blank\" (onClick)=\"clear()\" [tabIndex]=\"-1\"\r\n *ngIf=\"value && clearButton && !(disabled || readonly)\">\r\n <ax-icon icon=\"ax-ic ax-ic-close\"></ax-icon>\r\n</ax-button>\r\n<ax-button [disabled]=\"disabled\" [tabIndex]=\"-1\" color=\"light\" look=\"blank\" (onClick)=\"_handleArrowClickEvent($event)\">\r\n <ax-prefix *ngIf=\"(isLoading && !this.popover.isOpen);else icon\">\r\n <ax-loading type=\"spinner\"></ax-loading>\r\n </ax-prefix>\r\n <ng-template #icon>\r\n <ax-icon #icon icon=\"ax-ic ax-ic-chevron ax-transform ax--rotate-90\"></ax-icon>\r\n </ng-template>\r\n</ax-button>\r\n<ng-content select=\"ax-validation-rule\">\r\n</ng-content>\r\n<ng-content select=\"ax-suffix\">\r\n</ng-content>\r\n<ax-popover [target]=\"_target\" [position]=\"position\" [openTrigger]=\"'manual'\" [closeTrigger]=\"'clickout'\"\r\n [adaptivityEnabled]=\"true\" (onOpened)=\"_handlePopupOnOpened($event)\" (onClosed)=\"_handlePopupOnClosed($event)\">\r\n <div class=\"ax-overlay-pane \" (keydown)=\"_handlePopoverKeydown($event)\" tabindex=\"0\" aria-modal=\"true\" cdkTrapFocus\r\n [class.ax-overlay-actionsheet]=\"_isMobile\" [class.ax-full]=\"_searchBox || isLazy\"\r\n [style.min-width.px]=\"_popoverWidth\">\r\n <div class=\"ax-list\">\r\n <ax-header *ngIf=\"_isMobile\">\r\n <ax-title [text]=\"_popoverTitle\"></ax-title>\r\n <ax-close-button [icon]=\"multiple?'ax-ic-check !ax-text-primary-500':'ax-ic-close'\"></ax-close-button>\r\n </ax-header>\r\n <div class=\"ax-p-2\" [class.ax-hidden]=\"!_searchBox\" [cdkTrapFocus]=\"_searchBox!=null\">\r\n <ng-content select=\"ax-search-box\"></ng-content>\r\n </div>\r\n <div class=\"ax-content ax-list-items-container ax-default\" (scroll)=\"_handleListScroll($event)\"\r\n #listContainer>\r\n <ng-container *ngIf=\"displayItems.length; else tmpEmpty\">\r\n <ul>\r\n <ng-container *ngTemplateOutlet=\"tmpTree; context:{ list: displayItems }\">\r\n </ng-container>\r\n <ng-template #tmpTree let-list=\"list\">\r\n <ng-container *ngFor=\"let item of list;let i = index;trackBy : _trackByFunction\">\r\n <ng-container *ngIf=\"itemTemplate; else defualtTemplate\">\r\n <li class=\"ax-list-item\" (click)=\"_handleOnItemClick($event,item)\"\r\n [attr.data-id]=\"item[this.valueField]\">\r\n <ng-container\r\n *ngTemplateOutlet=\"itemTemplate; context: { $implicit: item,direction:direction}\">\r\n </ng-container>\r\n </li>\r\n </ng-container>\r\n <ng-template #defualtTemplate>\r\n <ng-container *ngIf=\"item.children?.length > 0;else tmpItem\">\r\n <li class=\"ax-list-item-group\" [attr.data-id]=\"item[this.valueField]\">\r\n <span> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n <ul *ngIf=\"item.children?.length > 0\">\r\n <ng-container\r\n *ngTemplateOutlet=\"tmpTree; context:{ list: item.children }\">\r\n </ng-container>\r\n </ul>\r\n </li>\r\n </ng-container>\r\n <ng-template #tmpItem>\r\n <ng-container *ngIf=\"!multiple; else multipleTemplate\">\r\n <li class=\"ax-list-item\" [class.ax-state-selected]=\"isItemSelected(item)\"\r\n [class.ax-state-disabled]=\"isItemDisabled(item)\" [attr.tabindex]=\"i\"\r\n (click)=\"_handleOnItemClick($event,item)\"\r\n [attr.data-id]=\"item[this.valueField]\">\r\n <span> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n </li>\r\n </ng-container>\r\n <ng-template #multipleTemplate>\r\n <li class=\"ax-list-item\" [class.ax-state-selected]=\"isItemSelected(item)\"\r\n [class.ax-state-disabled]=\"isItemDisabled(item)\"\r\n [class.ax-check-box]=\"checkbox\" [attr.tabindex]=\"i\"\r\n (click)=\"_handleOnItemClick($event,item)\"\r\n [attr.data-id]=\"item[this.valueField]\">\r\n <input type=\"checkbox\" [class.ax-state-disabled]=\"isItemDisabled(item)\"\r\n *ngIf=\"checkbox\" [checked]=\"isItemSelected(item)\"\r\n [disabled]=\"isItemDisabled(item)\">\r\n <span class=\"ax-ms-2\"> {{ _getItemDisplayTextTemplte(item) }}</span>\r\n </li>\r\n </ng-template>\r\n </ng-template>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n </ul>\r\n </ng-container>\r\n <ng-container *ngIf=\"isLoading\">\r\n <ng-container *ngIf=\"loadingTemplate; else elseLoadingTemplate\">\r\n <ng-container *ngTemplateOutlet=\"loadingTemplate\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #elseLoadingTemplate>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\">\r\n <ax-loading text=\"{{ 'layout.loading.text' | trans }}\"></ax-loading>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n <ng-template #tmpEmpty>\r\n <ng-container *ngIf=\"!isLoading\">\r\n <ng-container *ngIf=\"emptyTemplate; else elseEmptyTemplate\">\r\n <ng-container *ngTemplateOutlet=\"emptyTemplate\">\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #elseEmptyTemplate>\r\n <div class=\"ax-flex ax-items-center ax-justify-center ax-p-4\"\r\n [innerHTML]=\"'common.no-result-for' | trans:{exp:this._searchBox? this._searchBox.searchExp :''}\">\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </ng-template>\r\n\r\n </div>\r\n <!-- <div class=\"ax-list-items-container ax-vertical ax-default\" [class.ax-full]=\"_isMobile\"\r\n >\r\n \r\n </div> -->\r\n <!-- <div class=\"ax-footer\">footer</div> -->\r\n </div>\r\n </div>\r\n</ax-popover>" }]
|
|
318
319
|
}], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i0.NgZone }, { type: i1.AXPlatform }]; }, propDecorators: { popover: [{
|
|
319
320
|
type: ViewChild,
|
|
320
321
|
args: [AXPopoverComponent, { static: true }]
|
|
@@ -335,4 +336,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
|
335
336
|
type: HostListener,
|
|
336
337
|
args: ['keydown', ['$event']]
|
|
337
338
|
}] } });
|
|
338
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Ym94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvc2VsZWN0Ym94L3NlbGVjdGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3NlbGVjdGJveC9zZWxlY3Rib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBdUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsNEJBQTRCLEVBQWdCLG1CQUFtQixFQUFFLHFCQUFxQixFQUF1QixNQUFNLFNBQVMsQ0FBQztBQUN0SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFB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QUFZO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFZcEQsV0FBVztzQkFEVixLQUFLO2dCQVNOLFFBQVE7c0JBRFAsS0FBSztnQkFJRSxhQUFhO3NCQURwQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXBDLHFCQUFxQjtzQkFENUIsWUFBWTt1QkFBQyxlQUFlO2dCQStHN0IsY0FBYztzQkFEYixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUGxhdGZvcm0sIEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE5nWm9uZSwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgQVhCYXNlU2VsZWN0aW9uRHJvcGRvd25NaXhpbiwgQVhDbGlja0V2ZW50LCBBWENsb3NiYWxlQ29tcG9uZW50LCBBWFNlYXJjaGFibGVDb21wb25lbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHsgREFUQUxJU1RfSU5QVVRTIH0gZnJvbSAnLi4vYmFzZS9taXhpbi9kYXRhbGlzdC1jb21wb25lbnQuY2xhc3MnO1xyXG5pbXBvcnQgeyBEUk9QRE9XTl9JTlBVVFMsIERST1BET1dOX09VVFBVVCB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vZHJvcGRvd24tbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBJTlRFUkFDVElWRV9JTlBVVFMsIElOVEVSQUNUSVZFX09VVFBVVCB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vaW50ZXJhY3RpdmUtbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBTRUxFQ1RJT05fSU5QVVRTLCBTRUxFQ1RJT05fT1VUUFVUIH0gZnJvbSAnLi4vYmFzZS9taXhpbi9zZWxlY3Rpb24tY29tcG9uZW50LmNsYXNzJztcclxuaW1wb3J0IHsgVEVYVEJPWF9JTlBVVFMsIFRFWFRCT1hfT1VUUFVUIH0gZnJvbSAnLi4vYmFzZS9taXhpbi90ZXh0Ym94LW1peGluLmNsYXNzJztcclxuaW1wb3J0IHsgVkFMVUVfSU5QVVRTLCBWQUxVRV9PVVRQVVQgfSBmcm9tICcuLi9iYXNlL21peGluL3ZhbHVlLW1peGluLmNsYXNzJztcclxuaW1wb3J0IHsgQVhQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wb3Zlcic7XHJcbmltcG9ydCB7IEFYU2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoYm94JztcclxuXHJcbi8qKlxyXG4gKiBUaGUgQnV0dG9uIGlzIGEgY29tcG9uZW50IHdoaWNoIGRldGVjdHMgdXNlciBpbnRlcmFjdGlvbiBhbmQgdHJpZ2dlcnMgYSBjb3JyZXNwb25kaW5nIGV2ZW50XHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXgtc2VsZWN0LWJveCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJ3NlbGVjdGJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBpbnB1dHM6IFsuLi5EUk9QRE9XTl9JTlBVVFMsIC4uLklOVEVSQUNUSVZFX0lOUFVUUywgLi4uVkFMVUVfSU5QVVRTLCAuLi5URVhUQk9YX0lOUFVUUywgLi4uREFUQUxJU1RfSU5QVVRTLCAuLi5TRUxFQ1RJT05fSU5QVVRTXSxcclxuICAgIG91dHB1dHM6IFsuLi5EUk9QRE9XTl9PVVRQVVQsIC4uLklOVEVSQUNUSVZFX09VVFBVVCwgLi4uVkFMVUVfT1VUUFVULCAuLi5URVhUQk9YX09VVFBVVCwgLi4uU0VMRUNUSU9OX09VVFBVVF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IEFYQ2xvc2JhbGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFNlbGVjdEJveENvbXBvbmVudCB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQVhTZWFyY2hhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhTZWxlY3RCb3hDb21wb25lbnQgfVxyXG4gICAgXSxcclxuICAgIGhvc3Q6IHsgY2xhc3M6ICdheC1lZGl0b3ItY29udGFpbmVyIGF4LWRyb3AtZG93bicgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhTZWxlY3RCb3hDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VTZWxlY3Rpb25Ecm9wZG93bk1peGluIHtcclxuXHJcblxyXG4gICAgQFZpZXdDaGlsZChBWFBvcG92ZXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwb3BvdmVyOiBBWFBvcG92ZXJDb21wb25lbnQ7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChBWFNlYXJjaEJveENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIF9zZWFyY2hCb3g6IEFYU2VhcmNoQm94Q29tcG9uZW50O1xyXG5cclxuICAgIF90YXJnZXQ6IEhUTUxEaXZFbGVtZW50O1xyXG4gICAgX3BvcG92ZXJUaXRsZTogc3RyaW5nO1xyXG4gICAgX3BvcG92ZXJXaWR0aDogbnVtYmVyO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqICBEZWZpbmVzIHRoZSBjbGVhckJ1dHRvbi5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGNsZWFyQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqICBEZWZpbmVzIHRoZSBjaGVja2JveC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGNoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbGlzdENvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwcml2YXRlIGxpc3RDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5VGVtcGxhdGUnKVxyXG4gICAgcHJpdmF0ZSBfY29udGVudEVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG5cclxuICAgIGdldCBlbXB0eVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50RW1wdHlUZW1wbGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBfaXNNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIF9mb3JjZUZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKipcclxuICAgICogIEBpZ25vcmVcclxuICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcml2YXRlIF9wbGF0Zm9ybTogQVhQbGF0Zm9ybSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9lbGVtZW50UmVmLCBfY2RyKTtcclxuICAgICAgICB0aGlzLl9pc01vYmlsZSA9IHRoaXMuX3BsYXRmb3JtLmlzKCdNb2JpbGUnKTtcclxuICAgICAgICB0aGlzLl9wbGF0Zm9ybS5yZXNpemUuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5faXNNb2JpbGUgPSB0aGlzLl9wbGF0Zm9ybS5pcygnTW9iaWxlJyk7XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJXaWR0aCA9IHRoaXMuX2lzTW9iaWxlID8gbnVsbCA6IHRoaXMuX3RhcmdldC5vZmZzZXRXaWR0aDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQXJyb3dDbGlja0V2ZW50KGU6IEFYQ2xpY2tFdmVudCkge1xyXG4gICAgICAgIGUubmF0aXZlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlSW5wdXRDbGlja0V2ZW50KGU6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMudG9nZ2xlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG9uSW5pdCgpIHtcclxuICAgICAgICBzdXBlci5vbkluaXQoKTtcclxuICAgICAgICB0aGlzLl90YXJnZXQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICAgIHRoaXMuX3BvcG92ZXJUaXRsZSA9IHRoaXMucGxhY2Vob2xkZXIgfHwgQVhUcmFuc2xhdG9yLmdldCgnc2VsZWN0Ym94LnBvcG92ZXIudGl0bGUnKVxyXG4gICAgfVxyXG5cclxuICAgIG9uVmlld0luaXQoKSB7XHJcbiAgICAgICAgc3VwZXIub25WaWV3SW5pdCgpO1xyXG4gICAgICAgIHRoaXMuX3BvcG92ZXJXaWR0aCA9IHRoaXMuX2lzTW9iaWxlID8gbnVsbCA6IHRoaXMuX3RhcmdldC5vZmZzZXRXaWR0aDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgcmVmcmVzaCgpIHtcclxuICAgICAgICB0aGlzLnZhbHVlID0gbnVsbDtcclxuICAgICAgICBzdXBlci5yZWZyZXNoKCk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZU9uSXRlbUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzSXRlbURpc2FibGVkKGl0ZW0pKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKVxyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlTGlzdFNjcm9sbChlOiBFdmVudCkge1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSBlLnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcclxuICAgICAgICBpZiAoKGxpc3Quc2Nyb2xsVG9wIDwgbGlzdC5zY3JvbGxIZWlnaHQgLSBsaXN0LmNsaWVudEhlaWdodCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9mZXRjaERhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jaGVja0ZvckxvYWREYXRhKCkge1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAodGhpcy5sb2FkZWRDb3VudCA8IHRoaXMudG90YWxDb3VudCAmJiBsaXN0LnNjcm9sbEhlaWdodCA8ICgobGlzdC5wYXJlbnRFbGVtZW50LmNsaWVudEhlaWdodCkgKiAxLjUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZldGNoRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfb25EYXRhTG9hZGVkKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tGb3JMb2FkRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnVwZGF0ZVBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZm9yY2VGb2N1cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzU2VsZWN0ZWRJdGVtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9yY2VGb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LCAxMDApO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfb25WYWx1ZUNoYW5nZWQob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSkge1xyXG4gICAgICAgIHN1cGVyLl9vblZhbHVlQ2hhbmdlZChvbGRWYWx1ZSwgbmV3VmFsdWUpO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVPblJlbW92ZUl0ZW1DbGljayhlOiBNb3VzZUV2ZW50LCBpdGVtOiBhbnkpIHtcclxuICAgICAgICB0aGlzLnVuc2VsZWN0SXRlbXMoaXRlbSlcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVCYWRnZVJlbW92ZShlOiBNb3VzZUV2ZW50LCBpdGVtKSB7XHJcbiAgICAgICAgdGhpcy51bnNlbGVjdEl0ZW1zKGl0ZW0pXHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxyXG4gICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIF9oYW5kbGVLZXlkb3duKGU6IEtleWJvYXJkRXZlbnQpIHtcclxuICAgICAgICBjb25zdCBpc0xldHRlciA9IG5ldyBSZWdFeHAoL1thLXpBLVowLTlcXC1dLykudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGUua2V5Q29kZSkpO1xyXG4gICAgICAgIGlmIChlLmNvZGUgPT09ICdCYWNrc3BhY2UnICYmIGUudHlwZSA9PT0gJ2tleWRvd24nICYmXHJcbiAgICAgICAgICAgICgodGhpcy5hbGxvd051bGwgPT09IHRydWUgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgICAgICAgICAgICAodGhpcy5hbGxvd051bGwgIT09IHRydWUgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDEpKSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzVXNlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy51bnNlbGVjdEl0ZW1zKHRoaXMuc2VsZWN0ZWRJdGVtcy5wb3AoKSk7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgoZS5jb2RlID09PSAnQXJyb3dEb3duJyB8fCBlLmNvZGUgPT09ICdBcnJvd1VwJyB8fCBlLmNvZGUgPT09ICdTcGFjZScpICYmICF0aGlzLnBvcG92ZXIuaXNPcGVuICYmIGUudHlwZSA9PT0gJ2tleWRvd24nKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgaWYgKGUuY3RybEtleSB8fCBlLmNvZGUgPT09ICdTcGFjZScpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLm9wZW4oKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbUJ5TmF2KChlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoaXNMZXR0ZXIpIHtcclxuICAgICAgICAgICAgdGhpcy50ZXh0ID0gZS5rZXk7XHJcbiAgICAgICAgICAgIHRoaXMub3BlbigpO1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIF9oYW5kbGVQb3BvdmVyS2V5ZG93bihlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgaWYgKChlLnRhcmdldCBhcyBIVE1MRWxlbWVudCkudGFnTmFtZSA9PSBcIklOUFVUXCIgJiYgWydTcGFjZScsICdCYWNrc3BhY2UnXS5pbmNsdWRlcyhlLmNvZGUpKVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgaWYgKChlLmtleSA9PT0gJ0Fycm93RG93bicgfHwgZS5rZXkgPT09ICdBcnJvd1VwJykgJiYgdGhpcy5kaXNwbGF5SXRlbXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzVXNlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fZm9jdXNJdGVtQnlOYXYoKGUua2V5ID09PSAnQXJyb3dEb3duJyA/IDEgOiAtMSkpO1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGUuY29kZSA9PT0gJ0JhY2tzcGFjZScgJiZcclxuICAgICAgICAgICAgKCh0aGlzLmFsbG93TnVsbCA9PT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCkgfHxcclxuICAgICAgICAgICAgICAgICh0aGlzLmFsbG93TnVsbCAhPT0gdHJ1ZSAmJiB0aGlzLnNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMSkpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuaXNVc2VySW5wdXQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLnVuc2VsZWN0SXRlbXModGhpcy5zZWxlY3RlZEl0ZW1zLnBvcCgpKTtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmICgoZS5jb2RlID09PSAnU3BhY2UnIHx8IGUuY29kZSA9PT0gJ0VudGVyJykpIHtcclxuICAgICAgICAgICAgZGVidWdnZXI7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW1JZCA9IHRoaXMubGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuYXgtc3RhdGUtZm9jdXMnKT8uZGF0YXNldD8uaWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRJdGVtID0gXy5maW5kTGFzdCh0aGlzLmZsYXRJdGVtcywgW3RoaXMudmFsdWVGaWVsZCwgZm9jdXNlZEl0ZW1JZF0pO1xyXG4gICAgICAgICAgICBpZiAoZm9jdXNlZEl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSXRlbURpc2FibGVkKGZvY3VzZWRJdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1VzZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3QoZm9jdXNlZEl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1VzZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtcyhmb2N1c2VkSXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGUuY29kZSA9PT0gXCJUYWJcIikge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfaGFuZGxlUG9wdXBPbk9wZW5lZChlKSB7XHJcbiAgICAgICAgdGhpcy5wb3BvdmVyLmZvY3VzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheUl0ZW1zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZvcmNlRm9jdXMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9mZXRjaERhdGEoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzU2VsZWN0ZWRJdGVtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGRlYnVnZ2VyXHJcbiAgICAgICAgaWYgKHRoaXMuX3NlYXJjaEJveCAmJiAhdGhpcy5faXNNb2JpbGUpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2VhcmNoQm94LmZvY3VzKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVQb3B1cE9uQ2xvc2VkKGUpIHtcclxuICAgICAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgX2ZvY3VzSXRlbUJ5TmF2KHNpZ246IC0xIHwgMSk6IHZvaWQge1xyXG5cclxuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5saXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgY29uc3QgZm4gPSAocykgPT4gbGlzdC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihzKTtcclxuICAgICAgICBjb25zdCBpdGVtRGl2ID0gZm4oYC5heC1saXN0LWl0ZW0uYXgtc3RhdGUtZm9jdXNgKSB8fCBmbihgLmF4LWxpc3QtaXRlbS5heC1zdGF0ZS1zZWxlY3RlZGApIHx8IGZuKGAuYXgtbGlzdC1pdGVtYCk7XHJcbiAgICAgICAgbGV0IG5leHQgPSAoc2lnbiA9PSAxID8gaXRlbURpdi5uZXh0RWxlbWVudFNpYmxpbmcgOiBpdGVtRGl2LnByZXZpb3VzRWxlbWVudFNpYmxpbmcpIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgIGlmIChuZXh0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzSXRlbUVsZW1lbnQobmV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBjb25zdCBwYXJlbnQgPSBpdGVtRGl2LmNsb3Nlc3QoJy5heC1saXN0LWl0ZW0tZ3JvdXAnKTtcclxuICAgICAgICAgICAgaWYgKHBhcmVudCkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgbGlzID0gKHNpZ24gPT0gMSA/IHBhcmVudC5uZXh0RWxlbWVudFNpYmxpbmcgOiBwYXJlbnQucHJldmlvdXNFbGVtZW50U2libGluZyk/LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpJyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBhID0gc2lnbiA9PSAxID8gXy5maXJzdChsaXMpIDogXy5sYXN0KGxpcyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzSXRlbUVsZW1lbnQoYSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgX2ZvY3VzU2VsZWN0ZWRJdGVtKCkge1xyXG4gICAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5saXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGZuID0gKHMpID0+IGxpc3QucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4ocyk7XHJcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1EaXYgPSBmbihgLmF4LWxpc3QtaXRlbS5heC1zdGF0ZS1zZWxlY3RlZGApIHx8IGZuKGAuYXgtbGlzdC1pdGVtYCk7XHJcbiAgICAgICAgICAgIGlmIChpdGVtRGl2KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9mb2N1c0l0ZW1FbGVtZW50KGl0ZW1EaXYpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZm9jdXNJdGVtRWxlbWVudChlbDogSFRNTEVsZW1lbnQpIHtcclxuICAgICAgICB0aGlzLl96b25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbGlzdCA9IHRoaXMubGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50O1xyXG4gICAgICAgICAgICBsaXN0LnF1ZXJ5U2VsZWN0b3JBbGwoJy5heC1saXN0LWl0ZW0nKS5mb3JFYWNoKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKGMgPT0gZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICBjLmNsYXNzTGlzdC5hZGQoJ2F4LXN0YXRlLWZvY3VzJyk7XHJcbiAgICAgICAgICAgICAgICAgICAgZWwuc2Nyb2xsSW50b1ZpZXcoeyBiZWhhdmlvcjogJ2F1dG8nIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYy5jbGFzc0xpc3QucmVtb3ZlKCdheC1zdGF0ZS1mb2N1cycpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLl9pc01vYmlsZSAmJiB0aGlzLl9zZWFyY2hCb3gpXHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zZWFyY2hCb3guZm9jdXMoKVxyXG4gICAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgICAgICBlbC5mb2N1cygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICBwcml2YXRlIF9zZWxlY3RlZEl0ZW1CeU5hdihzaWduOiAtMSB8IDEpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBsYXN0ID0gXy5sYXN0KHRoaXMuc2VsZWN0ZWRJdGVtcyk7XHJcbiAgICAgICAgbGV0IGkgPSAwO1xyXG4gICAgICAgIGlmIChsYXN0KSB7XHJcbiAgICAgICAgICAgIGkgPSBfLmZpbmRMYXN0SW5kZXgodGhpcy5mbGF0SXRlbXMsIFt0aGlzLnZhbHVlRmllbGQsIGxhc3RbdGhpcy52YWx1ZUZpZWxkXV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpICs9IHNpZ247XHJcbiAgICAgICAgbGV0IG5leHQgPSBfLm50aDxhbnk+KHRoaXMuZmxhdEl0ZW1zLCBpKTtcclxuICAgICAgICB3aGlsZSAobmV4dD8uY2hpbGRyZW4gJiYgbmV4dD8uY2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIGkgKz0gc2lnbjtcclxuICAgICAgICAgICAgbmV4dCA9IF8ubnRoPGFueT4odGhpcy5mbGF0SXRlbXMsIGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobmV4dCkge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW1zKG5leHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChuZXh0ID09IG51bGwgJiYgc2lnbiA9PSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZldGNoRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgX29uU2VhcmNoRXhwckNoYW5nZWQoZTogQVhWYWx1ZUNoYW5nZWRFdmVudDxzdHJpbmc+KSB7XHJcbiAgICAgICAgZGVidWdnZXJcclxuICAgICAgICB0aGlzLmVtcHR5KCk7XHJcbiAgICAgICAgdGhpcy5fZm9yY2VGb2N1cyA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fZmV0Y2hEYXRhKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHNlYXJjaChleHA6c3RyaW5nKVxyXG4gICAge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuZW1wdHkoKTtcclxuICAgICAgICB0aGlzLl9mb3JjZUZvY3VzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9mZXRjaERhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBfZmV0Y2hEYXRhKCkge1xyXG4gICAgICAgIHN1cGVyLl9mZXRjaERhdGEoeyBzZWFyY2hRdWVyeTogdGhpcy5fc2VhcmNoQm94Py5zZWFyY2hFeHAgfSk7XHJcbiAgICB9XHJcbn0iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1wcmVmaXhcIj5cclxuPC9uZy1jb250ZW50PlxyXG48ZGl2IGNsYXNzPVwiYXgtZHJvcGRvd24tY29udGVudFwiIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJfaGFuZGxlSW5wdXRDbGlja0V2ZW50KCRldmVudClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJheC1zZWxlY3QtYm94LXNlbGVjdGlvblwiIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiIChmb2N1cyk9XCJfZW1pdE9uRm9jdXNFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAoYmx1cik9XCJfZW1pdE9uQmx1ckV2ZW50KCRldmVudClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aDsgZWxzZSBzaG93UGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aXBsZTsgdGhlbiBzaW5nbGVTZWxlY3RlZFRlbXBsYXRlOyBlbHNlIG11bHRpcGxlU2VsZWN0ZWRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVNlbGVjdGVkVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LW14LTJcIj4ge3sgX2dldEl0ZW1EaXNwbGF5VGV4dFRlbXBsdGUoaXRlbSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZVNlbGVjdGVkVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1teC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1iYWRnZSBbdGV4dF09XCJfZ2V0SXRlbURpc3BsYXlUZXh0VGVtcGx0ZShpdGVtKVwiIGNvbG9yPVwibGlnaHRcIiBjbGFzcz1cImF4LW1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1zdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljIGF4LWljLWNsb3NlIGF4LWN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVCYWRnZVJlbW92ZSgkZXZlbnQsaXRlbSlcIj48L2F4LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1iYWRnZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd1BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcGxhY2Vob2xkZXJcIiByb2xlPVwidGV4dGJveFwiIGFyZWEtcmVhZG9ubHk9XCJ0cnVlXCI+IHt7cGxhY2Vob2xkZXJ9fTwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxheC1idXR0b24gY29sb3I9XCJsaWdodFwiIGxvb2s9XCJibGFua1wiIChvbkNsaWNrKT1cImNsZWFyKClcIiBbdGFiSW5kZXhdPVwiLTFcIlxyXG4gICAgKm5nSWY9XCJ2YWx1ZSAmJiBjbGVhckJ1dHRvbiAmJiAgIShkaXNhYmxlZCB8fCByZWFkb25seSlcIj5cclxuICAgIDxheC1pY29uIGljb249XCJheC1pYyBheC1pYy1jbG9zZVwiPjwvYXgtaWNvbj5cclxuPC9heC1idXR0b24+XHJcbjxheC1idXR0b24gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3RhYkluZGV4XT1cIi0xXCIgY29sb3I9XCJsaWdodFwiIGxvb2s9XCJibGFua1wiIChvbkNsaWNrKT1cIl9oYW5kbGVBcnJvd0NsaWNrRXZlbnQoJGV2ZW50KVwiPlxyXG4gICAgPGF4LXByZWZpeCAqbmdJZj1cIihpc0xvYWRpbmcgJiYgIXRoaXMucG9wb3Zlci5pc09wZW4pO2Vsc2UgaWNvblwiPlxyXG4gICAgICAgIDxheC1sb2FkaW5nIHR5cGU9XCJzcGlubmVyXCI+PC9heC1sb2FkaW5nPlxyXG4gICAgPC9heC1wcmVmaXg+XHJcbiAgICA8bmctdGVtcGxhdGUgI2ljb24+XHJcbiAgICAgICAgPGF4LWljb24gI2ljb24gaWNvbj1cImF4LWljIGF4LWljLWNoZXZyb24gYXgtdHJhbnNmb3JtIGF4LS1yb3RhdGUtOTBcIj48L2F4LWljb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2F4LWJ1dHRvbj5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdmFsaWRhdGlvbi1ydWxlXCI+XHJcbjwvbmctY29udGVudD5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc3VmZml4XCI+XHJcbjwvbmctY29udGVudD5cclxuPGF4LXBvcG92ZXIgW3RhcmdldF09XCJfdGFyZ2V0XCIgW3Bvc2l0aW9uXT1cInBvc2l0aW9uXCIgW29wZW5UcmlnZ2VyXT1cIidtYW51YWwnXCIgW2Nsb3NlVHJpZ2dlcl09XCInY2xpY2tvdXQnXCIgW2FkYXB0aXZpdHlFbmFibGVkXT1cInRydWVcIlxyXG4gICAgKG9uT3BlbmVkKT1cIl9oYW5kbGVQb3B1cE9uT3BlbmVkKCRldmVudClcIiAob25DbG9zZWQpPVwiX2hhbmRsZVBvcHVwT25DbG9zZWQoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZSBcIiAoa2V5ZG93bik9XCJfaGFuZGxlUG9wb3ZlcktleWRvd24oJGV2ZW50KVwiIHRhYmluZGV4PVwiMFwiIGFyaWEtbW9kYWw9XCJ0cnVlXCIgY2RrVHJhcEZvY3VzXHJcbiAgICAgICAgW2NsYXNzLmF4LW92ZXJsYXktYWN0aW9uc2hlZXRdPVwiX2lzTW9iaWxlXCIgW2NsYXNzLmF4LWZ1bGxdPVwiX3NlYXJjaEJveCB8fCAgaXNMYXp5XCJcclxuICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIl9wb3BvdmVyV2lkdGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbGlzdFwiID5cclxuICAgICAgICAgICAgPGF4LWhlYWRlciAqbmdJZj1cIl9pc01vYmlsZVwiID5cclxuICAgICAgICAgICAgICAgIDxheC10aXRsZSBbdGV4dF09XCJfcG9wb3ZlclRpdGxlXCI+PC9heC10aXRsZT5cclxuICAgICAgICAgICAgICAgIDxheC1jbG9zZS1idXR0b24gW2ljb25dPVwibXVsdGlwbGU/J2F4LWljLWNoZWNrICFheC10ZXh0LXByaW1hcnktNTAwJzonYXgtaWMtY2xvc2UnXCI+PC9heC1jbG9zZS1idXR0b24+XHJcbiAgICAgICAgICAgIDwvYXgtaGVhZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcC0yXCIgW2NsYXNzLmF4LWhpZGRlbl09XCIhX3NlYXJjaEJveFwiIFtjZGtUcmFwRm9jdXNdPVwiX3NlYXJjaEJveCE9bnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc2VhcmNoLWJveFwiID48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udGVudCBheC1saXN0LWl0ZW1zLWNvbnRhaW5lciBheC1kZWZhdWx0XCIgKHNjcm9sbCk9XCJfaGFuZGxlTGlzdFNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICNsaXN0Q29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlJdGVtcy5sZW5ndGg7IGVsc2UgdG1wRW1wdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0bXBUcmVlOyBjb250ZXh0OnsgbGlzdDogZGlzcGxheUl0ZW1zIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG1wVHJlZSBsZXQtbGlzdD1cImxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdDtsZXQgaSA9IGluZGV4O3RyYWNrQnkgOiBfdHJhY2tCeUZ1bmN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZTsgZWxzZSBkZWZ1YWx0VGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiYXgtbGlzdC1pdGVtXCIgKGNsaWNrKT1cIl9oYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1pZF09XCJpdGVtW3RoaXMudmFsdWVGaWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sZGlyZWN0aW9uOmRpcmVjdGlvbn1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmdWFsdFRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoID4gMDtlbHNlIHRtcEl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImF4LWxpc3QtaXRlbS1ncm91cFwiIFthdHRyLmRhdGEtaWRdPVwiaXRlbVt0aGlzLnZhbHVlRmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IF9nZXRJdGVtRGlzcGxheVRleHRUZW1wbHRlKGl0ZW0pIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdJZj1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0bXBUcmVlOyBjb250ZXh0OnsgbGlzdDogIGl0ZW0uY2hpbGRyZW4gfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG1wSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbXVsdGlwbGU7ICBlbHNlIG11bHRpcGxlVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJheC1saXN0LWl0ZW1cIiBbY2xhc3MuYXgtc3RhdGUtc2VsZWN0ZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiaXNJdGVtRGlzYWJsZWQoaXRlbSlcIiBbYXR0ci50YWJpbmRleF09XCJpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWlkXT1cIml0ZW1bdGhpcy52YWx1ZUZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ge3sgX2dldEl0ZW1EaXNwbGF5VGV4dFRlbXBsdGUoaXRlbSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImF4LWxpc3QtaXRlbVwiIFtjbGFzcy5heC1zdGF0ZS1zZWxlY3RlZF09XCJpc0l0ZW1TZWxlY3RlZChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1jaGVjay1ib3hdPVwiY2hlY2tib3hcIiBbYXR0ci50YWJpbmRleF09XCJpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWlkXT1cIml0ZW1bdGhpcy52YWx1ZUZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJdGVtRGlzYWJsZWQoaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1tcy0yXCI+IHt7IF9nZXRJdGVtRGlzcGxheVRleHRUZW1wbHRlKGl0ZW0pIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdUZW1wbGF0ZTsgZWxzZSBlbHNlTG9hZGluZ1RlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlTG9hZGluZ1RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtcC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtbG9hZGluZyB0ZXh0PVwie3sgJ2xheW91dC5sb2FkaW5nLnRleHQnIHwgdHJhbnMgfX1cIj48L2F4LWxvYWRpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG1wRW1wdHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5VGVtcGxhdGU7IGVsc2UgZWxzZUVtcHR5VGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUVtcHR5VGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbGlzdC1pdGVtXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgJ2NvbW1vbi5uby1yZXN1bHQtZm91bmQnIHwgdHJhbnMgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJheC1saXN0LWl0ZW1zLWNvbnRhaW5lciBheC12ZXJ0aWNhbCBheC1kZWZhdWx0XCIgW2NsYXNzLmF4LWZ1bGxdPVwiX2lzTW9iaWxlXCJcclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgIDwvZGl2PiAtLT5cclxuICAgICAgICAgICAgPCEtLSA8ZGl2IGNsYXNzPVwiYXgtZm9vdGVyXCI+Zm9vdGVyPC9kaXY+IC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbjwvYXgtcG9wb3Zlcj4iXX0=
|
|
339
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0Ym94LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvc2VsZWN0Ym94L3NlbGVjdGJveC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hY29yZXgvY29tcG9uZW50cy9zcmMvbGliL3NlbGVjdGJveC9zZWxlY3Rib3guY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFjLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUN4RCxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxZQUFZLEVBQWMsWUFBWSxFQUFFLEtBQUssRUFBdUIsU0FBUyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3hMLE9BQU8sQ0FBQyxNQUFNLFFBQVEsQ0FBQztBQUN2QixPQUFPLEVBQUUsNEJBQTRCLEVBQWdCLG1CQUFtQixFQUFFLHFCQUFxQixFQUF1QixNQUFNLFNBQVMsQ0FBQztBQUN0SSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sd0NBQXdDLENBQUM7QUFDekUsT0FBTyxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMvRixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsY0FBYyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2hELE9BQU8sRUFBRSxvQkFB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LElBQUksRUFBRTtnQkFJL0MsVUFBVTtzQkFEVCxZQUFZO3VCQUFDLG9CQUFvQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFZcEQsV0FBVztzQkFEVixLQUFLO2dCQVNOLFFBQVE7c0JBRFAsS0FBSztnQkFJRSxhQUFhO3NCQURwQixTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSXBDLHFCQUFxQjtzQkFENUIsWUFBWTt1QkFBQyxlQUFlO2dCQXNIN0IsY0FBYztzQkFEYixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFYUGxhdGZvcm0sIEFYVHJhbnNsYXRvciB9IGZyb20gJ0BhY29yZXgvY29yZSc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEVsZW1lbnRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE5nWm9uZSwgVGVtcGxhdGVSZWYsIFZpZXdDaGlsZCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgQVhCYXNlU2VsZWN0aW9uRHJvcGRvd25NaXhpbiwgQVhDbGlja0V2ZW50LCBBWENsb3NiYWxlQ29tcG9uZW50LCBBWFNlYXJjaGFibGVDb21wb25lbnQsIEFYVmFsdWVDaGFuZ2VkRXZlbnQgfSBmcm9tICcuLi9iYXNlJztcclxuaW1wb3J0IHsgREFUQUxJU1RfSU5QVVRTIH0gZnJvbSAnLi4vYmFzZS9taXhpbi9kYXRhbGlzdC1jb21wb25lbnQuY2xhc3MnO1xyXG5pbXBvcnQgeyBEUk9QRE9XTl9JTlBVVFMsIERST1BET1dOX09VVFBVVCB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vZHJvcGRvd24tbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBJTlRFUkFDVElWRV9JTlBVVFMsIElOVEVSQUNUSVZFX09VVFBVVCB9IGZyb20gJy4uL2Jhc2UvbWl4aW4vaW50ZXJhY3RpdmUtbWl4aW4uY2xhc3MnO1xyXG5pbXBvcnQgeyBTRUxFQ1RJT05fSU5QVVRTLCBTRUxFQ1RJT05fT1VUUFVUIH0gZnJvbSAnLi4vYmFzZS9taXhpbi9zZWxlY3Rpb24tY29tcG9uZW50LmNsYXNzJztcclxuaW1wb3J0IHsgVEVYVEJPWF9JTlBVVFMsIFRFWFRCT1hfT1VUUFVUIH0gZnJvbSAnLi4vYmFzZS9taXhpbi90ZXh0Ym94LW1peGluLmNsYXNzJztcclxuaW1wb3J0IHsgVkFMVUVfSU5QVVRTLCBWQUxVRV9PVVRQVVQgfSBmcm9tICcuLi9iYXNlL21peGluL3ZhbHVlLW1peGluLmNsYXNzJztcclxuaW1wb3J0IHsgQVhQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSAnLi4vcG9wb3Zlcic7XHJcbmltcG9ydCB7IEFYU2VhcmNoQm94Q29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoYm94JztcclxuXHJcbi8qKlxyXG4gKiBUaGUgQnV0dG9uIGlzIGEgY29tcG9uZW50IHdoaWNoIGRldGVjdHMgdXNlciBpbnRlcmFjdGlvbiBhbmQgdHJpZ2dlcnMgYSBjb3JyZXNwb25kaW5nIGV2ZW50XHJcbiAqXHJcbiAqIEBjYXRlZ29yeSBDb21wb25lbnRzXHJcbiAqL1xyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYXgtc2VsZWN0LWJveCcsXHJcbiAgICB0ZW1wbGF0ZVVybDogJ3NlbGVjdGJveC5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBpbnB1dHM6IFsuLi5EUk9QRE9XTl9JTlBVVFMsIC4uLklOVEVSQUNUSVZFX0lOUFVUUywgLi4uVkFMVUVfSU5QVVRTLCAuLi5URVhUQk9YX0lOUFVUUywgLi4uREFUQUxJU1RfSU5QVVRTLCAuLi5TRUxFQ1RJT05fSU5QVVRTXSxcclxuICAgIG91dHB1dHM6IFsuLi5EUk9QRE9XTl9PVVRQVVQsIC4uLklOVEVSQUNUSVZFX09VVFBVVCwgLi4uVkFMVUVfT1VUUFVULCAuLi5URVhUQk9YX09VVFBVVCwgLi4uU0VMRUNUSU9OX09VVFBVVF0sXHJcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICB7IHByb3ZpZGU6IEFYQ2xvc2JhbGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWFNlbGVjdEJveENvbXBvbmVudCB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQVhTZWFyY2hhYmxlQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhTZWxlY3RCb3hDb21wb25lbnQgfVxyXG4gICAgXSxcclxuICAgIGhvc3Q6IHsgY2xhc3M6ICdheC1lZGl0b3ItY29udGFpbmVyIGF4LWRyb3AtZG93bicgfVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhTZWxlY3RCb3hDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VTZWxlY3Rpb25Ecm9wZG93bk1peGluIHtcclxuXHJcblxyXG4gICAgQFZpZXdDaGlsZChBWFBvcG92ZXJDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwb3BvdmVyOiBBWFBvcG92ZXJDb21wb25lbnQ7XHJcblxyXG4gICAgQENvbnRlbnRDaGlsZChBWFNlYXJjaEJveENvbXBvbmVudCwgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIF9zZWFyY2hCb3g6IEFYU2VhcmNoQm94Q29tcG9uZW50O1xyXG5cclxuICAgIF90YXJnZXQ6IEhUTUxEaXZFbGVtZW50O1xyXG4gICAgX3BvcG92ZXJUaXRsZTogc3RyaW5nO1xyXG4gICAgX3BvcG92ZXJXaWR0aDogbnVtYmVyO1xyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqICBEZWZpbmVzIHRoZSBjbGVhckJ1dHRvbi5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGNsZWFyQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqICBEZWZpbmVzIHRoZSBjaGVja2JveC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIGNoZWNrYm94OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgnbGlzdENvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwcml2YXRlIGxpc3RDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTERpdkVsZW1lbnQ+O1xyXG5cclxuICAgIEBDb250ZW50Q2hpbGQoJ2VtcHR5VGVtcGxhdGUnKVxyXG4gICAgcHJpdmF0ZSBfY29udGVudEVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG5cclxuICAgIGdldCBlbXB0eVRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9jb250ZW50RW1wdHlUZW1wbGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBfaXNNb2JpbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIF9mb3JjZUZvY3VzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICAvKipcclxuICAgICogIEBpZ25vcmVcclxuICAgICovXHJcbiAgICBjb25zdHJ1Y3RvcihcclxuICAgICAgICBwcml2YXRlIF9lbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50PixcclxuICAgICAgICBwcml2YXRlIF9jZHI6IENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgICAgIHByaXZhdGUgX3pvbmU6IE5nWm9uZSxcclxuICAgICAgICBwcml2YXRlIF9wbGF0Zm9ybTogQVhQbGF0Zm9ybSxcclxuICAgICkge1xyXG4gICAgICAgIHN1cGVyKF9lbGVtZW50UmVmLCBfY2RyKTtcclxuICAgICAgICB0aGlzLl9pc01vYmlsZSA9IHRoaXMuX3BsYXRmb3JtLmlzKCdNb2JpbGUnKTtcclxuICAgICAgICB0aGlzLl9wbGF0Zm9ybS5yZXNpemUuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5faXNNb2JpbGUgPSB0aGlzLl9wbGF0Zm9ybS5pcygnTW9iaWxlJyk7XHJcbiAgICAgICAgICAgIHRoaXMucG9wb3Zlci5kaXNwb3NlKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3BvcG92ZXJXaWR0aCA9IHRoaXMuX2lzTW9iaWxlID8gbnVsbCA6IHRoaXMuX3RhcmdldC5vZmZzZXRXaWR0aDtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQXJyb3dDbGlja0V2ZW50KGU6IEFYQ2xpY2tFdmVudCkge1xyXG4gICAgICAgIGUubmF0aXZlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcbiAgICAgICAgdGhpcy50b2dnbGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlSW5wdXRDbGlja0V2ZW50KGU6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIHRoaXMudG9nZ2xlKCk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIG9uSW5pdCgpIHtcclxuICAgICAgICBzdXBlci5vbkluaXQoKTtcclxuICAgICAgICB0aGlzLl90YXJnZXQgPSB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XHJcblxyXG4gICAgICAgIHRoaXMuX3VwZGF0ZVBvcHVwVGl0bGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBvblZpZXdJbml0KCkge1xyXG4gICAgICAgIHN1cGVyLm9uVmlld0luaXQoKTtcclxuICAgICAgICB0aGlzLl9wb3BvdmVyV2lkdGggPSB0aGlzLl9pc01vYmlsZSA/IG51bGwgOiB0aGlzLl90YXJnZXQub2Zmc2V0V2lkdGg7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHJlZnJlc2goKSB7XHJcbiAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XHJcbiAgICAgICAgc3VwZXIucmVmcmVzaCgpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgX3VwZGF0ZVBvcHVwVGl0bGUoKSB7XHJcbiAgICAgICAgLy8gY29uc3QgY291bnQgPXRoaXMuc2VsZWN0ZWRJdGVtcz8ubGVuZ3RoO1xyXG4gICAgICAgIC8vIHRoaXMuX3BvcG92ZXJUaXRsZSA9ICBjb3VudCA+IDEgPyAgYCgke2NvdW50fSkgaXRlbXMgc2VsZWN0ZWRgOiAgdGhpcy5wbGFjZWhvbGRlciB8fCBBWFRyYW5zbGF0b3IuZ2V0KCdzZWxlY3Rib3gucG9wb3Zlci50aXRsZScpXHJcbiAgICAgICAgdGhpcy5fcG9wb3ZlclRpdGxlID0gdGhpcy5wbGFjZWhvbGRlciB8fCBBWFRyYW5zbGF0b3IuZ2V0KCdzZWxlY3Rib3gucG9wb3Zlci50aXRsZScpXHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZU9uSXRlbUNsaWNrKGU6IE1vdXNlRXZlbnQsIGl0ZW06IGFueSkge1xyXG4gICAgICAgIGlmICh0aGlzLmlzSXRlbURpc2FibGVkKGl0ZW0pKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlKVxyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgdGhpcy50b2dnbGVTZWxlY3QoaXRlbSk7XHJcbiAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlTGlzdFNjcm9sbChlOiBFdmVudCkge1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSBlLnRhcmdldCBhcyBIVE1MRGl2RWxlbWVudDtcclxuICAgICAgICBpZiAoKGxpc3Quc2Nyb2xsVG9wIDwgbGlzdC5zY3JvbGxIZWlnaHQgLSBsaXN0LmNsaWVudEhlaWdodCkpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9mZXRjaERhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9jaGVja0ZvckxvYWREYXRhKCkge1xyXG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBpZiAodGhpcy5sb2FkZWRDb3VudCA8IHRoaXMudG90YWxDb3VudCAmJiBsaXN0LnNjcm9sbEhlaWdodCA8ICgobGlzdC5wYXJlbnRFbGVtZW50LmNsaWVudEhlaWdodCkgKiAxLjUpKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZldGNoRGF0YSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBfb25EYXRhTG9hZGVkKCkge1xyXG4gICAgICAgIGlmICh0aGlzLnBvcG92ZXIuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2hlY2tGb3JMb2FkRGF0YSgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wb3BvdmVyLnVwZGF0ZVBvc2l0aW9uKCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5fZm9yY2VGb2N1cykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzU2VsZWN0ZWRJdGVtKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9yY2VGb2N1cyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNTZWFyY2hCb3goKTtcclxuICAgICAgICAgICAgfSwgMTAwKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgX29uVmFsdWVDaGFuZ2VkKG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpIHtcclxuICAgICAgICBzdXBlci5fb25WYWx1ZUNoYW5nZWQob2xkVmFsdWUsIG5ld1ZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlT25SZW1vdmVJdGVtQ2xpY2soZTogTW91c2VFdmVudCwgaXRlbTogYW55KSB7XHJcbiAgICAgICAgdGhpcy51bnNlbGVjdEl0ZW1zKGl0ZW0pXHJcbiAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQmFkZ2VSZW1vdmUoZTogTW91c2VFdmVudCwgaXRlbSkge1xyXG4gICAgICAgIHRoaXMudW5zZWxlY3RJdGVtcyhpdGVtKVxyXG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcclxuICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXHJcbiAgICBfaGFuZGxlS2V5ZG93bihlOiBLZXlib2FyZEV2ZW50KSB7XHJcbiAgICAgICAgY29uc3QgaXNMZXR0ZXIgPSBuZXcgUmVnRXhwKC9bYS16QS1aMC05XFwtXS8pLnRlc3QoU3RyaW5nLmZyb21DaGFyQ29kZShlLmtleUNvZGUpKTtcclxuICAgICAgICBpZiAoZS5jb2RlID09PSAnQmFja3NwYWNlJyAmJiBlLnR5cGUgPT09ICdrZXlkb3duJyAmJlxyXG4gICAgICAgICAgICAoKHRoaXMuYWxsb3dOdWxsID09PSB0cnVlICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAwKSB8fFxyXG4gICAgICAgICAgICAgICAgKHRoaXMuYWxsb3dOdWxsICE9PSB0cnVlICYmIHRoaXMuc2VsZWN0ZWRJdGVtcy5sZW5ndGggPiAxKSkpIHtcclxuICAgICAgICAgICAgdGhpcy5pc1VzZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMudW5zZWxlY3RJdGVtcyh0aGlzLnNlbGVjdGVkSXRlbXMucG9wKCkpO1xyXG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKGUuY29kZSA9PT0gJ0Fycm93RG93bicgfHwgZS5jb2RlID09PSAnQXJyb3dVcCcgfHwgZS5jb2RlID09PSAnU3BhY2UnKSAmJiAhdGhpcy5wb3BvdmVyLmlzT3BlbiAmJiBlLnR5cGUgPT09ICdrZXlkb3duJykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5tdWx0aXBsZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzVXNlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIGlmIChlLmN0cmxLZXkgfHwgZS5jb2RlID09PSAnU3BhY2UnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vcGVuKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW1CeU5hdigoZS5rZXkgPT09ICdBcnJvd0Rvd24nID8gMSA6IC0xKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGlzTGV0dGVyKSB7XHJcbiAgICAgICAgICAgIHRoaXMudGV4dCA9IGUua2V5O1xyXG4gICAgICAgICAgICB0aGlzLm9wZW4oKTtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcbiAgICBfaGFuZGxlUG9wb3ZlcktleWRvd24oZTogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIGlmICgoZS50YXJnZXQgYXMgSFRNTEVsZW1lbnQpLnRhZ05hbWUgPT0gXCJJTlBVVFwiICYmIFsnU3BhY2UnLCAnQmFja3NwYWNlJ10uaW5jbHVkZXMoZS5jb2RlKSlcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIGlmICgoZS5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGUua2V5ID09PSAnQXJyb3dVcCcpICYmIHRoaXMuZGlzcGxheUl0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5pc1VzZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzSXRlbUJ5TmF2KChlLmtleSA9PT0gJ0Fycm93RG93bicgPyAxIDogLTEpKTtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChlLmNvZGUgPT09ICdCYWNrc3BhY2UnICYmXHJcbiAgICAgICAgICAgICgodGhpcy5hbGxvd051bGwgPT09IHRydWUgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDApIHx8XHJcbiAgICAgICAgICAgICAgICAodGhpcy5hbGxvd051bGwgIT09IHRydWUgJiYgdGhpcy5zZWxlY3RlZEl0ZW1zLmxlbmd0aCA+IDEpKSkge1xyXG4gICAgICAgICAgICB0aGlzLmlzVXNlcklucHV0ID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy51bnNlbGVjdEl0ZW1zKHRoaXMuc2VsZWN0ZWRJdGVtcy5wb3AoKSk7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoKGUuY29kZSA9PT0gJ1NwYWNlJyB8fCBlLmNvZGUgPT09ICdFbnRlcicpKSB7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgY29uc3QgZm9jdXNlZEl0ZW1JZCA9IHRoaXMubGlzdENvbnRhaW5lci5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KCcuYXgtc3RhdGUtZm9jdXMnKT8uZGF0YXNldD8uaWQ7XHJcbiAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRJdGVtID0gXy5maW5kTGFzdCh0aGlzLmZsYXRJdGVtcywgW3RoaXMudmFsdWVGaWVsZCwgZm9jdXNlZEl0ZW1JZF0pO1xyXG4gICAgICAgICAgICBpZiAoZm9jdXNlZEl0ZW0pIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSXRlbURpc2FibGVkKGZvY3VzZWRJdGVtKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLm11bHRpcGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1VzZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50b2dnbGVTZWxlY3QoZm9jdXNlZEl0ZW0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1VzZXJJbnB1dCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtcyhmb2N1c2VkSXRlbSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGUuY29kZSA9PT0gXCJUYWJcIikge1xyXG4gICAgICAgICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZS5rZXkgPT09ICdFc2NhcGUnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcclxuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfaGFuZGxlUG9wdXBPbk9wZW5lZChlKSB7XHJcbiAgICAgICAgdGhpcy5wb3BvdmVyLmZvY3VzKCk7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheUl0ZW1zLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZvcmNlRm9jdXMgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLl9mZXRjaERhdGEoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2ZvY3VzU2VsZWN0ZWRJdGVtKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2ZvY3VzU2VhcmNoQm94KCk7XHJcblxyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVQb3B1cE9uQ2xvc2VkKGUpIHtcclxuICAgICAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBfZm9jdXNTZWFyY2hCb3goKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NlYXJjaEJveCAmJiAoIXRoaXMuX2lzTW9iaWxlIHx8IHRoaXMuX3NlYXJjaEJveC5zZWFyY2hFeHApKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlYXJjaEJveC5mb2N1cygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfZm9jdXNJdGVtQnlOYXYoc2lnbjogLTEgfCAxKTogdm9pZCB7XHJcblxyXG4gICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgICAgICBjb25zdCBmbiA9IChzKSA9PiBsaXN0LnF1ZXJ5U2VsZWN0b3I8SFRNTEVsZW1lbnQ+KHMpO1xyXG4gICAgICAgIGNvbnN0IGl0ZW1EaXYgPSBmbihgLmF4LWxpc3QtaXRlbS5heC1zdGF0ZS1mb2N1c2ApIHx8IGZuKGAuYXgtbGlzdC1pdGVtLmF4LXN0YXRlLXNlbGVjdGVkYCkgfHwgZm4oYC5heC1saXN0LWl0ZW1gKTtcclxuICAgICAgICBsZXQgbmV4dCA9IChzaWduID09IDEgPyBpdGVtRGl2Lm5leHRFbGVtZW50U2libGluZyA6IGl0ZW1EaXYucHJldmlvdXNFbGVtZW50U2libGluZykgYXMgSFRNTEVsZW1lbnQ7XHJcbiAgICAgICAgaWYgKG5leHQpIHtcclxuICAgICAgICAgICAgdGhpcy5fZm9jdXNJdGVtRWxlbWVudChuZXh0KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHBhcmVudCA9IGl0ZW1EaXYuY2xvc2VzdCgnLmF4LWxpc3QtaXRlbS1ncm91cCcpO1xyXG4gICAgICAgICAgICBpZiAocGFyZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsaXMgPSAoc2lnbiA9PSAxID8gcGFyZW50Lm5leHRFbGVtZW50U2libGluZyA6IHBhcmVudC5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKT8ucXVlcnlTZWxlY3RvckFsbCgnbGknKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGEgPSBzaWduID09IDEgPyBfLmZpcnN0KGxpcykgOiBfLmxhc3QobGlzKTtcclxuICAgICAgICAgICAgICAgIGlmIChhKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fZm9jdXNJdGVtRWxlbWVudChhKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcblxyXG4gICAgcHJpdmF0ZSBfZm9jdXNTZWxlY3RlZEl0ZW0oKSB7XHJcbiAgICAgICAgdGhpcy5fem9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxpc3QgPSB0aGlzLmxpc3RDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgY29uc3QgZm4gPSAocykgPT4gbGlzdC5xdWVyeVNlbGVjdG9yPEhUTUxFbGVtZW50PihzKTtcclxuICAgICAgICAgICAgY29uc3QgaXRlbURpdiA9IGZuKGAuYXgtbGlzdC1pdGVtLmF4LXN0YXRlLXNlbGVjdGVkYCkgfHwgZm4oYC5heC1saXN0LWl0ZW1gKTtcclxuICAgICAgICAgICAgaWYgKGl0ZW1EaXYpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX2ZvY3VzSXRlbUVsZW1lbnQoaXRlbURpdik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIF9mb2N1c0l0ZW1FbGVtZW50KGVsOiBIVE1MRWxlbWVudCkge1xyXG4gICAgICAgIHRoaXMuX3pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5saXN0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICAgICAgICAgIGxpc3QucXVlcnlTZWxlY3RvckFsbCgnLmF4LWxpc3QtaXRlbScpLmZvckVhY2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAoYyA9PSBlbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGMuY2xhc3NMaXN0LmFkZCgnYXgtc3RhdGUtZm9jdXMnKTtcclxuICAgICAgICAgICAgICAgICAgICBlbC5zY3JvbGxJbnRvVmlldyh7IGJlaGF2aW9yOiAnYXV0bycgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjLmNsYXNzTGlzdC5yZW1vdmUoJ2F4LXN0YXRlLWZvY3VzJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuX2lzTW9iaWxlICYmIHRoaXMuX3NlYXJjaEJveClcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NlYXJjaEJveC5mb2N1cygpXHJcbiAgICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgICAgIGVsLmZvY3VzKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIHByaXZhdGUgX3NlbGVjdGVkSXRlbUJ5TmF2KHNpZ246IC0xIHwgMSk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGxhc3QgPSBfLmxhc3QodGhpcy5zZWxlY3RlZEl0ZW1zKTtcclxuICAgICAgICBsZXQgaSA9IDA7XHJcbiAgICAgICAgaWYgKGxhc3QpIHtcclxuICAgICAgICAgICAgaSA9IF8uZmluZExhc3RJbmRleCh0aGlzLmZsYXRJdGVtcywgW3RoaXMudmFsdWVGaWVsZCwgbGFzdFt0aGlzLnZhbHVlRmllbGRdXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGkgKz0gc2lnbjtcclxuICAgICAgICBsZXQgbmV4dCA9IF8ubnRoPGFueT4odGhpcy5mbGF0SXRlbXMsIGkpO1xyXG4gICAgICAgIHdoaWxlIChuZXh0Py5jaGlsZHJlbiAmJiBuZXh0Py5jaGlsZHJlbi5sZW5ndGgpIHtcclxuICAgICAgICAgICAgaSArPSBzaWduO1xyXG4gICAgICAgICAgICBuZXh0ID0gXy5udGg8YW55Pih0aGlzLmZsYXRJdGVtcywgaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChuZXh0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbXMobmV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKG5leHQgPT0gbnVsbCAmJiBzaWduID09IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5fZmV0Y2hEYXRhKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuXHJcblxyXG5cclxuICAgIHNlYXJjaChleHA6IHN0cmluZykge1xyXG4gICAgICAgIGRlYnVnZ2VyO1xyXG4gICAgICAgIHRoaXMuZW1wdHkoKTtcclxuICAgICAgICB0aGlzLl9mb3JjZUZvY3VzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9mZXRjaERhdGEoKTtcclxuICAgIH1cclxuXHJcbiAgICBfZmV0Y2hEYXRhKCkge1xyXG4gICAgICAgIHN1cGVyLl9mZXRjaERhdGEoeyBzZWFyY2hRdWVyeTogdGhpcy5fc2VhcmNoQm94Py5zZWFyY2hFeHAgfSk7XHJcbiAgICB9XHJcbn0iLCI8bmctY29udGVudCBzZWxlY3Q9XCJheC1wcmVmaXhcIj5cclxuPC9uZy1jb250ZW50PlxyXG48ZGl2IGNsYXNzPVwiYXgtZHJvcGRvd24tY29udGVudFwiIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIChjbGljayk9XCJfaGFuZGxlSW5wdXRDbGlja0V2ZW50KCRldmVudClcIj5cclxuICAgIDxkaXYgY2xhc3M9XCJheC1zZWxlY3QtYm94LXNlbGVjdGlvblwiIFt0YWJpbmRleF09XCJ0YWJJbmRleFwiIChmb2N1cyk9XCJfZW1pdE9uRm9jdXNFdmVudCgkZXZlbnQpXCJcclxuICAgICAgICAoYmx1cik9XCJfZW1pdE9uQmx1ckV2ZW50KCRldmVudClcIj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwic2VsZWN0ZWRJdGVtcyAmJiBzZWxlY3RlZEl0ZW1zLmxlbmd0aDsgZWxzZSBzaG93UGxhY2Vob2xkZXJcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFtdWx0aXBsZTsgdGhlbiBzaW5nbGVTZWxlY3RlZFRlbXBsYXRlOyBlbHNlIG11bHRpcGxlU2VsZWN0ZWRUZW1wbGF0ZVwiPjwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgI3NpbmdsZVNlbGVjdGVkVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIHNlbGVjdGVkSXRlbXNcIj5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImF4LW14LTJcIj4ge3sgX2dldEl0ZW1EaXNwbGF5VGV4dFRlbXBsdGUoaXRlbSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZVNlbGVjdGVkVGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1teC0yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgaXRlbSBvZiBzZWxlY3RlZEl0ZW1zXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxheC1iYWRnZSBbdGV4dF09XCJfZ2V0SXRlbURpc3BsYXlUZXh0VGVtcGx0ZShpdGVtKVwiIGNvbG9yPVwibGlnaHRcIiBjbGFzcz1cImF4LW1lLTJcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxheC1zdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF4LWljb24gaWNvbj1cImF4LWljIGF4LWljLWNsb3NlIGF4LWN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVCYWRnZVJlbW92ZSgkZXZlbnQsaXRlbSlcIj48L2F4LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F4LXN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9heC1iYWRnZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjc2hvd1BsYWNlaG9sZGVyPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtcGxhY2Vob2xkZXJcIiByb2xlPVwidGV4dGJveFwiIGFyZWEtcmVhZG9ubHk9XCJ0cnVlXCI+IHt7cGxhY2Vob2xkZXJ9fTwvZGl2PlxyXG4gICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxheC1idXR0b24gY29sb3I9XCJsaWdodFwiIGxvb2s9XCJibGFua1wiIChvbkNsaWNrKT1cImNsZWFyKClcIiBbdGFiSW5kZXhdPVwiLTFcIlxyXG4gICAgKm5nSWY9XCJ2YWx1ZSAmJiBjbGVhckJ1dHRvbiAmJiAgIShkaXNhYmxlZCB8fCByZWFkb25seSlcIj5cclxuICAgIDxheC1pY29uIGljb249XCJheC1pYyBheC1pYy1jbG9zZVwiPjwvYXgtaWNvbj5cclxuPC9heC1idXR0b24+XHJcbjxheC1idXR0b24gW2Rpc2FibGVkXT1cImRpc2FibGVkXCIgW3RhYkluZGV4XT1cIi0xXCIgY29sb3I9XCJsaWdodFwiIGxvb2s9XCJibGFua1wiIChvbkNsaWNrKT1cIl9oYW5kbGVBcnJvd0NsaWNrRXZlbnQoJGV2ZW50KVwiPlxyXG4gICAgPGF4LXByZWZpeCAqbmdJZj1cIihpc0xvYWRpbmcgJiYgIXRoaXMucG9wb3Zlci5pc09wZW4pO2Vsc2UgaWNvblwiPlxyXG4gICAgICAgIDxheC1sb2FkaW5nIHR5cGU9XCJzcGlubmVyXCI+PC9heC1sb2FkaW5nPlxyXG4gICAgPC9heC1wcmVmaXg+XHJcbiAgICA8bmctdGVtcGxhdGUgI2ljb24+XHJcbiAgICAgICAgPGF4LWljb24gI2ljb24gaWNvbj1cImF4LWljIGF4LWljLWNoZXZyb24gYXgtdHJhbnNmb3JtIGF4LS1yb3RhdGUtOTBcIj48L2F4LWljb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG48L2F4LWJ1dHRvbj5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtdmFsaWRhdGlvbi1ydWxlXCI+XHJcbjwvbmctY29udGVudD5cclxuPG5nLWNvbnRlbnQgc2VsZWN0PVwiYXgtc3VmZml4XCI+XHJcbjwvbmctY29udGVudD5cclxuPGF4LXBvcG92ZXIgW3RhcmdldF09XCJfdGFyZ2V0XCIgW3Bvc2l0aW9uXT1cInBvc2l0aW9uXCIgW29wZW5UcmlnZ2VyXT1cIidtYW51YWwnXCIgW2Nsb3NlVHJpZ2dlcl09XCInY2xpY2tvdXQnXCJcclxuICAgIFthZGFwdGl2aXR5RW5hYmxlZF09XCJ0cnVlXCIgKG9uT3BlbmVkKT1cIl9oYW5kbGVQb3B1cE9uT3BlbmVkKCRldmVudClcIiAob25DbG9zZWQpPVwiX2hhbmRsZVBvcHVwT25DbG9zZWQoJGV2ZW50KVwiPlxyXG4gICAgPGRpdiBjbGFzcz1cImF4LW92ZXJsYXktcGFuZSBcIiAoa2V5ZG93bik9XCJfaGFuZGxlUG9wb3ZlcktleWRvd24oJGV2ZW50KVwiIHRhYmluZGV4PVwiMFwiIGFyaWEtbW9kYWw9XCJ0cnVlXCIgY2RrVHJhcEZvY3VzXHJcbiAgICAgICAgW2NsYXNzLmF4LW92ZXJsYXktYWN0aW9uc2hlZXRdPVwiX2lzTW9iaWxlXCIgW2NsYXNzLmF4LWZ1bGxdPVwiX3NlYXJjaEJveCB8fCAgaXNMYXp5XCJcclxuICAgICAgICBbc3R5bGUubWluLXdpZHRoLnB4XT1cIl9wb3BvdmVyV2lkdGhcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtbGlzdFwiPlxyXG4gICAgICAgICAgICA8YXgtaGVhZGVyICpuZ0lmPVwiX2lzTW9iaWxlXCI+XHJcbiAgICAgICAgICAgICAgICA8YXgtdGl0bGUgW3RleHRdPVwiX3BvcG92ZXJUaXRsZVwiPjwvYXgtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICA8YXgtY2xvc2UtYnV0dG9uIFtpY29uXT1cIm11bHRpcGxlPydheC1pYy1jaGVjayAhYXgtdGV4dC1wcmltYXJ5LTUwMCc6J2F4LWljLWNsb3NlJ1wiPjwvYXgtY2xvc2UtYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2F4LWhlYWRlcj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImF4LXAtMlwiIFtjbGFzcy5heC1oaWRkZW5dPVwiIV9zZWFyY2hCb3hcIiBbY2RrVHJhcEZvY3VzXT1cIl9zZWFyY2hCb3ghPW51bGxcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImF4LXNlYXJjaC1ib3hcIj48L25nLWNvbnRlbnQ+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtY29udGVudCBheC1saXN0LWl0ZW1zLWNvbnRhaW5lciBheC1kZWZhdWx0XCIgKHNjcm9sbCk9XCJfaGFuZGxlTGlzdFNjcm9sbCgkZXZlbnQpXCJcclxuICAgICAgICAgICAgICAgICNsaXN0Q29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRpc3BsYXlJdGVtcy5sZW5ndGg7IGVsc2UgdG1wRW1wdHlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8dWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0bXBUcmVlOyBjb250ZXh0OnsgbGlzdDogZGlzcGxheUl0ZW1zIH1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG1wVHJlZSBsZXQtbGlzdD1cImxpc3RcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgbGlzdDtsZXQgaSA9IGluZGV4O3RyYWNrQnkgOiBfdHJhY2tCeUZ1bmN0aW9uXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIml0ZW1UZW1wbGF0ZTsgZWxzZSBkZWZ1YWx0VGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPVwiYXgtbGlzdC1pdGVtXCIgKGNsaWNrKT1cIl9oYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1pZF09XCJpdGVtW3RoaXMudmFsdWVGaWVsZF1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIml0ZW1UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6IGl0ZW0sZGlyZWN0aW9uOmRpcmVjdGlvbn1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmdWFsdFRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbS5jaGlsZHJlbj8ubGVuZ3RoID4gMDtlbHNlIHRtcEl0ZW1cIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImF4LWxpc3QtaXRlbS1ncm91cFwiIFthdHRyLmRhdGEtaWRdPVwiaXRlbVt0aGlzLnZhbHVlRmllbGRdXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IF9nZXRJdGVtRGlzcGxheVRleHRUZW1wbHRlKGl0ZW0pIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bCAqbmdJZj1cIml0ZW0uY2hpbGRyZW4/Lmxlbmd0aCA+IDBcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0bXBUcmVlOyBjb250ZXh0OnsgbGlzdDogIGl0ZW0uY2hpbGRyZW4gfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG1wSXRlbT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbXVsdGlwbGU7ICBlbHNlIG11bHRpcGxlVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9XCJheC1saXN0LWl0ZW1cIiBbY2xhc3MuYXgtc3RhdGUtc2VsZWN0ZWRdPVwiaXNJdGVtU2VsZWN0ZWQoaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYXgtc3RhdGUtZGlzYWJsZWRdPVwiaXNJdGVtRGlzYWJsZWQoaXRlbSlcIiBbYXR0ci50YWJpbmRleF09XCJpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWlkXT1cIml0ZW1bdGhpcy52YWx1ZUZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ge3sgX2dldEl0ZW1EaXNwbGF5VGV4dFRlbXBsdGUoaXRlbSkgfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtdWx0aXBsZVRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz1cImF4LWxpc3QtaXRlbVwiIFtjbGFzcy5heC1zdGF0ZS1zZWxlY3RlZF09XCJpc0l0ZW1TZWxlY3RlZChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1zdGF0ZS1kaXNhYmxlZF09XCJpc0l0ZW1EaXNhYmxlZChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy5heC1jaGVjay1ib3hdPVwiY2hlY2tib3hcIiBbYXR0ci50YWJpbmRleF09XCJpXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIl9oYW5kbGVPbkl0ZW1DbGljaygkZXZlbnQsaXRlbSlcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWlkXT1cIml0ZW1bdGhpcy52YWx1ZUZpZWxkXVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImNoZWNrYm94XCIgW2NsYXNzLmF4LXN0YXRlLWRpc2FibGVkXT1cImlzSXRlbURpc2FibGVkKGl0ZW0pXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiY2hlY2tib3hcIiBbY2hlY2tlZF09XCJpc0l0ZW1TZWxlY3RlZChpdGVtKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNJdGVtRGlzYWJsZWQoaXRlbSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJheC1tcy0yXCI+IHt7IF9nZXRJdGVtRGlzcGxheVRleHRUZW1wbHRlKGl0ZW0pIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNMb2FkaW5nXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImxvYWRpbmdUZW1wbGF0ZTsgZWxzZSBlbHNlTG9hZGluZ1RlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsb2FkaW5nVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNlbHNlTG9hZGluZ1RlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtcC00XCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXgtbG9hZGluZyB0ZXh0PVwie3sgJ2xheW91dC5sb2FkaW5nLnRleHQnIHwgdHJhbnMgfX1cIj48L2F4LWxvYWRpbmc+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjdG1wRW1wdHk+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFpc0xvYWRpbmdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImVtcHR5VGVtcGxhdGU7IGVsc2UgZWxzZUVtcHR5VGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjZWxzZUVtcHR5VGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXgtZmxleCBheC1pdGVtcy1jZW50ZXIgYXgtanVzdGlmeS1jZW50ZXIgYXgtcC00XCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cIidjb21tb24ubm8tcmVzdWx0LWZvcicgfCB0cmFuczp7ZXhwOnRoaXMuX3NlYXJjaEJveD8gIHRoaXMuX3NlYXJjaEJveC5zZWFyY2hFeHAgOicnfVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwhLS0gPGRpdiBjbGFzcz1cImF4LWxpc3QtaXRlbXMtY29udGFpbmVyIGF4LXZlcnRpY2FsIGF4LWRlZmF1bHRcIiBbY2xhc3MuYXgtZnVsbF09XCJfaXNNb2JpbGVcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgPC9kaXY+IC0tPlxyXG4gICAgICAgICAgICA8IS0tIDxkaXYgY2xhc3M9XCJheC1mb290ZXJcIj5mb290ZXI8L2Rpdj4gLS0+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuPC9heC1wb3BvdmVyPiJdfQ==
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component, Input, ViewEncapsulation } from '@angular/core';
|
|
2
|
-
import { AXTranslator } from '@acorex/core';
|
|
2
|
+
import { AXConfig, AXTranslator } from '@acorex/core';
|
|
3
3
|
import { AXBaseComponentMixin } from '../base';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
// @dynamic
|
|
@@ -35,16 +35,17 @@ export class AXValidationRuleComponent extends AXBaseComponentMixin {
|
|
|
35
35
|
if (this.enabled === false) {
|
|
36
36
|
return Promise.resolve({ result: true });
|
|
37
37
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
return this._internalValidate(this.rule, value, this.message, this.value);
|
|
38
|
+
if (this.rule == 'custom') {
|
|
39
|
+
const regRule = AXConfig.get(`form.validation.rules.${this.value}`);
|
|
40
|
+
if (regRule) {
|
|
41
|
+
return this._internalValidate(regRule.rule, value, this.message || regRule.message, regRule.value);
|
|
42
|
+
}
|
|
44
43
|
}
|
|
44
|
+
return this._internalValidate(this.rule, value, this.message, this.value);
|
|
45
45
|
}
|
|
46
46
|
_internalValidate(type, value, message, ruleValue) {
|
|
47
47
|
return new Promise(resolve => {
|
|
48
|
+
debugger;
|
|
48
49
|
switch (type) {
|
|
49
50
|
case 'required':
|
|
50
51
|
resolve({
|
|
@@ -59,7 +60,6 @@ export class AXValidationRuleComponent extends AXBaseComponentMixin {
|
|
|
59
60
|
result: ex.test(value)
|
|
60
61
|
});
|
|
61
62
|
break;
|
|
62
|
-
case 'custom':
|
|
63
63
|
case 'callback':
|
|
64
64
|
if (typeof ruleValue === 'function') {
|
|
65
65
|
const res = {};
|
|
@@ -80,11 +80,17 @@ export class AXValidationRuleComponent extends AXBaseComponentMixin {
|
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
82
|
else {
|
|
83
|
-
resolve({
|
|
83
|
+
resolve({
|
|
84
|
+
message: AXTranslator.get('validation.messages.invalid-rull-fn'),
|
|
85
|
+
result: false
|
|
86
|
+
});
|
|
84
87
|
}
|
|
85
88
|
break;
|
|
86
89
|
default:
|
|
87
|
-
resolve({
|
|
90
|
+
resolve({
|
|
91
|
+
message: AXTranslator.get('validation.messages.invalid-rull-name'),
|
|
92
|
+
result: false
|
|
93
|
+
});
|
|
88
94
|
}
|
|
89
95
|
});
|
|
90
96
|
}
|
|
@@ -110,4 +116,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.9", ngImpor
|
|
|
110
116
|
}], enabled: [{
|
|
111
117
|
type: Input
|
|
112
118
|
}] } });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1ydWxlLndpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvdmFsaWRhdGlvbi92YWxpZGF0aW9uLXJ1bGUud2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUEyQixLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekksT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM1QyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxTQUFTLENBQUM7O0FBRy9DLFdBQVc7QUFDWCxNQUFNLE9BQU8saUJBQWlCO0lBR3JCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBWSxFQUFFLElBQXNCO1FBQ3hELE1BQU0sTUFBTSxHQUFHLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQyxJQUFJLE1BQU0sRUFBRTtZQUNWLE1BQU0sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1NBQ3BCO2FBQ0k7WUFDSCxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDO2dCQUNwQyxJQUFJO2dCQUNKLElBQUk7YUFDTCxDQUFDLENBQUM7U0FDSjtJQUNILENBQUM7SUFFTSxNQUFNLENBQUMsR0FBRyxDQUFDLElBQVk7UUFDNUIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQzs7QUFqQmMsZ0NBQWMsR0FBK0MsRUFBRSxDQUFDO0FBMkJqRixNQUFNLE9BQU8seUJBQTBCLFNBQVEsb0JBQW9CO0lBaUJqRSxZQUFZLFVBQXNCLEVBQUUsR0FBc0I7UUFDeEQsS0FBSyxDQUFDLFVBQVUsRUFBRSxH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QUFFO2dDQUNYLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDOzRCQUNqQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUU7Z0NBQ1gsR0FBRyxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7NEJBQ3JCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7Z0NBQ2QsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDOzRCQUNmLENBQUMsQ0FBQyxDQUFDO3lCQUNKOzZCQUNJOzRCQUNILEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDOzRCQUNqQixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7eUJBQ2Q7cUJBQ0Y7eUJBQ0k7d0JBQ0gsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7cUJBQzNCO29CQUNELE1BQU07Z0JBQ1I7b0JBQ0UsT0FBTyxDQUFDLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDN0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7O3NIQW5GVSx5QkFBeUI7MEdBQXpCLHlCQUF5QiwrTEFKMUIsRUFBRTsyRkFJRCx5QkFBeUI7a0JBTnJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtvQkFDOUIsUUFBUSxFQUFFLEVBQUU7b0JBQ1osZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN0QztpSUFJQyxJQUFJO3NCQURILEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixLQUFLO3NCQURKLEtBQUs7Z0JBSU4sT0FBTztzQkFETixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEVsZW1lbnRSZWYsIEhvc3RCaW5kaW5nLCBJbnB1dCwgVmlld0VuY2Fwc3VsYXRpb24gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQVhWYWxpZGF0aW9uUnVsZVJlc3VsdCwgQVhWYWxpZGF0aW9uUnVsZSwgQVhWYWxpZGF0aW9uUnVsZVR5cGVzIH0gZnJvbSAnLi92YWxpZGF0aW9uLmNsYXNzJztcclxuaW1wb3J0IHsgQVhUcmFuc2xhdG9yIH0gZnJvbSAnQGFjb3JleC9jb3JlJztcclxuaW1wb3J0IHsgQVhCYXNlQ29tcG9uZW50TWl4aW4gfSBmcm9tICcuLi9iYXNlJztcclxuXHJcblxyXG4vLyBAZHluYW1pY1xyXG5leHBvcnQgY2xhc3MgQVhWYWxpZGF0aW9uUnVsZXMge1xyXG4gIHByaXZhdGUgc3RhdGljIHJlZ2lzdHJlZFJ1bGVzOiB7IG5hbWU6IHN0cmluZywgcnVsZTogQVhWYWxpZGF0aW9uUnVsZSB9W10gPSBbXTtcclxuXHJcbiAgcHVibGljIHN0YXRpYyBhZGRSdWxlKG5hbWU6IHN0cmluZywgcnVsZTogQVhWYWxpZGF0aW9uUnVsZSkge1xyXG4gICAgY29uc3QgZXhpc3RzID0gQVhWYWxpZGF0aW9uUnVsZXMuZ2V0KG5hbWUpO1xyXG4gICAgaWYgKGV4aXN0cykge1xyXG4gICAgICBleGlzdHMucnVsZSA9IHJ1bGU7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgQVhWYWxpZGF0aW9uUnVsZXMucmVnaXN0cmVkUnVsZXMucHVzaCh7XHJcbiAgICAgICAgbmFtZSxcclxuICAgICAgICBydWxlXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0YXRpYyBnZXQobmFtZTogc3RyaW5nKSB7XHJcbiAgICByZXR1cm4gdGhpcy5yZWdpc3RyZWRSdWxlcy5maW5kKGMgPT4gYy5uYW1lID09PSBuYW1lKTtcclxuICB9XHJcbn1cclxuXHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2F4LXZhbGlkYXRpb24tcnVsZScsXHJcbiAgdGVtcGxhdGU6ICcnLFxyXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIEFYVmFsaWRhdGlvblJ1bGVDb21wb25lbnQgZXh0ZW5kcyBBWEJhc2VDb21wb25lbnRNaXhpbiBpbXBsZW1lbnRzIEFYVmFsaWRhdGlvblJ1bGUge1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHJ1bGU6IEFYVmFsaWRhdGlvblJ1bGVUeXBlcyA9ICdyZXF1aXJlZCc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHNob3dNZXNzYWdlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICB2YWx1ZTogYW55O1xyXG5cclxuICBASW5wdXQoKVxyXG4gIGVuYWJsZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihlbGVtZW50UmVmOiBFbGVtZW50UmVmLCBjZHI6IENoYW5nZURldGVjdG9yUmVmKSB7XHJcbiAgICBzdXBlcihlbGVtZW50UmVmLCBjZHIpO1xyXG4gIH1cclxuXHJcbiAgb25Jbml0KCkge1xyXG4gICAgKHRoaXMuX2dldEhvc3RFbGVtZW50KCkgYXMgYW55KS52YWxpZGF0ZSA9IHRoaXMudmFsaWRhdGUuYmluZCh0aGlzKTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlKHZhbHVlOiBhbnkpOiBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+IHtcclxuICAgIGlmICh0aGlzLmVuYWJsZWQgPT09IGZhbHNlKSB7XHJcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoeyByZXN1bHQ6IHRydWUgfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCByZWdSdWxlID0gQVhWYWxpZGF0aW9uUnVsZXMuZ2V0KHRoaXMucnVsZSk7XHJcbiAgICBpZiAocmVnUnVsZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxWYWxpZGF0ZShyZWdSdWxlLnJ1bGUucnVsZSwgdmFsdWUsIHRoaXMubWVzc2FnZSB8fCByZWdSdWxlLnJ1bGUubWVzc2FnZSwgcmVnUnVsZS5ydWxlLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxWYWxpZGF0ZSh0aGlzLnJ1bGUsIHZhbHVlLCB0aGlzLm1lc3NhZ2UsIHRoaXMudmFsdWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIHByaXZhdGUgX2ludGVybmFsVmFsaWRhdGUodHlwZTogc3RyaW5nLCB2YWx1ZT86IGFueSwgbWVzc2FnZT86IHN0cmluZywgcnVsZVZhbHVlPzogYW55KTogUHJvbWlzZTxBWFZhbGlkYXRpb25SdWxlUmVzdWx0PiB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ocmVzb2x2ZSA9PiB7XHJcbiAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVkJzpcclxuICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnNob3dNZXNzYWdlID8gKG1lc3NhZ2UgfHwgQVhUcmFuc2xhdG9yLmdldCgndmFsaWRhdGlvbi5tZXNzYWdlcy5yZXF1aXJlZCcpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIHJlc3VsdDogdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPSAnJyAmJiAoIUFycmF5LmlzQXJyYXkodmFsdWUpIHx8IChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiB2YWx1ZS5sZW5ndGggPiAwKSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncmVnZXgnOlxyXG4gICAgICAgICAgY29uc3QgZXggPSBuZXcgUmVnRXhwKHJ1bGVWYWx1ZSk7XHJcbiAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5zaG93TWVzc2FnZSA/IChtZXNzYWdlIHx8IEFYVHJhbnNsYXRvci5nZXQoJ3ZhbGlkYXRpb24ubWVzc2FnZXMucmVnZXgnKSkgOiBudWxsLFxyXG4gICAgICAgICAgICByZXN1bHQ6IGV4LnRlc3QodmFsdWUpXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2N1c3RvbSc6XHJcbiAgICAgICAgY2FzZSAnY2FsbGJhY2snOlxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBydWxlVmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzOiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgcmVzLm1lc3NhZ2UgPSB0aGlzLnNob3dNZXNzYWdlID8gbWVzc2FnZSA6IG51bGw7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHJ1bGVWYWx1ZSh7IHZhbHVlLCBtZXNzYWdlIH0pO1xyXG4gICAgICAgICAgICBpZiAodmFsIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgIHZhbC50aGVuKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzLnJlc3VsdCA9IGM7XHJcbiAgICAgICAgICAgICAgfSkuY2F0Y2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXMucmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSkuZmluYWxseSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlcyk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVzLnJlc3VsdCA9IHZhbDtcclxuICAgICAgICAgICAgICByZXNvbHZlKHJlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKHsgcmVzdWx0OiB0cnVlIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgIHJlc29sdmUoeyByZXN1bHQ6IHRydWUgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
119
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi1ydWxlLndpZGdldC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Fjb3JleC9jb21wb25lbnRzL3NyYy9saWIvdmFsaWRhdGlvbi92YWxpZGF0aW9uLXJ1bGUud2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSx1QkFBdUIsRUFBcUIsU0FBUyxFQUEyQixLQUFLLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFekksT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDdEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUcvQyxXQUFXO0FBQ1gsTUFBTSxPQUFPLGlCQUFpQjtJQUdyQixNQUFNLENBQUMsT0FBTyxDQUFDLElBQVksRUFBRSxJQUFzQjtRQUN4RCxNQUFNLE1BQU0sR0FBRyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0MsSUFBSSxNQUFNLEVBQUU7WUFDVixNQUFNLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztTQUNwQjthQUNJO1lBQ0gsaUJBQWlCLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQztnQkFDcEMsSUFBSTtnQkFDSixJQUFJO2FBQ0wsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFZO1FBQzVCLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7O0FBakJjLGdDQUFjLEdBQStDLEVBQUUsQ0FBQztBQTJCakYsTUFBTSxPQUFPLHlCQUEwQixTQUFRLG9CQUFvQjtJQWlCakUsWUFBWSxVQUFzQixFQUFFLEdBQXNCO1FBQ3hELEtBQUssQ0FBQyxV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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIFZpZXdFbmNhcHN1bGF0aW9uIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQsIEFYVmFsaWRhdGlvblJ1bGUsIEFYVmFsaWRhdGlvblJ1bGVUeXBlcyB9IGZyb20gJy4vdmFsaWRhdGlvbi5jbGFzcyc7XHJcbmltcG9ydCB7IEFYQ29uZmlnLCBBWFRyYW5zbGF0b3IgfSBmcm9tICdAYWNvcmV4L2NvcmUnO1xyXG5pbXBvcnQgeyBBWEJhc2VDb21wb25lbnRNaXhpbiB9IGZyb20gJy4uL2Jhc2UnO1xyXG5cclxuXHJcbi8vIEBkeW5hbWljXHJcbmV4cG9ydCBjbGFzcyBBWFZhbGlkYXRpb25SdWxlcyB7XHJcbiAgcHJpdmF0ZSBzdGF0aWMgcmVnaXN0cmVkUnVsZXM6IHsgbmFtZTogc3RyaW5nLCBydWxlOiBBWFZhbGlkYXRpb25SdWxlIH1bXSA9IFtdO1xyXG5cclxuICBwdWJsaWMgc3RhdGljIGFkZFJ1bGUobmFtZTogc3RyaW5nLCBydWxlOiBBWFZhbGlkYXRpb25SdWxlKSB7XHJcbiAgICBjb25zdCBleGlzdHMgPSBBWFZhbGlkYXRpb25SdWxlcy5nZXQobmFtZSk7XHJcbiAgICBpZiAoZXhpc3RzKSB7XHJcbiAgICAgIGV4aXN0cy5ydWxlID0gcnVsZTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBBWFZhbGlkYXRpb25SdWxlcy5yZWdpc3RyZWRSdWxlcy5wdXNoKHtcclxuICAgICAgICBuYW1lLFxyXG4gICAgICAgIHJ1bGVcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc3RhdGljIGdldChuYW1lOiBzdHJpbmcpIHtcclxuICAgIHJldHVybiB0aGlzLnJlZ2lzdHJlZFJ1bGVzLmZpbmQoYyA9PiBjLm5hbWUgPT09IG5hbWUpO1xyXG4gIH1cclxufVxyXG5cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnYXgtdmFsaWRhdGlvbi1ydWxlJyxcclxuICB0ZW1wbGF0ZTogJycsXHJcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQVhWYWxpZGF0aW9uUnVsZUNvbXBvbmVudCBleHRlbmRzIEFYQmFzZUNvbXBvbmVudE1peGluIGltcGxlbWVudHMgQVhWYWxpZGF0aW9uUnVsZSB7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcnVsZTogQVhWYWxpZGF0aW9uUnVsZVR5cGVzID0gJ3JlcXVpcmVkJztcclxuXHJcbiAgQElucHV0KClcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2hvd01lc3NhZ2U6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHZhbHVlOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgZW5hYmxlZDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgIHN1cGVyKGVsZW1lbnRSZWYsIGNkcik7XHJcbiAgfVxyXG5cclxuICBvbkluaXQoKSB7XHJcbiAgICAodGhpcy5fZ2V0SG9zdEVsZW1lbnQoKSBhcyBhbnkpLnZhbGlkYXRlID0gdGhpcy52YWxpZGF0ZS5iaW5kKHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGUodmFsdWU6IGFueSk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xyXG4gICAgaWYgKHRoaXMuZW5hYmxlZCA9PT0gZmFsc2UpIHtcclxuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHJlc3VsdDogdHJ1ZSB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnJ1bGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgY29uc3QgcmVnUnVsZSA9IEFYQ29uZmlnLmdldChgZm9ybS52YWxpZGF0aW9uLnJ1bGVzLiR7dGhpcy52YWx1ZX1gKTtcclxuICAgICAgaWYgKHJlZ1J1bGUpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faW50ZXJuYWxWYWxpZGF0ZShyZWdSdWxlLnJ1bGUsIHZhbHVlLCB0aGlzLm1lc3NhZ2UgfHwgcmVnUnVsZS5tZXNzYWdlLCByZWdSdWxlLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuX2ludGVybmFsVmFsaWRhdGUodGhpcy5ydWxlLCB2YWx1ZSwgdGhpcy5tZXNzYWdlLCB0aGlzLnZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIF9pbnRlcm5hbFZhbGlkYXRlKHR5cGU6IHN0cmluZywgdmFsdWU/OiBhbnksIG1lc3NhZ2U/OiBzdHJpbmcsIHJ1bGVWYWx1ZT86IGFueSk6IFByb21pc2U8QVhWYWxpZGF0aW9uUnVsZVJlc3VsdD4ge1xyXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPEFYVmFsaWRhdGlvblJ1bGVSZXN1bHQ+KHJlc29sdmUgPT4ge1xyXG4gICAgICBkZWJ1Z2dlcjtcclxuICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgY2FzZSAncmVxdWlyZWQnOlxyXG4gICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuc2hvd01lc3NhZ2UgPyAobWVzc2FnZSB8fCBBWFRyYW5zbGF0b3IuZ2V0KCd2YWxpZGF0aW9uLm1lc3NhZ2VzLnJlcXVpcmVkJykpIDogbnVsbCxcclxuICAgICAgICAgICAgcmVzdWx0OiB2YWx1ZSAhPSBudWxsICYmIHZhbHVlICE9ICcnICYmICghQXJyYXkuaXNBcnJheSh2YWx1ZSkgfHwgKEFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA+IDApKVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdyZWdleCc6XHJcbiAgICAgICAgICBjb25zdCBleCA9IG5ldyBSZWdFeHAocnVsZVZhbHVlKTtcclxuICAgICAgICAgIHJlc29sdmUoe1xyXG4gICAgICAgICAgICBtZXNzYWdlOiB0aGlzLnNob3dNZXNzYWdlID8gKG1lc3NhZ2UgfHwgQVhUcmFuc2xhdG9yLmdldCgndmFsaWRhdGlvbi5tZXNzYWdlcy5yZWdleCcpKSA6IG51bGwsXHJcbiAgICAgICAgICAgIHJlc3VsdDogZXgudGVzdCh2YWx1ZSlcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnY2FsbGJhY2snOlxyXG4gICAgICAgICAgaWYgKHR5cGVvZiBydWxlVmFsdWUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgY29uc3QgcmVzOiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgcmVzLm1lc3NhZ2UgPSB0aGlzLnNob3dNZXNzYWdlID8gbWVzc2FnZSA6IG51bGw7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbCA9IHJ1bGVWYWx1ZSh7IHZhbHVlLCBtZXNzYWdlIH0pO1xyXG4gICAgICAgICAgICBpZiAodmFsIGluc3RhbmNlb2YgUHJvbWlzZSkge1xyXG4gICAgICAgICAgICAgIHZhbC50aGVuKGMgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmVzLnJlc3VsdCA9IGM7XHJcbiAgICAgICAgICAgICAgfSkuY2F0Y2goYyA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXMucmVzdWx0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfSkuZmluYWxseSgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJlcyk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmVzLnJlc3VsdCA9IHZhbDtcclxuICAgICAgICAgICAgICByZXNvbHZlKHJlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICByZXNvbHZlKHtcclxuICAgICAgICAgICAgICBtZXNzYWdlOiBBWFRyYW5zbGF0b3IuZ2V0KCd2YWxpZGF0aW9uLm1lc3NhZ2VzLmludmFsaWQtcnVsbC1mbicpLFxyXG4gICAgICAgICAgICAgIHJlc3VsdDogZmFsc2VcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgcmVzb2x2ZSh7XHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IEFYVHJhbnNsYXRvci5nZXQoJ3ZhbGlkYXRpb24ubWVzc2FnZXMuaW52YWxpZC1ydWxsLW5hbWUnKSxcclxuICAgICAgICAgICAgcmVzdWx0OiBmYWxzZVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
|